集中器服务拆分
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
processor/common/src/main/java/com/back/protocol/SystemParameter.java

518 lines
16 KiB

/*系统参数查询*/
package com.back.protocol;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import com.back.action.Log;
import com.back.common.MeterTimingParams;
import com.back.common.OpcDeviceParams;
import com.back.common.RunParams;
import com.back.jdbc.SQLHelper;
import com.back.*;
public class SystemParameter {
public static RunParams runParams = new RunParams(); //前置机运行参数
public static MeterTimingParams meterTimingParams = new MeterTimingParams();//定采运行参数
public static OpcDeviceParams opcDeviceParams = new OpcDeviceParams();// opc客户端运行参数
private static String clazzName = new Object() {
public String getClassName()
{
String clazzName = this.getClass().getName();
return clazzName.substring(0, clazzName.lastIndexOf('$'));
}
}.getClassName();
/** 获取定采工作配置参数 */
public static MeterTimingParams GetMeterTiming() {
meterTimingParams.reSend = 3; //错误重发次数
meterTimingParams.parallel = 30; //并发次数
meterTimingParams.logSet = 2; //巡检日志工作状态 0 不记录 1 记录错误 2 全部记录
meterTimingParams.intervalTiming = 30;//运行间隔时间(补抄) 单位:分钟
meterTimingParams.runNum = 8;
meterTimingParams.density = 1;//曲线抄表间隔
int i,j;
String str;
String strsql = "SELECT code,content FROM syscode WHERE type=2 AND code>'0000' ORDER BY code";
java.sql.Statement stmt = null;
ResultSet rSet = SQLHelper.getResultSet(strsql);
if (rSet == null) {
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->读取定采工作配置参数不成功!");
return null;
}
try {
while (rSet.next()) {
str = rSet.getString("code");
str = str.trim();
i = Integer.valueOf(str);
str = rSet.getString("content");
switch(i)
{
case 1://错误重发次数
meterTimingParams.reSend = Integer.valueOf(str);
break;
case 2://并发次数
meterTimingParams.parallel = Integer.valueOf(str);
break;
case 3://巡检日志工作状态 0 不记录 1 记录错误 2 全部记录
meterTimingParams.logSet = Integer.valueOf(str);
break;
case 4://开始时间 格式: HH:MM
meterTimingParams.firstRunTime = str;
break;
case 5://运行间隔时间 单位:分钟
meterTimingParams.intervalTiming = Integer.valueOf(str);
break;
case 6://每天运行次数
meterTimingParams.runNum = Integer.valueOf(str);
break;
case 7://曲线密度 0:不冻结 1:15 2:30 3:60 254:5 255:1
meterTimingParams.density = Integer.valueOf(str);
break;
case 8://通信包大小
meterTimingParams.packsize = Integer.valueOf(str);
break;
case 9://光感控制-照度变化阀值
meterTimingParams.luxChangeLimit = Long.valueOf(str);
break;
}
}
} catch (SQLException e) {
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->ERROR:" + e.getMessage());
}
try {
stmt = rSet.getStatement();
rSet.close();
stmt.close();
rSet = null;
stmt = null;
} catch (Exception e) {
e.printStackTrace();
}
return meterTimingParams;
}
/** 获取电表定采工作设置参数 */
public static String GetPowerTiming() {
String result = "";
String content[] = new String[4];
content[0] = "1"; //数据冻结密度(m)(1:15分钟;2:30分钟;3:60分钟)
content[1] = "3"; //补抄次数
content[2] = "06"; //日冻结数据抄读时间(整点) 格式:HH
Object[] objects;
String str;
int i,j;
String strsql = "SELECT code, content FROM syscode WHERE type=62 AND code>'0000' ORDER BY code";
java.sql.Statement stmt = null;
ResultSet rSet = SQLHelper.getResultSet(strsql);
if (rSet == null) {
return "";
}
try {
while (rSet.next()) {
str = rSet.getString("code");
str = str.trim();
i = Integer.valueOf(str);
content[i - 1] = rSet.getString("content");
}
} catch (SQLException e) {
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->ERROR:" + e.getMessage());
}
try {
stmt = rSet.getStatement();
rSet.close();
stmt.close();
rSet = null;
stmt = null;
} catch (Exception e) {
e.printStackTrace();
}
for ( j = 0; j < content.length; j++) {
if (j==0)
result = content[j];
else
result = result + '|' + content[j];
}
return result;
}
//运行参数结构体
/*配置参数 */
public static RunParams GetPostParams() {
runParams.gprsIp = "1.190.175.75";//GPRS服务器IP (黑龙电服务器)
runParams.gprsPort = 3040;//GPRS服务器端口
runParams.gprsIpLon = "1.190.175.75";//GPRS服务器IP (黑龙服务器)
runParams.gprsPortLon = 3040;//GPRS服务器端口
runParams.reSend =1; //错误重发次数
runParams.gprsTimeOut = 60000;//GPRS超时时间(单位:毫秒)
runParams.timeDiscard = 120;//指令超时不处理时间(单位:秒)
runParams.threadsize = 200;//指令转发处理线程池线程数
runParams.intervalEvent = 1;//数据报文解析处理间隔时间(单位:分钟)
runParams.intervalScan = 20;//检测线程池线程运行状态间隔时间
runParams.terminalCom = "com1" ;//集中器串口
//获取语言
try {
//InputStream ins = new FileInputStream(System.getProperty("user.dir") + "\\conn.properties");
InputStream ins = SQLHelper.class.getClassLoader().getResourceAsStream("conn.properties");
Properties p = new Properties();
p.load(ins);
runParams.language = p.getProperty("language");
runParams.opcControl = Boolean.valueOf(p.getProperty("opcControl"));//光控转发处理
runParams.MControlTiming15 = Boolean.valueOf(p.getProperty("MControlTiming15"));//线路开关 15分钟定时抄读任务
runParams.MControlTiming60 = Boolean.valueOf(p.getProperty("MControlTiming60"));//线路开关 60分钟定时抄读任务
runParams.LampTiming = Boolean.valueOf(p.getProperty("LampTiming"));//路灯曲线 抄读任务
runParams.ForWard485 = Boolean.valueOf(p.getProperty("ForWard485"));//485转发 抄读任务
runParams.LampDay3761Timing = Boolean.valueOf(p.getProperty("LampDay3761Timing"));//灯具 日冻结 抄读任务
runParams.TerminalDay3761Timing = Boolean.valueOf(p.getProperty("TerminalDay3761Timing"));//集中器 日冻结 抄读任务
runParams.AnalysisOfTunnelElectricity = Boolean.valueOf(p.getProperty("AnalysisOfTunnelElectricity"));//隧道电量分析
runParams.gprsIp = p.getProperty("gprsIp");
runParams.gprsPort = 2030;
} catch (IOException e) {
// TODO Auto-generated catch block
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->ERROR:" + e.getMessage());
}
int i,j;
String strsql = "SELECT code,content FROM syscode WHERE type=60 AND code>'0000' ORDER BY code";
java.sql.Statement stmt = null;
ResultSet rSet = SQLHelper.getResultSet(strsql);
if (rSet == null) {
if (runParams.language.equals("en"))
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->Read the frontend configuration parameter is not successful!");
else
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->读取前置机配置参数不成功!");
return runParams;
}
String str;
try {
while (rSet.next()) {
str = rSet.getString("code");
str = str.trim();
i = Integer.valueOf(str);
str = rSet.getString("content").trim();
switch (i) {
case 1: //GPRS服务器
runParams.gprsIp = str;
break;
case 2://GPRS服务器端口
runParams.gprsPort = Integer.valueOf(str);
break;
case 3://错误重发次数千
runParams.reSend = Integer.valueOf(str);
break;
case 4://GPRS通信超时时间(单位:毫秒)
runParams.gprsTimeOut = Integer.valueOf(str);
break;
case 5://指令超时不处理时间(单位:秒)
runParams.timeDiscard = Integer.valueOf(str);
break;
case 6://指转发处理线程池大小
runParams.threadsize = Integer.valueOf(str);
break;
case 7://事件处理间隔(单位:分钟)
runParams.intervalEvent = Integer.valueOf(str);
break;
case 8://检测试线程运行间隔(单位:分钟)
runParams.intervalScan = Integer.valueOf(str);
break;
case 9://本地串口通信端口(例:com1)
runParams.terminalCom = str.toUpperCase();
break;
case 10://串口通信超时时间
runParams.comTimeOut = Integer.valueOf(str);
break;
case 11://485总线通信口
runParams.terminalCom485 = str.toUpperCase();
break;
case 12://485集中器心跳周期
runParams.beat485 = Integer.valueOf(str);
break;
case 13://485集中器命令超时时间
runParams.comTimeOut485 = Integer.valueOf(str);
break;
case 15: {// 设备数据同步周期(单位:秒)
runParams.devideSyncTime = Integer.valueOf(str);
break;
}
case 16: {// websocket ip
runParams.websocketIp = str;
break;
}
case 17: {// websocket port
runParams.websocketPort = Integer.valueOf(str);
break;
}
case 18: { // 车检器连接IP
runParams.carCheckSocketIp = str;
break;
}
case 19: {// 车检器连接端口
runParams.carCheckSocketPort = Integer.valueOf(str);
break;
}
case 20: {
runParams.carCheckSocketTimeOut = Integer.valueOf(str);
break;
}
case 21: {
runParams.carCheckSocketSaveInteval = Integer.valueOf(str);
break;
}
case 30: //GPRS服务器 Lon16
runParams.gprsIpLon = str;
break;
case 31://GPRS服务器端口 Lon16
runParams.gprsPortLon = Integer.valueOf(str);
break;
default:
break;
}
}
} catch (Exception e) {
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->ERROR:" + e.getMessage());
}
String strsql2 = "SELECT code,content FROM syscode WHERE type=100 AND code>'0000' ORDER BY code";
java.sql.Statement stmt2 = null;
ResultSet rSet2 = SQLHelper.getResultSet(strsql2);
if (rSet2 == null) {
if (runParams.language.equals("en"))
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->Read the frontend configuration parameter is not successful!");
else
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->读取前置机配置参数不成功!");
return runParams;
}
String str2;
try {
while (rSet2.next()) {
str2 = rSet2.getString("code");
str2 = str2.trim();
i = Integer.valueOf(str2);
str2 = rSet2.getString("content").trim();
switch (i) {
case 2: {// 车检器是否开启
runParams.carCheckSocketIsOpen = "0".equals(str2)?false:true;
break;
}
}
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
stmt = rSet.getStatement();
rSet.close();
stmt.close();
rSet = null;
stmt = null;
stmt2 = rSet2.getStatement();
rSet2.close();
stmt2.close();
rSet2 = null;
stmt2 = null;
} catch (Exception e) {
e.printStackTrace();
}
return runParams;
}
/**
* opc配置参数
* @return
*/
public static OpcDeviceParams GetOpcDeviceParams() {
opcDeviceParams.opcIp = "127.0.0.1";
opcDeviceParams.opcPort = "49320";
opcDeviceParams.opcTimeOut = 30;
String strsql = "SELECT code,content FROM syscode WHERE type=25 AND code>'0000' ORDER BY code";
ResultSet rSet = SQLHelper.getResultSet(strsql);
if (rSet == null) {
if (runParams.language.equals("en")) {
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->Read the frontend configuration parameter is not successful!");
} else {
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->读取前置机配置参数不成功!");
}
return opcDeviceParams;
}
String str;
int i,j;
try {
while (rSet.next()) {
str = rSet.getString("code");
str = str.trim();
i = Integer.valueOf(str);
str = rSet.getString("content").trim();
switch (i) {
case 1:
opcDeviceParams.enable = "0".equals(str)?false:true;
case 2:
opcDeviceParams.opcIp = str;
break;
case 3:
opcDeviceParams.opcPort = str;
break;
case 4:
opcDeviceParams.opcUserName = str;
break;
case 5:
opcDeviceParams.opcPassword = str;
break;
case 6:
opcDeviceParams.opcCycleTime = Integer.valueOf(str);
break;
case 7:
opcDeviceParams.opcTimeOut = Integer.valueOf(str);
break;
default:
break;
}
}
} catch (Exception e) {
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->ERROR:" + e.getMessage());
}
return opcDeviceParams;
}
/** 获取短信猫配置参数 */
public static String getSmsParams() {
String result = "";
String strsql = "SELECT content FROM syscode WHERE type=61 AND code='0004' ORDER BY code";
java.sql.Statement stmt = null;
ResultSet rSet = SQLHelper.getResultSet(strsql);
if (rSet == null) {
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->读取短信猫配置参数不成功!");
return "";
}
try {
while (rSet.next()) {
result = result + rSet.getString("content") + "|";
}
} catch (Exception e) {
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->ERROR:" + e.getMessage());
}
try {
stmt = rSet.getStatement();
rSet.close();
stmt.close();
rSet = null;
stmt = null;
} catch (Exception e) {
e.printStackTrace();
}
if (!result.equals("")) {
result = result.substring(0, result.length() - 1);
}
return result;
}
/** 获取短信信息中心号码 */
public static String getenter() {
String center = "";
String strsql = "select content from syscode where type=61 and code='0001'";
java.sql.Statement stmt = null;
ResultSet rSet = SQLHelper.getResultSet(strsql);
if (rSet == null) {
return "";
}
try {
while (rSet.next()) {
center = rSet.getString("content");
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
stmt = rSet.getStatement();
rSet.close();
stmt.close();
rSet = null;
stmt = null;
} catch (Exception e) {
e.printStackTrace();
}
return center;
}
/** 获取短信息最大发送次数 */
public static int getmaxCount() {
int count = 0;
String strsql = "select content from syscode where type=61 and code='0003'";
java.sql.Statement stmt = null;
ResultSet rSet = SQLHelper.getResultSet(strsql);
if (rSet == null) {
return 0;
}
try {
while (rSet.next()) {
count = rSet.getInt("content");
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
stmt = rSet.getStatement();
rSet.close();
stmt.close();
rSet = null;
stmt = null;
} catch (Exception e) {
e.printStackTrace();
}
return count;
}
/** 获取短信猫连接口参数 */
public static String smsport() {
String serialport = "";
String strsql = "select content from syscode where type=61 and code='0002'";
java.sql.Statement stmt = null;
ResultSet rSet = SQLHelper.getResultSet(strsql);
if (rSet == null) {
return "";
}
try {
while (rSet.next()) {
serialport = rSet.getString("content");
}
} catch (SQLException e) {
Log.writelog(SystemParameter.clazzName,Thread.currentThread().getStackTrace()[1].getMethodName() + "->Error:" + e.getMessage());
}
try {
stmt = rSet.getStatement();
rSet.close();
stmt.close();
rSet = null;
stmt = null;
} catch (Exception e) {
e.printStackTrace();
}
return serialport.toUpperCase();
}
}