diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java index cbb235e..b5db367 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -9,6 +9,7 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import org.springframework.beans.factory.annotation.Autowired; @@ -62,7 +63,8 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("新增失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("新增失败"); } @@ -75,20 +77,21 @@ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); + return busPlanService.removeById(idDTO.getId()) ? + ResponseData.success() : ResponseData.error("删除失败"); } -// /** -// * 任务启用或停止 -// */ -// @RequestMapping(value = "/delete") -// @ResponseBody -// public Object delete(@RequestBody @Valid IdDTO idDTO) { -// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { -// throw new BusinessException(BusinessExceptionEnum.ID_NULL); -// }); -// return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); -// } + /** + * 任务启用或停止 + */ + @RequestMapping(value = "/startOrStop") + @ResponseBody + public Object startOrStop(@RequestBody @Valid PlanRequest planRequest) { + Assert.isFalse(Objects.isNull(planRequest.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.startOrStop(planRequest) ? ResponseData.success() : ResponseData.error("删除失败"); + } /** @@ -100,7 +103,8 @@ Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("更新失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); } } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java index cbb235e..b5db367 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -9,6 +9,7 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import org.springframework.beans.factory.annotation.Autowired; @@ -62,7 +63,8 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("新增失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("新增失败"); } @@ -75,20 +77,21 @@ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); + return busPlanService.removeById(idDTO.getId()) ? + ResponseData.success() : ResponseData.error("删除失败"); } -// /** -// * 任务启用或停止 -// */ -// @RequestMapping(value = "/delete") -// @ResponseBody -// public Object delete(@RequestBody @Valid IdDTO idDTO) { -// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { -// throw new BusinessException(BusinessExceptionEnum.ID_NULL); -// }); -// return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); -// } + /** + * 任务启用或停止 + */ + @RequestMapping(value = "/startOrStop") + @ResponseBody + public Object startOrStop(@RequestBody @Valid PlanRequest planRequest) { + Assert.isFalse(Objects.isNull(planRequest.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.startOrStop(planRequest) ? ResponseData.success() : ResponseData.error("删除失败"); + } /** @@ -100,7 +103,8 @@ Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("更新失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..6f22668 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java index cbb235e..b5db367 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -9,6 +9,7 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import org.springframework.beans.factory.annotation.Autowired; @@ -62,7 +63,8 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("新增失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("新增失败"); } @@ -75,20 +77,21 @@ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); + return busPlanService.removeById(idDTO.getId()) ? + ResponseData.success() : ResponseData.error("删除失败"); } -// /** -// * 任务启用或停止 -// */ -// @RequestMapping(value = "/delete") -// @ResponseBody -// public Object delete(@RequestBody @Valid IdDTO idDTO) { -// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { -// throw new BusinessException(BusinessExceptionEnum.ID_NULL); -// }); -// return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); -// } + /** + * 任务启用或停止 + */ + @RequestMapping(value = "/startOrStop") + @ResponseBody + public Object startOrStop(@RequestBody @Valid PlanRequest planRequest) { + Assert.isFalse(Objects.isNull(planRequest.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.startOrStop(planRequest) ? ResponseData.success() : ResponseData.error("删除失败"); + } /** @@ -100,7 +103,8 @@ Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("更新失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..6f22668 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..f435409 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Date; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 全局变量,用于计划任务设置 + */ +@Component +public class TaskCommom { + + public static volatile List taskCommonList; + + @PostConstruct + public void init() { + taskCommonList = new ArrayList<>(); + System.out.println("init task common list"); + } + + + public static synchronized void addOrUpdateTaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + if (ObjectUtil.isEmpty(taskInfoList)) { + taskCommonList.add(new TaskInfo(jobName, jobId, monitorId, status, taskTime)); + } else { + taskInfoList.forEach(taskInfo -> { + if (ObjectUtil.isNotEmpty(status)) { + taskInfo.setStatus(status); + } + if (ObjectUtil.isNotEmpty(taskTime)) { + taskInfo.setTaskTime(taskTime); + } + }); + } + } + + public static synchronized void deleteTaskInfos(String jobName) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + taskCommonList.removeAll(taskInfoList); + } + + + public static boolean isOnTaskInfo(Long monitorId, Date startTime, Date endTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getMonitorId(), monitorId)).collect(Collectors.toList()); + for (TaskInfo taskInfo : taskInfoList) { + if (ObjectUtil.isNotEmpty(taskInfo.getTaskTime())) { + if (DateUtils.belongCalendar(taskInfo.getTaskTime(), startTime, endTime)) + return true; + } + } + return false; + } + + +// public static synchronized DeviceInfo selectByDeviceIp(String deviceIp){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->deviceIp.equals(item.getDeviceIp())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByUserId(Long userId){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream() +// .filter(item-> userId.equals(item.getUserId())) +// .collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectBySerialHandle(Long serialHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->serialHandle.equals(item.getSerialHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByRealHandle(Long realHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->realHandle.equals(item.getRealHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } + + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java index cbb235e..b5db367 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -9,6 +9,7 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import org.springframework.beans.factory.annotation.Autowired; @@ -62,7 +63,8 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("新增失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("新增失败"); } @@ -75,20 +77,21 @@ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); + return busPlanService.removeById(idDTO.getId()) ? + ResponseData.success() : ResponseData.error("删除失败"); } -// /** -// * 任务启用或停止 -// */ -// @RequestMapping(value = "/delete") -// @ResponseBody -// public Object delete(@RequestBody @Valid IdDTO idDTO) { -// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { -// throw new BusinessException(BusinessExceptionEnum.ID_NULL); -// }); -// return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); -// } + /** + * 任务启用或停止 + */ + @RequestMapping(value = "/startOrStop") + @ResponseBody + public Object startOrStop(@RequestBody @Valid PlanRequest planRequest) { + Assert.isFalse(Objects.isNull(planRequest.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.startOrStop(planRequest) ? ResponseData.success() : ResponseData.error("删除失败"); + } /** @@ -100,7 +103,8 @@ Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("更新失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..6f22668 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..f435409 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Date; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 全局变量,用于计划任务设置 + */ +@Component +public class TaskCommom { + + public static volatile List taskCommonList; + + @PostConstruct + public void init() { + taskCommonList = new ArrayList<>(); + System.out.println("init task common list"); + } + + + public static synchronized void addOrUpdateTaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + if (ObjectUtil.isEmpty(taskInfoList)) { + taskCommonList.add(new TaskInfo(jobName, jobId, monitorId, status, taskTime)); + } else { + taskInfoList.forEach(taskInfo -> { + if (ObjectUtil.isNotEmpty(status)) { + taskInfo.setStatus(status); + } + if (ObjectUtil.isNotEmpty(taskTime)) { + taskInfo.setTaskTime(taskTime); + } + }); + } + } + + public static synchronized void deleteTaskInfos(String jobName) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + taskCommonList.removeAll(taskInfoList); + } + + + public static boolean isOnTaskInfo(Long monitorId, Date startTime, Date endTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getMonitorId(), monitorId)).collect(Collectors.toList()); + for (TaskInfo taskInfo : taskInfoList) { + if (ObjectUtil.isNotEmpty(taskInfo.getTaskTime())) { + if (DateUtils.belongCalendar(taskInfo.getTaskTime(), startTime, endTime)) + return true; + } + } + return false; + } + + +// public static synchronized DeviceInfo selectByDeviceIp(String deviceIp){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->deviceIp.equals(item.getDeviceIp())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByUserId(Long userId){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream() +// .filter(item-> userId.equals(item.getUserId())) +// .collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectBySerialHandle(Long serialHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->serialHandle.equals(item.getSerialHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByRealHandle(Long realHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->realHandle.equals(item.getRealHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } + + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.job; + +import lombok.Data; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Component +@Data +public class TaskInfo { + private String jobName; + private Long jobId; + private Long monitorId; + private String status; + private Date taskTime; + + public TaskInfo() { + } + + public TaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + this.jobName = jobName; + this.jobId = jobId; + this.monitorId = monitorId; + this.status = status; + this.taskTime = taskTime; + } +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java index cbb235e..b5db367 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -9,6 +9,7 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import org.springframework.beans.factory.annotation.Autowired; @@ -62,7 +63,8 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("新增失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("新增失败"); } @@ -75,20 +77,21 @@ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); + return busPlanService.removeById(idDTO.getId()) ? + ResponseData.success() : ResponseData.error("删除失败"); } -// /** -// * 任务启用或停止 -// */ -// @RequestMapping(value = "/delete") -// @ResponseBody -// public Object delete(@RequestBody @Valid IdDTO idDTO) { -// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { -// throw new BusinessException(BusinessExceptionEnum.ID_NULL); -// }); -// return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); -// } + /** + * 任务启用或停止 + */ + @RequestMapping(value = "/startOrStop") + @ResponseBody + public Object startOrStop(@RequestBody @Valid PlanRequest planRequest) { + Assert.isFalse(Objects.isNull(planRequest.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.startOrStop(planRequest) ? ResponseData.success() : ResponseData.error("删除失败"); + } /** @@ -100,7 +103,8 @@ Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("更新失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..6f22668 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..f435409 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Date; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 全局变量,用于计划任务设置 + */ +@Component +public class TaskCommom { + + public static volatile List taskCommonList; + + @PostConstruct + public void init() { + taskCommonList = new ArrayList<>(); + System.out.println("init task common list"); + } + + + public static synchronized void addOrUpdateTaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + if (ObjectUtil.isEmpty(taskInfoList)) { + taskCommonList.add(new TaskInfo(jobName, jobId, monitorId, status, taskTime)); + } else { + taskInfoList.forEach(taskInfo -> { + if (ObjectUtil.isNotEmpty(status)) { + taskInfo.setStatus(status); + } + if (ObjectUtil.isNotEmpty(taskTime)) { + taskInfo.setTaskTime(taskTime); + } + }); + } + } + + public static synchronized void deleteTaskInfos(String jobName) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + taskCommonList.removeAll(taskInfoList); + } + + + public static boolean isOnTaskInfo(Long monitorId, Date startTime, Date endTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getMonitorId(), monitorId)).collect(Collectors.toList()); + for (TaskInfo taskInfo : taskInfoList) { + if (ObjectUtil.isNotEmpty(taskInfo.getTaskTime())) { + if (DateUtils.belongCalendar(taskInfo.getTaskTime(), startTime, endTime)) + return true; + } + } + return false; + } + + +// public static synchronized DeviceInfo selectByDeviceIp(String deviceIp){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->deviceIp.equals(item.getDeviceIp())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByUserId(Long userId){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream() +// .filter(item-> userId.equals(item.getUserId())) +// .collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectBySerialHandle(Long serialHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->serialHandle.equals(item.getSerialHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByRealHandle(Long realHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->realHandle.equals(item.getRealHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } + + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.job; + +import lombok.Data; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Component +@Data +public class TaskInfo { + private String jobName; + private Long jobId; + private Long monitorId; + private String status; + private Date taskTime; + + public TaskInfo() { + } + + public TaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + this.jobName = jobName; + this.jobId = jobId; + this.monitorId = monitorId; + this.status = status; + this.taskTime = taskTime; + } +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java index 5456048..70472d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java @@ -135,26 +135,49 @@ private String lineName; + public AlarmRecord() { + } + + public AlarmRecord(Long monitorId, + String alarmType, + String alarmContent, + Double alarmValue, + Double alarmThresh, + Double alarmDirection, + Double alarmPitch, + String alarmStatus, + Integer lineNum) { + this.monitorId = monitorId; + this.alarmType = alarmType; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmThresh = alarmThresh; + this.alarmDirection = alarmDirection; + this.alarmPitch = alarmPitch; + this.alarmStatus = alarmStatus; + this.lineNum = lineNum; + } + @Override public String toString() { return "AlarmRecord{" + - "id=" + id + - ", monitorId=" + monitorId + - ", deviceCode=" + deviceCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmThresh=" + alarmThresh + - ", alarmDirection=" + alarmDirection + - ", alarmPitch=" + alarmPitch + - ", alarmTime=" + alarmTime + - ", alarmStatus=" + alarmStatus + - ", cancelTime=" + cancelTime + - ", cancelUser=" + cancelUser + - ", resumeTime=" + resumeTime + - ", lineNum=" + lineNum + - ", serialNum=" + serialNum + - ", ts=" + ts + - "}"; + "id=" + id + + ", monitorId=" + monitorId + + ", deviceCode=" + deviceCode + + ", alarmType=" + alarmType + + ", alarmContent=" + alarmContent + + ", alarmValue=" + alarmValue + + ", alarmThresh=" + alarmThresh + + ", alarmDirection=" + alarmDirection + + ", alarmPitch=" + alarmPitch + + ", alarmTime=" + alarmTime + + ", alarmStatus=" + alarmStatus + + ", cancelTime=" + cancelTime + + ", cancelUser=" + cancelUser + + ", resumeTime=" + resumeTime + + ", lineNum=" + lineNum + + ", serialNum=" + serialNum + + ", ts=" + ts + + "}"; } } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java index cbb235e..b5db367 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -9,6 +9,7 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import org.springframework.beans.factory.annotation.Autowired; @@ -62,7 +63,8 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("新增失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("新增失败"); } @@ -75,20 +77,21 @@ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); + return busPlanService.removeById(idDTO.getId()) ? + ResponseData.success() : ResponseData.error("删除失败"); } -// /** -// * 任务启用或停止 -// */ -// @RequestMapping(value = "/delete") -// @ResponseBody -// public Object delete(@RequestBody @Valid IdDTO idDTO) { -// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { -// throw new BusinessException(BusinessExceptionEnum.ID_NULL); -// }); -// return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); -// } + /** + * 任务启用或停止 + */ + @RequestMapping(value = "/startOrStop") + @ResponseBody + public Object startOrStop(@RequestBody @Valid PlanRequest planRequest) { + Assert.isFalse(Objects.isNull(planRequest.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.startOrStop(planRequest) ? ResponseData.success() : ResponseData.error("删除失败"); + } /** @@ -100,7 +103,8 @@ Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("更新失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..6f22668 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..f435409 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Date; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 全局变量,用于计划任务设置 + */ +@Component +public class TaskCommom { + + public static volatile List taskCommonList; + + @PostConstruct + public void init() { + taskCommonList = new ArrayList<>(); + System.out.println("init task common list"); + } + + + public static synchronized void addOrUpdateTaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + if (ObjectUtil.isEmpty(taskInfoList)) { + taskCommonList.add(new TaskInfo(jobName, jobId, monitorId, status, taskTime)); + } else { + taskInfoList.forEach(taskInfo -> { + if (ObjectUtil.isNotEmpty(status)) { + taskInfo.setStatus(status); + } + if (ObjectUtil.isNotEmpty(taskTime)) { + taskInfo.setTaskTime(taskTime); + } + }); + } + } + + public static synchronized void deleteTaskInfos(String jobName) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + taskCommonList.removeAll(taskInfoList); + } + + + public static boolean isOnTaskInfo(Long monitorId, Date startTime, Date endTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getMonitorId(), monitorId)).collect(Collectors.toList()); + for (TaskInfo taskInfo : taskInfoList) { + if (ObjectUtil.isNotEmpty(taskInfo.getTaskTime())) { + if (DateUtils.belongCalendar(taskInfo.getTaskTime(), startTime, endTime)) + return true; + } + } + return false; + } + + +// public static synchronized DeviceInfo selectByDeviceIp(String deviceIp){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->deviceIp.equals(item.getDeviceIp())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByUserId(Long userId){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream() +// .filter(item-> userId.equals(item.getUserId())) +// .collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectBySerialHandle(Long serialHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->serialHandle.equals(item.getSerialHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByRealHandle(Long realHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->realHandle.equals(item.getRealHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } + + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.job; + +import lombok.Data; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Component +@Data +public class TaskInfo { + private String jobName; + private Long jobId; + private Long monitorId; + private String status; + private Date taskTime; + + public TaskInfo() { + } + + public TaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + this.jobName = jobName; + this.jobId = jobId; + this.monitorId = monitorId; + this.status = status; + this.taskTime = taskTime; + } +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java index 5456048..70472d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java @@ -135,26 +135,49 @@ private String lineName; + public AlarmRecord() { + } + + public AlarmRecord(Long monitorId, + String alarmType, + String alarmContent, + Double alarmValue, + Double alarmThresh, + Double alarmDirection, + Double alarmPitch, + String alarmStatus, + Integer lineNum) { + this.monitorId = monitorId; + this.alarmType = alarmType; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmThresh = alarmThresh; + this.alarmDirection = alarmDirection; + this.alarmPitch = alarmPitch; + this.alarmStatus = alarmStatus; + this.lineNum = lineNum; + } + @Override public String toString() { return "AlarmRecord{" + - "id=" + id + - ", monitorId=" + monitorId + - ", deviceCode=" + deviceCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmThresh=" + alarmThresh + - ", alarmDirection=" + alarmDirection + - ", alarmPitch=" + alarmPitch + - ", alarmTime=" + alarmTime + - ", alarmStatus=" + alarmStatus + - ", cancelTime=" + cancelTime + - ", cancelUser=" + cancelUser + - ", resumeTime=" + resumeTime + - ", lineNum=" + lineNum + - ", serialNum=" + serialNum + - ", ts=" + ts + - "}"; + "id=" + id + + ", monitorId=" + monitorId + + ", deviceCode=" + deviceCode + + ", alarmType=" + alarmType + + ", alarmContent=" + alarmContent + + ", alarmValue=" + alarmValue + + ", alarmThresh=" + alarmThresh + + ", alarmDirection=" + alarmDirection + + ", alarmPitch=" + alarmPitch + + ", alarmTime=" + alarmTime + + ", alarmStatus=" + alarmStatus + + ", cancelTime=" + cancelTime + + ", cancelUser=" + cancelUser + + ", resumeTime=" + resumeTime + + ", lineNum=" + lineNum + + ", serialNum=" + serialNum + + ", ts=" + ts + + "}"; } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java index aed7813..9b56f87 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.baomidou.mybatisplus.extension.service.IService; @@ -15,4 +16,6 @@ boolean saveOrUpdateBusPlan(BusPlan busPlan); + boolean startOrStop(PlanRequest planRequest); + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java index cbb235e..b5db367 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -9,6 +9,7 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import org.springframework.beans.factory.annotation.Autowired; @@ -62,7 +63,8 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("新增失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("新增失败"); } @@ -75,20 +77,21 @@ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); + return busPlanService.removeById(idDTO.getId()) ? + ResponseData.success() : ResponseData.error("删除失败"); } -// /** -// * 任务启用或停止 -// */ -// @RequestMapping(value = "/delete") -// @ResponseBody -// public Object delete(@RequestBody @Valid IdDTO idDTO) { -// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { -// throw new BusinessException(BusinessExceptionEnum.ID_NULL); -// }); -// return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); -// } + /** + * 任务启用或停止 + */ + @RequestMapping(value = "/startOrStop") + @ResponseBody + public Object startOrStop(@RequestBody @Valid PlanRequest planRequest) { + Assert.isFalse(Objects.isNull(planRequest.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.startOrStop(planRequest) ? ResponseData.success() : ResponseData.error("删除失败"); + } /** @@ -100,7 +103,8 @@ Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("更新失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..6f22668 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..f435409 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Date; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 全局变量,用于计划任务设置 + */ +@Component +public class TaskCommom { + + public static volatile List taskCommonList; + + @PostConstruct + public void init() { + taskCommonList = new ArrayList<>(); + System.out.println("init task common list"); + } + + + public static synchronized void addOrUpdateTaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + if (ObjectUtil.isEmpty(taskInfoList)) { + taskCommonList.add(new TaskInfo(jobName, jobId, monitorId, status, taskTime)); + } else { + taskInfoList.forEach(taskInfo -> { + if (ObjectUtil.isNotEmpty(status)) { + taskInfo.setStatus(status); + } + if (ObjectUtil.isNotEmpty(taskTime)) { + taskInfo.setTaskTime(taskTime); + } + }); + } + } + + public static synchronized void deleteTaskInfos(String jobName) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + taskCommonList.removeAll(taskInfoList); + } + + + public static boolean isOnTaskInfo(Long monitorId, Date startTime, Date endTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getMonitorId(), monitorId)).collect(Collectors.toList()); + for (TaskInfo taskInfo : taskInfoList) { + if (ObjectUtil.isNotEmpty(taskInfo.getTaskTime())) { + if (DateUtils.belongCalendar(taskInfo.getTaskTime(), startTime, endTime)) + return true; + } + } + return false; + } + + +// public static synchronized DeviceInfo selectByDeviceIp(String deviceIp){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->deviceIp.equals(item.getDeviceIp())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByUserId(Long userId){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream() +// .filter(item-> userId.equals(item.getUserId())) +// .collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectBySerialHandle(Long serialHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->serialHandle.equals(item.getSerialHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByRealHandle(Long realHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->realHandle.equals(item.getRealHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } + + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.job; + +import lombok.Data; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Component +@Data +public class TaskInfo { + private String jobName; + private Long jobId; + private Long monitorId; + private String status; + private Date taskTime; + + public TaskInfo() { + } + + public TaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + this.jobName = jobName; + this.jobId = jobId; + this.monitorId = monitorId; + this.status = status; + this.taskTime = taskTime; + } +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java index 5456048..70472d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java @@ -135,26 +135,49 @@ private String lineName; + public AlarmRecord() { + } + + public AlarmRecord(Long monitorId, + String alarmType, + String alarmContent, + Double alarmValue, + Double alarmThresh, + Double alarmDirection, + Double alarmPitch, + String alarmStatus, + Integer lineNum) { + this.monitorId = monitorId; + this.alarmType = alarmType; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmThresh = alarmThresh; + this.alarmDirection = alarmDirection; + this.alarmPitch = alarmPitch; + this.alarmStatus = alarmStatus; + this.lineNum = lineNum; + } + @Override public String toString() { return "AlarmRecord{" + - "id=" + id + - ", monitorId=" + monitorId + - ", deviceCode=" + deviceCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmThresh=" + alarmThresh + - ", alarmDirection=" + alarmDirection + - ", alarmPitch=" + alarmPitch + - ", alarmTime=" + alarmTime + - ", alarmStatus=" + alarmStatus + - ", cancelTime=" + cancelTime + - ", cancelUser=" + cancelUser + - ", resumeTime=" + resumeTime + - ", lineNum=" + lineNum + - ", serialNum=" + serialNum + - ", ts=" + ts + - "}"; + "id=" + id + + ", monitorId=" + monitorId + + ", deviceCode=" + deviceCode + + ", alarmType=" + alarmType + + ", alarmContent=" + alarmContent + + ", alarmValue=" + alarmValue + + ", alarmThresh=" + alarmThresh + + ", alarmDirection=" + alarmDirection + + ", alarmPitch=" + alarmPitch + + ", alarmTime=" + alarmTime + + ", alarmStatus=" + alarmStatus + + ", cancelTime=" + cancelTime + + ", cancelUser=" + cancelUser + + ", resumeTime=" + resumeTime + + ", lineNum=" + lineNum + + ", serialNum=" + serialNum + + ", ts=" + ts + + "}"; } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java index aed7813..9b56f87 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.baomidou.mybatisplus.extension.service.IService; @@ -15,4 +16,6 @@ boolean saveOrUpdateBusPlan(BusPlan busPlan); + boolean startOrStop(PlanRequest planRequest); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java index a46b298..8351d2c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java @@ -3,10 +3,13 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.enums.StatusEnum; import com.casic.missiles.modular.system.dao.BusPlanMapper; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.job.StartTaskJob; import com.casic.missiles.modular.system.job.StopTaskJob; +import com.casic.missiles.modular.system.job.TaskCommom; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import com.casic.missiles.quartz.service.IQuartzManager; @@ -39,23 +42,64 @@ if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { //到时间开启 if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate()+" "+busPlan.getBeginTime()); - String jobName = "startPatrolTask" + busPlan.getId(); - Map map = new HashMap<>(); - map.put("jobId", busPlan.getId()); - quartzManager.addJob(jobName, StartTaskJob.class, startTaskTime, map); + Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime()); + startTask(startTaskTime, StartTaskJob.class, DictEnum.START_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); } //到时间关闭 if (ObjectUtil.isNotEmpty(busPlan.getEndDate()) && ObjectUtil.isNotEmpty(busPlan.getEndTime())) { - Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate()+" "+busPlan.getEndTime()); - String jobName = "endPatrolTask" + busPlan.getId(); - Map map = new HashMap<>(); - map.put("jobId", busPlan.getId()); - quartzManager.addJob(jobName, StopTaskJob.class, endTaskTime, map); + Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime()); + startTask(endTaskTime, StopTaskJob.class, DictEnum.STOP_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); } } return true; } return false; } + + + @Override + public boolean startOrStop(PlanRequest planRequest) { + BusPlan busPlan = this.getById(planRequest.getId()); + //启动任务 + switch (planRequest.getFlag()) { + case StatusEnum.STATUS_OPEN: + Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime()); + Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime()); + if(ObjectUtil.isAllNotEmpty(startTaskTime,endTaskTime)){ + //在此期间若没有任务执行 + if(!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(),startTaskTime,endTaskTime)){ + startTask(startTaskTime, StartTaskJob.class, DictEnum.START_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); + } + } + break; + case StatusEnum.STATUS_CLOSE: +// iPTZCommand = HCNetSDK.TILT_DOWN; + break; + default: + break; + } + if (StatusEnum.STATUS_OPEN.equals(planRequest.getFlag())) { + + + } + return false; + } + + //开始job + public void startTask(Date taskTime, Class cls, String jobName, String jobId, Long monitorId) { + Map map = new HashMap<>(); + map.put("jobId", jobId); + quartzManager.addJob(jobName, cls, taskTime, map); + TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime); + } + + //删除job + public void deleteTask(String jobName) { + quartzManager.removeJob(jobName); + TaskCommom.deleteTaskInfos(jobName); + } + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java index cbb235e..b5db367 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -9,6 +9,7 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import org.springframework.beans.factory.annotation.Autowired; @@ -62,7 +63,8 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("新增失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("新增失败"); } @@ -75,20 +77,21 @@ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); + return busPlanService.removeById(idDTO.getId()) ? + ResponseData.success() : ResponseData.error("删除失败"); } -// /** -// * 任务启用或停止 -// */ -// @RequestMapping(value = "/delete") -// @ResponseBody -// public Object delete(@RequestBody @Valid IdDTO idDTO) { -// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { -// throw new BusinessException(BusinessExceptionEnum.ID_NULL); -// }); -// return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); -// } + /** + * 任务启用或停止 + */ + @RequestMapping(value = "/startOrStop") + @ResponseBody + public Object startOrStop(@RequestBody @Valid PlanRequest planRequest) { + Assert.isFalse(Objects.isNull(planRequest.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.startOrStop(planRequest) ? ResponseData.success() : ResponseData.error("删除失败"); + } /** @@ -100,7 +103,8 @@ Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("更新失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..6f22668 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..f435409 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Date; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 全局变量,用于计划任务设置 + */ +@Component +public class TaskCommom { + + public static volatile List taskCommonList; + + @PostConstruct + public void init() { + taskCommonList = new ArrayList<>(); + System.out.println("init task common list"); + } + + + public static synchronized void addOrUpdateTaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + if (ObjectUtil.isEmpty(taskInfoList)) { + taskCommonList.add(new TaskInfo(jobName, jobId, monitorId, status, taskTime)); + } else { + taskInfoList.forEach(taskInfo -> { + if (ObjectUtil.isNotEmpty(status)) { + taskInfo.setStatus(status); + } + if (ObjectUtil.isNotEmpty(taskTime)) { + taskInfo.setTaskTime(taskTime); + } + }); + } + } + + public static synchronized void deleteTaskInfos(String jobName) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + taskCommonList.removeAll(taskInfoList); + } + + + public static boolean isOnTaskInfo(Long monitorId, Date startTime, Date endTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getMonitorId(), monitorId)).collect(Collectors.toList()); + for (TaskInfo taskInfo : taskInfoList) { + if (ObjectUtil.isNotEmpty(taskInfo.getTaskTime())) { + if (DateUtils.belongCalendar(taskInfo.getTaskTime(), startTime, endTime)) + return true; + } + } + return false; + } + + +// public static synchronized DeviceInfo selectByDeviceIp(String deviceIp){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->deviceIp.equals(item.getDeviceIp())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByUserId(Long userId){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream() +// .filter(item-> userId.equals(item.getUserId())) +// .collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectBySerialHandle(Long serialHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->serialHandle.equals(item.getSerialHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByRealHandle(Long realHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->realHandle.equals(item.getRealHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } + + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.job; + +import lombok.Data; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Component +@Data +public class TaskInfo { + private String jobName; + private Long jobId; + private Long monitorId; + private String status; + private Date taskTime; + + public TaskInfo() { + } + + public TaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + this.jobName = jobName; + this.jobId = jobId; + this.monitorId = monitorId; + this.status = status; + this.taskTime = taskTime; + } +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java index 5456048..70472d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java @@ -135,26 +135,49 @@ private String lineName; + public AlarmRecord() { + } + + public AlarmRecord(Long monitorId, + String alarmType, + String alarmContent, + Double alarmValue, + Double alarmThresh, + Double alarmDirection, + Double alarmPitch, + String alarmStatus, + Integer lineNum) { + this.monitorId = monitorId; + this.alarmType = alarmType; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmThresh = alarmThresh; + this.alarmDirection = alarmDirection; + this.alarmPitch = alarmPitch; + this.alarmStatus = alarmStatus; + this.lineNum = lineNum; + } + @Override public String toString() { return "AlarmRecord{" + - "id=" + id + - ", monitorId=" + monitorId + - ", deviceCode=" + deviceCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmThresh=" + alarmThresh + - ", alarmDirection=" + alarmDirection + - ", alarmPitch=" + alarmPitch + - ", alarmTime=" + alarmTime + - ", alarmStatus=" + alarmStatus + - ", cancelTime=" + cancelTime + - ", cancelUser=" + cancelUser + - ", resumeTime=" + resumeTime + - ", lineNum=" + lineNum + - ", serialNum=" + serialNum + - ", ts=" + ts + - "}"; + "id=" + id + + ", monitorId=" + monitorId + + ", deviceCode=" + deviceCode + + ", alarmType=" + alarmType + + ", alarmContent=" + alarmContent + + ", alarmValue=" + alarmValue + + ", alarmThresh=" + alarmThresh + + ", alarmDirection=" + alarmDirection + + ", alarmPitch=" + alarmPitch + + ", alarmTime=" + alarmTime + + ", alarmStatus=" + alarmStatus + + ", cancelTime=" + cancelTime + + ", cancelUser=" + cancelUser + + ", resumeTime=" + resumeTime + + ", lineNum=" + lineNum + + ", serialNum=" + serialNum + + ", ts=" + ts + + "}"; } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java index aed7813..9b56f87 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.baomidou.mybatisplus.extension.service.IService; @@ -15,4 +16,6 @@ boolean saveOrUpdateBusPlan(BusPlan busPlan); + boolean startOrStop(PlanRequest planRequest); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java index a46b298..8351d2c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java @@ -3,10 +3,13 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.enums.StatusEnum; import com.casic.missiles.modular.system.dao.BusPlanMapper; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.job.StartTaskJob; import com.casic.missiles.modular.system.job.StopTaskJob; +import com.casic.missiles.modular.system.job.TaskCommom; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import com.casic.missiles.quartz.service.IQuartzManager; @@ -39,23 +42,64 @@ if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { //到时间开启 if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate()+" "+busPlan.getBeginTime()); - String jobName = "startPatrolTask" + busPlan.getId(); - Map map = new HashMap<>(); - map.put("jobId", busPlan.getId()); - quartzManager.addJob(jobName, StartTaskJob.class, startTaskTime, map); + Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime()); + startTask(startTaskTime, StartTaskJob.class, DictEnum.START_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); } //到时间关闭 if (ObjectUtil.isNotEmpty(busPlan.getEndDate()) && ObjectUtil.isNotEmpty(busPlan.getEndTime())) { - Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate()+" "+busPlan.getEndTime()); - String jobName = "endPatrolTask" + busPlan.getId(); - Map map = new HashMap<>(); - map.put("jobId", busPlan.getId()); - quartzManager.addJob(jobName, StopTaskJob.class, endTaskTime, map); + Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime()); + startTask(endTaskTime, StopTaskJob.class, DictEnum.STOP_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); } } return true; } return false; } + + + @Override + public boolean startOrStop(PlanRequest planRequest) { + BusPlan busPlan = this.getById(planRequest.getId()); + //启动任务 + switch (planRequest.getFlag()) { + case StatusEnum.STATUS_OPEN: + Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime()); + Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime()); + if(ObjectUtil.isAllNotEmpty(startTaskTime,endTaskTime)){ + //在此期间若没有任务执行 + if(!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(),startTaskTime,endTaskTime)){ + startTask(startTaskTime, StartTaskJob.class, DictEnum.START_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); + } + } + break; + case StatusEnum.STATUS_CLOSE: +// iPTZCommand = HCNetSDK.TILT_DOWN; + break; + default: + break; + } + if (StatusEnum.STATUS_OPEN.equals(planRequest.getFlag())) { + + + } + return false; + } + + //开始job + public void startTask(Date taskTime, Class cls, String jobName, String jobId, Long monitorId) { + Map map = new HashMap<>(); + map.put("jobId", jobId); + quartzManager.addJob(jobName, cls, taskTime, map); + TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime); + } + + //删除job + public void deleteTask(String jobName) { + quartzManager.removeJob(jobName); + TaskCommom.deleteTaskInfos(jobName); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java index da03e4f..2d7ab31 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java @@ -20,7 +20,7 @@ @PostConstruct public void init(){ -// threadMap = new HashMap<>(); + threadMap = new HashMap<>(); threadResertMap = new HashMap<>(); } } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java index cbb235e..b5db367 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -9,6 +9,7 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import org.springframework.beans.factory.annotation.Autowired; @@ -62,7 +63,8 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("新增失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("新增失败"); } @@ -75,20 +77,21 @@ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); + return busPlanService.removeById(idDTO.getId()) ? + ResponseData.success() : ResponseData.error("删除失败"); } -// /** -// * 任务启用或停止 -// */ -// @RequestMapping(value = "/delete") -// @ResponseBody -// public Object delete(@RequestBody @Valid IdDTO idDTO) { -// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { -// throw new BusinessException(BusinessExceptionEnum.ID_NULL); -// }); -// return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); -// } + /** + * 任务启用或停止 + */ + @RequestMapping(value = "/startOrStop") + @ResponseBody + public Object startOrStop(@RequestBody @Valid PlanRequest planRequest) { + Assert.isFalse(Objects.isNull(planRequest.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.startOrStop(planRequest) ? ResponseData.success() : ResponseData.error("删除失败"); + } /** @@ -100,7 +103,8 @@ Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("更新失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..6f22668 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..f435409 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Date; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 全局变量,用于计划任务设置 + */ +@Component +public class TaskCommom { + + public static volatile List taskCommonList; + + @PostConstruct + public void init() { + taskCommonList = new ArrayList<>(); + System.out.println("init task common list"); + } + + + public static synchronized void addOrUpdateTaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + if (ObjectUtil.isEmpty(taskInfoList)) { + taskCommonList.add(new TaskInfo(jobName, jobId, monitorId, status, taskTime)); + } else { + taskInfoList.forEach(taskInfo -> { + if (ObjectUtil.isNotEmpty(status)) { + taskInfo.setStatus(status); + } + if (ObjectUtil.isNotEmpty(taskTime)) { + taskInfo.setTaskTime(taskTime); + } + }); + } + } + + public static synchronized void deleteTaskInfos(String jobName) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + taskCommonList.removeAll(taskInfoList); + } + + + public static boolean isOnTaskInfo(Long monitorId, Date startTime, Date endTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getMonitorId(), monitorId)).collect(Collectors.toList()); + for (TaskInfo taskInfo : taskInfoList) { + if (ObjectUtil.isNotEmpty(taskInfo.getTaskTime())) { + if (DateUtils.belongCalendar(taskInfo.getTaskTime(), startTime, endTime)) + return true; + } + } + return false; + } + + +// public static synchronized DeviceInfo selectByDeviceIp(String deviceIp){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->deviceIp.equals(item.getDeviceIp())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByUserId(Long userId){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream() +// .filter(item-> userId.equals(item.getUserId())) +// .collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectBySerialHandle(Long serialHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->serialHandle.equals(item.getSerialHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByRealHandle(Long realHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->realHandle.equals(item.getRealHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } + + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.job; + +import lombok.Data; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Component +@Data +public class TaskInfo { + private String jobName; + private Long jobId; + private Long monitorId; + private String status; + private Date taskTime; + + public TaskInfo() { + } + + public TaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + this.jobName = jobName; + this.jobId = jobId; + this.monitorId = monitorId; + this.status = status; + this.taskTime = taskTime; + } +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java index 5456048..70472d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java @@ -135,26 +135,49 @@ private String lineName; + public AlarmRecord() { + } + + public AlarmRecord(Long monitorId, + String alarmType, + String alarmContent, + Double alarmValue, + Double alarmThresh, + Double alarmDirection, + Double alarmPitch, + String alarmStatus, + Integer lineNum) { + this.monitorId = monitorId; + this.alarmType = alarmType; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmThresh = alarmThresh; + this.alarmDirection = alarmDirection; + this.alarmPitch = alarmPitch; + this.alarmStatus = alarmStatus; + this.lineNum = lineNum; + } + @Override public String toString() { return "AlarmRecord{" + - "id=" + id + - ", monitorId=" + monitorId + - ", deviceCode=" + deviceCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmThresh=" + alarmThresh + - ", alarmDirection=" + alarmDirection + - ", alarmPitch=" + alarmPitch + - ", alarmTime=" + alarmTime + - ", alarmStatus=" + alarmStatus + - ", cancelTime=" + cancelTime + - ", cancelUser=" + cancelUser + - ", resumeTime=" + resumeTime + - ", lineNum=" + lineNum + - ", serialNum=" + serialNum + - ", ts=" + ts + - "}"; + "id=" + id + + ", monitorId=" + monitorId + + ", deviceCode=" + deviceCode + + ", alarmType=" + alarmType + + ", alarmContent=" + alarmContent + + ", alarmValue=" + alarmValue + + ", alarmThresh=" + alarmThresh + + ", alarmDirection=" + alarmDirection + + ", alarmPitch=" + alarmPitch + + ", alarmTime=" + alarmTime + + ", alarmStatus=" + alarmStatus + + ", cancelTime=" + cancelTime + + ", cancelUser=" + cancelUser + + ", resumeTime=" + resumeTime + + ", lineNum=" + lineNum + + ", serialNum=" + serialNum + + ", ts=" + ts + + "}"; } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java index aed7813..9b56f87 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.baomidou.mybatisplus.extension.service.IService; @@ -15,4 +16,6 @@ boolean saveOrUpdateBusPlan(BusPlan busPlan); + boolean startOrStop(PlanRequest planRequest); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java index a46b298..8351d2c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java @@ -3,10 +3,13 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.enums.StatusEnum; import com.casic.missiles.modular.system.dao.BusPlanMapper; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.job.StartTaskJob; import com.casic.missiles.modular.system.job.StopTaskJob; +import com.casic.missiles.modular.system.job.TaskCommom; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import com.casic.missiles.quartz.service.IQuartzManager; @@ -39,23 +42,64 @@ if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { //到时间开启 if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate()+" "+busPlan.getBeginTime()); - String jobName = "startPatrolTask" + busPlan.getId(); - Map map = new HashMap<>(); - map.put("jobId", busPlan.getId()); - quartzManager.addJob(jobName, StartTaskJob.class, startTaskTime, map); + Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime()); + startTask(startTaskTime, StartTaskJob.class, DictEnum.START_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); } //到时间关闭 if (ObjectUtil.isNotEmpty(busPlan.getEndDate()) && ObjectUtil.isNotEmpty(busPlan.getEndTime())) { - Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate()+" "+busPlan.getEndTime()); - String jobName = "endPatrolTask" + busPlan.getId(); - Map map = new HashMap<>(); - map.put("jobId", busPlan.getId()); - quartzManager.addJob(jobName, StopTaskJob.class, endTaskTime, map); + Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime()); + startTask(endTaskTime, StopTaskJob.class, DictEnum.STOP_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); } } return true; } return false; } + + + @Override + public boolean startOrStop(PlanRequest planRequest) { + BusPlan busPlan = this.getById(planRequest.getId()); + //启动任务 + switch (planRequest.getFlag()) { + case StatusEnum.STATUS_OPEN: + Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime()); + Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime()); + if(ObjectUtil.isAllNotEmpty(startTaskTime,endTaskTime)){ + //在此期间若没有任务执行 + if(!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(),startTaskTime,endTaskTime)){ + startTask(startTaskTime, StartTaskJob.class, DictEnum.START_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); + } + } + break; + case StatusEnum.STATUS_CLOSE: +// iPTZCommand = HCNetSDK.TILT_DOWN; + break; + default: + break; + } + if (StatusEnum.STATUS_OPEN.equals(planRequest.getFlag())) { + + + } + return false; + } + + //开始job + public void startTask(Date taskTime, Class cls, String jobName, String jobId, Long monitorId) { + Map map = new HashMap<>(); + map.put("jobId", jobId); + quartzManager.addJob(jobName, cls, taskTime, map); + TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime); + } + + //删除job + public void deleteTask(String jobName) { + quartzManager.removeJob(jobName); + TaskCommom.deleteTaskInfos(jobName); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java index da03e4f..2d7ab31 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java @@ -20,7 +20,7 @@ @PostConstruct public void init(){ -// threadMap = new HashMap<>(); + threadMap = new HashMap<>(); threadResertMap = new HashMap<>(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/HCNetServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/HCNetServiceImpl.java index 30a88ca..ec3f887 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/HCNetServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/HCNetServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.enums.StatusEnum; import com.casic.missiles.es.DataGasEs; import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.*; @@ -484,7 +485,7 @@ BusMonipoiInfo monipoiInfo = monipoiInfoService.selectByDeviceIp(deviceIp); if (ObjectUtil.isNotEmpty(monipoiInfo)) { - return CommDoorUtil.interruptStart(monipoiInfo.getDoorIp(),monipoiInfo.getDoorSn()); + return CommDoorUtil.interruptStart(monipoiInfo.getDoorIp(), monipoiInfo.getDoorSn()); } return false; } @@ -1000,11 +1001,11 @@ Long serialHandle = serialHandle(Long.valueOf(userId)); DeviceInfo deviceInfo = DeviceCommom.selectByUserId((long) userId); MonitorBaseInfo baseInfo = monipoiInfoService.selectInfoByDeviceIp(deviceInfo.getDeviceIp()); - + //设置当前巡航线,用于存数据时在哪个航线上 + if (ObjectUtil.isNotEmpty(baseInfo)) + baseInfo.setLineNum(cruiseRoute); switch (command) { case "start": -// res = hCNetSDK.NET_DVR_PTZCruise(new NativeLong(realHandle), HCNetSDK.RUN_SEQ, (byte) cruiseRoute.intValue(),(byte)0,(byte)0); - //廊坊新指令设备 if (null != baseInfo && DeviceTypeEnum.XST_TYPE.getCode().equals(baseInfo.getType())) { try { @@ -1056,7 +1057,10 @@ MonitorBaseInfo baseInfo = monipoiInfoService.selectInfoByDeviceIp(deviceInfo.getDeviceIp()); monipoiInfoService.updateBusMonipoiInfo(deviceInfo.getDeviceIp(), cruiseRoute); //巡航线程 - AutoCruiseTask task = new AutoCruiseTask(obserpoiInfos, deviceInfo.getDeviceIp(), deviceInfo.getUserId(), this, webSocket, ObjectUtil.isNotEmpty(baseInfo) && DeviceTypeEnum.SELF_TYPE.getCode().equals(baseInfo.getType()) ? DeviceTypeEnum.SELF_TYPE.getCode() : DeviceTypeEnum.ARD_TYPE.getCode(), alarmRecordService, interval, ObjectUtil.isNotEmpty(baseInfo) ? baseInfo.getMonitorName() : ""); + AutoCruiseTask task = new AutoCruiseTask(obserpoiInfos, deviceInfo.getDeviceIp(), deviceInfo.getUserId(), this, webSocket, + ObjectUtil.isNotEmpty(baseInfo) && DeviceTypeEnum.SELF_TYPE.getCode().equals(baseInfo.getType()) ? + DeviceTypeEnum.SELF_TYPE.getCode() : DeviceTypeEnum.ARD_TYPE.getCode(), alarmRecordService, + interval, ObjectUtil.isNotEmpty(baseInfo) ? baseInfo.getMonitorName() : ""); Thread cruiseThread = new Thread(task); TaskCommon.threadMap.put(deviceInfo.getUserId(), task); cruiseThread.start(); @@ -1363,26 +1367,21 @@ threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override public void run() { - MonitorBaseInfo monitorBaseInfo = monipoiInfoService.selectInfoByDeviceIp(deviceInfo.getDeviceIp()); if (ObjectUtil.isNotEmpty(monitorBaseInfo)) { try { - //自带巡检设备 if (DeviceTypeEnum.XST_TYPE.getCode().equals(monitorBaseInfo.getType())) { DataGasEs dataGasEs = insertDataGasEs(monitorBaseInfo, concentration, direction1, pitch1, alarmThreshold); insertGasAlarmProduct(monitorBaseInfo, dataGasEs, alarmThreshold, 1 == alarmFlag ? true : false); } else { - AlarmRule alarmRule = alarmRuleService.selectByMonitor(monitorBaseInfo.getMonitorId()); -// DataGas dataGas = insertDataGas(monitorBaseInfo,concentration,direction,pitch); DataGasEs dataGasEs = insertDataGasEs(monitorBaseInfo, concentration, direction1, pitch1, ObjectUtil.isNotEmpty(alarmRule) ? alarmRule.getHigh() : null); insertGasAlarm(monitorBaseInfo, dataGasEs, ObjectUtil.isNotEmpty(alarmRule) ? alarmRule.getHigh() : null); } } catch (Exception e) { logger.error(e.getMessage()); } - } } }); @@ -1447,16 +1446,11 @@ // 消除同一角度已有报警 alarmRecordService.clearByMonitor(dataGas.getMonitorId(), Double.valueOf(dataGas.getDirection()), Double.valueOf(dataGas.getPitch())); // 插入新报警 - AlarmRecord alarmRecord = new AlarmRecord(); - alarmRecord.setMonitorId(dataGas.getMonitorId()); - alarmRecord.setDeviceCode(dataGas.getDevcode()); - alarmRecord.setAlarmContent("甲烷浓度超限"); - alarmRecord.setAlarmValue(dataGas.getConcentration()); - alarmRecord.setAlarmThresh(threshold); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setAlarmDirection(Double.valueOf(dataGas.getDirection())); - alarmRecord.setAlarmPitch(Double.valueOf(dataGas.getPitch())); - alarmRecord.setAlarmStatus("0"); + AlarmRecord alarmRecord = new AlarmRecord(dataGas.getMonitorId(), + StatusEnum.GAS_ALARM, StatusEnum.GAS_ALARM_CONTENT, dataGas.getConcentration(), + threshold, Double.valueOf(dataGas.getDirection()), Double.valueOf(dataGas.getPitch()), + StatusEnum.ALARM_ON, monitorBaseInfo.getLineNum()); + alarmRecordService.save(alarmRecord); //推送前端 JSONObject msg = new JSONObject(); @@ -1517,16 +1511,10 @@ // 消除同一角度已有报警 alarmRecordService.clearByMonitor(dataGas.getMonitorId(), Double.valueOf(dataGas.getDirection()), Double.valueOf(dataGas.getPitch())); // 插入新报警 - AlarmRecord alarmRecord = new AlarmRecord(); - alarmRecord.setMonitorId(dataGas.getMonitorId()); - alarmRecord.setDeviceCode(dataGas.getDevcode()); - alarmRecord.setAlarmContent("甲烷浓度超限"); - alarmRecord.setAlarmValue(dataGas.getConcentration()); - alarmRecord.setAlarmThresh(threshold); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setAlarmDirection(Double.valueOf(dataGas.getDirection())); - alarmRecord.setAlarmPitch(Double.valueOf(dataGas.getPitch())); - alarmRecord.setAlarmStatus("0"); + AlarmRecord alarmRecord = new AlarmRecord(dataGas.getMonitorId(), + StatusEnum.GAS_ALARM, StatusEnum.GAS_ALARM_CONTENT, dataGas.getConcentration(), + threshold, Double.valueOf(dataGas.getDirection()), Double.valueOf(dataGas.getPitch()), + StatusEnum.ALARM_ON, monitorBaseInfo.getLineNum()); alarmRecordService.save(alarmRecord); //推送前端 JSONObject msg = new JSONObject(); @@ -1572,7 +1560,6 @@ } } - /** * 查询云台预置点(从设备sdk查询) */ @@ -1778,7 +1765,7 @@ if (ObjectUtil.isNotEmpty(deviceInfo)) { BusMonipoiInfo monipoiInfo = monipoiInfoService.selectByDeviceIp(deviceInfo.getDeviceIp()); if (ObjectUtil.isNotEmpty(monipoiInfo)) { - return CommDoorUtil.restart(monipoiInfo.getDoorIp(),monipoiInfo.getDoorSn()); + return CommDoorUtil.restart(monipoiInfo.getDoorIp(), monipoiInfo.getDoorSn()); } } return false; diff --git a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java index d372121..02507e5 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -15,4 +15,11 @@ String DEVICE_STATUS = "deviceStatus"; //报警类型 String DEVICE_TYPE = "deviceType"; + + //任务开始 + String START_TASK = "startPatrolTask"; + + //任务结束 + String STOP_TASK = "endPatrolTask"; + } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java index c9068b7..e3d4888 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/StatusEnum.java @@ -11,5 +11,15 @@ //任务关闭 String STATUS_CLOSE = "0"; + //浓度超限 + String GAS_ALARM = "0"; + //燃气报警内容 + String GAS_ALARM_CONTENT = "浓度超限"; + //发现烟雾火焰 + String SMOKE_ALARM = "2"; + //报警中 + String ALARM_ON = "0"; + //已消警 + String ALARM_CLOSE = "1"; } diff --git a/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java new file mode 100644 index 0000000..788dfa9 --- /dev/null +++ b/casic-common/src/main/java/com/casic/missiles/es/DateUtils.java @@ -0,0 +1,39 @@ +package com.casic.missiles.es; + +import java.util.Calendar; +import java.util.Date; + +public class DateUtils { + + /** + * 判断时间是否在时间段内 + * + * @param nowTime + * @param beginTime + * @param endTime + * @return + */ + public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) { + + if (nowTime.getTime() == beginTime.getTime() + || nowTime.getTime() == endTime.getTime()) { + return true; + } + + Calendar date = Calendar.getInstance(); + date.setTime(nowTime); + + Calendar begin = Calendar.getInstance(); + begin.setTime(beginTime); + + Calendar end = Calendar.getInstance(); + end.setTime(endTime); + + if (date.after(begin) && date.before(end)) { + return true; + } else { + return false; + } + } + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java index b77e0a7..fba26da 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRuleController.java @@ -113,5 +113,4 @@ }); return alarmRuleService.configMonitor(alarmRule); } - } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java index cbb235e..b5db367 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -9,6 +9,7 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import org.springframework.beans.factory.annotation.Autowired; @@ -62,7 +63,8 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("新增失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("新增失败"); } @@ -75,20 +77,21 @@ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); + return busPlanService.removeById(idDTO.getId()) ? + ResponseData.success() : ResponseData.error("删除失败"); } -// /** -// * 任务启用或停止 -// */ -// @RequestMapping(value = "/delete") -// @ResponseBody -// public Object delete(@RequestBody @Valid IdDTO idDTO) { -// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { -// throw new BusinessException(BusinessExceptionEnum.ID_NULL); -// }); -// return busPlanService.removeById(idDTO.getId()) ? ResponseData.success() : ResponseData.error("删除失败"); -// } + /** + * 任务启用或停止 + */ + @RequestMapping(value = "/startOrStop") + @ResponseBody + public Object startOrStop(@RequestBody @Valid PlanRequest planRequest) { + Assert.isFalse(Objects.isNull(planRequest.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.startOrStop(planRequest) ? ResponseData.success() : ResponseData.error("删除失败"); + } /** @@ -100,7 +103,8 @@ Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? ResponseData.success() : ResponseData.error("更新失败"); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..6f22668 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..f435409 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,121 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.Date; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 全局变量,用于计划任务设置 + */ +@Component +public class TaskCommom { + + public static volatile List taskCommonList; + + @PostConstruct + public void init() { + taskCommonList = new ArrayList<>(); + System.out.println("init task common list"); + } + + + public static synchronized void addOrUpdateTaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + if (ObjectUtil.isEmpty(taskInfoList)) { + taskCommonList.add(new TaskInfo(jobName, jobId, monitorId, status, taskTime)); + } else { + taskInfoList.forEach(taskInfo -> { + if (ObjectUtil.isNotEmpty(status)) { + taskInfo.setStatus(status); + } + if (ObjectUtil.isNotEmpty(taskTime)) { + taskInfo.setTaskTime(taskTime); + } + }); + } + } + + public static synchronized void deleteTaskInfos(String jobName) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getJobName(), jobName)).collect(Collectors.toList()); + taskCommonList.removeAll(taskInfoList); + } + + + public static boolean isOnTaskInfo(Long monitorId, Date startTime, Date endTime) { + + List taskInfoList = taskCommonList.stream(). + filter(obj -> Objects.equals(obj.getMonitorId(), monitorId)).collect(Collectors.toList()); + for (TaskInfo taskInfo : taskInfoList) { + if (ObjectUtil.isNotEmpty(taskInfo.getTaskTime())) { + if (DateUtils.belongCalendar(taskInfo.getTaskTime(), startTime, endTime)) + return true; + } + } + return false; + } + + +// public static synchronized DeviceInfo selectByDeviceIp(String deviceIp){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->deviceIp.equals(item.getDeviceIp())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByUserId(Long userId){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream() +// .filter(item-> userId.equals(item.getUserId())) +// .collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectBySerialHandle(Long serialHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->serialHandle.equals(item.getSerialHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } +// +// public static synchronized DeviceInfo selectByRealHandle(Long realHandle){ +// if(ObjectUtil.isEmpty(deviceCommonList)){ +// return null; +// } +// List filter = deviceCommonList.stream().filter(item->realHandle.equals(item.getRealHandle())).collect(Collectors.toList()); +// if(ObjectUtil.isNotEmpty(filter)){ +// return filter.get(0); +// }else { +// return null; +// } +// } + + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system.job; + +import lombok.Data; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Component +@Data +public class TaskInfo { + private String jobName; + private Long jobId; + private Long monitorId; + private String status; + private Date taskTime; + + public TaskInfo() { + } + + public TaskInfo(String jobName, Long jobId, Long monitorId, String status, Date taskTime) { + this.jobName = jobName; + this.jobId = jobId; + this.monitorId = monitorId; + this.status = status; + this.taskTime = taskTime; + } +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java index 5456048..70472d5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/model/AlarmRecord.java @@ -135,26 +135,49 @@ private String lineName; + public AlarmRecord() { + } + + public AlarmRecord(Long monitorId, + String alarmType, + String alarmContent, + Double alarmValue, + Double alarmThresh, + Double alarmDirection, + Double alarmPitch, + String alarmStatus, + Integer lineNum) { + this.monitorId = monitorId; + this.alarmType = alarmType; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmThresh = alarmThresh; + this.alarmDirection = alarmDirection; + this.alarmPitch = alarmPitch; + this.alarmStatus = alarmStatus; + this.lineNum = lineNum; + } + @Override public String toString() { return "AlarmRecord{" + - "id=" + id + - ", monitorId=" + monitorId + - ", deviceCode=" + deviceCode + - ", alarmType=" + alarmType + - ", alarmContent=" + alarmContent + - ", alarmValue=" + alarmValue + - ", alarmThresh=" + alarmThresh + - ", alarmDirection=" + alarmDirection + - ", alarmPitch=" + alarmPitch + - ", alarmTime=" + alarmTime + - ", alarmStatus=" + alarmStatus + - ", cancelTime=" + cancelTime + - ", cancelUser=" + cancelUser + - ", resumeTime=" + resumeTime + - ", lineNum=" + lineNum + - ", serialNum=" + serialNum + - ", ts=" + ts + - "}"; + "id=" + id + + ", monitorId=" + monitorId + + ", deviceCode=" + deviceCode + + ", alarmType=" + alarmType + + ", alarmContent=" + alarmContent + + ", alarmValue=" + alarmValue + + ", alarmThresh=" + alarmThresh + + ", alarmDirection=" + alarmDirection + + ", alarmPitch=" + alarmPitch + + ", alarmTime=" + alarmTime + + ", alarmStatus=" + alarmStatus + + ", cancelTime=" + cancelTime + + ", cancelUser=" + cancelUser + + ", resumeTime=" + resumeTime + + ", lineNum=" + lineNum + + ", serialNum=" + serialNum + + ", ts=" + ts + + "}"; } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java index aed7813..9b56f87 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.system.service; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.model.BusPlan; import com.baomidou.mybatisplus.extension.service.IService; @@ -15,4 +16,6 @@ boolean saveOrUpdateBusPlan(BusPlan busPlan); + boolean startOrStop(PlanRequest planRequest); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java index a46b298..8351d2c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java @@ -3,10 +3,13 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.enums.StatusEnum; import com.casic.missiles.modular.system.dao.BusPlanMapper; +import com.casic.missiles.modular.system.dto.PlanRequest; import com.casic.missiles.modular.system.job.StartTaskJob; import com.casic.missiles.modular.system.job.StopTaskJob; +import com.casic.missiles.modular.system.job.TaskCommom; import com.casic.missiles.modular.system.model.BusPlan; import com.casic.missiles.modular.system.service.IBusPlanService; import com.casic.missiles.quartz.service.IQuartzManager; @@ -39,23 +42,64 @@ if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { //到时间开启 if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate()+" "+busPlan.getBeginTime()); - String jobName = "startPatrolTask" + busPlan.getId(); - Map map = new HashMap<>(); - map.put("jobId", busPlan.getId()); - quartzManager.addJob(jobName, StartTaskJob.class, startTaskTime, map); + Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime()); + startTask(startTaskTime, StartTaskJob.class, DictEnum.START_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); } //到时间关闭 if (ObjectUtil.isNotEmpty(busPlan.getEndDate()) && ObjectUtil.isNotEmpty(busPlan.getEndTime())) { - Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate()+" "+busPlan.getEndTime()); - String jobName = "endPatrolTask" + busPlan.getId(); - Map map = new HashMap<>(); - map.put("jobId", busPlan.getId()); - quartzManager.addJob(jobName, StopTaskJob.class, endTaskTime, map); + Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime()); + startTask(endTaskTime, StopTaskJob.class, DictEnum.STOP_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); } } return true; } return false; } + + + @Override + public boolean startOrStop(PlanRequest planRequest) { + BusPlan busPlan = this.getById(planRequest.getId()); + //启动任务 + switch (planRequest.getFlag()) { + case StatusEnum.STATUS_OPEN: + Date startTaskTime = DateUtil.parseDateTime(busPlan.getBeginDate() + " " + busPlan.getBeginTime()); + Date endTaskTime = DateUtil.parseDateTime(busPlan.getEndDate() + " " + busPlan.getEndTime()); + if(ObjectUtil.isAllNotEmpty(startTaskTime,endTaskTime)){ + //在此期间若没有任务执行 + if(!TaskCommom.isOnTaskInfo(busPlan.getMonitorId(),startTaskTime,endTaskTime)){ + startTask(startTaskTime, StartTaskJob.class, DictEnum.START_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); + } + } + break; + case StatusEnum.STATUS_CLOSE: +// iPTZCommand = HCNetSDK.TILT_DOWN; + break; + default: + break; + } + if (StatusEnum.STATUS_OPEN.equals(planRequest.getFlag())) { + + + } + return false; + } + + //开始job + public void startTask(Date taskTime, Class cls, String jobName, String jobId, Long monitorId) { + Map map = new HashMap<>(); + map.put("jobId", jobId); + quartzManager.addJob(jobName, cls, taskTime, map); + TaskCommom.addOrUpdateTaskInfo(jobName, Long.valueOf(jobId), monitorId, StatusEnum.STATUS_OPEN, taskTime); + } + + //删除job + public void deleteTask(String jobName) { + quartzManager.removeJob(jobName); + TaskCommom.deleteTaskInfos(jobName); + } + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java index da03e4f..2d7ab31 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/TaskCommon.java @@ -20,7 +20,7 @@ @PostConstruct public void init(){ -// threadMap = new HashMap<>(); + threadMap = new HashMap<>(); threadResertMap = new HashMap<>(); } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/HCNetServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/HCNetServiceImpl.java index 30a88ca..ec3f887 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/HCNetServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/HCNetServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.enums.StatusEnum; import com.casic.missiles.es.DataGasEs; import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.*; @@ -484,7 +485,7 @@ BusMonipoiInfo monipoiInfo = monipoiInfoService.selectByDeviceIp(deviceIp); if (ObjectUtil.isNotEmpty(monipoiInfo)) { - return CommDoorUtil.interruptStart(monipoiInfo.getDoorIp(),monipoiInfo.getDoorSn()); + return CommDoorUtil.interruptStart(monipoiInfo.getDoorIp(), monipoiInfo.getDoorSn()); } return false; } @@ -1000,11 +1001,11 @@ Long serialHandle = serialHandle(Long.valueOf(userId)); DeviceInfo deviceInfo = DeviceCommom.selectByUserId((long) userId); MonitorBaseInfo baseInfo = monipoiInfoService.selectInfoByDeviceIp(deviceInfo.getDeviceIp()); - + //设置当前巡航线,用于存数据时在哪个航线上 + if (ObjectUtil.isNotEmpty(baseInfo)) + baseInfo.setLineNum(cruiseRoute); switch (command) { case "start": -// res = hCNetSDK.NET_DVR_PTZCruise(new NativeLong(realHandle), HCNetSDK.RUN_SEQ, (byte) cruiseRoute.intValue(),(byte)0,(byte)0); - //廊坊新指令设备 if (null != baseInfo && DeviceTypeEnum.XST_TYPE.getCode().equals(baseInfo.getType())) { try { @@ -1056,7 +1057,10 @@ MonitorBaseInfo baseInfo = monipoiInfoService.selectInfoByDeviceIp(deviceInfo.getDeviceIp()); monipoiInfoService.updateBusMonipoiInfo(deviceInfo.getDeviceIp(), cruiseRoute); //巡航线程 - AutoCruiseTask task = new AutoCruiseTask(obserpoiInfos, deviceInfo.getDeviceIp(), deviceInfo.getUserId(), this, webSocket, ObjectUtil.isNotEmpty(baseInfo) && DeviceTypeEnum.SELF_TYPE.getCode().equals(baseInfo.getType()) ? DeviceTypeEnum.SELF_TYPE.getCode() : DeviceTypeEnum.ARD_TYPE.getCode(), alarmRecordService, interval, ObjectUtil.isNotEmpty(baseInfo) ? baseInfo.getMonitorName() : ""); + AutoCruiseTask task = new AutoCruiseTask(obserpoiInfos, deviceInfo.getDeviceIp(), deviceInfo.getUserId(), this, webSocket, + ObjectUtil.isNotEmpty(baseInfo) && DeviceTypeEnum.SELF_TYPE.getCode().equals(baseInfo.getType()) ? + DeviceTypeEnum.SELF_TYPE.getCode() : DeviceTypeEnum.ARD_TYPE.getCode(), alarmRecordService, + interval, ObjectUtil.isNotEmpty(baseInfo) ? baseInfo.getMonitorName() : ""); Thread cruiseThread = new Thread(task); TaskCommon.threadMap.put(deviceInfo.getUserId(), task); cruiseThread.start(); @@ -1363,26 +1367,21 @@ threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override public void run() { - MonitorBaseInfo monitorBaseInfo = monipoiInfoService.selectInfoByDeviceIp(deviceInfo.getDeviceIp()); if (ObjectUtil.isNotEmpty(monitorBaseInfo)) { try { - //自带巡检设备 if (DeviceTypeEnum.XST_TYPE.getCode().equals(monitorBaseInfo.getType())) { DataGasEs dataGasEs = insertDataGasEs(monitorBaseInfo, concentration, direction1, pitch1, alarmThreshold); insertGasAlarmProduct(monitorBaseInfo, dataGasEs, alarmThreshold, 1 == alarmFlag ? true : false); } else { - AlarmRule alarmRule = alarmRuleService.selectByMonitor(monitorBaseInfo.getMonitorId()); -// DataGas dataGas = insertDataGas(monitorBaseInfo,concentration,direction,pitch); DataGasEs dataGasEs = insertDataGasEs(monitorBaseInfo, concentration, direction1, pitch1, ObjectUtil.isNotEmpty(alarmRule) ? alarmRule.getHigh() : null); insertGasAlarm(monitorBaseInfo, dataGasEs, ObjectUtil.isNotEmpty(alarmRule) ? alarmRule.getHigh() : null); } } catch (Exception e) { logger.error(e.getMessage()); } - } } }); @@ -1447,16 +1446,11 @@ // 消除同一角度已有报警 alarmRecordService.clearByMonitor(dataGas.getMonitorId(), Double.valueOf(dataGas.getDirection()), Double.valueOf(dataGas.getPitch())); // 插入新报警 - AlarmRecord alarmRecord = new AlarmRecord(); - alarmRecord.setMonitorId(dataGas.getMonitorId()); - alarmRecord.setDeviceCode(dataGas.getDevcode()); - alarmRecord.setAlarmContent("甲烷浓度超限"); - alarmRecord.setAlarmValue(dataGas.getConcentration()); - alarmRecord.setAlarmThresh(threshold); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setAlarmDirection(Double.valueOf(dataGas.getDirection())); - alarmRecord.setAlarmPitch(Double.valueOf(dataGas.getPitch())); - alarmRecord.setAlarmStatus("0"); + AlarmRecord alarmRecord = new AlarmRecord(dataGas.getMonitorId(), + StatusEnum.GAS_ALARM, StatusEnum.GAS_ALARM_CONTENT, dataGas.getConcentration(), + threshold, Double.valueOf(dataGas.getDirection()), Double.valueOf(dataGas.getPitch()), + StatusEnum.ALARM_ON, monitorBaseInfo.getLineNum()); + alarmRecordService.save(alarmRecord); //推送前端 JSONObject msg = new JSONObject(); @@ -1517,16 +1511,10 @@ // 消除同一角度已有报警 alarmRecordService.clearByMonitor(dataGas.getMonitorId(), Double.valueOf(dataGas.getDirection()), Double.valueOf(dataGas.getPitch())); // 插入新报警 - AlarmRecord alarmRecord = new AlarmRecord(); - alarmRecord.setMonitorId(dataGas.getMonitorId()); - alarmRecord.setDeviceCode(dataGas.getDevcode()); - alarmRecord.setAlarmContent("甲烷浓度超限"); - alarmRecord.setAlarmValue(dataGas.getConcentration()); - alarmRecord.setAlarmThresh(threshold); - alarmRecord.setAlarmTime(new Date()); - alarmRecord.setAlarmDirection(Double.valueOf(dataGas.getDirection())); - alarmRecord.setAlarmPitch(Double.valueOf(dataGas.getPitch())); - alarmRecord.setAlarmStatus("0"); + AlarmRecord alarmRecord = new AlarmRecord(dataGas.getMonitorId(), + StatusEnum.GAS_ALARM, StatusEnum.GAS_ALARM_CONTENT, dataGas.getConcentration(), + threshold, Double.valueOf(dataGas.getDirection()), Double.valueOf(dataGas.getPitch()), + StatusEnum.ALARM_ON, monitorBaseInfo.getLineNum()); alarmRecordService.save(alarmRecord); //推送前端 JSONObject msg = new JSONObject(); @@ -1572,7 +1560,6 @@ } } - /** * 查询云台预置点(从设备sdk查询) */ @@ -1778,7 +1765,7 @@ if (ObjectUtil.isNotEmpty(deviceInfo)) { BusMonipoiInfo monipoiInfo = monipoiInfoService.selectByDeviceIp(deviceInfo.getDeviceIp()); if (ObjectUtil.isNotEmpty(monipoiInfo)) { - return CommDoorUtil.restart(monipoiInfo.getDoorIp(),monipoiInfo.getDoorSn()); + return CommDoorUtil.restart(monipoiInfo.getDoorIp(), monipoiInfo.getDoorSn()); } } return false; diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorBaseInfo.java b/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorBaseInfo.java index 17ccbb6..80bfa1c 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorBaseInfo.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorBaseInfo.java @@ -13,4 +13,5 @@ private String monitorName; private String devcode; private String type; + private Integer lineNum; }