package com.shlanbao.tzsc.data.webservice.server.impl; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import javax.jws.WebService; import org.dom4j.Document; import org.dom4j.DocumentHelper; import com.shlanbao.tzsc.base.interceptor.PMSXmlDataInterceptor; import com.shlanbao.tzsc.utils.tools.DateUtil; /** * [功能说明]:MES webService interface * @author wanchanghuang * @createTime 2019年4月29日16:46:58 */ @WebService public class IPMSWebServiceImpl implements IPMSWebService { // 线程池 private static ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); /** * [说明]:将字符串转换成Document * @author wanchanghuang * @date 2019年4月29日16:42:14 */ public Document stringXmlToDoc(String xml) { try { // 1. 清除左右字符串空格 xml = xml.trim(); // 2 字符串判空 if ("".equals(xml)) { System.err.println("ERR:XML数据为空!!!!"); return null; } // 3 将字符串转换成document return DocumentHelper.parseText(xml); } catch (Exception e) { e.printStackTrace(); } return null; } /** * [说明]:系统握手信号接口 -同步 * * @author wanchanghuang * @date 2019年4月29日16:42:14 */ @Override public String MESSendHandshakeSignal(String strXml) { return PMSXmlDataInterceptor.getInstance().MESSendHandshakeSignal(strXml); } /** * [功能说明]:工单BOM接口 -同步 * * @author wanchanghuang * @createTime 2019年4月29日16:46:58 */ @Override public String MESSendWorkOrderBom(String strXml) { try { return PMSXmlDataInterceptor.getInstance().MESSendWorkOrderBom(stringXmlToDoc(strXml),strXml); } catch (Exception e) { e.printStackTrace(); } return "2"+DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss")+"ERR:BOM接口异常,XML不是标准的XML格式!!!"; } /** * [功能说明]:成品主数据接口-异步 * @author wanchanghuang * @createTime 2019年5月7日08:14:25 * */ @Override public void MESSendFinProductData(String strXml) { PMSXmlDataInterceptor.getInstance().MESSendFinProductData(stringXmlToDoc(strXml),strXml); } /** * [功能说明]:烟丝 / 滤棒半成品接口-异步 * @author wanchanghuang * @createTime 2019年5月7日08:14:25 * */ @Override public void MESSendSemiFinProductData(String strXml) { PMSXmlDataInterceptor.getInstance().MESSendSemiFinProductData(stringXmlToDoc(strXml),strXml); } /** * [功能说明]:卷包 / 成型 物料主数据 -异步 * @author wanchanghuang * @createTime 2019年5月7日08:14:25 * */ @Override public void MESSendPartData(String strXml) { PMSXmlDataInterceptor.getInstance().MESSendPartData(stringXmlToDoc(strXml),strXml); } /** * [功能说明]:卷包/成型工单下发 -同步 * @author wanchanghuang * @createTime 2019年5月7日08:14:25 * */ @Override public String MESSendWorkOrder(String strXml) { try { return PMSXmlDataInterceptor.getInstance().MESSendWorkOrder(stringXmlToDoc(strXml),strXml); } catch (Exception e) { e.printStackTrace(); } return "2"+DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss")+"ERR:工单接口异常,XML不是标准的XML格式!!!"; } /** * [功能说明]:工单撤销接口-同步 * @author wanchanghuang * @createTime 2019年5月7日08:14:25 * */ @Override public String MESSendOrderCancelRequest(String strXml) { try { return PMSXmlDataInterceptor.getInstance().MESSendOrderCancelRequest(stringXmlToDoc(strXml),strXml); } catch (Exception e) { e.printStackTrace(); } return "ERR:工单撤销请求接口异常,XML不是标准的XML格式!!!"; } /** * [功能说明]:物料锁定-同步 * @author wanchanghuang * @createTime 2019年5月7日08:14:25 * */ @Override public String MESSendMaterialLock(String strXml) { try { return PMSXmlDataInterceptor.getInstance().MESSendMaterialLock(stringXmlToDoc(strXml),strXml); } catch (Exception e) { e.printStackTrace(); } return "ERR:解析异常,请查看XML数据样式是否正确!!!/Message>"; } /** * [功能说明]:卷接机台物料告警接口 -异步 * @author wanchanghuang * @createTime 2019年5月15日13:00:07 * */ @Override public void MESSendEquipmentAlarm(String strXml) { try { PMSXmlDataInterceptor.getInstance().MESSendEquipmentAlarm(stringXmlToDoc(strXml),strXml); } catch (Exception e) { e.printStackTrace(); } } /** * @Title: MESSendRCapacityUnitToDAS * @Description: 额定产能单位标识代码下发接口 * @author baoshiwei * @date 2019年5月6日 * @param xml * @return */ @Override public String MESSendRCapacityUnitToDAS(String xml) { mesDataReceive("MESSendRCapacityUnitToDAS", xml); return null; } /** * @Title: MESSendRSpeedUnitToDAS * @Description: 额定车速单位标识代码下发接口 * @author baoshiwei * @date 2019年5月6日 * @param xml * @return */ @Override public String MESSendRSpeedUnitToDAS(String xml) { mesDataReceive("MESSendRSpeedUnitToDAS", xml); return null; } /** * @title: MESSendEquipmentToDAS * @Description: 设备主数据下发接口 * @author baoshiwei * @date 2019年5月6日 * @param strXml * @return */ @Override public String MESSendEquipmentToDAS(String strXml) { mesDataReceive("MESSendEquipmentToDAS", strXml); return null; } /** * @Title: MESSendEquipmentWorkOrderToDAS * @Description: 设备保养工单下发接口 * @author baoshiwei * @date 2019年5月7日 * @param strXml * @return */ @Override public String MESSendEquipmentWorkOrderToDAS(String strXml) { mesDataReceive("MESSendEquipmentWorkOrderToDAS", strXml); return null; } /** * @Title: DASSSendEquipmentRepairOrder * @Description: 维修工单下发接口 * @author baoshiwei * @date 2019年5月8日 * @param strXml * @return */ @Override public String DASSSendEquipmentRepairOrder(String strXml) { mesDataReceive("EquipmentRepairOrder",strXml); return null; } /** * @Title: MESSendUnitToDAS * @Description: 计量单位下发接口 * @author baoshiwei * @date 2019年5月14日 * @param xml * @return */ @Override public String MESSendUnitToDAS(String xml) { mesDataReceive("MESSendUnitToDAS",xml); return null; } /** * @Title: MESSendFaultDefinition * @Description: 卷包成型缺陷定义下发接口 * @author baoshiwei * @date 2019年5月14日 * @param xml * @return */ @Override public String MESSendFaultDefinition(String xml) { mesDataReceive("MESSendFaultDefinition",xml); return null; } /** * @Title: MESSendOrderCancelConfirmToDAS * @Description: 工单撤销请求确认接口 * @author baoshiwei * @date 2019年5月14日 * @param strXml * @return */ @Override public String MESSendOrderCancelConfirmToDAS(String strXml) { mesDataReceive("MESSendOrderCancelConfirmToDAS",strXml); return null; } /** * @Title: MESSendParameterSetToDAS * @Description: 工艺标准下发接口 -- 同步 * @author baoshiwei * @date 2019年5月14日 * @param strXml * @return */ @Override public String MESSendParameterSetToDAS(String strXml) { try { return PMSXmlDataInterceptor.getInstance().alalyMESSendParameterSetToDAS("MESSendParameterSetToDAS",strXml,stringXmlToDoc(strXml)); } catch (Exception e) { return "2xml解析失败"+DateUtil.datetoStr(new java.util.Date(), "yyyy-MM-dd HH:mm:ss")+""; } } /** * @Title: MESSendShiftsToDAS * @Description: 排班计划下发接口 * @author baoshiwei * @date 2019年5月14日 * @param strXml * @return */ @Override public String MESSendShiftsToDAS(String strXml) { mesDataReceive("MESSendShiftsToDAS",strXml); return null; } /** * @Title: MESSendTestResultToDAS * @Description: 卷包批次检验结果判定 * @author baoshiwei * @date 2019年5月14日 * @param strXml * @return */ @Override public String MESSendTestResultToDAS(String strXml) { mesDataReceive("MESSendTestResultToDAS",strXml); return null; } /** * @Title: MESSendWorkorderIOToDAS * @Description: 工单出入库记录下发接口 * @author baoshiwei * @date 2019年5月16日 * @param strXml * @return */ @Override public String MESSendWorkorderIOToDAS(String strXml) { mesDataReceive("MESSendWorkorderIOToDAS",strXml); return null; } /** * @Title: MESSendProdInventoryToDAS * @Description: 成品入库记录下发接口 * @author baoshiwei * @date 2019年5月16日 * @param strXml * @return */ @Override public String MESSendProdInventoryToDAS(String strXml) { mesDataReceive("MESSendProdInventoryToDAS",strXml); return null; } @Override public String MESSendSparePartsToDAS(String xml) { mesDataReceive("MESSendSparePartsToDAS",xml); return null; } /** * @Title: mesDataReceive * @Description: webservcie调用的方法,且传递 type,str参数 * @author baoshiwei * @date 2019年5月6日 * @param type * @param str */ private String mesDataReceive(String type, String str) { str = str.trim();// 去除字符串两边空格 Document doc = null; // XML空判断 if ("".equals(str)) { return "ERROR:数据异常..." + type + str; } // 将xml字符串转换成document try { doc = DocumentHelper.parseText(str); } catch (Exception e) { PMSXmlDataInterceptor.getInstance().addLog(false, "MES下发转换错误", 2, str,"XML字符串转换Document对象异常!请检查XML数据格式是否规范"); System.out.println("ERROR:XML字符串转换Document对象异常..." + str); e.printStackTrace(); } // 线程处理 final Document fdoc = doc; final String ftype = type; final String fstr = str; cachedThreadPool.execute(new Runnable() { public void run() { if ("MESSendEquipmentToDAS".equals(ftype)) { // 设备主数据 PMSXmlDataInterceptor.getInstance().alalyMESSendEquipmentToDAS(ftype, fstr, fdoc); } else if("MESSendRCapacityUnitToDAS".equals(ftype)) { // 额定产能 PMSXmlDataInterceptor.getInstance().alalyMESSendRCapacityUnitToDAS(ftype, fstr, fdoc); } else if("MESSendRSpeedUnitToDAS".equals(ftype)) { // 额定车速 PMSXmlDataInterceptor.getInstance().alalyMESSendRSpeedUnitToDAS(ftype, fstr, fdoc); }else if("MESSendEquipmentWorkOrderToDAS".equals(ftype)){ // 设备保养工单 PMSXmlDataInterceptor.getInstance().addMesSendEquipmentWorkOrder(ftype,fstr, fdoc); }else if("EquipmentRepairOrder".equals(ftype)){ // 维修呼叫工单 PMSXmlDataInterceptor.getInstance().addMesSendEquipmentRepairOrder(ftype,fstr, fdoc); }else if("MESSendUnitToDAS".equals(ftype)){ // 单位基础数据下发 PMSXmlDataInterceptor.getInstance().addMesSendUnit(ftype,fstr, fdoc); }else if("MESSendFaultDefinition".equals(ftype)){ // 卷包成型外观缺陷基础数据 PMSXmlDataInterceptor.getInstance().alalyMESSendFaultDefinition(ftype,fstr,fdoc); }else if("MESSendOrderCancelConfirmToDAS".equals(ftype)){ // MES工单撤销结果 是否确认撤销 PMSXmlDataInterceptor.getInstance().alalyMESSendOrderCancelConfirmToDAS(ftype,fstr,fdoc); }else if("MESSendShiftsToDAS".equals(ftype)){ // 排班计划 PMSXmlDataInterceptor.getInstance().alalyMESSendShiftsToDAS(ftype,fstr,fdoc); }else if("MESSendTestResultToDAS".equals(ftype)){ // 卷包批次检验结果判定 PMSXmlDataInterceptor.getInstance().alalyMESSendTestResultToDAS(ftype,fstr,fdoc); }else if("MESSendWorkorderIOToDAS".equals(ftype)){ // 工单出入库 PMSXmlDataInterceptor.getInstance().alalyMESSendWorkorderIOToDAS(ftype,fstr,fdoc); }else if("MESSendProdInventoryToDAS".equals(ftype)){ // 成品入库记录 PMSXmlDataInterceptor.getInstance().alalyMESSendProdInventoryToDAS(ftype,fstr,fdoc); } else if("MESSendSparePartsToDAS".equals(ftype)){ // 备件出库记录 PMSXmlDataInterceptor.getInstance().alalyMESSendSparePartsToDAS(ftype,fstr,fdoc); } } }); return ""; } }