From f6017e317b02301e0c0f811d6674ccd6271f6a22 Mon Sep 17 00:00:00 2001 From: futian.liu <liufutianyoo@163.com> Date: 星期一, 18 十二月 2023 17:20:48 +0800 Subject: [PATCH] 删除仓库时物品检查 --- consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java | 174 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 92 insertions(+), 82 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java index 5f65e91..f0777aa 100644 --- a/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java +++ b/consum-base/src/main/java/com/consum/base/service/LWarehouseFlowCoreService.java @@ -1,5 +1,24 @@ package com.consum.base.service; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; +import org.springframework.jdbc.core.namedparam.SqlParameterSource; +import org.springframework.jdbc.core.simple.SimpleJdbcCall; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import com.consum.base.core.utils.IdUtil; import com.consum.base.core.utils.LockManage; import com.consum.model.po.BaseWarehouse; import com.consum.model.po.LWarehouseFlow; @@ -7,17 +26,8 @@ import com.consum.model.po.LWhGoodsRecord; import com.consum.model.po.LWhProcureModel; 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.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; -import org.springframework.jdbc.core.namedparam.SqlParameterSource; -import org.springframework.jdbc.core.simple.SimpleJdbcCall; -import org.springframework.stereotype.Service; /** * @ClassName LWarehouseFlowService @@ -27,24 +37,34 @@ **/ @Service @Slf4j +@Transactional(propagation = Propagation.REQUIRED) public class LWarehouseFlowCoreService { private final JdbcTemplate jdbcTemplate; private SimpleJdbcCall simpleJdbcCall; private LWarehouseFlowService lWarehouseFlowService; private LWhGoodsService lWhGoodsService; - private LWhGoodsRecordService lWhGoodsRecordService; - private BaseGoodsTemplateServiceImpl baseGoodsTemplateService; + private LWhGoodsRecordService lWhGoodsRecordServiceImpl; + private BaseGoodsTemplateService baseGoodsTemplateService; + + @Value("${spring.datasource.dataBaseName}") + private String dataBaseName; + + @PostConstruct + public void init() { + this.simpleJdbcCall = + new SimpleJdbcCall(jdbcTemplate).withCatalogName(dataBaseName).withProcedureName("InsertL_WH_GOODS"); + } @Autowired - public LWarehouseFlowCoreService(JdbcTemplate jdbcTemplate, LWarehouseFlowService lWarehouseFlowService, LWhGoodsService lWhGoodsService, - BaseGoodsTemplateServiceImpl baseGoodsTemplateService, LWhGoodsRecordService lWhGoodsRecordService) { + public LWarehouseFlowCoreService(JdbcTemplate jdbcTemplate, LWarehouseFlowService lWarehouseFlowService, + LWhGoodsService lWhGoodsService, BaseGoodsTemplateService baseGoodsTemplateService, + LWhGoodsRecordService lWhGoodsRecordServiceImpl) { this.jdbcTemplate = jdbcTemplate; this.lWarehouseFlowService = lWarehouseFlowService; this.baseGoodsTemplateService = baseGoodsTemplateService; this.lWhGoodsService = lWhGoodsService; - this.lWhGoodsRecordService = lWhGoodsRecordService; - this.simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("InsertL_WH_GOODS"); + this.lWhGoodsRecordServiceImpl = lWhGoodsRecordServiceImpl; } /** @@ -54,7 +74,8 @@ * @param warehouseFlow * @return */ - public int buyInsertWareFlow(List<LWhProcureModel> goodsModelNumList, LWhFormProcure lWhFormProcure, LWarehouseFlow warehouseFlow) { + public int buyInsertWareFlow(List<LWhProcureModel> goodsModelNumList, LWhFormProcure lWhFormProcure, + LWarehouseFlow warehouseFlow) { if (CollectionUtils.isEmpty(goodsModelNumList)) { log.error("娌℃湁瑕佸叆搴撶殑鐗╁搧"); return 0; @@ -69,41 +90,40 @@ Long dealTime = warehouseFlow.getDealTime(); BaseWarehouse baseWarehouses = lWarehouseFlowService.get(new BaseWarehouse(warehouseId)); String warehouseName = baseWarehouses.getWarehouseName(); - //閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛� + // 閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛� short buyType = lWhFormProcure.getBuyType().shortValue(); - //閲囪喘鏃堕棿 - Long procureTime = lWhFormProcure.getProcureTime(); - + // 閲囪喘鏃堕棿 + Long procureTime2 = lWhFormProcure.getProcureTime(); + Long procureTime = procureTime2 == null ? dealTime : procureTime2; // 鎻掑叆娴佹按鎬昏〃 int flowInsertFlag = lWarehouseFlowService.insert(warehouseFlow); if (flowInsertFlag == 0) { return 0; } - //缁熻鍚勫瀷鍙锋暟閲� - Map<Long, Integer> countsSumByBaseGoodsModelsId = goodsModelNumList.stream() - .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId, - Collectors.summingInt(LWhProcureModel::getCounts))); + // 缁熻鍚勫瀷鍙锋暟閲� + Map<Long, Integer> countsSumByBaseGoodsModelsId = goodsModelNumList.stream().collect(Collectors + .groupingBy(LWhProcureModel::getBaseGoodsModelsId, Collectors.summingInt(LWhProcureModel::getCounts))); Map<Long, List<LWhProcureModel>> sameModelList = goodsModelNumList.stream() // 鎸夊瀷鍙峰垎 .collect(Collectors.groupingBy(LWhProcureModel::getBaseGoodsModelsId)); countsSumByBaseGoodsModelsId.forEach((baseGoodsModelsId, modelCount) -> { - //鏌ヨ鍨嬪彿淇℃伅 + // 鏌ヨ鍨嬪彿淇℃伅 Map<String, Object> tempGoodsInfo = baseGoodsTemplateService.queryGoodsInfoByModelId(baseGoodsModelsId); - //浠峰�肩被鍨� - String classificationObj = (String) tempGoodsInfo.get("classification"); + // 浠峰�肩被鍨� + String classificationObj = (String)tempGoodsInfo.get("classification"); Short classificationT = 3; if (classificationObj != null) { - classificationT = (short) ((classificationObj).charAt(0) - 64); + classificationT = (short)((classificationObj).charAt(0) - 64); } short classification = classificationT; - Long tempGoodsId = (Long) tempGoodsInfo.get("goodsid"); - String goodsName = (String) tempGoodsInfo.get("goodsname"); - String modelName = (String) tempGoodsInfo.get("modelname"); - String goodsUnit = (String) tempGoodsInfo.get("unit"); + Long tempGoodsId = (Long)tempGoodsInfo.get("goodsid"); + String goodsName = (String)tempGoodsInfo.get("goodsname"); + String modelName = (String)tempGoodsInfo.get("modelname"); + String goodsUnit = (String)tempGoodsInfo.get("unit"); // 鎻掑叆 鍚勮鏍肩墿鍝佺殑杩涘嚭搴撹褰� L_WH_GOODS_RECORD - long whGoodsRecordId = NumberGenerator.getLongSequenceNumberNano(); + long whGoodsRecordId = IdUtil.generateId(); LWhGoodsRecord whGoodsRecord = new LWhGoodsRecord(); whGoodsRecord.setId(whGoodsRecordId); whGoodsRecord.setWarehouseId(warehouseId); @@ -114,85 +134,75 @@ whGoodsRecord.setBaseGoodsModelsId(baseGoodsModelsId); whGoodsRecord.setBaseGoodsModelsName(modelName); whGoodsRecord.setDealTime(dealTime); - //鏈璋冩暣绫诲瀷 1=璋冨锛�2=璋冨噺 + // 鏈璋冩暣绫诲瀷 1=璋冨锛�2=璋冨噺 whGoodsRecord.setThisType(1); - //閫氳繃LockManage鑾峰緱閿� + // 閫氳繃LockManage鑾峰緱閿� Object warehouseModelLockObj = LockManage.acquireLock(warehouseType, warehouseId, baseGoodsModelsId); synchronized (warehouseModelLockObj) { // 鑾峰緱閿佸悗鏌ヨ璇ュ瀷鍙风殑鏈熷垵鏁伴噺 - int goodsModelNum = lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseId, baseGoodsModelsId, 1, null); + List<Long> warehouseIds = new ArrayList<>(Arrays.asList(warehouseId)); + int goodsModelNum = + lWhGoodsService.queryGoodsModelNum(warehouseType, warehouseIds, baseGoodsModelsId, 1, null); whGoodsRecord.setInitialCount(goodsModelNum); whGoodsRecord.setThisCount(modelCount); whGoodsRecord.setEndCount(goodsModelNum + modelCount); long totalPrice = 0; - //灏嗗悓鍨嬪彿鐨勭墿鍝佹彃鍏� 搴撳瓨鐗╁搧璇︽儏 + // 灏嗗悓鍨嬪彿鐨勭墿鍝佹彃鍏� 搴撳瓨鐗╁搧璇︽儏 List<LWhProcureModel> lWhProcureModels = sameModelList.get(baseGoodsModelsId); for (LWhProcureModel item : lWhProcureModels) { - //渚涘簲鍟� + // 渚涘簲鍟� String supplier = item.getSupplier(); - //浠锋牸 + // 浠锋牸 Long price = item.getPrice(); - //鐗╁搧涓暟 + // 鐗╁搧涓暟 Integer counts = item.getCounts(); - totalPrice = totalPrice + counts*price; - sameGoodsInsertMore(warehouseFlowId, warehouseType, warehouseId, whGoodsRecordId, (short) 1, warehouseName, - classification, tempGoodsId, goodsName, baseGoodsModelsId, modelName, - supplier, buyType, goodsUnit, price, procureTime, 1, dealTime, counts); - }; + totalPrice = totalPrice + counts * price; + sameGoodsInsertMore(warehouseFlowId, warehouseType, warehouseId, whGoodsRecordId, (short)1, + warehouseName, classification, tempGoodsId, goodsName, baseGoodsModelsId, modelName, supplier, + buyType, goodsUnit, price, procureTime, 1, dealTime, counts); + } ; whGoodsRecord.setTotalPrice(totalPrice); } - lWhGoodsRecordService.insert(whGoodsRecord); + lWhGoodsRecordServiceImpl.insert(whGoodsRecord); }); return 1; } - /** * 鍚屾牱瑙勬牸鐨勭墿鍝� 鎻掑叆澶氭锛� 鍚屾椂灏嗕富閿褰曞湪 杩涘嚭搴撴祦姘存槑缁嗐�怢_WH_GOODS_RECORD_DETAILS銆�, 鏇存柊 鐗╁搧浠撳簱淇濈璁板綍銆怢_GOODS_WH_RECORD銆� * - * @param pWarehouseId 浠撳簱id - * @param pWarehouseName 浠撳簱鍚嶇О - * @param pCostType 鐗╁搧浠峰�肩被鍨� + * @param pWarehouseId 浠撳簱id + * @param pWarehouseName 浠撳簱鍚嶇О + * @param pCostType 鐗╁搧浠峰�肩被鍨� * @param pBaseGoodsTemplateId 鐗╁搧妯℃澘ID - * @param pGoodsTemplateName 鐗╁搧妯℃澘鍚嶇О - * @param pBaseGoodsModelsId 鐗╁搧鍨嬪彿ID + * @param pGoodsTemplateName 鐗╁搧妯℃澘鍚嶇О + * @param pBaseGoodsModelsId 鐗╁搧鍨嬪彿ID * @param pBaseGoodsModelsName 鐗╁搧鍨嬪彿鍚嶇О - * @param pUnit 鐗╁搧鍗曚綅 - * @param pSupplier 鐗╁搧渚涘簲鍟� - * @param pBuyType 鐗╁搧璐拱绫诲瀷 - * @param pPrice 鐗╁搧浠锋牸 - * @param pProcureDate 閲囪喘鏃ユ湡 - * @param pStates 鐘舵�� - * @param pTimes 鎻掑叆鏉℃暟 + * @param pUnit 鐗╁搧鍗曚綅 + * @param pSupplier 鐗╁搧渚涘簲鍟� + * @param pBuyType 鐗╁搧璐拱绫诲瀷 + * @param pPrice 鐗╁搧浠锋牸 + * @param pProcureDate 閲囪喘鏃ユ湡 + * @param pStates 鐘舵�� + * @param pTimes 鎻掑叆鏉℃暟 */ - public void sameGoodsInsertMore(long pWarehouseFlowId, Integer warehouseType, long pWarehouseId, long pWhGoodsRecordId, short pRecordType, - String pWarehouseName, short pCostType, - long pBaseGoodsTemplateId, String pGoodsTemplateName, long pBaseGoodsModelsId, - String pBaseGoodsModelsName, String pSupplier, short pBuyType, - String pUnit, long pPrice, long pProcureDate, - int pStates, long pDealTime, int pTimes) { - SqlParameterSource in = new MapSqlParameterSource() - .addValue("p_WAREHOUSE_FLOW_ID", pWarehouseFlowId) - .addValue("p_WAREHOUSE_TYPE", warehouseType) - .addValue("p_WAREHOUSE_ID", pWarehouseId) - .addValue("p_WH_GOODS_RECORD_ID", pWhGoodsRecordId) - .addValue("p_RECORD_TYPE", pRecordType) - .addValue("p_WAREHOUSE_NAME", pWarehouseName) - .addValue("p_COST_TYPE", pCostType) + public void sameGoodsInsertMore(long pWarehouseFlowId, Integer warehouseType, long pWarehouseId, + long pWhGoodsRecordId, short pRecordType, String pWarehouseName, short pCostType, long pBaseGoodsTemplateId, + String pGoodsTemplateName, long pBaseGoodsModelsId, String pBaseGoodsModelsName, String pSupplier, + short pBuyType, String pUnit, long pPrice, long pProcureDate, int pStates, long pDealTime, int pTimes) { + SqlParameterSource in = new MapSqlParameterSource().addValue("p_WAREHOUSE_FLOW_ID", pWarehouseFlowId) + .addValue("p_WAREHOUSE_TYPE", warehouseType).addValue("p_WAREHOUSE_ID", pWarehouseId) + .addValue("p_WH_GOODS_RECORD_ID", pWhGoodsRecordId).addValue("p_RECORD_TYPE", pRecordType) + .addValue("p_WAREHOUSE_NAME", pWarehouseName).addValue("p_COST_TYPE", pCostType) .addValue("p_BASE_GOODS_TEMPLATE_ID", pBaseGoodsTemplateId) .addValue("p_GOODS_TEMPLATE_NAME", pGoodsTemplateName) .addValue("p_BASE_GOODS_MODELS_ID", pBaseGoodsModelsId) - .addValue("p_BASE_GOODS_MODELS_NAME", pBaseGoodsModelsName) - .addValue("p_SUPPLIER", pSupplier) - .addValue("p_BUY_TYPE", pBuyType) - .addValue("p_UNIT", pUnit) - .addValue("p_PRICE", pPrice) - .addValue("p_PROCURE_DATE", pProcureDate) - .addValue("p_STATES", pStates) - .addValue("p_DEAL_TIME", pDealTime) + .addValue("p_BASE_GOODS_MODELS_NAME", pBaseGoodsModelsName).addValue("p_SUPPLIER", pSupplier) + .addValue("p_BUY_TYPE", pBuyType).addValue("p_UNIT", pUnit).addValue("p_PRICE", pPrice) + .addValue("p_PROCURE_DATE", pProcureDate).addValue("p_STATES", pStates).addValue("p_DEAL_TIME", pDealTime) .addValue("p_times", pTimes); Map<String, Object> out = simpleJdbcCall.execute(in); System.out.println("Procedure result: " + out); -- Gitblit v1.9.1