From 8fc8b4788ed8be27ff6aae1cdd3fe9a584972ae3 Mon Sep 17 00:00:00 2001 From: cy <1664593601@qq.com> Date: 星期三, 22 十一月 2023 18:41:05 +0800 Subject: [PATCH] feat: 物品统计;库存预警模板下载、上传、下载异常文件 --- consum-base/src/main/java/com/consum/base/service/LWhFormOutputCoreService.java | 147 +++++++++++++++++++++++++++++------------------- 1 files changed, 89 insertions(+), 58 deletions(-) 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 49df2b7..c74b9a0 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 @@ -4,45 +4,62 @@ import com.consum.base.core.CodeGeneratorService; import com.consum.base.core.WhBusinessEnum; import com.consum.base.core.param.BaseWarehouseParam1; -import com.consum.base.core.util.LockManage; -import com.consum.model.po.*; +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.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 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 javax.annotation.Resource; -import java.util.List; -import java.util.Map; - /** * @ClassName WhFormOutputCoreService - * @Author cy * @Date 2023/10/26 * @Description * @Version 1.0 **/ @Slf4j @Service +@Transactional(rollbackFor = Exception.class) public class LWhFormOutputCoreService { - @Resource + private BaseGoodsTemplateServiceImpl baseGoodsTemplateService; - @Resource private LWhGoodsService lWhGoodsService; - @Resource private CodeGeneratorService codeGeneratorService; - @Resource private LWhProcureModelService lWhProcureModelService; - @Resource - private LWhFormTransferService lWhFormTransferService; - @Resource private LWhFormOutputService lWhFormOutputService; - @Resource 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) { + this.baseGoodsTemplateService = baseGoodsTemplateService; + this.lWhGoodsService = lWhGoodsService; + this.codeGeneratorService = codeGeneratorService; + this.lWhProcureModelService = lWhProcureModelService; + this.lWhFormOutputService = lWhFormOutputService; + this.lWarehouseFlowService = lWarehouseFlowService; + this.lWhGoodsRecordDetailsService = lWhGoodsRecordDetailsService; + this.lWhGoodsRecordService = lWhGoodsRecordService; + } + /** * 鏍规嵁 璋冩嫧鍗� 鐢熸垚 鍑哄簱鍗� @@ -51,16 +68,22 @@ * @return 鍑哄簱鍗旾d */ @Transactional(rollbackFor = Exception.class) - public Long createOutFormByTransId(Long whFormTransferId, S_user_core currentUser) { + public Long createOutFormByTransId(Long whFormTransferId, S_user_core currentUser, Long dealTime) { if (whFormTransferId == null) { return null; } LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(whFormTransferId); - lWhFormTransfer = lWhFormTransferService.get(lWhFormTransfer); + lWhFormTransfer = lWhFormOutputService.get(lWhFormTransfer); if (lWhFormTransfer == null || lWhFormTransfer.getStates() != 0) { log.error("璋冩嫧澶辫触锛佽妫�鏌ヨ皟鎷ㄥ崟鐘舵��"); return null; } + // 鏌ヨ璇ヨ皟鎷ㄥ崟鏄惁宸茬粡鐢熸垚浜嗗嚭搴撳崟 + Long outWarehouseFormIdT = lWhFormOutputService.queyrIdByTransferId(whFormTransferId); + if (outWarehouseFormIdT != null) { + return outWarehouseFormIdT; + } + //鐢宠璋冩嫧鐨勭墿鍝� List<LWhProcureModel> goodsModelNumList = lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, whFormTransferId); if (CollectionUtils.isEmpty(goodsModelNumList)) { @@ -71,36 +94,18 @@ String outWarehouseName = lWhFormTransfer.getOutWarehouseName(); // 鍑哄簱鍗旾D - Long outWarehouseFormId = NumberGenerator.getLongSequenceNumberNano(); + outWarehouseFormIdT = NumberGenerator.getLongSequenceNumberNano(); + Long outWarehouseFormId = outWarehouseFormIdT; // 璋冩嫧鍗曠墿鍝� 宸茬粡鎸夊瀷鍙峰垎濂戒簡 goodsModelNumList.forEach(itemModelInfo -> { - // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鐨勬煇涓瀷鍙� - Long baseGoodsModelsId = itemModelInfo.getBaseGoodsModelsId(); - // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鏌愪釜鍨嬪彿鐨勬暟閲� - Integer counts = itemModelInfo.getCounts(); - //閫氳繃LockManage鑾峰緱閿� - //鍥犱负鏄牴鎹皟鎷ㄧ敓鎴愮殑 鎵�浠ユ澶勪笉鐢ㄦ牎楠屽簱瀛� -// Object warehouseModelLockObj = LockManage.acquireLock(outWarehouseId, baseGoodsModelsId); - // synchronized (warehouseModelLockObj) { - // 鑾峰緱閿佸悗鏌ヨ璇ュ瀷鍙风殑鏈熷垵鏁伴噺 -// int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType); -// if (goodsModelNum < counts) { -// log.error("鍑哄簱澶辫触锛佸瀷鍙穥} 鐨勬暟閲忎笉瓒筹紝闇�瑕佽皟鎷▄}涓紝浠撳簱涓幇瀛榹}涓�", baseGoodsModelsId, counts, goodsModelNum); -// // 鎵嬪姩鍥炴粴 -// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); -// throw new RuntimeException("鍑哄簱澶辫触!鍨嬪彿鏁伴噺涓嶈冻"); -// } // 澶嶇敤瀵硅薄 itemModelInfo.setId(NumberGenerator.getLongSequenceNumber()); itemModelInfo.setFromProcureGoodsId(null); itemModelInfo.setBusinessType(3); itemModelInfo.setBusinessId(outWarehouseFormId); itemModelInfo.setPrice(null); -// itemModelInfo.setCounts(counts); -// itemModelInfo.setWorehouseCount(goodsModelNum); itemModelInfo.setSupplier(null); -// } }); lWhProcureModelService.insertBatch(goodsModelNumList); @@ -110,7 +115,7 @@ whFormOutput.setId(outWarehouseFormId); // 姝ゆ椂骞舵病鏈夊嚭搴� whFormOutput.setWarehouseFlowId(null); - whFormOutput.setBusinessFormCode(codeGeneratorService.createCodeByPrefix(CodeGeneratorEnum.OutPut_Warehouse.getValue(), 4)); + whFormOutput.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.OutPut_Warehouse)); //杩涘嚭搴撴祦姘存�昏〃 鍏ュ簱鍗旾D whFormOutput.setInWarehouseFlowId(null); // 璋冩嫧鍗旾D(璋冩嫧鏃堕渶瑕�) @@ -119,11 +124,11 @@ whFormOutput.setOutputName("璋冩嫧鍑哄簱"); whFormOutput.setWarehouseId(outWarehouseId); whFormOutput.setWarehouseName(outWarehouseName); + // 杩欐牱灏辨煡璇笉鍒拌鏉¤褰� whFormOutput.setAgencyId(null); whFormOutput.setAgencyName(null); whFormOutput.setOperatorId(currentUser.getId()); whFormOutput.setOperatorName(currentUser.getNick_name()); - long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis()); whFormOutput.setDealTime(dealTime); whFormOutput.setStates(1); @@ -141,10 +146,10 @@ * 鏍规嵁 鍑哄簱鍗� 鍑哄簱 * * @param outWarehouseFormId 鍑哄簱鍗旾d - * @return + * @return 娴佹按璁板綍鎬昏〃ID */ @Transactional(rollbackFor = Exception.class) - public Long outFormByTransId(Long outWarehouseFormId, S_user_core currentUser) { + public Long outFormByTransId(Long outWarehouseFormId, WhBusinessEnum businessType, S_user_core currentUser, Long dealTime) { if (outWarehouseFormId == null) { return null; } @@ -161,33 +166,45 @@ return null; } // 瑕佸嚭鐗╁搧鐨勪粨搴搃d + Integer outWarehouseType = lWhFormOutput.getOutWarehouseType(); Long outWarehouseId = lWhFormOutput.getWarehouseId(); String warehouseName = lWhFormOutput.getWarehouseName(); + Integer inWarehouseType = lWhFormOutput.getInWarehouseType(); + Long inWarehouseId = lWhFormOutput.getInWarehouseId(); + String inWarehouseName = lWhFormOutput.getInWarehouseName(); Long userId = currentUser.getId(); String nickName = currentUser.getNick_name(); - long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis()); + // 娴佹按璁板綍鎬昏〃ID long lWarehouseFlowId = NumberGenerator.getLongSequenceNumberNano(); // 娴佹按璁板綍鎬昏〃涓� 涓氬姟ID 銆傝皟鎷ㄥ崟鏃� 淇濆瓨璋冩嫧鍗昳d 鍑哄簱鍗曟椂 淇濆瓨鍑哄簱鍗昳d long lWarehouseFlowBusinessId = outWarehouseFormId; // 鐗╁搧鐘舵�侊紙0=鍦ㄩ�旇皟鎷紱1=鍏ュ簱鏈垎鍙戯紱2=宸蹭笅鍙戯紱3=鎶ュ簾锛� - short queryModelStatusT = 1; + Integer queryModelStatusT = 1; //閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛� - Short buyTypeT = null; + Integer buyTypeT = null; + Integer modGoodsTransferingStatusT = null; String outputCode = lWhFormOutput.getOutputCode(); if ((BaseWarehouseParam1.In_OutPutTypeEnum.Transfer_Output.getValue() + "").equals(outputCode)) { //璋冩嫧鍑哄簱 queryModelStatusT = 1; buyTypeT = 1; lWarehouseFlowBusinessId = lWhFormOutput.getTransBusinessId(); + modGoodsTransferingStatusT = 0; } else if ((BaseWarehouseParam1.In_OutPutTypeEnum.Dept_Lending_Out.getValue() + "").equals(outputCode)) { // 閮ㄩ棬浠撳簱 鍒嗗彂鍑哄簱 // queryModelStatusT = 2; + } else if ((BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue() + "").equals(outputCode)) { + // 闆舵槦鍑哄簱 + queryModelStatusT = 1; + buyTypeT = null; + modGoodsTransferingStatusT = 4; } - short queryModelStatus = queryModelStatusT; - Short buyType = buyTypeT; + Integer queryModelStatus = queryModelStatusT; + Integer buyType = buyTypeT; + Integer modGoodsTransferingStatus = modGoodsTransferingStatusT; goodsModelNumList.forEach(itemModelInfo -> { // 闇�瑕佽皟鎷ㄧ殑鐗╁搧鐨勬煇涓瀷鍙� @@ -225,10 +242,11 @@ whGoodsRecord.setThisCount(counts); //閫氳繃LockManage鑾峰緱閿� - Object warehouseModelLockObj = LockManage.acquireLock(outWarehouseId, baseGoodsModelsId); + Object warehouseModelLockObj = LockManage.acquireLock(outWarehouseType, outWarehouseId, baseGoodsModelsId); + List<Long> outGoodsId = null; synchronized (warehouseModelLockObj) { // 鑾峰緱閿佸悗鏌ヨ璇ュ瀷鍙风殑鏈熷垵鏁伴噺 - int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType); + int goodsModelNum = lWhGoodsService.queryGoodsModelNum(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType); if (goodsModelNum < counts) { log.error("鍑哄簱澶辫触锛佸瀷鍙穥} 鐨勬暟閲忎笉瓒筹紝闇�瑕佽皟鎷▄}涓紝浠撳簱涓幇瀛榹}涓�", baseGoodsModelsId, counts, goodsModelNum); // 鎵嬪姩鍥炴粴 @@ -239,20 +257,25 @@ whGoodsRecord.setEndCount(goodsModelNum - counts); //鍑哄簱鏃跺�欙紝鎸� 鍏堝叆搴撶殑鍏堝嚭搴擄紝鍚屾椂鍏ュ簱鐨勶紝鎸変环鏍奸珮鐨勫厛鍑哄簱 - List<Long> outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType, goodsModelNum); - outGoodsId.forEach(whGoodsId -> { - - }); - + outGoodsId = lWhGoodsService.queryOutGoodsId(outWarehouseType, outWarehouseId, baseGoodsModelsId, queryModelStatus, buyType, + counts); + lWhGoodsService.modGoodsTransfering(outGoodsId, inWarehouseType, inWarehouseId, inWarehouseName, modGoodsTransferingStatus); + // 鎵归噺鎻掑叆 杩涘嚭搴撴祦姘存槑缁哰L_WH_GOODS_RECORD_DETAILS] + lWhGoodsRecordDetailsService.sameGoodsInsertMore(outGoodsId, whGoodsRecordId, (short) 0); } - + long totalAmount = lWhGoodsService.queryGoodsPriceById(outGoodsId); + LWhProcureModel lWhProcureModel = new LWhProcureModel(itemModelInfo.getId()); + whGoodsRecord.setTotalPrice(totalAmount); + lWhGoodsRecordService.insert(whGoodsRecord); + lWhProcureModel.setTotalAmount(totalAmount); + lWhProcureModelService.update(lWhProcureModel); }); LWarehouseFlow warehouseFlow = new LWarehouseFlow(); warehouseFlow.setId(lWarehouseFlowId); warehouseFlow.setWarehouseId(outWarehouseId); warehouseFlow.setWarehouseName(warehouseName); warehouseFlow.setThisType(2); - warehouseFlow.setBusinessType(WhBusinessEnum.DIAOBO.getValue() + 0); + warehouseFlow.setBusinessType(businessType.getValue() + 0); warehouseFlow.setBusinessFormId(lWarehouseFlowBusinessId); warehouseFlow.setOperatorId(userId); @@ -261,8 +284,16 @@ // 鎻掑叆娴佹按鎬昏〃 int flowInsertFlag = lWarehouseFlowService.insert(warehouseFlow); if (flowInsertFlag == 0) { - return 0l; + return null; } - return 1l; + // 鍚戝嚭搴撳崟 鎻掑叆 杩涘嚭搴撴祦姘存�昏〃ID + lWhFormOutput = new LWhFormOutput(outWarehouseFormId); + lWhFormOutput.setStates(2); + lWhFormOutput.setWarehouseFlowId(lWarehouseFlowId); + lWhFormOutputService.update(lWhFormOutput); + + return lWarehouseFlowId; } + + } -- Gitblit v1.9.1