diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/index/IndexController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/index/IndexController.java index 1aa974bf..f8eba884 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/index/IndexController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/index/IndexController.java @@ -125,6 +125,7 @@ public class IndexController { dataMap.put("totalLocationCount", locationService.getTotalLocationCount());//总库位数 dataMap.put("stagnantBalanceList", balanceService.getStagnantBalanceList());//呆滞库存预警 dataMap.put("overdueBalanceList", balanceService.getOverdueBalanceList());//超期库存预警 + dataMap.put("warningBalanceList", balanceService.getWarningBalanceList());//高低储预警 dataMap.put("jobCount", getMaterialJobCountMap()); return success(dataMap); } @@ -150,6 +151,7 @@ public class IndexController { dataMap.put("deliverPlanTodayCount", deliverPlanMainService.getDeliverPlanToday());//今日发货计划(未发货) dataMap.put("stagnantBalanceList", balanceService.getStagnantBalanceList());//呆滞库存预警 dataMap.put("overdueBalanceList", balanceService.getOverdueBalanceList());//超期库存预警 + dataMap.put("warningBalanceList", balanceService.getWarningBalanceList());//高低储预警 dataMap.put("jobCount", getProductJobCountMap()); return success(dataMap); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceService.java index 7812eee9..5f79a496 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceService.java @@ -100,9 +100,16 @@ public interface BalanceService { * @return 呆滞库存 */ List getStagnantBalanceList(); + /** * 超期库存预警 * @return 超期库存 */ List getOverdueBalanceList(); + + /** + * 高低储预警 + * @return 高低储预警 + */ + List getWarningBalanceList(); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java index d67406a2..0dc50dee 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/balance/BalanceServiceImpl.java @@ -1,11 +1,10 @@ package com.win.module.wms.service.balance; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.util.MyBatisUtils; -import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.system.api.dict.DictDataApi; import com.win.module.system.api.dict.dto.DictDataRespDTO; import com.win.module.system.api.user.AdminUserApi; @@ -14,6 +13,7 @@ import com.win.module.wms.controller.balance.vo.BalancePageReqVO; import com.win.module.wms.controller.balance.vo.BalanceRespVO; import com.win.module.wms.controller.balance.vo.BalanceUpdateReqVO; import com.win.module.wms.controller.packageMassage.vo.PackageUpdateReqVO; +import com.win.module.wms.controller.rule.vo.RuleRespVO; import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; import com.win.module.wms.convert.balance.BalanceConvert; import com.win.module.wms.dal.dataobject.balance.BalanceDO; @@ -22,6 +22,7 @@ import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; import com.win.module.wms.dal.mysql.balance.BalanceMapper; import com.win.module.wms.dal.mysql.packageMassage.PackageMapper; import com.win.module.wms.service.packageMassage.PackageService; +import com.win.module.wms.service.rule.RuleService; import com.win.module.wms.service.transaction.TransactionService; import com.win.module.wms.util.JobUtils; import org.springframework.beans.BeanUtils; @@ -30,8 +31,11 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @@ -59,6 +63,8 @@ public class BalanceServiceImpl implements BalanceService { @Resource private BalanceMapper balanceMapper; @Resource + private RuleService ruleService; + @Resource private DictDataApi dictDataApi; @Override @@ -143,7 +149,6 @@ public class BalanceServiceImpl implements BalanceService { */ @Override public List selectPackaging(String itemCode, String packingNumber, String batch, List inventoryStatus, String locationCode) { - QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("item_code", itemCode); queryWrapper.eq("packing_number", packingNumber); @@ -272,7 +277,6 @@ public class BalanceServiceImpl implements BalanceService { DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictTypeAndLabel("stagnant_time", "默认时间(天)"); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.apply(" DATEDIFF(NOW(), arrive_date) > {0}", dictDataRespDTO.getValue()); - queryWrapper.last("LIMIT 10"); List balanceDOList = balanceMapper.selectList(queryWrapper); return BalanceConvert.INSTANCE.convertList(balanceDOList); } @@ -281,8 +285,36 @@ public class BalanceServiceImpl implements BalanceService { public List getOverdueBalanceList() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.apply("expire_date>NOW()"); - queryWrapper.last("LIMIT 10"); List balanceDOList = balanceMapper.selectList(queryWrapper); return BalanceConvert.INSTANCE.convertList(balanceDOList); } + + @Override + public List getWarningBalanceList() { + List balanceDOList = balanceMapper.selectList(new QueryWrapper<>()); + List balanceRespVOList = new ArrayList<>(); + //存储规则,防止同一个规则取多次 + Map ruleRespVOHashMap = new HashMap<>(); + for(BalanceDO balanceDO : balanceDOList) { + RuleRespVO ruleRespVO = ruleRespVOHashMap.get(balanceDO.getItemCode() + "_" + balanceDO.getLocationCode()); + if(ruleRespVO == null) { + ruleRespVO = ruleService.replenishment(balanceDO.getItemCode(), balanceDO.getLocationCode()); + if (ruleRespVO == null) { + continue; + } + ruleRespVOHashMap.put(balanceDO.getItemCode() + "_" + balanceDO.getLocationCode(), ruleRespVO); + } + JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration()); + //最大库存和最小库存,超过预警 + int maxQty = Integer.parseInt(jsonObject.getStr("MaxQty")); + int minQty = Integer.parseInt(jsonObject.getStr("MinQty")); + if(maxQty > 0 && balanceDO.getQty().compareTo(new BigDecimal(maxQty)) > 0) { + balanceRespVOList.add(BalanceConvert.INSTANCE.convert(balanceDO)); + } + if(minQty > 0 && balanceDO.getQty().compareTo(new BigDecimal(minQty)) < 0) { + balanceRespVOList.add(BalanceConvert.INSTANCE.convert(balanceDO)); + } + } + return balanceRespVOList; + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countJob/CountJobMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countJob/CountJobMainServiceImpl.java index cd28ba21..802d5665 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countJob/CountJobMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countJob/CountJobMainServiceImpl.java @@ -195,6 +195,8 @@ public class CountJobMainServiceImpl implements CountJobMainService { //增加业务类型 BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountRecord"); countRecordMainDO.setBusinessType(businesstypeDO.getCode()); + countRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType()); + countRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); countRecordMainDO.setId(null).setCreator(null).setCreateTime(null).setUpdater(null).setUpdateTime(null); countRecordMainMapper.insert(countRecordMainDO); CountRequestMainDO countRequestMainDO = countRequestMainMapper.selectByNumber(countJobMainDO.getRequestNumber()); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayJob/ProductputawayJobDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayJob/ProductputawayJobDetailServiceImpl.java index 04b11cdb..8176f4f7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayJob/ProductputawayJobDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productputawayJob/ProductputawayJobDetailServiceImpl.java @@ -95,7 +95,6 @@ public class ProductputawayJobDetailServiceImpl implements ProductputawayJobDeta public List getProductputawayJobDetailList() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.inSql("number", "SELECT number FROM job_productputaway_main WHERE `status`=1 OR `status`=2"); - queryWrapper.last("LIMIT 10"); List productputawayJobDetailDOList = productputawayJobDetailMapper.selectList(queryWrapper); return ProductputawayJobDetailConvert.INSTANCE.convertList(productputawayJobDetailDOList); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRecord/PurchaseclaimRecordDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRecord/PurchaseclaimRecordDetailServiceImpl.java index 0f2d40fa..82697fbf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRecord/PurchaseclaimRecordDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRecord/PurchaseclaimRecordDetailServiceImpl.java @@ -93,7 +93,6 @@ public class PurchaseclaimRecordDetailServiceImpl implements PurchaseclaimRecord QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.between("create_time", beginTime, endTime); queryWrapper.orderByDesc("create_time"); - queryWrapper.last("LIMIT 10"); List purchasereturnRecordDetailDOList = purchaseclaimRecordDetailMapper.selectList(queryWrapper); return PurchaseclaimRecordDetailConvert.INSTANCE.convertList(purchasereturnRecordDetailDOList); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordDetailServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordDetailServiceImpl.java index 6546b136..fe6957a2 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordDetailServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRecord/PurchasereturnRecordDetailServiceImpl.java @@ -49,7 +49,6 @@ public class PurchasereturnRecordDetailServiceImpl implements PurchasereturnReco QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.between("create_time", beginTime, endTime); queryWrapper.orderByDesc("create_time"); - queryWrapper.last("LIMIT 10"); List purchasereturnRecordDetailDOList = purchasereturnRecordDetailMapper.selectList(queryWrapper); return PurchasereturnRecordDetailConvert.INSTANCE.convertList(purchasereturnRecordDetailDOList); }