Compare commits
2 Commits
d822014e60
...
c6229f43b2
| Author | SHA1 | Date |
|---|---|---|
|
|
c6229f43b2 | |
|
|
95b64732f7 |
11
pom.xml
11
pom.xml
|
|
@ -119,6 +119,17 @@
|
|||
<artifactId>jna</artifactId>
|
||||
<version>${jna.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>javacv-platform</artifactId>
|
||||
<version>1.5.9</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
|||
|
|
@ -19,30 +19,34 @@ import javax.annotation.Resource;
|
|||
@Component
|
||||
@Order(value = 1)
|
||||
public class StartModBusTcpServer implements ApplicationRunner {
|
||||
|
||||
@Resource
|
||||
private DeviceService deviceService;
|
||||
|
||||
|
||||
// 线圈(Coils) 01,05,15 00000-09999 读写 开关量输出new SimpleDigitalOut(true);
|
||||
// 离散输入(DI) 02 10000-19999 只读 开关量输入new SimpleDigitalIn(false);
|
||||
// 保持寄存器 读写 new SimpleRegister(251);
|
||||
// 输入寄存器 只读 new SimpleInputRegister(45);
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
deviceService.initMqOrderList();
|
||||
// 离散输入(DI) 02 10000-1FFFF 10001-19999 只读位
|
||||
// 输入寄存器(IR) 04 30000-3FFFF 30001-39999 只读16位值
|
||||
ModbusSlave slave = ModbusSlaveFactory.createTCPSlave(1888, 5);
|
||||
// 高炉
|
||||
slave.addProcessImage(1, deviceService.getGlProcessImage());
|
||||
// 转炉
|
||||
slave.addProcessImage(2, deviceService.getZlProcessImage());
|
||||
// 精炼炉
|
||||
slave.addProcessImage(3, deviceService.getLfProcessImage());
|
||||
// 煤气报警器
|
||||
slave.addProcessImage(4, deviceService.getMqProcessImage());
|
||||
slave.open();
|
||||
|
||||
}
|
||||
//
|
||||
// @Resource
|
||||
// private DeviceService deviceService;
|
||||
//
|
||||
//
|
||||
// // 线圈(Coils) 01,05,15 00000-09999 读写 开关量输出new SimpleDigitalOut(true);
|
||||
// // 离散输入(DI) 02 10000-19999 只读 开关量输入new SimpleDigitalIn(false);
|
||||
// // 保持寄存器 读写 new SimpleRegister(251);
|
||||
// // 输入寄存器 只读 new SimpleInputRegister(45);
|
||||
// @Override
|
||||
// public void run(ApplicationArguments args) throws Exception {
|
||||
// deviceService.initMqOrderList();
|
||||
// // 离散输入(DI) 02 10000-1FFFF 10001-19999 只读位
|
||||
// // 输入寄存器(IR) 04 30000-3FFFF 30001-39999 只读16位值
|
||||
// ModbusSlave slave = ModbusSlaveFactory.createTCPSlave(1888, 5);
|
||||
// // 高炉
|
||||
// slave.addProcessImage(1, deviceService.getGlProcessImage());
|
||||
// // 转炉
|
||||
// slave.addProcessImage(2, deviceService.getZlProcessImage());
|
||||
// // 精炼炉
|
||||
// slave.addProcessImage(3, deviceService.getLfProcessImage());
|
||||
// // 煤气报警器
|
||||
// slave.addProcessImage(4, deviceService.getMqProcessImage());
|
||||
// slave.open();
|
||||
//
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package com.netsdk.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.client.ClientHttpRequestFactory;
|
||||
import org.springframework.http.client.SimpleClientHttpRequestFactory;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@Configuration
|
||||
public class RestTemplateConfig {
|
||||
|
||||
@Bean
|
||||
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
|
||||
return new RestTemplate(factory);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
|
||||
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
|
||||
// 设置连接超时时间 5秒
|
||||
factory.setConnectTimeout(5000);
|
||||
// 设置读取超时时间 5秒
|
||||
factory.setReadTimeout(5000);
|
||||
return factory;
|
||||
}
|
||||
}
|
||||
|
|
@ -10,5 +10,5 @@ import java.util.HashMap;
|
|||
*/
|
||||
@Mapper
|
||||
public interface OtherMapper {
|
||||
ArrayList<HashMap<String, String>> getAllMqOrderList();
|
||||
// ArrayList<HashMap<String, String>> getAllMqOrderList();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import com.ghgande.j2mod.modbus.procimg.ProcessImage;
|
|||
* @author lin
|
||||
*/
|
||||
public interface DeviceService {
|
||||
ProcessImage getGlProcessImage();
|
||||
|
||||
ProcessImage getZlProcessImage();
|
||||
|
||||
ProcessImage getLfProcessImage();
|
||||
|
||||
ProcessImage getMqProcessImage();
|
||||
void initMqOrderList();
|
||||
// ProcessImage getGlProcessImage();
|
||||
//
|
||||
// ProcessImage getZlProcessImage();
|
||||
//
|
||||
// ProcessImage getLfProcessImage();
|
||||
//
|
||||
// ProcessImage getMqProcessImage();
|
||||
// void initMqOrderList();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,309 +24,309 @@ import java.util.HashMap;
|
|||
*/
|
||||
@Service
|
||||
public class DeviceServiceImpl implements DeviceService {
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
@Resource
|
||||
private OtherMapper otherMapper;
|
||||
|
||||
@Override
|
||||
public ProcessImage getGlProcessImage() {
|
||||
// 高炉设备初始话获取数据
|
||||
JSONArray objects = JSONObject.parseArray((String) redisUtil.get("GL_LIST"));
|
||||
// SBXH-GL-1 高炉#炉顶工作压力
|
||||
// 高炉#炉顶放散阀联锁投入状态#东大放散阀状态-关到位 SBXH-GL-2-2
|
||||
// 高炉#炉顶放散阀联锁投入状态#东大放散阀状态-开到位 SBXH-GL-2-1
|
||||
// 高炉#炉顶放散阀联锁投入状态#西大放散阀状态-开到位 SBXH-GL-2-3
|
||||
// 高炉#炉顶放散阀联锁投入状态#西大放散阀状态-关到位 SBXH-GL-2-4
|
||||
SimpleProcessImage spi = new SimpleProcessImage();
|
||||
// 离散输入(DI) 02 10000-1FFFF 10001-19999 只读位
|
||||
SimpleInputRegister SBXH_GL_2_5 = new SimpleInputRegister();
|
||||
SimpleInputRegister dynamicRegHig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister dynamicReglow = new SimpleInputRegister(0);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-GL-1" + "hig", dynamicRegHig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-GL-1" + "low", dynamicReglow);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-GL-2-5", SBXH_GL_2_5);
|
||||
|
||||
for (int i = 0; i < objects.size(); i++) {
|
||||
JSONObject jsonObject = objects.getJSONObject(i);
|
||||
if ("SBXH-GL-1".equals(jsonObject.getString("IPCDEVICE_ID"))) {
|
||||
float intValue = jsonObject.getFloatValue("CURRENT_VALUE");
|
||||
int bits = Float.floatToIntBits(intValue);
|
||||
dynamicRegHig.setValue((bits >> 16) & 0xFFFF);
|
||||
dynamicReglow.setValue(bits & 0xFFFF);
|
||||
}
|
||||
if ("SBXH-GL-2-5".equals(jsonObject.getString("IPCDEVICE_ID"))) {
|
||||
double intValue = jsonObject.getDouble("CURRENT_VALUE");
|
||||
SBXH_GL_2_5.setValue((int) intValue);
|
||||
}
|
||||
|
||||
}
|
||||
// SBXH-GL-1 高炉#炉顶工作压力
|
||||
// 输入寄存器(IR) 04 30000-3FFFF 30001-39999 只读16位值
|
||||
spi.addInputRegister(dynamicRegHig);
|
||||
spi.addInputRegister(dynamicReglow);
|
||||
spi.addInputRegister(SBXH_GL_2_5);
|
||||
int inputRegisterCount = spi.getInputRegisterCount();
|
||||
for (int i = inputRegisterCount; i < 1000; i++) {
|
||||
spi.addInputRegister(new SimpleInputRegister(0));
|
||||
}
|
||||
return spi;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProcessImage getZlProcessImage() {
|
||||
JSONArray objects = JSONObject.parseArray((String) redisUtil.get("ZL_LIST"));
|
||||
SimpleProcessImage spi = new SimpleProcessImage();
|
||||
initZlSimpleInputRegister(spi);
|
||||
for (int i = 0; i < objects.size(); i++) {
|
||||
JSONObject jsonObject = objects.getJSONObject(i);
|
||||
float intValue = jsonObject.getFloatValue("CURRENT_VALUE");
|
||||
if ("1".equals(jsonObject.getString("SIGNAL_TYPE"))) {
|
||||
// 模拟量
|
||||
SimpleInputRegister simpleInputRegister_hig = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID") + "hig");
|
||||
SimpleInputRegister simpleInputRegister_low = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID") + "low");
|
||||
if (simpleInputRegister_hig != null) {
|
||||
int bits = Float.floatToIntBits(intValue);
|
||||
simpleInputRegister_hig.setValue((bits >> 16) & 0xFFFF);
|
||||
simpleInputRegister_low.setValue(bits & 0xFFFF);
|
||||
}
|
||||
} else {
|
||||
SimpleInputRegister simpleInputRegister = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID"));
|
||||
if (simpleInputRegister == null) continue;
|
||||
// 开关量
|
||||
simpleInputRegister.setValue((int) intValue);
|
||||
}
|
||||
}
|
||||
// 这个别删除、省局要求 寄存器数量不能少于1000个哪怕没数据
|
||||
int inputRegisterCount = spi.getInputRegisterCount();
|
||||
for (int i = inputRegisterCount; i < 1000; i++) {
|
||||
spi.addInputRegister(new SimpleInputRegister(0));
|
||||
}
|
||||
return spi;
|
||||
}
|
||||
|
||||
private void initZlSimpleInputRegister(SimpleProcessImage spi) {
|
||||
SimpleInputRegister SBXH_ZL_1_1_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_1_1_low = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_1_2_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_1_2_low = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_2_1_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_2_1_low = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_2_2_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_2_2_low = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_4_1_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_4_1_low = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_4_2_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_4_2_low = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_5_1_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_5_1_low = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_5_2_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_ZL_5_2_low = new SimpleInputRegister(0);
|
||||
|
||||
|
||||
// 水冷氧枪-氧气压力1#枪氧气压力
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-1-1" + "hig", SBXH_ZL_1_1_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-1-1" + "low", SBXH_ZL_1_1_low);
|
||||
// 水冷氧枪-氧气压力2#枪氧气压力
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-1-2" + "hig", SBXH_ZL_1_2_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-1-2" + "low", SBXH_ZL_1_2_low);
|
||||
// 水冷氧枪-冷却水进水流量 1#枪冷却水进水流量
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-2-1" + "hig", SBXH_ZL_2_1_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-2-1" + "low", SBXH_ZL_2_1_low);
|
||||
// 水冷氧枪-冷却水进水流量 2#枪冷却水进水流量
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-2-2" + "hig", SBXH_ZL_2_2_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-2-2" + "low", SBXH_ZL_2_2_low);
|
||||
// 水冷氧枪-冷却水出水温度1#枪冷却水出水温度
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-4-1" + "hig", SBXH_ZL_4_1_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-4-1" + "low", SBXH_ZL_4_1_low);
|
||||
// 水冷氧枪-冷却水出水温度2#枪冷却水出水温度
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-4-2" + "hig", SBXH_ZL_4_2_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-4-2" + "low", SBXH_ZL_4_2_low);
|
||||
// 水冷氧枪-冷却水进出水流量差 SBXH-ZL_5-1 1#枪冷却水进出水流量差
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL_5-1" + "hig", SBXH_ZL_5_1_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL_5-1" + "low", SBXH_ZL_5_1_low);
|
||||
// 水冷氧枪-冷却水进出水流量差 SBXH-ZL_5-2 2#枪冷却水进出水流量差
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL_5-2" + "hig", SBXH_ZL_5_2_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL_5-2" + "low", SBXH_ZL_5_2_low);
|
||||
|
||||
|
||||
// 氧气压力与氧枪自动升起联锁投入状态
|
||||
SimpleInputRegister SBXH_ZL_5 = new SimpleInputRegister();
|
||||
// 冷却水进水流量与氧枪自动升起联锁投入状态
|
||||
SimpleInputRegister SBXH_ZL_6 = new SimpleInputRegister();
|
||||
// 冷却水出水温度与氧枪自动升起联锁投入状态
|
||||
SimpleInputRegister SBXH_ZL_7 = new SimpleInputRegister();
|
||||
// 进出水流量差与氧枪自动升起联锁投入状态
|
||||
SimpleInputRegister SBXH_ZL_8 = new SimpleInputRegister();
|
||||
// 冷却水进出水流量差与炉体倾动联锁投入状态
|
||||
SimpleInputRegister SBXH_ZL_9 = new SimpleInputRegister();
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-5", SBXH_ZL_5);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-6", SBXH_ZL_6);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-7", SBXH_ZL_7);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-8", SBXH_ZL_8);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-9", SBXH_ZL_9);
|
||||
spi.addInputRegister(SBXH_ZL_1_1_hig);
|
||||
spi.addInputRegister(SBXH_ZL_1_1_low);
|
||||
spi.addInputRegister(SBXH_ZL_1_2_hig);
|
||||
spi.addInputRegister(SBXH_ZL_1_2_low);
|
||||
spi.addInputRegister(SBXH_ZL_2_1_hig);
|
||||
spi.addInputRegister(SBXH_ZL_2_1_low);
|
||||
spi.addInputRegister(SBXH_ZL_2_2_hig);
|
||||
spi.addInputRegister(SBXH_ZL_2_2_low);
|
||||
spi.addInputRegister(SBXH_ZL_5_1_hig);
|
||||
spi.addInputRegister(SBXH_ZL_5_1_low);
|
||||
spi.addInputRegister(SBXH_ZL_5_2_hig);
|
||||
spi.addInputRegister(SBXH_ZL_5_2_low);
|
||||
spi.addInputRegister(SBXH_ZL_4_1_hig);
|
||||
spi.addInputRegister(SBXH_ZL_4_1_low);
|
||||
spi.addInputRegister(SBXH_ZL_4_2_hig);
|
||||
spi.addInputRegister(SBXH_ZL_4_2_low);
|
||||
|
||||
spi.addInputRegister(SBXH_ZL_5);
|
||||
spi.addInputRegister(SBXH_ZL_6);
|
||||
spi.addInputRegister(SBXH_ZL_7);
|
||||
spi.addInputRegister(SBXH_ZL_8);
|
||||
spi.addInputRegister(SBXH_ZL_9);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProcessImage getLfProcessImage() {
|
||||
JSONArray objects = JSONObject.parseArray((String) redisUtil.get("JL_LIST"));
|
||||
SimpleProcessImage spi = new SimpleProcessImage();
|
||||
initLfSimpleInputRegister(spi);
|
||||
for (int i = 0; i < objects.size(); i++) {
|
||||
JSONObject jsonObject = objects.getJSONObject(i);
|
||||
float intValue = jsonObject.getFloatValue("CURRENT_VALUE");
|
||||
if ("1".equals(jsonObject.getString("SIGNAL_TYPE"))) {
|
||||
// 模拟量
|
||||
SimpleInputRegister simpleInputRegister_hig = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID") + "hig");
|
||||
SimpleInputRegister simpleInputRegister_low = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID") + "low");
|
||||
if (simpleInputRegister_hig != null) {
|
||||
int bits = Float.floatToIntBits(intValue);
|
||||
simpleInputRegister_hig.setValue((bits >> 16) & 0xFFFF);
|
||||
simpleInputRegister_low.setValue(bits & 0xFFFF);
|
||||
}
|
||||
} else {
|
||||
SimpleInputRegister simpleInputRegister = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID"));
|
||||
// SBXH-JL-3
|
||||
SimpleInputRegister simpleInputRegister1 = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID") + "_1");
|
||||
if (simpleInputRegister1 != null) {
|
||||
simpleInputRegister1.setValue((int) intValue);
|
||||
}
|
||||
if (simpleInputRegister == null) continue;
|
||||
// 开关量
|
||||
simpleInputRegister.setValue((int) intValue);
|
||||
}
|
||||
}
|
||||
int inputRegisterCount = spi.getInputRegisterCount();
|
||||
for (int i = inputRegisterCount; i < 1000; i++) {
|
||||
spi.addInputRegister(new SimpleInputRegister(0));
|
||||
}
|
||||
// 冷却水出水温度与电极自动断 电联锁投入状态
|
||||
// 冷却水出水温度与电极升起联锁投入状态
|
||||
// 进出水流量差与电极自动断电联锁投入状态
|
||||
// 进出水流量差与电极升起联锁投入状态
|
||||
return spi;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProcessImage getMqProcessImage() {
|
||||
JSONArray objects = JSONObject.parseArray((String) redisUtil.get("MQ_LIST"));
|
||||
SimpleProcessImage spi = new SimpleProcessImage();
|
||||
initMqSimpleInputRegister(spi);
|
||||
for (int i = 0; i < objects.size(); i++) {
|
||||
JSONObject jsonObject = objects.getJSONObject(i);
|
||||
float intValue = jsonObject.getFloatValue("CURRENT_VALUE");
|
||||
SimpleInputRegister simpleInputRegister = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID"));
|
||||
if (simpleInputRegister == null) continue;
|
||||
// 开关量
|
||||
simpleInputRegister.setValue((int) intValue);
|
||||
}
|
||||
int inputRegisterCount = spi.getInputRegisterCount();
|
||||
for (int i = inputRegisterCount; i < 1000; i++) {
|
||||
spi.addInputRegister(new SimpleInputRegister(0));
|
||||
}
|
||||
return spi;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initMqOrderList() {
|
||||
ArrayList<HashMap<String, String>> allMqOrderList = otherMapper.getAllMqOrderList();
|
||||
for (HashMap<String, String> hashMap : allMqOrderList) {
|
||||
SyncGlScheduledTasks.MQ_ORDER_MAP.put(Integer.parseInt(String.valueOf(hashMap.get("ID"))), hashMap.get("IPCDEVICE_ID"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void initMqSimpleInputRegister(SimpleProcessImage spi) {
|
||||
int size = SyncGlScheduledTasks.MQ_ORDER_MAP.size();
|
||||
for (int i = 0; i < size; i++) {
|
||||
SimpleInputRegister simpleInputRegister = new SimpleInputRegister();
|
||||
spi.addInputRegister(simpleInputRegister);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put(SyncGlScheduledTasks.MQ_ORDER_MAP.get(i), simpleInputRegister);
|
||||
}
|
||||
}
|
||||
|
||||
private void initLfSimpleInputRegister(SimpleProcessImage spi) {
|
||||
// 冷却水出水温度
|
||||
// SBXH-JL-1-1 1#冷却水出水温度
|
||||
// SBXH-JL-1-2 2#冷却水出水温度
|
||||
//冷却水进出水流量差
|
||||
// SBXH-JL-3-1 1#冷却水进出水流量差
|
||||
// SBXH-JL-3-2 2#冷却水进出水流量差
|
||||
SimpleInputRegister SBXH_JL_1_1_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_JL_1_1_low = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_JL_1_2_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_JL_1_2_low = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_JL_3_1_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_JL_3_1_low = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_JL_3_2_hig = new SimpleInputRegister(0);
|
||||
SimpleInputRegister SBXH_JL_3_2_low = new SimpleInputRegister(0);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-1-1" + "hig", SBXH_JL_1_1_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-1-1" + "low", SBXH_JL_1_1_low);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-1-2" + "hig", SBXH_JL_1_2_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-1-2" + "low", SBXH_JL_1_2_low);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3-1" + "hig", SBXH_JL_3_1_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3-1" + "low", SBXH_JL_3_1_low);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3-2" + "hig", SBXH_JL_3_2_hig);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3-2" + "low", SBXH_JL_3_2_low);
|
||||
// 冷却水出水温度与电极自动断电联锁投入状态 冷却水出水温度与电极升起联锁投入状态 1#炉盖回水温度联锁
|
||||
SimpleInputRegister SBXH_JL_3 = new SimpleInputRegister();
|
||||
SimpleInputRegister SBXH_JL_3_1 = new SimpleInputRegister();
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3", SBXH_JL_3);
|
||||
// 冷却水出水温度与电极升起联锁投入状态 1#炉盖回水温度联锁
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3_1", SBXH_JL_3);
|
||||
// 冷却水出水温度与电极自动断电联锁投入状态 冷却水出水温度与电极升起联锁投入状态 2#炉盖回水温度联锁
|
||||
SimpleInputRegister SBXH_JL_4 = new SimpleInputRegister();
|
||||
SimpleInputRegister SBXH_JL_4_1 = new SimpleInputRegister();
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-4", SBXH_JL_4);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-4_1", SBXH_JL_4);
|
||||
// 进出水流量差与电极自动断电联锁投入状态 进出水流量差与电极升起联锁投入状态 1#炉盖回水流量差联锁
|
||||
SimpleInputRegister SBXH_JL_5 = new SimpleInputRegister();
|
||||
SimpleInputRegister SBXH_JL_5_1 = new SimpleInputRegister();
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-5", SBXH_JL_5);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-5_1", SBXH_JL_5);
|
||||
// 进出水流量差与电极自动断电联锁投入状态 进出水流量差与电极升起联锁投入状态 2#炉盖回水流量差联锁
|
||||
SimpleInputRegister SBXH_JL_6 = new SimpleInputRegister();
|
||||
SimpleInputRegister SBXH_JL_6_1 = new SimpleInputRegister();
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-6", SBXH_JL_6);
|
||||
SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-6_1", SBXH_JL_6);
|
||||
spi.addInputRegister(SBXH_JL_1_1_hig);
|
||||
spi.addInputRegister(SBXH_JL_1_2_low);
|
||||
spi.addInputRegister(SBXH_JL_1_2_hig);
|
||||
spi.addInputRegister(SBXH_JL_1_2_low);
|
||||
spi.addInputRegister(SBXH_JL_3_1_hig);
|
||||
spi.addInputRegister(SBXH_JL_3_1_low);
|
||||
spi.addInputRegister(SBXH_JL_3_2_hig);
|
||||
spi.addInputRegister(SBXH_JL_3_2_low);
|
||||
spi.addInputRegister(SBXH_JL_3);
|
||||
spi.addInputRegister(SBXH_JL_4);
|
||||
spi.addInputRegister(SBXH_JL_5);
|
||||
spi.addInputRegister(SBXH_JL_6);
|
||||
spi.addInputRegister(SBXH_JL_3_1);
|
||||
spi.addInputRegister(SBXH_JL_4_1);
|
||||
spi.addInputRegister(SBXH_JL_5_1);
|
||||
spi.addInputRegister(SBXH_JL_6_1);
|
||||
|
||||
}
|
||||
// @Resource
|
||||
// private RedisUtil redisUtil;
|
||||
// @Resource
|
||||
// private OtherMapper otherMapper;
|
||||
//
|
||||
// @Override
|
||||
// public ProcessImage getGlProcessImage() {
|
||||
// // 高炉设备初始话获取数据
|
||||
// JSONArray objects = JSONObject.parseArray((String) redisUtil.get("GL_LIST"));
|
||||
// // SBXH-GL-1 高炉#炉顶工作压力
|
||||
// // 高炉#炉顶放散阀联锁投入状态#东大放散阀状态-关到位 SBXH-GL-2-2
|
||||
// // 高炉#炉顶放散阀联锁投入状态#东大放散阀状态-开到位 SBXH-GL-2-1
|
||||
// // 高炉#炉顶放散阀联锁投入状态#西大放散阀状态-开到位 SBXH-GL-2-3
|
||||
// // 高炉#炉顶放散阀联锁投入状态#西大放散阀状态-关到位 SBXH-GL-2-4
|
||||
// SimpleProcessImage spi = new SimpleProcessImage();
|
||||
// // 离散输入(DI) 02 10000-1FFFF 10001-19999 只读位
|
||||
// SimpleInputRegister SBXH_GL_2_5 = new SimpleInputRegister();
|
||||
// SimpleInputRegister dynamicRegHig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister dynamicReglow = new SimpleInputRegister(0);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-GL-1" + "hig", dynamicRegHig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-GL-1" + "low", dynamicReglow);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-GL-2-5", SBXH_GL_2_5);
|
||||
//
|
||||
// for (int i = 0; i < objects.size(); i++) {
|
||||
// JSONObject jsonObject = objects.getJSONObject(i);
|
||||
// if ("SBXH-GL-1".equals(jsonObject.getString("IPCDEVICE_ID"))) {
|
||||
// float intValue = jsonObject.getFloatValue("CURRENT_VALUE");
|
||||
// int bits = Float.floatToIntBits(intValue);
|
||||
// dynamicRegHig.setValue((bits >> 16) & 0xFFFF);
|
||||
// dynamicReglow.setValue(bits & 0xFFFF);
|
||||
// }
|
||||
// if ("SBXH-GL-2-5".equals(jsonObject.getString("IPCDEVICE_ID"))) {
|
||||
// double intValue = jsonObject.getDouble("CURRENT_VALUE");
|
||||
// SBXH_GL_2_5.setValue((int) intValue);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// // SBXH-GL-1 高炉#炉顶工作压力
|
||||
// // 输入寄存器(IR) 04 30000-3FFFF 30001-39999 只读16位值
|
||||
// spi.addInputRegister(dynamicRegHig);
|
||||
// spi.addInputRegister(dynamicReglow);
|
||||
// spi.addInputRegister(SBXH_GL_2_5);
|
||||
// int inputRegisterCount = spi.getInputRegisterCount();
|
||||
// for (int i = inputRegisterCount; i < 1000; i++) {
|
||||
// spi.addInputRegister(new SimpleInputRegister(0));
|
||||
// }
|
||||
// return spi;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public ProcessImage getZlProcessImage() {
|
||||
// JSONArray objects = JSONObject.parseArray((String) redisUtil.get("ZL_LIST"));
|
||||
// SimpleProcessImage spi = new SimpleProcessImage();
|
||||
// initZlSimpleInputRegister(spi);
|
||||
// for (int i = 0; i < objects.size(); i++) {
|
||||
// JSONObject jsonObject = objects.getJSONObject(i);
|
||||
// float intValue = jsonObject.getFloatValue("CURRENT_VALUE");
|
||||
// if ("1".equals(jsonObject.getString("SIGNAL_TYPE"))) {
|
||||
// // 模拟量
|
||||
// SimpleInputRegister simpleInputRegister_hig = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID") + "hig");
|
||||
// SimpleInputRegister simpleInputRegister_low = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID") + "low");
|
||||
// if (simpleInputRegister_hig != null) {
|
||||
// int bits = Float.floatToIntBits(intValue);
|
||||
// simpleInputRegister_hig.setValue((bits >> 16) & 0xFFFF);
|
||||
// simpleInputRegister_low.setValue(bits & 0xFFFF);
|
||||
// }
|
||||
// } else {
|
||||
// SimpleInputRegister simpleInputRegister = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID"));
|
||||
// if (simpleInputRegister == null) continue;
|
||||
// // 开关量
|
||||
// simpleInputRegister.setValue((int) intValue);
|
||||
// }
|
||||
// }
|
||||
// // 这个别删除、省局要求 寄存器数量不能少于1000个哪怕没数据
|
||||
// int inputRegisterCount = spi.getInputRegisterCount();
|
||||
// for (int i = inputRegisterCount; i < 1000; i++) {
|
||||
// spi.addInputRegister(new SimpleInputRegister(0));
|
||||
// }
|
||||
// return spi;
|
||||
// }
|
||||
//
|
||||
// private void initZlSimpleInputRegister(SimpleProcessImage spi) {
|
||||
// SimpleInputRegister SBXH_ZL_1_1_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_1_1_low = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_1_2_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_1_2_low = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_2_1_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_2_1_low = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_2_2_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_2_2_low = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_4_1_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_4_1_low = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_4_2_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_4_2_low = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_5_1_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_5_1_low = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_5_2_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_ZL_5_2_low = new SimpleInputRegister(0);
|
||||
//
|
||||
//
|
||||
// // 水冷氧枪-氧气压力1#枪氧气压力
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-1-1" + "hig", SBXH_ZL_1_1_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-1-1" + "low", SBXH_ZL_1_1_low);
|
||||
// // 水冷氧枪-氧气压力2#枪氧气压力
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-1-2" + "hig", SBXH_ZL_1_2_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-1-2" + "low", SBXH_ZL_1_2_low);
|
||||
// // 水冷氧枪-冷却水进水流量 1#枪冷却水进水流量
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-2-1" + "hig", SBXH_ZL_2_1_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-2-1" + "low", SBXH_ZL_2_1_low);
|
||||
// // 水冷氧枪-冷却水进水流量 2#枪冷却水进水流量
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-2-2" + "hig", SBXH_ZL_2_2_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-2-2" + "low", SBXH_ZL_2_2_low);
|
||||
// // 水冷氧枪-冷却水出水温度1#枪冷却水出水温度
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-4-1" + "hig", SBXH_ZL_4_1_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-4-1" + "low", SBXH_ZL_4_1_low);
|
||||
// // 水冷氧枪-冷却水出水温度2#枪冷却水出水温度
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-4-2" + "hig", SBXH_ZL_4_2_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-4-2" + "low", SBXH_ZL_4_2_low);
|
||||
// // 水冷氧枪-冷却水进出水流量差 SBXH-ZL_5-1 1#枪冷却水进出水流量差
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL_5-1" + "hig", SBXH_ZL_5_1_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL_5-1" + "low", SBXH_ZL_5_1_low);
|
||||
// // 水冷氧枪-冷却水进出水流量差 SBXH-ZL_5-2 2#枪冷却水进出水流量差
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL_5-2" + "hig", SBXH_ZL_5_2_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL_5-2" + "low", SBXH_ZL_5_2_low);
|
||||
//
|
||||
//
|
||||
// // 氧气压力与氧枪自动升起联锁投入状态
|
||||
// SimpleInputRegister SBXH_ZL_5 = new SimpleInputRegister();
|
||||
// // 冷却水进水流量与氧枪自动升起联锁投入状态
|
||||
// SimpleInputRegister SBXH_ZL_6 = new SimpleInputRegister();
|
||||
// // 冷却水出水温度与氧枪自动升起联锁投入状态
|
||||
// SimpleInputRegister SBXH_ZL_7 = new SimpleInputRegister();
|
||||
// // 进出水流量差与氧枪自动升起联锁投入状态
|
||||
// SimpleInputRegister SBXH_ZL_8 = new SimpleInputRegister();
|
||||
// // 冷却水进出水流量差与炉体倾动联锁投入状态
|
||||
// SimpleInputRegister SBXH_ZL_9 = new SimpleInputRegister();
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-5", SBXH_ZL_5);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-6", SBXH_ZL_6);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-7", SBXH_ZL_7);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-8", SBXH_ZL_8);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-ZL-9", SBXH_ZL_9);
|
||||
// spi.addInputRegister(SBXH_ZL_1_1_hig);
|
||||
// spi.addInputRegister(SBXH_ZL_1_1_low);
|
||||
// spi.addInputRegister(SBXH_ZL_1_2_hig);
|
||||
// spi.addInputRegister(SBXH_ZL_1_2_low);
|
||||
// spi.addInputRegister(SBXH_ZL_2_1_hig);
|
||||
// spi.addInputRegister(SBXH_ZL_2_1_low);
|
||||
// spi.addInputRegister(SBXH_ZL_2_2_hig);
|
||||
// spi.addInputRegister(SBXH_ZL_2_2_low);
|
||||
// spi.addInputRegister(SBXH_ZL_5_1_hig);
|
||||
// spi.addInputRegister(SBXH_ZL_5_1_low);
|
||||
// spi.addInputRegister(SBXH_ZL_5_2_hig);
|
||||
// spi.addInputRegister(SBXH_ZL_5_2_low);
|
||||
// spi.addInputRegister(SBXH_ZL_4_1_hig);
|
||||
// spi.addInputRegister(SBXH_ZL_4_1_low);
|
||||
// spi.addInputRegister(SBXH_ZL_4_2_hig);
|
||||
// spi.addInputRegister(SBXH_ZL_4_2_low);
|
||||
//
|
||||
// spi.addInputRegister(SBXH_ZL_5);
|
||||
// spi.addInputRegister(SBXH_ZL_6);
|
||||
// spi.addInputRegister(SBXH_ZL_7);
|
||||
// spi.addInputRegister(SBXH_ZL_8);
|
||||
// spi.addInputRegister(SBXH_ZL_9);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public ProcessImage getLfProcessImage() {
|
||||
// JSONArray objects = JSONObject.parseArray((String) redisUtil.get("JL_LIST"));
|
||||
// SimpleProcessImage spi = new SimpleProcessImage();
|
||||
// initLfSimpleInputRegister(spi);
|
||||
// for (int i = 0; i < objects.size(); i++) {
|
||||
// JSONObject jsonObject = objects.getJSONObject(i);
|
||||
// float intValue = jsonObject.getFloatValue("CURRENT_VALUE");
|
||||
// if ("1".equals(jsonObject.getString("SIGNAL_TYPE"))) {
|
||||
// // 模拟量
|
||||
// SimpleInputRegister simpleInputRegister_hig = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID") + "hig");
|
||||
// SimpleInputRegister simpleInputRegister_low = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID") + "low");
|
||||
// if (simpleInputRegister_hig != null) {
|
||||
// int bits = Float.floatToIntBits(intValue);
|
||||
// simpleInputRegister_hig.setValue((bits >> 16) & 0xFFFF);
|
||||
// simpleInputRegister_low.setValue(bits & 0xFFFF);
|
||||
// }
|
||||
// } else {
|
||||
// SimpleInputRegister simpleInputRegister = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID"));
|
||||
//// SBXH-JL-3
|
||||
// SimpleInputRegister simpleInputRegister1 = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID") + "_1");
|
||||
// if (simpleInputRegister1 != null) {
|
||||
// simpleInputRegister1.setValue((int) intValue);
|
||||
// }
|
||||
// if (simpleInputRegister == null) continue;
|
||||
// // 开关量
|
||||
// simpleInputRegister.setValue((int) intValue);
|
||||
// }
|
||||
// }
|
||||
// int inputRegisterCount = spi.getInputRegisterCount();
|
||||
// for (int i = inputRegisterCount; i < 1000; i++) {
|
||||
// spi.addInputRegister(new SimpleInputRegister(0));
|
||||
// }
|
||||
//// 冷却水出水温度与电极自动断 电联锁投入状态
|
||||
//// 冷却水出水温度与电极升起联锁投入状态
|
||||
//// 进出水流量差与电极自动断电联锁投入状态
|
||||
//// 进出水流量差与电极升起联锁投入状态
|
||||
// return spi;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public ProcessImage getMqProcessImage() {
|
||||
// JSONArray objects = JSONObject.parseArray((String) redisUtil.get("MQ_LIST"));
|
||||
// SimpleProcessImage spi = new SimpleProcessImage();
|
||||
// initMqSimpleInputRegister(spi);
|
||||
// for (int i = 0; i < objects.size(); i++) {
|
||||
// JSONObject jsonObject = objects.getJSONObject(i);
|
||||
// float intValue = jsonObject.getFloatValue("CURRENT_VALUE");
|
||||
// SimpleInputRegister simpleInputRegister = SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.get(jsonObject.getString("IPCDEVICE_ID"));
|
||||
// if (simpleInputRegister == null) continue;
|
||||
// // 开关量
|
||||
// simpleInputRegister.setValue((int) intValue);
|
||||
// }
|
||||
// int inputRegisterCount = spi.getInputRegisterCount();
|
||||
// for (int i = inputRegisterCount; i < 1000; i++) {
|
||||
// spi.addInputRegister(new SimpleInputRegister(0));
|
||||
// }
|
||||
// return spi;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void initMqOrderList() {
|
||||
// ArrayList<HashMap<String, String>> allMqOrderList = otherMapper.getAllMqOrderList();
|
||||
// for (HashMap<String, String> hashMap : allMqOrderList) {
|
||||
// SyncGlScheduledTasks.MQ_ORDER_MAP.put(Integer.parseInt(String.valueOf(hashMap.get("ID"))), hashMap.get("IPCDEVICE_ID"));
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// private void initMqSimpleInputRegister(SimpleProcessImage spi) {
|
||||
// int size = SyncGlScheduledTasks.MQ_ORDER_MAP.size();
|
||||
// for (int i = 0; i < size; i++) {
|
||||
// SimpleInputRegister simpleInputRegister = new SimpleInputRegister();
|
||||
// spi.addInputRegister(simpleInputRegister);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put(SyncGlScheduledTasks.MQ_ORDER_MAP.get(i), simpleInputRegister);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private void initLfSimpleInputRegister(SimpleProcessImage spi) {
|
||||
// // 冷却水出水温度
|
||||
//// SBXH-JL-1-1 1#冷却水出水温度
|
||||
//// SBXH-JL-1-2 2#冷却水出水温度
|
||||
// //冷却水进出水流量差
|
||||
//// SBXH-JL-3-1 1#冷却水进出水流量差
|
||||
//// SBXH-JL-3-2 2#冷却水进出水流量差
|
||||
// SimpleInputRegister SBXH_JL_1_1_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_JL_1_1_low = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_JL_1_2_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_JL_1_2_low = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_JL_3_1_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_JL_3_1_low = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_JL_3_2_hig = new SimpleInputRegister(0);
|
||||
// SimpleInputRegister SBXH_JL_3_2_low = new SimpleInputRegister(0);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-1-1" + "hig", SBXH_JL_1_1_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-1-1" + "low", SBXH_JL_1_1_low);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-1-2" + "hig", SBXH_JL_1_2_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-1-2" + "low", SBXH_JL_1_2_low);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3-1" + "hig", SBXH_JL_3_1_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3-1" + "low", SBXH_JL_3_1_low);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3-2" + "hig", SBXH_JL_3_2_hig);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3-2" + "low", SBXH_JL_3_2_low);
|
||||
// // 冷却水出水温度与电极自动断电联锁投入状态 冷却水出水温度与电极升起联锁投入状态 1#炉盖回水温度联锁
|
||||
// SimpleInputRegister SBXH_JL_3 = new SimpleInputRegister();
|
||||
// SimpleInputRegister SBXH_JL_3_1 = new SimpleInputRegister();
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3", SBXH_JL_3);
|
||||
// // 冷却水出水温度与电极升起联锁投入状态 1#炉盖回水温度联锁
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-3_1", SBXH_JL_3);
|
||||
// // 冷却水出水温度与电极自动断电联锁投入状态 冷却水出水温度与电极升起联锁投入状态 2#炉盖回水温度联锁
|
||||
// SimpleInputRegister SBXH_JL_4 = new SimpleInputRegister();
|
||||
// SimpleInputRegister SBXH_JL_4_1 = new SimpleInputRegister();
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-4", SBXH_JL_4);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-4_1", SBXH_JL_4);
|
||||
// // 进出水流量差与电极自动断电联锁投入状态 进出水流量差与电极升起联锁投入状态 1#炉盖回水流量差联锁
|
||||
// SimpleInputRegister SBXH_JL_5 = new SimpleInputRegister();
|
||||
// SimpleInputRegister SBXH_JL_5_1 = new SimpleInputRegister();
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-5", SBXH_JL_5);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-5_1", SBXH_JL_5);
|
||||
// // 进出水流量差与电极自动断电联锁投入状态 进出水流量差与电极升起联锁投入状态 2#炉盖回水流量差联锁
|
||||
// SimpleInputRegister SBXH_JL_6 = new SimpleInputRegister();
|
||||
// SimpleInputRegister SBXH_JL_6_1 = new SimpleInputRegister();
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-6", SBXH_JL_6);
|
||||
// SyncGlScheduledTasks.SIMPLE_DIGITAL_INMAP_2.put("SBXH-JL-6_1", SBXH_JL_6);
|
||||
// spi.addInputRegister(SBXH_JL_1_1_hig);
|
||||
// spi.addInputRegister(SBXH_JL_1_2_low);
|
||||
// spi.addInputRegister(SBXH_JL_1_2_hig);
|
||||
// spi.addInputRegister(SBXH_JL_1_2_low);
|
||||
// spi.addInputRegister(SBXH_JL_3_1_hig);
|
||||
// spi.addInputRegister(SBXH_JL_3_1_low);
|
||||
// spi.addInputRegister(SBXH_JL_3_2_hig);
|
||||
// spi.addInputRegister(SBXH_JL_3_2_low);
|
||||
// spi.addInputRegister(SBXH_JL_3);
|
||||
// spi.addInputRegister(SBXH_JL_4);
|
||||
// spi.addInputRegister(SBXH_JL_5);
|
||||
// spi.addInputRegister(SBXH_JL_6);
|
||||
// spi.addInputRegister(SBXH_JL_3_1);
|
||||
// spi.addInputRegister(SBXH_JL_4_1);
|
||||
// spi.addInputRegister(SBXH_JL_5_1);
|
||||
// spi.addInputRegister(SBXH_JL_6_1);
|
||||
//
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,72 @@
|
|||
package com.netsdk.utils;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Base64;
|
||||
|
||||
public class AESUtil {
|
||||
// 算法常量(与需求一致:AES/CBC/PKCS5Padding)
|
||||
private static final String ALGORITHM = "AES";
|
||||
private static final String TRANSFORMATION = "AES/CBC/PKCS5Padding";
|
||||
|
||||
// 1. Base64编码的密钥和IV(需解码为原始字节)
|
||||
private static final String BASE64_KEY = "U6NtbmbAGGwqrcX+ZLEpKw=="; // 实时报表KEY
|
||||
private static final String BASE64_IV = "PUsyOGZfmX8Jt3J7l4M26A=="; // 实时报表IV
|
||||
|
||||
// 2. 静态初始化:解码Base64,获取原始密钥和IV字节(仅初始化一次,提升性能)
|
||||
private static final byte[] KEY;
|
||||
private static final byte[] IV;
|
||||
|
||||
static {
|
||||
try {
|
||||
// 解码Base64密钥(关键修复:获取AES要求的原始字节)
|
||||
KEY = Base64.getDecoder().decode(BASE64_KEY);
|
||||
// 解码Base64初始向量(CBC模式必须,且长度需与AES块大小一致:16字节)
|
||||
IV = Base64.getDecoder().decode(BASE64_IV);
|
||||
|
||||
// 验证密钥和IV长度(避免配置错误,可选但推荐)
|
||||
validateKeyAndIvLength();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("AES密钥/IV初始化失败:" + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* AES加密(CBC/PKCS5Padding,Base64编码输出)
|
||||
* @param plainText 待加密的明文(JSON字符串)
|
||||
* @return 加密后Base64编码的字符串
|
||||
* @throws Exception 加密异常
|
||||
*/
|
||||
public static String encrypt(String plainText) throws Exception {
|
||||
// 3. 构建AES密钥(使用解码后的原始字节)
|
||||
SecretKeySpec secretKey = new SecretKeySpec(KEY, ALGORITHM);
|
||||
// 4. 构建IV参数(CBC模式必须,使用解码后的原始字节)
|
||||
IvParameterSpec ivParameterSpec = new IvParameterSpec(IV);
|
||||
|
||||
// 5. 初始化加密器
|
||||
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
|
||||
cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec);
|
||||
|
||||
// 6. 加密:指定UTF-8编码,避免乱码
|
||||
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
|
||||
|
||||
// 7. 加密结果转Base64(便于传输,避免二进制数据乱码)
|
||||
return Base64.getEncoder().encodeToString(encryptedBytes);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证密钥和IV长度(AES要求:密钥16/24/32字节;IV必须16字节,与AES块大小一致)
|
||||
*/
|
||||
private static void validateKeyAndIvLength() {
|
||||
// 验证密钥长度(128位=16字节,192位=24字节,256位=32字节)
|
||||
if (KEY.length != 16 && KEY.length != 24 && KEY.length != 32) {
|
||||
throw new IllegalArgumentException("AES密钥长度非法:必须是16/24/32字节(对应128/192/256位),当前长度:" + KEY.length);
|
||||
}
|
||||
// 验证IV长度(CBC模式下,IV必须与AES块大小一致:16字节)
|
||||
if (IV.length != 16) {
|
||||
throw new IllegalArgumentException("AES IV长度非法:必须是16字节,当前长度:" + IV.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,198 @@
|
|||
package com.netsdk.utils;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.netsdk.entity.PageData;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 将Redis中存储的MES平台数据推送至省平台。
|
||||
*
|
||||
* @author
|
||||
*/
|
||||
@Component
|
||||
public class ProvincialPlatformDataPushScheduled {
|
||||
private static final String URL = "http://1.71.182.111:86/iot-cascade-receive/iot/cascade/http-report"; //省平台推送接口
|
||||
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@Resource
|
||||
private RestTemplate restTemplate; // 注入RestTemplate用于HTTP请求
|
||||
|
||||
@Scheduled(cron = "*/5 * * * * ?")
|
||||
public void scheduled() throws Exception {
|
||||
// 推送实时数据
|
||||
pushRealTimeData();
|
||||
|
||||
// 推送报警数据
|
||||
pushAlarmData();
|
||||
|
||||
}
|
||||
|
||||
void pushRealTimeData() {
|
||||
// 先填写基础报文 数据上报报文格式如下: appId、serviceId、dataId、data
|
||||
// 实时数据和报警数据的报文格式、appId、serviceId等信息不同。
|
||||
HashMap<String, Object> baseMap = new HashMap<>();
|
||||
// 定义一个本次消息公用dataId(UUID) 调用方生成,证明单次数据的身份,相同dataId的数据省平台只接收一次。
|
||||
String dataId = UuidUtil.get32UUID();
|
||||
baseMap.put("appId", "1ae355c6-4440-4579-823b-c0b9758171f6");
|
||||
baseMap.put("serviceId", "7292a7ee6b8f4c7093a17bbe12771903");
|
||||
baseMap.put("dataId", dataId);
|
||||
|
||||
// 接下来定义data,也就是需要向省平台推送的数据
|
||||
HashMap<String, Object> dataMap = new HashMap<String, Object>();
|
||||
dataMap.put("dataId", dataId);
|
||||
dataMap.put("areaCode", "14"); //企业所属省份的行政区划
|
||||
dataMap.put("enterpriseId", "GT1407810001"); //企业数据接入标识
|
||||
dataMap.put("gatewayId", "GT140781000101"); //网关编码:企业数据接入标识+01
|
||||
|
||||
//初始化报文当前时间戳 定义格式化模板:年月日时分秒(24小时制)
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
||||
// 获取当前时间
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
// 格式化时间
|
||||
String collectTime = now.format(formatter);
|
||||
dataMap.put("collectTime", collectTime); //时间戳,格式YYYYMMDDHHmmss
|
||||
dataMap.put("isConnectDataSource", true); //数据源连通性
|
||||
dataMap.put("reportType", "report"); //报文类型,report表示实时报文
|
||||
//定义datas指标数据集合
|
||||
List<Map<String, Object>> dataList = new ArrayList<>();
|
||||
//取出存储在Redis中的数据
|
||||
ArrayList<PageData> allDataList = new ArrayList<>();
|
||||
if (!Tools.isEmpty(redisUtil.get("MES_DATA_LIST"))) {
|
||||
allDataList.addAll(JSONArray.parseArray(redisUtil.get("MES_DATA_LIST").toString(), PageData.class));
|
||||
}
|
||||
if (!Tools.isEmpty(redisUtil.get("WMK_DATA_LIST"))) {
|
||||
allDataList.addAll(JSONArray.parseArray(redisUtil.get("WMK_DATA_LIST").toString(), PageData.class));
|
||||
}
|
||||
for (PageData dataPd : allDataList) {
|
||||
if (dataPd.containsKey("REPORT_ID") && !Tools.isEmpty(dataPd.getString("REPORT_ID"))) {
|
||||
HashMap<String, Object> data = new HashMap<>();
|
||||
data.put("quotaId", dataPd.get("REPORT_ID")); // 传感编码
|
||||
data.put("value", dataPd.get("CURRENT_VALUE")); // 指标当前采集值
|
||||
data.put("datas", true); // 质量戳
|
||||
dataList.add(data);
|
||||
}
|
||||
}
|
||||
dataMap.put("datas", dataList);
|
||||
|
||||
//使用AES加密dataMap
|
||||
String encrypt = null;
|
||||
try {
|
||||
encrypt = AESUtil.encrypt(JSON.toJSONString(dataMap));
|
||||
} catch (Exception e) {
|
||||
System.out.println("实时数据AES加密出现错误!");
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
baseMap.put("data", encrypt);
|
||||
|
||||
//发送HTTP请求到平台
|
||||
sendDataToPlatform(baseMap);
|
||||
}
|
||||
|
||||
void pushAlarmData() {
|
||||
// 先填写基础报文 数据上报报文格式如下: appId、serviceId、dataId、data
|
||||
// 实时数据和报警数据的报文格式、appId、serviceId等信息不同。
|
||||
HashMap<String, Object> baseMap = new HashMap<>();
|
||||
// 定义一个本次消息公用dataId(UUID) 调用方生成,证明单次数据的身份,相同dataId的数据省平台只接收一次。
|
||||
String dataId = UuidUtil.get32UUID();
|
||||
baseMap.put("appId", "1ae355c6-4440-4579-823b-c0b9758171f6");
|
||||
baseMap.put("serviceId", "2442c212da9549c68f76d008919d679d");
|
||||
baseMap.put("dataId", dataId);
|
||||
|
||||
// 接下来定义data,也就是需要向省平台推送的数据
|
||||
HashMap<String, Object> alarmMap = new HashMap<String, Object>();
|
||||
alarmMap.put("dataId", dataId);
|
||||
alarmMap.put("areaCode", "14"); //企业所属省份的行政区划
|
||||
alarmMap.put("enterpriseId", "GT1407810001"); //企业数据接入标识
|
||||
alarmMap.put("gatewayId", "GT140781000101"); //网关编码:企业数据接入标识+01
|
||||
|
||||
//初始化报文当前时间戳 定义格式化模板:年月日时分秒(24小时制)
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
||||
// 获取当前时间
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
// 格式化时间
|
||||
String collectTime = now.format(formatter);
|
||||
alarmMap.put("collectTime", collectTime); //时间戳,格式YYYYMMDDHHmmss
|
||||
alarmMap.put("isConnectDataSource", true); //数据源连通性
|
||||
alarmMap.put("reportType", "report"); //报文类型,report表示实时报文
|
||||
//定义datas指标数据集合
|
||||
List<Map<String, Object>> alarmList = new ArrayList<>();
|
||||
//--------------------------定义测试数据----------------------------------
|
||||
HashMap<String, Object> alarm = new HashMap<>();
|
||||
alarm.put("quotaId", "GT1407810001010000001"); // 传感器传感编码(IOT平台取)
|
||||
// alarm.put("value", value); // 指标当前采集值
|
||||
alarm.put("alarmType", "alarmhi:alarm"); // 报警类型:alarm hi:alarm 表示超上限报警;alarm hh:alarm 表示超上上限报警;alarm lo:alarm 表示超下限报警;alarm ll:alarm 表示超下下限报警;normal:alarm 表示消警;alarmsignal 表示变化报警,即开关量报警
|
||||
alarm.put("threshold", 99); // 当前报警阈值/消警阈值
|
||||
// 获取当前时间
|
||||
LocalDateTime alarmTime = LocalDateTime.now();
|
||||
// 格式化时间
|
||||
String alarmFormatTime = alarmTime.format(formatter);
|
||||
alarm.put("alarmTime", alarmFormatTime); // 报警时间
|
||||
alarmList.add(alarm);
|
||||
//--------------------------测试数据结束----------------------------------
|
||||
|
||||
//真实数据逻辑(注释部分)
|
||||
//取出存储在Redis中的数据
|
||||
//List<PageData> mesDataList = JSONArray.parseArray(redisUtil.get("MES_DATA_LIST").toString(), PageData.class);
|
||||
|
||||
alarmMap.put("alarms", alarmList);
|
||||
|
||||
//使用AES加密dataMap
|
||||
String encrypt = null;
|
||||
try {
|
||||
encrypt = AESUtil.encrypt(JSON.toJSONString(alarmMap));
|
||||
} catch (Exception e) {
|
||||
System.out.println("实时数据AES加密出现错误!");
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
baseMap.put("data", encrypt);
|
||||
|
||||
//发送HTTP请求到平台
|
||||
sendDataToPlatform(baseMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将数据发送到物联网平台
|
||||
* @param data 要发送的数据
|
||||
*/
|
||||
private void sendDataToPlatform(Map<String, Object> data) {
|
||||
try {
|
||||
//设置请求头
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
|
||||
//创建请求实体
|
||||
HttpEntity<String> requestEntity = new HttpEntity<>(JSON.toJSONString(data), headers);
|
||||
|
||||
//发送POST请求
|
||||
ResponseEntity<String> response = restTemplate.postForEntity(URL, requestEntity, String.class);
|
||||
|
||||
//处理响应
|
||||
if (response.getStatusCode().is2xxSuccessful()) {
|
||||
System.out.println("数据推送成功,响应内容:" + response.getBody());
|
||||
} else {
|
||||
System.err.println("数据推送失败,状态码:" + response.getStatusCodeValue() +
|
||||
",响应内容:" + response.getBody());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("数据推送发生异常:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -31,8 +31,8 @@ public class SyncGlScheduledTasks {
|
|||
private RedisUtil redisUtil;
|
||||
|
||||
// 每五秒执行一次
|
||||
@Scheduled(fixedDelay = 5000)
|
||||
@Async
|
||||
// @Scheduled(fixedDelay = 5000)
|
||||
// @Async
|
||||
public void taskWithFixedDelay() {
|
||||
JSONArray objects = JSONObject.parseArray((String) redisUtil.get("GL_LIST"));
|
||||
JSONArray zLobjects = JSONObject.parseArray((String) redisUtil.get("ZL_LIST"));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,192 @@
|
|||
package com.netsdk.utils;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
||||
/**
|
||||
* 说明:常用工具
|
||||
* 作者:luoxiaobao
|
||||
* 官网:www.qdkjchina.com
|
||||
*/
|
||||
public class Tools {
|
||||
|
||||
/**
|
||||
* 随机生成六位数验证码
|
||||
* @return
|
||||
*/
|
||||
public static int getRandomNum(){
|
||||
Random r = new Random();
|
||||
return r.nextInt(900000)+100000;//(Math.random()*(999999-100000)+100000)
|
||||
}
|
||||
|
||||
/**
|
||||
* 随机生成四位数验证码
|
||||
* @return
|
||||
*/
|
||||
public static int getRandomNum4(){
|
||||
Random r = new Random();
|
||||
return r.nextInt(9000)+1000;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测字符串是否不为空(null,"","null")
|
||||
* @param s
|
||||
* @return 不为空则返回true,否则返回false
|
||||
*/
|
||||
public static boolean notEmpty(String s){
|
||||
return s!=null && !"".equals(s) && !"null".equals(s)&& !"undefined".equals(s);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测字符串是否为空(null,"","null")
|
||||
* @param s
|
||||
* @return 为空则返回true,不否则返回false
|
||||
*/
|
||||
public static boolean isEmpty(String s){
|
||||
return s==null || s.isEmpty() || "null".equals(s) || "undefined".equals(s);
|
||||
}
|
||||
public static boolean isEmpty (Object obj) {
|
||||
return obj ==null || "".equals(obj);
|
||||
}
|
||||
/**
|
||||
* 字符串转换为字符串数组
|
||||
* @param str 字符串
|
||||
* @param splitRegex 分隔符
|
||||
* @return
|
||||
*/
|
||||
public static String[] str2StrArray(String str,String splitRegex){
|
||||
if(isEmpty(str)){
|
||||
return null;
|
||||
}
|
||||
return str.split(splitRegex);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用默认的分隔符(,)将字符串转换为字符串数组
|
||||
* @param str 字符串
|
||||
* @return
|
||||
*/
|
||||
public static String[] str2StrArray(String str){
|
||||
return str2StrArray(str,",\\s*");
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证邮箱
|
||||
* @param email
|
||||
* @return
|
||||
*/
|
||||
public static boolean checkEmail(String email){
|
||||
boolean flag = false;
|
||||
try{
|
||||
String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
|
||||
Pattern regex = Pattern.compile(check);
|
||||
Matcher matcher = regex.matcher(email);
|
||||
flag = matcher.matches();
|
||||
}catch(Exception e){
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证手机号码
|
||||
* @param mobiles
|
||||
* @return
|
||||
*/
|
||||
public static boolean checkMobileNumber(String mobileNumber){
|
||||
boolean flag = false;
|
||||
try{
|
||||
Pattern regex = Pattern.compile("^(((13[0-9])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8})|(0\\d{2}-\\d{8})|(0\\d{3}-\\d{7})$");
|
||||
Matcher matcher = regex.matcher(mobileNumber);
|
||||
flag = matcher.matches();
|
||||
}catch(Exception e){
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
转半角的函数(DBC case)<br/><br/>
|
||||
全角空格为12288,半角空格为32
|
||||
其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
|
||||
* @param input 任意字符串
|
||||
* @return 半角字符串
|
||||
*
|
||||
*/
|
||||
public static String ToDBC(String input) {
|
||||
char[] c = input.toCharArray();
|
||||
for (int i = 0; i < c.length; i++) {
|
||||
if (c[i] == 12288) {
|
||||
//全角空格为12288,半角空格为32
|
||||
c[i] = (char) 32;
|
||||
continue;
|
||||
}
|
||||
if (c[i] > 65280 && c[i] < 65375)
|
||||
//其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
|
||||
c[i] = (char) (c[i] - 65248);
|
||||
}
|
||||
return new String(c);
|
||||
}
|
||||
|
||||
public static String replaceBlank(String str) {
|
||||
String dest = "";
|
||||
if (str != null) {
|
||||
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
|
||||
Matcher m = p.matcher(str);
|
||||
dest = m.replaceAll("");
|
||||
}
|
||||
return dest;
|
||||
}
|
||||
public static String excelHandle (String string) {
|
||||
String aString = string.replaceAll(" ", "");
|
||||
aString = ToDBC(aString);
|
||||
aString = replaceBlank(aString);
|
||||
return aString;
|
||||
}
|
||||
public static String excelHandle (Object object) {
|
||||
String aString = object.toString().replaceAll(" ", "");
|
||||
aString = ToDBC(aString);
|
||||
aString = replaceBlank(aString);
|
||||
return aString;
|
||||
}
|
||||
private static final String INTEGER_REGEX = "^-?\\d+$";
|
||||
|
||||
public static boolean isInteger(String input) {
|
||||
Pattern pattern = Pattern.compile(INTEGER_REGEX);
|
||||
Matcher matcher = pattern.matcher(input);
|
||||
return matcher.matches();
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
|
||||
String aString = " afjaisjfasjfasij ";
|
||||
String bString = "";
|
||||
bString= excelHandle(aString);
|
||||
System.out.println("bString:"+bString+".");
|
||||
System.out.println("aString:"+aString+".");
|
||||
}
|
||||
|
||||
public static boolean contains(String[] array, String target) {
|
||||
for (int i = 0; i < array.length; i++) {
|
||||
if (array[i].equals(target)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static Integer convertInteger(Object o) {
|
||||
if (o == null) {
|
||||
return 0;
|
||||
}
|
||||
return Integer.parseInt(o.toString());
|
||||
}
|
||||
|
||||
public static String convertString(Object o) {
|
||||
if (o == null) {
|
||||
return null;
|
||||
}
|
||||
return o.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.netsdk.utils;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* 说明:生成UUID(32位不重复的字符串)
|
||||
|
||||
|
||||
*/
|
||||
public class UuidUtil {
|
||||
|
||||
public static String get32UUID() {
|
||||
String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(get32UUID());
|
||||
}
|
||||
}
|
||||
|
|
@ -5,13 +5,13 @@ spring:
|
|||
name: integrated_yjb_dataDocking
|
||||
datasource:
|
||||
driver-class-name: org.postgresql.Driver
|
||||
url: jdbc:postgresql://10.199.64.30:15431/postgres?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=UTC
|
||||
password: rT)?DjIGYM8k0h!
|
||||
url: jdbc:postgresql://172.16.70.228:15431/postgres?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=UTC
|
||||
password: Mysql@zcloud15431
|
||||
username: postgres
|
||||
redis:
|
||||
host: 10.199.64.30
|
||||
password: 5.5pYdZqHxpR#9%W.
|
||||
database: 1
|
||||
host: 172.16.70.226
|
||||
password: Zcloud@redis16379
|
||||
database: 10
|
||||
port: 16379
|
||||
modbus:
|
||||
port: 18888
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.netsdk.mapper.datasource.other.OtherMapper">
|
||||
|
||||
<select id="getAllMqOrderList" resultType="java.util.HashMap">
|
||||
select *
|
||||
from mq_docking
|
||||
where ISDELETE = 0
|
||||
</select>
|
||||
<!-- <select id="getAllMqOrderList" resultType="java.util.HashMap">-->
|
||||
<!-- select *-->
|
||||
<!-- from mq_docking-->
|
||||
<!-- where ISDELETE = 0-->
|
||||
<!-- </select>-->
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue