diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", ts=" + ts + - "}"; - } -} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - boolean saveOrUpdateBusPlan(BusPlan busPlan); - - boolean startOrStop(PlanRequest planRequest); - -} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..7820758 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + + public PlanRequest() { + } + + public PlanRequest(Long id, String flag) { + this.id = id; + this.flag = flag; + } +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..7820758 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + + public PlanRequest() { + } + + public PlanRequest(Long id, String flag) { + this.id = id; + this.flag = flag; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java new file mode 100644 index 0000000..3aba122 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StartTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); + + @Autowired + private IBusPlanService planService; + + private String jobId; + + + + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + + System.out.println("开始执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + } +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..7820758 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + + public PlanRequest() { + } + + public PlanRequest(Long id, String flag) { + this.id = id; + this.flag = flag; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java new file mode 100644 index 0000000..3aba122 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StartTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); + + @Autowired + private IBusPlanService planService; + + private String jobId; + + + + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + + System.out.println("开始执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java new file mode 100644 index 0000000..8012b03 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StopTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); + + + @Autowired + private IBusPlanService planService; + + private String jobId; + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + System.out.println("停止执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id), StatusEnum.STATUS_COMPLETE); + } +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..7820758 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + + public PlanRequest() { + } + + public PlanRequest(Long id, String flag) { + this.id = id; + this.flag = flag; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java new file mode 100644 index 0000000..3aba122 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StartTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); + + @Autowired + private IBusPlanService planService; + + private String jobId; + + + + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + + System.out.println("开始执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java new file mode 100644 index 0000000..8012b03 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StopTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); + + + @Autowired + private IBusPlanService planService; + + private String jobId; + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + System.out.println("停止执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id), StatusEnum.STATUS_COMPLETE); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..ba82a4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,120 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.ArrayList; +import java.util.Date; +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/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..7820758 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + + public PlanRequest() { + } + + public PlanRequest(Long id, String flag) { + this.id = id; + this.flag = flag; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java new file mode 100644 index 0000000..3aba122 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StartTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); + + @Autowired + private IBusPlanService planService; + + private String jobId; + + + + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + + System.out.println("开始执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java new file mode 100644 index 0000000..8012b03 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StopTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); + + + @Autowired + private IBusPlanService planService; + + private String jobId; + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + System.out.println("停止执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id), StatusEnum.STATUS_COMPLETE); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..ba82a4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,120 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.ArrayList; +import java.util.Date; +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-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-server/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/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..7820758 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + + public PlanRequest() { + } + + public PlanRequest(Long id, String flag) { + this.id = id; + this.flag = flag; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java new file mode 100644 index 0000000..3aba122 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StartTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); + + @Autowired + private IBusPlanService planService; + + private String jobId; + + + + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + + System.out.println("开始执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java new file mode 100644 index 0000000..8012b03 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StopTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); + + + @Autowired + private IBusPlanService planService; + + private String jobId; + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + System.out.println("停止执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id), StatusEnum.STATUS_COMPLETE); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..ba82a4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,120 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.ArrayList; +import java.util.Date; +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-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-server/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-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java new file mode 100644 index 0000000..27a859a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java @@ -0,0 +1,106 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * 任务计划表 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +@Data +@TableName("bus_plan") +public class BusPlan extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId("ID") + private Long id; + /** + * 设备/监控点位ID + */ + @TableField("MONITOR_ID") + private Long monitorId; + /** + * 巡航线序号 + */ + @TableField("LINE_NUM") + private Integer lineNum; + /** + * 任务名称 + */ + @TableField("TASK_NAME") + private String taskName; + /** + * 开始日期 + */ + @TableField("BEGIN_DATE") + private String beginDate; + /** + * 结束日期 + */ + @TableField("END_DATE") + private String endDate; + /** + * 开始时间 + */ + @TableField("BEGIN_TIME") + private String beginTime; + /** + * 结束时间 + */ + @TableField("END_TIME") + private String endTime; + /** + * 任务状态(1:启用,0:停用) + */ + @TableField("STATUS") + private String status; + + /** + * 任务执行状态(2:已完成执行,1:正在执行,0:未执行) + */ + @TableField("STATUS") + private String taskStatus; + /** + * 修改时间 + */ + @TableField("UPDATE_TIME") + private Date updateTime; + /** + * 时间 + */ + @TableField("TS") + private Date ts; + + + + + @Override + public String toString() { + return "BusPlan{" + + "id=" + id + + ", monitorId=" + monitorId + + ", lineNum=" + lineNum + + ", taskName=" + taskName + + ", beginDate=" + beginDate + + ", endDate=" + endDate + + ", beginTime=" + beginTime + + ", endTime=" + endTime + + ", status=" + status + + ", updateTime=" + updateTime + + ", ts=" + ts + + "}"; + } +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..7820758 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + + public PlanRequest() { + } + + public PlanRequest(Long id, String flag) { + this.id = id; + this.flag = flag; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java new file mode 100644 index 0000000..3aba122 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StartTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); + + @Autowired + private IBusPlanService planService; + + private String jobId; + + + + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + + System.out.println("开始执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java new file mode 100644 index 0000000..8012b03 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StopTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); + + + @Autowired + private IBusPlanService planService; + + private String jobId; + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + System.out.println("停止执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id), StatusEnum.STATUS_COMPLETE); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..ba82a4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,120 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.ArrayList; +import java.util.Date; +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-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-server/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-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java new file mode 100644 index 0000000..27a859a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java @@ -0,0 +1,106 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * 任务计划表 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +@Data +@TableName("bus_plan") +public class BusPlan extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId("ID") + private Long id; + /** + * 设备/监控点位ID + */ + @TableField("MONITOR_ID") + private Long monitorId; + /** + * 巡航线序号 + */ + @TableField("LINE_NUM") + private Integer lineNum; + /** + * 任务名称 + */ + @TableField("TASK_NAME") + private String taskName; + /** + * 开始日期 + */ + @TableField("BEGIN_DATE") + private String beginDate; + /** + * 结束日期 + */ + @TableField("END_DATE") + private String endDate; + /** + * 开始时间 + */ + @TableField("BEGIN_TIME") + private String beginTime; + /** + * 结束时间 + */ + @TableField("END_TIME") + private String endTime; + /** + * 任务状态(1:启用,0:停用) + */ + @TableField("STATUS") + private String status; + + /** + * 任务执行状态(2:已完成执行,1:正在执行,0:未执行) + */ + @TableField("STATUS") + private String taskStatus; + /** + * 修改时间 + */ + @TableField("UPDATE_TIME") + private Date updateTime; + /** + * 时间 + */ + @TableField("TS") + private Date ts; + + + + + @Override + public String toString() { + return "BusPlan{" + + "id=" + id + + ", monitorId=" + monitorId + + ", lineNum=" + lineNum + + ", taskName=" + taskName + + ", beginDate=" + beginDate + + ", endDate=" + endDate + + ", beginTime=" + beginTime + + ", endTime=" + endTime + + ", status=" + status + + ", updateTime=" + updateTime + + ", ts=" + ts + + "}"; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java new file mode 100644 index 0000000..6877115 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.PlanRequest; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 服务类 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface IBusPlanService extends IService { + + boolean saveOrUpdateBusPlan(BusPlan busPlan); + + boolean startOrStop(PlanRequest planRequest); + + boolean updateStatus(Long id,String status); + +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..7820758 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + + public PlanRequest() { + } + + public PlanRequest(Long id, String flag) { + this.id = id; + this.flag = flag; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java new file mode 100644 index 0000000..3aba122 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StartTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); + + @Autowired + private IBusPlanService planService; + + private String jobId; + + + + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + + System.out.println("开始执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java new file mode 100644 index 0000000..8012b03 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StopTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); + + + @Autowired + private IBusPlanService planService; + + private String jobId; + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + System.out.println("停止执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id), StatusEnum.STATUS_COMPLETE); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..ba82a4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,120 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.ArrayList; +import java.util.Date; +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-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-server/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-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java new file mode 100644 index 0000000..27a859a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java @@ -0,0 +1,106 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * 任务计划表 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +@Data +@TableName("bus_plan") +public class BusPlan extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId("ID") + private Long id; + /** + * 设备/监控点位ID + */ + @TableField("MONITOR_ID") + private Long monitorId; + /** + * 巡航线序号 + */ + @TableField("LINE_NUM") + private Integer lineNum; + /** + * 任务名称 + */ + @TableField("TASK_NAME") + private String taskName; + /** + * 开始日期 + */ + @TableField("BEGIN_DATE") + private String beginDate; + /** + * 结束日期 + */ + @TableField("END_DATE") + private String endDate; + /** + * 开始时间 + */ + @TableField("BEGIN_TIME") + private String beginTime; + /** + * 结束时间 + */ + @TableField("END_TIME") + private String endTime; + /** + * 任务状态(1:启用,0:停用) + */ + @TableField("STATUS") + private String status; + + /** + * 任务执行状态(2:已完成执行,1:正在执行,0:未执行) + */ + @TableField("STATUS") + private String taskStatus; + /** + * 修改时间 + */ + @TableField("UPDATE_TIME") + private Date updateTime; + /** + * 时间 + */ + @TableField("TS") + private Date ts; + + + + + @Override + public String toString() { + return "BusPlan{" + + "id=" + id + + ", monitorId=" + monitorId + + ", lineNum=" + lineNum + + ", taskName=" + taskName + + ", beginDate=" + beginDate + + ", endDate=" + endDate + + ", beginTime=" + beginTime + + ", endTime=" + endTime + + ", status=" + status + + ", updateTime=" + updateTime + + ", ts=" + ts + + "}"; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java new file mode 100644 index 0000000..6877115 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.PlanRequest; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 服务类 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface IBusPlanService extends IService { + + boolean saveOrUpdateBusPlan(BusPlan busPlan); + + boolean startOrStop(PlanRequest planRequest); + + boolean updateStatus(Long id,String status); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java index 74e4c77..3fc1e49 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java @@ -52,4 +52,6 @@ boolean specialControl(Integer userId, String command,Integer value,Integer speed,Integer stopTime,Integer alarmValue); boolean interruptStart(String deviceIp) ; + + Long getUserIdByIp(String deviceIp); } diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..7820758 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + + public PlanRequest() { + } + + public PlanRequest(Long id, String flag) { + this.id = id; + this.flag = flag; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java new file mode 100644 index 0000000..3aba122 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StartTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); + + @Autowired + private IBusPlanService planService; + + private String jobId; + + + + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + + System.out.println("开始执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java new file mode 100644 index 0000000..8012b03 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StopTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); + + + @Autowired + private IBusPlanService planService; + + private String jobId; + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + System.out.println("停止执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id), StatusEnum.STATUS_COMPLETE); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..ba82a4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,120 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.ArrayList; +import java.util.Date; +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-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-server/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-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java new file mode 100644 index 0000000..27a859a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java @@ -0,0 +1,106 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * 任务计划表 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +@Data +@TableName("bus_plan") +public class BusPlan extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId("ID") + private Long id; + /** + * 设备/监控点位ID + */ + @TableField("MONITOR_ID") + private Long monitorId; + /** + * 巡航线序号 + */ + @TableField("LINE_NUM") + private Integer lineNum; + /** + * 任务名称 + */ + @TableField("TASK_NAME") + private String taskName; + /** + * 开始日期 + */ + @TableField("BEGIN_DATE") + private String beginDate; + /** + * 结束日期 + */ + @TableField("END_DATE") + private String endDate; + /** + * 开始时间 + */ + @TableField("BEGIN_TIME") + private String beginTime; + /** + * 结束时间 + */ + @TableField("END_TIME") + private String endTime; + /** + * 任务状态(1:启用,0:停用) + */ + @TableField("STATUS") + private String status; + + /** + * 任务执行状态(2:已完成执行,1:正在执行,0:未执行) + */ + @TableField("STATUS") + private String taskStatus; + /** + * 修改时间 + */ + @TableField("UPDATE_TIME") + private Date updateTime; + /** + * 时间 + */ + @TableField("TS") + private Date ts; + + + + + @Override + public String toString() { + return "BusPlan{" + + "id=" + id + + ", monitorId=" + monitorId + + ", lineNum=" + lineNum + + ", taskName=" + taskName + + ", beginDate=" + beginDate + + ", endDate=" + endDate + + ", beginTime=" + beginTime + + ", endTime=" + endTime + + ", status=" + status + + ", updateTime=" + updateTime + + ", ts=" + ts + + "}"; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java new file mode 100644 index 0000000..6877115 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.PlanRequest; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 服务类 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface IBusPlanService extends IService { + + boolean saveOrUpdateBusPlan(BusPlan busPlan); + + boolean startOrStop(PlanRequest planRequest); + + boolean updateStatus(Long id,String status); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java index 74e4c77..3fc1e49 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java @@ -52,4 +52,6 @@ boolean specialControl(Integer userId, String command,Integer value,Integer speed,Integer stopTime,Integer alarmValue); boolean interruptStart(String deviceIp) ; + + Long getUserIdByIp(String deviceIp); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java new file mode 100644 index 0000000..2ac80d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java @@ -0,0 +1,149 @@ +package com.casic.missiles.modular.system.service.impl; + +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.BusinessExceptionEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.exception.BusinessException; +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.BusMonipoiInfo; +import com.casic.missiles.modular.system.model.BusPlan; +import com.casic.missiles.modular.system.service.IBusMonipoiInfoService; +import com.casic.missiles.modular.system.service.IBusPlanService; +import com.casic.missiles.modular.system.service.IHCNetService; +import com.casic.missiles.quartz.service.IQuartzManager; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + *

+ * 任务计划表 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +@Service +public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { + + @Autowired + private IQuartzManager quartzManager; + @Autowired + private IHCNetService ihcNetService; + + @Autowired + private IBusMonipoiInfoService monipoiInfoService; + + @Transactional + @Override + public boolean saveOrUpdateBusPlan(BusPlan busPlan) { + //先保存数据 + if (this.saveOrUpdate(busPlan)) { + //toDo:若已启动任务,则创建启动job任务 缺消息提示 、和修改时间的 + if(StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())){ + startOrStop(new PlanRequest(busPlan.getId(),StatusEnum.STATUS_OPEN)); + } + } + return false; + } + + + @Override + public boolean startOrStop(PlanRequest planRequest) { + + boolean flag = false; + 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()); + startTask(endTaskTime, StopTaskJob.class, DictEnum.STOP_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); + flag = true; + }else { + throw new BusinessException(BusinessExceptionEnum.RUN_TASK_FAILED); + } + } + break; + //停止任务 + case StatusEnum.STATUS_CLOSE: + deleteTask(DictEnum.START_TASK + busPlan.getId(), busPlan); + deleteTask(DictEnum.STOP_TASK + busPlan.getId(), busPlan); + flag = true; + break; + default: + break; + } + return flag; + } + + + @Override + public boolean updateStatus(Long id, String status) { + BusPlan busPlan = this.getById(id); + if (ObjectUtil.isNotEmpty(busPlan)) { + busPlan.setTaskStatus(status); + this.updateById(busPlan); + //开启巡航 或者停止巡航 + BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId()); + if (null != baseInfo) { + if (StatusEnum.STATUS_OPEN.equals(status)) { + cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum()); + } else if (StatusEnum.STATUS_COMPLETE.equals(status)) { + cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum()); + } + } + return true; + } + 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, BusPlan busPlan) { + quartzManager.removeJob(jobName); + TaskCommom.deleteTaskInfos(jobName); + //若有任务正在执行,则取消 + if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) { + BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId()); + if (null != baseInfo) { + cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum()); + } + } + } + + + public void cruise(String ip, String command, Integer lineNum) { + Long userId = ihcNetService.getUserIdByIp(ip); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + throw new BusinessException(BusinessExceptionEnum.DEVICE_REGISTER_FAILED); + } + //开启或停止巡航 + ihcNetService.cruise(userId.intValue(), command, lineNum, null); + } + +} diff --git a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index e1dfbe8..3cd69f1 100644 --- a/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -8,7 +8,9 @@ public enum BusinessExceptionEnum implements AbstractBaseExceptionEnum { ID_NULL(2400, "主键不能为空"), - HANDLE_FAILED(500, "操作失败"); + HANDLE_FAILED(500, "操作失败"), + DEVICE_REGISTER_FAILED(2500, "设备注册失败"), + RUN_TASK_FAILED(2501, "此段时间有任务正在执行"); private Integer code; private String message; 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 e3d4888..5899602 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,6 +11,9 @@ //任务关闭 String STATUS_CLOSE = "0"; + //任务已完成 + String STATUS_COMPLETE = "2"; + //浓度超限 String GAS_ALARM = "0"; 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 deleted file mode 100644 index b5db367..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.casic.missiles.modular.system.controller; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.dto.IdDTO; -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; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.validation.Valid; -import java.util.Objects; - -/** - * 任务计划控制器 - * - * @author dev - * @Date 2023-04-18 15:44:40 - */ -@Controller -@RequestMapping("/task") -public class BusPlanController extends ExportController { - - - @Autowired - private IBusPlanService busPlanService; - - - /** - * 获取任务计划列表 - */ - @RequestMapping(value = "/list") - @ResponseBody - public Object list(String condition) { - return busPlanService.list(null); - } - - /** - * 获取任务计划分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage(String condition) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = new QueryWrapper<>(); - page = busPlanService.page(page, query); - return super.packForBT(page); - } - - /** - * 新增任务计划 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add(@RequestBody @Valid BusPlan busPlan) { - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - 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("删除失败"); - } - - - /** - * 修改任务计划 - */ - @RequestMapping(value = "/edit") - @ResponseBody - public Object edit(@RequestBody @Valid BusPlan busPlan) { - Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { - throw new BusinessException(BusinessExceptionEnum.ID_NULL); - }); - return busPlanService.saveOrUpdateBusPlan(busPlan) ? - ResponseData.success() : ResponseData.error("更新失败"); - } - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java deleted file mode 100644 index 4e2cc2b..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.casic.missiles.modular.system.dao; - -import com.casic.missiles.modular.system.model.BusPlan; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 任务计划表 Mapper 接口 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface BusPlanMapper extends BaseMapper { - -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml deleted file mode 100644 index 7f8c0a6..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts - - - 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 deleted file mode 100644 index 6f22668..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -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/StartTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java deleted file mode 100644 index fc97688..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StartTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - //toDo:开启巡航 - - System.out.println("开始执行了------"); - } -} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java deleted file mode 100644 index edf35e0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.casic.missiles.modular.system.job; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.quartz.QuartzJobBean; -import org.springframework.stereotype.Component; - -import java.text.SimpleDateFormat; -import java.util.Date; - -@Component -public class StopTaskJob extends QuartzJobBean { - - private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); - - private String jobId; - - - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - @Override - public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { - - //业务逻辑 - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); - getJobDelay(jobId); - } - - private void getJobDelay(String id) { - - //toDo:关闭巡航 - - System.out.println("停止执行了------"); - } -} 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 deleted file mode 100644 index f435409..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java +++ /dev/null @@ -1,121 +0,0 @@ -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 deleted file mode 100644 index d4084a0..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -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/BusPlan.java b/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java deleted file mode 100644 index c0cb419..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.missiles.modular.system.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.activerecord.Model; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 任务计划表 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Data -@TableName("bus_plan") -public class BusPlan extends Model { - - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - @TableId("ID") - private Long id; - /** - * 设备/监控点位ID - */ - @TableField("MONITOR_ID") - private Long monitorId; - /** - * 巡航线序号 - */ - @TableField("LINE_NUM") - private Integer lineNum; - /** - * 任务名称 - */ - @TableField("TASK_NAME") - private String taskName; - /** - * 开始日期 - */ - @TableField("BEGIN_DATE") - private String beginDate; - /** - * 结束日期 - */ - @TableField("END_DATE") - private String endDate; - /** - * 开始时间 - */ - @TableField("BEGIN_TIME") - private String beginTime; - /** - * 结束时间 - */ - @TableField("END_TIME") - private String endTime; - /** - * 任务状态(1:启用,0:停用) - */ - @TableField("STATUS") - private String status; - /** - * 修改时间 - */ - @TableField("UPDATE_TIME") - private Date updateTime; - /** - * 时间 - */ - @TableField("TS") - private Date ts; - - - - - @Override - public String toString() { - return "BusPlan{" + - "id=" + id + - ", monitorId=" + monitorId + - ", lineNum=" + lineNum + - ", taskName=" + taskName + - ", beginDate=" + beginDate + - ", endDate=" + endDate + - ", beginTime=" + beginTime + - ", endTime=" + endTime + - ", status=" + status + - ", updateTime=" + updateTime + - ", 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 deleted file mode 100644 index 9b56f87..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java +++ /dev/null @@ -1,21 +0,0 @@ -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; - -/** - *

- * 任务计划表 服务类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -public interface IBusPlanService extends IService { - - 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 deleted file mode 100644 index 8351d2c..0000000 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.casic.missiles.modular.system.service.impl; - -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; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - *

- * 任务计划表 服务实现类 - *

- * - * @author stylefeng123 - * @since 2023-04-18 - */ -@Service -public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { - - @Autowired - private IQuartzManager quartzManager; - - @Override - public boolean saveOrUpdateBusPlan(BusPlan busPlan) { - //先保存数据 - if (this.saveOrUpdate(busPlan)) { - //若已启动任务,则创建启动job任务 - if (StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())) { - //到时间开启 - if (ObjectUtil.isNotEmpty(busPlan.getBeginDate()) && ObjectUtil.isNotEmpty(busPlan.getBeginTime())) { - 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()); - 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/pom.xml b/casic-server/pom.xml index 8c68166..6bb4dbf 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -15,6 +15,7 @@ casic-server casic 的数据采集相关模块 + @@ -62,6 +63,20 @@ 2.0.0 compile + + + com.casic + casic-common + 2.0.0 + compile + + + com.casic + casic-quartz + 2.0.0 + compile + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java new file mode 100644 index 0000000..b5db367 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusPlanController.java @@ -0,0 +1,110 @@ +package com.casic.missiles.modular.system.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; +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; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.validation.Valid; +import java.util.Objects; + +/** + * 任务计划控制器 + * + * @author dev + * @Date 2023-04-18 15:44:40 + */ +@Controller +@RequestMapping("/task") +public class BusPlanController extends ExportController { + + + @Autowired + private IBusPlanService busPlanService; + + + /** + * 获取任务计划列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return busPlanService.list(null); + } + + /** + * 获取任务计划分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = PageFactory.defaultPage(); + QueryWrapper query = new QueryWrapper<>(); + page = busPlanService.page(page, query); + return super.packForBT(page); + } + + /** + * 新增任务计划 + */ + @RequestMapping(value = "/add") + @ResponseBody + public Object add(@RequestBody @Valid BusPlan busPlan) { + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + 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("删除失败"); + } + + + /** + * 修改任务计划 + */ + @RequestMapping(value = "/edit") + @ResponseBody + public Object edit(@RequestBody @Valid BusPlan busPlan) { + Assert.isFalse(Objects.isNull(busPlan.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return busPlanService.saveOrUpdateBusPlan(busPlan) ? + ResponseData.success() : ResponseData.error("更新失败"); + } + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java new file mode 100644 index 0000000..5054b0a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusPlanMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface BusPlanMapper extends BaseMapper { + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml new file mode 100644 index 0000000..7f8c0a6 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusPlanMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + ID AS id, MONITOR_ID AS monitorId, LINE_NUM AS lineNum, TASK_NAME AS taskName, BEGIN_DATE AS beginDate, END_DATE AS endDate, BEGIN_TIME AS beginTime, END_TIME AS endTime, STATUS AS status, UPDATE_TIME AS updateTime, TS AS ts + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java new file mode 100644 index 0000000..7820758 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/PlanRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.system.dto; + + +import lombok.Data; + +/** + * @author zt + */ +@Data +public class PlanRequest { + + private Long id; + + //0:停止,1:启动 + private String flag; + + public PlanRequest() { + } + + public PlanRequest(Long id, String flag) { + this.id = id; + this.flag = flag; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java new file mode 100644 index 0000000..3aba122 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StartTaskJob.java @@ -0,0 +1,51 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StartTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StartTaskJob.class); + + @Autowired + private IBusPlanService planService; + + private String jobId; + + + + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + + System.out.println("开始执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id),StatusEnum.STATUS_OPEN); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java new file mode 100644 index 0000000..8012b03 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/StopTaskJob.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.system.job; + +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.modular.system.service.IBusPlanService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.QuartzJobBean; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class StopTaskJob extends QuartzJobBean { + + private static final Logger logger = LoggerFactory.getLogger(StopTaskJob.class); + + + @Autowired + private IBusPlanService planService; + + private String jobId; + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + @Override + public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //业务逻辑 + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + System.out.println("CRON ----> schedule job1 is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + logger.info("CRON ----> getJobDelay is running ... + " + jobId + " ----> " + dateFormat.format(new Date())); + getJobDelay(jobId); + } + + private void getJobDelay(String id) { + + System.out.println("停止执行了------"); + + //更新任务执行状态 + planService.updateStatus(Long.valueOf(id), StatusEnum.STATUS_COMPLETE); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java new file mode 100644 index 0000000..ba82a4a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskCommom.java @@ -0,0 +1,120 @@ +package com.casic.missiles.modular.system.job; + + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.es.DateUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.ArrayList; +import java.util.Date; +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-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/system/job/TaskInfo.java new file mode 100644 index 0000000..d4084a0 --- /dev/null +++ b/casic-server/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-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java new file mode 100644 index 0000000..27a859a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusPlan.java @@ -0,0 +1,106 @@ +package com.casic.missiles.modular.system.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + *

+ * 任务计划表 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +@Data +@TableName("bus_plan") +public class BusPlan extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId("ID") + private Long id; + /** + * 设备/监控点位ID + */ + @TableField("MONITOR_ID") + private Long monitorId; + /** + * 巡航线序号 + */ + @TableField("LINE_NUM") + private Integer lineNum; + /** + * 任务名称 + */ + @TableField("TASK_NAME") + private String taskName; + /** + * 开始日期 + */ + @TableField("BEGIN_DATE") + private String beginDate; + /** + * 结束日期 + */ + @TableField("END_DATE") + private String endDate; + /** + * 开始时间 + */ + @TableField("BEGIN_TIME") + private String beginTime; + /** + * 结束时间 + */ + @TableField("END_TIME") + private String endTime; + /** + * 任务状态(1:启用,0:停用) + */ + @TableField("STATUS") + private String status; + + /** + * 任务执行状态(2:已完成执行,1:正在执行,0:未执行) + */ + @TableField("STATUS") + private String taskStatus; + /** + * 修改时间 + */ + @TableField("UPDATE_TIME") + private Date updateTime; + /** + * 时间 + */ + @TableField("TS") + private Date ts; + + + + + @Override + public String toString() { + return "BusPlan{" + + "id=" + id + + ", monitorId=" + monitorId + + ", lineNum=" + lineNum + + ", taskName=" + taskName + + ", beginDate=" + beginDate + + ", endDate=" + endDate + + ", beginTime=" + beginTime + + ", endTime=" + endTime + + ", status=" + status + + ", updateTime=" + updateTime + + ", ts=" + ts + + "}"; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java new file mode 100644 index 0000000..6877115 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusPlanService.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.PlanRequest; +import com.casic.missiles.modular.system.model.BusPlan; + +/** + *

+ * 任务计划表 服务类 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +public interface IBusPlanService extends IService { + + boolean saveOrUpdateBusPlan(BusPlan busPlan); + + boolean startOrStop(PlanRequest planRequest); + + boolean updateStatus(Long id,String status); + +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java index 74e4c77..3fc1e49 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IHCNetService.java @@ -52,4 +52,6 @@ boolean specialControl(Integer userId, String command,Integer value,Integer speed,Integer stopTime,Integer alarmValue); boolean interruptStart(String deviceIp) ; + + Long getUserIdByIp(String deviceIp); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java new file mode 100644 index 0000000..2ac80d9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusPlanServiceImpl.java @@ -0,0 +1,149 @@ +package com.casic.missiles.modular.system.service.impl; + +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.BusinessExceptionEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.StatusEnum; +import com.casic.missiles.exception.BusinessException; +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.BusMonipoiInfo; +import com.casic.missiles.modular.system.model.BusPlan; +import com.casic.missiles.modular.system.service.IBusMonipoiInfoService; +import com.casic.missiles.modular.system.service.IBusPlanService; +import com.casic.missiles.modular.system.service.IHCNetService; +import com.casic.missiles.quartz.service.IQuartzManager; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + *

+ * 任务计划表 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2023-04-18 + */ +@Service +public class BusPlanServiceImpl extends ServiceImpl implements IBusPlanService { + + @Autowired + private IQuartzManager quartzManager; + @Autowired + private IHCNetService ihcNetService; + + @Autowired + private IBusMonipoiInfoService monipoiInfoService; + + @Transactional + @Override + public boolean saveOrUpdateBusPlan(BusPlan busPlan) { + //先保存数据 + if (this.saveOrUpdate(busPlan)) { + //toDo:若已启动任务,则创建启动job任务 缺消息提示 、和修改时间的 + if(StatusEnum.STATUS_OPEN.equals(busPlan.getStatus())){ + startOrStop(new PlanRequest(busPlan.getId(),StatusEnum.STATUS_OPEN)); + } + } + return false; + } + + + @Override + public boolean startOrStop(PlanRequest planRequest) { + + boolean flag = false; + 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()); + startTask(endTaskTime, StopTaskJob.class, DictEnum.STOP_TASK + busPlan.getId(), + busPlan.getId() + "", busPlan.getMonitorId()); + flag = true; + }else { + throw new BusinessException(BusinessExceptionEnum.RUN_TASK_FAILED); + } + } + break; + //停止任务 + case StatusEnum.STATUS_CLOSE: + deleteTask(DictEnum.START_TASK + busPlan.getId(), busPlan); + deleteTask(DictEnum.STOP_TASK + busPlan.getId(), busPlan); + flag = true; + break; + default: + break; + } + return flag; + } + + + @Override + public boolean updateStatus(Long id, String status) { + BusPlan busPlan = this.getById(id); + if (ObjectUtil.isNotEmpty(busPlan)) { + busPlan.setTaskStatus(status); + this.updateById(busPlan); + //开启巡航 或者停止巡航 + BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId()); + if (null != baseInfo) { + if (StatusEnum.STATUS_OPEN.equals(status)) { + cruise(baseInfo.getDeviceIp(), "start", busPlan.getLineNum()); + } else if (StatusEnum.STATUS_COMPLETE.equals(status)) { + cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum()); + } + } + return true; + } + 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, BusPlan busPlan) { + quartzManager.removeJob(jobName); + TaskCommom.deleteTaskInfos(jobName); + //若有任务正在执行,则取消 + if (StatusEnum.STATUS_OPEN.equals(busPlan.getTaskStatus())) { + BusMonipoiInfo baseInfo = monipoiInfoService.getById(busPlan.getMonitorId()); + if (null != baseInfo) { + cruise(baseInfo.getDeviceIp(), "stop", busPlan.getLineNum()); + } + } + } + + + public void cruise(String ip, String command, Integer lineNum) { + Long userId = ihcNetService.getUserIdByIp(ip); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + throw new BusinessException(BusinessExceptionEnum.DEVICE_REGISTER_FAILED); + } + //开启或停止巡航 + ihcNetService.cruise(userId.intValue(), command, lineNum, null); + } + +} 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 ec3f887..1e46642 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 @@ -1009,6 +1009,9 @@ //廊坊新指令设备 if (null != baseInfo && DeviceTypeEnum.XST_TYPE.getCode().equals(baseInfo.getType())) { try { + //先停止 + sendStopCommand(serialHandle); + Thread.sleep(500); //设置复位周期 autoReset(serialHandle, presetInterval); Thread.sleep(300); @@ -1934,7 +1937,8 @@ return true; } - private Long getUserIdByIp(String deviceIp) { + @Override + public Long getUserIdByIp(String deviceIp) { Long userId = null; DeviceInfo deviceInfo = DeviceCommom.selectByDeviceIp(deviceIp); if (ObjectUtil.isNotEmpty(deviceInfo) && ObjectUtil.isNotEmpty(deviceInfo.getUserId()) && deviceInfo.getUserId() > 0) {