diff --git a/src/main/java/com/netsdk/StartModBusTcpServer.java b/src/main/java/com/netsdk/StartModBusTcpServer.java index e5f752f..bded16b 100644 --- a/src/main/java/com/netsdk/StartModBusTcpServer.java +++ b/src/main/java/com/netsdk/StartModBusTcpServer.java @@ -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(); +// +// } } diff --git a/src/main/java/com/netsdk/config/RestTemplateConfig.java b/src/main/java/com/netsdk/config/RestTemplateConfig.java new file mode 100644 index 0000000..fa60c7e --- /dev/null +++ b/src/main/java/com/netsdk/config/RestTemplateConfig.java @@ -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; + } +} diff --git a/src/main/java/com/netsdk/mapper/datasource/other/OtherMapper.java b/src/main/java/com/netsdk/mapper/datasource/other/OtherMapper.java index 07f177a..51fbb40 100644 --- a/src/main/java/com/netsdk/mapper/datasource/other/OtherMapper.java +++ b/src/main/java/com/netsdk/mapper/datasource/other/OtherMapper.java @@ -10,5 +10,5 @@ import java.util.HashMap; */ @Mapper public interface OtherMapper { - ArrayList> getAllMqOrderList(); +// ArrayList> getAllMqOrderList(); } diff --git a/src/main/java/com/netsdk/service/DeviceService.java b/src/main/java/com/netsdk/service/DeviceService.java index edcaeca..ebc7a70 100644 --- a/src/main/java/com/netsdk/service/DeviceService.java +++ b/src/main/java/com/netsdk/service/DeviceService.java @@ -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(); } diff --git a/src/main/java/com/netsdk/service/impl/DeviceServiceImpl.java b/src/main/java/com/netsdk/service/impl/DeviceServiceImpl.java index ec837a2..ce398df 100644 --- a/src/main/java/com/netsdk/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/netsdk/service/impl/DeviceServiceImpl.java @@ -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> allMqOrderList = otherMapper.getAllMqOrderList(); - for (HashMap 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> allMqOrderList = otherMapper.getAllMqOrderList(); +// for (HashMap 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); +// +// } } diff --git a/src/main/java/com/netsdk/utils/AESUtil.java b/src/main/java/com/netsdk/utils/AESUtil.java new file mode 100644 index 0000000..7dc12db --- /dev/null +++ b/src/main/java/com/netsdk/utils/AESUtil.java @@ -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); + } + } +} diff --git a/src/main/java/com/netsdk/utils/ProvincialPlatformDataPushScheduled.java b/src/main/java/com/netsdk/utils/ProvincialPlatformDataPushScheduled.java new file mode 100644 index 0000000..91956ed --- /dev/null +++ b/src/main/java/com/netsdk/utils/ProvincialPlatformDataPushScheduled.java @@ -0,0 +1,111 @@ +package com.netsdk.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.netsdk.entity.PageData; +import org.springframework.http.*; +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.*; + +/** + * 将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 { + // 先填写基础报文 数据上报报文格式如下: appId、serviceId、dataId、data + // 实时数据和报警数据的报文格式、appId、serviceId等信息不同。 + HashMap 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,也就是需要向省平台推送的数据 + Map dataMap = new HashMap(); + 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", false); //数据源连通性 + dataMap.put("reportType", "report"); //报文类型,report表示实时报文 + + //定义datas指标数据集合 + List> dataList = new ArrayList<>(); + //--------------------------定义测试数据---------------------------------- + HashMap data = new HashMap<>(); + data.put("quotaId", 11); // 指标编码 + data.put("value", 66); // 指标当前采集值 + data.put("datas", false); // 质量戳 + dataList.add(data); + //--------------------------测试数据结束---------------------------------- + + //真实数据逻辑(注释部分) + //取出存储在Redis中的数据 + //List mesDataList = JSONArray.parseArray(redisUtil.get("MES_DATA_LIST").toString(), PageData.class); + + dataMap.put("datas", dataList); + + //使用AES加密dataMap + String encrypt = AESUtil.encrypt(JSON.toJSONString(dataMap)); + baseMap.put("data", encrypt); + + //发送HTTP请求到平台 + sendDataToPlatform(baseMap); + } + + /** + * 将数据发送到物联网平台 + * @param data 要发送的数据 + */ + private void sendDataToPlatform(Map data) { + try { + //设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + //创建请求实体 + HttpEntity requestEntity = new HttpEntity<>(JSON.toJSONString(data), headers); + + //发送POST请求 + ResponseEntity 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(); + } + } +} diff --git a/src/main/java/com/netsdk/utils/SyncGlScheduledTasks.java b/src/main/java/com/netsdk/utils/SyncGlScheduledTasks.java index 7b7a440..408740e 100644 --- a/src/main/java/com/netsdk/utils/SyncGlScheduledTasks.java +++ b/src/main/java/com/netsdk/utils/SyncGlScheduledTasks.java @@ -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")); diff --git a/src/main/java/com/netsdk/utils/UuidUtil.java b/src/main/java/com/netsdk/utils/UuidUtil.java new file mode 100644 index 0000000..19f96d6 --- /dev/null +++ b/src/main/java/com/netsdk/utils/UuidUtil.java @@ -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()); + } +} diff --git a/src/main/resources/mybatis/datasource/other/MkPeopleAccessMapper.xml b/src/main/resources/mybatis/datasource/other/MkPeopleAccessMapper.xml index 6132a57..d154af2 100644 --- a/src/main/resources/mybatis/datasource/other/MkPeopleAccessMapper.xml +++ b/src/main/resources/mybatis/datasource/other/MkPeopleAccessMapper.xml @@ -2,9 +2,9 @@ - + + + + +