luqingyang
2023-11-03 ba45c490755fafe369038b3b1901096a83bdceb7
consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java
@@ -1,8 +1,9 @@
package com.consum.base.service;
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.LWhProcureModelParams;
import com.consum.base.pojo.*;
import com.consum.base.util.IdUtil;
import com.consum.model.po.*;
import com.iplatform.model.po.S_user_core;
@@ -30,6 +31,8 @@
public class LWhFormOutputServiceImpl extends BaseServiceImpl {
    @Autowired
    private CodeGeneratorService codeGeneratorService;
    @Autowired
    private BaseWarehouseServiceImpl baseWarehouseService;
    @Autowired
    private LWhGoodsService lWhGoodsService;
@@ -37,6 +40,8 @@
    private LWhProcureModelService lWhProcureModelService;
    @Autowired
    private LWhFormOutputCoreService lWhFormOutputCoreService;
    @Autowired
    private BaseGoodsModelsServiceImpl baseGoodsModelsService;
    private static String QUERY_FORM_OUTPUT_LIST = "SELECT * FROM l_wh_form_output WHERE 1 = 1";
@@ -142,84 +147,13 @@
     * @Author 卢庆阳
     * @Date 2023/10/27
     */
//    public int add(LWhFormOutputParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
//        //1.新增出库单记录
//        LWhFormOutput lWhFormOutput = new LWhFormOutput();
//        //出入库id
//        long lWhFormOutputId = IdUtil.generateId();
//        lWhFormOutput.setId(lWhFormOutputId);
//        Long warehouseId = param.getWarehouseId();
//        lWhFormOutput.setWarehouseId(warehouseId);
//        //根据仓库id查询仓库
//        BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId);
//        if (warehouse == null) {
//            log.error("仓库id不存在");
//            return 0;
//        }
//        lWhFormOutput.setWarehouseName(warehouse.getWarehouseName());
//        lWhFormOutput.setOutputCode(BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue() + "");
//        lWhFormOutput.setOutputName("零星出库");
//        lWhFormOutput.setAgencyId(Long.valueOf(sysInfo.getTenantId()));
//        lWhFormOutput.setAgencyName(sysInfo.getTenantName());
//        lWhFormOutput.setOperatorId(sysInfo.getId());
//        lWhFormOutput.setOperatorName(sysInfo.getUserName());
//        long dateTimeNumber = DateUtils.getDateTimeNumber(System.currentTimeMillis());
//        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("规格型号为空");
//            return 0;
//        }
//        int flag5 = 0;
//        for (LWhGoodsRecord record : recordList) {
//            //根据物品型号查询物品库存
//            int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0,warehouseId, record.getBaseGoodsModelsId(), (short) 1, null);
//
//            //5.新增L_WH_PROCURE_MODEL记录
//            LWhProcureModel lWhProcureModel = new LWhProcureModel();
//            lWhProcureModel.setId(IdUtil.generateId());
//            lWhProcureModel.setBusinessType(3);
//            lWhProcureModel.setBaseGoodsModelsId(record.getBaseGoodsModelsId());
//            lWhProcureModel.setCounts(record.getThisCount());
//            lWhProcureModel.setWorehouseCount(goodsNum);
//            int res = this.lWhProcureModelService.insert(lWhProcureModel);
//            flag5 += res;
//        }
//
//        //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()) {
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//            return 0;
//        }
//
//        return 1;
//    }
    /**
     * @Description 新增出库单
     * @Author 卢庆阳
     * @Date 2023/10/27
     */
    public int add(LWhFormOutputParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
    public int add(LWhFormOutputInsertParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
        //1.新增出库单记录
        LWhFormOutput lWhFormOutput = new LWhFormOutput();
        //出入库id
        long lWhFormOutputId = IdUtil.generateId();
        lWhFormOutput.setId(lWhFormOutputId);
        lWhFormOutput.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse));
        Long warehouseId = param.getWarehouseId();
        lWhFormOutput.setWarehouseId(warehouseId);
        //根据仓库id查询仓库
@@ -235,8 +169,7 @@
        lWhFormOutput.setAgencyName(sysInfo.getTenantName());
        lWhFormOutput.setOperatorId(sysInfo.getId());
        lWhFormOutput.setOperatorName(sysInfo.getUserName());
        long dateTimeNumber = DateUtils.getDateTimeNumber(System.currentTimeMillis());
        lWhFormOutput.setDealTime(dateTimeNumber);
        lWhFormOutput.setDealTime(param.getDealTime());
        lWhFormOutput.setStates(1);
        int flag1 = this.insert(lWhFormOutput);
        if (flag1 == 0) {
@@ -244,19 +177,27 @@
            return 0;
        }
        //2.新增物品型号记录
        List<LWhProcureModelParams> models = param.getModels();
        List<LWhFormOutputGoodsParams> goodsList = param.getGoods();
        List<LWhProcureModel> modelList = new ArrayList<>();
        for (LWhProcureModelParams model : models) {
            LWhProcureModel lWhProcureModel = new LWhProcureModel();
            lWhProcureModel.setId(IdUtil.generateId());
            lWhProcureModel.setBusinessType(3);
            lWhProcureModel.setBusinessId(lWhFormOutputId);
            lWhProcureModel.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
            lWhProcureModel.setCounts(model.getCounts());
            //根据物品型号查询物品库存
            int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0,warehouseId, model.getBaseGoodsModelsId(), (short) 1, null);
            lWhProcureModel.setWorehouseCount(goodsNum);
            modelList.add(lWhProcureModel);
        for (LWhFormOutputGoodsParams goods : goodsList) {
            List<LWhProcureModelParams> models = goods.getModels();
            for (LWhProcureModelParams model : models) {
                LWhProcureModel lWhProcureModel = new LWhProcureModel();
                lWhProcureModel.setId(IdUtil.generateId());
                lWhProcureModel.setBusinessType(3);
                lWhProcureModel.setBusinessId(lWhFormOutputId);
                lWhProcureModel.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
                //根据型号id查询型号
                BaseGoodsModels baseGoodsModels = this.baseGoodsModelsService.get(new BaseGoodsModels(model.getBaseGoodsModelsId()));
                if (baseGoodsModels != null) {
                    lWhProcureModel.setBaseGoodsModelsName(baseGoodsModels.getModelName());
                }
                lWhProcureModel.setCounts(model.getCounts());
                //根据物品型号查询物品库存
                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0,warehouseId, model.getBaseGoodsModelsId(), (short) 1, null);
                lWhProcureModel.setWorehouseCount(goodsNum);
                modelList.add(lWhProcureModel);
            }
        }
        int flag2 = this.lWhProcureModelService.insert(modelList);
        if (flag2 != modelList.size()) {
@@ -264,6 +205,15 @@
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return 0;
        }
        //3.根据出库单出库
        Long lWarehouseFlowId = this.lWhFormOutputCoreService.outFormByTransId(lWhFormOutputId, currentUser, param.getDealTime());
        if (lWarehouseFlowId == null) {
            log.error("根据出库单出库失败");
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return 0;
        }
        return 1;
    }