123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- package com.ruoyi.zhdd.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.json.JSONObject;
- import cn.hutool.json.JSONUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.ruoyi.common.constant.Constants;
- import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
- import com.ruoyi.common.core.page.PagePlus;
- import com.ruoyi.common.core.page.TableDataInfo;
- import com.ruoyi.common.utils.PageUtils;
- import com.ruoyi.common.utils.RedisUtils;
- import com.ruoyi.zhdd.domain.IncidentTask;
- import com.ruoyi.zhdd.domain.IncidentTaskCommand;
- import com.ruoyi.zhdd.domain.IncidentTaskPerson;
- import com.ruoyi.zhdd.domain.bo.IncidentTaskBo;
- import com.ruoyi.zhdd.domain.bo.IncidentTasksBo;
- import com.ruoyi.zhdd.domain.vo.IncidentTaskVo;
- import com.ruoyi.zhdd.mapper.IncidentTaskMapper;
- import com.ruoyi.zhdd.service.IIncidentProcessService;
- import com.ruoyi.zhdd.service.IIncidentTaskCommandService;
- import com.ruoyi.zhdd.service.IIncidentTaskPersonService;
- import com.ruoyi.zhdd.service.IIncidentTaskService;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.Collection;
- import java.util.List;
- import java.util.Map;
- /**
- * 事件处置流程Service业务层处理
- *
- * @author xitong
- * @date 2021-09-28
- */
- @Service
- @Slf4j
- public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper, IncidentTask, IncidentTaskVo> implements IIncidentTaskService {
- @Autowired
- private IIncidentTaskPersonService incidentTaskPersonService;
- @Autowired
- private IIncidentTaskCommandService incidentTaskCommandService;
- @Autowired
- private IIncidentProcessService incidentProcessService;
- @Override
- public IncidentTaskVo queryById(String id) {
- return getVoById(id);
- }
- @Override
- public TableDataInfo<IncidentTaskVo> queryPageList(IncidentTaskBo bo) {
- PagePlus<IncidentTask, IncidentTaskVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
- return PageUtils.buildDataInfo(result);
- }
- @Override
- public List<IncidentTaskVo> queryList(IncidentTaskBo bo) {
- return listVo(buildQueryWrapper(bo));
- }
- private LambdaQueryWrapper<IncidentTask> buildQueryWrapper(IncidentTaskBo bo) {
- Map<String, Object> params = bo.getParams();
- LambdaQueryWrapper<IncidentTask> lqw = Wrappers.lambdaQuery();
- lqw.eq(bo.getIncidentId() != null, IncidentTask::getIncidentId, bo.getIncidentId());
- return lqw;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean insertByBo(IncidentTasksBo bo) {
- // 新增之前删除之前的内容
- String insertOrUpdateFlag = "新增";
- if (StrUtil.isNotBlank(bo.getId())) {
- removeById(bo.getId());
- incidentTaskPersonService.remove(Wrappers.<IncidentTaskPerson>lambdaQuery().eq(IncidentTaskPerson::getIncidentTaskId, bo.getId()));
- incidentTaskCommandService.remove(Wrappers.<IncidentTaskCommand>lambdaQuery().eq(IncidentTaskCommand::getIncidentTaskId, bo.getId()));
- insertOrUpdateFlag = "编辑";
- }
- IncidentTask add = BeanUtil.toBean(bo, IncidentTask.class);
- add.setId(null);
- add.setExprJson(JSONUtil.toJsonStr(bo.getMessagePushUsers()));
- save(add);
- // 新增指令和人员
- if (bo.getIncidentTaskCommands() != null) {
- for (IncidentTaskCommand incidentTaskCommand : bo.getIncidentTaskCommands()) {
- incidentTaskCommand.setId(null);
- incidentTaskCommand.setIncidentTaskId(add.getId());
- }
- }
- if (bo.getIncidentTaskPeoples() != null) {
- for (IncidentTaskPerson incidentTaskPeople : bo.getIncidentTaskPeoples()) {
- incidentTaskPeople.setId(null);
- incidentTaskPeople.setIncidentTaskId(add.getId());
- }
- }
- incidentTaskCommandService.saveAll(bo.getIncidentTaskCommands());
- incidentTaskPersonService.saveAll(bo.getIncidentTaskPeoples());
- // 发送消息
- if (bo.isSendFlag()) {
- // A:事件接报。B:处置方案
- RedisUtils.publish(Constants.NOTICE_PUSH, "B" + add.getId(), msg -> {
- log.info("发布应急方案消息 => " + msg);
- });
- } else {
- JSONObject jsonObject = new JSONObject();
- jsonObject.set("des", insertOrUpdateFlag + "处置方案:" + bo.getTaskName());
- jsonObject.set("incidentId", bo.getIncidentId());
- jsonObject.set("incidentStatus", 3);
- RedisUtils.publish(Constants.PROCESS_RECORD, jsonObject, msg -> {
- log.info("事件处置方案新增消息 => " + msg);
- });
- }
- return true;
- }
- @Override
- public Boolean updateByBo(IncidentTaskBo bo) {
- IncidentTask update = BeanUtil.toBean(bo, IncidentTask.class);
- validEntityBeforeSave(update);
- return updateById(update);
- }
- @Override
- public List<IncidentTaskVo> listTaskInfo(String id) {
- List<IncidentTaskVo> incidentTaskVo = listVo(Wrappers.<IncidentTask>lambdaQuery().eq(IncidentTask::getIncidentId, id).orderByAsc(IncidentTask::getCreateTime));
- if (incidentTaskVo != null) {
- // 查询指令和人员
- for (IncidentTaskVo taskVo : incidentTaskVo) {
- taskVo.setTaskCommandVos(incidentTaskCommandService.listVo(Wrappers.<IncidentTaskCommand>lambdaQuery().eq(IncidentTaskCommand::getIncidentTaskId, taskVo.getId())));
- taskVo.setTaskPersonVos(incidentTaskPersonService.listVo(Wrappers.<IncidentTaskPerson>lambdaQuery().eq(IncidentTaskPerson::getIncidentTaskId, taskVo.getId())));
- }
- }
- return incidentTaskVo;
- }
- /**
- * 保存前的数据校验
- *
- * @param entity 实体类数据
- */
- private void validEntityBeforeSave(IncidentTask entity) {
- //TODO 做一些数据校验,如唯一约束
- }
- @Override
- public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
- if (isValid) {
- //TODO 做一些业务上的校验,判断是否需要校验
- }
- // 查询处置方案。默认这边只有一个id
- String id = ids.iterator().next();
- IncidentTaskVo incidentTaskVo = queryById(id);
- if (incidentTaskVo != null) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.set("des", "处置方案:" + incidentTaskVo.getTaskName() + "删除");
- jsonObject.set("incidentId", incidentTaskVo.getIncidentId());
- jsonObject.set("incidentStatus", 3);
- RedisUtils.publish(Constants.PROCESS_RECORD, jsonObject, msg -> {
- log.info("事件处置方案删除消息 => " + msg);
- });
- }
- return removeByIds(ids);
- }
- }
|