From 8bfafbd2e35e2cd0e370281c007fe98fe7fb91d3 Mon Sep 17 00:00:00 2001 From: zhanghl <253316343@qq.com> Date: 星期四, 17 四月 2025 14:15:36 +0800 Subject: [PATCH] 钣金统计表更新逻辑 --- aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessStatServiceImpl.java | 64 +++++++++++++++++++++++-------- 1 files changed, 47 insertions(+), 17 deletions(-) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessStatServiceImpl.java index 33df3be..83ed6e3 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessStatServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessStatServiceImpl.java @@ -110,6 +110,8 @@ String batchNum = IdUtils.fastSimpleUUID(); List<ApsPlateProcessStat> tempList = apsPlateProcessStatMapper.queryTempStat(); Map<String, List<ApsPlateProcessStat>> groupByOrderNo = tempList.stream().collect(groupingBy(ApsPlateProcessStat::getWorkOrderNo)); + Boolean hasBefore = false; + LocalDateTime now = LocalDateTime.now(); for (Map.Entry<String, List<ApsPlateProcessStat>> entry : groupByOrderNo.entrySet()) { List<ApsPlateProcessStat> statPerOrder = entry.getValue(); /*num 涓烘牴鎹畬宸ユ椂闂存帓搴忓嚭鐨勫簭鍙凤紝鎸夋鎺掑簭锛屽彲淇濊瘉鏄寜瀹屽伐鏃堕棿鍊掑彊鎺掑垪*/ @@ -120,33 +122,61 @@ 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); - - /*璁″垝瀹屽伐鏃�=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿*/ - stat.setProcessPlanEndDay(transDate(orderPlanEndDayLocalDateTime)); - /*璁″垝寮�宸ユ棩=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿 - 宸ュ簭鎬诲伐鏃�*/ - stat.setProcessPlanStartDay(transDate(orderPlanEndDayLocalDateTime.minusHours(stat.getProcessTotalTime()))); - } - /*褰撳伐鑹哄伐搴忓彿 > 宸ュ崟褰撳墠宸ュ簭鏃讹紝浠h〃鏄湭鏉ョ殑宸ュ簭锛屾墠杩涜璁″垝寮�宸ユ棩 鍜岃鍒掑畬宸ユ棩鐨勮绠�*/ - if( stat.getRouteProcessNumber().compareTo(stat.getCurrentProcessNumber())>0){ - /*&璁″垝寮�宸ユ棩 鍜� 璁″垝瀹屾垚鏃� 锛屽悓鏃跺ぇ浜庡綋鍓嶆棩鏈熸椂鎵ц璁$畻*/ - LocalDateTime currentEndDay = transLocalDateTime(stat.getProcessPlanEndDay()); - LocalDateTime currentStartDay = transLocalDateTime(stat.getProcessPlanStartDay()); - if(currentEndDay.isAfter(LocalDateTime.now()) && currentStartDay.isAfter(LocalDateTime.now())){ - if(last!=null){ - /*鏈紑宸ュ伐搴忕殑璁″垝寮�宸ユ棩=涓婁竴閬撳伐搴忕殑璁″垝寮�宸ユ棩+涓婁竴閬撳伐搴忕殑宸ュ簭鎬诲伐鏃躲��*/ - stat.setProcessPlanEndDay(last.getProcessPlanStartDay()); - stat.setProcessPlanStartDay(transDate(transLocalDateTime(last.getProcessPlanStartDay()).minusHours(stat.getProcessTotalTime()) )); + if(orderPlanEndDayLocalDateTime.isBefore(now)){ + hasBefore = true; + stat.setWarning(true); + stat.setProcessPlanEndDay(transDate(now)); + stat.setProcessPlanStartDay(transDate(now)); + }else { + /*璁″垝瀹屽伐鏃�=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿*/ + stat.setProcessPlanEndDay(transDate(orderPlanEndDayLocalDateTime)); + /*璁″垝寮�宸ユ棩=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿 - 宸ュ簭鎬诲伐鏃�*/ + LocalDateTime lastPlanStartDt = orderPlanEndDayLocalDateTime.minusHours(stat.getProcessTotalTime()); + 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()); + /*寮�濮嬫椂闂�=缁撴潫鏃堕棿-鎬诲伐鏃�*/ + LocalDateTime crtStartDt = transLocalDateTime(last.getProcessPlanStartDay()).minusHours(stat.getProcessTotalTime()); + /*濡傛灉寮�濮嬫椂闂村皬浜庡綋鍓嶆椂闂�*/ + if(crtStartDt.isBefore(now)){ + hasBefore=true; + stat.setWarning(true); + stat.setProcessPlanStartDay(transDate(now)); + }else { + stat.setProcessPlanStartDay(transDate(crtStartDt)); + } + } + } } last = stat; apsPlateProcessStatMapper.insertApsPlateProcessStat(stat); } + hasBefore=false; } apsPlateProcessStatMapper.removeOtherStat(batchNum); -- Gitblit v1.9.3