l2后端牛该修改
This commit is contained in:
@@ -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()) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user