package com.shlanbao.tzsc.data.runtime.handler;
|
|
import com.shlanbao.tzsc.base.dao.BaseDaoI;
|
import com.shlanbao.tzsc.base.interceptor.PMSXmlDataInterceptor;
|
import com.shlanbao.tzsc.data.webservice.client.SendMessageClient;
|
import com.shlanbao.tzsc.utils.tools.DateUtil;
|
import com.shlanbao.tzsc.utils.tools.RedisUtil;
|
import org.apache.commons.lang.StringUtils;
|
import org.dom4j.Document;
|
import org.dom4j.DocumentHelper;
|
import org.dom4j.Element;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @ClassName WsjInfoToMES
|
* @Description 定时处理喂丝机设备连接关系,当联接关系变化时封装xml发送给MES
|
* @Author bsw
|
* @Date 2020/8/30 23:55
|
* @Version 1.0
|
**/
|
public class WsjInfoToMES {
|
Logger logger = LoggerFactory.getLogger(this.getClass());
|
// 存放上次变化的数据
|
private static Map oldMap = null;
|
|
@Autowired
|
private BaseDaoI<Object> baseDao;
|
|
public void sendInfoToMes() {
|
|
Map shiftMap = RedisUtil.getMap("shift");
|
if(shiftMap == null) return ;
|
String shift = (String) shiftMap.get("ID");
|
if(shift==null) return ;
|
|
// 获取新的设备关系数据 key例: 1603
|
Map info = RedisUtil.getMap(shift+"603");
|
if (info==null) return;
|
// 去除实时变化的更新时间字段
|
info.remove("DacUpTime");
|
|
if (oldMap==null) {
|
oldMap = RedisUtil.getMap("oldMap");
|
}
|
// 判断数据是否变化
|
if (!info.equals(oldMap)){
|
// 存放1#喂丝机对应卷接机组 下同
|
List fs1 = new ArrayList();
|
List fs2 = new ArrayList();
|
List fs3 = new ArrayList();
|
List fs4 = new ArrayList();
|
// 存放喂丝机对应储丝柜
|
List cgl = new ArrayList();
|
|
// 循环获取12个卷接机组对应的喂丝机
|
for (int i = 1; i <=12 ; i++) {
|
|
String is = i<10?"0"+i:i+"";
|
|
Object roller = info.get("pipe"+is);
|
if (roller == null || roller.equals("0") || roller.toString().length()<2) continue;
|
|
// 例: 【12】 1 喂丝机 2 管道号 --第一个字符是1 则连接至1#喂丝机,将当前机组存入1#喂丝机所对应卷接机组的集合
|
if ( roller.toString().substring(0,1).equals("1")){
|
fs1.add(is);
|
} else if ( roller.toString().substring(0,1).equals("2")){
|
fs2.add(is);
|
}else if ( roller.toString().substring(0,1).equals("3")){
|
fs3.add(is);
|
}else if ( roller.toString().substring(0,1).equals("4")){
|
fs4.add(is);
|
}
|
|
}
|
Document document;
|
document= DocumentHelper.createDocument();
|
Element dataset = document.addElement("dataset");
|
// 循环封装4台喂丝机对应的卷接机组和储丝柜关系
|
for (int i = 1; i <= 4 ; i++) {
|
Element data = dataset.addElement("data");
|
Element name = data.addElement("WsCode");
|
name.setText("FS"+i);
|
Element equipments = data.addElement("JbCode");
|
// 1#喂丝机 对应 fs1 集合中的卷接组机
|
if (i==1){
|
equipments.setText(StringUtils.join(fs1.toArray(),","));
|
} else if (i==2){
|
equipments.setText(StringUtils.join(fs2.toArray(),","));
|
} else if (i==3){
|
equipments.setText(StringUtils.join(fs3.toArray(),","));
|
} else if (i==4){
|
equipments.setText(StringUtils.join(fs4.toArray(),","));
|
}
|
|
Element cg = data.addElement("CsCode");
|
cgl.clear();
|
|
// 每个喂丝机分别可以同时连接两个储丝柜,获取对应的第一个储丝柜;
|
if (info.get("fs" + i + "1") != null && !"0".equals(info.get("fs" + i + "1")) && !"".equals(info.get("fs" + i + "1").toString().trim())) {
|
cgl.add(info.get("fs" + i + "1").toString().substring(2));
|
}
|
// 获取对应的第二个储丝柜
|
if (info.get("fs" + i + "2") != null && !"0".equals(info.get("fs" + i + "2")) && !"".equals(info.get("fs" + i + "2").toString().trim())) {
|
cgl.add(info.get("fs" + i + "2").toString().substring(2));
|
}
|
cg.setText(StringUtils.join(cgl.toArray(),","));
|
Element ConnTime = data.addElement("ConnTime");
|
ConnTime.setText(DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss"));
|
String insertSql = "INSERT INTO SCH_ROLLER_PIPE (ID, WS, JB, CS, DAT) select SYS_GUID(), '"+name.getText()+"', '"+equipments.getText()+"', '"+cg.getText()+"', sysDate from dual";
|
baseDao.updateBySql(insertSql,null);
|
|
}
|
String xml = document.asXML();
|
// logger.info(xml);
|
SendMessageClient.SendEqpConnToMES(xml);
|
PMSXmlDataInterceptor.getInstance().addLog(true,"发送设备联接关系", 1, xml);
|
oldMap = info;
|
RedisUtil.setMap("oldMap",oldMap);
|
}
|
|
}
|
|
|
}
|