diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE + - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE + - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE + - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE + - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE + - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE + - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE + - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE + - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE + - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE + - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4807974..d47010a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 5907 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.183:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4807974..d47010a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 5907 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.183:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4038629..21ecda8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,6 +24,9 @@ casic: device: gas-dector: - type: 10 + type: 30 minutes: 60 - enable-local: false \ No newline at end of file + enable-local: false + data-day: 1 # 时间多少的为离线 + online: + cron: 0 0/1 * * * ? # 多长时间判断离线 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4807974..d47010a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 5907 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.183:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4038629..21ecda8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,6 +24,9 @@ casic: device: gas-dector: - type: 10 + type: 30 minutes: 60 - enable-local: false \ No newline at end of file + enable-local: false + data-day: 1 # 时间多少的为离线 + online: + cron: 0 0/1 * * * ? # 多长时间判断离线 \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c0c7ac9 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + ${LOG_PATH}/missiles_error.log + + + + + + ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + error + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/missiles_total.log + + + + + + ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4807974..d47010a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 5907 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.183:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4038629..21ecda8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,6 +24,9 @@ casic: device: gas-dector: - type: 10 + type: 30 minutes: 60 - enable-local: false \ No newline at end of file + enable-local: false + data-day: 1 # 时间多少的为离线 + online: + cron: 0 0/1 * * * ? # 多长时间判断离线 \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c0c7ac9 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + ${LOG_PATH}/missiles_error.log + + + + + + ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + error + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/missiles_total.log + + + + + + ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceDataMapper.xml b/src/main/resources/mapper/DeviceDataMapper.xml new file mode 100644 index 0000000..4e15de9 --- /dev/null +++ b/src/main/resources/mapper/DeviceDataMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4807974..d47010a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 5907 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.183:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4038629..21ecda8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,6 +24,9 @@ casic: device: gas-dector: - type: 10 + type: 30 minutes: 60 - enable-local: false \ No newline at end of file + enable-local: false + data-day: 1 # 时间多少的为离线 + online: + cron: 0 0/1 * * * ? # 多长时间判断离线 \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c0c7ac9 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + ${LOG_PATH}/missiles_error.log + + + + + + ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + error + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/missiles_total.log + + + + + + ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceDataMapper.xml b/src/main/resources/mapper/DeviceDataMapper.xml new file mode 100644 index 0000000..4e15de9 --- /dev/null +++ b/src/main/resources/mapper/DeviceDataMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml new file mode 100644 index 0000000..d04d912 --- /dev/null +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + UPDATE BUS_DEVICE + SET ONLINE_STATE=0 + WHERE VALID=1 + AND DEVCODE IN + + #{item} + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4807974..d47010a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 5907 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.183:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4038629..21ecda8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,6 +24,9 @@ casic: device: gas-dector: - type: 10 + type: 30 minutes: 60 - enable-local: false \ No newline at end of file + enable-local: false + data-day: 1 # 时间多少的为离线 + online: + cron: 0 0/1 * * * ? # 多长时间判断离线 \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c0c7ac9 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + ${LOG_PATH}/missiles_error.log + + + + + + ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + error + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/missiles_total.log + + + + + + ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceDataMapper.xml b/src/main/resources/mapper/DeviceDataMapper.xml new file mode 100644 index 0000000..4e15de9 --- /dev/null +++ b/src/main/resources/mapper/DeviceDataMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml new file mode 100644 index 0000000..d04d912 --- /dev/null +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + UPDATE BUS_DEVICE + SET ONLINE_STATE=0 + WHERE VALID=1 + AND DEVCODE IN + + #{item} + + + + + \ No newline at end of file diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml index 5c64ca8..8a5929a 100644 --- a/target/classes/application-dev.yml +++ b/target/classes/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 11520 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.181:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4807974..d47010a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 5907 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.183:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4038629..21ecda8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,6 +24,9 @@ casic: device: gas-dector: - type: 10 + type: 30 minutes: 60 - enable-local: false \ No newline at end of file + enable-local: false + data-day: 1 # 时间多少的为离线 + online: + cron: 0 0/1 * * * ? # 多长时间判断离线 \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c0c7ac9 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + ${LOG_PATH}/missiles_error.log + + + + + + ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + error + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/missiles_total.log + + + + + + ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceDataMapper.xml b/src/main/resources/mapper/DeviceDataMapper.xml new file mode 100644 index 0000000..4e15de9 --- /dev/null +++ b/src/main/resources/mapper/DeviceDataMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml new file mode 100644 index 0000000..d04d912 --- /dev/null +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + UPDATE BUS_DEVICE + SET ONLINE_STATE=0 + WHERE VALID=1 + AND DEVCODE IN + + #{item} + + + + + \ No newline at end of file diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml index 5c64ca8..8a5929a 100644 --- a/target/classes/application-dev.yml +++ b/target/classes/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 11520 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.181:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class index 0813269..fd9b8ca 100644 --- a/target/classes/com/casic/controller/DeviceController.class +++ b/target/classes/com/casic/controller/DeviceController.class Binary files differ diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4807974..d47010a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 5907 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.183:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4038629..21ecda8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,6 +24,9 @@ casic: device: gas-dector: - type: 10 + type: 30 minutes: 60 - enable-local: false \ No newline at end of file + enable-local: false + data-day: 1 # 时间多少的为离线 + online: + cron: 0 0/1 * * * ? # 多长时间判断离线 \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c0c7ac9 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + ${LOG_PATH}/missiles_error.log + + + + + + ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + error + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/missiles_total.log + + + + + + ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceDataMapper.xml b/src/main/resources/mapper/DeviceDataMapper.xml new file mode 100644 index 0000000..4e15de9 --- /dev/null +++ b/src/main/resources/mapper/DeviceDataMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml new file mode 100644 index 0000000..d04d912 --- /dev/null +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + UPDATE BUS_DEVICE + SET ONLINE_STATE=0 + WHERE VALID=1 + AND DEVCODE IN + + #{item} + + + + + \ No newline at end of file diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml index 5c64ca8..8a5929a 100644 --- a/target/classes/application-dev.yml +++ b/target/classes/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 11520 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.181:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class index 0813269..fd9b8ca 100644 --- a/target/classes/com/casic/controller/DeviceController.class +++ b/target/classes/com/casic/controller/DeviceController.class Binary files differ diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class deleted file mode 100644 index b9404b1..0000000 --- a/target/classes/com/casic/dao/DataGasMapper.class +++ /dev/null Binary files differ diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4807974..d47010a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 5907 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.183:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4038629..21ecda8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,6 +24,9 @@ casic: device: gas-dector: - type: 10 + type: 30 minutes: 60 - enable-local: false \ No newline at end of file + enable-local: false + data-day: 1 # 时间多少的为离线 + online: + cron: 0 0/1 * * * ? # 多长时间判断离线 \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c0c7ac9 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + ${LOG_PATH}/missiles_error.log + + + + + + ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + error + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/missiles_total.log + + + + + + ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceDataMapper.xml b/src/main/resources/mapper/DeviceDataMapper.xml new file mode 100644 index 0000000..4e15de9 --- /dev/null +++ b/src/main/resources/mapper/DeviceDataMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml new file mode 100644 index 0000000..d04d912 --- /dev/null +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + UPDATE BUS_DEVICE + SET ONLINE_STATE=0 + WHERE VALID=1 + AND DEVCODE IN + + #{item} + + + + + \ No newline at end of file diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml index 5c64ca8..8a5929a 100644 --- a/target/classes/application-dev.yml +++ b/target/classes/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 11520 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.181:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class index 0813269..fd9b8ca 100644 --- a/target/classes/com/casic/controller/DeviceController.class +++ b/target/classes/com/casic/controller/DeviceController.class Binary files differ diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class deleted file mode 100644 index b9404b1..0000000 --- a/target/classes/com/casic/dao/DataGasMapper.class +++ /dev/null Binary files differ diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class deleted file mode 100644 index a2d1f17..0000000 --- a/target/classes/com/casic/dao/DeviceMapper.class +++ /dev/null Binary files differ diff --git a/pom.xml b/pom.xml index 4db133b..8427901 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ UTF-8 UTF-8 1.8 + + 8.0.16 + 3.0.2 + 3.2.3 + 3.3.0 + 2.3.1 + 3.0.1 + 2.3 + 3.1 @@ -48,11 +57,11 @@ 2.1.3.RELEASE
+ - mysql - mysql-connector-java - 8.0.16 - compile + com.oracle.database.jdbc + ojdbc6 + 11.2.0.4 @@ -81,6 +90,14 @@ 1.2.73 + + + + commons-httpclient + commons-httpclient + 3.1 + + xyz.downgoon snowflake @@ -94,7 +111,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.1.3.RELEASE + 2.4.5 true @@ -122,154 +139,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java index 6152cb6..3b9793b 100644 --- a/src/main/java/com/casic/controller/DeviceController.java +++ b/src/main/java/com/casic/controller/DeviceController.java @@ -1,8 +1,6 @@ package com.casic.controller; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.casic.model.ReceiveDataParam; import com.casic.model.ResponseData; import com.casic.service.DeviceService; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,6 @@ @RequestMapping("/casic") public class DeviceController { - private final DeviceService deviceService; public DeviceController(DeviceService deviceService) { @@ -30,11 +27,9 @@ return deviceService.testMysql(); } - @PostMapping("/data/gas") + @PostMapping("/household/gas") public ResponseData saveDataGas(@RequestBody Map receiveData) { - log.error("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); + log.info("----------------------第三方燃气数据上报为{}",JSONObject.toJSONString(receiveData)); return deviceService.saveDataGas(receiveData); } - - } diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java deleted file mode 100644 index e5e9c8d..0000000 --- a/src/main/java/com/casic/dao/AlarmJobMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmJob; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface AlarmJobMapper extends BaseMapper { - - @Select("SELECT MAX(jobcode) " + - "FROM alarm_job " + - "WHERE JOBCODE like '${jobcode}%'") - String getJobCodeMaxSerial(@Param("jobcode") String jobcode); - -} diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java index fde1818..b7fbd34 100644 --- a/src/main/java/com/casic/dao/AlarmRecordsMapper.java +++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java @@ -1,36 +1,24 @@ package com.casic.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.AlarmRecords; +import com.casic.entity.AlarmRecord; +import com.casic.entity.Device; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; + +import java.util.Map; @Mapper -public interface AlarmRecordsMapper extends BaseMapper { +public interface AlarmRecordsMapper extends BaseMapper { + @Select("SELECT DBID " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Long getDevcode(@Param("devcode") String devcode); - @Select("SELECT JOB_ID AS \"jobId\"\n " + - "FROM alarm_records\n " + - "WHERE DEVCODE = #{devcode}\n " + - "AND ALARM_CONTENT = #{MsgContent}\n " + - "AND STATUS='1'\n " + - "AND JOB_ID>0 ") - String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='0'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND ALARM_CONTENT = #{MsgContent}\n" + - " AND STATUS='1'") - Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent); - - - @Update(" UPDATE alarm_records\n" + - " SET STATUS='3'\n" + - " WHERE DEVCODE = #{devcode}\n" + - " AND STATUS='1'") - Integer clearAlarm(@Param("devcode") String devcode); - + @Select("SELECT DBID as id, DEVCODE as devCode, DEVNAME as devName, FACTORY as factory, SIMID as simid " + + "FROM ALARM_DEVICE " + + "WHERE ACTIVE=1 AND DEVCODE=#{devcode} ") + Device getDevice(@Param("devcode") String devcode); } diff --git a/src/main/java/com/casic/dao/ButaneDataMapper.java b/src/main/java/com/casic/dao/ButaneDataMapper.java new file mode 100644 index 0000000..632c7d2 --- /dev/null +++ b/src/main/java/com/casic/dao/ButaneDataMapper.java @@ -0,0 +1,12 @@ +package com.casic.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.entity.ButaneData; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface ButaneDataMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java deleted file mode 100644 index 8a064f2..0000000 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.DataGasDector; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface DataGasMapper extends BaseMapper { - - @Select("SELECT level,high_value " + - "FROM alarm_level " + - "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") Long deviceType); - - @Select("SELECT devcode " + - "FROM data_gas_dector " + - "WHERE devcode=#{devcode} " + - "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+ - "ORDER BY logtime DESC " + - "LIMIT 1") - String getLastData(@Param("minutes") String minutes, - @Param("devcode") String devcode); - - @Select("SELECT alarm_content " + - "FROM base_alarm_content_type " + - "WHERE device_type=#{deviceType}") - String getGasMsgContent(@Param("deviceType")Long deviceType); - - -} diff --git a/src/main/java/com/casic/dao/DeviceDataMapper.java b/src/main/java/com/casic/dao/DeviceDataMapper.java new file mode 100644 index 0000000..e9456c1 --- /dev/null +++ b/src/main/java/com/casic/dao/DeviceDataMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DeviceDataMapper { + + List> getDevcodeByType(@Param("devciceType") Integer devciceType); + + List getRecentData(@Param("dataDay") Integer dataDay); + + int updateOnlineByDevs(@Param("dataSortList") List dataSortDevcodeList); + +} diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java deleted file mode 100644 index 73b574e..0000000 --- a/src/main/java/com/casic/dao/DeviceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.casic.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.entity.Device; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Map; - -@Mapper -public interface DeviceMapper extends BaseMapper { - - Map getWellCode(@Param("devcode") String devcode); - -} diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java deleted file mode 100644 index 5131821..0000000 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.casic.dao.impl; - -import com.alibaba.druid.util.StringUtils; -import com.casic.dao.AlarmJobMapper; -import com.casic.entity.AlarmJob; -import org.springframework.stereotype.Component; -import xyz.downgoon.snowflake.Snowflake; - -import javax.annotation.Resource; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class AlarmJobDao { - - private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); - - private static Snowflake snowflake = new Snowflake(0, 2); -// private static final Sn - - @Resource - private AlarmJobMapper alarmJobMapper; - - public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) { - AlarmJob alarmJob = new AlarmJob(); - alarmJob.setId(snowflake.nextId()); - alarmJob.setDevcode(devCode); - alarmJob.setWellCode(wellCode); - alarmJob.setJobStatus("0"); - alarmJob.setCreateTime(new Date()); - alarmJob.setJobcode(this.produceJobCode(devTypeName)); - alarmJob.setJobType(jobType); - alarmJobMapper.insert(alarmJob); - return alarmJob; - } - - /** - * 前缀+日期+4位流水号 - * - * @param devTypeName - * @return - */ - private String produceJobCode(String devTypeName) { - String pre = devTypeName; - String dataStr = sdf6.format(new Date()); - String fix = this.getJobCodeMaxSerial(pre + dataStr); - return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; - } - - - private String getJobCodeMaxSerial(String jobcode) { - String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode); - String fix = ""; - if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) { - fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4); - } - return fix; - } -} diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java deleted file mode 100644 index 8a0f764..0000000 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 报警工单表 - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_job") -public class AlarmJob extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 工单编号 - */ - @TableField("JOBCODE") - private String jobcode; - /** - * 工单类型 - */ - @TableField("JOG_TYPE") - private String jobType; - /** - * 井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 工单创建时间 - */ - @TableField("CREATE_TIME") - private Date createTime; - /** - * 工单状态(0待处理,1待确认,2处理中,3完成) - */ - @TableField("JOB_STATUS") - private String jobStatus; - /** - * 接单人员 - */ - @TableField("GET_JOB_PERSON") - private Long getJobPerson; - /** - * 接单时间 - */ - @TableField("GET_JOB_TIME") - private Date getJobTime; - /** - * 应接单时间 - */ - @TableField("SHOULD_GET_TIME") - private Date shouldGetTime; - /** - * 第一现场情况 - */ - @TableField("FIRST_STATE") - private String firstState; - /** - * 第一现场照片 - */ - @TableField("FIRST_STATE_PHOTOS") - private String firstStatePhotos; - /** - * 确认人员 - */ - @TableField("CONFIRM_JOB_PERSON") - private Long confirmJobPerson; - /** - * 确认时间 - */ - @TableField("CONFRIM_JOB_TIME") - private Date confrimJobTime; - /** - * 处理人员 - */ - @TableField("HANDLE_JOB_Person") - private Long handleJobPerson; - /** - * 处理时间 - */ - @TableField("HANDLE_JOB_TIME") - private Date handleJobTime; - /** - * 维护情况记录 - */ - @TableField("HANDLE_MESSAGE") - private String handleMessage; - /** - * 维护图片 - */ - @TableField("HANDLE_PHOTOS") - private String handlePhotos; - /** - * 工单流转记录 - */ - @TableField("FLOW") - private String flow; - - @TableField("JOB_BELONG_TO") - private Long jobBelongTo; - - @TableField("JOB_FLAG_DELAY") - private String jobFlagDelay; - - @TableField("JOB_FLAG_1") - private String jobFlag1; - - @TableField(exist = false) - private String alarmValue; - - @TableField(exist = false) - private String alarmContentName; - - @TableField(exist = false) - private Integer recordId; - - @Override - public String toString() { - return "AlarmJob{" + - "id=" + id + - ", jobcode=" + jobcode + - ", jogType=" + jobType + - ", wellCode=" + wellCode + - ", devcode=" + devcode + - ", createTime=" + createTime + - ", jobStatus=" + jobStatus + - ", getJobPerson=" + getJobPerson + - ", getJobTime=" + getJobTime + - ", firstState=" + firstState + - ", firstStatePhotos=" + firstStatePhotos + - ", confirmJobPerson=" + confirmJobPerson + - ", confrimJobTime=" + confrimJobTime + - ", handleJobPerson=" + handleJobPerson + - ", handleJobTime=" + handleJobTime + - ", handleMessage=" + handleMessage + - ", handlePhotos=" + handlePhotos + - ", flow=" + flow + - ", recordId=" + recordId + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/AlarmRecord.java b/src/main/java/com/casic/entity/AlarmRecord.java new file mode 100644 index 0000000..137d805 --- /dev/null +++ b/src/main/java/com/casic/entity/AlarmRecord.java @@ -0,0 +1,106 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * + *

+ * + * @author casic123 + * @since 2019-05-17 + */ +@Data +@TableName("ALARM_ALARM_RECORD") +public class AlarmRecord extends Model { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value = "DBID") + private Long dbid; + /** + * 设备编号 + */ + @TableField("DEVICE_CODE") + private String deviceCode; + /** + * 设备类型名称 + */ + @TableField("DEVICE_TYPE_NAME") + private String deviceTypeName; + /** + * 是否推送,默认0 + */ + @TableField("ISSEND") + private String issend; + /** + * 默认default + */ + @TableField("ITEMNAME") + private String itemname; + /** + * 没有数值 + */ + @TableField("ITEMVALUE") + private String itemvalue; + /** + * 1 + */ + @TableField("MESSAGE") + private String message; + /** + * 0 + */ + @TableField("MESSAGE_STATUS") + private String messageStatus; + + + /** + * 0 + */ + @TableField("RECORDCODE") + private String recordcode; + /** + * 告警日期 + */ + @TableField("RECORDDATE") + private Date recorddate; + /** + * 工单编号 + */ + @TableField("DEVICE_ID") + private Long deviceId; + + /** + * 删除标志,默认为1 + */ + private Integer active; + + @Override + public String toString() { + return "AlarmRecord{" + + "dbid=" + dbid + + ", deviceCode='" + deviceCode + '\'' + + ", deviceTypeName='" + deviceTypeName + '\'' + + ", issend='" + issend + '\'' + + ", itemname='" + itemname + '\'' + + ", itemvalue='" + itemvalue + '\'' + + ", message='" + message + '\'' + + ", messageStatus='" + messageStatus + '\'' + + ", recordcode='" + recordcode + '\'' + + ", recorddate=" + recorddate + + ", deviceId=" + deviceId + + ", active=" + active + + '}'; + } +} diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java deleted file mode 100644 index 88b0b26..0000000 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.casic.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.util.Date; - -/** - *

- * - *

- * - * @author casic123 - * @since 2019-05-17 - */ -@Data -@TableName("alarm_records") -public class AlarmRecords extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id") - private Long id; - /** - * 设备ID - */ - @TableField("DEVICE_ID") - private Long deviceId; - /** - * 设备编号 - */ - @TableField("DEVCODE") - private String devcode; - /** - * 闸井编号 - */ - @TableField("WELL_CODE") - private String wellCode; - /** - * 告警类型 - */ - @TableField("ALARM_TYPE") - private String alarmType; - /** - * 告警内容 - */ - @TableField("ALARM_CONTENT") - private String alarmContent; - /** - * 告警数值 - */ - @TableField("ALARM_VALUE") - private String alarmValue; - /** - * 告警等级 - */ - @TableField("ALARM_LEVEL") - private Integer alarmLevel; - /** - * 告警详情 - */ - @TableField("ALARM_MSG") - private String alarmMessage; - /** - * 告警时间 - */ - @TableField("ALARM_TIME") - private Date alarmTime; - /** - * 告警状态 - */ - @TableField("STATUS") - private String status; - /** - * 工单编号 - */ - @TableField("JOB_ID") - private Long jobId; - - @TableField(exist = false) - private Integer jobStatus; - - @Override - public String toString() { - return "AlarmRecords{" + - "id=" + id + - ", deviceId=" + deviceId + - ", devcode=" + devcode + - ", wellCode=" + wellCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmLevel=" + alarmLevel + - ", alarmMessage=" + alarmMessage + - ", alarmTime=" + alarmTime + - ", status=" + status + - ", jobId=" + jobId + - ", jobStatus=" + jobStatus + - "}"; - } -} diff --git a/src/main/java/com/casic/entity/ButaneData.java b/src/main/java/com/casic/entity/ButaneData.java new file mode 100644 index 0000000..2e051be --- /dev/null +++ b/src/main/java/com/casic/entity/ButaneData.java @@ -0,0 +1,28 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("CASIC_BUTANE_INFO") +@Builder +public class ButaneData extends Model { + + @TableId(value = "DBID") + private Long dbid; + + private String devcode; + + private String status; + + private String descn; + + private Date logtime; + +} diff --git a/src/main/java/com/casic/entity/Device.java b/src/main/java/com/casic/entity/Device.java new file mode 100644 index 0000000..0360e41 --- /dev/null +++ b/src/main/java/com/casic/entity/Device.java @@ -0,0 +1,27 @@ +package com.casic.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("ALARM_DEVICE") +public class Device implements Serializable { + /** + * 设备基本信息表 + */ + private static final long serialVersionUID = -2023118078562324658L; + @TableId(value = "DBID") + private Long id; + @TableId(value = "DEVCODE") + private String devCode; + @TableId(value = "DEVNAME") + private String devName; + @TableId(value = "FACTORY") + private String factory; + @TableId(value = "SIMID") + private String simid; // SIM卡号 + +} diff --git a/src/main/java/com/casic/model/HostData.java b/src/main/java/com/casic/model/HostData.java new file mode 100644 index 0000000..40cefa7 --- /dev/null +++ b/src/main/java/com/casic/model/HostData.java @@ -0,0 +1,16 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class HostData { + private String model; + private String dev_id; + private String chip_id; + private String mfd_day; + private String sw_ver; + private String hw_ver; + private String duration; + private String d_ch_cnt; + private String a_ch_cnt; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReceiveDataParam.java b/src/main/java/com/casic/model/ReceiveDataParam.java new file mode 100644 index 0000000..3a17d24 --- /dev/null +++ b/src/main/java/com/casic/model/ReceiveDataParam.java @@ -0,0 +1,20 @@ +package com.casic.model; + +import lombok.Data; + +import java.util.HashMap; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReceiveDataParam { + private String deviceType; + private String iotId; + private String requestId; + private Object checkFailedData; + private String productKey; + private String deviceName; + private HashMap items; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/ReportUpdataParam.java b/src/main/java/com/casic/model/ReportUpdataParam.java new file mode 100644 index 0000000..20c2ca9 --- /dev/null +++ b/src/main/java/com/casic/model/ReportUpdataParam.java @@ -0,0 +1,23 @@ +package com.casic.model; + +import lombok.Data; + +/** + * @author cz + * @data 2022-6-20 + */ +@Data +public class ReportUpdataParam { + private String msg_type; + private String event_change; + private String error_val; + private String ch_cnt; + private String erro_cnt; + private String alarm_low_cnt; + private String alarm_high_cnt; + private String offline_cnt; + private String rtd_val; + private String adc_val; + private String status_val; + private String time; +} \ No newline at end of file diff --git a/src/main/java/com/casic/model/WirelessData.java b/src/main/java/com/casic/model/WirelessData.java new file mode 100644 index 0000000..b062c13 --- /dev/null +++ b/src/main/java/com/casic/model/WirelessData.java @@ -0,0 +1,19 @@ +package com.casic.model; + +import lombok.Data; + +@Data +public class WirelessData { + private String model; + private String IMEI; + private String ICCID; + private String sw_ver; + private String hw_ver; + private String ch_cnt; + private String heartbeat_inv; + private String up_pcnt; + private String up_pcnt_inv; + private String csq; +} + + diff --git a/src/main/java/com/casic/schedule/TaskConfigurer.java b/src/main/java/com/casic/schedule/TaskConfigurer.java new file mode 100644 index 0000000..77c5d5a --- /dev/null +++ b/src/main/java/com/casic/schedule/TaskConfigurer.java @@ -0,0 +1,47 @@ +package com.casic.schedule; + +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.config.TriggerTask; +import org.springframework.scheduling.support.CronTrigger; + +/** + * @author cz + */ +@Configuration +@EnableScheduling +@Slf4j +@RequiredArgsConstructor +public class TaskConfigurer implements SchedulingConfigurer { + + @Value("${casic.device.online.cron}") + private String onlineStateCron; + + private final DeviceDataService deviceDataService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), + triggerContext -> { + return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); + }); + taskRegistrar.addTriggerTask(onlineStateTask); + } + + private Runnable nextDayDevice() { + return new Runnable() { + @Override + public void run() { + log.info("定时查询在线离线运行了..."); + deviceDataService.checkAndUpdateDeviceOnline(); + } + }; + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/service/AlarmRecordFly.java b/src/main/java/com/casic/service/AlarmRecordFly.java new file mode 100644 index 0000000..47c7969 --- /dev/null +++ b/src/main/java/com/casic/service/AlarmRecordFly.java @@ -0,0 +1,39 @@ +package com.casic.service; + +import com.casic.entity.AlarmRecord; + +public class AlarmRecordFly { + + private static AlarmRecord alarmRecord; + + static { + alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("0"); + alarmRecord.setActive(1); + } + + public static AlarmRecord getAlarmRecord() { + return alarmRecord; + } + + public static AlarmRecord getPrototype(){ + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setIssend("0"); + alarmRecord.setDeviceTypeName("可燃气体探测器"); + alarmRecord.setItemname("default"); + alarmRecord.setMessage("-1"); + alarmRecord.setMessageStatus("0"); + alarmRecord.setRecordcode("1"); + alarmRecord.setActive(1); + return alarmRecord; + } + + + + +} diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java new file mode 100644 index 0000000..f972981 --- /dev/null +++ b/src/main/java/com/casic/service/DeviceDataService.java @@ -0,0 +1,7 @@ +package com.casic.service; + +public interface DeviceDataService { + + void checkAndUpdateDeviceOnline(); + +} diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java new file mode 100644 index 0000000..f41a44d --- /dev/null +++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java @@ -0,0 +1,68 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.dao.AlarmRecordsMapper; +import com.casic.dao.DeviceDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.service.AlarmRecordFly; +import com.casic.service.DeviceDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author cz + */ +@Service +@RequiredArgsConstructor +public class DeviceDataServiceImpl extends ServiceImpl implements DeviceDataService { + + private final DeviceDataMapper deviceDataMapper; + + @Value("${casic.device.data-day}") + private Integer dataDay; + + @Value("${casic.device.gas-dector.type}") + private Integer devciceType; + + + @Override + public void checkAndUpdateDeviceOnline() { + //查询硫化氢设备 + List> devcodeList = deviceDataMapper.getDevcodeByType(devciceType); + //统一查询所有设备的3天内数据的设备编号,然后设备编号转成map,进行 + List dataList = deviceDataMapper.getRecentData(dataDay); + List> dataSortDevcodeList = devcodeList; + if (dataList != null) { + Map devOnlineMap = new HashMap<>(); + for (String devcodeData : dataList) { + devOnlineMap.put(devcodeData, ""); + } + dataSortDevcodeList = dataSortDevcodeList.stream().filter( + e -> !devOnlineMap.containsKey((String) e.get("devcode"))).collect(Collectors.toList()); + } + //批量产生离线报警 + if (CollectionUtils.isNotEmpty(dataSortDevcodeList)) { + List alarmRecords = new ArrayList<>(); + for (Map dataDevcodeMap : dataSortDevcodeList) { + alarmRecords.add(createAlarmRecord(((BigDecimal)dataDevcodeMap.get("id")).longValue(), (String) dataDevcodeMap.get("devcode"))); + } + this.saveBatch(alarmRecords); + } + } + + private AlarmRecord createAlarmRecord(Long id, String devcode) { + AlarmRecord alarmRecord = AlarmRecordFly.getPrototype(); + alarmRecord.setRecorddate(new Date()); + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(id); + return alarmRecord; + } + +} diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java index 4591d50..176b389 100644 --- a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java @@ -1,53 +1,41 @@ package com.casic.service.impl; -import com.alibaba.druid.util.StringUtils; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.dao.AlarmRecordsMapper; -import com.casic.dao.DataGasMapper; -import com.casic.dao.DeviceMapper; -import com.casic.dao.impl.AlarmJobDao; -import com.casic.entity.AlarmJob; -import com.casic.entity.AlarmRecords; -import com.casic.entity.DataGasDector; +import com.casic.dao.ButaneDataMapper; +import com.casic.entity.AlarmRecord; +import com.casic.entity.ButaneData; import com.casic.entity.Device; import com.casic.model.ResponseData; +import com.casic.service.AlarmRecordFly; import com.casic.service.DeviceService; +import com.casic.util.SendUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import xyz.downgoon.snowflake.Snowflake; -import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; @Slf4j @Service +@RequiredArgsConstructor public class DeviceServiceImpl implements DeviceService { - - @Value("${casic.device.gas-dector.enable-local}") - private Boolean enableLocal; - @Value("${casic.device.gas-dector.type}") - private Long deviceType; - @Resource - private DataGasMapper dataGasMapper; - @Resource - private AlarmRecordsMapper alarmRecordsMapper; - @Resource - private DeviceMapper deviceMapper; - @Autowired - private AlarmJobDao alarmJobDao; + private final ButaneDataMapper butaneDataMapper; + private final AlarmRecordsMapper alarmRecordsMapper; private static Snowflake snowflake = new Snowflake(0, 2); + @Autowired + private SendUtil sendUtil; @Override public ResponseData testMysql() { + ResponseData responseData = new ResponseData(); responseData.setMessage("保存成功"); responseData.setCode(1); @@ -62,18 +50,16 @@ public ResponseData saveDataGas(Map receiveData) { ResponseData responseData = new ResponseData(); try { - Map payloadData; + Map payloadData = receiveData; if (receiveData.containsKey("payload")) { payloadData = (Map) receiveData.get("payload"); - }else{ - payloadData=receiveData; } - this.flagSelectProcessor("eventType", payloadData, () -> gasStatusUpdate(payloadData)) - .flagSelectProcessor("gas_sample_value", payloadData, () -> dealNormalData(receiveData)); + this.flagSelectProcessor("gas_sensor_state", payloadData, () -> gasStatusUpdate(receiveData)) + .flagSelectProcessor("heartbeat_time", payloadData, () -> dealNormalData(receiveData)); responseData.setCode(200); responseData.setMessage("保存成功"); } catch (Exception dex) { - log.error("主题:广东台燃气设备存储异常,异常信息:{}", dex.getMessage()); + log.error("主题:燃气设备存储异常,异常信息:{}", dex.getMessage()); responseData.setCode(500); responseData.setMessage("保存异常"); } @@ -95,99 +81,110 @@ * @return */ private Boolean gasStatusUpdate(Map receiveData) { - Long lonTimetemp = Long.valueOf(receiveData.get("timestamp").toString()); - String onlindeStatus = receiveData.get("eventType").toString(); - String devcode = receiveData.get("imei").toString(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("devcode", devcode); - queryWrapper.eq("valid", 1); - Device device = new Device(); - if (!StringUtils.isEmpty(onlindeStatus)) { - device.setOnlineState(onlindeStatus); - Date logTime = new Date(); - logTime.setTime(lonTimetemp); - device.setLogtime(logTime); - deviceMapper.update(device, queryWrapper); - return true; + AlarmRecord alarmRecord = AlarmRecordFly.getAlarmRecord(); + Map payloadData = (Map) receiveData.get("payload"); + //判断事件类型 0正常 1低报 2高报 + String alarmSituation = payloadData.get("gas_sensor_state").toString(); + String devcode = receiveData.get("IMEI").toString(); + clearOnlineData(devcode); + //构建数据 + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .build(); + populateTime(receiveData, butaneData, alarmRecord); + switch (alarmSituation) { + case "0": +// butaneData.setDescn("状态正常"); +// butaneData.setStatus("0"); + break; + default: + //第一条上来,消除报警 + clearAlarmData(devcode); + //产生新的报警,消除报警 + butaneData.setDescn("可燃气体探测器报警"); + butaneData.setStatus("1"); + synchronized (alarmRecord) { + alarmRecord.setDbid(null); + alarmRecord.setDeviceCode(devcode); + alarmRecord.setDeviceId(alarmRecordsMapper.getDevcode(devcode)); + alarmRecordsMapper.insert(alarmRecord); + } + butaneDataMapper.insert(butaneData); + + try { + //推送短信至第三方 + Device device = alarmRecordsMapper.getDevice(devcode); + if (null == device) { + log.error("设备不存在,编号:" + devcode); + return false; + } + JSONObject eventObj = new JSONObject(); + eventObj.put("type", "燃气报警"); + sendUtil.sendEventBySms(device, eventObj); + } catch (Exception exception) { + exception.printStackTrace(); + } } - return false; + return true; } public Boolean dealNormalData(Map receiveData) { String devcode = receiveData.get("IMEI").toString(); - if (!StringUtils.isEmpty(devcode)) { - Map deviceMap = deviceMapper.getWellCode(devcode); - //保存数据,无论是否有设备在库内 - DataGasDector dataGasDector = this.saveNormalData(receiveData, deviceMap); - if (ObjectUtils.isEmpty(deviceMap)) { - log.info("没有该设备编号录入" + devcode); - if (enableLocal) { - return true; - } - } - //自动消除报警 - this.alarmRecordsMapper.clearAlarm(devcode); - this.dataTaskJudge(deviceMap, dataGasDector); - return true; + //第一条上来,清除离线 + clearOnlineData(devcode); + ButaneData butaneData = ButaneData.builder() + .devcode(devcode) + .dbid(snowflake.nextId()) + .descn("状态正常") + .status("0") + .build(); + if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { + butaneData.setLogtime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + } else { + butaneData.setLogtime(new Date()); } + butaneDataMapper.insert(butaneData); return false; } - private DataGasDector saveNormalData(Map receiveData, Map deviceMap) { - DataGasDector dataGasDector = new DataGasDector(); - dataGasDector.setId(snowflake.nextId()); - dataGasDector.setDevcode(receiveData.get("IMEI").toString()); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? deviceMap.get("wellCode").toString() : ""); - dataGasDector.setLogtime(new Date()); + private void populateTime(Map receiveData, ButaneData butaneData, AlarmRecord alarmRecord) { if (!ObjectUtils.isEmpty(receiveData) && receiveData.containsKey("timestamp")) { - dataGasDector.setUptime(new Date(Long.valueOf(receiveData.get("timestamp").toString()))); + Date logtime = new Date(Long.valueOf(receiveData.get("timestamp").toString())); + butaneData.setLogtime(logtime); + alarmRecord.setRecorddate(logtime); } else { - dataGasDector.setUptime(new Date()); + alarmRecord.setRecorddate(new Date()); + butaneData.setLogtime(new Date()); } - Map gascontent = (Map)receiveData.get("payload"); - if (!ObjectUtils.isEmpty(gascontent)) { - if (gascontent.containsKey("gas_sample_value")) { - dataGasDector.setStrength(gascontent.get("gas_sample_value").toString()); - } - } - dataGasMapper.insert(dataGasDector); - return dataGasDector; } - /** - * 报警存库 - */ - private void dataTaskJudge(Map deviceMap, DataGasDector dataGasDector) { - List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); - String wellCode = dataGasDector.getWellCode(); - Long deviceId = !ObjectUtils.isEmpty(deviceMap) && deviceMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(deviceMap.get("deviceId"))) : -1; - final String gasMsgContent = dataGasMapper.getGasMsgContent(deviceType); - for (Map alarmLevelMap : alarmLevelList) { - if (Float.valueOf(dataGasDector.getStrength()) > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { - AlarmRecords alarmRecord = new AlarmRecords(); - alarmRecord.setId(snowflake.nextId()); - alarmRecord.setDeviceId(deviceId); - alarmRecord.setDevcode(dataGasDector.getDevcode()); - alarmRecord.setWellCode(wellCode); - alarmRecord.setAlarmType("1"); // 业务报警 - alarmRecord.setAlarmContent(gasMsgContent); - alarmRecord.setAlarmValue(dataGasDector.getStrength()); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setStatus("1"); - alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString())); - alarmRecord.setAlarmMessage(gasMsgContent); - String jobId = alarmRecordsMapper.isOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - // 超出报警阈值 生成一条报警消息 - if (!StringUtils.isEmpty(jobId)) { - alarmRecordsMapper.updateOldAlarmRecord(dataGasDector.getDevcode(), gasMsgContent); - alarmRecord.setJobId(Long.valueOf(jobId)); - } else { - AlarmJob alarmJob = alarmJobDao.saveData(dataGasDector.getStrength(), wellCode, "RQZD", "1"); - alarmRecord.setJobId(alarmJob.getId()); - } - alarmRecordsMapper.insert(alarmRecord); - break; - } + private void clearAlarmData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); } } + + private void clearOnlineData(String devcode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("DEVICE_CODE", devcode); + queryWrapper.eq("ACTIVE", 1); + queryWrapper.eq("MESSAGE_STATUS", "0"); + queryWrapper.eq("RECORDCODE", "1"); + try { + AlarmRecord alarmRecord = new AlarmRecord(); + alarmRecord.setActive(0); + alarmRecordsMapper.update(alarmRecord, queryWrapper); + } catch (Exception e) { + log.error("清除报警失败,设备编号为{},异常信息{}", devcode, e); + } + } + } diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java deleted file mode 100644 index 2a4d305..0000000 --- a/src/main/java/com/casic/util/ConestUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.casic.util; - -public class ConestUtil { - - -} diff --git a/src/main/java/com/casic/util/DateUtils.java b/src/main/java/com/casic/util/DateUtils.java new file mode 100644 index 0000000..db2ed9c --- /dev/null +++ b/src/main/java/com/casic/util/DateUtils.java @@ -0,0 +1,63 @@ +package com.casic.util; + +import java.text.SimpleDateFormat; + +/** + * Created by Administrator on 2015/2/25. + */ +public class DateUtils { + public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd"); + public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddHHmmss"); + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss"); + public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 = strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + dataString = str1 + str2; + return dataString; + } + + public static String DateFormatDate(String dataString) { + + String strymd = dataString.substring(0, 8); + return strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8); + } + + public static String DateFormatTime(String dataString) { + + String strhms = dataString.substring(8); + return strhms.substring(0, 2) + ":" + strhms.substring(2, 4) + ":" + strhms.substring(4, 6); + } + + /** + * 比较两个时间 时分秒 大小 + * + * @param s1 + * @param s2 + * @return + */ + public static boolean compTime(String s1, String s2) { + try { + if (s1.indexOf(":") < 0 || s1.indexOf(":") < 0) { + System.out.println("格式不正确"); + } else { + String[] array1 = s1.split(":"); + int total1 = Integer.valueOf(array1[0]) * 3600 + Integer.valueOf(array1[1]) * 60; + String[] array2 = s2.split(":"); + int total2 = Integer.valueOf(array2[0]) * 3600 + Integer.valueOf(array2[1]) * 60; + return total1 - total2 > 0 ? true : false; + } + } catch (NumberFormatException e) { + // TODO Auto-generated catch block + return false; + } + return false; + + } +} diff --git a/src/main/java/com/casic/util/HttpClientUtils.java b/src/main/java/com/casic/util/HttpClientUtils.java new file mode 100644 index 0000000..91a631e --- /dev/null +++ b/src/main/java/com/casic/util/HttpClientUtils.java @@ -0,0 +1,40 @@ +package com.casic.util; + + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + + + public static String post(String url, String body, JSONObject header) { + HttpClient client = new HttpClient(); + client.setTimeout(30000); + PostMethod method = new PostMethod(url); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); + method.addRequestHeader("X-APP-KEY", header.getString("X-APP-KEY")); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/casic/util/SendUtil.java b/src/main/java/com/casic/util/SendUtil.java new file mode 100644 index 0000000..2d73db1 --- /dev/null +++ b/src/main/java/com/casic/util/SendUtil.java @@ -0,0 +1,67 @@ +package com.casic.util; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.entity.Device; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class SendUtil { + @Value("${casic.synchronizeSms.enabled}") + private String enabled; + @Value("${casic.smsSenderURL}") + private String smsSenderUrl; + @Value("${casic.X-APP-KEY-SMS}") + private String smsAppKey; + + public void sendEventBySms(Device device, JSONObject eventObj) { + if ("true".equals(enabled)) { +// String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); +// String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2d3a8e35-0533-42a0-97a2-63f82a3216f9"); + String sim = device.getSimid(); + if (null == sim || StringUtils.isBlank(sim)) { + return; + } + + if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { + return; + } + + JSONObject header = new JSONObject(); + header.put("X-APP-KEY", smsAppKey); + + StringBuilder params = new StringBuilder(); + params.append("{"); + params.append("\"mobile\":"); + params.append("\"").append(sim).append("\"").append(","); + + String prefix = "【智慧蓉江】"; + String eventTm = DateUtils.sdf4.format(new Date()); + String devName = device.getDevName(); + String place = device.getFactory(); + + StringBuilder content = new StringBuilder(""); + content.append(prefix); + content.append(eventTm).append(","); + content.append("管网监测设备[").append(devName).append("],"); + content.append("发生").append(eventObj.getString("type")).append(","); + if (eventObj.containsKey("value") == true) { + content.append(eventObj.getString("value")).append(","); + } + content.append("详细地址是:").append(place).append(","); + content.append("请关注并及时处理。"); + + params.append("\"content\":"); + params.append("\"").append(content.toString()).append("\""); + params.append("}"); + + String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); + log.info("已发送短信"+resp); + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4807974..d47010a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 5907 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.183:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4038629..21ecda8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,6 +24,9 @@ casic: device: gas-dector: - type: 10 + type: 30 minutes: 60 - enable-local: false \ No newline at end of file + enable-local: false + data-day: 1 # 时间多少的为离线 + online: + cron: 0 0/1 * * * ? # 多长时间判断离线 \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..c0c7ac9 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf-8 + + + + + + + + ${LOG_PATH}/missiles_error.log + + + + + + ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + error + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/missiles_total.log + + + + + + ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + + true + + + + ${FILE_LOG_PATTERN} + utf-8 + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceDataMapper.xml b/src/main/resources/mapper/DeviceDataMapper.xml new file mode 100644 index 0000000..4e15de9 --- /dev/null +++ b/src/main/resources/mapper/DeviceDataMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml new file mode 100644 index 0000000..d04d912 --- /dev/null +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + UPDATE BUS_DEVICE + SET ONLINE_STATE=0 + WHERE VALID=1 + AND DEVCODE IN + + #{item} + + + + + \ No newline at end of file diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml index 5c64ca8..8a5929a 100644 --- a/target/classes/application-dev.yml +++ b/target/classes/application-dev.yml @@ -1,12 +1,12 @@ server: - port: 11520 + port: 5001 ################### spring配置 ################### spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://111.198.10.15:11102/smartwell_gdt?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&&allowMultiQueries=true&&useSSL=true - username: root - password: Casic203! + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@11.100.6.181:1521:orcl + username: gzsg + password: gzsg session: store-type: redis redis: @@ -19,8 +19,15 @@ # session: #flowable数据源和多数据源配置 logging: - level.root: error - level.com.casic: error + level.root: info + level.com.casic: debug + level.org.springframework.web: info file: path: logs/ - name: missiles.log \ No newline at end of file + name: missiles.log +#短信推送 +casic: + synchronizeSms.enabled: true + smsSenderURL: http://general.bushub.rj.prd/sms/user/send + X-APP-KEY-SMS: 2d3a8e35-0533-42a0-97a2-63f82a3216f9 + sms-prefix: 【智慧蓉江】 \ No newline at end of file diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class index 0813269..fd9b8ca 100644 --- a/target/classes/com/casic/controller/DeviceController.class +++ b/target/classes/com/casic/controller/DeviceController.class Binary files differ diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class deleted file mode 100644 index b9404b1..0000000 --- a/target/classes/com/casic/dao/DataGasMapper.class +++ /dev/null Binary files differ diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class deleted file mode 100644 index a2d1f17..0000000 --- a/target/classes/com/casic/dao/DeviceMapper.class +++ /dev/null Binary files differ diff --git a/target/classes/com/casic/service/impl/DeviceServiceImpl.class b/target/classes/com/casic/service/impl/DeviceServiceImpl.class index 44bf167..076702c 100644 --- a/target/classes/com/casic/service/impl/DeviceServiceImpl.class +++ b/target/classes/com/casic/service/impl/DeviceServiceImpl.class Binary files differ