l2后端牛该修改

This commit is contained in:
2025-12-16 13:20:59 +08:00
parent 9a491fa253
commit aeed29dbca
3 changed files with 46 additions and 5 deletions

View File

@@ -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<ReadWriteEntity> 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<ReadWriteEntity> getWriteEntities(OpcMessage msg, Map<String,String> msgIds) {
List<ReadWriteEntity> entities = new ArrayList<>();
for (String key : msgIds.keySet()) {

View File

@@ -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<String>, IOperateMat<L1OperateMatF
@Override
public void operate(L1OperateMatForm form) {
PRODUCING.syncPlanStatus(form.getPlanId(),form.getEntryMatId());
// L1 指令将计划置为 PRODUCING 时,写入钢卷号到 OPC
try {
if (form.getEntryMatId() != null) {
BeanFactory.getBean(OpcMessageSend.class).sendCoilId(form.getEntryMatId());
}
} catch (Exception e) {
log.error("写入 OPC coilId 失败, coilId={}", form.getEntryMatId(), e);
}
WebSocketUtil.sendSignalMsg(form);
}

View File

@@ -13,6 +13,7 @@ import com.fizz.business.form.AdjustPosForm;
import com.fizz.business.form.L1OperateMatForm;
import com.fizz.business.form.WebOperateMatForm;
import com.fizz.business.service.CrmPdiPlanService;
import com.fizz.business.comm.OPC.OpcMessageSend;
import com.fizz.business.service.ProMatmapService;
import com.fizz.business.service.TrackService;
import com.fizz.business.service.client.RedisCacheManager;
@@ -52,6 +53,9 @@ public class TrackServiceImpl implements TrackService {
@Autowired
CrmPdiPlanService crmPdiPlanService;
@Autowired
OpcMessageSend opcMessageSend;
@Override
public void webOperateMat(WebOperateMatForm form) {
@@ -234,6 +238,10 @@ public class TrackServiceImpl implements TrackService {
// 判断当前计划状态如果是ONLINE需要变更为PRODUCING
CrmPdiPlanVO plan = crmPdiPlanService.getByCoilIdAndOperId(curr.getMatId());
if (Objects.equals(plan.getStatus(), ONLINE.name())) {
// ONLINE -> PRODUCING 时写入钢卷号到 OPC
if (curr.getMatId() != null) {
opcMessageSend.sendCoilId(curr.getMatId());
}
webOperateMat(WebOperateMatForm.builder()
.operation(WebOperateMatEnum.PRODUCING)
.entryMatId(curr.getMatId())