通信数据修正
This commit is contained in:
@@ -4,6 +4,7 @@ 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 com.fizz.business.service.LogDataService;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -25,6 +26,9 @@ public class OpcMessageSend {
|
|||||||
@Resource
|
@Resource
|
||||||
private MiloService miloService;
|
private MiloService miloService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LogDataService logDataService;
|
||||||
|
|
||||||
private void sendPdiSetup(PdiSetup pdiSetup) {
|
private void sendPdiSetup(PdiSetup pdiSetup) {
|
||||||
try {
|
try {
|
||||||
List<ReadWriteEntity> entities = getWriteEntities(pdiSetup, pdiSetupIds);
|
List<ReadWriteEntity> entities = getWriteEntities(pdiSetup, pdiSetupIds);
|
||||||
@@ -111,43 +115,6 @@ public class OpcMessageSend {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量写数据方法:通过字段名向多个点位写入数据
|
|
||||||
* @param fieldDataMap 字段名和值的映射,key 为 fieldName,value 为要写入的值
|
|
||||||
* @return 是否全部写入成功
|
|
||||||
*/
|
|
||||||
public boolean batchWriteDataByFieldName(Map<String, Object> fieldDataMap) {
|
|
||||||
try {
|
|
||||||
if (fieldDataMap == null || fieldDataMap.isEmpty()) {
|
|
||||||
log.warn("批量写数据:数据映射为空,跳过写入");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
List<ReadWriteEntity> entities = new ArrayList<>();
|
|
||||||
for (Map.Entry<String, Object> entry : fieldDataMap.entrySet()) {
|
|
||||||
String fieldName = entry.getKey();
|
|
||||||
String identifier = findIdentifierByFieldName(fieldName);
|
|
||||||
if (identifier == null) {
|
|
||||||
log.warn("未找到字段名对应的 OPC 节点路径,fieldName={},跳过该字段", fieldName);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
entities.add(ReadWriteEntity.builder()
|
|
||||||
.identifier(identifier)
|
|
||||||
.value(entry.getValue())
|
|
||||||
.build());
|
|
||||||
}
|
|
||||||
if (entities.isEmpty()) {
|
|
||||||
log.warn("批量写数据:没有有效的字段映射,跳过写入");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
miloService.writeToOpcUa(entities);
|
|
||||||
log.info("批量写入 OPC 数据成功,共 {} 个点位", entities.size());
|
|
||||||
return true;
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("批量写入 OPC 数据失败,原因:{}", e.getMessage(), e);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量写数据方法:向多个点位写入数据(直接使用节点路径)
|
* 批量写数据方法:向多个点位写入数据(直接使用节点路径)
|
||||||
* @param dataMap 点位标识符和值的映射,key 为 identifier,value 为要写入的值
|
* @param dataMap 点位标识符和值的映射,key 为 identifier,value 为要写入的值
|
||||||
@@ -155,10 +122,6 @@ public class OpcMessageSend {
|
|||||||
*/
|
*/
|
||||||
public boolean batchWriteData(Map<String, Object> dataMap) {
|
public boolean batchWriteData(Map<String, Object> dataMap) {
|
||||||
try {
|
try {
|
||||||
if (dataMap == null || dataMap.isEmpty()) {
|
|
||||||
log.warn("批量写数据:数据映射为空,跳过写入");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
List<ReadWriteEntity> entities = new ArrayList<>();
|
List<ReadWriteEntity> entities = new ArrayList<>();
|
||||||
for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
|
for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
|
||||||
entities.add(ReadWriteEntity.builder()
|
entities.add(ReadWriteEntity.builder()
|
||||||
@@ -167,10 +130,10 @@ public class OpcMessageSend {
|
|||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
miloService.writeToOpcUa(entities);
|
miloService.writeToOpcUa(entities);
|
||||||
log.info("批量写入 OPC 数据成功,共 {} 个点位", entities.size());
|
logDataService.logInfo("WRITE","批量写入 OPC 数据成功,共"+ entities.size()+ "个点位");
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("批量写入 OPC 数据失败,原因:{}", e.getMessage(), e);
|
logDataService.logInfo("WRITE","批量写入 OPC 数据失败,原因:"+ e.getMessage()+","+ e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.fizz.business.service.CrmPdiPlanService;
|
|||||||
import com.fizz.business.comm.OPC.OpcMessageSend;
|
import com.fizz.business.comm.OPC.OpcMessageSend;
|
||||||
import com.fizz.business.service.client.RedisCacheManager;
|
import com.fizz.business.service.client.RedisCacheManager;
|
||||||
import com.fizz.business.service.impl.BeanFactory;
|
import com.fizz.business.service.impl.BeanFactory;
|
||||||
|
import com.fizz.business.service.strip.SegmentTrackerService;
|
||||||
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;
|
||||||
@@ -40,6 +41,14 @@ public enum L1OperateMatEnum implements IEnum<String>, IOperateMat<L1OperateMatF
|
|||||||
MatmapUtil.setMatmap(form.getPorIdx(), form.getEntryMatId(), form.getPlanId(), form.getPlanNo());
|
MatmapUtil.setMatmap(form.getPorIdx(), form.getEntryMatId(), form.getPlanId(), form.getPlanNo());
|
||||||
// 钢卷上线时, 缓存工艺规程
|
// 钢卷上线时, 缓存工艺规程
|
||||||
// BeanFactory.getBean(RedisCacheManager.class).setCoilSetup(form.getPlanId());
|
// BeanFactory.getBean(RedisCacheManager.class).setCoilSetup(form.getPlanId());
|
||||||
|
// ONLINE 时同步下发入口参数 + 张力下一设定值
|
||||||
|
try {
|
||||||
|
BeanFactory.getBean(SegmentTrackerService.class)
|
||||||
|
.sendAllPdiOnOnline(form.getEntryMatId(), form.getPorIdx());
|
||||||
|
} catch (Exception e) {
|
||||||
|
BeanFactory.getBean(com.fizz.business.service.LogDataService.class)
|
||||||
|
.logWarn("L1-ONLINE", "ONLINE下发异常, coilId={}, porIdx={}, err={}", form.getEntryMatId(), form.getPorIdx(), e.toString());
|
||||||
|
}
|
||||||
WebSocketUtil.sendSignalMsg(form);
|
WebSocketUtil.sendSignalMsg(form);
|
||||||
WebSocketUtil.sendMatmapMsg();
|
WebSocketUtil.sendMatmapMsg();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,9 +77,6 @@ public class LogDataServiceImpl extends ServiceImpl<LogDataMapper, LogData> impl
|
|||||||
@Override
|
@Override
|
||||||
public void logInfo(String module, String content, Object... args) {
|
public void logInfo(String module, String content, Object... args) {
|
||||||
try {
|
try {
|
||||||
if (args.length > 0) {
|
|
||||||
content = formatMessage(content, args);
|
|
||||||
}
|
|
||||||
saveLogData("INFORMATION", module, content);
|
saveLogData("INFORMATION", module, content);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("没存进去,没事,{}",e);
|
log.error("没存进去,没事,{}",e);
|
||||||
@@ -88,9 +85,6 @@ public class LogDataServiceImpl extends ServiceImpl<LogDataMapper, LogData> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void logWarn(String module, String content, Object... args) {
|
public void logWarn(String module, String content, Object... args) {
|
||||||
if (args.length > 0) {
|
|
||||||
content = formatMessage(content, args);
|
|
||||||
}
|
|
||||||
saveLogData("WARN", module, content);
|
saveLogData("WARN", module, content);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,34 +99,4 @@ public class LogDataServiceImpl extends ServiceImpl<LogDataMapper, LogData> impl
|
|||||||
save(logData);
|
save(logData);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String formatMessage(String pattern, Object[] arguments) {
|
|
||||||
if (pattern == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (arguments == null || arguments.length == 0) {
|
|
||||||
return pattern;
|
|
||||||
}
|
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
int argIndex = 0;
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
while (i < pattern.length()) {
|
|
||||||
char c = pattern.charAt(i);
|
|
||||||
if (c == '{' && i + 1 < pattern.length() && pattern.charAt(i + 1) == '}') {
|
|
||||||
if (argIndex < arguments.length) {
|
|
||||||
sb.append(String.valueOf(arguments[argIndex++]));
|
|
||||||
} else {
|
|
||||||
sb.append("{}");
|
|
||||||
}
|
|
||||||
i += 2;
|
|
||||||
} else {
|
|
||||||
sb.append(c);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.fizz.business.service.impl;
|
|||||||
import com.fizz.business.comm.OPC.OpcMessageSend;
|
import com.fizz.business.comm.OPC.OpcMessageSend;
|
||||||
import com.fizz.business.form.OpcBatchWriteDataForm;
|
import com.fizz.business.form.OpcBatchWriteDataForm;
|
||||||
import com.fizz.business.form.OpcWriteDataForm;
|
import com.fizz.business.form.OpcWriteDataForm;
|
||||||
|
import com.fizz.business.service.LogDataService;
|
||||||
import com.fizz.business.service.OpcDataService;
|
import com.fizz.business.service.OpcDataService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -22,6 +23,7 @@ import java.util.stream.Collectors;
|
|||||||
public class OpcDataServiceImpl implements OpcDataService {
|
public class OpcDataServiceImpl implements OpcDataService {
|
||||||
|
|
||||||
private final OpcMessageSend opcMessageSend;
|
private final OpcMessageSend opcMessageSend;
|
||||||
|
private final LogDataService logDataService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean writeData(OpcWriteDataForm form) {
|
public boolean writeData(OpcWriteDataForm form) {
|
||||||
@@ -36,13 +38,44 @@ public class OpcDataServiceImpl implements OpcDataService {
|
|||||||
@Override
|
@Override
|
||||||
public boolean batchWriteData(OpcBatchWriteDataForm form) {
|
public boolean batchWriteData(OpcBatchWriteDataForm form) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
int rawSize = form.getDataList().size();
|
||||||
|
|
||||||
|
int nullItemCount = 0;
|
||||||
|
int nullFieldNameCount = 0;
|
||||||
|
int nullValueCount = 0;
|
||||||
|
StringBuilder nullValueFields = new StringBuilder();
|
||||||
|
|
||||||
|
for (int i = 0; i < form.getDataList().size(); i++) {
|
||||||
|
OpcWriteDataForm d = form.getDataList().get(i);
|
||||||
|
if (d == null) {
|
||||||
|
nullItemCount++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (d.getFieldName() == null) {
|
||||||
|
nullFieldNameCount++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (d.getValue() == null) {
|
||||||
|
nullValueCount++;
|
||||||
|
if (nullValueFields.length() < 1500) {
|
||||||
|
if (nullValueFields.length() > 0) {
|
||||||
|
nullValueFields.append(",");
|
||||||
|
}
|
||||||
|
nullValueFields.append(d.getFieldName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Map<String, Object> fieldDataMap = form.getDataList().stream()
|
Map<String, Object> fieldDataMap = form.getDataList().stream()
|
||||||
|
.filter(d -> d != null && d.getFieldName() != null)
|
||||||
.collect(Collectors.toMap(
|
.collect(Collectors.toMap(
|
||||||
OpcWriteDataForm::getFieldName,
|
OpcWriteDataForm::getFieldName,
|
||||||
OpcWriteDataForm::getValue,
|
OpcWriteDataForm::getValue,
|
||||||
(v1, v2) -> v2 // 如果有重复的 key,保留后面的值
|
(v1, v2) -> v2 // 如果有重复的 key,保留后面的值
|
||||||
));
|
));
|
||||||
return opcMessageSend.batchWriteDataByFieldName(fieldDataMap);
|
|
||||||
|
return opcMessageSend.batchWriteData(fieldDataMap);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("批量写入 OPC 数据异常", e);
|
log.error("批量写入 OPC 数据异常", e);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -73,16 +73,6 @@ public class TrackServiceImpl implements TrackService {
|
|||||||
public void l1OperateMat(L1OperateMatForm form) {
|
public void l1OperateMat(L1OperateMatForm form) {
|
||||||
|
|
||||||
log.info("l1 operate mat: {}", JSON.toJSONString(form));
|
log.info("l1 operate mat: {}", JSON.toJSONString(form));
|
||||||
|
|
||||||
// NEW/READY -> ONLINE:下发张力下一设定值
|
|
||||||
if (form.getOperation() == com.fizz.business.constants.enums.L1OperateMatEnum.ONLINE) {
|
|
||||||
try {
|
|
||||||
segmentTrackerService.sendAllPdiOnOnline(form.getEntryMatId(), form.getPorIdx());
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("张力Next下发异常, coilId={} err={}", form.getEntryMatId(), e.toString(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
form.getOperation().operate(form);
|
form.getOperation().operate(form);
|
||||||
proMatmapService.flushMatmap();
|
proMatmapService.flushMatmap();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.fizz.business.service.strip;
|
|||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.fizz.business.constants.enums.DeviceEnum;
|
import com.fizz.business.constants.enums.DeviceEnum;
|
||||||
import com.fizz.business.constants.enums.L1OperateMatEnum;
|
import com.fizz.business.constants.enums.L1OperateMatEnum;
|
||||||
|
import com.fizz.business.domain.PdiSetups;
|
||||||
import com.fizz.business.domain.msg.AppMeasureCoatMessage;
|
import com.fizz.business.domain.msg.AppMeasureCoatMessage;
|
||||||
import com.fizz.business.domain.msg.AppMeasureEntryMessage;
|
import com.fizz.business.domain.msg.AppMeasureEntryMessage;
|
||||||
import com.fizz.business.domain.msg.AppMeasureExitMessage;
|
import com.fizz.business.domain.msg.AppMeasureExitMessage;
|
||||||
@@ -22,6 +23,7 @@ import com.fizz.business.service.TrackService;
|
|||||||
import com.fizz.business.service.impl.SegmentService;
|
import com.fizz.business.service.impl.SegmentService;
|
||||||
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 lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
@@ -454,22 +456,21 @@ public class SegmentTrackerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private PdiSetups loadPdiSetup(String coilId, String planId) {
|
||||||
private com.fizz.business.domain.PdiSetups loadPdiSetup(String coilId, String planId) {
|
|
||||||
if (planId == null) {
|
if (planId == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
com.fizz.business.domain.PdiSetups query = new com.fizz.business.domain.PdiSetups();
|
com.fizz.business.domain.PdiSetups query = new com.fizz.business.domain.PdiSetups();
|
||||||
query.setCoilid(coilId);
|
query.setCoilid(coilId);
|
||||||
query.setPlanid(planId);
|
query.setPlanid(planId);
|
||||||
java.util.List<com.fizz.business.domain.PdiSetups> setups = pdiSetupService.selectPdiSetupList(query);
|
List<com.fizz.business.domain.PdiSetups> setups = pdiSetupService.selectPdiSetupList(query);
|
||||||
return (setups != null && !setups.isEmpty()) ? setups.get(0) : null;
|
return (setups != null && !setups.isEmpty()) ? setups.get(0) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NEW/READY -> ONLINE:下发全线张力“下一设定值”(Next)
|
* NEW/READY -> ONLINE:下发全线张力“下一设定值”(Next)
|
||||||
*/
|
*/
|
||||||
private void addDriveTensionNextFields(java.util.List<OpcWriteDataForm> dataList, Integer porIdx, com.fizz.business.domain.PdiSetups setup) {
|
private void addDriveTensionNextFields(List<OpcWriteDataForm> dataList, Integer porIdx, PdiSetups setup) {
|
||||||
if (setup == null) {
|
if (setup == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -490,7 +491,7 @@ public class SegmentTrackerService {
|
|||||||
dataList.add(buildOpcWrite("tensionTrNext", setup.getTrTension()));
|
dataList.add(buildOpcWrite("tensionTrNext", setup.getTrTension()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addEntryPdiFields(java.util.List<OpcWriteDataForm> dataList, String coilId, com.fizz.business.vo.CrmPdiPlanVO plan) {
|
private void addEntryPdiFields(List<OpcWriteDataForm> dataList, String coilId, CrmPdiPlanVO plan) {
|
||||||
dataList.add(buildOpcWrite("coilId", coilId));
|
dataList.add(buildOpcWrite("coilId", coilId));
|
||||||
dataList.add(buildOpcWrite("entryCoilWeight", plan.getEntryWeight()));
|
dataList.add(buildOpcWrite("entryCoilWeight", plan.getEntryWeight()));
|
||||||
dataList.add(buildOpcWrite("entryCoilLength", plan.getEntryLength()));
|
dataList.add(buildOpcWrite("entryCoilLength", plan.getEntryLength()));
|
||||||
@@ -499,37 +500,24 @@ public class SegmentTrackerService {
|
|||||||
dataList.add(buildOpcWrite("entryCoilInnerDia", plan.getEntryInnerDiameter()));
|
dataList.add(buildOpcWrite("entryCoilInnerDia", plan.getEntryInnerDiameter()));
|
||||||
dataList.add(buildOpcWrite("entryCoilOuterDia", plan.getEntryOuterDiameter()));
|
dataList.add(buildOpcWrite("entryCoilOuterDia", plan.getEntryOuterDiameter()));
|
||||||
dataList.add(buildOpcWrite("alloyCode", plan.getSteelGrade()));
|
dataList.add(buildOpcWrite("alloyCode", plan.getSteelGrade()));
|
||||||
dataList.add(buildOpcWrite("splitNum", plan.getSplitNum()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NEW/READY -> ONLINE:入口卷参数 + 全线张力“下一设定值”(Next) 一次性下发
|
* NEW/READY -> ONLINE:入口卷参数 + 全线张力“下一设定值”(Next) 一次性下发
|
||||||
*/
|
*/
|
||||||
public void sendAllPdiOnOnline(String coilId, Integer porIdx) {
|
public void sendAllPdiOnOnline(String coilId, Integer porIdx) {
|
||||||
try {
|
|
||||||
com.fizz.business.vo.CrmPdiPlanVO plan = crmPdiPlanService.getByCoilIdAndOperId(coilId);
|
|
||||||
if (plan == null) {
|
|
||||||
logDataService.logWarn("MATMAP-TRACK", "ONLINE下发跳过:未找到计划信息, coilId=" + coilId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
com.fizz.business.domain.PdiSetups setup = loadPdiSetup(coilId, plan.getPlanid());
|
CrmPdiPlanVO plan = crmPdiPlanService.getByCoilIdAndOperId(coilId);
|
||||||
if (setup == null) {
|
|
||||||
logDataService.logWarn("MATMAP-TRACK", "ONLINE下发跳过:未找到pdi_setup, coilId=" + coilId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
java.util.List<OpcWriteDataForm> dataList = new java.util.ArrayList<>();
|
PdiSetups setup = loadPdiSetup(coilId, plan.getPlanid());
|
||||||
addEntryPdiFields(dataList, coilId, plan);
|
List<OpcWriteDataForm> dataList = new ArrayList<>();
|
||||||
addDriveTensionNextFields(dataList, porIdx, setup);
|
addEntryPdiFields(dataList, coilId, plan);
|
||||||
|
addDriveTensionNextFields(dataList, porIdx, setup);
|
||||||
|
OpcBatchWriteDataForm opcForm = new OpcBatchWriteDataForm();
|
||||||
|
opcForm.setDataList(dataList);
|
||||||
|
boolean ok = opcDataService.batchWriteData(opcForm);
|
||||||
|
logDataService.logInfo("MATMAP-TRACK", "ONLINE下发完成(入口参数+张力Next), coilId=" + coilId + ", ok=" + ok);
|
||||||
|
|
||||||
OpcBatchWriteDataForm opcForm = new OpcBatchWriteDataForm();
|
|
||||||
opcForm.setDataList(dataList);
|
|
||||||
boolean ok = opcDataService.batchWriteData(opcForm);
|
|
||||||
logDataService.logInfo("MATMAP-TRACK", "ONLINE下发完成(入口参数+张力Next), coilId=" + coilId + ", ok=" + ok);
|
|
||||||
} catch (Exception ex) {
|
|
||||||
logDataService.logWarn("MATMAP-TRACK", "ONLINE下发异常(入口参数+张力Next), coilId=" + coilId + ", err=" + String.valueOf(ex));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user