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

---
 consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java |   65 ++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 1 deletions(-)

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());
+    }
+
 }

--
Gitblit v1.9.1