From d200d0bb4293ea3232679ecdf5c19f4b836add71 Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期二, 29 四月 2025 07:53:34 +0800
Subject: [PATCH] 气体管路
---
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java | 106 +++++++++++++++++++++++++++++++++--
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingRouteStat.java | 20 ++++++
2 files changed, 118 insertions(+), 8 deletions(-)
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingRouteStat.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingRouteStat.java
index b3f47f1..5f64df6 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingRouteStat.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingRouteStat.java
@@ -2,6 +2,7 @@
import com.aps.common.core.annotation.Excel;
import com.aps.common.core.web.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -40,7 +41,7 @@
/** 褰撳墠宸ュ簭鍙� */
@Excel(name = "褰撳墠宸ュ簭鍙�")
@Schema(description = "褰撳墠宸ュ簭鍙�", type = "String")
- private String currentProcessNumber;
+ private BigDecimal currentProcessNumber;
/** 鐢熶骇鏁伴噺 */
@Excel(name = "鐢熶骇鏁伴噺")
@@ -129,6 +130,23 @@
@Transient
private String searchType;
+ private Boolean warning;
+
+ /** 璁㈠崟寮�宸ユ棩 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "璁㈠崟瀹屽伐鏃�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date orderPlanEndDay;
+
+ /** 璁″垝瀹屾垚鏃� */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "璁″垝瀹屽伐鏃�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date processPlanEndDay;
+
+ @Excel(name = "宸ュ簭鍙�")
+ private BigDecimal routeProcessNumber;
+
+ private Integer num;
+
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java
index bcb7094..72ab84e 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java
@@ -26,12 +26,11 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.YearMonth;
-import java.time.ZoneId;
+import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
+
+import static java.util.stream.Collectors.groupingBy;
/**
* 姘斾綋绠¤矾浜ц兘璐熻浇缁熻Service涓氬姟灞傚鐞�
@@ -148,6 +147,7 @@
apsProcessRoutes.sort((a, b)->a.getProcessNumber().compareTo(b.getProcessNumber()));
//鏄惁鎵惧埌褰撳墠宸ュ簭
boolean isFind = false;
+ ApsProcessRoute preApsProcessRoute = null;
for (int i=0;i<apsProcessRoutes.size();i++){
ApsProcessRoute apsProcessRoute = apsProcessRoutes.get(i);
ApsGasPipingRouteStat apsGasPipingRouteStat = new ApsGasPipingRouteStat();
@@ -156,7 +156,7 @@
//鏂欏彿
apsGasPipingRouteStat.setItemNumber(apsGasPipingPlan.getItemNumber());
//褰撳墠宸ュ簭鍙�
- apsGasPipingRouteStat.setCurrentProcessNumber(apsGasPipingPlan.getProcessNumber());
+ apsGasPipingRouteStat.setCurrentProcessNumber(new BigDecimal(apsGasPipingPlan.getProcessNumber()));
//鐢熶骇鏁伴噺
apsGasPipingRouteStat.setProductionQuantity(apsGasPipingPlan.getProductionQuantity());
//宸ュ簭鍚嶇О
@@ -186,8 +186,8 @@
}
// 涓婁竴閬撳伐搴忕殑缁撴潫鏃堕棿 = 涓婁竴閬撳伐搴忕殑寮�濮嬫椂闂� + 涓婁竴閬撳伐搴忕殑鎬诲伐鏃�
if(apsGasPipingRouteStat.getProcessPlanStartDay()==null){
- LocalDateTime previousProcessPlanStartDay = apsProcessRoutes.get(i - 1).getProcessPlanStartDay().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
- long seconds = apsGasPipingRouteStatList.get(i - 1).getProcessTotalTime().multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
+ LocalDateTime previousProcessPlanStartDay = preApsProcessRoute.getProcessPlanStartDay().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+ long seconds = preApsProcessRoute.getStandardTime().multiply(apsGasPipingPlan.getProductionQuantity()).multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
LocalDateTime currentProcessPlanStartDay = previousProcessPlanStartDay.plusSeconds(seconds);
apsGasPipingRouteStat.setProcessPlanStartDay(Date.from(currentProcessPlanStartDay.atZone(ZoneId.systemDefault()).toInstant()));
}
@@ -211,6 +211,7 @@
apsGasPipingRouteStat.setBatchNumber(batchNum);
apsGasPipingRouteStat.setId(IdUtils.fastSimpleUUID());
apsGasPipingRouteStatList.add(apsGasPipingRouteStat);
+ preApsProcessRoute = apsProcessRoute;
}
});
List<ApsGasPipingRouteStat> tempInsertList = new ArrayList<>();
@@ -503,4 +504,95 @@
return yearMonths;
}
+
+ @Override
+ public void saveGasPipingProcessStat(){
+ try {
+ String batchNum = IdUtils.fastSimpleUUID();
+ List<ApsGasPipingRouteStat> tempList = apsGasPipingRouteStatMapper.queryTempStat();
+ Map<String, List<ApsGasPipingRouteStat>> groupByOrderNo = tempList.stream().collect(groupingBy(ApsGasPipingRouteStat::getWorkOrderNo));
+ Boolean hasBefore = false;
+ LocalDateTime now = LocalDateTime.now();
+ for (Map.Entry<String, List<ApsGasPipingRouteStat>> entry : groupByOrderNo.entrySet()) {
+ List<ApsGasPipingRouteStat> statPerOrder = entry.getValue();
+ /*num 涓烘牴鎹畬宸ユ椂闂存帓搴忓嚭鐨勫簭鍙凤紝鎸夋鎺掑簭锛屽彲淇濊瘉鏄寜瀹屽伐鏃堕棿鍊掑彊鎺掑垪*/
+ statPerOrder.sort((a, b)->a.getNum().compareTo(b.getNum()));
+ ApsGasPipingRouteStat last=null;
+ for (int i = 0; i <statPerOrder.size(); i++) {
+ ApsGasPipingRouteStat stat = statPerOrder.get(i);
+ stat.setId(IdUtils.fastSimpleUUID());
+ stat.setBatchNumber(batchNum);
+ stat.setCreateBy(SecurityUtils.getUsername());
+ stat.setWarning(false);
+ if(i==0){
+ Date orderPlanEndDay = stat.getOrderPlanEndDay();
+ LocalDateTime transLocalDateTime = transLocalDateTime(orderPlanEndDay);
+ LocalTime endOfDay = LocalTime.of(23, 59, 59);
+ LocalDateTime orderPlanEndDayLocalDateTime = LocalDateTime.of( transLocalDateTime.toLocalDate(), endOfDay);
+ if(orderPlanEndDayLocalDateTime.isBefore(now)){
+ hasBefore = true;
+ stat.setWarning(true);
+ stat.setProcessPlanEndDay(transDate(now));
+ stat.setProcessPlanStartDay(transDate(now));
+ }else {
+ /*璁″垝瀹屽伐鏃�=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿*/
+ stat.setProcessPlanEndDay(transDate(orderPlanEndDayLocalDateTime));
+ /*璁″垝寮�宸ユ棩=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿 - 宸ュ簭鎬诲伐鏃�*/
+ long seconds = stat.getProcessTotalTime().multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
+ LocalDateTime lastPlanStartDt = orderPlanEndDayLocalDateTime.minusSeconds(seconds);
+ if(lastPlanStartDt.isBefore(now)){
+ hasBefore = true;
+ stat.setProcessPlanStartDay(transDate(now));
+ }else {
+ stat.setProcessPlanStartDay(transDate(lastPlanStartDt));
+ }
+ }
+ }
+ /*褰撳伐鑹哄伐搴忓彿 >= 宸ュ崟褰撳墠宸ュ簭 浠h〃鏄湭鏉ュ伐搴忥紝鎵嶈繘琛岃鍒掑紑宸ユ棩 鍜岃鍒掑畬宸ユ棩鐨勮绠�
+ * 褰撳伐鑹哄伐搴忓彿 < 宸ュ崟褰撳墠宸ュ簭 杩囧幓宸ュ簭锛屼笉杩涜璁$畻
+ * */
+ if( stat.getRouteProcessNumber().compareTo(stat.getCurrentProcessNumber())>=0){
+ /*鍊掓帓鏃� 涓嬩竴閬撳伐搴忓瓨鍦� 姣斿綋鍓嶆椂闂村皬鐨勮鍒掓椂闂达紝鍒欏綋鍓嶈鍒掑紑濮嬪拰缁撴潫鏃堕棿閮芥槸褰撳墠鏃堕棿*/
+ if(hasBefore){
+ stat.setWarning(true);
+ stat.setProcessPlanEndDay(transDate(now));
+ stat.setProcessPlanStartDay(transDate(now));
+ }else{
+ /*涓嬩竴閬撳伐搴忚鍒掓椂闂撮兘姝e父鏃讹紝*/
+ if (last != null) {
+ /*褰撳墠宸ュ簭缁撴潫鏃堕棿=涓嬩竴閬撳伐搴忕殑寮�濮嬫椂闂�*/
+ stat.setProcessPlanEndDay(last.getProcessPlanStartDay());
+ /*寮�濮嬫椂闂�=缁撴潫鏃堕棿-鎬诲伐鏃�*/
+ long seconds = stat.getProcessTotalTime().multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
+ LocalDateTime crtStartDt = transLocalDateTime(last.getProcessPlanStartDay()).minusSeconds(seconds);
+ /*濡傛灉寮�濮嬫椂闂村皬浜庡綋鍓嶆椂闂�*/
+ if(crtStartDt.isBefore(now)){
+ hasBefore=true;
+ stat.setWarning(true);
+ stat.setProcessPlanStartDay(transDate(now));
+ }else {
+ stat.setProcessPlanStartDay(transDate(crtStartDt));
+ }
+ }
+ }
+ }
+ last = stat;
+ apsGasPipingRouteStatMapper.insertApsGasPipingRouteStat(stat);
+ }
+ hasBefore=false;
+
+ }
+ apsGasPipingRouteStatMapper.deleteApsGasPipingRouteStatByBatchNum(batchNum);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ };
+
+ private Date transDate(LocalDateTime localDateTime){
+ return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
+ }
+
+ private LocalDateTime transLocalDateTime(Date date){
+ return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
+ }
}
--
Gitblit v1.9.3