package com.shlanbao.tzsc.base.interceptor; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.shlanbao.tzsc.pms.sch.workorder.beans.*; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.springframework.beans.factory.annotation.Autowired; import com.shlanbao.tzsc.base.dao.QmProdCheckDaoI; import com.shlanbao.tzsc.base.mapping.EqmFixRec; import com.shlanbao.tzsc.base.mapping.EqmTrouble; import com.shlanbao.tzsc.base.mapping.EqmWheelCovelParam; import com.shlanbao.tzsc.base.mapping.EqmWheelCovelPlanInfo; import com.shlanbao.tzsc.base.mapping.SchWorkorder; import com.shlanbao.tzsc.base.mapping.SchWorkorderCraft; import com.shlanbao.tzsc.data.webservice.client.SendMessageClient; import com.shlanbao.tzsc.pms.equ.assessment.EqmAssessment; import com.shlanbao.tzsc.pms.equ.assessment.EqmWkshopAssessmentBean; import com.shlanbao.tzsc.pms.equ.overhaul.beans.EqmCallServiceBean; import com.shlanbao.tzsc.pms.equ.overhaul.beans.EqmServiceSparePartBean; import com.shlanbao.tzsc.pms.md.eqp.beans.EquipmentsBean; import com.shlanbao.tzsc.pms.md.fixCode.beans.FixCodeBean; import com.shlanbao.tzsc.pms.qm.onlineCheck.bean.QMOnlineCheckBean; import com.shlanbao.tzsc.pms.qm.onlineCheck.bean.QMOnlineCheckDetailBean; import com.shlanbao.tzsc.pms.qm.self.beans.QmOutWardBatchMainInfo; import com.shlanbao.tzsc.pms.qm.self.beans.QmOutWardFaultInfo; import com.shlanbao.tzsc.pms.qm.self.beans.QmWardMainInfo; import com.shlanbao.tzsc.utils.params.SysEqpTypeBase; import com.shlanbao.tzsc.utils.tools.ApplicationContextUtil; import com.shlanbao.tzsc.utils.tools.DateUtil; import com.shlanbao.tzsc.utils.tools.StringUtil; /** * [类说明]:存放封装XML数据并反馈MES * @date 2016年6月15日15:12:03 * @author Wanchanghuang * @updateName * @updateTime * * */ public class WorkOrderStatChangeInterceptor { //定义静态变量 private static WorkOrderStatChangeInterceptor instance = null; @Autowired private QmProdCheckDaoI qmProdCheckDaoI; public static WorkOrderStatChangeInterceptor getInstance(){ if (instance == null){ instance = new WorkOrderStatChangeInterceptor(); } return instance; } /** * [功能说明]:卷包成型质量外观检验数据 * 缺陷代码: PKG001CD 长度 * PKG002YZ 圆周 * PKG005YD 硬度 * PKG006XZ 吸阻 * 单只质量 * 圆度 * 总通风率 * shisihai * */ public void dasSendQualityCheck(List beans,List> fList,String id,String param){ //通过:牌号,工单号,版本号,类型(1-成品 0-卷包烟机) ,查询最新工艺批次 String olid=""; String xml=""; int paramNum =0; for (int k=0;k faultList = fList.get(k); QMOnlineCheckBean bean1 = beans.get(k); try { Document document; document=DocumentHelper.createDocument(); //Element root = document.addElement("xml"); Element dataset = document.addElement("dataset"); Element body = dataset.addElement("data"); Element MaterialCode=body.addElement("MaterialCode"); MaterialCode.setText(bean1.getMaterialCode()); Element InspectionType=body.addElement("InspectionType"); InspectionType.setText(StringUtil.convertObj(bean1.getInspectionType())); Element CheckList=body.addElement("CheckList"); CheckList.setText("1"); Element OrderNumber=body.addElement("OrderNumber"); OrderNumber.setText(bean1.getOrderNumber()); //多批次 List bean2s=bean1.getqCBatchList(); for (QMOnlineCheckBean bean2 : bean2s) { olid+=bean2.getId()+","; // Element QCBatchs=body.addElement("QCBatchs"); Element item =body.addElement("item"); Element Timestamp=item.addElement("Timestamp"); Timestamp.setText(bean2.getTimestamp_()); Element SubBatchCode=item.addElement("SubBatchCode"); SubBatchCode.setText(bean2.getSubBatchCode()); Element SampleNumber=item.addElement("SampleNumber"); SampleNumber.setText(StringUtil.convertObjToString(bean2.getSampleNumber())); Element SampleType=item.addElement("SampleType"); SampleType.setText(StringUtil.convertObjToString(bean2.getSampleType())); if("add".equals(param)){ String[] ids = id.split(","); String sql = "select q1.moisture_content,q1.compaction from qm_finished_add q1 where q1.qmocid = "+ids[paramNum].toString(); if(null==qmProdCheckDaoI){ qmProdCheckDaoI = ApplicationContextUtil.getBean(QmProdCheckDaoI.class); } List listQfa= qmProdCheckDaoI.queryBySql(sql.toString()); List list = new ArrayList(); if(listQfa.size()>0){ for(Object o:listQfa){ Object[] temp=(Object[]) o; list.add(temp); } } int num =0; if(listQfa.size()>0){ for(Object o:listQfa){ Object[] temp=(Object[]) o; num++; if(num>1) continue; for(int k2=0;k2max) // 判断最大值 max=Float.parseFloat(x[i].toString()); if(Float.parseFloat(x[i].toString()) detailList=b3.getDetailList(); //最多7个检测项 i=Integer.parseInt(ft.getOrdCode()); int node =0; if(i==0 && ("0.0".equals(StringUtil.convertObjToString(b3.getWeightMax())))){ node++; } if(i==1 && ("0.0".equals(StringUtil.convertObjToString(b3.getCirAvg())))){ node++; } if(i==2 && ("0.0".equals(StringUtil.convertObjToString(b3.getRoundAvg())))){ node++; } if(i==3 && ("0.0".equals(StringUtil.convertObjToString(b3.getLenAvg())))){ node++; } if(i==4 && ("0.0".equals(StringUtil.convertObjToString(b3.getXzAvg())))){ node++; } if(i==5 && ("0.0".equals(StringUtil.convertObjToString(b3.getVentsAvg())))){ node++; } if(i==6 && ("0.0".equals(StringUtil.convertObjToString(b3.getHdAvg())))){ node++; } if(i==-1){ item.remove(check); check.remove(ParameterCode); check.remove(AverageValue); check.remove(SDValue); check.remove(MaxValue); check.remove(MinValue); continue; } if(node==1){ item.remove(check); check.remove(ParameterCode); check.remove(AverageValue); check.remove(SDValue); check.remove(MaxValue); check.remove(MinValue); continue; } switch(i){ case 0: //重量 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("WEIGHT", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(ft.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getWeightAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getWeightSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getWeightMax())); MinValue.setText(StringUtil.convertObjToString(b3.getWeightMin())); addCheckDetail(detailList,null,check,i,0); break; case 1: //圆周 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("CIR", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(ft.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getCirAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getCirSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getCirMax())); MinValue.setText(StringUtil.convertObjToString(b3.getCirMin())); addCheckDetail(detailList,null,check,i,0); break; case 2: //圆度 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("ROUND", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(ft.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getRoundAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getRoundSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getRoundMax())); MinValue.setText(StringUtil.convertObjToString(b3.getRoundMin())); addCheckDetail(detailList,null,check,i,0); break; case 3: //长度 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("LEN", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(ft.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getLenAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getLenSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getLenMax())); MinValue.setText(StringUtil.convertObjToString(b3.getLenMin())); addCheckDetail(detailList,null,check,i,0); break; case 4: //吸阻 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("XZ", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(ft.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getXzAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getXzSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getXzMax())); MinValue.setText(StringUtil.convertObjToString(b3.getXzMin())); addCheckDetail(detailList,null,check,i,0); break; case 5: //总通风率 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("Vents", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(ft.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getVentsAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getVentsSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getVentsMax())); MinValue.setText(StringUtil.convertObjToString(b3.getVentsMin())); addCheckDetail(detailList,null,check,i,0); break; case 6: //硬度 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("HD", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(ft.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getHdAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getHdSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getHdMax())); MinValue.setText(StringUtil.convertObjToString(b3.getHdMin())); addCheckDetail(detailList,null,check,i,0); break; } } } } } xml=document.asXML(); //向MES发送XML SendMessageClient.SendMsgToSPCValue(xml); //重复冗余数据 //更改状态 PMSXmlDataInterceptor.getInstance().updateQmOLinkCheck(olid,param); /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"物理质量检测数据反馈", 1, xml); } catch (Exception e) { e.printStackTrace(); /** 日志 1-失败 */ PMSXmlDataInterceptor.getInstance().addLog(true,"物理质量检测数据反馈", 0, xml,e.getMessage()); } paramNum++; } } /** * [功能说明]:成品,成型成品 * * */ public void dasSendQualityCheckCP(List beans,String param,String id){ //查询工艺批次号得到详细 String xml=""; List listCraft=new ArrayList(); SchWorkorderCraft skcf=null; String olid=""; int paramNum =0; for (QMOnlineCheckBean bean1 : beans) { try { /** * 170410123457#11 * 成型成品,通过工单ID关联工地那表得到工艺标准批次号 * 在通过工艺标准批次号得到工艺标准详细 * * */ //获取工单号 final String oid=bean1.getOrderNumber(); final String batchs = bean1.getqCBatchs(); //得到日期,牌号,班次 final String date= batchs.substring(0, 4)+"-"+batchs.substring(4, 6)+"-"+batchs.substring(6, 8); final String matCode=oid.substring(6, oid.indexOf("#")); //String shiftId=oid.substring( oid.indexOf("#")+1,oid.indexOf("#")+2); final String itype=bean1.getInspectionType()==1?"CPJ":bean1.getInspectionType()==2?"CXCP":""; //1-成品 2-成型成品 /* if(bean1.getInspectionType()==1){ itype="CPJ"; }else if(bean1.getInspectionType()==2){ itype="CXCP"; }*/ StringBuffer sb=new StringBuffer(100); /*sb.append(" select cf.ORD_CODE,cf.PARAMETER_CODE From ( "); sb.append(" select parameter_set_revision,mat,(select EQUIPMENT_name From MD_EQUIPMENT where id=eqp) as eqpName "); sb.append(" from SCH_WORKORDER "); sb.append(" where to_char(date_,'yyyy-MM-dd')='"+date+"' and del=0 and shift='"+shiftId+"' "); sb.append(" ) t left join "); //sb.append(" (select * from SCH_WORKORDER_CRAFT where del=0 and param_type=1 and pcp='"+bean1.getInspectionType()+"' and dcs_type='"+itype+"' ) cf on t.PARAMETER_SET_REVISION=cf.PARAMETER_SETREVISION "); sb.append(" (select * from SCH_WORKORDER_CRAFT where del=0 and param_type=1 and dcs_type='"+itype+"' ) cf on t.PARAMETER_SET_REVISION=cf.PARAMETER_SETREVISION "); sb.append(" left join md_mat mt on mt.id=t.mat "); sb.append(" where mt.code='"+matCode+"' and cf.ORD_CODE >=0 group by cf.ORD_CODE,cf.PARAMETER_CODE ");*/ sb.append(" select a.ord_code,a.parameter_code from SCH_WORKORDER_CRAFT a where a.PARAMETER_SETREVISION = ( " + " select a.PARAMETER_SETREVISION from ( " + " select a.PARAMETER_SETREVISION from SCH_WORKORDER_CRAFT a " + " join md_mat b on a.MATERIAL_CODE = b.id " + " where to_char(a.EFFECT_TIME,'yyyy-mm-dd') <= '"+date+"' " + " and b.code = '"+matCode+"'" + " group by a.PARAMETER_SETREVISION,a.EFFECT_TIME order by a.EFFECT_TIME desc" + " ) where rownum = 1) " + " and a.dcs_type='"+itype+"'" + " and a.ord_code >=0 " + " group by a.ord_code,a.parameter_code "); if(null==qmProdCheckDaoI){ qmProdCheckDaoI = ApplicationContextUtil.getBean(QmProdCheckDaoI.class); } List listSwc=qmProdCheckDaoI.queryBySql(sb.toString()); if(listSwc.size()>0){ for(Object o:listSwc){ skcf=new SchWorkorderCraft(); Object[] temp=(Object[]) o; if(temp[0]!=null){ skcf.setOrdCode(temp[0].toString()); } if(temp[1]!=null){ skcf.setParameterCode(temp[1].toString()); } listCraft.add(skcf); } }else{ //异常数据记录接口日志 PMSXmlDataInterceptor.getInstance().addLog(true,"物理质量检测数据反馈OID", 0, "通过工单号"+oid+"不能查询到工艺标准;sql="+sb.toString()); //不能查询到工艺标准,直接跳出 continue; } if("add".equals(param)){ // 反馈含水含末端部 Rengj String[] ids = id.split(","); String sql = "select q1.moisture_content,q1.final_content,q1.first_telos,q1.two_telos,q1.three_telos,q1.four_telos,q1.five_telos,compaction,id, " + " (SELECT parameter_code FROM SCH_WORKORDER_CRAFT WHERE parameter_code LIKE '%HSL%' AND dcs_type = 'CP' AND ROWNUM = 1) HSL, " + " (SELECT parameter_code FROM SCH_WORKORDER_CRAFT WHERE parameter_code LIKE '%HML%' AND dcs_type = 'CP' AND ROWNUM = 1) HML, " + " (SELECT parameter_code FROM SCH_WORKORDER_CRAFT WHERE parameter_code LIKE '%LSL%' AND dcs_type = 'CP' AND ROWNUM = 1 and LENGTH(parameter_code)<=8) LSL, " + " (SELECT parameter_code FROM SCH_WORKORDER_CRAFT WHERE parameter_code LIKE '%YSD%' AND dcs_type = 'CP' AND ROWNUM = 1) YSD " + " from qm_finished_add q1 where q1.qmocid = "+ids[paramNum].toString(); List listQfa= qmProdCheckDaoI.queryBySql(sql.toString()); List list = null; String[] aArray = new String[5]; if(listQfa.size()>0){ int n = 0;//判断共多少条记录 int nums = 0;//批次号累加 for(int f= 0;f(); Object[] temp=(Object[]) listQfa.get(n); String ps = temp[2].toString()+","+temp[3].toString()+","+temp[4].toString()+","+temp[5].toString()+","+temp[6].toString(); aArray = ps.split(",");//获取端部长度/反馈条数 list.add(temp); Document document = null; for(int k=0;k bean2s=bean1.getqCBatchList(); for (QMOnlineCheckBean bean2 : bean2s) { olid+=bean2.getId()+","; Element QCBatchs=body.addElement("QCBatchs"); Element Timestamp=QCBatchs.addElement("Timestamp"); Timestamp.setText(bean2.getTimestamp_()); Element SubBatchCode=QCBatchs.addElement("SubBatchCode"); String subBatchCode = bean2.getSubBatchCode(); if(k>0){//多条数批次累加 int a = Integer.parseInt(subBatchCode.substring(subBatchCode.length()-1, subBatchCode.length()))+nums; SubBatchCode.setText( subBatchCode.substring(0,subBatchCode.length()-1)+a); }else{ if(n >= 1){//多条数批次累加 int a = Integer.parseInt(subBatchCode.substring(subBatchCode.length()-1, subBatchCode.length()))+nums; SubBatchCode.setText( subBatchCode.substring(0,subBatchCode.length()-1)+a); }else{//单条数批次累加 SubBatchCode.setText(subBatchCode); } } Element SampleNumber=QCBatchs.addElement("SampleNumber"); SampleNumber.setText(StringUtil.convertObjToString(bean2.getSampleNumber())); Element SampleType=QCBatchs.addElement("SampleType"); SampleType.setText(StringUtil.convertObjToString(bean2.getSampleType())); for(int z=0;z<4;z++){ String p = ""; if(k==1 && z ==2){//第2次LSL p = p + temp[3].toString(); }else if(k==2 && z ==2){//第3次LSL p = p + temp[4].toString(); }else if(k==3 && z ==2){//第4次LSL p = p + temp[5].toString(); }else if(k==4 && z ==2){//第5次LSL p = p + temp[6].toString(); }else if(z==3){//取YSD数值 p = p + String.valueOf(temp[7]); }else////第1次LSL p = p + temp[z].toString(); Element Item=null; Element ParameterCode=null; Element AverageValue=null; Element SDValue=null; Element MaxValue=null; Element MinValue=null; Item=QCBatchs.addElement("Item"); ParameterCode=Item.addElement("ParameterCode"); AverageValue=Item.addElement("AverageValue"); SDValue=Item.addElement("SDValue"); MaxValue=Item.addElement("MaxValue"); MinValue=Item.addElement("MinValue"); switch (z) { case 0: ParameterCode.setText(String.valueOf(temp[9])); AverageValue.setText(String.valueOf(p)); SDValue.setText("0"); MaxValue.setText(String.valueOf(p)); MinValue.setText(String.valueOf(p)); addCheckDetail(null,list, Item,z,k); break; case 1: ParameterCode.setText(String.valueOf(temp[10])); AverageValue.setText(String.valueOf(p)); SDValue.setText("0"); MaxValue.setText(String.valueOf(p)); MinValue.setText(String.valueOf(p)); addCheckDetail(null,list, Item,z,k); break; case 2: ParameterCode.setText(String.valueOf(temp[11])); AverageValue.setText(String.valueOf(p)); SDValue.setText("0"); MaxValue.setText(String.valueOf(p)); MinValue.setText(String.valueOf(p)); addCheckDetail(null,list, Item,z,k); break; case 3: ParameterCode.setText(String.valueOf(temp[12])); AverageValue.setText(String.valueOf(p)); SDValue.setText("0"); MaxValue.setText(String.valueOf(p)); MinValue.setText(String.valueOf(p)); addCheckDetail(null,list, Item,z,k); break; } } } xml=document.asXML(); //向MES发送XML SendMessageClient.SendMsgToSPCValue(xml); // TODO 暂不通过接口传送 /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"含水含末端部反馈", 1, xml); nums++; } //修改含水含末端部反馈状态 String s = "update QM_FINISHED_ADD set status = 1 where id ='"+temp[8].toString()+"'"; qmProdCheckDaoI.updateBySql(s, null); n++; } }else{ //异常数据记录接口日志 PMSXmlDataInterceptor.getInstance().addLog(true,"含水含末端部反馈", 0, "通过qmocid"+id+"不能查询到添加的含水含末率;sql="+sql.toString()); //不能查询到工艺标准,直接跳出 continue; } }else{ /** * 通过数据封装xml * */ Document document; document=DocumentHelper.createDocument(); //Element root = document.addElement("xml"); Element dataset = document.addElement("dataset"); Element body = dataset.addElement("data"); Element MaterialCode=body.addElement("MaterialCode"); MaterialCode.setText(bean1.getMaterialCode()); Element InspectionType=body.addElement("InspectionType"); InspectionType.setText(StringUtil.convertObj(bean1.getInspectionType())); Element OrderNumber=body.addElement("OrderNumber"); OrderNumber.setText(bean1.getOrderNumber()); //多批次 List bean2s=bean1.getqCBatchList(); for (QMOnlineCheckBean bean2 : bean2s) { olid+=bean2.getId()+","; Element QCBatchs=body.addElement("QCBatchs"); Element Timestamp=QCBatchs.addElement("Timestamp"); Timestamp.setText(date); Element SubBatchCode=QCBatchs.addElement("SubBatchCode"); SubBatchCode.setText(bean2.getSubBatchCode()); Element SampleNumber=QCBatchs.addElement("SampleNumber"); SampleNumber.setText(StringUtil.convertObjToString(bean2.getSampleNumber())); Element SampleType=QCBatchs.addElement("SampleType"); SampleType.setText(StringUtil.convertObjToString(bean2.getSampleType())); //检测项目 List bean3s=bean2.getItemList(); int i=-1; for (QMOnlineCheckBean b3 : bean3s) { List detailList=b3.getDetailList(); Element Item=null; Element ParameterCode=null; Element AverageValue=null; Element SDValue=null; Element MaxValue=null; Element MinValue=null; //最多7个检测项 for (SchWorkorderCraft sc:listCraft) { i=Integer.parseInt(sc.getOrdCode()); if(i==0 && "0.0".equals(StringUtil.convertObjToString(b3.getWeightMax()))){ continue;//重量 } if(i==1 && "0.0".equals(StringUtil.convertObjToString(b3.getCirMax()))){ continue;//圆周 } if(i==2 && "0.0".equals(StringUtil.convertObjToString(b3.getRoundMax()))){ continue;//圆度 } if(i==3 && "0.0".equals(StringUtil.convertObjToString(b3.getLenMax()))){ continue;//长度 } if(i==4 && "0.0".equals(StringUtil.convertObjToString(b3.getXzMax()))){ continue;//吸阻 } if(i==5 && "0.0".equals(StringUtil.convertObjToString(b3.getVentsMax()))){ continue;//通风率 } if(i==6 && "0.0".equals(StringUtil.convertObjToString(b3.getHdMax()))){ continue;//硬度 } Item=QCBatchs.addElement("Item"); ParameterCode=Item.addElement("ParameterCode"); AverageValue=Item.addElement("AverageValue"); SDValue=Item.addElement("SDValue"); MaxValue=Item.addElement("MaxValue"); MinValue=Item.addElement("MinValue"); switch(i){ case 0: //重量 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("WEIGHT", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(sc.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getWeightAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getWeightSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getWeightMax())); MinValue.setText(StringUtil.convertObjToString(b3.getWeightMin())); addCheckDetail(detailList, null,Item,i,0); break; case 1: //圆周 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("CIR", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(sc.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getCirAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getCirSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getCirMax())); MinValue.setText(StringUtil.convertObjToString(b3.getCirMin())); addCheckDetail(detailList, null,Item,i,0); break; case 2: //圆度 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("ROUND", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(sc.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getRoundAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getRoundSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getRoundMax())); MinValue.setText(StringUtil.convertObjToString(b3.getRoundMin())); addCheckDetail(detailList,null, Item,i,0); break; case 3: //长度 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("LEN", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(sc.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getLenAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getLenSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getLenMax())); MinValue.setText(StringUtil.convertObjToString(b3.getLenMin())); addCheckDetail(detailList,null,Item,i,0); break; case 4: //吸阻 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("XZ", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(sc.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getXzAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getXzSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getXzMax())); MinValue.setText(StringUtil.convertObjToString(b3.getXzMin())); addCheckDetail(detailList, null,Item,i,0); break; case 5: //总通风率 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("Vents", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(sc.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getVentsAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getVentsSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getVentsMax())); MinValue.setText(StringUtil.convertObjToString(b3.getVentsMin())); addCheckDetail(detailList,null, Item,i,0); break; case 6: //硬度 //ParameterCode.setText(SysEqpTypeBase.getFixCodeByMesCode("HD", "QMITEMDEFINITION", false).getMesCode()); ParameterCode.setText(sc.getParameterCode()); AverageValue.setText(StringUtil.convertObjToString(b3.getHdAvg())); SDValue.setText(StringUtil.convertObjToString(b3.getHdSD())); MaxValue.setText(StringUtil.convertObjToString(b3.getHdMax())); MinValue.setText(StringUtil.convertObjToString(b3.getHdMin())); addCheckDetail(detailList,null, Item,i,0); break; } } } } xml=document.asXML(); //向MES发送XML SendMessageClient.SendMsgToSPCValue(xml); //更改状态 PMSXmlDataInterceptor.getInstance().updateQmOLinkCheck(olid,null); /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"物理质量检测数据反馈", 1, xml); } } catch (Exception e) { e.printStackTrace(); /** 日志 1-失败 */ if("add".equals(param)){ PMSXmlDataInterceptor.getInstance().addLog(true,"含水含末检测数据反馈", 0, xml,e.getMessage()); }else { PMSXmlDataInterceptor.getInstance().addLog(true, "物理质量检测数据反馈", 0, xml, e.getMessage()); } throw new RuntimeException("反馈mes失败!" + e.getMessage()); } paramNum++; } } /** * [功能说明]查询工艺标准表 * @param itype * @param shiftId * @param matId * @param date */ private List querySchWorkOrderCraft(String date, String matId, String shiftId, String itype) { return null; } private void addCheckDetail(List detailList,List list, Element Item,int i,int temp) { if(list !=null && list.size()>0){ int num = 0; for(int k=0;k beans,String param,String id,String sts){ String xml=""; int num = 0; String sql=""; if(null==qmProdCheckDaoI){ qmProdCheckDaoI = ApplicationContextUtil.getBean(QmProdCheckDaoI.class); } for (QmWardMainInfo bean : beans) { String[] ids = id.split(","); try { //20支质量 if("20".equals(param)){ //String sb = " select nvl(first_len,0),nvl(two_len,0),nvl(three_len,0),oid from QM_OUTWARD where id = "+ids[num].toString(); sql=" SELECT nvl(a.first_len,0),nvl(a.two_len,0), nvl(a.three_len,0), " + "( select parameter_code from SCH_WORKORDER_CRAFT where 1=1 and PARAMETER_SETREVISION=(select parameter_set_revision from SCH_WORKORDER where id=a.oid) and del=0 and parameter_name like '%20%' and param_type=1 and del=0" + " ) as qxCode,oid " + "FROM QM_OUTWARD a WHERE a.ID ="+ids[num].toString(); List qmoutList = qmProdCheckDaoI.queryBySql(sql); String[] len =new String[3]; if(qmoutList.size()>0){ int temp =0; int nums =0; for(int i=0;i batchInfos=bean.getBatchInfo(); for (QmOutWardBatchMainInfo batchMainInfo : batchInfos) { Element qCBatchs=body.addElement("item"); Element timestamp=qCBatchs.addElement("Timestamp"); timestamp.setText(batchMainInfo.getTimestamp()); Element SubBatchCode=qCBatchs.addElement("SubBatchCode"); String subBatchCode = batchMainInfo.getSubBatchCode(); if(num>=1){ if(j>=1){ int a = Integer.parseInt(subBatchCode.substring(subBatchCode.length()-1, subBatchCode.length()))+nums; SubBatchCode.setText( subBatchCode.substring(0,subBatchCode.length()-1)+a); } }else{ if(j>=1){ int a = Integer.parseInt(subBatchCode.substring(subBatchCode.length()-1, subBatchCode.length()))+nums; SubBatchCode.setText( subBatchCode.substring(0,subBatchCode.length()-1)+a); }else{ SubBatchCode.setText(subBatchCode); } } Element sampleType=qCBatchs.addElement("SampleType"); sampleType.setText("1"); Element sampleNumber=qCBatchs.addElement("SampleNumber"); sampleNumber.setText("20"); Element item = qCBatchs.addElement("CheckItems"); item.addElement("ParameterCode").setText(ob[3].toString()); item.addElement("AverageValue").setText(len[j].toString()); item.addElement("SDValue").setText("0"); item.addElement("MaxValue").setText(len[j].toString()); item.addElement("MinValue").setText(len[j].toString()); Element detail =item.addElement("Detail"); detail.addElement("SeqNo").setText("1"); detail.addElement("CheckValue").setText(len[j].toString()); } xml=document.asXML(); //向MES发送XML //DASSendQualityData SendMessageClient.SendMsgToSPCValue(xml); /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"20支质量检测数据反馈", 1, xml); nums++; } } temp++; } }else{ //质量外观反馈 Document document; document=DocumentHelper.createDocument(); //Element root = document.addElement("xml"); Element dataset = document.addElement("dataset"); Element body = dataset.addElement("data"); Element materialCode =body.addElement("MaterialCode"); materialCode.setText(bean.getMaterialCode()); Element inspectionType=body.addElement("InspectionType"); inspectionType.setText(bean.getInspectionType()); Element orderNumber=body.addElement("OrderNumber"); orderNumber.setText(bean.getOrderNumber()); List batchInfos=bean.getBatchInfo(); /* if(null==qmProdCheckDaoI){ qmProdCheckDaoI = ApplicationContextUtil.getBean(QmProdCheckDaoI.class); }*/ // List orderTypelist=qmProdCheckDaoI.queryBySql("select type,parameter_set_revision,mat from sch_workorder where code='"+bean.getOrderNumber()+"'"); //Object[] objf = (Object[]) orderTypelist.get(0); //String orderType=StringUtil.convertObjToString(objf[0]); /* sql = " select DISTINCT q1.paramter_code from qm_outward_defect_item q1, sch_workorder s1, sch_workorder_craft s2 " +" where 1=1 and s1.parameter_set_revision = s2.parameter_setrevision " +" and s2.parameter_code = q1.paramter_code and s2.param_type=2 and s1.code = '"+bean.getOrderNumber()+"'"; if("1".equals(orderType)){//卷烟机 sql += " and s2.DCS_TYPE ='ROL'"; }else if("2".equals(orderType)){//包装机 sql += " and s2.DCS_TYPE ='PKG'"; }else if("3".equals(orderType)){//封箱机 sql += " and s2.DCS_TYPE ='PBOX'"; }else{ sql += " and s2.DCS_TYPE ='FTL'"; }*/ //List listOutward=qmProdCheckDaoI.queryBySql(sql.toString()); for (QmOutWardBatchMainInfo batchMainInfo : batchInfos) { Element qCBatchs=body.addElement("item"); Element timestamp=qCBatchs.addElement("Timestamp"); timestamp.setText(batchMainInfo.getTimestamp()); Element subBatchCode=qCBatchs.addElement("SubBatchCode"); subBatchCode.setText(batchMainInfo.getSubBatchCode()); Element faultType=qCBatchs.addElement("FaultType"); faultType.setText(batchMainInfo.getFaultType()); List faults=batchMainInfo.getFaults(); for (QmOutWardFaultInfo faultInfo : faults) { // 如果没有缺陷或没有缺陷数量时不发送空节点到mes /*if (faultInfo.getFaultCode()==null || faultInfo.getFaultCode().equals("") || faultInfo.getFaultNumber()==null || faultInfo.getFaultNumber().equals("")) { continue; }*/ Element FaultParameters=qCBatchs.addElement("Details"); Element ParameterCode=FaultParameters.addElement("FaultCode"); ParameterCode.setText(faultInfo.getFaultCode()); Element sampleNumber=FaultParameters.addElement("FaultNumber"); sampleNumber.setText(faultInfo.getFaultNumber()); //新增检验人 Element checkName=FaultParameters.addElement("CheckName"); checkName.setText(batchMainInfo.getCheckName()); } /*if(listOutward.size()>0){ for(Object o:listOutward){ sql = "select std from sch_workorder_craft where parameter_code= '"+String.valueOf(o)+"' " + " and material_code = ( select id from MD_MAT where id ='"+StringUtil.convertObjToString(objf[2])+"')" + " and parameter_setrevision='"+StringUtil.convertObjToString(objf[1])+"' " ; List stdList=qmProdCheckDaoI.queryBySql(sql.toString()); if(stdList!=null && stdList.size()>0){ Element FaultParameters=qCBatchs.addElement("Details"); Element ParameterCode=FaultParameters.addElement("FaultCode"); ParameterCode.setText(o.toString()); Element sampleNumber=FaultParameters.addElement("FaultNumber"); sampleNumber.setText(String.valueOf(stdList.get(0))); //新增检验人 Element checkName=FaultParameters.addElement("CheckName"); checkName.setText(batchMainInfo.getCheckName()); *//*for (QmOutWardFaultInfo faultInfo : faults) { String sq = "select PARAMTER_CODE from QM_OUTWARD_DEFECT_ITEM where code ='"+faultInfo.getFaultCode()+"'"; List listP=qmProdCheckDaoI.queryBySql(sq); if(listP.size()>0){ Object obj =(Object) listP.get(0); if(!"".equals(faultInfo.getFaultCode()) && faultInfo.getFaultCode() !=null){ if(obj.toString().equals(o.toString())){ Element item=FaultParameters.addElement("item"); Element details=item.addElement("Details"); Element faultCode=details.addElement("FaultCode"); faultCode.setText(faultInfo.getFaultCode()); Element faultNumber=details.addElement("FaultNumber"); faultNumber.setText(faultInfo.getFaultNumber()); } } } }*//* } } }*/ } xml=document.asXML(); //向MES发送XML SendMessageClient.SendMsgToVisuRes(xml); /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"质量外观检测数据反馈", 1, xml); } num++; //已发送数据,修改状态 //PMSXmlDataInterceptor.getInstance().updateQmOutWard(id,sts,true); if("20".equals(param)){ //已发送数据,修改状态 PMSXmlDataInterceptor.getInstance().updateQmOutWard(id,sts,true); }else{ //已发送数据,修改状态 PMSXmlDataInterceptor.getInstance().updateQmOutWard(id,sts,false); } } catch (Exception e) { e.printStackTrace(); /** 日志 1-失败 */ if("20".equals(param)){ PMSXmlDataInterceptor.getInstance().addLog(true,"20支质量检测数据反馈", 0, xml,e.getMessage()); }else{ PMSXmlDataInterceptor.getInstance().addLog(true,"质量外观检测数据反馈", 0, xml,e.getMessage()); } } } } /** * [功能说明]:工单实际反馈 (工单执行结果) * * */ public void DASSendOrderResult( MesWorkOrderBean bean,List ids){ String xml=""; try { Document document; document=DocumentHelper.createDocument(); Element dataset = document.addElement("dataset"); Element journalElement = dataset.addElement("data"); Element EquipmentCode = journalElement.addElement("WorkOrderCode"); EquipmentCode.setText(bean.getCode() );//生产工单编号 Element Shift = journalElement.addElement("Shift"); Shift.setText(bean.getShift()); //班次 Element Team = journalElement.addElement("Team"); Team.setText(bean.getTeam()); //班组 Element StartTime = journalElement.addElement("StartTime"); StartTime.setText(bean.getReal_stim()); //实际开始时间 Element EndTime = journalElement.addElement("EndTime"); EndTime.setText(bean.getReal_etim()); //实际结束时间 List listMatBean=bean.getListFl(); if(listMatBean!=null && listMatBean.size()>0 ){ for(MesMdMatBean mmb:listMatBean){ //辅料 0...n Element Consume = journalElement.addElement("Consume"); Element MaterialCode = Consume.addElement("MaterialCode"); MaterialCode.setText(mmb.getMaterialCode()); //物料代码 /*Element ConsumeTime = Consume.addElement("ConsumeTime"); ConsumeTime.setText("0");//物料消耗时间(开始投料时间)*/ Element Quantity = Consume.addElement("Quantity"); Quantity.setText(mmb.getQuantity().toString());//辅料数量 Element Uom = Consume.addElement("Uom"); Uom.setText(mmb.getUom());//单位 } } Element MaterialCode2 = journalElement.addElement("MaterialCode"); MaterialCode2.setText(bean.getMatName()); //牌号名称 Element Output = journalElement.addElement("Output"); Output.setText(bean.getOutput().toString()); //工单产量 Element YZQuantity = journalElement.addElement("YZQuantity"); YZQuantity.setText(bean.getYzQuantity()==null?"0":bean.getYzQuantity().toString()); //烟支产量 /*Element YZUom = journalElement.addElement("YZUom"); YZUom.setText("箱"); //牌号名称*/ Element XHQuantity = journalElement.addElement("XHQuantity"); XHQuantity.setText(bean.getXhQuantity()==null?"0":bean.getXhQuantity().toString()); //小盒产量 Element THQuantity = journalElement.addElement("THQuantity"); THQuantity.setText(bean.getThQuantity()==null?"0":bean.getThQuantity().toString()); //条盒产量 Element downTime = journalElement.addElement("Downtime"); Element EquipmentNo = downTime.addElement("EquipmentNo"); EquipmentNo.setText(StringUtil.nullToString(bean.getEqpCode())); //设备号-mes设备CODE Element DowntimeTimes = downTime.addElement("DowntimeTimes"); DowntimeTimes.setText(bean.getDowntimeTimes().toString()); //停机次数 Element DowntimeDuration = downTime.addElement("DowntimeDuration"); DowntimeDuration.setText(bean.getDowntimeDuration()); //停机时间(单位分钟) xml=document.asXML(); //向MES发送XML SendMessageClient.SendMsgToWorkOrderRes(xml); /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"工单实际反馈", 1, xml); String orderId=bean.getId(); ids.add(orderId); } catch (Exception e) { e.printStackTrace(); /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"工单实际反馈", 0, xml,e.getMessage()); } } /** * [功能说明]:发射机工单实际反馈 (工单执行结果) * * */ public void DASSendFSJOrderResult( TransmitterWorkOrderBean bean,List ids){ String xml=""; try { Document document; document=DocumentHelper.createDocument(); Element catalogElement = document.addElement("xml"); Element journalElement = catalogElement.addElement("Body"); Element EquipmentCode = journalElement.addElement("WorkOrderCode"); EquipmentCode.setText(bean.getWorkOrderCode() );//生产工单编号 Element Shift = journalElement.addElement("Shift"); Shift.setText(bean.getShift()); //班次 Element Team = journalElement.addElement("Team"); Team.setText(bean.getTeam()); //班组 Element StartTime = journalElement.addElement("StartTime"); StartTime.setText(DateUtil.datetoStr(bean.getStim(),"yyyy-MM-dd HH:mm:ss")); //实际开始时间 Element EndTime = journalElement.addElement("EndTime"); EndTime.setText(DateUtil.datetoStr(bean.getEtim(),"yyyy-MM-dd HH:mm:ss")); //实际结束时间 List listOutputBean=bean.getOutputs(); if(listOutputBean!=null && listOutputBean.size()>0 ){ for(TransmitterOutput output:listOutputBean){ //辅料 0...n Element ShutDetail = journalElement.addElement("ShutDetail"); Element PipingCode = ShutDetail.addElement("PipingCode"); PipingCode.setText(output.getPipingNo()); Element PackageWorkOrder = ShutDetail.addElement("PackageWorkOrder"); PackageWorkOrder.setText(output.getWorkCode()); Element ReceiveNO = ShutDetail.addElement("ReceiveNO"); ReceiveNO.setText(output.getReceiveNo().toString()); Element ShutNO = ShutDetail.addElement("ShutNO"); ShutNO.setText(output.getShutNo().toString()); Element WorkCenter = ShutDetail.addElement("WorkCenter"); WorkCenter.setText(output.getEqpId()); Element DumpNO = ShutDetail.addElement("DumpNO"); DumpNO.setText(output.getDumpNo().toString()); } } Element MaterialCode = journalElement.addElement("MaterialCode"); MaterialCode.setText(bean.getMatName()); //牌号名称 Element Output = journalElement.addElement("Output"); Output.setText(bean.getQty()==null?"0":bean.getQty().toString()); //工单产量 Element Remark = journalElement.addElement("Remark"); if(bean.getRemark()==null){ Remark.setText(""); } else { Remark.setText(bean.getRemark()); //工单产量 } xml=document.asXML(); // System.out.println(xml); //向MES发送XML //----SendMessageClient.SendMessageToMes(xml,"DASSSendTransmitterWorkOrderResult"); // TODO 暂不通过接口传送 /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"发射工单实际反馈", 1, xml); String orderId=bean.getId(); bean.setIsFeedback("1"); } catch (Exception e) { e.printStackTrace(); /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"发射工单实际反馈", 0, xml,e.getMessage()); } } /** * 修改后维修记录反馈 */ public void dasSendEquipmentRepairRecord(EqmCallServiceBean bean){ String xml=""; try { FixCodeBean fcb=null; Document document; document=DocumentHelper.createDocument(); //Element root = document.addElement("xml"); Element dataset = document.addElement("dataset"); Element data=dataset.addElement("data"); Element repairNo=data.addElement("RepairNo"); repairNo.setText(StringUtil.convertObjToString(bean.getId())); Element repairDate=data.addElement("RepairDate"); repairDate.setText(StringUtil.convertObjToString(bean.getRepairDate())); Element shift=data.addElement("Shift"); fcb=SysEqpTypeBase.getFixCodeByMesCode(bean.getShift(), "SHIFT0001", false); if(fcb==null){ throw new Exception(bean.getId()+"班次在md_fix_code表不能转换"); } shift.setText(fcb.getMesCode()); Element group=data.addElement("Group"); fcb=SysEqpTypeBase.getFixCodeByMesCode(bean.getGroup(), "TEAM0001", false); if(fcb==null){ throw new Exception(bean.getId()+"班组在md_fix_code表不能转换"); } group.setText( StringUtil.nullToString( fcb.getMesCode() )); Element equipmentCode=data.addElement("EquipmentCode"); equipmentCode.setText(StringUtil.convertObjToString(bean.getEquipmentCode())); Element shutdownType=data.addElement("ShutdownType"); shutdownType.setText(StringUtil.convertObjToString(bean.getShutdownType())); Element repairType=data.addElement("RepairType"); repairType.setText(StringUtil.convertObjToString(bean.getRepairType())); Element Repairer=data.addElement("Repairer"); Repairer.setText(StringUtil.convertObjToString(bean.getRepairer())); Element Duration=data.addElement("Duration"); Duration.setText(StringUtil.convertObjToString(bean.getDuration())); Element EMWorkOrderCode=data.addElement("EMWorkOrderCode"); EMWorkOrderCode.setText(StringUtil.convertObjToString(bean.geteMWorkOrderCode())); Element Solution=data.addElement("Solution"); Solution.setText(StringUtil.convertObjToString(bean.getSolution())); Element Description=data.addElement("Description"); Description.setText(StringUtil.convertObjToString(bean.getDescription())); /*Element Comment=data.addElement("Comment"); Comment.setText(StringUtil.convertObjToString(bean.getComment())); Element FaultReason=data.addElement("FaultReason"); FaultReason.setText(StringUtil.convertObjToString(bean.getFaultReason())); Element ShutdownTime=data.addElement("ShutdownTime"); ShutdownTime.setText(StringUtil.convertObjToString(bean.getShutdownTime()));*/ for (EqmServiceSparePartBean sparepart : bean.getParts()) { Element partChange=data.addElement("item"); Element PartCode=partChange.addElement("PartCode"); PartCode.setText(StringUtil.convertObjToString(sparepart.getPartCode())); Element PartName=partChange.addElement("PartName"); PartName.setText(StringUtil.convertObjToString(sparepart.getPartName())); Element Quantity=partChange.addElement("Quantity"); Quantity.setText(StringUtil.convertObjToString(sparepart.getQuantity())); Element Unit=partChange.addElement("Unit"); Unit.setText(StringUtil.convertObjToString(sparepart.getUnit())); Element Reason=partChange.addElement("Reason"); Reason.setText(StringUtil.convertObjToString(sparepart.getReason())); Element Remark=partChange.addElement("Remark"); Remark.setText(StringUtil.convertObjToString(sparepart.getRemark())); } xml=document.asXML(); //向MES发送XML //----SendMessageClient.SendMessageToMes(xml,"DASSendEquipmentRepairRecord"); // TODO 暂不通过接口传送 /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"维修记录反馈", 1, xml); } catch (Exception e) { e.printStackTrace(); /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"维修记录反馈", 0, xml,e.getMessage()); } } /** * [功能说明]:设备维修记录 * @createTime 2016年6月17日16:00:37 * @author wch * @param eqmfrlist 设备维修记录表 * @param eqmtlist 备品备件更换记录表 * @throws Exception * */ public void dasSendEquipmentRepairRecord(List eqmtlist, List eqmfrlist) throws Exception{ Document document; FixCodeBean fcb=null; EquipmentsBean mdt=null; document=DocumentHelper.createDocument(); Element catalogElement = document.addElement("xml"); Element journalElement = catalogElement.addElement("Body"); for(EqmTrouble etb:eqmtlist){ Element EMRepair = journalElement.addElement("EMRepair"); Element RepairNo = EMRepair.addElement("RepairNo"); //维修记录编号 RepairNo.setText(StringUtil.nullToString( etb.getId()) ); Element RepairDate = EMRepair.addElement("RepairDate");//维修日期 Date date=DateUtil.strToDate(etb.getRepair_date(), "yyyy-MM-dd"); RepairDate.setText( date!=null?date.toString():"" ); //RepairDate.setText("2016-06-24"); Element Shift = EMRepair.addElement("Shift");//班次 fcb=SysEqpTypeBase.getFixCodeByMesCode(etb.getShift_id(), "SHIFT0001", false); if(fcb==null){ throw new Exception(etb.getId()+"班次在md_fix_code表不能转换"); } Shift.setText(fcb.getMesCode()); Element Group = EMRepair.addElement("Group");//班组 fcb=SysEqpTypeBase.getFixCodeByMesCode(etb.getTeam_id(), "TEAM0001", false); if(fcb==null){ throw new Exception(etb.getId()+"班组在md_fix_code表不能转换"); } Group.setText( StringUtil.nullToString( fcb.getMesCode() )); Element EquipmentCode = EMRepair.addElement("EquipmentCode");//设备ID转MES_CODE mdt=SysEqpTypeBase.getEquipmentByMesCodeToId(etb.getEqu_id(), false); if(mdt==null){ throw new Exception(etb.getId()+"设备ID转MES_code异常"); } EquipmentCode.setText( StringUtil.nullToString(mdt.getMesEqpCode() )); Element ShutdownType = EMRepair.addElement("ShutdownType");//停机类型 fcb=SysEqpTypeBase.getFixCodeByMesCode(etb.getShutdown_type().toString(), "SHUTDOWN0001", false); if(fcb==null){ throw new Exception(etb.getId()+"停机类型在md_fix_code未录入, 异常"); } ShutdownType.setText(fcb.getMesCode()); Element RepairType = EMRepair.addElement("RepairType"); //维修类型 fcb=SysEqpTypeBase.getFixCodeByMesCode(etb.getRepair_type().toString(), "REPAIRTYPE0001", false); if(fcb==null){ throw new Exception(etb.getId()+"停机类型在md_fix_code未录入, 异常"); } RepairType.setText(fcb.getMesCode()); Element Repairer = EMRepair.addElement("Repairer");//维修人 Repairer.setText(StringUtil.nullToString(etb.getUpdate_user_name()) ); Element Duration = EMRepair.addElement("Duration"); //维修时长 Duration.setText(StringUtil.nullToString( etb.getDuration() )); Element EMWorkOrderCode = EMRepair.addElement("EMWorkOrderCode");//关联保养工单 EMWorkOrderCode.setText( StringUtil.nullToString( etb.getEmwork_order_code() )); Element Solution = EMRepair.addElement("Solution");//处理措施 Solution.setText( StringUtil.nullToString( etb.getSolution() )); Element Description = EMRepair.addElement("Description");//故障描述 Description.setText(StringUtil.nullToString(etb.getDescription() )); Element Comment = EMRepair.addElement("Comment");//维修评价 Comment.setText(StringUtil.nullToString( etb.getComments() )); //备品备件 for(EqmFixRec efc:eqmfrlist){ if(etb.getId().equals(efc.getTrouble_id())){ Element PartChange = EMRepair.addElement("PartChange"); Element PartCode = PartChange.addElement("PartCode");//备件编号 PartCode.setText( StringUtil.nullToString( efc.getSpare_parts_code())); Element PartName = PartChange.addElement("PartName");//备件名称 PartName.setText( StringUtil.nullToString( efc.getSpare_parts_name()) ); Element Quantity = PartChange.addElement("Quantity");//备件数量 Quantity.setText(StringUtil.nullToString( efc.getSpare_parts_num().toString() )); Element Unit = PartChange.addElement("Unit");//备件单位 Unit.setText("1"); Element Reason = PartChange.addElement("Reason");//故障原因 Reason.setText( StringUtil.nullToString( etb.getFault_reason())); Element Remark = PartChange.addElement("Remark");//备注 Remark.setText(StringUtil.nullToString( etb.getDes() )); //Remark.setText("test"); } } Element FaultReason = EMRepair.addElement("FaultReason");//故障原因 FaultReason.setText(etb.getFault_reason()); Element ShutdownTime = EMRepair.addElement("ShutdownTime");//停机时长 ShutdownTime.setText(StringUtil.nullToString(etb.getDuration())); } String xml=document.asXML(); //向MES发送XML //----SendMessageClient.SendMessageToMes(document.asXML(),"DASSendEquipmentRepairRecord"); // TODO 暂不通过接口传送 /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"设备维修记录反馈", 1, xml); } /** * [功能说明]:设备运行状态 * @param mesEqpCode -mes下发的设备编号 * @param statusCode -mes设备故障 1运行 2故障 3停机 * */ public void dasSendEquipmentStatus(String mesEqpCode,String statusCode){ Document document; document=DocumentHelper.createDocument(); Element catalogElement = document.addElement("xml"); Element journalElement = catalogElement.addElement("Body"); Element EquipmentCode = journalElement.addElement("EquipmentCode"); EquipmentCode.setText(mesEqpCode); Element StatusCode = journalElement.addElement("StatusCode"); StatusCode.setText(statusCode); Element OperationTime = journalElement.addElement("OperationTime"); OperationTime.setText(DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss")); //向MES发送XML //----SendMessageClient.SendMessageToMes(document.asXML(),"DASSendEquipmentStatus"); // TODO 暂不通过接口传送 } /** * [功能说明]:工单状态变化(工单状态变化) * @param schWorkorder * @param sts -MES工单状态 * * */ public void dasSendOrderChange(String sts, SchWorkorder schWorkorder){ String xml=""; try { Document document; document=DocumentHelper.createDocument(); Element catalogElement = document.addElement("xml"); Element datasetElement = catalogElement.addElement("dataset"); Element journalElement = datasetElement.addElement("data"); Element WorkOrderCode = journalElement.addElement("WorkOrderCode"); WorkOrderCode.setText(StringUtil.nullToString( schWorkorder.getCode() ));//工单号 Element Command = journalElement.addElement("Command"); Command.setText(sts); //状态 Element ThirdSystemCode = journalElement.addElement("ThirdSystemCode"); ThirdSystemCode.setText("DAS");//参考第三方系统定义表 Element ActualTime = journalElement.addElement("ActualTime"); ActualTime.setText(DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss"));//状态发送时间 Element AbortReason = journalElement.addElement("AbortReason"); //AbortReason.setText("null");//终止原因 System.out.println(document.asXML()); xml=document.asXML(); //向MES发送XML SendMessageClient.SendMsgToOrderStsDetail(xml); /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"工单状态反馈", 1, xml); sendOrderStatus(sts,schWorkorder); } catch (Exception e) { e.printStackTrace(); /** 日志 1-失败*/ PMSXmlDataInterceptor.getInstance().addLog(true,"工单状态反馈", 0, xml,e.getMessage()); } } /** * @Author bsw * @Description 向辅料库发送工单运行状态 * @Date 2021/8/5 10:47 * @Param [sts, schWorkorder] * @return void **/ public void sendOrderStatus(String sts, SchWorkorder workorder) { String xml=""; try { Document document; document=DocumentHelper.createDocument(); Element catalogElement = document.addElement("xml"); Element journalElement = catalogElement.addElement("Body"); Element WorkOrderCode = journalElement.addElement("WorkOrderCode"); WorkOrderCode.setText(StringUtil.nullToString( workorder.getCode() ));//工单号 Element Command = journalElement.addElement("Command"); Command.setText(sts); //状态 Element WorkCenterCode = journalElement.addElement("WorkCenterCode"); WorkCenterCode.setText(workorder.getMdEquipment().getWorkCenter()); Element WorkCenterName = journalElement.addElement("WorkCenterName"); WorkCenterName.setText(workorder.getMdEquipment().getEquipmentName()); Element MaterialCode = journalElement.addElement("MaterialCode"); MaterialCode.setText(workorder.getMdMat().getCode()); xml=document.asXML(); //向高架发送XML SendMessageClient.SendMessageToFWMS(xml); /** 日志 1-成功 */ PMSXmlDataInterceptor.getInstance().addLog(true,"工单状态反馈高架", 1, xml); } catch (Exception e) { e.printStackTrace(); /** 日志 1-失败*/ PMSXmlDataInterceptor.getInstance().addLog(true,"工单状态反馈高架", 0, xml,e.getMessage()); } } /** * [功能说明]:设备保养记录反馈 * @author wanchanghuang * @param listParam * @param list * @param fackIds * @createTime 2016年6月15日15:13:28 * * */ public List dasSendEquipmentWorkOrderResult(List list, List listParam, List fackIds){ String xml=""; try { Document document; FixCodeBean fcb=null; //Map mapShift=Mes2DASParams.MES2DASShift(); document=DocumentHelper.createDocument(); Element catalogElement = document.addElement("xml"); Element journalElement = catalogElement.addElement("Body"); //班次 for(EqmWheelCovelPlanInfo ecp : list){ //主表 Element threElement = journalElement.addElement("EMWorkOrder"); Element EMWorkOrderCode = threElement.addElement("EMWorkOrderCode"); EMWorkOrderCode.setText(StringUtil.nullToString(ecp.getEqp_work_order_code())); //MES设备保养工单号 Element ActualDate = threElement.addElement("ActualDate"); ActualDate.setText( StringUtil.nullToString( DateUtil.datetoStr(ecp.getLast_stime(), "yyyy-MM-dd")) );//实际执行日期 Element ActualStartTime = threElement.addElement("ActualStartTime"); ActualStartTime.setText(StringUtil.nullToString( DateUtil.datetoStr(ecp.getLast_stime(), "yyyy-MM-dd HH:mm:ss")) ); //实际维护开始时间 Element Duration = threElement.addElement("Duration"); String tm=DateUtil.getDistanceTimes(DateUtil.formatDateToString(ecp.getLast_stime(), "yyyy-MM-dd HH:mm:ss"),DateUtil.formatDateToString(ecp.getLast_etime(), "yyyy-MM-dd HH:mm:ss")); Duration.setText(StringUtil.nullToString(tm)); //实际维护时长 Element Shift = threElement.addElement("Shift"); fcb=SysEqpTypeBase.getFixCodeByMesCode(ecp.getShift_id(), "SHIFT0001", false); Shift.setText(fcb.getMesCode()); Element Reviewer = threElement.addElement("Reviewer"); Reviewer.setText(StringUtil.nullToString(ecp.getZx_user_name()));//执行人 for(EqmWheelCovelParam ecparam : listParam){ /*if(ecp.getId().equals(ecparam.getEqm_wcp_id())){ //副表 Element Detail = threElement.addElement("Detail"); Element JobNo = Detail.addElement("JobNo");//编号 JobNo.setText(StringUtil.nullToString( ecparam.getId() )); Element JobDescription = Detail.addElement("JobDescription"); //JobDescription.setText(StringUtil.nullToString( ecparam.getContent()) );//保养项 Element MaintMethod = Detail.addElement("MaintMethod"); //MaintMethod.setText(StringUtil.nullToString( ecparam.getContent_datail())); //保养方法 Element JobStandard = Detail.addElement("JobStandard"); //JobStandard.setText(StringUtil.nullToString(ecparam.getJob_standard())); //保养效果 JobStandard.setText("null"); //保养标准 Element CompleteBy = Detail.addElement("CompleteBy"); //CompleteBy.setText(StringUtil.nullToString(ecparam.getActual_user_name()));// 完成人 Element CompleteStatus = Detail.addElement("CompleteStatus"); //CompleteStatus.setText(ecparam.getStatus()==1?"通过":"未通过");//完成情况 Element CheckResult = Detail.addElement("CheckResult"); CheckResult.setText(StringUtil.nullToString(ecparam.getDes())); //检测情况 }*/ } fackIds.add(ecp.getId()); } xml=document.asXML(); //向MES发送XML //----SendMessageClient.SendMessageToMes(document.asXML(),"DASSendEquipmentWorkOrderResult"); // TODO 暂不通过接口传送 PMSXmlDataInterceptor.getInstance().addLog(true,"设备保养记录反馈", 1, xml); } catch (Exception e) { e.printStackTrace(); PMSXmlDataInterceptor.getInstance().addLog(true,"设备保养记录反馈", 0, xml); fackIds.clear(); } return fackIds; } /** * [功能说明]:设备故障记录反馈 * DASSendEquipmentFault * ->>在查询列表中,人工将故障反馈给MES * 不确定故障反馈内容,后期反馈 * */ public void dasSendEquipmentFault(){ Document document; document=DocumentHelper.createDocument(); Element catalogElement = document.addElement("xml"); Element journalElement = catalogElement.addElement("Body"); //多节点 for(int i=0;i<2;i++){ Element EMFaults = journalElement.addElement("EMFaults"); Element EquipmentCode = EMFaults.addElement("EquipmentCode"); EquipmentCode.setText("00000002"); //设备编号 Element Category = EMFaults.addElement("Category"); Category.setText("1");//故障大类 1. 机械 2.电气 3 网络 0 未知 Element Type = EMFaults.addElement("Type"); Type.setText("ZJ17");//设备类型 Element Description = EMFaults.addElement("Description"); Description.setText("设备描述测试"+i);//设备描述 Element Shift = EMFaults.addElement("Shift"); Shift.setText("1");//班次 1.早班 2.中班 3.晚班 Element StartTime = EMFaults.addElement("StartTime"); StartTime.setText("2016-6-24 10:15:00");//故障发生开始时间 Element EndTime = EMFaults.addElement("EndTime"); EndTime.setText("2016-6-24 10:15:07");//故障结束时间 } //向MES发送XML //----SendMessageClient.SendMessageToMes(document.asXML(),"DASSendEquipmentFault"); // TODO 暂不通过接口传送 } public void DASSendWkshopAssessment(EqmWkshopAssessmentBean bean) { String xml=""; try { Document document; document=DocumentHelper.createDocument(); Element root = document.addElement("xml"); Element body = root.addElement("Body"); Element Date = body.addElement("Date"); Date.setText(bean.getDate()); List list = bean.getList(); if (list!=null && list.size()>0) { for (EqmAssessment o : list) { Element CLItem = body.addElement("CLItem"); Element System = CLItem.addElement("System"); System.setText(o.getSystem()); Element ActualCheckNum = CLItem.addElement("ActualCheckNum"); ActualCheckNum.setText(o.getActualCheckNum().toString()); Element PlanCheckNum = CLItem.addElement("PlanCheckNum"); PlanCheckNum.setText(o.getPlanCheckNum().toString()); Element CLRate = CLItem.addElement("CLRate"); CLRate.setText(o.getClRate().toString()); Element CheckType = CLItem.addElement("CheckType"); CheckType.setText(o.getCheckType()); } } Element MonthRepairAmount = body.addElement("MonthRepairAmount"); MonthRepairAmount.setText(bean.getRepairamount().toString()); Element TotalRepairAmount = body.addElement("TotalRepairAmount"); TotalRepairAmount.setText(bean.getTotalAmount().toString()); Element TnPMRate = body.addElement("TnPMRate"); TnPMRate.setText(bean.getTnpmRate().toString()); Element Area = body.addElement("Area"); Area.setText(bean.getWorkShop()); xml=document.asXML(); System.out.println(xml); //向MES发送XML //----SendMessageClient.SendMessageToMes(document.asXML(),"DASSendAssessmentIndicators"); // TODO 暂不通过接口传送 PMSXmlDataInterceptor.getInstance().addLog(true,"车间考核数据反馈", 1, xml); } catch (Exception e) { e.printStackTrace(); PMSXmlDataInterceptor.getInstance().addLog(true,"车间考核数据反馈", 0, xml); } } }