diff --git a/business/src/main/java/com/fizz/business/comm/OPC/OpcMessageSend.java b/business/src/main/java/com/fizz/business/comm/OPC/OpcMessageSend.java index 3dc0614..c1effdd 100644 --- a/business/src/main/java/com/fizz/business/comm/OPC/OpcMessageSend.java +++ b/business/src/main/java/com/fizz/business/comm/OPC/OpcMessageSend.java @@ -1,13 +1,10 @@ package com.fizz.business.comm.OPC; -import com.fizz.business.constants.enums.ExitCutTypeEnum; import com.fizz.business.domain.msg.OpcMessage; import com.fizz.business.domain.msg.PdiSetup; import com.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.service.MiloService; import lombok.extern.log4j.Log4j2; -import org.apache.commons.beanutils.BeanUtils; -import org.apache.commons.compress.utils.Lists; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; @@ -37,6 +34,33 @@ public class OpcMessageSend { } + /** + * 单独写入当前钢卷号到 OPC + * 使用 pdiSetupIds 中 coilId 对应的节点 + */ + public void sendCoilId(String coilId) { + try { + String coilNode = pdiSetupIds.entrySet().stream() + .filter(e -> "coilId".equals(e.getValue())) + .map(Map.Entry::getKey) + .findFirst() + .orElse(null); + if (coilNode == null) { + log.warn("未找到 coilId 对应的 OPC 节点,写入跳过"); + return; + } + List entities = new ArrayList<>(); + entities.add(ReadWriteEntity.builder() + .identifier(coilNode) + .value(coilId) + .build()); + miloService.writeToOpcUa(entities); + log.info("写入 OPC coilId 成功,node={} value={}", coilNode, coilId); + } catch (Exception e) { + log.error("写入 OPC coilId 失败,coilId={},原因:{}", coilId, e.getMessage(), e); + } + } + private List getWriteEntities(OpcMessage msg, Map msgIds) { List entities = new ArrayList<>(); for (String key : msgIds.keySet()) { diff --git a/business/src/main/java/com/fizz/business/constants/enums/L1OperateMatEnum.java b/business/src/main/java/com/fizz/business/constants/enums/L1OperateMatEnum.java index 21c1ca2..70b7179 100644 --- a/business/src/main/java/com/fizz/business/constants/enums/L1OperateMatEnum.java +++ b/business/src/main/java/com/fizz/business/constants/enums/L1OperateMatEnum.java @@ -5,10 +5,11 @@ import com.baomidou.mybatisplus.annotation.IEnum; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import com.fizz.business.form.ChangePlanStatusForm; +import com.fizz.business.constants.enums.PlanStatusEnum; import com.fizz.business.form.L1OperateMatForm; import com.fizz.business.service.CrmPdiPlanService; -import com.fizz.business.service.client.RedisCacheManager; -import com.fizz.business.service.impl.BeanFactory; +import com.fizz.business.comm.OPC.OpcMessageSend; +import com.fizz.business.service.TrackService; import com.fizz.business.utils.MatmapUtil; import com.fizz.business.utils.WebSocketUtil; import com.fizz.business.vo.CrmPdiPlanVO; @@ -56,6 +57,14 @@ public enum L1OperateMatEnum implements IEnum, IOperateMat PRODUCING 时写入钢卷号到 OPC + if (curr.getMatId() != null) { + opcMessageSend.sendCoilId(curr.getMatId()); + } webOperateMat(WebOperateMatForm.builder() .operation(WebOperateMatEnum.PRODUCING) .entryMatId(curr.getMatId())