From ea51b55feb73883040ed8a87b5a4aeb0bf94bb5e Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期一, 15 十二月 2025 17:02:27 +0800
Subject: [PATCH] 修改出片任务分批进行
---
mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java | 75 +++++++++++++++++++++++++++++++++++++
1 files changed, 74 insertions(+), 1 deletions(-)
diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java b/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java
index b77deae..5ae4704 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java
@@ -223,7 +223,7 @@
result = handleSetOnlineState(deviceConfig, params, logicParams);
break;
case "checkMesConfirm":
- result = checkMesConfirm(deviceConfig, logicParams);
+ result = checkMesConfirm(deviceConfig, params, logicParams);
break;
case "markBroken":
result = handleMarkBroken(deviceConfig, params, logicParams);
@@ -2040,6 +2040,7 @@
* 杩斿洖OperationResult.data涓殑 completed 鏍囧織琛ㄧず鏄惁宸茬‘璁ゅ畬鎴�
*/
public DevicePlcVO.OperationResult checkMesConfirm(DeviceConfig deviceConfig,
+ Map<String, Object> params,
Map<String, Object> logicParams) {
if (plcDynamicDataService == null || s7SerializerProvider == null) {
return DevicePlcVO.OperationResult.builder()
@@ -2149,6 +2150,78 @@
data.put("completed", completed);
if (completed) {
+ // MES宸茬‘璁わ紝妫�鏌ユ槸鍚﹁繕鏈夋湭鍑虹墖鐨勭幓鐠冿紙浠呭鍑虹墖浠诲姟锛�
+ boolean hasMoreGlass = false;
+ int completedCount = 0;
+ int totalCount = 0;
+
+ if (taskInfo.isOutbound && params != null) {
+ // 浠嶵askExecutionContext涓幏鍙栧凡鍑虹墖鐨勭幓鐠僆D鍒楄〃鍜屽垵濮嬬幓鐠僆D鍒楄〃
+ Object contextObj = params.get("_taskContext");
+ if (contextObj instanceof com.mes.task.model.TaskExecutionContext) {
+ com.mes.task.model.TaskExecutionContext context =
+ (com.mes.task.model.TaskExecutionContext) contextObj;
+
+ @SuppressWarnings("unchecked")
+ List<String> initialGlassIds = (List<String>) context.getSharedData().get("initialGlassIds");
+ @SuppressWarnings("unchecked")
+ List<String> outboundGlassIds = (List<String>) context.getSharedData().get("outboundGlassIds");
+
+ if (initialGlassIds != null && !initialGlassIds.isEmpty()) {
+ totalCount = initialGlassIds.size();
+ completedCount = (outboundGlassIds != null) ? outboundGlassIds.size() : 0;
+
+ // 妫�鏌ユ槸鍚︽墍鏈夌幓鐠冮兘宸插嚭鐗�
+ if (outboundGlassIds == null || !outboundGlassIds.containsAll(initialGlassIds)) {
+ hasMoreGlass = true;
+ }
+ }
+ }
+ }
+
+ // 濡傛灉杩樻湁鏈嚭鐗囩殑鐜荤拑锛屼繚鎸乸lcRequest=1锛屾竻鐞嗘湰娆′换鍔$姸鎬侊紝绛夊緟涓嬫浜や簰
+ // 杩欐牱绗簩娆′氦浜掓椂锛宑heckMesTask鍙互妫�娴嬪埌mesSend=1锛屽垱寤烘柊浠诲姟锛屽畬鏁村湴璧颁竴閬嶉�昏緫
+ if (hasMoreGlass) {
+ // 娓呯┖state鍜屾眹鎶ュ瓧锛堟湰娆′氦浜掑凡瀹屾垚锛�
+ clearTaskStates(deviceConfig, serializer);
+
+ // 娉ㄦ剰锛氫笉璁板綍lastCompletedMesRecords锛屽洜涓鸿繕鏈夋湭鍑虹墖鐨勭幓鐠冿紝浠诲姟鏈湡姝e畬鎴�
+ // 杩欐牱绗簩娆′氦浜掓椂锛屽嵆浣縈ES鍙戦�佹柊浠诲姟锛堟柊鐨勭幓鐠僆D锛夛紝涔熶笉浼氳璇垽涓烘棫浠诲姟
+
+ // 浠诲姟瀹屾垚锛屾仮澶嶄负绌洪棽鐘舵�侊紙鏈浜や簰宸插畬鎴愶級
+ statusManager.updateVehicleStatus(
+ deviceConfig.getDeviceId(), VehicleState.IDLE);
+ statusManager.clearVehicleTask(deviceConfig.getDeviceId());
+
+ // 绉婚櫎浠诲姟璁板綍锛堟湰娆′氦浜掑凡瀹屾垚锛岀瓑寰呬笅娆′氦浜掓椂鍒涘缓鏂颁换鍔★級
+ currentTasks.remove(deviceConfig.getDeviceId());
+
+ // 鍋滄浠诲姟鐩戞帶锛堟湰娆′氦浜掑凡瀹屾垚锛�
+ handleStopTaskMonitor(deviceConfig);
+
+ // 淇濇寔plcRequest=1锛堝彲浠ユ帴鏀朵笅娆′换鍔★級
+ Map<String, Object> payload = new HashMap<>();
+ payload.put("plcRequest", 1);
+ plcDynamicDataService.writePlcData(deviceConfig, payload, serializer);
+
+ log.info("鍑虹墖浠诲姟鏈浜や簰瀹屾垚锛岃繕鏈夋湭鍑虹墖鐨勭幓鐠冿紝绛夊緟涓嬫浜や簰: deviceId={}, completedCount={}, totalCount={}",
+ deviceConfig.getDeviceId(), completedCount, totalCount);
+
+ String progressMessage = String.format("鐩墠瀹屾垚鍑虹墖鐜荤拑鏁伴噺%d/%d锛岀瓑寰呬笅娆′氦浜掍换鍔�", completedCount, totalCount);
+ data.put("completed", false); // 鏍囪涓烘湭瀹屾垚锛屽洜涓鸿繕鏈夋湭鍑虹墖鐨勭幓鐠�
+ data.put("waiting", true);
+ data.put("waitingReason", "moreGlassToOutbound");
+ data.put("completedCount", completedCount);
+ data.put("totalCount", totalCount);
+
+ return DevicePlcVO.OperationResult.builder()
+ .success(true)
+ .message(String.format("鍑虹墖浠诲姟鏈浜や簰瀹屾垚锛歁ES宸茬‘璁わ紙mesConfirm=1锛夛紝宸叉竻绌簊tate鍜屾眹鎶ュ瓧銆�%s銆傚ぇ杞︾┖闂诧紙plcRequest=1锛夛紝绛夊緟MES鍙戦�佷笅娆′换鍔�", progressMessage))
+ .data(data)
+ .build();
+ }
+
+ // 鎵�鏈夌幓鐠冮兘宸插嚭鐗囷紝姝e父瀹屾垚娴佺▼
// MES宸茬‘璁わ紝娓呯┖state鍜屾眹鎶ュ瓧
clearTaskStates(deviceConfig, serializer);
--
Gitblit v1.8.0