futian.liu
2023-11-13 b4de1386f34734fa0e4155ed9a21ea7b7163a006
consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java
@@ -3,24 +3,27 @@
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.param.BaseWarehouseParam1;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.pojo.LWFormsOutputGoodsModelParam;
import com.consum.base.pojo.LWFormsOutputGoodsParam;
import com.consum.base.pojo.LWhFormOutputInsertParam;
import com.consum.base.pojo.LWhFormOutputParam;
import com.consum.base.pojo.LWhProcureModelParams;
import com.consum.base.util.IdUtil;
import com.consum.model.po.*;
import com.consum.model.po.BaseGoodsModels;
import com.consum.model.po.BaseWarehouse;
import com.consum.model.po.FinSysTenantUser;
import com.consum.model.po.LWhFormOutput;
import com.consum.model.po.LWhProcureModel;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
 * @Description 出库单
@@ -41,9 +44,10 @@
    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";
    //    /**
//     * @Description 新增出库单
@@ -146,7 +150,7 @@
     * @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
@@ -168,8 +172,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) {
@@ -177,20 +180,27 @@
            return 0;
        }
        //2.新增物品型号记录
        List<LWhProcureModelParams> models = param.getModels();
        List<LWFormsOutputGoodsParam> 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.se
            lWhProcureModel.setCounts(model.getCounts());
            //根据物品型号查询物品库存
            int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0,warehouseId, model.getBaseGoodsModelsId(), (short) 1, null);
            lWhProcureModel.setWorehouseCount(goodsNum);
            modelList.add(lWhProcureModel);
        for (LWFormsOutputGoodsParam goods : goodsList) {
            List<LWFormsOutputGoodsModelParam> models = goods.getModels();
            for (LWFormsOutputGoodsModelParam 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()) {
@@ -198,11 +208,20 @@
            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;
    }
    /**
     * @Description  列表查询
     * @Description 列表查询
     * @Author 卢庆阳
     * @Date 2023/10/30
     */
@@ -216,13 +235,14 @@
        }
        //物品名称
        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
            sql.append(" AND id IN (SELECT BUSINESS_ID FROM L_WH_PROCURE_MODEL procureModel LEFT JOIN BASE_GOODS_MODELS baseModel ON procureModel.BASE_GOODS_MODELS_ID=baseModel.ID LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseModel.GOODS_TEMPLATES_ID=baseTemp.id WHERE procureModel.BUSINESS_TYPE=1 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)");
            sql.append(
                " AND id IN (SELECT BUSINESS_ID FROM L_WH_PROCURE_MODEL procureModel LEFT JOIN BASE_GOODS_MODELS baseModel ON procureModel.BASE_GOODS_MODELS_ID=baseModel.ID LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseModel.GOODS_TEMPLATES_ID=baseTemp.id WHERE procureModel.BUSINESS_TYPE=1 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        //机构
        if (param.getAgencyId() != null){
        if (param.getAgencyId() != null) {
            sql.append(" and AGENCY_ID like :agencyId ");
            paramts.put("agencyId",  param.getAgencyId() + StringUtils.CHAR_PERCENT);
            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
        }
        //创建人
        if (!StringUtils.isEmpty(param.getOperatorName())) {