From a5e195c4d1cf661ec0f1c03517ce3b5436b7e5b2 Mon Sep 17 00:00:00 2001
From: cy <1664593601@qq.com>
Date: 星期五, 24 十一月 2023 17:03:49 +0800
Subject: [PATCH] feat: 对仓库内物品按型号进行预警判断

---
 deploy-jar-single/src/main/resources/application-dev.yml                              |    3 
 consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java        |   18 ++
 consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordDetailsService.java   |   14 +
 consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java          |   65 +++++++
 consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java                |    2 
 deploy-jar-single/src/main/resources/application-prod.yml                             |  182 ++-----------------
 consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java |  123 +++++++++++++
 consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java      |   91 +++++----
 8 files changed, 296 insertions(+), 202 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java b/consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java
index 8570f3e..585f3ea 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhWarningController.java
@@ -1,11 +1,13 @@
 package com.consum.base.controller;
 
 import com.consum.base.BaseController;
+import com.consum.base.core.service.LWhWarningCoreServiceImpl;
 import com.consum.base.core.utils.CommonUtil;
 import com.consum.base.pojo.query.WhWarningQry;
 import com.consum.base.service.LWhWarningServiceImpl;
 import com.consum.model.po.FinSysTenantUser;
 import com.walker.db.page.GenericPager;
+import com.walker.infrastructure.utils.DateUtils;
 import com.walker.web.ResponseValue;
 import io.swagger.annotations.Api;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -50,4 +52,20 @@
         return ResponseValue.success(genericPager);
     }
 
+
+    @Resource
+    private LWhWarningCoreServiceImpl lWhWarningCoreService;
+
+
+    @GetMapping("/handerChenKuCun")
+    public ResponseValue handerChenKuCun() {
+        WhWarningQry param = CommonUtil.getObjFromReq(WhWarningQry.class);
+        FinSysTenantUser sysInfo = this.getSysInfo();
+        long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis());
+
+        lWhWarningCoreService.updateKuCun(param.getWarehouseType(), param.getBaseWarehouseId(), null, sysInfo, dealTime);
+        return ResponseValue.success();
+    }
+
+
 }
diff --git a/consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java b/consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java
new file mode 100644
index 0000000..84a9f49
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java
@@ -0,0 +1,123 @@
+package com.consum.base.core.service;
+
+import cn.hutool.core.convert.Convert;
+import com.consum.base.service.BaseGoodsModelsServiceImpl;
+import com.consum.base.service.BaseWarehouseServiceImpl;
+import com.consum.base.service.LWhWarningServiceImpl;
+import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.FinSysTenantUser;
+import com.consum.model.po.WhWarning;
+import com.walker.infrastructure.utils.NumberGenerator;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @ClassName LWhWarningCoreServiceImpl
+ * @Author cy
+ * @Date 2023/11/24
+ * @Description
+ * @Version 1.0
+ **/
+@Service
+public class LWhWarningCoreServiceImpl {
+
+    @Resource
+    private LWhWarningServiceImpl lWhWarningService;
+    @Resource
+    private BaseWarehouseServiceImpl baseWarehouseService;
+    @Resource
+    private BaseGoodsModelsServiceImpl baseGoodsModelsService;
+
+    /**
+     * 褰撳簱瀛樺彉鍔ㄦ椂璋冪敤璇ユ柟娉�
+     *
+     * @param warehouseType
+     * @param warehouseId
+     * @param baseModelIdList
+     */
+    public void updateKuCun(Short warehouseType, Long warehouseId, List<Long> baseModelIdList, FinSysTenantUser sysInfo, Long dealTime) {
+        if (baseModelIdList == null) {
+            baseModelIdList = new ArrayList<>();
+        }
+        // 鑾峰彇鍒拌揪鍒伴槇鍊肩殑鐗╁搧
+        List<Map<String, Object>> kuCunNotifyList = lWhWarningService.checkKuCun(warehouseType, warehouseId, baseModelIdList);
+        //
+//        log.info("娌℃湁杈惧埌闃堝�肩殑鐗╁搧");
+        if (CollectionUtils.isEmpty(kuCunNotifyList)) {
+            kuCunNormalModel(warehouseType, warehouseId, baseModelIdList);
+            return;
+        }
+        // 灏嗘暟鎹彃鍏ュ簱瀛橀璀︺�怶H_WARNING銆�
+        BaseWarehouse baseWarehouses = baseWarehouseService.get(new BaseWarehouse(warehouseId));
+
+        List<Long> kuCunNotifyModelIdList = new ArrayList<>(kuCunNotifyList.size());
+        List<WhWarning> warningList = new ArrayList<>(kuCunNotifyList.size());
+
+        for (Map<String, Object> notifyKuCun : kuCunNotifyList) {
+            Long baseGoodsModelsId = Convert.toLong(notifyKuCun.get("baseGoodsModelsId"));
+            kuCunNotifyModelIdList.add(baseGoodsModelsId);
+            Integer lowerLimit = Convert.toInt(notifyKuCun.get("lowerLimit"));
+            Integer upperLimit = Convert.toInt(notifyKuCun.get("upperLimit"));
+            Integer warningType = Convert.toInt(notifyKuCun.get("warningType"));
+            Integer goodsNum = Convert.toInt(notifyKuCun.get("goodsNum"));
+
+            WhWarning whWarning = new WhWarning();
+            List<Map<String, Object>> modelInfoList = baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId);
+            Map<String, Object> modelInfo = modelInfoList.get(0);
+
+            whWarning.setId(NumberGenerator.getLongSequenceNumber());
+            whWarning.setWarehouseType(0);
+            whWarning.setBaseWarehouseId(warehouseId);
+            whWarning.setBaseWarehouseName(baseWarehouses.getWarehouseName());
+            whWarning.setBaseGoodsTemplateId(Convert.toLong(modelInfo.get("goodsId")));
+            whWarning.setBaseGoodsTemplateName(Convert.toStr(modelInfo.get("goodsName")));
+            whWarning.setBaseGoodsModelsId(baseGoodsModelsId);
+            whWarning.setBaseGoodsModelsName((String) modelInfo.get("modelName"));
+            whWarning.setGoodsType(2);
+            whWarning.setWarningType(warningType);
+            whWarning.setUpperLimit(upperLimit);
+            whWarning.setLowerLimit(lowerLimit);
+            whWarning.setWarehouseCount(goodsNum);
+            whWarning.setWarningTime(dealTime);
+            whWarning.setStates(1);
+            whWarning.setOperatorId(sysInfo.getId());
+            whWarning.setOperatorName(sysInfo.getUserName());
+            whWarning.setDealTime(dealTime);
+            whWarning.setAgencyId(Convert.toLong(sysInfo.getTenantId()));
+            whWarning.setAgencyName(sysInfo.getTenantName());
+            warningList.add(whWarning);
+        }
+
+        //淇敼浠ュ墠鐨勯璀︾姸鎬�
+        baseModelIdList.removeAll(kuCunNotifyModelIdList);
+        kuCunNormalModel(warehouseType, warehouseId, baseModelIdList);
+
+        //鎵归噺鎻掑叆棰勮
+        lWhWarningService.insertBatch(warningList);
+
+    }
+
+    private String KU_CUN_NORMAL_MODEL = "update WH_WARNING set STATES=2 where WAREHOUSE_TYPE=? and BASE_WAREHOUSE_ID=?";
+
+    private int kuCunNormalModel(Short warehouseType, Long warehouseId, List<Long> baseModelIdList) {
+        if (CollectionUtils.isEmpty(baseModelIdList)) {
+            return 1;
+        }
+        ArrayList<Object> params = new ArrayList<>();
+        params.add(warehouseType);
+        params.add(warehouseId);
+
+        StringBuilder sql = new StringBuilder(KU_CUN_NORMAL_MODEL);
+        if (!org.springframework.util.CollectionUtils.isEmpty(baseModelIdList)) {
+            sql.append(" and BASE_GOODS_MODELS_ID in(?)");
+            params.add(baseModelIdList);
+        }
+        return lWhWarningService.update(sql.toString(), params.toArray());
+    }
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java b/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java
index 3b8b474..a52c402 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningQry.java
@@ -32,7 +32,7 @@
     private Long agencyId;
 
     @ApiModelProperty("浠撳簱绫诲瀷")
-    private Long warehouseType;
+    private Short warehouseType;
 
     @ApiModelProperty("浠撳簱id")
     private Long baseWarehouseId;
diff --git a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
index 5f65e91..144e817 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java
@@ -1,23 +1,22 @@
 package com.consum.base.service;
 
 import com.consum.base.core.utils.LockManage;
-import com.consum.model.po.BaseWarehouse;
-import com.consum.model.po.LWarehouseFlow;
-import com.consum.model.po.LWhFormProcure;
-import com.consum.model.po.LWhGoodsRecord;
-import com.consum.model.po.LWhProcureModel;
+import com.consum.model.po.*;
 import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.NumberGenerator;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 import org.springframework.jdbc.core.namedparam.SqlParameterSource;
 import org.springframework.jdbc.core.simple.SimpleJdbcCall;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName LWarehouseFlowService
@@ -36,15 +35,22 @@
     private LWhGoodsRecordService lWhGoodsRecordService;
     private BaseGoodsTemplateServiceImpl baseGoodsTemplateService;
 
+    @Value("${spring.datasource.dataBaseName}")
+    private String dataBaseName;
+
+    @PostConstruct
+    public void init() {
+        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withCatalogName(dataBaseName).withProcedureName("InsertL_WH_GOODS");
+    }
+
     @Autowired
     public LWarehouseFlowCoreService(JdbcTemplate jdbcTemplate, LWarehouseFlowService lWarehouseFlowService, LWhGoodsService lWhGoodsService,
-        BaseGoodsTemplateServiceImpl baseGoodsTemplateService, LWhGoodsRecordService lWhGoodsRecordService) {
+                                     BaseGoodsTemplateServiceImpl baseGoodsTemplateService, LWhGoodsRecordService lWhGoodsRecordService) {
         this.jdbcTemplate = jdbcTemplate;
         this.lWarehouseFlowService = lWarehouseFlowService;
         this.baseGoodsTemplateService = baseGoodsTemplateService;
         this.lWhGoodsService = lWhGoodsService;
         this.lWhGoodsRecordService = lWhGoodsRecordService;
-        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("InsertL_WH_GOODS");
     }
 
     /**
@@ -82,11 +88,11 @@
 
         //缁熻鍚勫瀷鍙锋暟閲�
         Map<Long, Integer> countsSumByBaseGoodsModelsId = goodsModelNumList.stream()
-            .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId,
-                Collectors.summingInt(LWhProcureModel::getCounts)));
+                .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId,
+                        Collectors.summingInt(LWhProcureModel::getCounts)));
         Map<Long, List<LWhProcureModel>> sameModelList = goodsModelNumList.stream()
-            // 鎸夊瀷鍙峰垎
-            .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId));
+                // 鎸夊瀷鍙峰垎
+                .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId));
         countsSumByBaseGoodsModelsId.forEach((baseGoodsModelsId, modelCount) -> {
             //鏌ヨ鍨嬪彿淇℃伅
             Map<String, Object> tempGoodsInfo = baseGoodsTemplateService.queryGoodsInfoByModelId(baseGoodsModelsId);
@@ -136,11 +142,12 @@
                     Long price = item.getPrice();
                     //鐗╁搧涓暟
                     Integer counts = item.getCounts();
-                    totalPrice = totalPrice + counts*price;
+                    totalPrice = totalPrice + counts * price;
                     sameGoodsInsertMore(warehouseFlowId, warehouseType, warehouseId, whGoodsRecordId, (short) 1, warehouseName,
-                        classification, tempGoodsId, goodsName, baseGoodsModelsId, modelName,
-                        supplier, buyType, goodsUnit, price, procureTime, 1, dealTime, counts);
-                };
+                            classification, tempGoodsId, goodsName, baseGoodsModelsId, modelName,
+                            supplier, buyType, goodsUnit, price, procureTime, 1, dealTime, counts);
+                }
+                ;
                 whGoodsRecord.setTotalPrice(totalPrice);
             }
             lWhGoodsRecordService.insert(whGoodsRecord);
@@ -169,31 +176,31 @@
      * @param pTimes               鎻掑叆鏉℃暟
      */
     public void sameGoodsInsertMore(long pWarehouseFlowId, Integer warehouseType, long pWarehouseId, long pWhGoodsRecordId, short pRecordType,
-        String pWarehouseName, short pCostType,
-        long pBaseGoodsTemplateId, String pGoodsTemplateName, long pBaseGoodsModelsId,
-        String pBaseGoodsModelsName, String pSupplier, short pBuyType,
-        String pUnit, long pPrice, long pProcureDate,
-        int pStates, long pDealTime, int pTimes) {
+                                    String pWarehouseName, short pCostType,
+                                    long pBaseGoodsTemplateId, String pGoodsTemplateName, long pBaseGoodsModelsId,
+                                    String pBaseGoodsModelsName, String pSupplier, short pBuyType,
+                                    String pUnit, long pPrice, long pProcureDate,
+                                    int pStates, long pDealTime, int pTimes) {
         SqlParameterSource in = new MapSqlParameterSource()
-            .addValue("p_WAREHOUSE_FLOW_ID", pWarehouseFlowId)
-            .addValue("p_WAREHOUSE_TYPE", warehouseType)
-            .addValue("p_WAREHOUSE_ID", pWarehouseId)
-            .addValue("p_WH_GOODS_RECORD_ID", pWhGoodsRecordId)
-            .addValue("p_RECORD_TYPE", pRecordType)
-            .addValue("p_WAREHOUSE_NAME", pWarehouseName)
-            .addValue("p_COST_TYPE", pCostType)
-            .addValue("p_BASE_GOODS_TEMPLATE_ID", pBaseGoodsTemplateId)
-            .addValue("p_GOODS_TEMPLATE_NAME", pGoodsTemplateName)
-            .addValue("p_BASE_GOODS_MODELS_ID", pBaseGoodsModelsId)
-            .addValue("p_BASE_GOODS_MODELS_NAME", pBaseGoodsModelsName)
-            .addValue("p_SUPPLIER", pSupplier)
-            .addValue("p_BUY_TYPE", pBuyType)
-            .addValue("p_UNIT", pUnit)
-            .addValue("p_PRICE", pPrice)
-            .addValue("p_PROCURE_DATE", pProcureDate)
-            .addValue("p_STATES", pStates)
-            .addValue("p_DEAL_TIME", pDealTime)
-            .addValue("p_times", pTimes);
+                .addValue("p_WAREHOUSE_FLOW_ID", pWarehouseFlowId)
+                .addValue("p_WAREHOUSE_TYPE", warehouseType)
+                .addValue("p_WAREHOUSE_ID", pWarehouseId)
+                .addValue("p_WH_GOODS_RECORD_ID", pWhGoodsRecordId)
+                .addValue("p_RECORD_TYPE", pRecordType)
+                .addValue("p_WAREHOUSE_NAME", pWarehouseName)
+                .addValue("p_COST_TYPE", pCostType)
+                .addValue("p_BASE_GOODS_TEMPLATE_ID", pBaseGoodsTemplateId)
+                .addValue("p_GOODS_TEMPLATE_NAME", pGoodsTemplateName)
+                .addValue("p_BASE_GOODS_MODELS_ID", pBaseGoodsModelsId)
+                .addValue("p_BASE_GOODS_MODELS_NAME", pBaseGoodsModelsName)
+                .addValue("p_SUPPLIER", pSupplier)
+                .addValue("p_BUY_TYPE", pBuyType)
+                .addValue("p_UNIT", pUnit)
+                .addValue("p_PRICE", pPrice)
+                .addValue("p_PROCURE_DATE", pProcureDate)
+                .addValue("p_STATES", pStates)
+                .addValue("p_DEAL_TIME", pDealTime)
+                .addValue("p_times", pTimes);
         Map<String, Object> out = simpleJdbcCall.execute(in);
         System.out.println("Procedure result: " + out);
     }
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordDetailsService.java b/consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordDetailsService.java
index a77f32a..f93b26e 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordDetailsService.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhGoodsRecordDetailsService.java
@@ -3,12 +3,14 @@
 import com.walker.jdbc.service.BaseServiceImpl;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 import org.springframework.jdbc.core.namedparam.SqlParameterSource;
 import org.springframework.jdbc.core.simple.SimpleJdbcCall;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.PostConstruct;
 import java.util.List;
 import java.util.Map;
 
@@ -23,10 +25,20 @@
     private final JdbcTemplate jdbcTemplate;
     private SimpleJdbcCall simpleJdbcCall;
 
+    @Value("${spring.datasource.dataBaseName}")
+    private String dataBaseName;
+
+    @PostConstruct
+    public void init() {
+        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate)
+                .withCatalogName(dataBaseName)
+                .withProcedureName("insert_WH_GOODS_RECORD_DETAILS");
+    }
+
+
     @Autowired
     public LWhGoodsRecordDetailsService(JdbcTemplate jdbcTemplate) {
         this.jdbcTemplate = jdbcTemplate;
-        this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("insert_WH_GOODS_RECORD_DETAILS");
     }
 
     public void sameGoodsInsertMore(List<Long> outGoodsId, long whGoodsRecordId, short thisType) {
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java
index 446e11e..be803e4 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java
@@ -3,11 +3,13 @@
 import com.consum.base.core.utils.MapperUtil;
 import com.consum.base.pojo.query.WhWarningQry;
 import com.walker.db.page.GenericPager;
+import com.walker.infrastructure.utils.CollectionUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -51,7 +53,8 @@
         }
         if (param.getGoodsTemplateId() != null) {
             sql.append(" AND goodsTemp.id=:goodsTemplateId");
-            paramts.put("goodsTemplateId", param.getGoodsTemplateId());        }
+            paramts.put("goodsTemplateId", param.getGoodsTemplateId());
+        }
         //鍒嗙被
         if (param.getCategoryId() != null) {
             sql.append(" AND cate.id=:categoryId");
@@ -69,4 +72,64 @@
 
         return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
     }
+
+    /**
+     * 鏌ヨ鎸囧畾浠撳簱鐨勫簱瀛樻槸鍚﹁秴棰勮
+     *
+     * @param warehouseType
+     * @param warehouseId
+     * @param baseModelId
+     */
+    private String CHECK_KUCUN_PREFIX = "SELECT warnConf.*,goods.goods_Num,CASE WHEN warnConf.LOWER_LIMIT>=goods.goods_Num THEN 2 WHEN warnConf.UPPER_LIMIT<=goods.goods_Num THEN 1 END AS WARNING_TYPE FROM (";
+    private String CHECK_KUCUN_CONFIG_PREFIX = "SELECT WAREHOUSE_TYPE,BASE_WAREHOUSE_ID,BASE_GOODS_MODELS_ID,LOWER_LIMIT,UPPER_LIMIT FROM WH_WARNING_CONFIG";
+    private String CHECK_KUCUN_CONFIG_WHERE = " WHERE 1=1";
+
+    private String CHECK_KUCUN_CONFIG_JOINTKUCUN = ") warnConf LEFT JOIN (";
+
+    private String CHECK_KUCUN_KUCUN_PREFIX = "SELECT WAREHOUSE_TYPE,WAREHOUSE_ID,BASE_GOODS_MODELS_ID,count(1) goods_Num FROM L_WH_GOODS";
+    private String CHECK_KUCUN_KUCUN_WHERE = " WHERE 1=1";
+    private String CHECK_KUCUN_KUCUN_END = " GROUP BY BASE_GOODS_MODELS_ID)";
+
+    private String CHECK_KUCUN_END = "goods ON goods.BASE_GOODS_MODELS_ID=warnConf.BASE_GOODS_MODELS_ID AND goods.WAREHOUSE_TYPE=warnConf.WAREHOUSE_TYPE AND goods.BASE_GOODS_MODELS_ID=warnConf.BASE_GOODS_MODELS_ID WHERE (warnConf.LOWER_LIMIT>=goods.goods_Num OR warnConf.UPPER_LIMIT<=goods.goods_Num)";
+
+    public List<Map<String, Object>> checkKuCun(Short warehouseType, Long warehouseId, List<Long> baseModelIdList) {
+        StringBuilder checkKucunPrefix = new StringBuilder(CHECK_KUCUN_PREFIX);
+        StringBuilder checkKucunConfigPrefix = new StringBuilder(CHECK_KUCUN_CONFIG_PREFIX);
+        StringBuilder checkKucunConfigWhere = new StringBuilder(CHECK_KUCUN_CONFIG_WHERE);
+        StringBuilder checkKucunConfigJointkucun = new StringBuilder(CHECK_KUCUN_CONFIG_JOINTKUCUN);
+        StringBuilder checkKucunKucunPrefix = new StringBuilder(CHECK_KUCUN_KUCUN_PREFIX);
+        StringBuilder checkKucunKucunWhere = new StringBuilder(CHECK_KUCUN_KUCUN_WHERE);
+        StringBuilder checkKucunKucunEnd = new StringBuilder(CHECK_KUCUN_KUCUN_END);
+        StringBuilder checkKucunEnd = new StringBuilder(CHECK_KUCUN_END);
+
+        Map<String, Object> paramMap = new HashMap<>();
+        if (warehouseType != null) {
+            checkKucunConfigWhere.append(" and WAREHOUSE_TYPE =:ConfigWarehouseType");
+            paramMap.put("ConfigWarehouseType", warehouseType);
+            checkKucunKucunWhere.append(" and WAREHOUSE_TYPE =:KuCunWarehouseType");
+            paramMap.put("KuCunWarehouseType", warehouseType);
+        }
+        if (warehouseId != null) {
+            checkKucunConfigWhere.append(" and BASE_WAREHOUSE_ID =:ConfigWarehouseId");
+            paramMap.put("ConfigWarehouseId", warehouseId);
+            checkKucunKucunWhere.append(" and WAREHOUSE_ID =:KuCunWarehouseId");
+            paramMap.put("KuCunWarehouseId", warehouseId);
+        }
+        if (!CollectionUtils.isEmpty(baseModelIdList)) {
+            checkKucunConfigWhere.append(" and BASE_GOODS_MODELS_ID in(:ConfigBaseModelIds)");
+            paramMap.put("ConfigBaseModelIds", baseModelIdList);
+            checkKucunKucunWhere.append(" and BASE_GOODS_MODELS_ID in(:KuCunBaseModelIds)");
+            paramMap.put("KuCunBaseModelIds", baseModelIdList);
+        }
+
+        checkKucunPrefix.append(checkKucunConfigPrefix)
+                .append(checkKucunConfigWhere)
+                .append(checkKucunConfigJointkucun)
+                .append(checkKucunKucunPrefix)
+                .append(checkKucunKucunWhere)
+                .append(checkKucunKucunEnd)
+                .append(checkKucunEnd);
+        return select(checkKucunPrefix.toString(), paramMap, new MapperUtil());
+    }
+
 }
diff --git a/deploy-jar-single/src/main/resources/application-dev.yml b/deploy-jar-single/src/main/resources/application-dev.yml
index 2afe38e..0a3dd1a 100644
--- a/deploy-jar-single/src/main/resources/application-dev.yml
+++ b/deploy-jar-single/src/main/resources/application-dev.yml
@@ -5,9 +5,10 @@
     # 鏄惁鏄剧ずdao涓墦鍗扮殑SQL璇彞
     show-sql: true
 # 鏁版嵁搴撻摼鎺�
+    dataBaseName: low_consum_manage_dev
     username: root
     password: Bjjmy_2020
-    url: jdbc:mysql://116.198.40.76:3306/low_consum_manage_dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false
+    url: jdbc:mysql://116.198.40.76:3306/${spring.datasource.dataBaseName}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
 # Druid杩炴帴姹�
     type: com.walker.jdbc.ds.MyDruidDataSource
     druid:
diff --git a/deploy-jar-single/src/main/resources/application-prod.yml b/deploy-jar-single/src/main/resources/application-prod.yml
index beb37ac..28f88b7 100644
--- a/deploy-jar-single/src/main/resources/application-prod.yml
+++ b/deploy-jar-single/src/main/resources/application-prod.yml
@@ -1,62 +1,15 @@
 spring:
   application:
-    name: projectProgress
+    name: lowConsum
   datasource:
     # 鏄惁鏄剧ずdao涓墦鍗扮殑SQL璇彞
     show-sql: true
-
-    ##    driver-class-name: sunje.goldilocks.jdbc.GoldilocksDriver
-    # 娉ㄦ剰锛歁ySQL鏈嶅姟绔紝闇�瑕佽皟鏁翠袱涓弬鏁帮紝鍚﹀垯鏈嶅姟绔細涓诲姩鏂紑杩炴帴
-    # wait_timeout: 瓒呰繃鏀规椂闂�(绉�)鏈嶅姟绔富鍔ㄦ柇寮�
-    # interactive_timeout: 瀹㈡埛绔伐鍏蜂氦浜掕秴杩囪繖涓椂闂�(绉�)浼氱鍙o紝琛ㄧ幇涓簄avicat
-
-    # Oracle閰嶇疆锛�2023-06-25
-    #    username: FINANCE_OPS_PROD
-    #    password: FINANCE_OPS_PROD
-    #    driver-class-name: oracle.jdbc.OracleDriver
-    #    url: jdbc:oracle:thin:@10.8.10.2:1521/pdb_YWZC
-    #    username: C##FINANCE_OPS_TEST
-    #    password: FINANCE_OPS_TEST
-    #    driver-class-name: oracle.jdbc.OracleDriver
-    #    url: jdbc:oracle:thin:@116.198.40.76:1521/cdb1
-
-
+    # 鏁版嵁搴撻摼鎺�
     username: root
     password: Bjjmy_2020
-    url: jdbc:mysql://116.198.40.76:3306/project_progress_manage_dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false
-
-    #    username: root
-    #    password: Bjjmy_2020
-    #    url: jdbc:mysql://116.198.40.76:3306/iplatform?useUnicode=true&characterEncoding=UTF-8&useSSL=false
-
-    # 杈炬ⅵ鏁版嵁搴�
-    #    driver-class-name: dm.jdbc.driver.DmDriver
-    #    username: iplatform
-    #    password: iplatform
-    #    url: jdbc:dm://116.198.39.83:5236?schema=iplatform
-
-    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    # 浣跨敤 Hikari 杩炴帴姹�
-    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    #    type: com.walker.jdbc.ds.DefaultDataSource
-    #    hikari:
-    #      minimum-idle: 5
-    #      idle-timeout: 600000
-    #      pool-name: databasePool_walker
-    #      # 杩炴帴鏈�澶ц秴鏃舵椂闂�
-    #      connection-timeout: 30000
-    #      # 杩炴帴姹犳渶澶ф暟閲�
-    #      maximum-pool-size: 10
-    #      # 鎺у埗姹犱腑杩炴帴鏈�澶х敓瀛樻湡
-    #      # max-lifetime: 70000
-    #      # 姝ゅ睘鎬ф帶鍒舵祴璇曡繛鎺ユ槸鍚︽椿璺冪殑鏈�闀挎椂闂淬�傛鍊煎繀椤诲皬浜� connectionTimeout
-    #      validation-timeout: 10000
-    #      #
-    #      connection-test-query: select 1
-
-    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    # 浣跨敤 Druid 杩炴帴姹�
-    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    dataBaseName: low_consum_manage_dev
+    url: jdbc:mysql://192.200.0.49:3306/${spring.datasource.dataBaseName}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
+    # Druid杩炴帴姹�
     type: com.walker.jdbc.ds.MyDruidDataSource
     druid:
       initial-size: 5
@@ -77,18 +30,12 @@
       pool-prepared-statements: true
       max-open-prepared-statements: 100
       use-global-data-source-stat: true
-
-  #  redis:
-  #    host: 127.0.0.1
-  #    port: 6379
-  #    database: 10
-  #    #password: Jmy2019.
+  # Redis
   redis:
-    host: 116.198.40.76
+    host: 192.200.0.49
     port: 6379
     database: 11
     password: Jmy2019.
-
 
   mvc:
     pathmatch:
@@ -104,9 +51,9 @@
       max-request-size: 300MB
 
 server:
-  port: 8082
+  port: 9301
   servlet:
-    context-path: /progress
+    context-path: /
     session:
       timeout: 30m
 
@@ -122,9 +69,7 @@
     com:
       walker: debug
       iplatform: debug
-      finance: debug
-      cti: debug
-      robot: error
+      progess: debug
 
   charset:
     # 鎺у埗鍙扮紪鐮�
@@ -141,9 +86,9 @@
       # 渚嬪锛� 鏃ユ湡涓猴細2023/07/13 ,鍒欐墦鍖呮枃浠朵箣鍚庝负锛� log/ota.2023-07-13.0.gz,0琛ㄧず鏃ュ織鐨勭涓�閮ㄥ垎锛屽悗缁氨鏄紝1,2,3...
       # 濡傛灉鏄帇缂╁寘锛岄噷闈細澶氫竴涓悕log/ota.2023-07-13.0鐨勬棩蹇楁枃浠�
       # 濡備笅闈㈢殑渚嬪瓙锛屾墦鍖呬箣鍚庝负: log/2023-07/ota.2020-07-13.0.log锛岃繖鏄竴涓棩蹇楁枃浠�
-      file-name-pattern: ${logging.file.path}%d{yyyy-MM}/finance.%d{yyyy-MM-dd}.%i.log
+      file-name-pattern: ${logging.file.path}%d{yyyy-MM}/progess.%d{yyyy-MM-dd}.%i.log
   file:
-    name: ${logging.file.path}finance.log
+    name: ${logging.file.path}consum.log
     path: D:/log/
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -181,65 +126,25 @@
   security:
     # 鍖垮悕鍙闂湴鍧�(寮�鏀惧湴鍧�)
     anonymous-list:
-      - /platform/fin/sc
-      - /chat/auto/robot/**
-      - /login
-      - /register
-      - /captcha/*      # 楠岃瘉鐮佺粺涓�鏀惧紑
-      - /test/**        # 寮�鍙戞祴璇曪紝浠呭紑鍙戞澘鍙敤
+      - /file/** # 鏂囦欢涓婁紶
+      - /platform/fin/sc # 涓�閿敓鎴�
+      - /login # 鐧诲綍
+      - /register # 娉ㄥ唽
+      - /captcha/* # 楠岃瘉鐮佺粺
+      - /test/** # 寮�鍙戞祴璇曪紝浠呭紑鍙戞澘鍙敤
       - /swagger-resources/** # swagger
       - /swagger-ui/**  # swagger
       - /v3/**          # swagger
-      - /pay/notify/**  # 鏀粯閫氱煡
-      - /jmreport/**    # 绉湪鎶ヨ〃
-      - /api/cti/net/** # 缃戠粶杩炴帴鐘舵�佹娴�
-      - /api/cti/customer/** # 瀹㈡湇璁剧疆
-      - /api/** # 鍛煎彨涓績鍥炶皟
-      - /platform/fin/**
-      - /platform/fin/sys/org/**
-      - /platform/fin/sys/user/**
-      - /platform/fin/sys/project/**
-      - /platform/fin/sys/tenant/**
-      - /platform/fin/sys/tenant/user/**
-      - /robot/**
-      - /platform/fin/supplier/**
-      - /chat/user/** #鑱婂ぉ
-      - /third_party/budget/login
-      - /platform/fin/project/** # 棰勭畻涓�浣撳寲鐧诲綍瀵规帴锛屽墠绔闂殑鐧诲綍鍦板潃銆�2023-07-03
-      - /platform/fin/sys/server/**
-      - /platform/fin/project/category/**
-      - platform/fin/sys/tenant/user/**   #鐢ㄦ埛
-      - /platform/fin/project/**
-      - /platform/fin/event/**
-      - /admin/platform/fin/project/*
-      - /platform/fin/sla/config/**
-      - /platform/fin/library/**
-      - /platform/fin/sla/**
-      - /platform/fin/supplier/user/getRole
-      - /admin/platform/fin/sys/tenant/user/*   # 棰勭畻涓�浣撳寲鐧诲綍瀵规帴锛屽墠绔闂殑鐧诲綍鍦板潃銆�2023-07-03
-      - /system/role/**
-      - /robot/test/**
-      - /platform/fin/node/**
-      - /platform/fin/project/member/**   #鍥㈤槦鎴愬憳
-      - /robot/**
-      - /platform/fin/init/jn/**  #鍒濆鍖栨帴鍙�
-      - /platform/fin/project/manage/**
-      - /platform/fin/sla/config/**  #鍒濆鍖栨帴鍙�
-      - /platform/fin/sla/**  #鍒濆鍖栨帴鍙�
-      - /platform/fin/cate/user/select/sla/**  #鍒濆鍖栨帴鍙�
-      - /platform/fin/sta/template/**  #婊℃剰搴︽帴鍙�
-      - /system/dict/type
-      - /platform/fin/chat/reply/** #蹇嵎鍥炲
-      - /platform/fin/file/upload #鏂囦欢涓婁紶锛岃鍕跨鐢ㄥ拰閰嶇疆
-      - /file/** #璇峰嬁绂佺敤鍜岄厤缃�
-      - /platform/fin/node/define/select
-      - /platform/fin/cate/user/**
-      - /platform/fin/node/define/**
+      # 棰勭畻涓�浣撳寲鐧诲綍瀵规帴锛屽墠绔闂殑鐧诲綍鍦板潃銆�2023-07-03
+      - /system/** # 绯荤粺璁剧疆
+      - /pc/** # PC绔帴鍙�
+      - /wx/** # 寰俊绔帴鍙�
     # 鍏佽鎵�鏈夎璇佺敤鎴烽兘鍙闂湴鍧�锛岃鎱庨噸鍚﹀垯鏉冮檺閮借繃澶э紝涓�鑸珹PI閮藉簲璇ヨ缃湪杩欓噷
     permit-list:
       #      - /permit # 鍏敤鏉冮檺锛�2023-03-13锛屽钩鍙颁唬鐮佸凡缁忔坊鍔犺繃浜嗭紝杩欓噷涓嶉渶瑕侀厤缃�
       - /getInfo
       - /system/**
+      - /p/**
       - /getRouters
       - /getMenus # 鏂扮晫闈㈣彍鍗曪紝2023-05-12
       - /logout
@@ -310,14 +215,13 @@
     # FileStoreType = FileSystem 鏈湴纾佺洏瀛樺偍鏍硅矾寰�
     file-root: d:/tmp/
     ftp:
-      ip: 116.198.40.76
+      ip: 192.200.0.28
       port: 22
       user-name: mysftp
-      password: Bjjmy_2020
+      password: Jmy@2023
       private-key:
       # ftp鏈嶅姟涓婇潰鐨勫瓨鍌ㄦ牴璺緞锛屽彧鑳芥槸linux璺緞
-      #      file-root: /files/
-      file-root: /train/
+      file-root: /lowconsum/
 
   # 鎺ュ彛鏂囨。鐢熸垚锛宻wagger3锛�2023-02-23
   swagger:
@@ -326,34 +230,6 @@
     title: 浜戝師鐢熷井鏈嶅姟骞冲彴
     description: 涓�涓揩閫焪eb寮�鍙戞鏋�
 
-  # TCP閫氫俊閰嶇疆锛�2023-04-17
-  tcp:
-    # 鏄惁寮�鍚紩鎿�
-    enabled: true
-    # 鏄惁鎵撳紑蹇冭烦
-    open-heart-beat: false
-    # 蹇冭烦鏃堕棿锛堢锛夛紝2023-08-28
-    heart-beat-seconds: 120
-    # 鏄惁鏄剧ず璇︾粏鏃ュ織
-    show-log: false
-    # 璇锋眰闃熷垪绫诲瀷锛歮emory 鍩轰簬鍐呭瓨
-    queue-type: memory
-    # tcp鏂瑰紡瑕佹壂鎻忕殑璇锋眰瀵硅薄鐨勫寘绌洪棿
-    scan-packages-tcp: com.walker.tcp,com.iplatform.tcp
-    # websocket鏂瑰紡瑕佹壂鎻忕殑璇锋眰瀵硅薄鐨勫寘绌洪棿
-    scan-packages-ws: com.iplatform.tcp.util.ws,com.finance.chat.util.ws
-    # tcp闀胯繛鎺ョ殑绔彛
-    port-tcp: 7878
-    # websocket杩炴帴绔彛
-    port-ws: 60000
-    # websocket杩炴帴uri
-    websocket-uri: ws://172.16.60.41:60000/websocket
-    # 閫氫俊绾跨▼鏁伴噺
-    boss-thread-num: 2
-    # 涓氬姟澶勭悊绾跨▼鏁伴噺
-    worker-thread-num: 4
-    # 鍚敤鑷畾涔夎繛鎺ョ鐞嗗櫒锛屽鏋渢rue鍒欎笟鍔¢渶瑕佹彁渚涜嚜瀹氫箟瀹炵幇锛堥厤缃級锛�2023-07-18
-    custom-connection-manager: true
 
   # 鎺ㄩ�佹ā鍧楅厤缃紝2023-04-25
   push:
@@ -373,9 +249,3 @@
     mail-server: smtp.126.com
     mail-from: hnzzzhsl@126.com
     mail-password: test
-
-
-fin:
-  projectCode: CZT_YS_YTH_001
-  # 鍖哄垎鐪佺骇CODE
-  provinceCode: 410000000

--
Gitblit v1.9.1