| | |
| | | package com.consum.base.core; |
| | | |
| | | import com.consum.base.core.tools.SqlParameter; |
| | | import com.consum.base.core.util.DateUtil; |
| | | import com.consum.base.core.param.BaseWarehouseParam; |
| | | import com.consum.base.core.utils.DateUtil; |
| | | import com.consum.base.core.utils.IdUtil; |
| | | import com.consum.base.core.utils.SqlParameter; |
| | | import com.consum.model.po.*; |
| | | import com.walker.infrastructure.utils.NumberGenerator; |
| | | import com.walker.jdbc.service.BaseServiceImpl; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.security.core.parameters.P; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Propagation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.Assert; |
| | | |
| | | import java.util.ArrayList; |
| | |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) |
| | | public class WarehouseCoreService extends BaseServiceImpl { |
| | | |
| | | public static void main(String[] args) { |
| | |
| | | List<CheckUsingResult> results; |
| | | |
| | | |
| | | String key = param.getLending_id(); |
| | | String key = param.getLending_id().toString(); |
| | | |
| | | /** |
| | | * 此处将同一个仓库下的同一个型号上锁,不同仓库、不同型号不受影响。 |
| | |
| | | /** |
| | | * 统一出入库 |
| | | */ |
| | | public List<CheckWarehouseResult> unifyCheck(CheckWarehouseParam param) { |
| | | public List<CheckWarehouseResult> unifyCheck(BaseWarehouseParam param) { |
| | | // TODO: 10/10/2023 此处加了唯一锁,会影响性能,思考是否有更合适的办法 |
| | | try { |
| | | Assert.notNull(param, "wareHouse param can not null !"); |
| | |
| | | CheckUsingResult result = new CheckUsingResult(); |
| | | |
| | | DepFormLendingGoods goods = get(new DepFormLendingGoods(),"id=?",new Object[]{model.getDepFormLendingGoodsId()}); |
| | | |
| | | //如果是A类物品,则需要与持有人等同 |
| | | if (goods.getClassification() == "A" && (goods.getGoodsUserName().equals(param.getUser_name()))) { |
| | | continue; |
| | | } |
| | | |
| | | //如果当前持有人持有物品数量大于出库数量,则直接减掉数量即可。 |
| | | if (model.getUsingCount() > shengyu){ |
| | | result.setInitial_count(model.getUsingCount()); |
| | |
| | | //如果出库的型号与分发单里的型号相同 |
| | | if (goods.getBaseGoodsModelsId().longValue() == output.getWhGoods().getBaseGoodsModelsId().longValue()){ |
| | | DepFormLendingModel model = new DepFormLendingModel(); |
| | | model.setId(NumberGenerator.getLongSequenceNumber()); |
| | | model.setId(IdUtil.generateId()); |
| | | model.setCounts(goods.getCounts()); |
| | | model.setDepFormLendingGoodsId(goods.getId()); |
| | | model.setDepFormLendingId(goods.getDepFormLendingId()); |
| | |
| | | /** |
| | | * 出库 |
| | | */ |
| | | private List<CheckWarehouseResult> checkout(CheckWarehouseParam param) { |
| | | private List<CheckWarehouseResult> checkout(BaseWarehouseParam param) { |
| | | //查询出指定仓库、指定型号,状态为正常的的库存物品,按照采购时间倒叙、价格倒叙排列 |
| | | String sql = "SELECT\n" + |
| | | " * \n" + |
| | |
| | | //变更状态为调拨 |
| | | nGoods.setStates(param.getOutput_type()); |
| | | nGoods.setWhCount(param.getCount()); |
| | | nGoods.setId(NumberGenerator.getLongSequenceNumber()); |
| | | nGoods.setId(IdUtil.generateId()); |
| | | insert(nGoods); |
| | | |
| | | CheckWarehouseResult nresult = new CheckWarehouseResult(); |
| | |
| | | /** |
| | | * 入库 |
| | | */ |
| | | private CheckWarehouseResult checkin(CheckWarehouseParam param) throws RuntimeException { |
| | | private CheckWarehouseResult checkin(BaseWarehouseParam param) throws RuntimeException { |
| | | |
| | | //如果是采购入库 |
| | | if (param.getFirst_input_type() ==1){ |
| | |
| | | WhFormProcure procure = get(new WhFormProcure(),"ID=?",new Object[]{procureModel.getWhFormProcureId()}); |
| | | |
| | | WhGoods goods = new WhGoods(); |
| | | goods.setId(NumberGenerator.getLongSequenceNumber()); |
| | | goods.setId(IdUtil.generateId()); |
| | | goods.setBaseGoodsTemplateId(procureModel.getBaseGoodsTemplateId()); |
| | | goods.setGoodsTemplateName(procureModel.getGoodsTemplateName()); |
| | | goods.setBaseGoodsModelsId(procureModel.getBaseGoodsModelsId()); |