grgw_wdcj_java/wsdjc/.svn/pristine/ab/ab48c7a62f1841a844f170eb725...

250 lines
9.0 KiB
Plaintext
Raw Normal View History

2025-07-02 09:18:59 +08:00
package com.surfbird.util.convert;
import java.io.IOException;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
import com.surfbird.business.bean.HeatAnalyze;
import com.surfbird.business.bean.Instrucation;
import com.surfbird.common.util.JdbcInstance;
import com.surfbird.socket.server.bean.Client;
import com.surfbird.util.CRC16Util;
import com.surfbird.util.Global;
public class DataHandle {
/**
* <20>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊ16<31><36><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> .
* @param str
* @return
**/
public static byte[] toStringByte(String str) {
int m = 0, n = 0;
int byteLength = str.length() / 2; // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD>
byte[] byteArray = new byte[byteLength];
for (int i = 0; i < byteLength; i++) {
m = i * 2 + 1;
n = m + 1;
int intVal = Integer.decode("0x" + str.substring(i * 2, m) + str.substring(m, n));
byteArray[i] = Byte.valueOf((byte) intVal);
}
return byteArray;
}
/**
* 16<31><36><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>.
* @param byteArray
* @param size
* @return
**/
public static String toHexString(byte[] byteArray, int size) {
StringBuilder hexString = new StringBuilder();
for (int i = 0; i < size; i++) {
if ((byteArray[i] & 0xff) < 0x10) {// 0~Fǰ<46><EFBFBD><E6B2BB>
hexString.append("0");
}
hexString.append(Integer.toHexString(0xFF & byteArray[i]));
}
return hexString.toString().toLowerCase();
}
/**
* <20><><EFBFBD><EFBFBD>RTU<54>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ.
* @param writer:ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
* @param receive:<3A><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
* @param analysis:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
* @param size:<3A><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>.
**/
public static void toParseData(OutputStream writer, Client client, String receive, String analysis, int size) {
StringBuffer buffer = new StringBuffer();
if(size == 1) {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
DataHandle.toHandleHeartbeat(writer, receive);
} else if(size == 26) {//ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
DataHandle.toHandleRegister(client, receive);
buffer.append("<22><><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><E9A3BA><EFBFBD>ӵ<EFBFBD>ַ<EFBFBD><D6B7>").append(client.getAddress());
buffer.append("<22><><EFBFBD><EFBFBD><EFBFBD>Ӷ˿ڣ<CBBF>").append(client.getPort());
buffer.append("<22><><EFBFBD><EFBFBD><E8B1B8><EFBFBD>룺").append(client.getCode());
buffer.append("<22><><EFBFBD><EFBFBD><E8B1B8><EFBFBD>ţ<EFBFBD>").append(client.getMobile());
buffer.append("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>").append(receive).append(".");
DataHandle.toInstrucation(buffer.toString(), "<22><><EFBFBD>ݲɼ<DDB2>-<2D><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>");
} else if(size == 31) {//<2F><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>.
DataHandle.toHandleData4212(client, analysis);
buffer.append("<22><><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ַ<EFBFBD><D6B7>").append(client.getAddress());
buffer.append("<22><><EFBFBD><EFBFBD><EFBFBD>Ӷ˿ڣ<CBBF>").append(client.getPort());
buffer.append("<22><><EFBFBD><EFBFBD><E8B1B8><EFBFBD>룺").append(client.getCode());
buffer.append("<22><><EFBFBD><EFBFBD><E8B1B8><EFBFBD>ţ<EFBFBD>").append(client.getMobile());
buffer.append("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>").append(analysis).append(".");
DataHandle.toInstrucation(buffer.toString(), "<22><><EFBFBD>ݲɼ<DDB2>-<2D><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>");
} else if(size == 73) {
DataHandle.toHandleData4202(client, analysis);
buffer.append("<22><><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ַ<EFBFBD><D6B7>").append(client.getAddress());
buffer.append("<22><><EFBFBD><EFBFBD><EFBFBD>Ӷ˿ڣ<CBBF>").append(client.getPort());
buffer.append("<22><><EFBFBD><EFBFBD><E8B1B8><EFBFBD>룺").append(client.getCode());
buffer.append("<22><><EFBFBD><EFBFBD><E8B1B8><EFBFBD>ţ<EFBFBD>").append(client.getMobile());
buffer.append("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>").append(analysis).append(".");
DataHandle.toInstrucation(buffer.toString(), "<22><><EFBFBD>ݲɼ<DDB2>-<2D><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>");
} else {//<2F><EFBFBD><ECB3A3><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>.
buffer.append("<22><EFBFBD><ECB3A3><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ӵ<EFBFBD>ַ<EFBFBD><D6B7>").append(client.getAddress());
buffer.append("<22><><EFBFBD><EFBFBD><EFBFBD>Ӷ˿ڣ<CBBF>").append(client.getPort());
buffer.append("<22><><EFBFBD><EFBFBD><E8B1B8><EFBFBD>룺").append(StringUtils.isBlank(client.getCode()) ? "<22><>" : client.getCode());
buffer.append("<22><><EFBFBD><EFBFBD><E8B1B8><EFBFBD>ţ<EFBFBD>").append(StringUtils.isBlank(client.getMobile()) ? "<22><>" : client.getMobile());
buffer.append("<22><><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>ȣ<EFBFBD>").append(size);
buffer.append("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>").append(analysis);
buffer.append("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>").append(receive).append(".");
DataHandle.toInstrucation(buffer.toString(), "<22><><EFBFBD>ݲɼ<DDB2>-<2D><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>");
}
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
* @param writer:ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
* @param data:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
**/
private static void toHandleHeartbeat(OutputStream writer, String data) {
try {
if(StringUtils.isNotBlank(data) && data.equals("$"))
writer.write("%".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>豸ע<E8B1B8><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
* @param client:ͨ<>ſͻ<C5BF><CDBB>˶<EFBFBD><CBB6><EFBFBD>.
* @param data:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
**/
private static void toHandleRegister(Client client, String data) {
if(StringUtils.isNotBlank(data) && data.toUpperCase().startsWith("XMYN")) {
String info = data.toUpperCase();
info = info.replace("\r", "").replace("\n", "").replace("XMYN", "");
client.setCode(info.substring(0, 9));
client.setMobile(info.substring(9, info.length()));
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬RTUָ<55>Ϊ<EEA3AC><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>˾<EFBFBD><CBBE>
//client.setOrder(Integer.parseInt(client.getMobile().substring(0, 1)) == 1 ? Global.XMYN_RTU_4202 : Global.XMYN_RTU_4212);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>RTUָ<55><D6B8>
if(Integer.parseInt(client.getMobile().substring(0, 1)) == 1) {
client.setOrder(Global.XMYN_RTU_4202);
} else if(Integer.parseInt(client.getMobile().substring(0, 1)) == 3) {
//<2F><>ȡ<EFBFBD><EFBFBD><E8B1B8>ַ<EFBFBD><D6B7>.
int index = Integer.parseInt(client.getMobile().substring(8, client.getMobile().length()));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٻ<EFBFBD>ָ<EFBFBD><D6B8>.
String instruct = CRC16Util.toHexFormat(index).concat(Global.XMYN_RTU_RECALL);
//<2F><><EFBFBD><EFBFBD>CRC16<31><36><EFBFBD><EFBFBD><EFBFBD>ٻ<EFBFBD>ָ<EFBFBD><D6B8>.
client.setOrder(instruct.concat(CRC16Util.toModbus(instruct)));
} else {
client.setOrder(Global.XMYN_RTU_4212);
}
}
}
/**
* <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ.
* @param client:<3A>ͻ<EFBFBD><CDBB>˶<EFBFBD><CBB6><EFBFBD>.
* @param data1:<3A><>һ·ģ<C2B7><C4A3><EFBFBD><EFBFBD>.
* @param data2:<3A>ڶ<EFBFBD>·ģ<C2B7><C4A3><EFBFBD><EFBFBD>.
* @param data3:<3A><><EFBFBD><EFBFBD>·ģ<C2B7><C4A3><EFBFBD><EFBFBD>.
* @param data4:<3A><><EFBFBD><EFBFBD>·ģ<C2B7><C4A3><EFBFBD><EFBFBD>.
* @param data5:<3A><><EFBFBD><EFBFBD>·ģ<C2B7><C4A3><EFBFBD><EFBFBD>.
* @param data6:<3A><><EFBFBD><EFBFBD>·ģ<C2B7><C4A3><EFBFBD><EFBFBD>.
* @param data7:<3A><><EFBFBD><EFBFBD>·ģ<C2B7><C4A3><EFBFBD><EFBFBD>.
* @param data8:<3A>ڰ<EFBFBD>·ģ<C2B7><C4A3><EFBFBD><EFBFBD>.
**/
private static void toHandleData(Client client, String data1, String data2, String data3, String data4, String data5, String data6, String data7, String data8 ) {
try {
HeatAnalyze heatAnalyze = new HeatAnalyze();
heatAnalyze.setCode(client.getCode());
heatAnalyze.setSim(client.getMobile());
heatAnalyze.setDatatime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
heatAnalyze.setView005(data1);
heatAnalyze.setView006(data2);
heatAnalyze.setView007(data3);
heatAnalyze.setView008(data4);
heatAnalyze.setView009(data5);
heatAnalyze.setView010(data6);
heatAnalyze.setView011(data7);
heatAnalyze.setView012(data8);
JdbcInstance.save("com.surfbird.business.dao.HeatAnalyzeDao.save", heatAnalyze);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* <20><><EFBFBD><EFBFBD>RTU<54>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ(<28>Ͽ<EFBFBD>).
* @param client:ͨ<>ſͻ<C5BF><CDBB>˶<EFBFBD><CBB6><EFBFBD>.
* @param data:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
**/
private static void toHandleData4202(Client client, String data) {
try {
data = data.substring(14, data.length());
String data1 = data.substring(0, 4);
String data2 = data.substring(8, 12);
String data3 = data.substring(16, 20);
String data4 = data.substring(24, 28);
String data5 = data.substring(32, 36);
String data6 = data.substring(40, 44);
String data7 = data.substring(48, 52);
String data8 = data.substring(56, 60);
DecimalFormat format = new DecimalFormat("#####0.##");
data1 = format.format(Integer.parseInt(data1, 16)/100.0);
data2 = format.format(Integer.parseInt(data2, 16)/100.0);
data3 = format.format(Integer.parseInt(data3, 16)/100.0);
data4 = format.format(Integer.parseInt(data4, 16)/100.0);
data5 = format.format(Integer.parseInt(data5, 16)/100.0);
data6 = format.format(Integer.parseInt(data6, 16)/100.0);
data7 = format.format(Integer.parseInt(data7, 16)/100.0);
data8 = format.format(Integer.parseInt(data8, 16)/100.0);
DataHandle.toHandleData(client, data1, data2, data3, data4, data5, data6, data7, data8);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* <20><><EFBFBD><EFBFBD>RTU<54>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ(<28>¿<EFBFBD>).
* @param client:ͨ<>ſͻ<C5BF><CDBB>˶<EFBFBD><CBB6><EFBFBD>.
* @param data:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
**/
private static void toHandleData4212(Client client, String data) {
try {
data = data.substring(22, data.length());
String data1 = data.substring(0, 4);
String data2 = data.substring(4, 8);
String data3 = data.substring(8, 12);
String data4 = data.substring(12, 16);
String data5 = data.substring(16, 20);
String data6 = data.substring(20, 24);
String data7 = data.substring(24, 28);
String data8 = data.substring(28, 32);
DataHandle.toHandleData(client, DataFormula.toSmallerHundred(data1), DataFormula.toSmallerHundred(data2), DataFormula.toSmallerHundred(data3), DataFormula.toSmallerHundred(data4), DataFormula.toSmallerHundred(data5), DataFormula.toSmallerHundred(data6), DataFormula.toSmallerHundred(data7), DataFormula.toSmallerHundred(data8));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* <20><>¼<EFBFBD><C2BC><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD>־.
* @param content:<3A><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>.
* @param label:<3A><>־˵<D6BE><CBB5>.
**/
private static void toInstrucation(String content, String label) {
try {
//<2F><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>.
Instrucation insObject = new Instrucation();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>.
insObject.setContent(content);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>.
insObject.setInstrucation(label);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ϣ.
JdbcInstance.save("com.surfbird.business.dao.InstrucationDao.save", insObject);
} catch (Exception e) {
e.printStackTrace();
}
}
}