From 082ccf97c40144fa9ba06b709a3e52413742a49c Mon Sep 17 00:00:00 2001 From: gsz Date: Wed, 29 May 2024 16:22:54 +0800 Subject: [PATCH] =?UTF-8?q?webService=E8=BD=AChttp=E6=8E=A5=E5=8F=A3=20tod?= =?UTF-8?q?o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/api/busi/IWriteOPCEquipmentService.java | 25 +++++ .../equiplog/WriteOPCEquipmentServiceImpl.java | 119 +++++++++++++++++++++ .../MesSendInitializationCmdStepSeryice.java | 10 +- .../MesSendProcessCmdStepService.java | 14 +-- 4 files changed, 154 insertions(+), 14 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IWriteOPCEquipmentService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/WriteOPCEquipmentServiceImpl.java rename modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/{equiplog => step}/MesSendInitializationCmdStepSeryice.java (87%) rename modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/{equiplog => step}/MesSendProcessCmdStepService.java (84%) 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 new file mode 100644 index 0000000..09656fb --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IWriteOPCEquipmentService.java @@ -0,0 +1,25 @@ +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.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); + +} 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 new file mode 100644 index 0000000..952d2af --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/WriteOPCEquipmentServiceImpl.java @@ -0,0 +1,119 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWriteOPCEquipmentService; +import cn.estsh.i3plus.mes.pcn.util.datatable.DataColumnCollection; +import cn.estsh.i3plus.pojo.base.enumutil.WmsEnumUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; + +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.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.List; +import java.util.Map; + +/** + * @Description : WriteOPCEquipmentServiceImpl + * @Author :gsz + * @Date 2024/5/29 10:48 + * @Modify + **/ +@Slf4j +@Service("WriteOPCEquipmentServiceImpl") +public class WriteOPCEquipmentServiceImpl implements IWriteOPCEquipmentService { + @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())); + } + } + 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-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesSendInitializationCmdStepSeryice.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendInitializationCmdStepSeryice.java similarity index 87% rename from modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesSendInitializationCmdStepSeryice.java rename to modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendInitializationCmdStepSeryice.java index e854b1e..0ec94de 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesSendInitializationCmdStepSeryice.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendInitializationCmdStepSeryice.java @@ -1,11 +1,11 @@ -package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog; +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesMouldMultiCavityService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableCfgRuleMatchDispatchService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipmentLogExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCfgCollectContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipLogDispatchContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; import cn.estsh.i3plus.mes.pcn.api.iservice.base.IPartService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; @@ -77,7 +77,7 @@ public class MesSendInitializationCmdStepSeryice extends BaseStepService { List equipmentVariableCfgList = productionProcessContext.getEquipVariableCfgListByVct(); -// equipmentVariableCfgList = productionProcessContextStepService.collectEquipmentVariableCfgList(equipmentVariableCfgList, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.INIT_INSTRUCTION_STEP.getValue()); + equipmentVariableCfgList = productionProcessContextStepService.collectEquipmentVariableCfgList(equipmentVariableCfgList, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.SEND_INIT.getValue()); MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); @@ -93,8 +93,8 @@ public class MesSendInitializationCmdStepSeryice extends BaseStepService { if (CollectionUtils.isEmpty(equipmentVariableList)) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("请检查设备数据变量信息,根据设备[%s]对应的数据变量接口逻辑信息,未配置变量类型[%s]二级变量%s相关的数据变量信息!", cellEquipContext.getEquipmentCode(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getDescription(), categoryLevelTwoList.toString())); - List collectContextList = equipmentLogExtService.doHandleEquipmentLogList(cellEquipContext, equipmentVariableList, equipmentVariableCfgList); - this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(collectContextList), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); + MesEquipLogDispatchContext equipLogDispatchContext = equipmentLogExtService.doHandleEquipmentLogList(cellEquipContext, equipmentVariableList, equipmentVariableCfgList); + this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(equipLogDispatchContext), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); //todo diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesSendProcessCmdStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendProcessCmdStepService.java similarity index 84% rename from modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesSendProcessCmdStepService.java rename to modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendProcessCmdStepService.java index 35e16ff..de3409a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesSendProcessCmdStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendProcessCmdStepService.java @@ -1,13 +1,10 @@ -package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog; +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesMouldMultiCavityService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableCfgRuleMatchDispatchService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipmentLogExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCfgCollectContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.api.iservice.base.IPartService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; @@ -86,7 +83,7 @@ public class MesSendProcessCmdStepService extends BaseStepService { List equipmentVariableCfgList = productionProcessContext.getEquipVariableCfgListByVct(); -// equipmentVariableCfgList = productionProcessContextStepService.collectEquipmentVariableCfgList(equipmentVariableCfgList, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PROCESS_INSTRUCTION_STEP.getValue()); + equipmentVariableCfgList = productionProcessContextStepService.collectEquipmentVariableCfgList(equipmentVariableCfgList, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.SEND_PROCESS.getValue()); MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); @@ -102,9 +99,8 @@ public class MesSendProcessCmdStepService extends BaseStepService { if (CollectionUtils.isEmpty(equipmentVariableList)) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("请检查设备数据变量信息,根据设备[%s]对应的数据变量接口逻辑信息,未配置变量类型[%s]二级变量%s相关的数据变量信息!", cellEquipContext.getEquipmentCode(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getDescription(), categoryLevelTwoList.toString())); - List collectContextList = equipmentLogExtService.doHandleEquipmentLogList(cellEquipContext, equipmentVariableList, equipmentVariableCfgList); - this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(collectContextList), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); - + MesEquipLogDispatchContext equipLogDispatchContext = equipmentLogExtService.doHandleEquipmentLogList(cellEquipContext, equipmentVariableList, equipmentVariableCfgList); + this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(equipLogDispatchContext), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); //发送 todo