consum-base/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
consum-base/src/main/java/com/consum/base/core/utils/CommonUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
consum-base/src/main/java/com/consum/base/pojo/WhWarningConfigParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
consum-base/src/main/java/com/consum/base/pojo/query/WhWarningConfigQry.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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> consum-base/src/main/java/com/consum/base/controller/LWhWarningConfigController.java
New file @@ -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)); } } 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和desc 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(); } } } consum-base/src/main/java/com/consum/base/pojo/WhWarningConfigParam.java
New file @@ -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 ; } 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; consum-base/src/main/java/com/consum/base/pojo/query/WhWarningConfigQry.java
New file @@ -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; } consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java
New file @@ -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; } }