diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat new file mode 100644 index 0000000..d858fb2 --- /dev/null +++ b/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat new file mode 100644 index 0000000..d858fb2 --- /dev/null +++ b/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh new file mode 100644 index 0000000..e14c4c7 --- /dev/null +++ b/src/main/build/bin/start.sh @@ -0,0 +1,2 @@ +java -jar ./lib/${project.build.finalName}.jar + diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat new file mode 100644 index 0000000..d858fb2 --- /dev/null +++ b/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh new file mode 100644 index 0000000..e14c4c7 --- /dev/null +++ b/src/main/build/bin/start.sh @@ -0,0 +1,2 @@ +java -jar ./lib/${project.build.finalName}.jar + diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java index 6e08811..02b97f4 100644 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ b/src/main/java/com/casic/dao/DataGasMapper.java @@ -19,20 +19,21 @@ "join bus_well_info bwi ON bwi.id=bdw.well_id ") Map getWellCode(@Param("devcode") String devcode); - @Update("UPDATE bus_device" + - "SET ONLINE_STATE=0" + + @Update("UPDATE bus_device " + + "SET ONLINE_STATE=#{onlineState} " + "WHERE devcode=#{devcode} ") - void setOfflineByDevcode(@Param("devcode") String devcode); + void setOfflineByDevcode(@Param("devcode") String devcode, + @Param("onlineState") Integer onlineState); @Select("SELECT level,high_value " + "FROM alarm_level " + "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") String deviceType); + List> getAlarmLevelList(@Param("deviceType") Long deviceType); @Select("SELECT devcode " + "FROM data_gas_dector " + "WHERE devcode=#{devcode} " + - "AND date_part('minute',now()-uptime) < ${minutes}" + + "AND round(cast(date_part('epoch',now() - uptime)/60 as numeric ),1) < ${minutes}" + "ORDER BY uptime DESC " + "LIMIT 1") String getLastData(@Param("minutes") String minutes, diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat new file mode 100644 index 0000000..d858fb2 --- /dev/null +++ b/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh new file mode 100644 index 0000000..e14c4c7 --- /dev/null +++ b/src/main/build/bin/start.sh @@ -0,0 +1,2 @@ +java -jar ./lib/${project.build.finalName}.jar + diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java index 6e08811..02b97f4 100644 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ b/src/main/java/com/casic/dao/DataGasMapper.java @@ -19,20 +19,21 @@ "join bus_well_info bwi ON bwi.id=bdw.well_id ") Map getWellCode(@Param("devcode") String devcode); - @Update("UPDATE bus_device" + - "SET ONLINE_STATE=0" + + @Update("UPDATE bus_device " + + "SET ONLINE_STATE=#{onlineState} " + "WHERE devcode=#{devcode} ") - void setOfflineByDevcode(@Param("devcode") String devcode); + void setOfflineByDevcode(@Param("devcode") String devcode, + @Param("onlineState") Integer onlineState); @Select("SELECT level,high_value " + "FROM alarm_level " + "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") String deviceType); + List> getAlarmLevelList(@Param("deviceType") Long deviceType); @Select("SELECT devcode " + "FROM data_gas_dector " + "WHERE devcode=#{devcode} " + - "AND date_part('minute',now()-uptime) < ${minutes}" + + "AND round(cast(date_part('epoch',now() - uptime)/60 as numeric ),1) < ${minutes}" + "ORDER BY uptime DESC " + "LIMIT 1") String getLastData(@Param("minutes") String minutes, diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java index 3a2a424..2066e53 100644 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java @@ -39,7 +39,7 @@ 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(fix) + 1L) : pre + dataStr + "0001"; + return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; } diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat new file mode 100644 index 0000000..d858fb2 --- /dev/null +++ b/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh new file mode 100644 index 0000000..e14c4c7 --- /dev/null +++ b/src/main/build/bin/start.sh @@ -0,0 +1,2 @@ +java -jar ./lib/${project.build.finalName}.jar + diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java index 6e08811..02b97f4 100644 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ b/src/main/java/com/casic/dao/DataGasMapper.java @@ -19,20 +19,21 @@ "join bus_well_info bwi ON bwi.id=bdw.well_id ") Map getWellCode(@Param("devcode") String devcode); - @Update("UPDATE bus_device" + - "SET ONLINE_STATE=0" + + @Update("UPDATE bus_device " + + "SET ONLINE_STATE=#{onlineState} " + "WHERE devcode=#{devcode} ") - void setOfflineByDevcode(@Param("devcode") String devcode); + void setOfflineByDevcode(@Param("devcode") String devcode, + @Param("onlineState") Integer onlineState); @Select("SELECT level,high_value " + "FROM alarm_level " + "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") String deviceType); + List> getAlarmLevelList(@Param("deviceType") Long deviceType); @Select("SELECT devcode " + "FROM data_gas_dector " + "WHERE devcode=#{devcode} " + - "AND date_part('minute',now()-uptime) < ${minutes}" + + "AND round(cast(date_part('epoch',now() - uptime)/60 as numeric ),1) < ${minutes}" + "ORDER BY uptime DESC " + "LIMIT 1") String getLastData(@Param("minutes") String minutes, diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java index 3a2a424..2066e53 100644 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java @@ -39,7 +39,7 @@ 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(fix) + 1L) : pre + dataStr + "0001"; + return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; } diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java index 65a6096..14affd9 100644 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ b/src/main/java/com/casic/entity/AlarmJob.java @@ -27,7 +27,7 @@ /** * 主键 */ - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 工单编号 diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat new file mode 100644 index 0000000..d858fb2 --- /dev/null +++ b/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh new file mode 100644 index 0000000..e14c4c7 --- /dev/null +++ b/src/main/build/bin/start.sh @@ -0,0 +1,2 @@ +java -jar ./lib/${project.build.finalName}.jar + diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java index 6e08811..02b97f4 100644 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ b/src/main/java/com/casic/dao/DataGasMapper.java @@ -19,20 +19,21 @@ "join bus_well_info bwi ON bwi.id=bdw.well_id ") Map getWellCode(@Param("devcode") String devcode); - @Update("UPDATE bus_device" + - "SET ONLINE_STATE=0" + + @Update("UPDATE bus_device " + + "SET ONLINE_STATE=#{onlineState} " + "WHERE devcode=#{devcode} ") - void setOfflineByDevcode(@Param("devcode") String devcode); + void setOfflineByDevcode(@Param("devcode") String devcode, + @Param("onlineState") Integer onlineState); @Select("SELECT level,high_value " + "FROM alarm_level " + "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") String deviceType); + List> getAlarmLevelList(@Param("deviceType") Long deviceType); @Select("SELECT devcode " + "FROM data_gas_dector " + "WHERE devcode=#{devcode} " + - "AND date_part('minute',now()-uptime) < ${minutes}" + + "AND round(cast(date_part('epoch',now() - uptime)/60 as numeric ),1) < ${minutes}" + "ORDER BY uptime DESC " + "LIMIT 1") String getLastData(@Param("minutes") String minutes, diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java index 3a2a424..2066e53 100644 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java @@ -39,7 +39,7 @@ 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(fix) + 1L) : pre + dataStr + "0001"; + return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; } diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java index 65a6096..14affd9 100644 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ b/src/main/java/com/casic/entity/AlarmJob.java @@ -27,7 +27,7 @@ /** * 主键 */ - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 工单编号 diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java index 3bc2cab..bfedfb9 100644 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ b/src/main/java/com/casic/entity/AlarmRecords.java @@ -26,7 +26,7 @@ /** * 主键 */ - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 设备ID diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat new file mode 100644 index 0000000..d858fb2 --- /dev/null +++ b/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh new file mode 100644 index 0000000..e14c4c7 --- /dev/null +++ b/src/main/build/bin/start.sh @@ -0,0 +1,2 @@ +java -jar ./lib/${project.build.finalName}.jar + diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java index 6e08811..02b97f4 100644 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ b/src/main/java/com/casic/dao/DataGasMapper.java @@ -19,20 +19,21 @@ "join bus_well_info bwi ON bwi.id=bdw.well_id ") Map getWellCode(@Param("devcode") String devcode); - @Update("UPDATE bus_device" + - "SET ONLINE_STATE=0" + + @Update("UPDATE bus_device " + + "SET ONLINE_STATE=#{onlineState} " + "WHERE devcode=#{devcode} ") - void setOfflineByDevcode(@Param("devcode") String devcode); + void setOfflineByDevcode(@Param("devcode") String devcode, + @Param("onlineState") Integer onlineState); @Select("SELECT level,high_value " + "FROM alarm_level " + "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") String deviceType); + List> getAlarmLevelList(@Param("deviceType") Long deviceType); @Select("SELECT devcode " + "FROM data_gas_dector " + "WHERE devcode=#{devcode} " + - "AND date_part('minute',now()-uptime) < ${minutes}" + + "AND round(cast(date_part('epoch',now() - uptime)/60 as numeric ),1) < ${minutes}" + "ORDER BY uptime DESC " + "LIMIT 1") String getLastData(@Param("minutes") String minutes, diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java index 3a2a424..2066e53 100644 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java @@ -39,7 +39,7 @@ 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(fix) + 1L) : pre + dataStr + "0001"; + return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; } diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java index 65a6096..14affd9 100644 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ b/src/main/java/com/casic/entity/AlarmJob.java @@ -27,7 +27,7 @@ /** * 主键 */ - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 工单编号 diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java index 3bc2cab..bfedfb9 100644 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ b/src/main/java/com/casic/entity/AlarmRecords.java @@ -26,7 +26,7 @@ /** * 主键 */ - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 设备ID diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java index 5375b2e..e5362c0 100644 --- a/src/main/java/com/casic/service/impl/NormalDataProcessor.java +++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java @@ -15,11 +15,13 @@ import org.springframework.util.ObjectUtils; import javax.annotation.Resource; +import javax.management.Query; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Slf4j @Component @@ -28,9 +30,11 @@ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); @Value("${casic.device.gas-dector.type}") - private String deviceType; + private Long deviceType; @Value("${casic.device.gas-dector.minutes}") private String minutes; + @Value("${casic.device.gas-dector.enable-local}") + private Boolean enableLocal; @Resource private DataGasMapper dataGasMapper; @@ -43,55 +47,68 @@ Map gasMap = dataGasMapper.getWellCode(devcode); if (ObjectUtils.isEmpty(gasMap)) { log.info("没有该设备编号录入" + devcode); + if (enableLocal){ + return; + } } + Boolean updateFlag = null; if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) { - this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap); + updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap); } - this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap); + this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag); return; } /** - * 自定义时间存库 + * 自定义时间存库 + * * @param dataReportParam * @param timeStamp * @param devcode * @param gasMap */ - private void saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) { + private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) { + Boolean updateFlag = false; DataGasDector dataGasDector = new DataGasDector(); dataGasDector.setDevcode(devcode); dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : ""); dataGasDector.setLogtime(new Date()); dataGasDector.setUptime(new Date(timeStamp)); dataGasDector.setDescn(dataReportParam.getMsg_type()); - dataReportParam.getRtd_val().stream().filter( + List dataReportFilter = dataReportParam.getRtd_val().stream().filter( data -> { return data != -1; } - ).forEach( + ).collect(Collectors.toList()); + if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) { + dataGasMapper.setOfflineByDevcode(devcode, 1); + updateFlag = true; + } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) { + dataGasMapper.setOfflineByDevcode(devcode, 0); + } + dataReportFilter.forEach( data -> { - if (data == 65535) { - dataGasMapper.setOfflineByDevcode(devcode); - } else { + if (data != 65535) { dataGasDector.setStrength(String.valueOf(data)); dataGasMapper.insert(dataGasDector); } } ); + return updateFlag; } /** - * 报警就存库 + * 报警就存库 + * * @param dataReportParam * @param devcode * @param timeStamp * @param gasMap */ - private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap) { + private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) { List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : ""; - Long deviceId = Long.valueOf(gasMap.get("deviceId")); + Long deviceId = Long.valueOf(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("deviceId") : "-1"); dataReportParam.getRtd_val().stream().filter( dataReport -> { return dataReport != -1 && dataReport != 65535; @@ -99,7 +116,7 @@ ).forEach( dataReport -> { for (Map alarmLevelMap : alarmLevelList) { - if (dataReport > Integer.valueOf(gasMap.get("high_value"))) { + if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { AlarmRecords alarmRecord = new AlarmRecords(); alarmRecord.setDeviceId(deviceId); alarmRecord.setDevcode(devcode); @@ -115,13 +132,16 @@ // 超出报警阈值 生成一条报警消息 if (!StringUtils.isEmpty(jobId)) { alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警"); - alarmRecord.setAlarmMessage(jobId); + alarmRecord.setJobId(Long.valueOf(jobId)); } else { AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1"); alarmRecord.setJobId(alarmJob.getId()); } - alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport); alarmRecordsMapper.insert(alarmRecord); + if (!updateFlag) { + alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport); + } + break; } } } @@ -131,7 +151,7 @@ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) { DataGasDector dataGasDector = new DataGasDector(); dataGasDector.setDevcode(devcode); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode"):""); + dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : ""); dataGasDector.setLogtime(new Date()); dataGasDector.setUptime(new Date(timeStamp)); dataGasDector.setDescn(dataReportParam.getMsg_type()); diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat new file mode 100644 index 0000000..d858fb2 --- /dev/null +++ b/src/main/build/bin/start.bat @@ -0,0 +1,4 @@ +@echo off +title ${project.build.finalName} +java -jar ./lib/${project.build.finalName}.jar +@pause diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh new file mode 100644 index 0000000..e14c4c7 --- /dev/null +++ b/src/main/build/bin/start.sh @@ -0,0 +1,2 @@ +java -jar ./lib/${project.build.finalName}.jar + diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java index 6e08811..02b97f4 100644 --- a/src/main/java/com/casic/dao/DataGasMapper.java +++ b/src/main/java/com/casic/dao/DataGasMapper.java @@ -19,20 +19,21 @@ "join bus_well_info bwi ON bwi.id=bdw.well_id ") Map getWellCode(@Param("devcode") String devcode); - @Update("UPDATE bus_device" + - "SET ONLINE_STATE=0" + + @Update("UPDATE bus_device " + + "SET ONLINE_STATE=#{onlineState} " + "WHERE devcode=#{devcode} ") - void setOfflineByDevcode(@Param("devcode") String devcode); + void setOfflineByDevcode(@Param("devcode") String devcode, + @Param("onlineState") Integer onlineState); @Select("SELECT level,high_value " + "FROM alarm_level " + "WHERE device_type=#{deviceType} ") - List> getAlarmLevelList(@Param("deviceType") String deviceType); + List> getAlarmLevelList(@Param("deviceType") Long deviceType); @Select("SELECT devcode " + "FROM data_gas_dector " + "WHERE devcode=#{devcode} " + - "AND date_part('minute',now()-uptime) < ${minutes}" + + "AND round(cast(date_part('epoch',now() - uptime)/60 as numeric ),1) < ${minutes}" + "ORDER BY uptime DESC " + "LIMIT 1") String getLastData(@Param("minutes") String minutes, diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java index 3a2a424..2066e53 100644 --- a/src/main/java/com/casic/dao/impl/AlarmJobDao.java +++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java @@ -39,7 +39,7 @@ 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(fix) + 1L) : pre + dataStr + "0001"; + return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001"; } diff --git a/src/main/java/com/casic/entity/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java index 65a6096..14affd9 100644 --- a/src/main/java/com/casic/entity/AlarmJob.java +++ b/src/main/java/com/casic/entity/AlarmJob.java @@ -27,7 +27,7 @@ /** * 主键 */ - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 工单编号 diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java index 3bc2cab..bfedfb9 100644 --- a/src/main/java/com/casic/entity/AlarmRecords.java +++ b/src/main/java/com/casic/entity/AlarmRecords.java @@ -26,7 +26,7 @@ /** * 主键 */ - @TableId(value = "ID", type = IdType.AUTO) + @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 设备ID diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java index 5375b2e..e5362c0 100644 --- a/src/main/java/com/casic/service/impl/NormalDataProcessor.java +++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java @@ -15,11 +15,13 @@ import org.springframework.util.ObjectUtils; import javax.annotation.Resource; +import javax.management.Query; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Slf4j @Component @@ -28,9 +30,11 @@ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd"); @Value("${casic.device.gas-dector.type}") - private String deviceType; + private Long deviceType; @Value("${casic.device.gas-dector.minutes}") private String minutes; + @Value("${casic.device.gas-dector.enable-local}") + private Boolean enableLocal; @Resource private DataGasMapper dataGasMapper; @@ -43,55 +47,68 @@ Map gasMap = dataGasMapper.getWellCode(devcode); if (ObjectUtils.isEmpty(gasMap)) { log.info("没有该设备编号录入" + devcode); + if (enableLocal){ + return; + } } + Boolean updateFlag = null; if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) { - this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap); + updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap); } - this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap); + this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag); return; } /** - * 自定义时间存库 + * 自定义时间存库 + * * @param dataReportParam * @param timeStamp * @param devcode * @param gasMap */ - private void saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) { + private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) { + Boolean updateFlag = false; DataGasDector dataGasDector = new DataGasDector(); dataGasDector.setDevcode(devcode); dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : ""); dataGasDector.setLogtime(new Date()); dataGasDector.setUptime(new Date(timeStamp)); dataGasDector.setDescn(dataReportParam.getMsg_type()); - dataReportParam.getRtd_val().stream().filter( + List dataReportFilter = dataReportParam.getRtd_val().stream().filter( data -> { return data != -1; } - ).forEach( + ).collect(Collectors.toList()); + if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) { + dataGasMapper.setOfflineByDevcode(devcode, 1); + updateFlag = true; + } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) { + dataGasMapper.setOfflineByDevcode(devcode, 0); + } + dataReportFilter.forEach( data -> { - if (data == 65535) { - dataGasMapper.setOfflineByDevcode(devcode); - } else { + if (data != 65535) { dataGasDector.setStrength(String.valueOf(data)); dataGasMapper.insert(dataGasDector); } } ); + return updateFlag; } /** - * 报警就存库 + * 报警就存库 + * * @param dataReportParam * @param devcode * @param timeStamp * @param gasMap */ - private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap) { + private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) { List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType); String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : ""; - Long deviceId = Long.valueOf(gasMap.get("deviceId")); + Long deviceId = Long.valueOf(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("deviceId") : "-1"); dataReportParam.getRtd_val().stream().filter( dataReport -> { return dataReport != -1 && dataReport != 65535; @@ -99,7 +116,7 @@ ).forEach( dataReport -> { for (Map alarmLevelMap : alarmLevelList) { - if (dataReport > Integer.valueOf(gasMap.get("high_value"))) { + if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) { AlarmRecords alarmRecord = new AlarmRecords(); alarmRecord.setDeviceId(deviceId); alarmRecord.setDevcode(devcode); @@ -115,13 +132,16 @@ // 超出报警阈值 生成一条报警消息 if (!StringUtils.isEmpty(jobId)) { alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警"); - alarmRecord.setAlarmMessage(jobId); + alarmRecord.setJobId(Long.valueOf(jobId)); } else { AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1"); alarmRecord.setJobId(alarmJob.getId()); } - alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport); alarmRecordsMapper.insert(alarmRecord); + if (!updateFlag) { + alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport); + } + break; } } } @@ -131,7 +151,7 @@ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) { DataGasDector dataGasDector = new DataGasDector(); dataGasDector.setDevcode(devcode); - dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode"):""); + dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : ""); dataGasDector.setLogtime(new Date()); dataGasDector.setUptime(new Date(timeStamp)); dataGasDector.setDescn(dataReportParam.getMsg_type()); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9072213..3b6e31f 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -19,10 +19,11 @@ mapper-locations: classpath:mapper/*.xml #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector -################### mybatis-plus配置 ################### -################### casic配置 ################### casic: device: gas-dector: type: 101 - minutes: 1200 \ No newline at end of file + minutes: 0 + enable-local: false +# type 可燃气体的设备类型 +# minutes: 燃气外协设备上传数据的分钟数 \ No newline at end of file