diff --git a/src/main/java/com/casic/controller/ThirdDataController.java b/src/main/java/com/casic/controller/ThirdDataController.java index bdaed51..30c191c 100644 --- a/src/main/java/com/casic/controller/ThirdDataController.java +++ b/src/main/java/com/casic/controller/ThirdDataController.java @@ -10,15 +10,18 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; @RestController -@RequestMapping("/push") @Slf4j public class ThirdDataController { @Autowired private ThirdDataService thirdDataService; + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); /** * 硫化氢订阅接口 @@ -26,11 +29,21 @@ * @param h2sDataMap * @return */ - @RequestMapping("/data") + @RequestMapping("/push/data") public Object h2sData(@RequestBody Map h2sDataMap) { System.out.println(JSON.toJSON(h2sDataMap)); return thirdDataService.h2sData(h2sDataMap); } + @RequestMapping("/config/confirm") + public Object configConfirm(@RequestBody Map configConfirmMap) { + System.out.println(JSON.toJSON(configConfirmMap)); + threadPoolExecutor.execute( + () -> { + thirdDataService.configConfirm(configConfirmMap); + } + ); + return "ok"; + } } diff --git a/src/main/java/com/casic/controller/ThirdDataController.java b/src/main/java/com/casic/controller/ThirdDataController.java index bdaed51..30c191c 100644 --- a/src/main/java/com/casic/controller/ThirdDataController.java +++ b/src/main/java/com/casic/controller/ThirdDataController.java @@ -10,15 +10,18 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; @RestController -@RequestMapping("/push") @Slf4j public class ThirdDataController { @Autowired private ThirdDataService thirdDataService; + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); /** * 硫化氢订阅接口 @@ -26,11 +29,21 @@ * @param h2sDataMap * @return */ - @RequestMapping("/data") + @RequestMapping("/push/data") public Object h2sData(@RequestBody Map h2sDataMap) { System.out.println(JSON.toJSON(h2sDataMap)); return thirdDataService.h2sData(h2sDataMap); } + @RequestMapping("/config/confirm") + public Object configConfirm(@RequestBody Map configConfirmMap) { + System.out.println(JSON.toJSON(configConfirmMap)); + threadPoolExecutor.execute( + () -> { + thirdDataService.configConfirm(configConfirmMap); + } + ); + return "ok"; + } } diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index 434f1e2..e316504 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -11,6 +11,9 @@ @Mapper public interface DataH2sMapper extends BaseMapper { + int configConfirm(@Param("devcode") String devcode); + + int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); diff --git a/src/main/java/com/casic/controller/ThirdDataController.java b/src/main/java/com/casic/controller/ThirdDataController.java index bdaed51..30c191c 100644 --- a/src/main/java/com/casic/controller/ThirdDataController.java +++ b/src/main/java/com/casic/controller/ThirdDataController.java @@ -10,15 +10,18 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; @RestController -@RequestMapping("/push") @Slf4j public class ThirdDataController { @Autowired private ThirdDataService thirdDataService; + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); /** * 硫化氢订阅接口 @@ -26,11 +29,21 @@ * @param h2sDataMap * @return */ - @RequestMapping("/data") + @RequestMapping("/push/data") public Object h2sData(@RequestBody Map h2sDataMap) { System.out.println(JSON.toJSON(h2sDataMap)); return thirdDataService.h2sData(h2sDataMap); } + @RequestMapping("/config/confirm") + public Object configConfirm(@RequestBody Map configConfirmMap) { + System.out.println(JSON.toJSON(configConfirmMap)); + threadPoolExecutor.execute( + () -> { + thirdDataService.configConfirm(configConfirmMap); + } + ); + return "ok"; + } } diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index 434f1e2..e316504 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -11,6 +11,9 @@ @Mapper public interface DataH2sMapper extends BaseMapper { + int configConfirm(@Param("devcode") String devcode); + + int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 74eec50..26b3fa8 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -8,7 +8,7 @@ String IP = "ip"; String PORT = "port"; String CTNET = "ctnet"; - String PERIOD = "period"; + String PERIOD = "threshold"; String CYCLE = "cycle"; /** * 三码上报 diff --git a/src/main/java/com/casic/controller/ThirdDataController.java b/src/main/java/com/casic/controller/ThirdDataController.java index bdaed51..30c191c 100644 --- a/src/main/java/com/casic/controller/ThirdDataController.java +++ b/src/main/java/com/casic/controller/ThirdDataController.java @@ -10,15 +10,18 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; @RestController -@RequestMapping("/push") @Slf4j public class ThirdDataController { @Autowired private ThirdDataService thirdDataService; + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); /** * 硫化氢订阅接口 @@ -26,11 +29,21 @@ * @param h2sDataMap * @return */ - @RequestMapping("/data") + @RequestMapping("/push/data") public Object h2sData(@RequestBody Map h2sDataMap) { System.out.println(JSON.toJSON(h2sDataMap)); return thirdDataService.h2sData(h2sDataMap); } + @RequestMapping("/config/confirm") + public Object configConfirm(@RequestBody Map configConfirmMap) { + System.out.println(JSON.toJSON(configConfirmMap)); + threadPoolExecutor.execute( + () -> { + thirdDataService.configConfirm(configConfirmMap); + } + ); + return "ok"; + } } diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index 434f1e2..e316504 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -11,6 +11,9 @@ @Mapper public interface DataH2sMapper extends BaseMapper { + int configConfirm(@Param("devcode") String devcode); + + int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 74eec50..26b3fa8 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -8,7 +8,7 @@ String IP = "ip"; String PORT = "port"; String CTNET = "ctnet"; - String PERIOD = "period"; + String PERIOD = "threshold"; String CYCLE = "cycle"; /** * 三码上报 diff --git a/src/main/java/com/casic/service/ThirdDataService.java b/src/main/java/com/casic/service/ThirdDataService.java index c056c1f..5124c5c 100644 --- a/src/main/java/com/casic/service/ThirdDataService.java +++ b/src/main/java/com/casic/service/ThirdDataService.java @@ -7,5 +7,6 @@ Object h2sData(Map h2sDataMap); + void configConfirm(Map configConfirmMap); } diff --git a/src/main/java/com/casic/controller/ThirdDataController.java b/src/main/java/com/casic/controller/ThirdDataController.java index bdaed51..30c191c 100644 --- a/src/main/java/com/casic/controller/ThirdDataController.java +++ b/src/main/java/com/casic/controller/ThirdDataController.java @@ -10,15 +10,18 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; @RestController -@RequestMapping("/push") @Slf4j public class ThirdDataController { @Autowired private ThirdDataService thirdDataService; + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); /** * 硫化氢订阅接口 @@ -26,11 +29,21 @@ * @param h2sDataMap * @return */ - @RequestMapping("/data") + @RequestMapping("/push/data") public Object h2sData(@RequestBody Map h2sDataMap) { System.out.println(JSON.toJSON(h2sDataMap)); return thirdDataService.h2sData(h2sDataMap); } + @RequestMapping("/config/confirm") + public Object configConfirm(@RequestBody Map configConfirmMap) { + System.out.println(JSON.toJSON(configConfirmMap)); + threadPoolExecutor.execute( + () -> { + thirdDataService.configConfirm(configConfirmMap); + } + ); + return "ok"; + } } diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index 434f1e2..e316504 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -11,6 +11,9 @@ @Mapper public interface DataH2sMapper extends BaseMapper { + int configConfirm(@Param("devcode") String devcode); + + int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 74eec50..26b3fa8 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -8,7 +8,7 @@ String IP = "ip"; String PORT = "port"; String CTNET = "ctnet"; - String PERIOD = "period"; + String PERIOD = "threshold"; String CYCLE = "cycle"; /** * 三码上报 diff --git a/src/main/java/com/casic/service/ThirdDataService.java b/src/main/java/com/casic/service/ThirdDataService.java index c056c1f..5124c5c 100644 --- a/src/main/java/com/casic/service/ThirdDataService.java +++ b/src/main/java/com/casic/service/ThirdDataService.java @@ -7,5 +7,6 @@ Object h2sData(Map h2sDataMap); + void configConfirm(Map configConfirmMap); } diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java index 9b7d0d0..22e3abf 100644 --- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java @@ -47,6 +47,12 @@ return defaultDeliveryConfig(null); } + @Override + public void configConfirm(Map configConfirmMap) { + if (configConfirmMap.containsKey(DEVCODE) && !StringUtils.isEmpty(configConfirmMap.get(DEVCODE))) { + this.baseMapper.configConfirm(configConfirmMap.get(DEVCODE)); + } + } private Map defaultDeliveryConfig(Map configDataMap) { Map map = new HashMap(); @@ -54,9 +60,16 @@ map.put("method", "setParams"); //判断是否有下发配置必须 map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201); + if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) { + configDataMap.put("cycle", String.valueOf((Integer) configDataMap.get("interval"))); + configDataMap.put("port", String.valueOf((Integer) configDataMap.get("port"))); + configDataMap.put("period", String.valueOf((Integer) configDataMap.get("period"))); + configDataMap.put("repeat", String.valueOf((Integer) configDataMap.get("repeat"))); + configDataMap.remove("interval"); + } map.put("params", configDataMap); //可省略 - map.put("timeout", "3000"); + map.put("timeout", 30000); return map; } diff --git a/src/main/java/com/casic/controller/ThirdDataController.java b/src/main/java/com/casic/controller/ThirdDataController.java index bdaed51..30c191c 100644 --- a/src/main/java/com/casic/controller/ThirdDataController.java +++ b/src/main/java/com/casic/controller/ThirdDataController.java @@ -10,15 +10,18 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; @RestController -@RequestMapping("/push") @Slf4j public class ThirdDataController { @Autowired private ThirdDataService thirdDataService; + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); /** * 硫化氢订阅接口 @@ -26,11 +29,21 @@ * @param h2sDataMap * @return */ - @RequestMapping("/data") + @RequestMapping("/push/data") public Object h2sData(@RequestBody Map h2sDataMap) { System.out.println(JSON.toJSON(h2sDataMap)); return thirdDataService.h2sData(h2sDataMap); } + @RequestMapping("/config/confirm") + public Object configConfirm(@RequestBody Map configConfirmMap) { + System.out.println(JSON.toJSON(configConfirmMap)); + threadPoolExecutor.execute( + () -> { + thirdDataService.configConfirm(configConfirmMap); + } + ); + return "ok"; + } } diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index 434f1e2..e316504 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -11,6 +11,9 @@ @Mapper public interface DataH2sMapper extends BaseMapper { + int configConfirm(@Param("devcode") String devcode); + + int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 74eec50..26b3fa8 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -8,7 +8,7 @@ String IP = "ip"; String PORT = "port"; String CTNET = "ctnet"; - String PERIOD = "period"; + String PERIOD = "threshold"; String CYCLE = "cycle"; /** * 三码上报 diff --git a/src/main/java/com/casic/service/ThirdDataService.java b/src/main/java/com/casic/service/ThirdDataService.java index c056c1f..5124c5c 100644 --- a/src/main/java/com/casic/service/ThirdDataService.java +++ b/src/main/java/com/casic/service/ThirdDataService.java @@ -7,5 +7,6 @@ Object h2sData(Map h2sDataMap); + void configConfirm(Map configConfirmMap); } diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java index 9b7d0d0..22e3abf 100644 --- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java @@ -47,6 +47,12 @@ return defaultDeliveryConfig(null); } + @Override + public void configConfirm(Map configConfirmMap) { + if (configConfirmMap.containsKey(DEVCODE) && !StringUtils.isEmpty(configConfirmMap.get(DEVCODE))) { + this.baseMapper.configConfirm(configConfirmMap.get(DEVCODE)); + } + } private Map defaultDeliveryConfig(Map configDataMap) { Map map = new HashMap(); @@ -54,9 +60,16 @@ map.put("method", "setParams"); //判断是否有下发配置必须 map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201); + if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) { + configDataMap.put("cycle", String.valueOf((Integer) configDataMap.get("interval"))); + configDataMap.put("port", String.valueOf((Integer) configDataMap.get("port"))); + configDataMap.put("period", String.valueOf((Integer) configDataMap.get("period"))); + configDataMap.put("repeat", String.valueOf((Integer) configDataMap.get("repeat"))); + configDataMap.remove("interval"); + } map.put("params", configDataMap); //可省略 - map.put("timeout", "3000"); + map.put("timeout", 30000); return map; } diff --git a/src/main/java/com/casic/util/RedisCommon.java b/src/main/java/com/casic/util/RedisCommon.java index 80562b9..24e7761 100644 --- a/src/main/java/com/casic/util/RedisCommon.java +++ b/src/main/java/com/casic/util/RedisCommon.java @@ -25,13 +25,17 @@ public Map getMsg(String key) { // 判断上次保存时间,如果到期(key失效),再保存新的 String timeStampKey = configPrefix + key; - Object dataJson = redisTemplate.opsForValue().get(timeStampKey); + Object dataJson = null; + synchronized (timeStampKey) { + dataJson = redisTemplate.opsForValue().get(timeStampKey); + redisTemplate.delete(timeStampKey); + } return JSON.parseObject((String) dataJson); } - public void send(CommConfigDTO commConfigDTO,String devCode) { - redisTemplate.opsForValue().set(configPrefix+ devCode, + public void send(CommConfigDTO commConfigDTO, String devCode) { + redisTemplate.opsForValue().set(configPrefix + devCode, JSON.toJSONString(commConfigDTO), Integer.valueOf(invalidTime), TimeUnit.SECONDS); diff --git a/src/main/java/com/casic/controller/ThirdDataController.java b/src/main/java/com/casic/controller/ThirdDataController.java index bdaed51..30c191c 100644 --- a/src/main/java/com/casic/controller/ThirdDataController.java +++ b/src/main/java/com/casic/controller/ThirdDataController.java @@ -10,15 +10,18 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; @RestController -@RequestMapping("/push") @Slf4j public class ThirdDataController { @Autowired private ThirdDataService thirdDataService; + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); /** * 硫化氢订阅接口 @@ -26,11 +29,21 @@ * @param h2sDataMap * @return */ - @RequestMapping("/data") + @RequestMapping("/push/data") public Object h2sData(@RequestBody Map h2sDataMap) { System.out.println(JSON.toJSON(h2sDataMap)); return thirdDataService.h2sData(h2sDataMap); } + @RequestMapping("/config/confirm") + public Object configConfirm(@RequestBody Map configConfirmMap) { + System.out.println(JSON.toJSON(configConfirmMap)); + threadPoolExecutor.execute( + () -> { + thirdDataService.configConfirm(configConfirmMap); + } + ); + return "ok"; + } } diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index 434f1e2..e316504 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -11,6 +11,9 @@ @Mapper public interface DataH2sMapper extends BaseMapper { + int configConfirm(@Param("devcode") String devcode); + + int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 74eec50..26b3fa8 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -8,7 +8,7 @@ String IP = "ip"; String PORT = "port"; String CTNET = "ctnet"; - String PERIOD = "period"; + String PERIOD = "threshold"; String CYCLE = "cycle"; /** * 三码上报 diff --git a/src/main/java/com/casic/service/ThirdDataService.java b/src/main/java/com/casic/service/ThirdDataService.java index c056c1f..5124c5c 100644 --- a/src/main/java/com/casic/service/ThirdDataService.java +++ b/src/main/java/com/casic/service/ThirdDataService.java @@ -7,5 +7,6 @@ Object h2sData(Map h2sDataMap); + void configConfirm(Map configConfirmMap); } diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java index 9b7d0d0..22e3abf 100644 --- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java @@ -47,6 +47,12 @@ return defaultDeliveryConfig(null); } + @Override + public void configConfirm(Map configConfirmMap) { + if (configConfirmMap.containsKey(DEVCODE) && !StringUtils.isEmpty(configConfirmMap.get(DEVCODE))) { + this.baseMapper.configConfirm(configConfirmMap.get(DEVCODE)); + } + } private Map defaultDeliveryConfig(Map configDataMap) { Map map = new HashMap(); @@ -54,9 +60,16 @@ map.put("method", "setParams"); //判断是否有下发配置必须 map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201); + if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) { + configDataMap.put("cycle", String.valueOf((Integer) configDataMap.get("interval"))); + configDataMap.put("port", String.valueOf((Integer) configDataMap.get("port"))); + configDataMap.put("period", String.valueOf((Integer) configDataMap.get("period"))); + configDataMap.put("repeat", String.valueOf((Integer) configDataMap.get("repeat"))); + configDataMap.remove("interval"); + } map.put("params", configDataMap); //可省略 - map.put("timeout", "3000"); + map.put("timeout", 30000); return map; } diff --git a/src/main/java/com/casic/util/RedisCommon.java b/src/main/java/com/casic/util/RedisCommon.java index 80562b9..24e7761 100644 --- a/src/main/java/com/casic/util/RedisCommon.java +++ b/src/main/java/com/casic/util/RedisCommon.java @@ -25,13 +25,17 @@ public Map getMsg(String key) { // 判断上次保存时间,如果到期(key失效),再保存新的 String timeStampKey = configPrefix + key; - Object dataJson = redisTemplate.opsForValue().get(timeStampKey); + Object dataJson = null; + synchronized (timeStampKey) { + dataJson = redisTemplate.opsForValue().get(timeStampKey); + redisTemplate.delete(timeStampKey); + } return JSON.parseObject((String) dataJson); } - public void send(CommConfigDTO commConfigDTO,String devCode) { - redisTemplate.opsForValue().set(configPrefix+ devCode, + public void send(CommConfigDTO commConfigDTO, String devCode) { + redisTemplate.opsForValue().set(configPrefix + devCode, JSON.toJSONString(commConfigDTO), Integer.valueOf(invalidTime), TimeUnit.SECONDS); diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml index d06a1af..aadc416 100644 --- a/src/main/resources/config/application.yml +++ b/src/main/resources/config/application.yml @@ -12,9 +12,9 @@ mybatis-plus: global-config: enable-sql-runner: true - configuration: +# configuration: # 配置结果集属性为空时 是否映射返回结果 - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 + # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 mapper-locations: classpath:mapper/*.xml mybatis: mapper-locations: classpath:mapper/*.xml diff --git a/src/main/java/com/casic/controller/ThirdDataController.java b/src/main/java/com/casic/controller/ThirdDataController.java index bdaed51..30c191c 100644 --- a/src/main/java/com/casic/controller/ThirdDataController.java +++ b/src/main/java/com/casic/controller/ThirdDataController.java @@ -10,15 +10,18 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; @RestController -@RequestMapping("/push") @Slf4j public class ThirdDataController { @Autowired private ThirdDataService thirdDataService; + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); /** * 硫化氢订阅接口 @@ -26,11 +29,21 @@ * @param h2sDataMap * @return */ - @RequestMapping("/data") + @RequestMapping("/push/data") public Object h2sData(@RequestBody Map h2sDataMap) { System.out.println(JSON.toJSON(h2sDataMap)); return thirdDataService.h2sData(h2sDataMap); } + @RequestMapping("/config/confirm") + public Object configConfirm(@RequestBody Map configConfirmMap) { + System.out.println(JSON.toJSON(configConfirmMap)); + threadPoolExecutor.execute( + () -> { + thirdDataService.configConfirm(configConfirmMap); + } + ); + return "ok"; + } } diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index 434f1e2..e316504 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -11,6 +11,9 @@ @Mapper public interface DataH2sMapper extends BaseMapper { + int configConfirm(@Param("devcode") String devcode); + + int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 74eec50..26b3fa8 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -8,7 +8,7 @@ String IP = "ip"; String PORT = "port"; String CTNET = "ctnet"; - String PERIOD = "period"; + String PERIOD = "threshold"; String CYCLE = "cycle"; /** * 三码上报 diff --git a/src/main/java/com/casic/service/ThirdDataService.java b/src/main/java/com/casic/service/ThirdDataService.java index c056c1f..5124c5c 100644 --- a/src/main/java/com/casic/service/ThirdDataService.java +++ b/src/main/java/com/casic/service/ThirdDataService.java @@ -7,5 +7,6 @@ Object h2sData(Map h2sDataMap); + void configConfirm(Map configConfirmMap); } diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java index 9b7d0d0..22e3abf 100644 --- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java @@ -47,6 +47,12 @@ return defaultDeliveryConfig(null); } + @Override + public void configConfirm(Map configConfirmMap) { + if (configConfirmMap.containsKey(DEVCODE) && !StringUtils.isEmpty(configConfirmMap.get(DEVCODE))) { + this.baseMapper.configConfirm(configConfirmMap.get(DEVCODE)); + } + } private Map defaultDeliveryConfig(Map configDataMap) { Map map = new HashMap(); @@ -54,9 +60,16 @@ map.put("method", "setParams"); //判断是否有下发配置必须 map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201); + if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) { + configDataMap.put("cycle", String.valueOf((Integer) configDataMap.get("interval"))); + configDataMap.put("port", String.valueOf((Integer) configDataMap.get("port"))); + configDataMap.put("period", String.valueOf((Integer) configDataMap.get("period"))); + configDataMap.put("repeat", String.valueOf((Integer) configDataMap.get("repeat"))); + configDataMap.remove("interval"); + } map.put("params", configDataMap); //可省略 - map.put("timeout", "3000"); + map.put("timeout", 30000); return map; } diff --git a/src/main/java/com/casic/util/RedisCommon.java b/src/main/java/com/casic/util/RedisCommon.java index 80562b9..24e7761 100644 --- a/src/main/java/com/casic/util/RedisCommon.java +++ b/src/main/java/com/casic/util/RedisCommon.java @@ -25,13 +25,17 @@ public Map getMsg(String key) { // 判断上次保存时间,如果到期(key失效),再保存新的 String timeStampKey = configPrefix + key; - Object dataJson = redisTemplate.opsForValue().get(timeStampKey); + Object dataJson = null; + synchronized (timeStampKey) { + dataJson = redisTemplate.opsForValue().get(timeStampKey); + redisTemplate.delete(timeStampKey); + } return JSON.parseObject((String) dataJson); } - public void send(CommConfigDTO commConfigDTO,String devCode) { - redisTemplate.opsForValue().set(configPrefix+ devCode, + public void send(CommConfigDTO commConfigDTO, String devCode) { + redisTemplate.opsForValue().set(configPrefix + devCode, JSON.toJSONString(commConfigDTO), Integer.valueOf(invalidTime), TimeUnit.SECONDS); diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml index d06a1af..aadc416 100644 --- a/src/main/resources/config/application.yml +++ b/src/main/resources/config/application.yml @@ -12,9 +12,9 @@ mybatis-plus: global-config: enable-sql-runner: true - configuration: +# configuration: # 配置结果集属性为空时 是否映射返回结果 - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 + # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 mapper-locations: classpath:mapper/*.xml mybatis: mapper-locations: classpath:mapper/*.xml diff --git a/src/main/resources/mapper/DataH2sMapper.xml b/src/main/resources/mapper/DataH2sMapper.xml index 176609d..5029f6b 100644 --- a/src/main/resources/mapper/DataH2sMapper.xml +++ b/src/main/resources/mapper/DataH2sMapper.xml @@ -2,15 +2,27 @@ - + + update bus_config + set STATUS=1 + where device_id=( + SELECT id + FROM bus_device + WHERE devcode=#{devcode} AND VALID=1 + LIMIT 1 + ) + + + + update bus_device set ONLINE_STATE=1 - where ONLINE_STATE=0 AND VALID=1 + where ONLINE_STATE=0 AND devcode=#{devcode} AND VALID=1 @@ -20,7 +32,8 @@ FROM bus_device bd JOIN bus_device_well bdw ON bdw.device_id=bd.id JOIN bus_well_info bwi ON bwi.id=bdw.well_id - WHERE bd.DEVCODE=#{devcode} + WHERE bd.DEVCODE=#{devcode} + LIMIT 1