l2后端牛该修改
This commit is contained in:
@@ -1,13 +1,10 @@
|
|||||||
package com.fizz.business.comm.OPC;
|
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.OpcMessage;
|
||||||
import com.fizz.business.domain.msg.PdiSetup;
|
import com.fizz.business.domain.msg.PdiSetup;
|
||||||
import com.kangaroohy.milo.model.ReadWriteEntity;
|
import com.kangaroohy.milo.model.ReadWriteEntity;
|
||||||
import com.kangaroohy.milo.service.MiloService;
|
import com.kangaroohy.milo.service.MiloService;
|
||||||
import lombok.extern.log4j.Log4j2;
|
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.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.stereotype.Service;
|
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) {
|
private List<ReadWriteEntity> getWriteEntities(OpcMessage msg, Map<String,String> msgIds) {
|
||||||
List<ReadWriteEntity> entities = new ArrayList<>();
|
List<ReadWriteEntity> entities = new ArrayList<>();
|
||||||
for (String key : msgIds.keySet()) {
|
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.JsonCreator;
|
||||||
import com.fasterxml.jackson.annotation.JsonValue;
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
import com.fizz.business.form.ChangePlanStatusForm;
|
import com.fizz.business.form.ChangePlanStatusForm;
|
||||||
|
import com.fizz.business.constants.enums.PlanStatusEnum;
|
||||||
import com.fizz.business.form.L1OperateMatForm;
|
import com.fizz.business.form.L1OperateMatForm;
|
||||||
import com.fizz.business.service.CrmPdiPlanService;
|
import com.fizz.business.service.CrmPdiPlanService;
|
||||||
import com.fizz.business.service.client.RedisCacheManager;
|
import com.fizz.business.comm.OPC.OpcMessageSend;
|
||||||
import com.fizz.business.service.impl.BeanFactory;
|
import com.fizz.business.service.TrackService;
|
||||||
import com.fizz.business.utils.MatmapUtil;
|
import com.fizz.business.utils.MatmapUtil;
|
||||||
import com.fizz.business.utils.WebSocketUtil;
|
import com.fizz.business.utils.WebSocketUtil;
|
||||||
import com.fizz.business.vo.CrmPdiPlanVO;
|
import com.fizz.business.vo.CrmPdiPlanVO;
|
||||||
@@ -56,6 +57,14 @@ public enum L1OperateMatEnum implements IEnum<String>, IOperateMat<L1OperateMatF
|
|||||||
@Override
|
@Override
|
||||||
public void operate(L1OperateMatForm form) {
|
public void operate(L1OperateMatForm form) {
|
||||||
PRODUCING.syncPlanStatus(form.getPlanId(),form.getEntryMatId());
|
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);
|
WebSocketUtil.sendSignalMsg(form);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.fizz.business.form.AdjustPosForm;
|
|||||||
import com.fizz.business.form.L1OperateMatForm;
|
import com.fizz.business.form.L1OperateMatForm;
|
||||||
import com.fizz.business.form.WebOperateMatForm;
|
import com.fizz.business.form.WebOperateMatForm;
|
||||||
import com.fizz.business.service.CrmPdiPlanService;
|
import com.fizz.business.service.CrmPdiPlanService;
|
||||||
|
import com.fizz.business.comm.OPC.OpcMessageSend;
|
||||||
import com.fizz.business.service.ProMatmapService;
|
import com.fizz.business.service.ProMatmapService;
|
||||||
import com.fizz.business.service.TrackService;
|
import com.fizz.business.service.TrackService;
|
||||||
import com.fizz.business.service.client.RedisCacheManager;
|
import com.fizz.business.service.client.RedisCacheManager;
|
||||||
@@ -52,6 +53,9 @@ public class TrackServiceImpl implements TrackService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
CrmPdiPlanService crmPdiPlanService;
|
CrmPdiPlanService crmPdiPlanService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
OpcMessageSend opcMessageSend;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void webOperateMat(WebOperateMatForm form) {
|
public void webOperateMat(WebOperateMatForm form) {
|
||||||
|
|
||||||
@@ -234,6 +238,10 @@ public class TrackServiceImpl implements TrackService {
|
|||||||
// 判断当前计划状态,如果是ONLINE,需要变更为PRODUCING
|
// 判断当前计划状态,如果是ONLINE,需要变更为PRODUCING
|
||||||
CrmPdiPlanVO plan = crmPdiPlanService.getByCoilIdAndOperId(curr.getMatId());
|
CrmPdiPlanVO plan = crmPdiPlanService.getByCoilIdAndOperId(curr.getMatId());
|
||||||
if (Objects.equals(plan.getStatus(), ONLINE.name())) {
|
if (Objects.equals(plan.getStatus(), ONLINE.name())) {
|
||||||
|
// ONLINE -> PRODUCING 时写入钢卷号到 OPC
|
||||||
|
if (curr.getMatId() != null) {
|
||||||
|
opcMessageSend.sendCoilId(curr.getMatId());
|
||||||
|
}
|
||||||
webOperateMat(WebOperateMatForm.builder()
|
webOperateMat(WebOperateMatForm.builder()
|
||||||
.operation(WebOperateMatEnum.PRODUCING)
|
.operation(WebOperateMatEnum.PRODUCING)
|
||||||
.entryMatId(curr.getMatId())
|
.entryMatId(curr.getMatId())
|
||||||
|
|||||||
Reference in New Issue
Block a user