From 85ad0a996a588d87f4ff589ae9a83b714d8b2c7f Mon Sep 17 00:00:00 2001 From: luqingyang <lqy5492@163.com> Date: 星期四, 02 十一月 2023 09:56:21 +0800 Subject: [PATCH] fix:代码调整 --- consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java | 321 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 321 insertions(+), 0 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java new file mode 100644 index 0000000..149c587 --- /dev/null +++ b/consum-base/src/main/java/com/consum/base/service/LWhFormInventoryCoreService.java @@ -0,0 +1,321 @@ +package com.consum.base.service; + +import com.consum.base.core.CodeGeneratorEnum; +import com.consum.base.core.CodeGeneratorService; +import com.consum.base.core.WhBusinessEnum; +import com.consum.base.util.IdUtil; +import com.consum.model.po.*; +import com.iplatform.model.po.S_user_core; +import com.walker.infrastructure.utils.NumberGenerator; +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 org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @ClassName LWhFormInventoryCoreService + * @Author cy + * @Date 2023/11/1 + * @Description + * @Version 1.0 + **/ +@Slf4j +@Service +public class LWhFormInventoryCoreService { + private LWhFormInventoryGoodsServiceImpl lWhFormInventoryGoods; + private LWhFormOutputCoreService lWhFormOutputCoreService; + private CodeGeneratorService codeGeneratorService; + private LWhFormProcureService lWhFormProcureService; + private BaseWarehouseServiceImpl baseWarehouseService; + private LWhFormProcureGoodsService lWhFormProcureGoodsService; + private LWhProcureModelService lWhProcureModelService; + private BaseGoodsTemplateServiceImpl baseGoodsTemplateService; + private LWhGoodsService lWhGoodsService; + private LWhFormInventoryServiceImpl lWhFormInventoryService; + private LWhFormProcureCoreService lWhFormProcureCoreService; + private LWhFormOutputServiceImpl lWhFormOutputService; + + @Autowired + public LWhFormInventoryCoreService(LWhFormInventoryGoodsServiceImpl lWhFormInventoryGoods, + LWhFormOutputCoreService lWhFormOutputCoreService, + CodeGeneratorService codeGeneratorService, + LWhFormProcureService lWhFormProcureService, + BaseWarehouseServiceImpl baseWarehouseService, + LWhFormProcureGoodsService lWhFormProcureGoodsService, + LWhProcureModelService lWhProcureModelService, + BaseGoodsTemplateServiceImpl baseGoodsTemplateService, + LWhGoodsService lWhGoodsService, + LWhFormInventoryServiceImpl lWhFormInventoryService, + LWhFormProcureCoreService lWhFormProcureCoreService, + LWhFormOutputServiceImpl lWhFormOutputService + + ) { + this.lWhFormInventoryGoods = lWhFormInventoryGoods; + this.lWhFormOutputCoreService = lWhFormOutputCoreService; + this.codeGeneratorService = codeGeneratorService; + this.lWhFormProcureService = lWhFormProcureService; + this.baseWarehouseService = baseWarehouseService; + this.lWhFormProcureGoodsService = lWhFormProcureGoodsService; + this.lWhProcureModelService = lWhProcureModelService; + this.baseGoodsTemplateService = baseGoodsTemplateService; + this.lWhGoodsService = lWhGoodsService; + this.lWhFormInventoryService = lWhFormInventoryService; + this.lWhFormProcureCoreService = lWhFormProcureCoreService; + this.lWhFormOutputService = lWhFormOutputService; + } + + /** + * 鏍规嵁 鐩樼偣鍗� 鐢熸垚 鍑哄簱鍗� 鍜� 鍏ュ簱鍗� + * 鐩樼偣鍗曚腑 鐩樼泩鐗╁搧鐢熸垚鍏ュ簱鍗曪紝鐩樹簭鐢熸垚鍑哄簱鍗� + * + * @param whformInventoryId 鐩樼偣鍗昳d + * @return status true/false + * errMsg 閿欒娑堟伅 + */ + @Transactional(rollbackFor = Exception.class) + public String createInOutFormByInventoryId(Long whformInventoryId, S_user_core currentUser, FinSysTenantUser sysInfo) { + LWhFormInventory lWhFormInventory = lWhFormInventoryService.get(new LWhFormInventory(whformInventoryId)); + if (lWhFormInventory == null) { +// rtnMap.put("status", false); +// rtnMap.put("errMsg", "娌℃湁鎵惧埌鐩樼偣鍗�"); + return "娌℃湁鎵惧埌鐩樼偣鍗�"; + } + if (lWhFormInventory.getStates() != 1) { +// rtnMap.put("status", false); +// rtnMap.put("errMsg", "璇锋鏌ョ洏鐐瑰崟鐘舵��"); + return "璇锋鏌ョ洏鐐瑰崟鐘舵��"; + } + List<LWhFormInventoryGoods> lWhFormInventoryGoods = this.lWhFormInventoryGoods.getByInventoryId(whformInventoryId); + if (CollectionUtils.isEmpty(lWhFormInventoryGoods)) { +// rtnMap.put("status", false); +// rtnMap.put("errMsg", "娌℃湁鎵惧埌鐩樼偣鍗曠粨鏋滅墿鍝�"); + return "娌℃湁鎵惧埌鐩樼偣鍗曠粨鏋滅墿鍝�"; + } + Map<Integer, List<LWhFormInventoryGoods>> inventoryGoodsMap = lWhFormInventoryGoods.stream() + .filter(goods -> goods.getInventoryResult() == 2 || goods.getInventoryResult() == 3) + .collect(Collectors.groupingBy(LWhFormInventoryGoods::getInventoryResult)); + if (CollectionUtils.isEmpty(lWhFormInventoryGoods)) { +// rtnMap.put("status", true); + return null; + } + + Long warehouseId = lWhFormInventory.getWarehouseId(); + Long stopTime = lWhFormInventory.getStopTime(); + Map<String, Object> inOutMap = new HashMap<>(); + + for (Map.Entry<Integer, List<LWhFormInventoryGoods>> entry : inventoryGoodsMap.entrySet()) { + //鐩樼偣缁撴灉锛�1=姝e父锛�2=鐩樼泩锛�3=鐩樹簭锛� + Integer inventoryResult = entry.getKey(); + List<LWhFormInventoryGoods> inventoryGoods = entry.getValue(); + if (inventoryResult == 2) { + // 鍒涘缓鍏ュ簱鍗曞苟鍏ュ簱 + // 杩斿洖鍏ュ簱鍗曞彿 + Map<String, Object> rkMap = createInFormByInventoryId(warehouseId, stopTime, inventoryGoods, currentUser); + if (rkMap == null) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// throw new RuntimeException("鍒涘缓鍏ュ簱鍗曞け璐�"); + log.error("鍒涘缓鍏ュ簱鍗曞け璐�"); +// rtnMap.put("status", false); +// rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�"); + return "鍒涘缓鍏ュ簱鍗曞け璐�"; + } + Long inFormByInventoryId = (Long) inOutMap.get("inId"); + inOutMap.putAll(rkMap); + String errMsg = lWhFormProcureCoreService.doProcure(inFormByInventoryId, currentUser); + if (errMsg != null) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// throw new RuntimeException(errMsg); + log.error("鍒涘缓鍏ュ簱鍗曞け璐�"); +// rtnMap.put("status", false); +// rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�"); + return "鍒涘缓鍏ュ簱鍗曞け璐�"; + } + } else { + // 鍒涘缓鍑哄簱鍗曞苟鍑哄簱 + Map<String, Object> ckMap = createOutFormByInventoryId(warehouseId, stopTime, inventoryGoods, currentUser, sysInfo); + if (ckMap == null) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// throw new RuntimeException("鍒涘缓鍑哄簱鍗曞け璐�"); + log.error("鍒涘缓鍏ュ簱鍗曞け璐�"); +// rtnMap.put("status", false); +// rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�"); + return "鍒涘缓鍏ュ簱鍗曞け璐�"; + } + inOutMap.putAll(ckMap); + Long lWhFormOutputId = (Long) inOutMap.get("outId"); + //2.鏍规嵁鍑哄簱鍗曞嚭搴� + Long lWarehouseFlowId = lWhFormOutputCoreService.outFormByTransId(lWhFormOutputId, currentUser, stopTime); + if (lWarehouseFlowId == null) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// throw new RuntimeException("鍒涘缓鍑哄簱鍗曞け璐�"); + log.error("鍒涘缓鍏ュ簱鍗曞け璐�"); +// rtnMap.put("status", false); +// rtnMap.put("errMsg", "鍒涘缓鍏ュ簱鍗曞け璐�"); + return "鍒涘缓鍏ュ簱鍗曞け璐�"; + } + } + } + // + lWhFormInventory = new LWhFormInventory(whformInventoryId); + lWhFormInventory.setStates(2); + lWhFormInventory.setInWarehouseFormId((Long) inOutMap.get("inId")); + lWhFormInventory.setInBusinessFormCode((String) inOutMap.get("inCode")); + lWhFormInventory.setOutWarehouseFormId((Long) inOutMap.get("outId")); + lWhFormInventory.setOutBusinessFormCode((String) inOutMap.get("outCode")); + lWhFormInventoryService.update(lWhFormInventory); + + return null; + } + + /** + * 鏍规嵁淇℃伅鍒涘缓鍏ュ簱鍗� + * + * @param warehouseId 浠撳簱ID + * @param procureTime 閲囪喘鏃堕棿 + * @param currentUser + */ + private Map<String, Object> createInFormByInventoryId(Long warehouseId, Long procureTime, List<LWhFormInventoryGoods> inventoryGoodsList, + S_user_core currentUser) { + if (CollectionUtils.isEmpty(inventoryGoodsList)) { + return null; + } + Long whFormProcureId = NumberGenerator.getLongSequenceNumber(); + BaseWarehouse baseWarehouse = baseWarehouseService.getById(warehouseId); + LWhFormProcure lWhFormProcure = new LWhFormProcure(); + lWhFormProcure.setId(whFormProcureId); + String inCode = codeGeneratorService.createCodeByPrefix(CodeGeneratorEnum.Procure_Warehouse.getValue(), 10); + lWhFormProcure.setBusinessFormCode(inCode); + lWhFormProcure.setWarehouseId(warehouseId); + lWhFormProcure.setWarehouseName(baseWarehouse.getWarehouseName()); + lWhFormProcure.setBuyerId(currentUser.getId()); + lWhFormProcure.setBuyerName(currentUser.getNick_name()); + lWhFormProcure.setProcureTime(procureTime); + lWhFormProcure.setProcureDoc(null); + lWhFormProcure.setBuyType(2); + lWhFormProcure.setStates(1); + lWhFormProcure.setAgencyId(baseWarehouse.getAgencyId()); + lWhFormProcure.setAgencyName(baseWarehouse.getAgencyName()); + int result = lWhFormProcureService.insert(lWhFormProcure); + if (result == 0) { + return null; + } + + ArrayList<LWhFormProcureGoods> procureGoodList = new ArrayList<>(); + ArrayList<LWhProcureModel> whProcureModeLlist = new ArrayList<>(); + + for (LWhFormInventoryGoods inventoryGoods : inventoryGoodsList) { + Long baseGoodsModelsId = inventoryGoods.getBaseGoodsModelsId(); + Long baseGoodsTemplateId = inventoryGoods.getBaseGoodsTemplateId(); + //鏌ヨ鍨嬪彿淇℃伅 + Map<String, Object> tempGoodsInfo = baseGoodsTemplateService.queryGoodsInfoByModelId(baseGoodsModelsId); + Long baseCategoryId = Long.valueOf(tempGoodsInfo.get("categoryid") + ""); + + LWhFormProcureGoods procureGood = new LWhFormProcureGoods(); + long fromProcureGoodsId = NumberGenerator.getLongSequenceNumber(); + procureGood.setId(fromProcureGoodsId); + procureGood.setWhFormProcureId(whFormProcureId); + procureGood.setBaseCategoryId(baseCategoryId); + procureGood.setBaseGoodsTemplateId(baseGoodsTemplateId); + procureGood.setGoodsTemplateName(null); + procureGood.setSupplier(null); + procureGood.setSort(null); + + Integer counts = inventoryGoods.getErrorCounts(); + if (counts == null || counts <= 0) { + continue; + } + // 鏌ヨ鍨嬪彿搴撳瓨 + int goodsModelNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, (short) 1, null); + LWhProcureModel model = new LWhProcureModel(); + model.setId(NumberGenerator.getLongSequenceNumber()); + model.setFromProcureGoodsId(fromProcureGoodsId); + model.setBusinessType(WhBusinessEnum.CAIGOU.getValue() + 0); + model.setBusinessId(whFormProcureId); + model.setBaseGoodsModelsId(baseGoodsModelsId); + model.setPrice(0l); + model.setCounts(counts); + model.setWorehouseCount(goodsModelNum); + model.setSupplier(null); + whProcureModeLlist.add(model); + procureGoodList.add(procureGood); + } + lWhFormProcureGoodsService.insertBatch(procureGoodList); + lWhProcureModelService.insertBatch(whProcureModeLlist); + + HashMap<String, Object> rtnMap = new HashMap<>(); + rtnMap.put("inId", whFormProcureId); + rtnMap.put("inCode", inCode); + return rtnMap; + } + + /** + * 鏍规嵁淇℃伅鍒涘缓鍑哄簱鍗� + * + * @param warehouseId 浠撳簱ID + * @param procureTime 鍑哄簱鏃堕棿 + * @param currentUser + */ + private Map<String, Object> createOutFormByInventoryId(Long warehouseId, Long procureTime, List<LWhFormInventoryGoods> inventoryGoodsList, + S_user_core currentUser, FinSysTenantUser sysInfo) { + if (CollectionUtils.isEmpty(inventoryGoodsList)) { + return null; + } + //1.鏂板鍑哄簱鍗曡褰� + LWhFormOutput lWhFormOutput = new LWhFormOutput(); + //鍑哄叆搴搃d + long lWhFormOutputId = IdUtil.generateId(); + lWhFormOutput.setId(lWhFormOutputId); + lWhFormOutput.setWarehouseId(warehouseId); + //鏍规嵁浠撳簱id鏌ヨ浠撳簱 + BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId); + if (warehouse == null) { + log.error("浠撳簱id涓嶅瓨鍦�"); + return null; + } + lWhFormOutput.setWarehouseName(warehouse.getWarehouseName()); + String outCode = codeGeneratorService.createCodeByPrefix(CodeGeneratorEnum.OutPut_Warehouse.getValue(), 10); + lWhFormOutput.setOutputCode(outCode); + lWhFormOutput.setOutputName("鐩樼偣鍑哄簱"); + lWhFormOutput.setAgencyId(Long.valueOf(sysInfo.getTenantId())); + lWhFormOutput.setAgencyName(sysInfo.getTenantName()); + lWhFormOutput.setOperatorId(sysInfo.getId()); + lWhFormOutput.setOperatorName(sysInfo.getUserName()); + + lWhFormOutput.setDealTime(procureTime); + lWhFormOutput.setStates(1); + int flag1 = lWhFormOutputService.insert(lWhFormOutput); + if (flag1 != 1) { + return null; + } + for (LWhFormInventoryGoods inventoryGoods : inventoryGoodsList) { + Long baseGoodsModelsId = inventoryGoods.getBaseGoodsModelsId(); + Integer counts = inventoryGoods.getErrorCounts(); + if (counts == null || counts <= 0) { + continue; + } + //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨 + int goodsNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, (short) 1, null); + //鏂板L_WH_PROCURE_MODEL璁板綍 + LWhProcureModel lWhProcureModel = new LWhProcureModel(); + lWhProcureModel.setId(IdUtil.generateId()); + lWhProcureModel.setBusinessType(3); + lWhProcureModel.setBaseGoodsModelsId(baseGoodsModelsId); + lWhProcureModel.setCounts(counts); + lWhProcureModel.setWorehouseCount(goodsNum); + lWhProcureModelService.insert(lWhProcureModel); + } + HashMap<String, Object> rtnMap = new HashMap<>(); + rtnMap.put("outId", lWhFormOutputId); + rtnMap.put("outCode", outCode); + return rtnMap; + + } +} -- Gitblit v1.9.1