From c40ecb6c16e2d86255d3422d7c87100e2fe1eaea Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Mon, 3 Jun 2024 15:26:50 +0800 Subject: [PATCH] opc link --- .../api/busi/IMesEquipVariableRwExtService.java | 18 ++ .../pcn/api/busi/IWriteOPCEquipmentService.java | 33 --- ...r.java => MesEquipVariableRwExtController.java} | 25 +-- .../equiplog/MesEquipmentRwExtServiceImpl.java | 118 ++++++++++ .../equiplog/WriteOPCEquipmentServiceImpl.java | 240 --------------------- .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 8 + 6 files changed, 153 insertions(+), 289 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEquipVariableRwExtService.java delete mode 100644 modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IWriteOPCEquipmentService.java rename modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/opc/{MesOpcLinkController.java => MesEquipVariableRwExtController.java} (65%) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentRwExtServiceImpl.java delete mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/WriteOPCEquipmentServiceImpl.java diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEquipVariableRwExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEquipVariableRwExtService.java new file mode 100644 index 0000000..3c15355 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEquipVariableRwExtService.java @@ -0,0 +1,18 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi; + +import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwModel; +import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult; +import io.swagger.annotations.ApiOperation; + +public interface IMesEquipVariableRwExtService { + + @ApiOperation(value = "读写访问地址") + MesEquipVariableRwModel getRwRequestUrl(MesEquipVariableRwModel equipVariableRwModel); + + @ApiOperation(value = "写值") + MesEquipVariableRwResult writeVariable(MesEquipVariableRwModel equipVariableRwModel); + + @ApiOperation(value = "读取") + MesEquipVariableRwResult readVariable(MesEquipVariableRwModel equipVariableRwModel); + +} diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IWriteOPCEquipmentService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IWriteOPCEquipmentService.java deleted file mode 100644 index 4c08b1a..0000000 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IWriteOPCEquipmentService.java +++ /dev/null @@ -1,33 +0,0 @@ -package cn.estsh.i3plus.ext.mes.pcn.api.busi; - -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; - -import java.util.List; -import java.util.Map; - -/** - * @Description : - * @Reference : - * @Author : - * @CreateDate : 2024-05-29 10:37 - * @Modify: - **/ -public interface IWriteOPCEquipmentService { - - @ApiOperation(value = "查询工单") - ResultBean doOPCEquipment(List> listData,String xmlString); - - @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); - - -} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/opc/MesOpcLinkController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/opc/MesEquipVariableRwExtController.java similarity index 65% rename from modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/opc/MesOpcLinkController.java rename to modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/opc/MesEquipVariableRwExtController.java index effbfbe..854a919 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/opc/MesOpcLinkController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/opc/MesEquipVariableRwExtController.java @@ -1,8 +1,8 @@ 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.api.busi.IMesEquipVariableRwExtService; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; -import cn.estsh.i3plus.pojo.mes.model.MesOpcLinkModel; +import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwModel; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; @@ -14,27 +14,20 @@ 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") +@Api(tags = "设备数据变量读写API") @RequestMapping(MesCommonConstant.MES_YANFEN + "/opc") @Slf4j -public class MesOpcLinkController { +public class MesEquipVariableRwExtController { @Autowired - private IWriteOPCEquipmentService iWriteOPCEquipmentService; + private IMesEquipVariableRwExtService equipVariableRwExtService; @PostMapping("/write-variable") @ApiOperation(value = "写值") - public ResultBean writeVariable(MesOpcLinkModel mesOpcLinkModel) { + public ResultBean writeVariable(MesEquipVariableRwModel mesOpcLinkModel) { try { - return ResultBean.success("执行成功").setResultObject(iWriteOPCEquipmentService.writeVariable(mesOpcLinkModel)); + return ResultBean.success("操作成功").setResultObject(equipVariableRwExtService.writeVariable(mesOpcLinkModel)); } catch (ImppBusiException imppException) { return ResultBean.fail(imppException); } catch (Exception e) { @@ -44,9 +37,9 @@ public class MesOpcLinkController { @PostMapping("/read-variable") @ApiOperation(value = "读值") - public ResultBean readVariable(MesOpcLinkModel mesOpcLinkModel) { + public ResultBean readVariable(MesEquipVariableRwModel mesOpcLinkModel) { try { - return ResultBean.success("执行成功").setResultObject(iWriteOPCEquipmentService.readVariable(mesOpcLinkModel)); + return ResultBean.success("读取成功").setResultObject(equipVariableRwExtService.readVariable(mesOpcLinkModel)); } catch (ImppBusiException imppException) { return ResultBean.fail(imppException); } catch (Exception e) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentRwExtServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentRwExtServiceImpl.java new file mode 100644 index 0000000..e313abb --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentRwExtServiceImpl.java @@ -0,0 +1,118 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableRwExtService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.api.iservice.base.IConfigService; +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.mes.bean.MesConfig; +import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwModel; +import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MesEquipmentRwExtServiceImpl implements IMesEquipVariableRwExtService { + + @Autowired + private IConfigService configService; + + @Override + public MesEquipVariableRwModel getRwRequestUrl(MesEquipVariableRwModel equipVariableRwModel) { + + if (StringUtils.isEmpty(equipVariableRwModel.getOrganizeCode())) return equipVariableRwModel; + + //根据cfgCode查询缓存的配置数据 + List configList = configService.doCachedConfigList(MesPcnExtConstWords.EQUIP_VARIABLE_RW_CFG, equipVariableRwModel.getOrganizeCode()); + + //根据设备标识分组 + Map> requestUrlMap = getConfigMap(configList, MesPcnExtConstWords.KEPWARE_FLAG_CFG); + //根据读写标志分组 + Map> rwApiMap = getConfigMap(configList, MesPcnExtConstWords.RW_API_CFG); + + if (CollectionUtils.isEmpty(requestUrlMap) || CollectionUtils.isEmpty(rwApiMap)) return equipVariableRwModel; + if (!rwApiMap.containsKey(MesExtEnumUtil.READ_WRITE_FLAG.READ.getValueStr()) || !rwApiMap.containsKey(MesExtEnumUtil.READ_WRITE_FLAG.WRITE.getValueStr())) return equipVariableRwModel; + + List requestUrlList = (StringUtils.isEmpty(equipVariableRwModel.getKepwareFlag()) || !requestUrlMap.containsKey(equipVariableRwModel.getKepwareFlag())) ? requestUrlMap.get(MesPcnExtConstWords.DEFAULT_URL) : requestUrlMap.get(equipVariableRwModel.getKepwareFlag()); + if (CollectionUtils.isEmpty(requestUrlList)) return equipVariableRwModel; + + //赋值读/写访问地址 + return equipVariableRwModel.readRequestUrl(requestUrlList.get(0).getCfgValue() + rwApiMap.get(MesExtEnumUtil.READ_WRITE_FLAG.READ.getValueStr()).get(0).getCfgValue()). + writeRequestUrl(requestUrlList.get(0).getCfgValue() + rwApiMap.get(MesExtEnumUtil.READ_WRITE_FLAG.WRITE.getValueStr()).get(0).getCfgValue()); + + } + + private Map> getConfigMap(List configList, String cfgType) { + List filterList = CollectionUtils.isEmpty(configList) ? null : + configList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCfgType()) && !StringUtils.isEmpty(o.getCfgKey()) && o.getCfgType().equals(MesPcnExtConstWords.RW_API_CFG))).collect(Collectors.toList()); + return CollectionUtils.isEmpty(filterList) ? null : filterList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesConfig::getCfgKey)); + } + + @Override + public MesEquipVariableRwResult writeVariable(MesEquipVariableRwModel equipVariableRwModel) { + + MesEquipVariableRwResult result = checkBefore(equipVariableRwModel); + + if (!result.getIsSuccessed()) return result; + + if (StringUtils.isEmpty(equipVariableRwModel.getValue())) return new MesEquipVariableRwResult(false).message("入参缺失必要参数[value]!"); + + Map params = new HashMap<>(); + params.put(MesPcnExtConstWords.VALUE, equipVariableRwModel.getValue()); + params.put(MesPcnExtConstWords.CLIENT_HANDLE, equipVariableRwModel.getClientHandle()); + params.put(MesPcnExtConstWords.CHANNEL, equipVariableRwModel.getChannel()); + params.put(MesPcnExtConstWords.EQUIPMENT_ID, equipVariableRwModel.getEquipId()); + + String data = HttpClientTool.doHttpUrl(CommonEnumUtil.HTTP_METHOD_TYPE.POST, false, equipVariableRwModel.getWriteRequestUrl(), params, null, null); + if (!StringUtils.isEmpty(data)) return JsonUtilTool.decode(data, MesEquipVariableRwResult.class); + else return result.isSuccessed(false).message(String.format("设备数据变量写值失败! 数据信息:[%s]", JSONObject.toJSONString(equipVariableRwModel))); + + } + + private MesEquipVariableRwResult checkBefore(MesEquipVariableRwModel equipVariableRwModel) { + + if (null == equipVariableRwModel) return new MesEquipVariableRwResult(false).message("入参为空!"); + + if (StringUtils.isEmpty(equipVariableRwModel.getOrganizeCode()) || StringUtils.isEmpty(equipVariableRwModel.getChannel()) || StringUtils.isEmpty(equipVariableRwModel.getEquipId()) || StringUtils.isEmpty(equipVariableRwModel.getClientHandle())) + return new MesEquipVariableRwResult(false).message("入参缺失必要参数,请检查参数[organizeCode][channel][equipId][clientHandle]是否缺失!"); + + if (StringUtils.isEmpty(equipVariableRwModel.getWriteRequestUrl()) || StringUtils.isEmpty(equipVariableRwModel.getReadRequestUrl())) getRwRequestUrl(equipVariableRwModel); + + if (StringUtils.isEmpty(equipVariableRwModel.getWriteRequestUrl()) || StringUtils.isEmpty(equipVariableRwModel.getReadRequestUrl())) + return new MesEquipVariableRwResult(false).message(String.format("工厂[%s]缺失系统配置信息[%s]!", equipVariableRwModel.getOrganizeCode(), MesPcnExtConstWords.EQUIP_VARIABLE_RW_CFG)); + + return new MesEquipVariableRwResult(true); + + } + + @Override + public MesEquipVariableRwResult readVariable(MesEquipVariableRwModel equipVariableRwModel) { + + MesEquipVariableRwResult result = checkBefore(equipVariableRwModel); + + if (!result.getIsSuccessed()) return result; + + Map params = new HashMap<>(); + params.put(MesPcnExtConstWords.CLIENT_HANDLE, equipVariableRwModel.getClientHandle()); + params.put(MesPcnExtConstWords.CHANNEL, equipVariableRwModel.getChannel()); + params.put(MesPcnExtConstWords.EQUIPMENT_ID, equipVariableRwModel.getEquipId()); + + String data = HttpClientTool.doHttpUrl(CommonEnumUtil.HTTP_METHOD_TYPE.POST, false, equipVariableRwModel.getReadRequestUrl(), params, null, null); + if (!StringUtils.isEmpty(data)) return JsonUtilTool.decode(data, MesEquipVariableRwResult.class); + else return result.isSuccessed(false).message(String.format("设备数据变量读值失败! 数据信息:[%s]", JSONObject.toJSONString(equipVariableRwModel))); + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/WriteOPCEquipmentServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/WriteOPCEquipmentServiceImpl.java deleted file mode 100644 index b108f55..0000000 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/WriteOPCEquipmentServiceImpl.java +++ /dev/null @@ -1,240 +0,0 @@ -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.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 com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import lombok.extern.slf4j.Slf4j; -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; - -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 - * @Author :gsz - * @Date 2024/5/29 10:48 - * @Modify - **/ -@Slf4j -@Service("WriteOPCEquipmentServiceImpl") -public class WriteOPCEquipmentServiceImpl implements IWriteOPCEquipmentService { - - @Autowired - private IConfigService configService; - - @Override - public ResultBean doOPCEquipment(List> listData,String xmlString) { - - RestTemplate restTemplate = new RestTemplate(); - HttpHeaders headers = new HttpHeaders(); -// headers.setContentType(MediaType.APPLICATION_JSON_UTF8); //application/soap+xml;charset=UTF-8 - headers.setContentType(MediaType.APPLICATION_JSON_UTF8); - cn.hutool.json.JSONObject jsonObjectParam = XML.toJSONObject(xmlString); - String content = jsonObjectParam.toString(); - HttpEntity request = new HttpEntity<>(content, headers); - String url = String.format("http://172.28.16.50:8111/WriteOPCEquipmentService" ); - ResponseEntity response = restTemplate.postForEntity(url, request, String.class); - - if (response.getStatusCode().is2xxSuccessful()) { - String bodyJson = response.getBody(); - JSONObject jsonObject = JSON.parseObject(bodyJson); - if ("0" == jsonObject.getString("code")) { - return new ResultBean(WmsEnumUtil.RC_RESPONSE_TIPS.OK.getCodeStatus(), - "OK"); - } else { - throw new ImppBusiException(String.format("Error message【%s】", jsonObject.getString("message"))); - } - } else { - throw new ImppBusiException(String.format("Error Code %s", response.getStatusCode().toString())); - } - } - @Override - public String writeVariableHttp(String equipmentId,String channel,String clientHandle,String v, String wsUrl)throws Exception{ - //服务的地址 http://172.28.16.50:8111 - wsUrl="http://172.28.16.50:8111"; - URL url = new URL(wsUrl); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - - conn.setDoInput(true); - conn.setDoOutput(true); - conn.setRequestMethod("POST"); - conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8"); - - //请求体---使用soapui获取 - StringBuffer sb = new StringBuffer(); - sb.append(""); - sb.append(""); - sb.append("http://172.28.16.50:8111/WriteOPCEquipmentService\n"); - sb.append(""); - sb.append(""); - - sb.append(""); - sb.append(""+equipmentId+""); - sb.append(""+channel+""); - sb.append(""+clientHandle+ ""); - sb.append(""+v+""); - sb.append(""); - - sb.append(""); - sb.append(""); - String soap = sb.toString(); - - conn.connect(); - - OutputStream os = conn.getOutputStream(); - os.write(soap.getBytes("UTF-8")); - - InputStream is = conn.getInputStream(); - - byte[] b = new byte[1024]; - int len = 0; - String s = ""; - while ((len = is.read(b)) != -1) { - String ss = new String(b, 0, len, "UTF-8"); - s += ss; - } - - is.close(); - os.close(); - conn.disconnect(); - - 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 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 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> listData, String rootNodeName, String nodeName, - String rootClassName, String nodeClassName) { - if (listData == null || listData.size() == 0) { - throw new RuntimeException("listData is null ! "); - } - - StringBuilder sb = new StringBuilder(); - - if (rootNodeName != null && !rootNodeName.isEmpty() && rootClassName != null && !rootClassName.isEmpty()) { - sb.append(String.format("<%s class=\"%s\">\n", rootNodeName, rootClassName)); - } - - - for (Map row : listData) { - // 子节点的类名可能为空,这种情况下不需要填充类名 - if (StringUtils.isEmpty(nodeClassName)) { - sb.append(String.format("<%s>\n", nodeName)); - } else { - sb.append(String.format("<%s class=\"%s\">\n", nodeName, nodeClassName)); - } - newTable.forEach( s -> - sb.append(String.format("<%s>%s\n", s, row.get(s.getColumnName()), s)) - ); - - sb.append(String.format("\n", nodeName)); - } - - if (rootNodeName != null && !rootNodeName.isEmpty()) { - sb.append(String.format("\n", rootNodeName)); - } - - return sb.toString(); - } -// private HashMap getData(String serviceCode, String xmlPara){ -// HashMap res = new HashMap<>(); -// String endpoint = "http://124.205.248.2:8080/eSales/esales.asmx?WSDL"; -// PostMethod postMethod = new PostMethod(endpoint); -// byte[] b; -// try { -// b = xmlPara.getBytes("utf-8"); -// InputStream is = new ByteArrayInputStream(b,0,b.length); -// RequestEntity re = new InputStreamRequestEntity(is,b.length,"application/soap+xml; charset=utf-8"); -// //把Soap请求数据添加到PostMethod中 -// postMethod.setRequestEntity(re); -// -// //生成一个HttpClient对象,并发出postMethod请求 -// HttpClient httpClient = new HttpClient(); -// int statusCode = httpClient.executeMethod(postMethod); -// if(200==statusCode){ -// String getServerData = postMethod.getResponseBodyAsString(); -// //System.out.println("----->"+getServerData); -// //获取返回值状态标识,标识为0:成功;非0:失败 -// res.put("status", "0"); -// res.put("msg", msg); -// } -// } catch (Exception e) { -// res.put("status", "1"); -// res.put("msg", e.toString()); -// e.printStackTrace(); -// } -// return res; -// } -} diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 449fcc5..7b72e9e 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -108,6 +108,14 @@ public class MesPcnExtConstWords { public static final String CUST_SN = "custSn"; + //设备数据变量读写访问配置 + public static final String EQUIP_VARIABLE_RW_CFG = "EQUIP_VARIABLE_RW_CFG"; + //kepware标识 + public static final String KEPWARE_FLAG_CFG = "KEPWARE_FLAG_CFG"; + //默认URL + public static final String DEFAULT_URL = "DEFAULT_URL"; + //读写API + public static final String RW_API_CFG = "RW_API_CFG"; // 空腔码 public static final String CAVITY_FINISH_CODE = "CAVITY_FINISH_CODE";