From e9faf54668ff6b6aa40938a270f437c09366c16e Mon Sep 17 00:00:00 2001
From: cy <1664593601@qq.com>
Date: 星期二, 21 十一月 2023 10:34:44 +0800
Subject: [PATCH] feat: 库存预警设置
---
consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java | 176 +++++++++++++++++++++++++
consum-base/pom.xml | 5
consum-base/src/main/java/com/consum/base/pojo/query/WhWarningConfigQry.java | 45 ++++++
consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java | 2
consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java | 53 +++++-
consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java | 75 ++++++++++
consum-base/src/main/java/com/consum/base/pojo/WhWarningConfigParam.java | 25 +++
7 files changed, 367 insertions(+), 14 deletions(-)
diff --git a/consum-base/pom.xml b/consum-base/pom.xml
index 1efb686..a5ac0b7 100644
--- a/consum-base/pom.xml
+++ b/consum-base/pom.xml
@@ -66,6 +66,11 @@
<artifactId>easypoi-base</artifactId>
<version>4.1.0</version>
</dependency>
+ <dependency>
+ <groupId>cn.hutool</groupId>
+ <artifactId>hutool-core</artifactId>
+ <version>4.5.3</version>
+ </dependency>
</dependencies>
</project>
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java b/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java
new file mode 100644
index 0000000..1094895
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java
@@ -0,0 +1,176 @@
+package com.consum.base.controller;
+
+import cn.hutool.core.convert.Convert;
+import com.consum.base.BaseController;
+import com.consum.base.core.utils.CommonUtil;
+import com.consum.base.pojo.WhWarningConfigParam;
+import com.consum.base.pojo.query.WhWarningConfigQry;
+import com.consum.base.service.BaseWarehouseServiceImpl;
+import com.consum.base.service.LWhWarningConfigServiceImpl;
+import com.consum.model.po.BaseWarehouse;
+import com.consum.model.po.FinSysTenantUser;
+import com.consum.model.po.WhWarningConfig;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.walker.db.page.GenericPager;
+import com.walker.infrastructure.utils.NumberGenerator;
+import com.walker.web.ResponseValue;
+import io.swagger.annotations.Api;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName LWhWarningConfigController
+ * @Author cy
+ * @Date 2023/11/20
+ * @Description
+ * @Version 1.0
+ **/
+@RestController
+@RequestMapping("/pc/warehouse/warningConfig")
+@Api(value = "搴撳瓨闃�鍊�", tags = "搴撳瓨闃�鍊�")
+public class LWhWarningConfigController extends BaseController {
+
+ @Resource
+ private LWhWarningConfigServiceImpl lWhWarningConfigService;
+ @Resource
+ private BaseWarehouseServiceImpl baseWarehouseService;
+ private ObjectMapper mapper = new ObjectMapper();
+
+ /**
+ * @Description 鏂板
+ */
+ @PostMapping("/add")
+ public ResponseValue add() throws Exception {
+ WhWarningConfigParam param = CommonUtil.getObjFromReqBody(WhWarningConfigParam.class);
+ String modelConfigStr = param.getModelConfigStr();
+ Long baseWarehouseId = param.getBaseWarehouseId();
+ Long baseGoodsTemplateId = param.getBaseGoodsTemplateId();
+ if (param.getWarehouseType() == null || baseWarehouseId == null || baseGoodsTemplateId == null || StringUtils.isEmpty(modelConfigStr)) {
+ return ResponseValue.error("缂哄皯蹇呰鍙傛暟");
+ }
+ /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
+ FinSysTenantUser sysInfo = this.getSysInfo();
+ if (sysInfo == null) {
+ return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+ }
+ String tenantId = sysInfo.getTenantId();
+ BaseWarehouse baseWarehouse = baseWarehouseService.getById(baseWarehouseId);
+ if (baseWarehouse == null) {
+ return ResponseValue.error("浠撳簱涓嶅瓨鍦紒");
+ }
+ Long warehouseAgencyId = baseWarehouse.getAgencyId();
+ if (warehouseAgencyId == null || !warehouseAgencyId.toString().startsWith(tenantId)) {
+ return ResponseValue.error("鎿嶄綔澶辫触锛�");
+ }
+
+ List<Map<String, Object>> list = mapper.readValue(modelConfigStr, List.class);
+ if (CollectionUtils.isEmpty(list)) {
+ return ResponseValue.error("缂哄皯蹇呰鍙傛暟");
+ }
+ WhWarningConfig queryIsExist = new WhWarningConfig();
+ queryIsExist.setWarehouseType(0);
+ queryIsExist.setBaseGoodsModelsId(baseWarehouseId);
+ ArrayList<WhWarningConfig> configArrayList = new ArrayList<>(list.size());
+ for (Map<String, Object> item : list) {
+ Long baseGoodsModelsId = Convert.toLong(item.get("baseGoodsModelsId"));
+ queryIsExist.setBaseGoodsModelsId(baseGoodsModelsId);
+ List<WhWarningConfig> containWarningConfig = lWhWarningConfigService.select(queryIsExist);
+ if (!CollectionUtils.isEmpty(containWarningConfig)) {
+ return ResponseValue.error("璁板綍宸插瓨鍦紒");
+ }
+ Long lowerLimit = Convert.toLong(item.get("lowerLimit"));
+ Long upperLimit = Convert.toLong(item.get("upperLimit"));
+ if (lowerLimit == null && lowerLimit == null) {
+ return ResponseValue.error("搴撳瓨涓婇檺銆佷笅闄愪笉鑳藉叏涓虹┖锛�");
+ }
+ if (upperLimit != null && upperLimit < 0){
+ return ResponseValue.error("搴撳瓨闄愬埗涓嶈兘灏忎簬0锛�");
+ }
+ if (lowerLimit != null && lowerLimit < 0){
+ return ResponseValue.error("搴撳瓨闄愬埗涓嶈兘灏忎簬0锛�");
+ }
+ if (upperLimit != null && lowerLimit != null && upperLimit < lowerLimit) {
+ return ResponseValue.error("搴撳瓨涓婇檺涓嶈兘灏忎簬涓嬮檺锛�");
+ }
+ WhWarningConfig whWarningConfig = new WhWarningConfig();
+ whWarningConfig.setId(NumberGenerator.getLongSequenceNumber());
+ whWarningConfig.setWarehouseType(0);
+ whWarningConfig.setBaseWarehouseId(baseWarehouseId);
+ whWarningConfig.setBaseGoodsTemplateId(baseGoodsTemplateId);
+ whWarningConfig.setBaseGoodsModelsId(baseGoodsModelsId);
+ if (whWarningConfig.getBaseGoodsModelsId() == null) {
+ whWarningConfig.setGoodsType(1);
+ } else {
+ whWarningConfig.setGoodsType(2);
+ }
+ configArrayList.add(whWarningConfig);
+ }
+
+ int flag = lWhWarningConfigService.insertBatch(configArrayList);
+ return flag > 0 ? ResponseValue.success(1) : ResponseValue.error("鎿嶄綔澶辫触锛�");
+ }
+
+ /**
+ * @Description 淇敼
+ */
+ @PostMapping("/upd")
+ public ResponseValue upd() {
+ WhWarningConfig param = CommonUtil.getObjFromReqBody(WhWarningConfig.class);
+ if (param.getId() == null || (param.getUpperLimit() == null && param.getLowerLimit() == null)) {
+ return ResponseValue.error("搴撳瓨涓婇檺銆佷笅闄愪笉鑳藉叏涓虹┖锛�");
+ }
+ if (param.getUpperLimit() != null && param.getLowerLimit() != null && param.getUpperLimit() < param.getLowerLimit()) {
+ return ResponseValue.error("搴撳瓨涓婇檺涓嶈兘灏忎簬涓嬮檺锛�");
+ }
+
+ // 鏇存柊
+ int flag = lWhWarningConfigService.save(param);
+ return flag > 0 ? ResponseValue.success(1) : ResponseValue.error("鎿嶄綔澶辫触锛�");
+ }
+
+
+ @DeleteMapping("del")
+ public ResponseValue delById() {
+ WhWarningConfig param = CommonUtil.getObjFromReqBody(WhWarningConfig.class);
+ if (param.getId() == null) {
+ return ResponseValue.error("id涓虹┖");
+ }
+ int num = baseWarehouseService.delete(param);
+ return num > 0 ? ResponseValue.success(1) : ResponseValue.error("鍒犻櫎澶辫触锛�");
+ }
+
+ @GetMapping("/getList")
+ public ResponseValue getConfigList() {
+ WhWarningConfigQry param = CommonUtil.getObjFromReq(WhWarningConfigQry.class);
+ /*褰撳墠鐧诲綍浜哄彧鑳界湅鍒拌嚜宸辨満鏋勪笅鐨勫垪琛�*/
+ FinSysTenantUser sysInfo = this.getSysInfo();
+ String tenantId = sysInfo.getTenantId();
+ Long paramAgencyId = param.getAgencyId();
+ if (paramAgencyId == null || !paramAgencyId.toString().startsWith(tenantId)) {
+ param.setAgencyId(Long.valueOf(tenantId));
+ }
+ GenericPager<Map<String, Object>> genericPager = lWhWarningConfigService.getConfigListWithPage(param);
+ return ResponseValue.success(genericPager);
+ }
+
+ @GetMapping("/getById")
+ public ResponseValue getById() {
+ WhWarningConfig param = CommonUtil.getObjFromReq(WhWarningConfig.class);
+ WhWarningConfig whWarningConfig = lWhWarningConfigService.get(param);
+ return ResponseValue.success(whWarningConfig);
+ }
+
+ @GetMapping("/getConfigList")
+ public ResponseValue getConfigList(WhWarningConfig param) {
+ if (param.getBaseWarehouseId() == null || param.getWarehouseType() == null || (param.getBaseGoodsModelsId() == null || param.getBaseGoodsTemplateId() == null)) {
+ return ResponseValue.error("缂哄皯蹇呰鍙傛暟");
+ }
+ return ResponseValue.success(lWhWarningConfigService.select(param));
+ }
+}
diff --git a/consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java b/consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java
index 71ad5ec..2a97310 100644
--- a/consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java
+++ b/consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java
@@ -1,21 +1,23 @@
package com.consum.base.core.utils;
// @formatter:off
+import cn.hutool.core.util.ReflectUtil;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import org.springframework.beans.BeanUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.lang.reflect.Field;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* .-~~~~~~~~~-._ _.-~~~~~~~~~-.
@@ -84,7 +86,8 @@
* @Description : 鑾峰彇request
*/
public static HttpServletRequest getRequest() {
- ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
+ .getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
return request;
}
@@ -95,7 +98,8 @@
* @Description : response
*/
public static HttpServletResponse getResponse() {
- ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
+ .getRequestAttributes();
HttpServletResponse response = requestAttributes.getResponse();
return response;
}
@@ -138,7 +142,8 @@
// 鍒ゆ柇鎺掑簭asc鍜宒esc
if (returnMap.containsKey("sortOrder") && returnMap.get("sortOrder") != null && returnMap.get("sortOrder") != "") {
- if (!"DESC".equals(convert2Str(returnMap.get("sortOrder")).toUpperCase()) && !"ASC".equals(convert2Str(returnMap.get("sortOrder")).toUpperCase())) {
+ if (!"DESC".equals(convert2Str(returnMap.get("sortOrder")).toUpperCase())
+ && !"ASC".equals(convert2Str(returnMap.get("sortOrder")).toUpperCase())) {
returnMap.put("sortOrder", "");
}
}
@@ -233,4 +238,26 @@
return null;
}
+ public static void copyProperties(Object source, Object target) {
+ BeanUtils.copyProperties(source, target);
+ Class<?> sourceClass = source.getClass();
+ // 鑾峰彇褰撳墠绫讳互鍙婃墍鏈夌埗绫荤殑瀛楁
+ while (sourceClass != null) {
+ Field[] fields = sourceClass.getDeclaredFields();
+ for (Field field : fields) {
+ String fieldName = field.getName();
+ if (!fieldName.startsWith("isset__")) {
+ continue;
+ }
+ try {
+ Object fieldValue = ReflectUtil.getFieldValue(source, field);
+ ReflectUtil.setFieldValue(target, field, fieldValue);
+ } catch (Exception e) {
+ System.out.println(e.getMessage());
+ }
+ }
+ sourceClass = sourceClass.getSuperclass();
+ }
+ }
+
}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/WhWarningConfigParam.java b/consum-base/src/main/java/com/consum/base/pojo/WhWarningConfigParam.java
new file mode 100644
index 0000000..8bbc0e7
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/WhWarningConfigParam.java
@@ -0,0 +1,25 @@
+package com.consum.base.pojo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName WhWarningConfigParam
+ * @Author cy
+ * @Date 2023/11/20
+ * @Description
+ * @Version 1.0
+ **/
+@Data
+public class WhWarningConfigParam {
+ @ApiModelProperty("浠撳簱绫诲瀷")
+ private Long warehouseType;
+
+ @ApiModelProperty("浠撳簱id")
+ private Long baseWarehouseId;
+
+ private Long baseGoodsTemplateId;
+
+ // [{"baseGoodsModelsId":111,"lowerLimit":null,"upperLimit":null},{"baseGoodsModelsId":111,"lowerLimit":null,"upperLimit":null}]
+ private String modelConfigStr ;
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java b/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java
index 7eaf7df..7f81722 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java
@@ -31,7 +31,7 @@
private Long categoryId;
@ApiModelProperty("浠峰�肩被鍨�")
- private Long costType;
+ private Short costType;
@ApiModelProperty("鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾 4 闆舵槦鍑哄簱锛�")
private Short states;
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningConfigQry.java b/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningConfigQry.java
new file mode 100644
index 0000000..3706be7
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/query/WhWarningConfigQry.java
@@ -0,0 +1,45 @@
+package com.consum.base.pojo.query;
+
+import com.walker.web.param.ParamRequest;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName WhWarningConfigParam
+ * @Author cy
+ * @Date 2023/11/20
+ * @Description
+ * @Version 1.0
+ **/
+@ApiModel(value = "棰勮璁剧疆鏌ヨ鍙傛暟")
+@Data
+public class WhWarningConfigQry extends ParamRequest {
+ // 涓婚敭
+ private Long id;
+ private Long baseGoodsTemplateId;
+ private Long baseGoodsModelsId;
+ private Integer goodsType;
+ @ApiModelProperty("鏈烘瀯")
+ private Long agencyId;
+ @ApiModelProperty("浠撳簱绫诲瀷")
+ private Long warehouseType;
+
+ @ApiModelProperty("浠撳簱id")
+ private Long baseWarehouseId;
+
+ @ApiModelProperty("鐗╁搧鍚嶇О")
+ private String goodsTemplateName;
+
+ @ApiModelProperty("鍒嗙被")
+ private Long categoryId;
+
+ @ApiModelProperty("浠峰�肩被鍨�")
+ private Short costType;
+
+ @ApiModelProperty(value = "姣忛〉鏄剧ず鏉℃暟")
+ private Integer pageSize = 10;
+
+ @ApiModelProperty(value = "褰撳墠椤垫暟")
+ private Integer pageNum = 1;
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java
new file mode 100644
index 0000000..a5b8bda
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java
@@ -0,0 +1,75 @@
+package com.consum.base.service;
+
+import com.consum.base.core.utils.MapperUtil;
+import com.consum.base.pojo.query.WhWarningConfigQry;
+import com.walker.db.page.GenericPager;
+import com.walker.infrastructure.utils.StringUtils;
+import com.walker.jdbc.service.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @ClassName LWhWarningConfigServiceImpl
+ * @Author cy
+ * @Date 2023/11/20
+ * @Description
+ * @Version 1.0
+ **/
+@Service
+public class LWhWarningConfigServiceImpl extends BaseServiceImpl {
+ private static String GET_CONFIG_LIST_WITH_PAGE = "SELECT wareConf.*,ware.AGENCY_NAME,ware.WAREHOUSE_NAME,goodsTemp.CATEGORY_NAME,CONCAT(cate.CLASSIFICATION,'绫�') cost_Type,goodsTemp.GOODS_NAME,baseModel.MODEL_NAME FROM WH_WARNING_CONFIG wareConf LEFT JOIN BASE_GOODS_MODELS baseModel ON baseModel.ID=wareConf.BASE_GOODS_MODELS_ID LEFT JOIN BASE_GOODS_TEMPLATE goodsTemp ON wareConf.BASE_GOODS_TEMPLATE_ID=goodsTemp.id LEFT JOIN BASE_CATEGORY cate ON cate.id=goodsTemp.CATEGORY_ID LEFT JOIN BASE_WAREHOUSE ware ON ware.id=wareConf.BASE_WAREHOUSE_ID WHERE 1=1 ";
+
+ public GenericPager<Map<String, Object>> getConfigListWithPage(WhWarningConfigQry param) {
+ Map<String, Object> configListQueryMap = getConfigListQueryMap(param);
+ StringBuilder sql = (StringBuilder) configListQueryMap.get("sql");
+ HashMap<String, Object> paramts = (HashMap<String, Object>) configListQueryMap.get("paramts");
+ return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
+ }
+
+
+
+ private Map<String, Object> getConfigListQueryMap(WhWarningConfigQry param) {
+ Map<String, Object> configListQueryMap = new HashMap<>();
+ StringBuilder sql = new StringBuilder(GET_CONFIG_LIST_WITH_PAGE);
+ HashMap<String, Object> paramts = new HashMap<>();
+ //鏈烘瀯
+ if (param.getAgencyId() != null) {
+ sql.append(" and left(ware.AGENCY_ID, length(:lengthAgencyId)) = :agencyId");
+ paramts.put("lengthAgencyId", param.getAgencyId());
+ paramts.put("agencyId", param.getAgencyId());
+ }
+ //浠撳簱绫诲瀷
+ if (param.getWarehouseType() != null) {
+ sql.append(" AND wareConf.WAREHOUSE_TYPE = :warehouseType");
+ paramts.put("warehouseType", param.getWarehouseType());
+ }
+ if (param.getBaseWarehouseId() != null) {
+ sql.append(" AND wareConf.WAREHOUSE_ID = :warehouseId");
+ paramts.put("warehouseId", param.getBaseWarehouseId());
+ }
+ //鐗╁搧鍚嶇О
+ if (StringUtils.isNotEmpty(param.getGoodsTemplateName())) {
+ sql.append(" AND goodsTemp.GOODS_NAME like :goodsTemplateName");
+ paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
+ }
+ //鍒嗙被
+ if (param.getCategoryId() != null) {
+ sql.append(" AND cate.id=:categoryId");
+ paramts.put("categoryId", param.getCategoryId());
+ }
+ //浠峰�肩被鍨�
+ if (param.getCostType() != null) {
+ // 灏嗘暟瀛楄浆鎹负瀵瑰簲鐨勫瓧绗�
+ char costType = (char) ('A' + param.getCostType() - 1);
+ sql.append(" AND cate.CLASSIFICATION=:costType");
+ paramts.put("costType", costType);
+ }
+ sql.append(" ORDER BY wareConf.id DESC ");
+ configListQueryMap.put("sql", sql);
+ configListQueryMap.put("paramts", paramts);
+ return configListQueryMap;
+ }
+
+}
--
Gitblit v1.9.1