From 211556339427f512b5e78e009f91bbeee7b5e618 Mon Sep 17 00:00:00 2001 From: cy <1664593601@qq.com> Date: 星期六, 25 十一月 2023 15:13:20 +0800 Subject: [PATCH] feat: 库存变动预警 --- consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java | 31 ++++++---- consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java | 35 ++++++++--- consum-base/src/main/java/com/consum/base/service/LWhWarningServiceImpl.java | 4 consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java | 37 +++++++----- consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java | 21 ++++++- consum-base/src/main/java/com/consum/base/core/service/LWhWarningCoreServiceImpl.java | 22 ++++++- 6 files changed, 102 insertions(+), 48 deletions(-) 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 index 84a9f49..7abdabd 100644 --- 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 @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** @@ -45,6 +46,7 @@ if (baseModelIdList == null) { baseModelIdList = new ArrayList<>(); } + sysInfo = sysInfo == null ? new FinSysTenantUser() : sysInfo; // 鑾峰彇鍒拌揪鍒伴槇鍊肩殑鐗╁搧 List<Map<String, Object>> kuCunNotifyList = lWhWarningService.checkKuCun(warehouseType, warehouseId, baseModelIdList); // @@ -53,6 +55,11 @@ kuCunNormalModel(warehouseType, warehouseId, baseModelIdList); return; } + List<Long> allChangModelList = baseModelIdList.stream() + .distinct() + .collect(Collectors.toList()); + baseModelIdList = allChangModelList; + // 灏嗘暟鎹彃鍏ュ簱瀛橀璀︺�怶H_WARNING銆� BaseWarehouse baseWarehouses = baseWarehouseService.get(new BaseWarehouse(warehouseId)); @@ -105,8 +112,15 @@ 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)) { + /** + * + * @param warehouseType + * @param warehouseId + * @param normalBaseModelIdList 搴撳瓨姝e父鐨� + * @return + */ + private int kuCunNormalModel(Short warehouseType, Long warehouseId, List<Long> normalBaseModelIdList) { + if (CollectionUtils.isEmpty(normalBaseModelIdList)) { return 1; } ArrayList<Object> params = new ArrayList<>(); @@ -114,9 +128,9 @@ params.add(warehouseId); StringBuilder sql = new StringBuilder(KU_CUN_NORMAL_MODEL); - if (!org.springframework.util.CollectionUtils.isEmpty(baseModelIdList)) { + if (!org.springframework.util.CollectionUtils.isEmpty(normalBaseModelIdList)) { sql.append(" and BASE_GOODS_MODELS_ID in(?)"); - params.add(baseModelIdList); + params.add(org.apache.commons.lang3.StringUtils.join(normalBaseModelIdList, ",")); } return lWhWarningService.update(sql.toString(), params.toArray()); } diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java index c74b9a0..0811cfc 100644 --- a/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java +++ b/consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java @@ -1,25 +1,25 @@ package com.consum.base.service; +import cn.hutool.core.convert.Convert; import com.consum.base.core.CodeGeneratorEnum; import com.consum.base.core.CodeGeneratorService; import com.consum.base.core.WhBusinessEnum; import com.consum.base.core.param.BaseWarehouseParam1; +import com.consum.base.core.service.LWhWarningCoreServiceImpl; import com.consum.base.core.utils.LockManage; -import com.consum.model.po.LWarehouseFlow; -import com.consum.model.po.LWhFormOutput; -import com.consum.model.po.LWhFormTransfer; -import com.consum.model.po.LWhGoodsRecord; -import com.consum.model.po.LWhProcureModel; +import com.consum.model.po.*; import com.iplatform.model.po.S_user_core; import com.walker.infrastructure.utils.CollectionUtils; import com.walker.infrastructure.utils.NumberGenerator; -import java.util.List; -import java.util.Map; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; /** * @ClassName WhFormOutputCoreService @@ -37,19 +37,21 @@ private CodeGeneratorService codeGeneratorService; private LWhProcureModelService lWhProcureModelService; private LWhFormOutputService lWhFormOutputService; + private LWhWarningCoreServiceImpl lWhWarningCoreService; private LWarehouseFlowService lWarehouseFlowService; private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService; private LWhGoodsRecordService lWhGoodsRecordService; @Autowired public LWhFormOutputCoreService(BaseGoodsTemplateServiceImpl baseGoodsTemplateService, - LWhGoodsService lWhGoodsService, - CodeGeneratorService codeGeneratorService, - LWhProcureModelService lWhProcureModelService, - LWhFormOutputService lWhFormOutputService, - LWarehouseFlowService lWarehouseFlowService, - LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService, - LWhGoodsRecordService lWhGoodsRecordService) { + LWhGoodsService lWhGoodsService, + CodeGeneratorService codeGeneratorService, + LWhProcureModelService lWhProcureModelService, + LWhFormOutputService lWhFormOutputService, + LWarehouseFlowService lWarehouseFlowService, + LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService, + LWhGoodsRecordService lWhGoodsRecordService, + LWhWarningCoreServiceImpl lWhWarningCoreService) { this.baseGoodsTemplateService = baseGoodsTemplateService; this.lWhGoodsService = lWhGoodsService; this.codeGeneratorService = codeGeneratorService; @@ -58,6 +60,7 @@ this.lWarehouseFlowService = lWarehouseFlowService; this.lWhGoodsRecordDetailsService = lWhGoodsRecordDetailsService; this.lWhGoodsRecordService = lWhGoodsRecordService; + this.lWhWarningCoreService = lWhWarningCoreService; } @@ -206,9 +209,11 @@ Integer buyType = buyTypeT; Integer modGoodsTransferingStatus = modGoodsTransferingStatusT; + ArrayList<Long> allChangModelList = new ArrayList<>(); goodsModelNumList.forEach(itemModelInfo -> { // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鐨勬煇涓瀷鍙� Long baseGoodsModelsId = itemModelInfo.getBaseGoodsModelsId(); + allChangModelList.add(baseGoodsModelsId); // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鏌愪釜鍨嬪彿鐨勬暟閲� Integer counts = itemModelInfo.getCounts(); @@ -258,7 +263,7 @@ //鍑哄簱鏃跺�欙紝鎸� 鍏堝叆搴撶殑鍏堝嚭搴擄紝鍚屾椂鍏ュ簱鐨勶紝鎸変环鏍奸珮鐨勫厛鍑哄簱 outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType, - counts); + counts); lWhGoodsService.modGoodsTransfering(outGoodsId, inWarehouseType, inWarehouseId, inWarehouseName, modGoodsTransferingStatus); // 鎵归噺鎻掑叆 杩涘嚭搴撴祦姘存槑缁哰L_WH_GOODS_RECORD_DETAILS] lWhGoodsRecordDetailsService.sameGoodsInsertMore(outGoodsId, whGoodsRecordId, (short) 0); @@ -292,6 +297,8 @@ lWhFormOutput.setWarehouseFlowId(lWarehouseFlowId); lWhFormOutputService.update(lWhFormOutput); + //褰撳簱瀛樺彉鍔ㄦ椂璋冪敤璇ユ柟娉� + lWhWarningCoreService.updateKuCun(Convert.toShort(outWarehouseType, (short) 0), outWarehouseId, allChangModelList, null, dealTime); return lWarehouseFlowId; } diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java index adb9a3e..1a2f7c9 100644 --- a/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java +++ b/consum-base/src/main/java/com/consum/base/service/LWhFormProcureCoreService.java @@ -1,6 +1,7 @@ package com.consum.base.service; import com.consum.base.core.WhBusinessEnum; +import com.consum.base.core.service.LWhWarningCoreServiceImpl; import com.consum.model.po.LWarehouseFlow; import com.consum.model.po.LWhFormProcure; import com.consum.model.po.LWhProcureModel; @@ -13,10 +14,10 @@ import javax.annotation.Resource; import java.util.List; +import java.util.stream.Collectors; /** * @ClassName LWhFormProcureCoreService - * @Date 2023/10/26 * @Description * @Version 1.0 @@ -29,6 +30,9 @@ @Resource private LWhFormProcureService lWhFormProcureService; + + @Resource + private LWhWarningCoreServiceImpl lWhWarningCoreService; @Resource private LWarehouseFlowCoreService lWarehouseFlowService; @@ -56,11 +60,12 @@ List<LWhProcureModel> goodsModelNum = lWhProcureModelService.getModelByForm(WhBusinessEnum.CAIGOU, whFormProcureId); // 娴佹按璁板綍鎬昏〃ID + Long warehouseId = lWhFormProcure.getWarehouseId(); long lWarehouseFlowId = NumberGenerator.getLongSequenceNumberNano(); LWarehouseFlow warehouseFlow = new LWarehouseFlow(); warehouseFlow.setId(lWarehouseFlowId); warehouseFlow.setWarehouseType(0); - warehouseFlow.setWarehouseId(lWhFormProcure.getWarehouseId()); + warehouseFlow.setWarehouseId(warehouseId); warehouseFlow.setWarehouseName(lWhFormProcure.getWarehouseName()); warehouseFlow.setThisType(1); warehouseFlow.setBusinessType(WhBusinessEnum.CAIGOU.getValue() + 0); @@ -79,8 +84,18 @@ whFormProcure.setIncomeTime(dealTime); lWhFormProcureService.update(whFormProcure); } + + + // 鎻愬彇baseGoodsModelsId骞舵斁鍏ユ柊鐨凩ist涓� + List<Long> allChangModelList = goodsModelNum.stream() + .map(LWhProcureModel::getBaseGoodsModelsId) + .distinct() + .collect(Collectors.toList()); + //褰撳簱瀛樺彉鍔ㄦ椂璋冪敤璇ユ柟娉� + lWhWarningCoreService.updateKuCun((short) 0, warehouseId, allChangModelList, null, dealTime); + log.info("鍏ュ簱鍗曪細{} 鍏ュ簱瀹屾垚", whFormProcureId); return null; - } + } diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java index 06a2a59..5dfc08d 100644 --- a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java +++ b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedCoreService.java @@ -1,6 +1,8 @@ package com.consum.base.service; +import cn.hutool.core.convert.Convert; import com.consum.base.core.WhBusinessEnum; +import com.consum.base.core.service.LWhWarningCoreServiceImpl; import com.consum.base.core.utils.LockManage; import com.consum.model.po.LWarehouseFlow; import com.consum.model.po.LWhFormScrapped; @@ -9,14 +11,16 @@ import com.iplatform.model.po.S_user_core; 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.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @ClassName LWhFormScrappedCoreService @@ -35,15 +39,17 @@ private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService; private LWhGoodsRecordService lWhGoodsRecordService; private LWarehouseFlowService lWarehouseFlowService; + private LWhWarningCoreServiceImpl lWhWarningCoreService; @Autowired public LWhFormScrappedCoreService(GoodsBaseServiceImpl goodsBaseService, - LWhFormScrappedGoodsService lWhFormScrappedGoodsService, - BaseGoodsTemplateServiceImpl baseGoodsTemplateService, - LWhGoodsService lWhGoodsService, - LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService, - LWhGoodsRecordService lWhGoodsRecordService, - LWarehouseFlowService lWarehouseFlowService) { + LWhFormScrappedGoodsService lWhFormScrappedGoodsService, + BaseGoodsTemplateServiceImpl baseGoodsTemplateService, + LWhGoodsService lWhGoodsService, + LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService, + LWhGoodsRecordService lWhGoodsRecordService, + LWarehouseFlowService lWarehouseFlowService, + LWhWarningCoreServiceImpl lWhWarningCoreService) { // this.lWhFormScrappedService = lWhFormScrappedService; this.lWhFormScrappedGoodsService = lWhFormScrappedGoodsService; this.baseGoodsTemplateService = baseGoodsTemplateService; @@ -52,6 +58,7 @@ this.lWhGoodsRecordService = lWhGoodsRecordService; this.lWarehouseFlowService = lWarehouseFlowService; this.goodsBaseService = goodsBaseService; + this.lWhWarningCoreService = lWhWarningCoreService; } @@ -92,11 +99,14 @@ } // 鎸夊瀷鍙峰垎缁� + ArrayList<Long> allChangModelList = new ArrayList<>(); + Map<Long, List<LWhFormScrappedGoods>> modelGroup = formScrappedGoods.stream() - .collect(Collectors.groupingBy(LWhFormScrappedGoods::getBaseGoodsModelsId)); + .collect(Collectors.groupingBy(LWhFormScrappedGoods::getBaseGoodsModelsId)); for (Map.Entry<Long, List<LWhFormScrappedGoods>> entry : modelGroup.entrySet()) { //瑙勬牸鍨嬪彿缂栧彿 Long baseGoodsModelsId = entry.getKey(); + allChangModelList.add(baseGoodsModelsId); //瀵规瘡缁勪腑瑕佹姤搴熺殑鏁伴噺姹傚拰 List<LWhFormScrappedGoods> modelGoodsList = entry.getValue(); //鏌ヨ鍨嬪彿淇℃伅 @@ -140,7 +150,7 @@ String userName = formScrappedGood.getUserName(); // 鏍规嵁鍒嗗彂鍗曘�佽鏍煎瀷鍙风紪鍙枫�佷娇鐢ㄤ汉鍛樺悕绉帮紝杩涜鎶ュ簾 srappedGoodsIds = lWhGoodsService.queryScrappedGoodsIds(warehouseType, warehouseId, transBusinessId, userName, baseGoodsModelsId, - (short) 2, counts); + (short) 2, counts); } if (CollectionUtils.isEmpty(srappedGoodsIds) || srappedGoodsIds.size() < counts) { log.error("瑕佹姤搴熺殑鐗╁搧鏁伴噺涓嶈冻锛�"); @@ -191,6 +201,9 @@ lWhFormScrapped.setOperatorName(nickName); lWhFormScrapped.setDealTime(dealTime); goodsBaseService.update(lWhFormScrapped); + + //褰撳簱瀛樺彉鍔ㄦ椂璋冪敤璇ユ柟娉� + lWhWarningCoreService.updateKuCun(Convert.toShort(warehouseType,(short) 0), warehouseId, allChangModelList, null, dealTime); return lWarehouseFlowId; } diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java index 7c0bff1..ebe999b 100644 --- a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java +++ b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferCoreService.java @@ -1,27 +1,25 @@ package com.consum.base.service; +import cn.hutool.core.convert.Convert; import com.consum.base.core.WhBusinessEnum; +import com.consum.base.core.service.LWhWarningCoreServiceImpl; import com.consum.base.core.utils.LockManage; -import com.consum.model.po.LGoodsUserRecord; -import com.consum.model.po.LWarehouseFlow; -import com.consum.model.po.LWhFormTransfer; -import com.consum.model.po.LWhGoodsRecord; -import com.consum.model.po.LWhGoodsRecordDetails; -import com.consum.model.po.LWhProcureModelUser; +import com.consum.model.po.*; import com.iplatform.model.po.S_user_core; import com.walker.infrastructure.utils.CollectionUtils; import com.walker.infrastructure.utils.DateUtils; import com.walker.infrastructure.utils.NumberGenerator; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import javax.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.interceptor.TransactionAspectSupport; /** * @ClassName LWhFormTransferCoreService @@ -52,7 +50,8 @@ private LWhGoodsRecordDetailsService lWhGoodsRecordDetailsService; @Resource private LGoodsUserRecordServiceImpl lGoodsUserRecordService; - + @Resource + private LWhWarningCoreServiceImpl lWhWarningCoreService; /** * 鎵ц璋冩嫧鍑哄簱鎿嶄綔 @@ -103,6 +102,7 @@ lWhFormTransfer.setOutputTime(dealTime); lWhFormTransfer.setOutWarehouseFlowId(lWarehouseFlowId); lWhFormTransferService.update(lWhFormTransfer); + log.info("璋冩嫧鍗曪細{} 鍑哄簱瀹屾垚", whFormTransferId); return; @@ -163,12 +163,14 @@ inwarehouseFlow.setDealTime(dealTime); lWarehouseFlowService.insert(inwarehouseFlow); + ArrayList<Long> allChangModelList = new ArrayList<>(); LWhGoodsRecord lWhGoodsRecord = new LWhGoodsRecord(); lWhGoodsRecord.setWarehouseFlowId(outWarehouseFlowId); List<LWhGoodsRecord> whGoodsRecordList = lWhGoodsRecordService.select(lWhGoodsRecord); for (LWhGoodsRecord whGoodsRecord : whGoodsRecordList) { Long oldRecordId = whGoodsRecord.getId(); Long baseGoodsModelsId = whGoodsRecord.getBaseGoodsModelsId(); + allChangModelList.add(baseGoodsModelsId); whGoodsRecord.setId(NumberGenerator.getLongSequenceNumber()); whGoodsRecord.setWarehouseType(inWarehouseType); whGoodsRecord.setWarehouseId(inWarehouseId); @@ -180,7 +182,7 @@ List<Long> outGoodsIds = getGoodsidByFlowId(outWarehouseFlowId, oldRecordId); // 搴撳瓨鐗╁搧璇︽儏锛圠_WH_GOODS锛変腑 鐘舵�佽缃负1 lWhGoodsService.modGoodsTransfering(outGoodsIds, inWarehouseType, inWarehouseId, inWarehouseName, goodsStatus); - if (businessType == 1){ + if (businessType == 1) { // 1閮ㄩ棬鍒嗗彂 姝ゆ椂瑕佸線 鐗╁搧浣跨敤璁板綍銆怢_GOODS_USER_RECORD銆戞坊鍔犳暟鎹� //鏌ヨ閮ㄩ棬鍒嗗彂浣跨敤浜� LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser(); @@ -257,6 +259,9 @@ lWhFormTransfer.setInOperatorName(nickName); lWhFormTransfer.setInTime(dealTime); lWhFormTransferService.update(lWhFormTransfer); + + //褰撳簱瀛樺彉鍔ㄦ椂璋冪敤璇ユ柟娉� + lWhWarningCoreService.updateKuCun(Convert.toShort(inWarehouseType, (short) 0), inWarehouseId, allChangModelList, null, dealTime); log.info("璋冩嫧鍗曪細{} 鍏ュ簱瀹屾垚", whFormTransferId); return; } 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 be803e4..a0a051d 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 @@ -68,7 +68,7 @@ paramts.put("costType", costType); } - sql.append(" ORDER BY wareWarn.id DESC "); + sql.append(" ORDER BY wareWarn.DEAL_TIME DESC "); return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil()); } @@ -87,7 +87,7 @@ 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_WHERE = " WHERE 1=1 and STATES=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)"; -- Gitblit v1.9.1