IncidentTaskServiceImpl.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package com.ruoyi.zhdd.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import cn.hutool.json.JSONObject;
  5. import cn.hutool.json.JSONUtil;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  8. import com.ruoyi.common.constant.Constants;
  9. import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
  10. import com.ruoyi.common.core.page.PagePlus;
  11. import com.ruoyi.common.core.page.TableDataInfo;
  12. import com.ruoyi.common.utils.PageUtils;
  13. import com.ruoyi.common.utils.RedisUtils;
  14. import com.ruoyi.zhdd.domain.IncidentTask;
  15. import com.ruoyi.zhdd.domain.IncidentTaskCommand;
  16. import com.ruoyi.zhdd.domain.IncidentTaskPerson;
  17. import com.ruoyi.zhdd.domain.bo.IncidentTaskBo;
  18. import com.ruoyi.zhdd.domain.bo.IncidentTasksBo;
  19. import com.ruoyi.zhdd.domain.vo.IncidentTaskVo;
  20. import com.ruoyi.zhdd.mapper.IncidentTaskMapper;
  21. import com.ruoyi.zhdd.service.IIncidentProcessService;
  22. import com.ruoyi.zhdd.service.IIncidentTaskCommandService;
  23. import com.ruoyi.zhdd.service.IIncidentTaskPersonService;
  24. import com.ruoyi.zhdd.service.IIncidentTaskService;
  25. import lombok.extern.slf4j.Slf4j;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.transaction.annotation.Transactional;
  29. import java.util.Collection;
  30. import java.util.List;
  31. import java.util.Map;
  32. /**
  33. * 事件处置流程Service业务层处理
  34. *
  35. * @author xitong
  36. * @date 2021-09-28
  37. */
  38. @Service
  39. @Slf4j
  40. public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper, IncidentTask, IncidentTaskVo> implements IIncidentTaskService {
  41. @Autowired
  42. private IIncidentTaskPersonService incidentTaskPersonService;
  43. @Autowired
  44. private IIncidentTaskCommandService incidentTaskCommandService;
  45. @Autowired
  46. private IIncidentProcessService incidentProcessService;
  47. @Override
  48. public IncidentTaskVo queryById(String id) {
  49. return getVoById(id);
  50. }
  51. @Override
  52. public TableDataInfo<IncidentTaskVo> queryPageList(IncidentTaskBo bo) {
  53. PagePlus<IncidentTask, IncidentTaskVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
  54. return PageUtils.buildDataInfo(result);
  55. }
  56. @Override
  57. public List<IncidentTaskVo> queryList(IncidentTaskBo bo) {
  58. return listVo(buildQueryWrapper(bo));
  59. }
  60. private LambdaQueryWrapper<IncidentTask> buildQueryWrapper(IncidentTaskBo bo) {
  61. Map<String, Object> params = bo.getParams();
  62. LambdaQueryWrapper<IncidentTask> lqw = Wrappers.lambdaQuery();
  63. lqw.eq(bo.getIncidentId() != null, IncidentTask::getIncidentId, bo.getIncidentId());
  64. return lqw;
  65. }
  66. @Override
  67. @Transactional(rollbackFor = Exception.class)
  68. public Boolean insertByBo(IncidentTasksBo bo) {
  69. // 新增之前删除之前的内容
  70. String insertOrUpdateFlag = "新增";
  71. if (StrUtil.isNotBlank(bo.getId())) {
  72. removeById(bo.getId());
  73. incidentTaskPersonService.remove(Wrappers.<IncidentTaskPerson>lambdaQuery().eq(IncidentTaskPerson::getIncidentTaskId, bo.getId()));
  74. incidentTaskCommandService.remove(Wrappers.<IncidentTaskCommand>lambdaQuery().eq(IncidentTaskCommand::getIncidentTaskId, bo.getId()));
  75. insertOrUpdateFlag = "编辑";
  76. }
  77. IncidentTask add = BeanUtil.toBean(bo, IncidentTask.class);
  78. add.setId(null);
  79. add.setExprJson(JSONUtil.toJsonStr(bo.getMessagePushUsers()));
  80. save(add);
  81. // 新增指令和人员
  82. if (bo.getIncidentTaskCommands() != null) {
  83. for (IncidentTaskCommand incidentTaskCommand : bo.getIncidentTaskCommands()) {
  84. incidentTaskCommand.setId(null);
  85. incidentTaskCommand.setIncidentTaskId(add.getId());
  86. }
  87. }
  88. if (bo.getIncidentTaskPeoples() != null) {
  89. for (IncidentTaskPerson incidentTaskPeople : bo.getIncidentTaskPeoples()) {
  90. incidentTaskPeople.setId(null);
  91. incidentTaskPeople.setIncidentTaskId(add.getId());
  92. }
  93. }
  94. incidentTaskCommandService.saveAll(bo.getIncidentTaskCommands());
  95. incidentTaskPersonService.saveAll(bo.getIncidentTaskPeoples());
  96. // 发送消息
  97. if (bo.isSendFlag()) {
  98. // A:事件接报。B:处置方案
  99. RedisUtils.publish(Constants.NOTICE_PUSH, "B" + add.getId(), msg -> {
  100. log.info("发布应急方案消息 => " + msg);
  101. });
  102. } else {
  103. JSONObject jsonObject = new JSONObject();
  104. jsonObject.set("des", insertOrUpdateFlag + "处置方案:" + bo.getTaskName());
  105. jsonObject.set("incidentId", bo.getIncidentId());
  106. jsonObject.set("incidentStatus", 3);
  107. RedisUtils.publish(Constants.PROCESS_RECORD, jsonObject, msg -> {
  108. log.info("事件处置方案新增消息 => " + msg);
  109. });
  110. }
  111. return true;
  112. }
  113. @Override
  114. public Boolean updateByBo(IncidentTaskBo bo) {
  115. IncidentTask update = BeanUtil.toBean(bo, IncidentTask.class);
  116. validEntityBeforeSave(update);
  117. return updateById(update);
  118. }
  119. @Override
  120. public List<IncidentTaskVo> listTaskInfo(String id) {
  121. List<IncidentTaskVo> incidentTaskVo = listVo(Wrappers.<IncidentTask>lambdaQuery().eq(IncidentTask::getIncidentId, id).orderByAsc(IncidentTask::getCreateTime));
  122. if (incidentTaskVo != null) {
  123. // 查询指令和人员
  124. for (IncidentTaskVo taskVo : incidentTaskVo) {
  125. taskVo.setTaskCommandVos(incidentTaskCommandService.listVo(Wrappers.<IncidentTaskCommand>lambdaQuery().eq(IncidentTaskCommand::getIncidentTaskId, taskVo.getId())));
  126. taskVo.setTaskPersonVos(incidentTaskPersonService.listVo(Wrappers.<IncidentTaskPerson>lambdaQuery().eq(IncidentTaskPerson::getIncidentTaskId, taskVo.getId())));
  127. }
  128. }
  129. return incidentTaskVo;
  130. }
  131. /**
  132. * 保存前的数据校验
  133. *
  134. * @param entity 实体类数据
  135. */
  136. private void validEntityBeforeSave(IncidentTask entity) {
  137. //TODO 做一些数据校验,如唯一约束
  138. }
  139. @Override
  140. public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
  141. if (isValid) {
  142. //TODO 做一些业务上的校验,判断是否需要校验
  143. }
  144. // 查询处置方案。默认这边只有一个id
  145. String id = ids.iterator().next();
  146. IncidentTaskVo incidentTaskVo = queryById(id);
  147. if (incidentTaskVo != null) {
  148. JSONObject jsonObject = new JSONObject();
  149. jsonObject.set("des", "处置方案:" + incidentTaskVo.getTaskName() + "删除");
  150. jsonObject.set("incidentId", incidentTaskVo.getIncidentId());
  151. jsonObject.set("incidentStatus", 3);
  152. RedisUtils.publish(Constants.PROCESS_RECORD, jsonObject, msg -> {
  153. log.info("事件处置方案删除消息 => " + msg);
  154. });
  155. }
  156. return removeByIds(ids);
  157. }
  158. }