OPCLink调用

tags/yfai-pcn-ext-v1.0
jun 12 months ago
parent ed187a2a84
commit 63c6a6e955

@ -1,9 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.api.busi;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.MesOpcLinkModel;
import cn.estsh.i3plus.pojo.mes.model.MesOpcLinkReturnModel;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.ApiOperation;
@ -25,4 +23,11 @@ public interface IWriteOPCEquipmentService {
@ApiOperation(value = "writeVariableHttp")
String writeVariableHttp(String equipmentId,String channel,String clientHandle,String v, String wsUrl)throws Exception;
@ApiOperation(value = "写值")
MesOpcLinkReturnModel writeVariable(MesOpcLinkModel mesOpcLinkModel);
@ApiOperation(value = "读取")
MesOpcLinkReturnModel readVariable(MesOpcLinkModel mesOpcLinkModel);
}

@ -0,0 +1,57 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.opc;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWriteOPCEquipmentService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.model.MesOpcLinkModel;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :opc
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/6/3 10:24
* @Modify:
**/
@RestController
@Api(tags = "opc")
@RequestMapping(MesCommonConstant.MES_YANFEN + "/opc")
@Slf4j
public class MesOpcLinkController {
@Autowired
private IWriteOPCEquipmentService iWriteOPCEquipmentService;
@PostMapping("/write-variable")
@ApiOperation(value = "写值")
public ResultBean writeVariable(MesOpcLinkModel mesOpcLinkModel) {
try {
return ResultBean.success("执行成功").setResultObject(iWriteOPCEquipmentService.writeVariable(mesOpcLinkModel));
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping("/read-variable")
@ApiOperation(value = "读值")
public ResultBean readVariable(MesOpcLinkModel mesOpcLinkModel) {
try {
return ResultBean.success("执行成功").setResultObject(iWriteOPCEquipmentService.readVariable(mesOpcLinkModel));
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -1,19 +1,30 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWriteOPCEquipmentService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.api.iservice.base.IConfigService;
import cn.estsh.i3plus.mes.pcn.util.datatable.DataColumnCollection;
import cn.estsh.i3plus.platform.common.tool.HttpClientTool;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.WmsEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesConfig;
import cn.estsh.i3plus.pojo.mes.model.MesOpcLinkModel;
import cn.estsh.i3plus.pojo.mes.model.MesOpcLinkReturnModel;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.hutool.json.XML;
import com.alibaba.excel.util.StringUtils;
import cn.estsh.impp.framework.boot.util.ResultBean;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@ -21,8 +32,10 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @Description : WriteOPCEquipmentServiceImpl
@ -33,6 +46,10 @@ import java.util.Map;
@Slf4j
@Service("WriteOPCEquipmentServiceImpl")
public class WriteOPCEquipmentServiceImpl implements IWriteOPCEquipmentService {
@Autowired
private IConfigService configService;
@Override
public ResultBean doOPCEquipment(List<Map<String, Object>> listData,String xmlString) {
@ -111,6 +128,53 @@ public class WriteOPCEquipmentServiceImpl implements IWriteOPCEquipmentService {
return s;
}
@Override
public MesOpcLinkReturnModel writeVariable(MesOpcLinkModel mesOpcLinkModel) {
MesConfig mesConfigByCfgCode = configService.getMesConfigByCfgCode(MesPcnExtConstWords.OPC_LINK_URL);
if (Objects.isNull(mesConfigByCfgCode) || StringUtil.isEmpty(mesConfigByCfgCode.getCfgValue())) {
MesPcnException.throwFlowException("系统参数【%s】未维护",MesPcnExtConstWords.OPC_LINK_URL);
}
String requestUrl = mesConfigByCfgCode.getCfgValue() + MesPcnExtConstWords.OPC_WRITE_VARIABLE;
Map<String, String> params = new HashMap<>();
params.put(MesPcnExtConstWords.VALUE, mesOpcLinkModel.getValue());
params.put(MesPcnExtConstWords.CLIENT_HANDLE, mesOpcLinkModel.getClientHandle());
params.put(MesPcnExtConstWords.CHANNEL, mesOpcLinkModel.getChannel());
params.put(MesPcnExtConstWords.EQUIPMENT_ID, mesOpcLinkModel.getEquipmentId());
String data = HttpClientTool.doHttpUrl(CommonEnumUtil.HTTP_METHOD_TYPE.POST, false, requestUrl, params, null, null);
MesOpcLinkReturnModel returnModel = null;
if (!StringUtils.isEmpty(data)) {
returnModel = JsonUtilTool.decode(data, MesOpcLinkReturnModel.class);
} else {
log.error("HTTP[{}]调用opcLink写值接口失败", requestUrl);
}
return returnModel;
}
@Override
public MesOpcLinkReturnModel readVariable(MesOpcLinkModel mesOpcLinkModel) {
MesConfig mesConfigByCfgCode = configService.getMesConfigByCfgCode(MesPcnExtConstWords.OPC_LINK_URL);
if (Objects.isNull(mesConfigByCfgCode) || StringUtil.isEmpty(mesConfigByCfgCode.getCfgValue())) {
MesPcnException.throwFlowException("系统参数【%s】未维护",MesPcnExtConstWords.OPC_LINK_URL);
}
String requestUrl = mesConfigByCfgCode.getCfgValue() + MesPcnExtConstWords.OPC_READ_VARIABLE;
Map<String, String> params = new HashMap<>();
params.put(MesPcnExtConstWords.VALUE, mesOpcLinkModel.getValue());
params.put(MesPcnExtConstWords.CLIENT_HANDLE, mesOpcLinkModel.getClientHandle());
params.put(MesPcnExtConstWords.CHANNEL, mesOpcLinkModel.getChannel());
params.put(MesPcnExtConstWords.EQUIPMENT_ID, mesOpcLinkModel.getEquipmentId());
String data = HttpClientTool.doHttpUrl(CommonEnumUtil.HTTP_METHOD_TYPE.POST, false, requestUrl, params, null, null);
MesOpcLinkReturnModel returnModel = null;
if (!StringUtils.isEmpty(data)) {
returnModel = JsonUtilTool.decode(data, MesOpcLinkReturnModel.class);
} else {
log.error("HTTP[{}]调用opcLink读取接口失败", requestUrl);
}
return returnModel;
}
private String convertListToXml(DataColumnCollection newTable, List<Map<String, Object>> listData, String rootNodeName, String nodeName,
String rootClassName, String nodeClassName) {
if (listData == null || listData.size() == 0) {

@ -166,7 +166,14 @@ public class MesPcnExtConstWords {
// 上下文: 非排序产品加工规则信息
public static final String PROD_RULE_NOSORT_DATA_CONTEXT = "PROD_RULE_NOSORT_DATA_CONTEXT";
/***
* OPC
*/
public static final String OPC_LINK_URL="OPC_LINK_URL";
public static final String VALUE="value";
public static final String CLIENT_HANDLE="clientHandle";
public static final String CHANNEL="channel";
public static final String EQUIPMENT_ID="equipmentId";
public static final String OPC_WRITE_VARIABLE="/api/OPCService/WriteVariable";
public static final String OPC_READ_VARIABLE="/api/OPCService/ReadVariable";
}

Loading…
Cancel
Save