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 "";
}
}