From f16ec51787ed0cb094b71ff8146c740d944f729d Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期四, 15 五月 2025 11:40:54 +0800
Subject: [PATCH] Merge branch 'dev_platePlanv2' into dev
---
aps-modules/aps-core/src/main/resources/mapper/core/ApsAbnormalProcessAnalysisMapper.xml | 10 +-
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml | 15 +++
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java | 113 +++++++++++++++-------------
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlatePlanMapper.java | 11 ++
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java | 4
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java | 7 +
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java | 8 +-
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java | 24 ++++-
aps-modules/aps-core/src/main/resources/mapper/core/ApsStandardProcessRouteHeaderMapper.xml | 4
aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlatePlanService.java | 5 +
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java | 29 ++----
aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java | 2
12 files changed, 136 insertions(+), 96 deletions(-)
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlatePlanMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlatePlanMapper.java
index a456135..ded9061 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlatePlanMapper.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlatePlanMapper.java
@@ -75,7 +75,7 @@
List<ApsPlatePlan> selectPlatePlanByPlantMajor(String plant,String professionalAffiliation);
/**
- * 鑾峰彇鏈尮閰嶇殑瀛愯鍒�
+ * 鑾峰彇涓�鏉℃湭鍖归厤鐨勫瓙璁″垝
* */
ApsPlatePlan selectUnMatchPlateSubPlan(String plant,String itemNumber);
@@ -88,4 +88,13 @@
* 鍒濆鍖� 瀛愪欢宸ュ崟鐨� 鏈尮閰嶆暟閲�
* */
int initUnMatchQty();
+ /**
+ * 鑾峰彇鏈尮閰嶇殑瀛愯鍒�
+ * */
+ List<ApsPlatePlan> selectUnMatchPlateSubPlanList(String plant,String itemNumber);
+
+ /**
+ * 鏇存柊瀛愪欢宸ュ崟鏈尮閰嶆暟閲忓拰鐗堟湰
+ * */
+ int updatePlanUnMatchQtyAndVersion(ApsPlatePlan plan);
}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java
index 53e8c91..039fd83 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsMaterialStorageManagementService.java
@@ -66,7 +66,7 @@
Optional<ApsMaterialStorageManagement> getItemStorage(String plant, String itemNumber);
- ApsMaterialStorageManagement getRdsStorage(String plant, String itemCode);
+ Optional<ApsMaterialStorageManagement> getRdsStorage(String plant, String itemCode);
/**
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlatePlanService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlatePlanService.java
index bae0205..a923079 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlatePlanService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlatePlanService.java
@@ -4,6 +4,7 @@
import com.aps.core.domain.ApsPlatePlanTemp;
import com.aps.core.domain.ApsPlateStandardRequire;
+import java.util.Hashtable;
import java.util.List;
/**
@@ -81,5 +82,7 @@
*/
public List<ApsPlatePlan> selectPlateRedundantOrderList(ApsPlatePlan apsPlatePlan);
- // ApsPlatePlan selectUnMatchPlateSubPlan(ApsPlateStandardRequire require);
+ ApsPlatePlan selectUnMatchPlateSubPlan(String plant, String itemNumber, Hashtable<String, List<ApsPlatePlan>> subPlans);
+
+ // ApsPlatePlan selectUnMatchPlateSubPlan(ApsPlateStandardRequire require);
}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java
index 79015ad..33ffb72 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialStorageManagementServiceImpl.java
@@ -129,30 +129,23 @@
* @return ApsMaterialStorageManagement 杩斿洖鑾峰彇鍒扮殑搴撳瓨淇℃伅瀵硅薄锛屽鏋滄病鏈夋壘鍒帮紝鍒欒繑鍥瀗ull
*/
@Override
- public ApsMaterialStorageManagement getRdsStorage(String plant, String itemCode){
- ApsMaterialStorageManagement ams=null;
+ public Optional<ApsMaterialStorageManagement> getRdsStorage(String plant, String itemCode){
// 灏濊瘯浠嶳edis涓幏鍙栧簱瀛樹俊鎭�
- JSONObject materialStorage = (JSONObject)redisTemplate.opsForValue().get("MaterialStorage:Material_"+plant+"_"+itemCode);
+ String key = "MaterialStorage:Material_" + plant + "_" + itemCode;
+ JSONObject materialStorage = (JSONObject)redisTemplate.opsForValue().get(key);
if(materialStorage!=null){
// 濡傛灉Redis涓湁缂撳瓨锛屽皢鍏惰浆鎹负ApsMaterialStorageManagement瀵硅薄骞惰繑鍥�
- ams = materialStorage.toJavaObject(ApsMaterialStorageManagement.class);
- return ams;
+ ApsMaterialStorageManagement ams= materialStorage.toJavaObject(ApsMaterialStorageManagement.class);
+ Optional<ApsMaterialStorageManagement> optional = Optional.ofNullable(ams);
+ return optional ;
}else {
- // 濡傛灉Redis涓病鏈夌紦瀛橈紝鍒涘缓鏌ヨ鍙傛暟瀵硅薄
- ApsMaterialStorageManagement storageParam = new ApsMaterialStorageManagement();
- storageParam.setItemNumber(itemCode);
- storageParam.setApplicableFactories(plant);
// 浠庢暟鎹簱涓煡璇㈠簱瀛樹俊鎭�
- Optional<ApsMaterialStorageManagement> first = apsMaterialStorageManagementMapper.selectApsMaterialStorageManagementList(storageParam).stream()
- .findFirst();
- if (first.isPresent()){
- // 濡傛灉鏌ヨ鍒板簱瀛樹俊鎭紝灏嗗叾缂撳瓨鍒癛edis涓�
- ams = first.get();
- redisTemplate.opsForValue().set("MaterialStorage:Material_"+plant+"_"+itemCode,JSONObject.parseObject(JSON.toJSONString(ams)));
- }
+ Optional<ApsMaterialStorageManagement> first = getItemStorage( plant, itemCode);
+ first.ifPresent(apsMaterialStorageManagement ->
+ redisTemplate.opsForValue().set(key, JSONObject.parseObject(JSON.toJSONString(apsMaterialStorageManagement)))
+ );
+ return first;
}
- // 杩斿洖搴撳瓨淇℃伅瀵硅薄
- return ams;
}
/**
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java
index 6fda182..15d21c4 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java
@@ -1,15 +1,11 @@
package com.aps.core.service.impl;
import cn.hutool.core.util.IdUtil;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
import com.aps.common.core.utils.DateUtils;
import com.aps.common.core.utils.uuid.IdUtils;
import com.aps.common.security.utils.DictUtils;
-import com.aps.core.domain.ApsMaterialStorageManagement;
import com.aps.core.domain.ApsPlatePlan;
import com.aps.core.domain.ApsPlatePlanTemp;
-import com.aps.core.domain.ApsPlateStandardRequire;
import com.aps.core.mapper.ApsPartPlanTempMapper;
import com.aps.core.mapper.ApsPlatePlanMapper;
import com.aps.core.mapper.ApsPlatePlanTempMapper;
@@ -18,9 +14,10 @@
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
+import java.util.Hashtable;
import java.util.List;
import java.util.Optional;
@@ -197,4 +194,21 @@
public List<ApsPlatePlan> selectPlateRedundantOrderList(ApsPlatePlan apsPlatePlan) {
return apsPlatePlanMapper.selectPlateRedundantOrderList(apsPlatePlan);
}
+
+ @Override
+ public ApsPlatePlan selectUnMatchPlateSubPlan(String plant, String itemNumber, Hashtable<String, List<ApsPlatePlan>> subPlans) {
+ if(subPlans.containsKey(itemNumber)) {
+ List<ApsPlatePlan> subPlanList = subPlans.get(itemNumber);
+ Optional<ApsPlatePlan> firstPlant = subPlanList.stream().filter(x -> x.getUnmatchedQuantity().compareTo(BigDecimal.ZERO) > 0).findFirst();
+ return firstPlant.orElse(null);
+ }else {
+ List<ApsPlatePlan> plans = apsPlatePlanMapper.selectUnMatchPlateSubPlanList(plant, itemNumber);
+ if (!plans.isEmpty()) {
+ subPlans.put(itemNumber, plans);
+ return selectUnMatchPlateSubPlan(plant, itemNumber, subPlans);
+ } else {
+ return null;
+ }
+ }
+ }
}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java
index f360c6f..b9e3551 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomOrderDetailServiceImpl.java
@@ -107,7 +107,7 @@
public void savePlastPlanAndBomOrderDetail(ApsPlateStandardRequire require, ApsPlatePlan platePlan, BigDecimal subtract
, BigDecimal stock, BigDecimal netRequirement, List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList) {
platePlan.setUnmatchedQuantity(subtract);
- apsPlatePlanMapper.updatePlanUnMatchQtyByVersion(platePlan);
+ // apsPlatePlanMapper.updatePlanUnMatchQtyByVersion(platePlan);
/* 璁板綍宸ュ崟涓庡噣闇�姹傜殑鍖归厤鍏崇郴*/
ApsPlateStandardRequireBomOrderDetail bomOrderDetail = ApsPlateStandardRequireBomOrderDetail.builder()
.id(IdUtil.getSnowflakeNextId())
@@ -127,7 +127,7 @@
bomOrderDetail.setCreateBy(SecurityUtils.getUsername());
orderDetailsList.add(bomOrderDetail);
- apsPlateStandardRequireBomOrderDetailMapper.insertApsPlateStandardRequireBomOrderDetail(bomOrderDetail);
+ //apsPlateStandardRequireBomOrderDetailMapper.insertApsPlateStandardRequireBomOrderDetail(bomOrderDetail);
}
@Override
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java
index 82a379d..3517059 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java
@@ -117,7 +117,7 @@
,List<ApsPlateStandardRequireBomStockDetail> stockDetailsList){
- itemStorageMapper.updateMaterialStorageByVersion(itemStorage.getId(), afterStockAmount,itemStorage.getVersion());
+ //itemStorageMapper.updateMaterialStorageByVersion(itemStorage.getId(), afterStockAmount,itemStorage.getVersion());
/*璁板綍鎵e噺鏄庣粏*/
ApsPlateStandardRequireBomStockDetail bomStockDetail = ApsPlateStandardRequireBomStockDetail.builder()
.id(IdUtil.getSnowflakeNextId())
@@ -136,13 +136,13 @@
bomStockDetail.setCreateTime(DateUtils.getNowDate());
stockDetailsList.add(bomStockDetail);
- plateBomStockDetailMapper.insertApsPlateStandardRequireBomStockDetail(bomStockDetail);
+ // plateBomStockDetailMapper.insertApsPlateStandardRequireBomStockDetail(bomStockDetail);
/*鏇存柊鍐呭瓨涓墿鏂欏墿浣欏簱瀛�*/
- /*itemStorage.setRemainderStock(afterStockAmount);
+ itemStorage.setRemainderStock(afterStockAmount);
if(null== itemStorage.getVersion()){
itemStorage.setVersion(1);
}else{
itemStorage.setVersion(itemStorage.getVersion()+1);
- }*/
+ }
}
}
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java
index 2ab9146..e8178ce 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java
@@ -64,7 +64,7 @@
ApsPlateStandardRequireBomOrderDetailMapper plateBomOrderDetailMapper;
@Autowired
- private ApsPlatePlanMapper apsPlatePlanMapper;
+ private IApsPlatePlanService apsPlatePlanService;
@Resource
IApsPlateStandardRequireBomOrderDetailService bomOrderDetailService;
@@ -175,20 +175,24 @@
String batchNum= requireBatchService.getNewBatchNumber();
/*鑾峰彇閽i噾涓诲崟淇℃伅*/
List<ApsPlatePlan> mainPlans = platePlanMapper.selectPlatePlanByPlantMajor(plantCode,mainOrderType);
- Hashtable<String, BigDecimal> usedStorage = new Hashtable<>();
+ Hashtable<String, ApsMaterialStorageManagement> usedStorage = new Hashtable<>();
+ /*鍐呭瓨涓瓨鍌ㄥ瓙浠跺伐鍗�*/
+ Hashtable<String, List<ApsPlatePlan>> subPlans = new Hashtable<>();
log.info("寮�濮嬬敓鎴愰渶姹傦細");
for (ApsPlatePlan mainPlan : mainPlans) {
String itemNumber = mainPlan.getItemNumber();
/*鏍规嵁鏂欏彿 鑾峰彇BOM Header */
- /*褰撳墠Bom鑺傜偣澶勭悊瀹屾垚鍚庯紝澶勭悊涓嬬骇BOM*/
+
List<ApsPlateStandardRequire> requiresList=new ArrayList<>();
List<ApsPlateStandardRequireBomStockDetail> stockDetailsList=new ArrayList<>();
List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList=new ArrayList<>();
+
log.info("寮�濮嬬敓鎴愰渶姹傦細宸ュ崟鍙凤細"+mainPlan.getDocumentNumber());
+ /*褰撳墠Bom鑺傜偣澶勭悊瀹屾垚鍚庯紝澶勭悊涓嬬骇BOM*/
getBomRequires(plantCode, "0","0",itemNumber,BigDecimal.ONE, batchNum, null
- , mainPlan, requiresList, 0L,stockDetailsList,orderDetailsList,usedStorage
+ , mainPlan, requiresList, 0L,stockDetailsList,orderDetailsList,usedStorage,subPlans
);
// 鎵归噺鎻掑叆浠ユ彁楂樻�ц兘
@@ -200,38 +204,40 @@
apsPlateStandardRequireMapper.batchInsert(batch);
}
}
- log.info("鐢熸垚瀹屾垚");
-// if(!stockDetailsList.isEmpty()){
-// int batchSize = 1000;
-// stockDetailsList.forEach(x->x.setId(IdUtil.getSnowflakeNextId()));
-// for (int i = 0; i < stockDetailsList.size(); i += batchSize) {
-// int end = Math.min(i + batchSize, stockDetailsList.size());
-// List<ApsPlateStandardRequireBomStockDetail> batch = stockDetailsList.subList(i, end);
-// plateBomStockDetailMapper.batchInsert(batch);
-// }
-// }
-//
-// if(!orderDetailsList.isEmpty()){
-// int batchSize = 1000;
-// orderDetailsList.forEach(x->x.setId(IdUtil.getSnowflakeNextId()));
-// for (int i = 0; i < orderDetailsList.size(); i += batchSize) {
-// int end = Math.min(i + batchSize, orderDetailsList.size());
-// List<ApsPlateStandardRequireBomOrderDetail> batch = orderDetailsList.subList(i, end);
-// plateBomOrderDetailMapper.batchInsert(batch);
-// }
-// }
- /*闆嗕腑淇濆瓨搴撳瓨淇℃伅*/
- /* if(!usedStorage.isEmpty()){
- usedStorage.forEach((key, sm) -> {
- storageManagementService.updateRemainderStock(sm.getId(),sm.getRemainderStock(),sm.getVersion());
- });
- }*/
-
+ if(!stockDetailsList.isEmpty()){
+ int batchSize = 1000;
+ stockDetailsList.forEach(x->x.setId(IdUtil.getSnowflakeNextId()));
+ for (int i = 0; i < stockDetailsList.size(); i += batchSize) {
+ int end = Math.min(i + batchSize, stockDetailsList.size());
+ List<ApsPlateStandardRequireBomStockDetail> batch = stockDetailsList.subList(i, end);
+ plateBomStockDetailMapper.batchInsert(batch);
+ }
+ }
+ if(!orderDetailsList.isEmpty()){
+ int batchSize = 1000;
+ orderDetailsList.forEach(x->x.setId(IdUtil.getSnowflakeNextId()));
+ for (int i = 0; i < orderDetailsList.size(); i += batchSize) {
+ int end = Math.min(i + batchSize, orderDetailsList.size());
+ List<ApsPlateStandardRequireBomOrderDetail> batch = orderDetailsList.subList(i, end);
+ plateBomOrderDetailMapper.batchInsert(batch);
+ }
+ }
}
- usedStorage.forEach((key,value)->{
- log.info("鏂欏彿锛�"+key+"锛屽簱瀛橈細"+value);
- });
-
+ /*闆嗕腑淇濆瓨搴撳瓨淇℃伅*/
+ if(!usedStorage.isEmpty()){
+ usedStorage.forEach((key, sm) -> {
+ storageManagementService.updateRemainderStock(sm.getId(),sm.getRemainderStock(),sm.getVersion());
+ });
+ }
+ if(!subPlans.isEmpty()){
+ subPlans.forEach((key, subPlansList) -> {
+ subPlansList.forEach(x->{
+ if (!x.getUnmatchedQuantity().equals(x.getProductionQuantity())){
+ platePlanMapper.updatePlanUnMatchQtyAndVersion(x);
+ }
+ });
+ });
+ }
}
/**
@@ -255,7 +261,8 @@
List<ApsPlateStandardRequire> allRequires,
Long level,List<ApsPlateStandardRequireBomStockDetail> stockDetailsList,
List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList,
- Hashtable<String, BigDecimal> usedStorage
+ Hashtable<String, ApsMaterialStorageManagement> usedStorage,
+ Hashtable<String, List<ApsPlatePlan>> subPlans
) {
/*鏋勫缓闇�姹備俊鎭�*/
ApsPlateStandardRequire require = new ApsPlateStandardRequire();
@@ -285,17 +292,14 @@
/*榛樿鍑�闇�姹備负BOM鐢ㄩ噺*/
require.setNetRequirement(require.getRequireAmount());
+
/*璇诲彇搴撳瓨淇℃伅鐨勪紭鍏堢骇-> 鍐呭瓨銆乺edis銆乨b*/
- /* ApsMaterialStorageManagement storage = usedStorage.get(itemCode);
- if(storage==null){
- storage = storageManagementService.getRdsStorage(plant, itemCode);
- if(storage!=null){
- *//*鍓╀綑搴撳瓨*//*
- remainderStock = storage.getRemainderStock();
- }
- }*/
- Optional<ApsMaterialStorageManagement> itemStorageOpt = storageManagementService.getItemStorage(plant, itemCode);
+ Optional<ApsMaterialStorageManagement> itemStorageOpt = Optional.ofNullable(usedStorage.get(itemCode)) ;
+ if(itemStorageOpt.isEmpty()){
+ itemStorageOpt = storageManagementService.getRdsStorage(plant, itemCode);
+ }
if (itemStorageOpt.isPresent()) {
+
ApsMaterialStorageManagement itemStorage=itemStorageOpt.get();
BigDecimal remainderStock =itemStorage.getRemainderStock();
/*璁$畻鍑�闇�姹� 榛樿=闇�姹傛暟閲�*/
@@ -320,7 +324,7 @@
, afterStockAmount, require.getId(), stockDetailsList
);
/*鏇存柊鍐呭瓨涓殑搴撳瓨浣跨敤淇℃伅*/
- usedStorage.put(itemCode, afterStockAmount);
+ usedStorage.put(itemCode, itemStorage);
}
}
/*鏈尮閰嶆暟閲忥紝榛樿涓哄噣闇�姹�*/
@@ -377,7 +381,7 @@
if (require.getNetRequirement().compareTo(BigDecimal.ZERO) > 0) {
require.setMatchMode("宸ュ崟鍖归厤");
/*浣跨敤瀛愪欢宸ュ崟杩涜闇�姹傚尮閰�*/
- matchRequireAndSubPlan(require,orderDetailsList);
+ matchRequireAndSubPlan(require,orderDetailsList,subPlans);
}
allRequires.add(require);
log.info("宸茬敓鎴愰渶姹傦細"+plan.getDocumentNumber()+"bomHeaderCode:"+bomHeaderCode+"bomLineCode:"+itemCode+"bomLevel:"+level);
@@ -389,7 +393,7 @@
bomLineList.forEach(line -> {
getBomRequires(plant, itemCode, line.getBomLineId(),line.getItemCode() ,line.getNum() , batchNum
, require.getStartDate(), plan, allRequires, nextLevel,stockDetailsList
- ,orderDetailsList,usedStorage
+ ,orderDetailsList,usedStorage,subPlans
);
});
}
@@ -413,12 +417,12 @@
* 浣跨敤瀛愪欢宸ュ崟鍖归厤闇�姹備腑鐨勫噣闇�姹�
* */
- private void matchRequireAndSubPlan(ApsPlateStandardRequire require, List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList) {
+ private void matchRequireAndSubPlan(ApsPlateStandardRequire require, List<ApsPlateStandardRequireBomOrderDetail> orderDetailsList,Hashtable<String, List<ApsPlatePlan>> subPlans) {
BigDecimal netRequirement = require.getNetRequirement();
require.setMatchMode("宸ュ崟鍖归厤");
require.setMatchState("宸插尮閰�");
if (netRequirement.compareTo(BigDecimal.ZERO) > 0) {
- ApsPlatePlan platePlan = apsPlatePlanMapper.selectUnMatchPlateSubPlan(require.getOrgCode(), require.getBomLineCode());
+ ApsPlatePlan platePlan = apsPlatePlanService.selectUnMatchPlateSubPlan(require.getOrgCode(), require.getBomLineCode(),subPlans);
/*瀛愪欢宸ュ崟鐨勬湭鍖归厤鏁伴噺 浣滀负褰撳墠鐨勫簱瀛�*/
while (platePlan != null && netRequirement.compareTo(BigDecimal.ZERO) > 0) {
BigDecimal stock = platePlan.getUnmatchedQuantity();
@@ -426,6 +430,8 @@
/* 搴撳瓨鏁伴噺 澶т簬 鍑�闇�姹傛暟閲�*/
/* 鍑�闇�姹傛暟閲�=0 锛屽瓙浠跺伐鍗曟湭鍖归厤鏁伴噺= 搴撳瓨-鍑�闇�姹�*/
BigDecimal subtract = stock.subtract(netRequirement);
+ platePlan.setUnmatchedQuantity(subtract);
+ platePlan.setVersion(platePlan.getVersion() + 1);
bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, subtract, stock, netRequirement,orderDetailsList);
netRequirement = BigDecimal.ZERO;
@@ -436,6 +442,8 @@
/*鍑�闇�姹傛暟閲� == 搴撳瓨鏁伴噺*/
BigDecimal subtract = BigDecimal.ZERO;
+ platePlan.setUnmatchedQuantity(subtract);
+ platePlan.setVersion(platePlan.getVersion() + 1);
bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, subtract, stock, netRequirement,orderDetailsList);
netRequirement = BigDecimal.ZERO;
@@ -446,11 +454,12 @@
/*闇�姹傚ぇ浜庡簱瀛�*/
/*鍑�闇�姹� 琚儴鍒嗘弧瓒� */
BigDecimal rest = netRequirement.subtract(stock);
-
+ platePlan.setUnmatchedQuantity(BigDecimal.ZERO);
+ platePlan.setVersion(platePlan.getVersion() + 1);
/*宸ュ崟 鏈尮閰嶆暟閲忎负0 鍏ㄩ儴鐢ㄤ簬鍖归厤闇�姹�*/
bomOrderDetailService.savePlastPlanAndBomOrderDetail(require, platePlan, BigDecimal.ZERO, stock, netRequirement,orderDetailsList);
/*鍑�闇�姹傛湭琚弧瓒筹紝闇�瑕佺户缁尮閰�*/
- platePlan = apsPlatePlanMapper.selectUnMatchPlateSubPlan(require.getOrgCode(), require.getBomLineCode());
+ platePlan = apsPlatePlanService.selectUnMatchPlateSubPlan(require.getOrgCode(), require.getBomLineCode(),subPlans);
/*鍓╀綑鍑�闇�姹�*/
netRequirement = rest;
require.setUnmatchedDemandAmount(rest);
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java
index f3dfd22..46e4606 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java
@@ -170,7 +170,8 @@
ret.setRouteTime(totalRouteTime.multiply(netRequirement));
return ret;
} else {
- // 鏌ヨ鏍囧噯宸ヨ壓璺嚎澶撮儴淇℃伅
+ saveRequireError(require,"鏍囧噯宸ヨ壓璺嚎涓嶅瓨鍦�");
+ /*// 鏌ヨ鏍囧噯宸ヨ壓璺嚎澶撮儴淇℃伅
Optional<ApsStandardProcessRouteHeader> firstProcessRoute = standardProcessRouteHeaderMapper.queryStandardProcessRouteHeaderByPlantAndItemCode(plant, itemCode).stream().findFirst();
if (firstProcessRoute.isPresent()) {
ApsStandardProcessRouteHeader routeHeader = firstProcessRoute.get();
@@ -183,11 +184,11 @@
// 璁$畻杩斿洖鐨勬暟鎹�
ret.setRouteTime(totalRouteTime);
ret.setRouteId(routeHeader.getRouteId());
- /*瀛樺偍鑷砇edis*/
+ *//*瀛樺偍鑷砇edis*//*
redisTemplate.opsForValue().set(key, standardTime);
}else {
saveRequireError(require,"鏍囧噯宸ヨ壓璺嚎涓嶅瓨鍦�");
- }
+ }*/
return ret;
}
}
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsAbnormalProcessAnalysisMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsAbnormalProcessAnalysisMapper.xml
index 90511bb..eaeabf2 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsAbnormalProcessAnalysisMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsAbnormalProcessAnalysisMapper.xml
@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aps.core.mapper.ApsAbnormalProcessAnalysisMapper">
- <resultMap type="ApsAbnormalProcessAnalysis" id="ApsAbnormalProcessAnalysisResult">
+ <resultMap type="com.aps.core.domain.ApsAbnormalProcessAnalysis" id="ApsAbnormalProcessAnalysisResult">
<result property="id" column="id" />
<result property="processName" column="process_name" />
<result property="source" column="source" />
@@ -18,7 +18,7 @@
select id, process_name, source, summary, create_time, del_flag, create_by from aps_abnormal_process_analysis
</sql>
- <select id="selectApsAbnormalProcessAnalysisList" parameterType="ApsAbnormalProcessAnalysis" resultMap="ApsAbnormalProcessAnalysisResult">
+ <select id="selectApsAbnormalProcessAnalysisList" parameterType="com.aps.core.domain.ApsAbnormalProcessAnalysis" resultMap="ApsAbnormalProcessAnalysisResult">
<include refid="selectApsAbnormalProcessAnalysisVo"/>
<where>
and del_flag = '0'
@@ -34,7 +34,7 @@
where id = #{id}
</select>
- <insert id="insertApsAbnormalProcessAnalysis" parameterType="ApsAbnormalProcessAnalysis" useGeneratedKeys="true" keyProperty="id">
+ <insert id="insertApsAbnormalProcessAnalysis" parameterType="com.aps.core.domain.ApsAbnormalProcessAnalysis" useGeneratedKeys="true" keyProperty="id">
insert into aps_abnormal_process_analysis
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="processName != null">process_name,</if>
@@ -54,7 +54,7 @@
</trim>
</insert>
- <update id="updateApsAbnormalProcessAnalysis" parameterType="ApsAbnormalProcessAnalysis">
+ <update id="updateApsAbnormalProcessAnalysis" parameterType="com.aps.core.domain.ApsAbnormalProcessAnalysis">
update aps_abnormal_process_analysis
<trim prefix="SET" suffixOverrides=",">
<if test="processName != null">process_name = #{processName},</if>
@@ -86,7 +86,7 @@
order by resource_group_name;
</select>
<!--鎵归噺鎻掑叆淇℃伅-->
- <insert id="batchSaveAbnormalInfo" parameterType="ApsAbnormalProcessAnalysis">
+ <insert id="batchSaveAbnormalInfo" parameterType="com.aps.core.domain.ApsAbnormalProcessAnalysis">
insert into aps_abnormal_process_analysis(process_name,source,summary,create_time,del_flag,create_by)
values
<foreach collection="list" item="item" index="index" separator=",">
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml
index f60cecf..c0db9f6 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml
@@ -298,7 +298,15 @@
order by document_number asc,id asc
limit 1
</select>
-
+ <select id="selectUnMatchPlateSubPlanList" parameterType="com.aps.core.domain.ApsPlatePlan" resultMap="ApsPlatePlanResult">
+ select id,document_number,main_part_number,item_number,plant,professional_affiliation,production_quantity,
+ unmatched_quantity,version
+ from aps_plate_plan
+ where del_flag='0' and professional_affiliation ='sub' and unmatched_quantity > 0
+ <if test="plant != null and plant !='' "> and plant = #{plant}</if>
+ <if test="itemNumber != null and itemNumber !='' "> and item_number = #{itemNumber}</if>
+ order by document_number asc,id asc
+ </select>
<update id="updatePlanUnMatchQtyByVersion" parameterType="com.aps.core.domain.ApsPlatePlan">
update aps_plate_plan
@@ -321,4 +329,9 @@
set unmatched_quantity=production_quantity, version=0,require_id=id
where del_flag='0' and professional_affiliation !='0'
</update>
+ <update id="updatePlanUnMatchQtyAndVersion" parameterType="com.aps.core.domain.ApsPlatePlan">
+ update aps_plate_plan
+ set unmatched_quantity=#{unmatchedQuantity},version=#{version},update_time=now()
+ where id=#{id}
+ </update>
</mapper>
\ No newline at end of file
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsStandardProcessRouteHeaderMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsStandardProcessRouteHeaderMapper.xml
index afc8436..3bdcebe 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsStandardProcessRouteHeaderMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsStandardProcessRouteHeaderMapper.xml
@@ -107,11 +107,9 @@
<select id="queryStandardProcessRouteHeaderByPlantAndItemCode" parameterType="String" resultMap="ApsStandardProcessRouteHeaderResult">
<include refid="selectApsStandardProcessRouteHeaderVo"/>
- <where>
+ where del_flag = '0'
<if test="orgCode != null and orgCode != ''"> and org_code = #{orgCode}</if>
<if test="itemCode != null and itemCode != ''"> and item_code = #{itemCode} </if>
- and del_flag = '0'
- </where>
</select>
<select id="selectProcessRouteStandardTimeData" parameterType="String" resultType="com.alibaba.fastjson2.JSONObject">
--
Gitblit v1.9.3