futian.liu
2023-12-05 ceecebe477faf5a45b19f3b258f7add8f93b4583
consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java
@@ -1,5 +1,18 @@
package com.consum.base.service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils;
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.utils.CurrencyUtil;
@@ -23,7 +36,7 @@
import com.consum.base.service.LWhFormTransferService;
import com.consum.base.service.LWhGoodsService;
import com.consum.base.service.LWhProcureModelService;
import com.consum.base.service.LWhProcureModelUserRecordServiceImpl;
import com.consum.base.service.LWhProcureModelUserRecordService;
import com.consum.base.service.LWhProcureModelUserServiceImpl;
import com.consum.model.po.BaseWarehouse;
import com.consum.model.po.BaseWarehouseManager;
@@ -36,17 +49,6 @@
import com.walker.db.page.GenericPager;
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 java.util.Map;
import java.util.Optional;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils;
/**
 * @Description 调拨管理
@@ -73,15 +75,14 @@
    @Autowired
    private LWhProcureModelUserServiceImpl lWhProcureModelUserService;
    @Autowired
    private LWhProcureModelUserRecordServiceImpl lWhProcureModelUserRecordService;
    private LWhProcureModelUserRecordService lWhProcureModelUserRecordService;
    @Autowired
    private BaseWarehouseManagerService baseWarehouseManagerService;
    private static String QUERY_FORM_TRANSFER_LIST = "SELECT ft.* FROM l_wh_form_transfer ft "
        + "left join L_WH_PROCURE_MODEL pm on pm.BUSINESS_ID = ft.id "
    private static String QUERY_FORM_TRANSFER_LIST =
        "SELECT ft.* FROM l_wh_form_transfer ft " + "left join L_WH_PROCURE_MODEL pm on pm.BUSINESS_ID = ft.id "
        + "LEFT JOIN BASE_GOODS_MODELS bgm ON pm.BASE_GOODS_MODELS_ID=bgm.ID "
        + "LEFT JOIN BASE_GOODS_TEMPLATE bgt ON bgm.GOODS_TEMPLATES_ID=bgt.id WHERE 1 = 1 ";
    /**
     * @Description 新增
@@ -208,7 +209,8 @@
                lWhProcureModel.setBusinessId(lWhFormTransferId);
                lWhProcureModel.setBaseGoodsModelsId(baseGoodsModelsId);
                //根据型号id查询型号
                List<Map<String, Object>> baseGoodsModels = this.baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId);
                List<Map<String, Object>> baseGoodsModels =
                    this.baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId);
                Map<String, Object> baseModelMap = baseGoodsModels.get(0);
                if (baseGoodsModels != null && !CollectionUtils.isEmpty(baseModelMap)) {
                    Object modelName = baseModelMap.get("modelName");
@@ -261,7 +263,6 @@
        return lWhFormTransferId;
    }
    /**
     * @Description 列表查询
     * @Author 卢庆阳
@@ -282,7 +283,8 @@
        //物品名称
        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
            sql.append("AND bgt.GOODS_NAME LIKE :goodsTemplateName ");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
            paramts.put("goodsTemplateName",
                StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        //调拨机构
        if (param.getOutAgencyId() != null) {
@@ -350,13 +352,16 @@
        String sql = "SELECT bgt.id, CATEGORY_ID, CATEGORY_NAME, GOODS_NAME,bgt.CLASSIFICATION type "
            + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
            + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " + "WHERE pm.BUSINESS_ID =:id GROUP BY bgt.id ";
            + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID "
            + "WHERE pm.BUSINESS_ID =:id GROUP BY bgt.id ";
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("id", result.getId());
        List<Map<String, Object>> procureModelList = lWhFormOutputService.select(sql, paramMap, new MapperUtil());
        String queryRecord = "SELECT * FROM l_wh_procure_model_user_record where TRANS_BUSINESS_ID = :id order by DEAL_TIME desc limit 1";
        LWhProcureModelUserRecord lWhProcureModelUserRecord = lWhProcureModelUserRecordService.get(queryRecord, paramMap, new LWhProcureModelUserRecord());
        String queryRecord =
            "SELECT * FROM l_wh_procure_model_user_record where TRANS_BUSINESS_ID = :id order by DEAL_TIME desc limit 1";
        LWhProcureModelUserRecord lWhProcureModelUserRecord =
            lWhProcureModelUserRecordService.get(queryRecord, paramMap, new LWhProcureModelUserRecord());
        List<FormTransferGoodsVO> formTransferGoods = Lists.newArrayList();
        for (Map<String, Object> map : procureModelList) {
            FormTransferGoodsVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormTransferGoodsVO.class);
@@ -365,11 +370,13 @@
            List<GoodsModelVO> goodsModelVOList = Lists.newArrayList();
            String sql2 = "SELECT pm.id,pm.BASE_GOODS_MODELS_NAME,bgm.UNIT,COUNTS,total_amount "
                + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
                + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " + "WHERE pm.BUSINESS_ID =:id and bgt.id =:baseGoodsTemplateId";
                + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID "
                + "WHERE pm.BUSINESS_ID =:id and bgt.id =:baseGoodsTemplateId";
            Map<String, Object> goodsModelParamMap = new HashMap<>();
            goodsModelParamMap.put("id", result.getId());
            goodsModelParamMap.put("baseGoodsTemplateId", baseGoodsTemplateId);
            List<Map<String, Object>> modelList = lWhFormOutputService.select(sql2, goodsModelParamMap, new MapperUtil());
            List<Map<String, Object>> modelList =
                lWhFormOutputService.select(sql2, goodsModelParamMap, new MapperUtil());
            modelList.forEach(item -> {
                GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
                Integer businessType = result.getBusinessType();
@@ -380,7 +387,8 @@
                    LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
                    lWhProcureModelUser.setWhProcureModelId(procureModelId);
                    lWhProcureModelUser.setProcureModelUserRecordId(lWhProcureModelUserRecord.getId());
                    List<LWhProcureModelUser> procureModelUserList = this.lWhProcureModelUserService.select(lWhProcureModelUser);
                    List<LWhProcureModelUser> procureModelUserList =
                        this.lWhProcureModelUserService.select(lWhProcureModelUser);
                    if (!CollectionUtils.isEmpty(procureModelUserList)) {
                        List<DepartGoodsUseInfo> departGoodsUseInfoList = Lists.newArrayList();
                        procureModelUserList.forEach(useInfo -> {
@@ -407,31 +415,19 @@
        return result;
    }
    /**
     * @Description 导出调拨出库单
     * @Author 卢庆阳
     * @Date 2023/10/31
     */
    public List<TransferExcelTemplate> export(Long id, Integer type) {
        String sql = "SELECT\n"
            + "\tft.BUSINESS_FORM_CODE,\n"
            + "\tft.OPERATOR_NAME,\n"
            + "\tft.CREATE_TIME,\n"
            + "\tft.IN_AGENCY_NAME,\n"
            + "\tft.OUT_AGENCY_NAME,\n"
            + "\tGOODS_NAME templateName,\n"
            + "\tpm.BASE_GOODS_MODELS_NAME baseModelName,\n"
            + "\tpm.COUNTS num,\n"
            + "\tpm.total_amount,\n"
            + "\tft.BEIZ1 remark\n"
            + "FROM\n"
            + "\tl_wh_form_transfer ft\n"
        String sql = "SELECT\n" + "\tft.BUSINESS_FORM_CODE,\n" + "\tft.OPERATOR_NAME,\n" + "\tft.CREATE_TIME,\n"
            + "\tft.IN_AGENCY_NAME,\n" + "\tft.OUT_AGENCY_NAME,\n" + "\tGOODS_NAME templateName,\n"
            + "\tpm.BASE_GOODS_MODELS_NAME baseModelName,\n" + "\tpm.COUNTS num,\n" + "\tpm.total_amount,\n"
            + "\tft.BEIZ1 remark\n" + "FROM\n" + "\tl_wh_form_transfer ft\n"
            + "\tINNER JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
            + "\tINNER JOIN base_goods_models bgm ON bgm.ID = pm.BASE_GOODS_MODELS_ID\n"
            + "\tINNER JOIN base_goods_template bgt ON bgt.ID = bgm.GOODS_TEMPLATES_ID\n"
            + "WHERE\n"
            + "\tft.id = :id";
            + "\tINNER JOIN base_goods_template bgt ON bgt.ID = bgm.GOODS_TEMPLATES_ID\n" + "WHERE\n" + "\tft.id = :id";
        Map<String, Object> paramts = new HashMap<>();
        paramts.put("id", id);
        List<Map<String, Object>> select = this.select(sql, paramts, new MapperUtil());
@@ -468,7 +464,8 @@
        StringBuilder sql = new StringBuilder(
            "SELECT ft.id,ft.BUSINESS_FORM_CODE,bgt.GOODS_NAME,bgt.CLASSIFICATION type,bgm.id goodsModelId,bgm.MODEL_NAME goodsModelName,pm.COUNTS goodsCount,fst.`name` tenantName,"
                + "ft.IN_WAREHOUSE_NAME departmentName,ft.OPERATOR_ID,ft.CREATE_TIME,ft.OPERATOR_NAME FROM l_wh_form_transfer ft "
                + "inner JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID " + "inner JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
                + "inner JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID "
                + "inner JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
                + "inner JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID "
                + "inner JOIN fin_sys_tenant_user fstu ON fstu.id = ft.OPERATOR_ID "
                + "inner JOIN fin_sys_tenant_department fstd ON fstu.SYS_DEPT_ID = fstd.ID "
@@ -476,12 +473,14 @@
        //单号
        if (StringUtils.isNotEmpty(transferQry.getBusinessFormCode())) {
            sql.append("AND BUSINESS_FORM_CODE like :businessFormCode ");
            paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + transferQry.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
            paramts.put("businessFormCode",
                StringUtils.CHAR_PERCENT + transferQry.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
        }
        //物品名称
        if (StringUtils.isNotEmpty(transferQry.getGoodsTemplateName())) {
            sql.append("AND bgt.GOODS_NAME like:goodsName ");
            paramts.put("goodsName", StringUtils.CHAR_PERCENT + transferQry.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
            paramts.put("goodsName",
                StringUtils.CHAR_PERCENT + transferQry.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        // 规格型号
        if (transferQry.getBaseGoodsModelsId() != null) {
@@ -514,21 +513,21 @@
        }
        sql.append("ORDER BY ft.CREATE_TIME DESC");
        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), paramts, transferQry.getPageNum(), transferQry.getPageSize(),
            new MapperUtil());
        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), paramts,
            transferQry.getPageNum(), transferQry.getPageSize(), new MapperUtil());
        return mapGenericPager;
    }
    public GenericPager<Map<String, Object>> queryFormTransferDetailList(TransferQry param) {
        HashMap<String, Object> params = new HashMap<>();
        StringBuilder sql = new StringBuilder(
            "SELECT ft.id,\n" + "       ft.BUSINESS_FORM_CODE,\n" + "       bgt.GOODS_NAME,\n" + "       bgt.CLASSIFICATION,\n"
                + "       pm.BASE_GOODS_MODELS_NAME,\n" + "       pm.COUNTS,\n" + "       ft.IN_AGENCY_NAME,\n" + "       ft.OPERATOR_NAME,\n"
                + "       ft.CREATE_TIME,\n" + "       ft.IN_TIME,\n" + "       ft.OUT_AGENCY_NAME,\n" + "       ft.OUT_OPERATOR_NAME,\n"
                + "       ft.OUTPUT_TIME\n" + "FROM l_wh_form_transfer ft\n" + "         LEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
        StringBuilder sql = new StringBuilder("SELECT ft.id,\n" + "       ft.BUSINESS_FORM_CODE,\n"
            + "       bgt.GOODS_NAME,\n" + "       bgt.CLASSIFICATION,\n" + "       pm.BASE_GOODS_MODELS_NAME,\n"
            + "       pm.COUNTS,\n" + "       ft.IN_AGENCY_NAME,\n" + "       ft.OPERATOR_NAME,\n"
            + "       ft.CREATE_TIME,\n" + "       ft.IN_TIME,\n" + "       ft.OUT_AGENCY_NAME,\n"
            + "       ft.OUT_OPERATOR_NAME,\n" + "       ft.OUTPUT_TIME\n" + "FROM l_wh_form_transfer ft\n"
            + "         LEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
                + "         LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID\n"
                + "         LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID where 1=1 ");
        if (StringUtils.isNotEmpty(param.getBusinessFormCode())) {
@@ -573,16 +572,17 @@
            sql.append("AND ft.IN_TIME < :createTimeEnd ");
            params.put("createTimeEnd", param.getEndTime() * 1000000 + 240000);
        }
        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), params, param.getPageNum(), param.getPageSize(), new MapperUtil());
        GenericPager<Map<String, Object>> mapGenericPager =
            this.selectSplit(sql.toString(), params, param.getPageNum(), param.getPageSize(), new MapperUtil());
        return mapGenericPager;
    }
    public List<Map<String, Object>> queryDepartmentTransferOrder() {
        String sql =
            "SELECT ft.id,\n" + "       ft.BUSINESS_FORM_CODE,\n" + "       gr.GOODS_TEMPLATE_NAME,\n" + "       gr.BASE_GOODS_TEMPLATE_ID goodsTemplateId,\n"
                + "       ft.CREATE_TIME\n" + "\n" + "FROM l_wh_form_transfer ft\n" + "         LEFT JOIN L_WAREHOUSE_FLOW wf ON ft.id = wf.BUSINESS_FORM_ID\n"
        String sql = "SELECT ft.id,\n" + "       ft.BUSINESS_FORM_CODE,\n" + "       gr.GOODS_TEMPLATE_NAME,\n"
            + "       gr.BASE_GOODS_TEMPLATE_ID goodsTemplateId,\n" + "       ft.CREATE_TIME\n" + "\n"
            + "FROM l_wh_form_transfer ft\n" + "         LEFT JOIN L_WAREHOUSE_FLOW wf ON ft.id = wf.BUSINESS_FORM_ID\n"
                + "         left join L_WH_GOODS_RECORD gr on gr.WAREHOUSE_FLOW_ID = wf.id\n"
                + "         LEFT JOIN L_GOODS_WH_RECORD gwr on gwr.WAREHOUSE_FLOW_ID = wf.id\n"
                + "         left join L_WH_GOODS g on g.id = gwr.WH_GOODS_ID where ft.BUSINESS_TYPE = 1 GROUP BY gr.BASE_GOODS_TEMPLATE_ID \n";