cy
2023-11-02 396ebb5642636d6667212939fa6ef195eeebc05e
consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java
@@ -1,9 +1,10 @@
package com.consum.base.service;
import com.consum.base.Constants;
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.param.BaseWarehouseParam1;
import com.consum.base.pojo.LWhFormOutputParam;
import com.consum.base.pojo.LWhFormProcureParam;
import com.consum.base.pojo.LWhProcureModelParams;
import com.consum.base.util.IdUtil;
import com.consum.model.po.*;
import com.iplatform.model.po.S_user_core;
@@ -17,6 +18,7 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -29,6 +31,8 @@
@Service
public class LWhFormOutputServiceImpl extends BaseServiceImpl {
    @Autowired
    private CodeGeneratorService codeGeneratorService;
    @Autowired
    private BaseWarehouseServiceImpl baseWarehouseService;
    @Autowired
@@ -148,6 +152,7 @@
        //出入库id
        long lWhFormOutputId = IdUtil.generateId();
        lWhFormOutput.setId(lWhFormOutputId);
        lWhFormOutput.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse));
        Long warehouseId = param.getWarehouseId();
        lWhFormOutput.setWarehouseId(warehouseId);
        //根据仓库id查询仓库
@@ -167,45 +172,32 @@
        lWhFormOutput.setDealTime(dateTimeNumber);
        lWhFormOutput.setStates(1);
        int flag1 = this.insert(lWhFormOutput);
        //4.新增l_wh_goods_record记录
        List<LWhGoodsRecord> recordList = param.getList();
        if (CollectionUtils.isEmpty(recordList)) {
            log.error("规格型号为空");
        if (flag1 == 0) {
            log.error("新增出库单记录");
            return 0;
        }
        int flag5 = 0;
        for (LWhGoodsRecord record : recordList) {
            //根据物品型号查询物品库存
            int goodsNum = this.lWhGoodsService.queryGoodsModelNum(warehouseId, record.getBaseGoodsModelsId(), (short) 1, null);
            //5.新增L_WH_PROCURE_MODEL记录
        //2.新增物品型号记录
        List<LWhProcureModelParams> models = param.getModels();
        List<LWhProcureModel> modelList = new ArrayList<>();
        for (LWhProcureModelParams model : models) {
            LWhProcureModel lWhProcureModel = new LWhProcureModel();
            lWhProcureModel.setId(IdUtil.generateId());
            lWhProcureModel.setBusinessType(3);
            lWhProcureModel.setBaseGoodsModelsId(record.getBaseGoodsModelsId());
            lWhProcureModel.setCounts(record.getThisCount());
            lWhProcureModel.setBusinessId(lWhFormOutputId);
            lWhProcureModel.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
            //lWhProcureModel.se
            lWhProcureModel.setCounts(model.getCounts());
            //根据物品型号查询物品库存
            int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0,warehouseId, model.getBaseGoodsModelsId(), (short) 1, null);
            lWhProcureModel.setWorehouseCount(goodsNum);
            int res = this.lWhProcureModelService.insert(lWhProcureModel);
            flag5 += res;
            modelList.add(lWhProcureModel);
        }
        //2.根据出库单出库
        Long lWarehouseFlowId = this.lWhFormOutputCoreService.outFormByTransId(lWhFormOutput.getId(), currentUser, dateTimeNumber);
        //3.向出库单 插入 进出库流水总表ID
        int flag3 = 0;
        if (flag1 > 0) {
            LWhFormOutput lWhFormOutput1 = new LWhFormOutput(lWhFormOutputId);
            lWhFormOutput1.setWarehouseFlowId(lWarehouseFlowId);
            flag3 = this.update(lWhFormOutput1);
        }
        //如果有一条记录新增失败,则回滚
        if (flag1 == 0 || flag3 == 0 || flag5 != recordList.size()) {
        int flag2 = this.lWhProcureModelService.insert(modelList);
        if (flag2 != modelList.size()) {
            log.error("新增物品型号失败");
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return 0;
        }
        return 1;
    }