futian.liu
2023-12-02 8e41786892a4bd7cff2d63bde8cb0636cdb0650c
consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
@@ -6,21 +6,25 @@
import com.consum.base.core.WhBusinessEnum;
import com.consum.base.core.param.BaseWarehouseParam1;
import com.consum.base.core.service.LWhWarningCoreServiceImpl;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.core.utils.LockManage;
import com.consum.model.po.*;
import com.consum.model.po.LWarehouseFlow;
import com.consum.model.po.LWhFormOutput;
import com.consum.model.po.LWhFormTransfer;
import com.consum.model.po.LWhGoodsRecord;
import com.consum.model.po.LWhProcureModel;
import com.iplatform.model.po.S_user_core;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.NumberGenerator;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @ClassName WhFormOutputCoreService
@@ -33,7 +37,7 @@
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public class LWhFormOutputCoreService {
    private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
    private BaseGoodsTemplateService baseGoodsTemplateService;
    private LWhGoodsService lWhGoodsService;
    private CodeGeneratorService codeGeneratorService;
    private LWhProcureModelService lWhProcureModelService;
@@ -44,7 +48,7 @@
    private LWhGoodsRecordService lWhGoodsRecordService;
    @Autowired
    public LWhFormOutputCoreService(BaseGoodsTemplateServiceImpl baseGoodsTemplateService,
    public LWhFormOutputCoreService(BaseGoodsTemplateService baseGoodsTemplateService,
                                    LWhGoodsService lWhGoodsService,
                                    CodeGeneratorService codeGeneratorService,
                                    LWhProcureModelService lWhProcureModelService,
@@ -72,7 +76,7 @@
     * @return 出库单Id
     */
    @Transactional(rollbackFor = Exception.class)
    public Long createOutFormByTransId(Long whFormTransferId, S_user_core currentUser, Long dealTime) {
    public Long createOutFormByTransId(Long whFormTransferId, WhBusinessEnum businessEnum, S_user_core currentUser, Long dealTime) {
        if (whFormTransferId == null) {
            return null;
        }
@@ -89,10 +93,11 @@
        }
        //申请调拨的物品
        List<LWhProcureModel> goodsModelNumList = lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, whFormTransferId);
        List<LWhProcureModel> goodsModelNumList = lWhProcureModelService.getModelByForm(businessEnum, whFormTransferId);
        if (CollectionUtils.isEmpty(goodsModelNumList)) {
            log.error("没有要入库的物品");
            return null;
            throw new RuntimeException("没有要入库的物品");
//            return null;
        }
        Long outWarehouseId = lWhFormTransfer.getOutWarehouseId();
        String outWarehouseName = lWhFormTransfer.getOutWarehouseName();
@@ -104,7 +109,7 @@
        // 调拨单物品 已经按型号分好了
        goodsModelNumList.forEach(itemModelInfo -> {
            // 复用对象
            itemModelInfo.setId(NumberGenerator.getLongSequenceNumber());
            itemModelInfo.setId(IdUtil.generateId());
            itemModelInfo.setFromProcureGoodsId(null);
            itemModelInfo.setBusinessType(3);
            itemModelInfo.setBusinessId(outWarehouseFormId);
@@ -153,7 +158,7 @@
     * @return 流水记录总表ID
     */
    @Transactional(rollbackFor = Exception.class)
    public Long outFormByTransId(Long outWarehouseFormId, WhBusinessEnum businessType, S_user_core currentUser, Long dealTime) {
    public Long outFormByTransId(Long outWarehouseFormId, WhBusinessEnum businessType, S_user_core currentUser, Long dealTime, Long whFormTransferId) {
        if (outWarehouseFormId == null) {
            return null;
        }
@@ -191,21 +196,22 @@
        Integer buyTypeT = null;
        Integer modGoodsTransferingStatusT = null;
        short businessTypeValue = businessType.getValue();
        if (BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue()  == businessTypeValue) {
        if (BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue() == businessTypeValue) {
            //调拨出库
            queryModelStatusT = 1;
            buyTypeT = 1;
            lWarehouseFlowBusinessId = lWhFormOutput.getTransBusinessId();
            modGoodsTransferingStatusT = 0;
        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Dept_Lending_Out.getValue()  == businessTypeValue) {
        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Dept_Lending_Out.getValue() == businessTypeValue) {
            //  部门仓库 分发出库
//            queryModelStatusT = 2;
        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue()  == businessTypeValue) {
            lWarehouseFlowBusinessId = lWhFormOutput.getTransBusinessId();
        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue() == businessTypeValue) {
            //  零星出库
            queryModelStatusT = 1;
            buyTypeT = null;
            modGoodsTransferingStatusT = 4;
        }else if (BaseWarehouseParam1.In_OutPutTypeEnum.Inventory_Output.getValue()  == businessTypeValue) {
        } else if (BaseWarehouseParam1.In_OutPutTypeEnum.Inventory_Output.getValue() == businessTypeValue) {
            //  盘点出库
            queryModelStatusT = 1;
            buyTypeT = null;
@@ -219,7 +225,11 @@
        goodsModelNumList.forEach(itemModelInfo -> {
            // 需要调拨的物品的某个型号
            Long baseGoodsModelsId = itemModelInfo.getBaseGoodsModelsId();
            allChangModelList.add(baseGoodsModelsId);
            //TODO 为空时不加入更新列表
            if (baseGoodsModelsId != null) {
                allChangModelList.add(baseGoodsModelsId);
            }
            // 需要调拨的物品某个型号的数量
            Integer counts = itemModelInfo.getCounts();
@@ -288,7 +298,7 @@
        warehouseFlow.setThisType(2);
        warehouseFlow.setBusinessType(businessType.getValue() + 0);
        warehouseFlow.setBusinessFormId(lWarehouseFlowBusinessId);
        warehouseFlow.setBusinessFormId(whFormTransferId == null ? lWarehouseFlowBusinessId : whFormTransferId);
        warehouseFlow.setOperatorId(userId);
        warehouseFlow.setOperatorName(nickName);
        warehouseFlow.setDealTime(dealTime);
@@ -304,7 +314,9 @@
        lWhFormOutputService.update(lWhFormOutput);
        //当库存变动时调用该方法
        lWhWarningCoreService.updateKuCun(Convert.toShort(outWarehouseType, (short) 0), outWarehouseId, allChangModelList, null, dealTime);
        if (outWarehouseType == 0) {
            lWhWarningCoreService.updateKuCun(Convert.toShort(outWarehouseType, (short) 0), outWarehouseId, allChangModelList, null, dealTime);
        }
        return lWarehouseFlowId;
    }