From 6ea7f096e3f2e09b61974f8d6a259c94fd9e13eb Mon Sep 17 00:00:00 2001
From: sfd <sun.sunshine@163.com>
Date: 星期四, 15 五月 2025 13:44:21 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.50.149:8085/r/aps-backend into dev
---
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java | 113 ++++++++++--------
aps-modules/aps-job/src/main/resources/mapper/job/ApsWorkOrderJobMapper.xml | 12 +
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/resources/mapper/core/ApsGasPipingPlanMapper.xml | 22 +++
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingPlan.java | 50 ++++++++
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireBomStockDetailServiceImpl.java | 8
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/ApsStandardProcessRouteLineServiceImpl.java | 7
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
15 files changed, 215 insertions(+), 101 deletions(-)
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingPlan.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingPlan.java
index e477388..43ea498 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingPlan.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingPlan.java
@@ -174,6 +174,56 @@
@Excel(name = "褰撳墠宸ュ簭鍚嶇О")
private String stdOp;
+ /** 宸ュ崟鍒涘缓鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+// @Excel(name = "宸ュ崟鍒涘缓鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date orderCreateTime;
+
+ /** 宸ュ崟瀹℃牳鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+// @Excel(name = "宸ュ崟瀹℃牳鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date approveOn;
+
+ /** 宸ュ崟寮�宸ユ椂闂� */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+// @Excel(name = "宸ュ崟寮�宸ユ椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date startWorkDate;
+
+ /** 浣庨樁鐮�*/
+ private String lowOrderCode;
+
+ public Date getOrderCreateTime() {
+ return orderCreateTime;
+ }
+
+ public void setOrderCreateTime(Date orderCreateTime) {
+ this.orderCreateTime = orderCreateTime;
+ }
+
+ public Date getApproveOn() {
+ return approveOn;
+ }
+
+ public void setApproveOn(Date approveOn) {
+ this.approveOn = approveOn;
+ }
+
+ public Date getStartWorkDate() {
+ return startWorkDate;
+ }
+
+ public void setStartWorkDate(Date startWorkDate) {
+ this.startWorkDate = startWorkDate;
+ }
+
+ public String getLowOrderCode() {
+ return lowOrderCode;
+ }
+
+ public void setLowOrderCode(String lowOrderCode) {
+ this.lowOrderCode = lowOrderCode;
+ }
+
public String getStdOp() {
return stdOp;
}
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/ApsGasPipingPlanMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingPlanMapper.xml
index 6d57b8e..09c1e9d 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingPlanMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingPlanMapper.xml
@@ -43,6 +43,10 @@
<result property="planType" column="plan_type" />
<result property="opStatus" column="op_status" />
<result property="nextOpName" column="next_op_name" />
+ <result property="orderCreateTime" column="order_create_time" />
+ <result property="approveOn" column="approve_on" />
+ <result property="startWorkDate" column="start_work_date" />
+ <result property="lowOrderCode" column="low_order_code" />
<!-- <collection property="apsProcessRoutes" javaType="java.util.ArrayList" ofType="com.aps.core.domain.ApsProcessRoute">-->
<!-- <result property="id" column="id" />-->
<!-- <result property="itemNo" column="item_no" />-->
@@ -95,7 +99,7 @@
department, plan_start_day, plan_end_day, standby_number, standby_name, standby_stock,
next_process_deparment, is_suspended, is_outsourcing, account, advanced_materials,
advanced_document_number, advanced_requirement_day, is_plan_complete, is_stock_complete,
- has_turnback, has_risk ,plan_type, op_status, next_op_name
+ has_turnback, has_risk ,plan_type, op_status, next_op_name, order_create_time, approve_on, start_work_date, low_order_code
from aps_gas_piping_plan
</sql>
@@ -133,8 +137,8 @@
<if test="hasTurnback != null "> and has_turnback = #{hasTurnback}</if>
<if test="hasRisk != null "> and has_risk = #{hasRisk}</if>
<if test="planType != null "> and plan_type = #{planType}</if>
- <if test="opStatus != null "> and op_status = #{opStatus}</if>
- <if test="nextOpName != null "> and next_op_name = #{nextOpName}</if>
+ <if test="opStatus != null "> and op_status = #{opStatus}</if>
+ <if test="nextOpName != null "> and next_op_name = #{nextOpName}</if>
and del_flag ='0'
</where>
</select>
@@ -185,6 +189,10 @@
<if test="planType != null">plan_type,</if>
<if test="opStatus != null">op_status,</if>
<if test="nextOpName != null">next_op_name,</if>
+ <if test="orderCreateTime != null">order_create_time,</if>
+ <if test="approveOn != null">approve_on,</if>
+ <if test="startWorkDate != null">start_work_date,</if>
+ <if test="lowOrderCode != null">low_order_code,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null and id != ''">#{id},</if>
@@ -225,6 +233,10 @@
<if test="planType != null">#{planType},</if>
<if test="opStatus != null">#{opStatus},</if>
<if test="nextOpName != null">#{nextOpName},</if>
+ <if test="orderCreateTime != null">#{orderCreateTime},</if>
+ <if test="approveOn != null">#{approveOn},</if>
+ <if test="startWorkDate != null">#{startWorkDate},</if>
+ <if test="lowOrderCode != null">#{lowOrderCode},</if>
</trim>
</insert>
@@ -268,6 +280,10 @@
<if test="planType != null">plan_type = #{planType},</if>
<if test="opStatus != null">op_status = #{opStatus},</if>
<if test="nextOpName != null">next_op_name = #{nextOpName},</if>
+ <if test="orderCreateTime != null">order_create_time = #{orderCreateTime},</if>
+ <if test="approveOn != null">approve_on = #{approveOn},</if>
+ <if test="startWorkDate != null">start_work_date = #{startWorkDate},</if>
+ <if test="lowOrderCode != null">low_order_code = #{lowOrderCode},</if>
</trim>
where id = #{id}
</update>
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">
diff --git a/aps-modules/aps-job/src/main/resources/mapper/job/ApsWorkOrderJobMapper.xml b/aps-modules/aps-job/src/main/resources/mapper/job/ApsWorkOrderJobMapper.xml
index 02d5ed6..3b8bb42 100644
--- a/aps-modules/aps-job/src/main/resources/mapper/job/ApsWorkOrderJobMapper.xml
+++ b/aps-modules/aps-job/src/main/resources/mapper/job/ApsWorkOrderJobMapper.xml
@@ -442,7 +442,11 @@
process_number,work_center,department,
plan_start_day,plan_end_day,next_process_deparment,
is_suspended,is_outsourcing,account,
- id,create_time,del_flag,plant,order_status,std_op,op_status,next_op_name,plan_type
+ id,create_time,del_flag,plant,order_status,std_op,op_status,next_op_name,plan_type,
+ order_create_time,
+ approve_on,
+ start_work_date,
+ low_order_code
)
select
doc_no,mainitem_code,mainitem_figure,
@@ -453,7 +457,11 @@
start_date,complete_date,next_dept,
is_hold_release,is_out_source,org_code,
order_id,now(),'0',org_code,doc_status,std_op,op_status,next_op_name,
- case when substr(item_code,0,4)='A65' then 'gas' else 'piping' end as plan_type
+ case when substr(item_code,0,4)='A65' then 'gas' else 'piping' end as plan_type,
+ order_create_time,
+ approve_on,
+ start_work_date,
+ low_order_code
from aps_work_order_job
where ( doc_status in (0,1,2,4) and is_hold_release='0'
and (item_code like 'A65%' or item_code like 'W%'));
--
Gitblit v1.9.3