cy
2023-11-14 293996df5d4e39499384ffc5e2aca48241677bd9
consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java
@@ -4,7 +4,7 @@
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.WhBusinessEnum;
import com.consum.base.core.param.BaseWarehouseParam1;
import com.consum.base.core.util.LockManage;
import com.consum.base.core.utils.LockManage;
import com.consum.model.po.*;
import com.iplatform.model.po.S_user_core;
import com.walker.infrastructure.utils.CollectionUtils;
@@ -20,20 +20,19 @@
/**
 * @ClassName WhFormOutputCoreService
 * @Author cy
 * @Date 2023/10/26
 * @Description
 * @Version 1.0
 **/
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class LWhFormOutputCoreService {
    private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
    private LWhGoodsService lWhGoodsService;
    private CodeGeneratorService codeGeneratorService;
    private LWhProcureModelService lWhProcureModelService;
//    private LWhFormTransferServiceImpl lWhFormTransferService;
    private LWhFormOutputService lWhFormOutputService;
    private LWarehouseFlowService lWarehouseFlowService;
    private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService;
@@ -44,7 +43,6 @@
                                    LWhGoodsService lWhGoodsService,
                                    CodeGeneratorService codeGeneratorService,
                                    LWhProcureModelService lWhProcureModelService,
//                                    LWhFormTransferServiceImpl lWhFormTransferService,
                                    LWhFormOutputService lWhFormOutputService,
                                    LWarehouseFlowService lWarehouseFlowService,
                                    LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService,
@@ -53,7 +51,6 @@
        this.lWhGoodsService = lWhGoodsService;
        this.codeGeneratorService = codeGeneratorService;
        this.lWhProcureModelService = lWhProcureModelService;
//        this.lWhFormTransferService = lWhFormTransferService;
        this.lWhFormOutputService = lWhFormOutputService;
        this.lWarehouseFlowService = lWarehouseFlowService;
        this.lWhGoodsRecordDetailsService = lWhGoodsRecordDetailsService;
@@ -115,7 +112,7 @@
        whFormOutput.setId(outWarehouseFormId);
        // 此时并没有出库
        whFormOutput.setWarehouseFlowId(null);
        whFormOutput.setBusinessFormCode(codeGeneratorService.createCodeByPrefix(CodeGeneratorEnum.OutPut_Warehouse.getValue(), 4));
        whFormOutput.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse));
        //进出库流水总表 入库单ID
        whFormOutput.setInWarehouseFlowId(null);
//        调拨单ID(调拨时需要)
@@ -168,6 +165,9 @@
        Integer outWarehouseType = lWhFormOutput.getOutWarehouseType();
        Long outWarehouseId = lWhFormOutput.getWarehouseId();
        String warehouseName = lWhFormOutput.getWarehouseName();
        Integer inWarehouseType = lWhFormOutput.getInWarehouseType();
        Long inWarehouseId = lWhFormOutput.getInWarehouseId();
        String inWarehouseName = lWhFormOutput.getInWarehouseName();
        Long userId = currentUser.getId();
        String nickName = currentUser.getNick_name();
@@ -181,7 +181,7 @@
        short queryModelStatusT = 1;
        //采购方式(1:集采;2=自采)
        Short buyTypeT = null;
        Short modGoodsTransferingStatusT = null;
        Integer modGoodsTransferingStatusT = null;
        String outputCode = lWhFormOutput.getOutputCode();
        if ((BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue() + "").equals(outputCode)) {
            //调拨出库
@@ -200,11 +200,7 @@
        }
        short queryModelStatus = queryModelStatusT;
        Short buyType = buyTypeT;
        Short modGoodsTransferingStatus = modGoodsTransferingStatusT;
        // 接收方仓库信息
        Long inWarehouseId = lWhFormOutput.getInWarehouseId();
        String inWarehouseName = lWhFormOutput.getInWarehouseName();
        Integer modGoodsTransferingStatus = modGoodsTransferingStatusT;
        goodsModelNumList.forEach(itemModelInfo -> {
            // 需要调拨的物品的某个型号
@@ -243,6 +239,7 @@
            //通过LockManage获得锁
            Object warehouseModelLockObj = LockManage.acquireLock(outWarehouseType, outWarehouseId, baseGoodsModelsId);
            List<Long> outGoodsId = null;
            synchronized (warehouseModelLockObj) {
                // 获得锁后查询该型号的期初数量
                int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType);
@@ -256,12 +253,17 @@
                whGoodsRecord.setEndCount(goodsModelNum - counts);
                //出库时候,按 先入库的先出库,同时入库的,按价格高的先出库
                List<Long> outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType, goodsModelNum);
                lWhGoodsService.modGoodsTransfering(outGoodsId, outWarehouseType, inWarehouseId, inWarehouseName, modGoodsTransferingStatus);
                outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType,
                        counts);
                lWhGoodsService.modGoodsTransfering(outGoodsId, inWarehouseType, inWarehouseId, inWarehouseName, modGoodsTransferingStatus);
                // 批量插入 进出库流水明细[L_WH_GOODS_RECORD_DETAILS]
                lWhGoodsRecordDetailsService.sameGoodsInsertMore(outGoodsId, whGoodsRecordId, (short) 0);
                lWhGoodsRecordService.insert(whGoodsRecord);
            }
            long totalAmount = lWhGoodsService.queryGoodsPriceById(outGoodsId);
            LWhProcureModel lWhProcureModel = new LWhProcureModel(itemModelInfo.getId());
            lWhProcureModel.setTotalAmount(totalAmount);
            lWhProcureModelService.update(lWhProcureModel);
        });
        LWarehouseFlow warehouseFlow = new LWarehouseFlow();
        warehouseFlow.setId(lWarehouseFlowId);