|
@@ -2,7 +2,9 @@ package com.saga.thread.up;
|
|
|
|
|
|
import java.net.UnknownHostException;
|
|
|
import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.Iterator;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import org.zillion.util.log.LogUtil;
|
|
|
|
|
@@ -18,6 +20,7 @@ public class SendThread extends Thread {
|
|
|
|
|
|
private IServerManager uploadServer = null;
|
|
|
private String ip = null;
|
|
|
+ private Map<String, String> pointMac_UP = new HashMap<String, String>();
|
|
|
|
|
|
public SendThread(IServerManager uploadServer) {
|
|
|
// TODO Auto-generated constructor stub
|
|
@@ -78,7 +81,8 @@ public class SendThread extends Thread {
|
|
|
StringBuffer sb = new StringBuffer();
|
|
|
PointSet ps = it.next();
|
|
|
// String address =
|
|
|
- // Constant.CollectorPointSetList.get(ps.buildingSign + ";"
|
|
|
+ // Constant.CollectorPointSetList.get(ps.buildingSign +
|
|
|
+ // ";"
|
|
|
// + ps.ID + ";");
|
|
|
// String address = ps.address;
|
|
|
|
|
@@ -89,23 +93,27 @@ public class SendThread extends Thread {
|
|
|
if (ps.address == null) {
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
+ String MAC = ps.mac;
|
|
|
+ if (this.pointMac_UP.containsKey(ps.buildingSignUP + "-" + ps.meterSign)) {
|
|
|
+ MAC = this.pointMac_UP.get(ps.buildingSignUP + "-" + ps.meterSign);
|
|
|
+ }
|
|
|
// 已得到控制设备的反馈状态,移除
|
|
|
if (ps.recTime > 0 && ps.sendTime > 0 && (ps.status != null && ps.status.length() > 0)) {
|
|
|
- sb.append(ps.buildingSignUP).append(";").append(ps.mac).append(";").append("pointsetack")
|
|
|
- .append(";").append(Constant.format(new Date())).append(";").append(ps.ID).append(";")
|
|
|
- .append(ps.meterSign).append(";").append(ps.funcID).append(";").append(ps.status)
|
|
|
- .append(";");
|
|
|
+ sb.append(ps.buildingSignUP).append(";").append(MAC).append(";").append("pointsetack")
|
|
|
+ .append(";").append(Constant.format(new Date())).append(";").append(ps.ID)
|
|
|
+ .append(";").append(ps.meterSign).append(";").append(ps.funcID).append(";")
|
|
|
+ .append(ps.status).append(";");
|
|
|
this.uploadServer.AppendToSend(ps.address, new Packet(sb.toString()));
|
|
|
Constant.sendSend += sb.toString().length();
|
|
|
HBaseUtil.BatchInsert_Set2(Constant.agent, Constant.BuildingDB.get(ps.buildingSign), ps);
|
|
|
- LogUtil.info(this.uploadServer.Name() + " AppendToSend: " + ps.address + " " + sb.toString());
|
|
|
+ LogUtil.info(
|
|
|
+ this.uploadServer.Name() + " AppendToSend: " + ps.address + " " + sb.toString());
|
|
|
|
|
|
String id = ps.buildingSignUP + "-" + ps.mac + "-" + ps.ID;
|
|
|
HBaseUtil.InsertPointCommunicationLog(Constant.agent,
|
|
|
Constant.BuildingDB.get(ps.buildingSignUP), ps.buildingSignUP, this.ip, ps.mac,
|
|
|
- ps.meterSign, String.valueOf(ps.funcID), "down", "pointsetack", String.valueOf(ps.ID),
|
|
|
- Constant.format(new Date()), "finish:finish:" + ps.status);
|
|
|
+ ps.meterSign, String.valueOf(ps.funcID), "down", "pointsetack",
|
|
|
+ String.valueOf(ps.ID), Constant.format(new Date()), "finish:finish:" + ps.status);
|
|
|
synchronized (Constant.id2status) {
|
|
|
Constant.id2status.put(id, "finish:finish:" + ps.status);
|
|
|
}
|
|
@@ -123,27 +131,30 @@ public class SendThread extends Thread {
|
|
|
} // 超时未得到设备的反馈状态,移除
|
|
|
else if (ps.recTime == 0 && ps.sendTime > 0
|
|
|
&& (System.currentTimeMillis() - ps.sendTime > Constant.getWaitingtime())) {
|
|
|
- sb.append(ps.buildingSignUP).append(";").append(ps.mac).append(";").append("pointsetack")
|
|
|
- .append(";").append(Constant.format(new Date())).append(";").append(ps.ID).append(";")
|
|
|
- .append(ps.meterSign).append(";").append(ps.funcID).append(";").append("fail:timeout")
|
|
|
- .append(";");
|
|
|
+ sb.append(ps.buildingSignUP).append(";").append(MAC).append(";").append("pointsetack")
|
|
|
+ .append(";").append(Constant.format(new Date())).append(";").append(ps.ID)
|
|
|
+ .append(";").append(ps.meterSign).append(";").append(ps.funcID).append(";")
|
|
|
+ .append("fail:timeout").append(";");
|
|
|
this.uploadServer.AppendToSend(ps.address, new Packet(sb.toString()));
|
|
|
Constant.sendSend += sb.toString().length();
|
|
|
HBaseUtil.BatchInsert_Set3(Constant.agent, Constant.BuildingDB.get(ps.buildingSign), ps);
|
|
|
- LogUtil.info(this.uploadServer.Name() + " AppendToSend: " + ps.address + " " + sb.toString());
|
|
|
+ LogUtil.info(
|
|
|
+ this.uploadServer.Name() + " AppendToSend: " + ps.address + " " + sb.toString());
|
|
|
String id = ps.buildingSignUP + "-" + ps.mac + "-" + ps.ID;
|
|
|
|
|
|
// LogUtil.info("InsertPointCommunicationLog" + "
|
|
|
// begin");
|
|
|
HBaseUtil.InsertPointCommunicationLog(Constant.agent,
|
|
|
Constant.BuildingDB.get(ps.buildingSignUP), ps.buildingSignUP, this.ip, ps.mac,
|
|
|
- ps.meterSign, String.valueOf(ps.funcID), "down", "pointsetack", String.valueOf(ps.ID),
|
|
|
- Constant.format(new Date()), "finish:finish:" + "fail:timeout");
|
|
|
+ ps.meterSign, String.valueOf(ps.funcID), "down", "pointsetack",
|
|
|
+ String.valueOf(ps.ID), Constant.format(new Date()),
|
|
|
+ "finish:finish:" + "fail:timeout");
|
|
|
|
|
|
synchronized (Constant.id2status) {
|
|
|
Constant.id2status.put(id, "finish:finish:" + "fail:timeout");
|
|
|
}
|
|
|
- // LogUtil.info("InsertPointCommunicationLog" + " end");
|
|
|
+ // LogUtil.info("InsertPointCommunicationLog" + "
|
|
|
+ // end");
|
|
|
|
|
|
// CSVUtil.insert(Constant.setlog,
|
|
|
// new StringBuffer(
|
|
@@ -188,9 +199,14 @@ public class SendThread extends Thread {
|
|
|
for (String result : resultArray) {
|
|
|
String[] rList = result.split(";");
|
|
|
if (rList.length > 7) {
|
|
|
- String id = rList[0] + "-" + rList[1] + "-" + rList[4];
|
|
|
- String key = rList[0] + "-" + rList[1] + "-" + rList[5] + "." + rList[6];
|
|
|
+ String MAC = rList[1];
|
|
|
|
|
|
+ if (Constant.pointMAC.containsKey(rList[0] + "-" + rList[5])) {
|
|
|
+ MAC = Constant.pointMAC.get(rList[0] + "-" + rList[5]);
|
|
|
+ LogUtil.info("MAC:" + (rList[0] + "-" + rList[5]) + " " + rList[1] + "-->" + MAC);
|
|
|
+ }
|
|
|
+ String id = rList[0] + "-" + MAC + "-" + rList[4];
|
|
|
+ String key = rList[0] + "-" + MAC + "-" + rList[5] + "." + rList[6];
|
|
|
// Constant.id2time.put(id, System.currentTimeMillis());
|
|
|
// Constant.id2point.put(id, key);
|
|
|
// Constant.id2function.put(id, rList[2]);
|
|
@@ -198,7 +214,7 @@ public class SendThread extends Thread {
|
|
|
|
|
|
try {
|
|
|
HBaseUtil.InsertPointCommunicationLog(Constant.agent, Constant.BuildingDB.get(rList[0]),
|
|
|
- rList[0], this.ip, rList[1], rList[5], (rList[6]), this.getupdown(rList[2]), rList[2],
|
|
|
+ rList[0], this.ip, MAC, rList[5], (rList[6]), this.getupdown(rList[2]), rList[2],
|
|
|
String.valueOf(rList[4]), Constant.format(new Date()), "processing:rcvd");
|
|
|
} catch (UnknownHostException e1) {
|
|
|
// TODO Auto-generated catch block
|
|
@@ -231,12 +247,17 @@ public class SendThread extends Thread {
|
|
|
ps.recTime = 0;
|
|
|
ps.buildingSign = rList[0];
|
|
|
ps.buildingSignUP = rList[0];
|
|
|
- if (Constant.BuildingConv.containsKey(ps.buildingSign)) {
|
|
|
+ //楼号有转换规则,且转换后的楼-表有数据才进行转换
|
|
|
+ //解决一楼多楼号时总有部分仪表无法下发的问题
|
|
|
+ if (Constant.BuildingConv.containsKey(ps.buildingSign) && Constant.Meter_Collector_Control
|
|
|
+ .containsKey(Constant.BuildingConv.get(ps.buildingSign) + "-" + ps.meterSign)) {
|
|
|
ps.buildingSign = Constant.BuildingConv.get(ps.buildingSign);
|
|
|
}
|
|
|
- ps.mac = rList[1];
|
|
|
+
|
|
|
ps.ID = Integer.valueOf(rList[4]);
|
|
|
ps.meterSign = rList[5];
|
|
|
+ ps.mac = MAC;
|
|
|
+ this.pointMac_UP.put(ps.buildingSignUP + "-" + ps.meterSign, rList[1]);
|
|
|
ps.funcID = Integer.valueOf(rList[6]);
|
|
|
ps.dataSet = Double.valueOf(rList[7]);
|
|
|
// String adress = packageRece.address;
|