From e76f0739e647fe8a7e0e2618914e2faff554b1b7 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期一, 17 十一月 2025 17:33:23 +0800
Subject: [PATCH] 解决冲突
---
mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceInteractionServiceImpl.java | 82 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 82 insertions(+), 0 deletions(-)
diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceInteractionServiceImpl.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceInteractionServiceImpl.java
new file mode 100644
index 0000000..9c6fb3f
--- /dev/null
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceInteractionServiceImpl.java
@@ -0,0 +1,82 @@
+package com.mes.device.service.impl;
+
+import com.mes.device.request.DeviceGlassFeedRequest;
+import com.mes.device.service.DeviceControlProfileService;
+import com.mes.device.service.DeviceInteractionService;
+import com.mes.device.service.DevicePlcOperationService;
+import com.mes.device.vo.DeviceControlProfile;
+import com.mes.device.vo.DevicePlcVO;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 璁惧浜や簰閫昏緫瀹炵幇
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class DeviceInteractionServiceImpl implements DeviceInteractionService {
+
+ private final DeviceControlProfileService controlProfileService;
+ private final DevicePlcOperationService devicePlcOperationService;
+
+ @Override
+ public DevicePlcVO.OperationResult feedGlass(DeviceGlassFeedRequest request) {
+ DeviceControlProfile profile = controlProfileService.getProfile(request.getDeviceId());
+ Map<String, Object> payload = buildGlassPayload(profile, request);
+ String opName = "鐜荤拑涓婃枡";
+ if (request.getPositionCode() != null) {
+ opName = opName + "(" + request.getPositionCode() + ")";
+ }
+ return devicePlcOperationService.writeFields(request.getDeviceId(), payload, opName);
+ }
+
+ private Map<String, Object> buildGlassPayload(DeviceControlProfile profile, DeviceGlassFeedRequest request) {
+ if (CollectionUtils.isEmpty(profile.getGlassSlots())) {
+ throw new IllegalStateException("璁惧鏈厤缃幓鐠冩Ы浣嶄俊鎭�");
+ }
+ List<String> glassIds = request.getGlassIds();
+ Map<String, Object> payload = new HashMap<>();
+
+ // 鍐欏叆鐜荤拑ID
+ for (int i = 0; i < profile.getGlassSlots().size(); i++) {
+ DeviceControlProfile.GlassSlot slot = profile.getGlassSlots().get(i);
+ String value = (glassIds != null && i < glassIds.size()) ? glassIds.get(i) : "";
+ payload.put(slot.getField(), value);
+ }
+
+ // 鍐欏叆鐜荤拑鏁伴噺
+ if (profile.getGlassCountField() != null) {
+ int count = glassIds != null ? glassIds.size() : 0;
+ payload.put(profile.getGlassCountField(), count);
+ }
+
+ // 鍐欏叆浣嶇疆
+ if (profile.getPositionField() != null) {
+ Integer positionValue = request.getPositionValue();
+ if (positionValue == null && request.getPositionCode() != null
+ && profile.getPositionMappings() != null) {
+ positionValue = profile.getPositionMappings().get(request.getPositionCode());
+ }
+ if (positionValue != null) {
+ payload.put(profile.getPositionField(), positionValue);
+ }
+ }
+
+ // 鑷姩瑙﹀彂璇锋眰瀛�
+ boolean trigger = request.getTriggerRequest() != null ? request.getTriggerRequest()
+ : Boolean.TRUE.equals(profile.getAutoRequest());
+ if (trigger && profile.getRequestField() != null) {
+ payload.put(profile.getRequestField(), 1);
+ }
+
+ return payload;
+ }
+}
+
--
Gitblit v1.8.0