package com.gkhy.safePlatform.emergency.service.impl;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.gkhy.safePlatform.commons.enums.E;
|
import com.gkhy.safePlatform.commons.enums.ResultCodes;
|
import com.gkhy.safePlatform.commons.query.PageQuery;
|
import com.gkhy.safePlatform.commons.utils.BeanCopyUtils;
|
import com.gkhy.safePlatform.commons.utils.StringUtils;
|
import com.gkhy.safePlatform.commons.vo.ResultVO;
|
import com.gkhy.safePlatform.commons.vo.SearchResultVO;
|
import com.gkhy.safePlatform.emergency.entity.*;
|
import com.gkhy.safePlatform.emergency.enums.EmergencyResultCodes;
|
import com.gkhy.safePlatform.emergency.excepiton.EmergencyException;
|
import com.gkhy.safePlatform.emergency.model.dto.req.EmergencyDrillExecuteReqDTO;
|
import com.gkhy.safePlatform.emergency.model.dto.req.EmergencyDrillExecuteUserReqDTO;
|
import com.gkhy.safePlatform.emergency.model.dto.resp.*;
|
import com.gkhy.safePlatform.emergency.query.EmergencyDrillExecuteQuery;
|
import com.gkhy.safePlatform.emergency.query.EmergencyDrillExecuteRPCQuery;
|
import com.gkhy.safePlatform.emergency.query.db.EmergencyDrillExecuteDBQuery;
|
import com.gkhy.safePlatform.emergency.query.db.EmergencyDrillExecuteRPCDBQuery;
|
import com.gkhy.safePlatform.emergency.service.EmergencyDrillExecuteService;
|
import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillEvaluationInfoService;
|
import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillExecuteInfoService;
|
import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillExecuteUserInfoService;
|
import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillPlanInfoService;
|
import com.gkhy.safePlatform.emergency.utils.TimeUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service("emergencyDrillExecuteService")
|
public class EmergencyDrillExecuteServiceImpl implements EmergencyDrillExecuteService {
|
|
@Autowired
|
private EmergencyDrillExecuteInfoService emergencyDrillExecuteInfoService;
|
|
@Autowired
|
private EmergencyDrillExecuteUserInfoService emergencyDrillExecuteUserInfoService;
|
|
@Autowired
|
private EmergencyDrillPlanInfoService emergencyDrillPlanInfoService;
|
|
@Autowired
|
private EmergencyDrillEvaluationInfoService emergencyDrillEvaluationInfoService;
|
|
|
@Override
|
public SearchResultVO<List<EmergencyDrillExecutePageRespDTO>> selectEmergencyDrillExecuteList(PageQuery<EmergencyDrillExecuteQuery> query) {
|
Long pageIndex = query.getPageIndex();
|
Long pageSize = query.getPageSize();
|
Page<EmergencyDrillExecuteInfoPageDO> page = new Page<>(pageIndex, pageSize);
|
|
EmergencyDrillExecuteDBQuery emergencyDrillExecuteDBQuery = new EmergencyDrillExecuteDBQuery();
|
if (query.getSearchParams() != null) {
|
BeanUtils.copyProperties(query.getSearchParams(), emergencyDrillExecuteDBQuery);
|
}
|
List<EmergencyDrillExecuteInfoPageDO> emergencyDrillExecuteListDoInfoList = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteList(page, emergencyDrillExecuteDBQuery);
|
List<EmergencyDrillExecutePageRespDTO> respList = BeanCopyUtils.copyBeanList(emergencyDrillExecuteListDoInfoList, EmergencyDrillExecutePageRespDTO.class);
|
|
return new SearchResultVO<>(
|
true,
|
pageIndex,
|
pageSize,page.getPages(),
|
page.getTotal(),
|
respList,
|
ResultCodes.OK
|
);
|
}
|
|
@Override
|
public ResultVO addEmergencyDrillExecute(Long uid, EmergencyDrillExecuteReqDTO emergencyDrillExecuteReqDTO) {
|
// 判断请求中是否存在演练计划id
|
if (emergencyDrillExecuteReqDTO.getDrillPlanId() == null) {
|
throw new EmergencyException(EmergencyResultCodes.DRILL_PLAN_NULL);
|
} else {
|
EmergencyDrillPlanInfoDetailDO emergencyDrillPlanInfoDetailDO = emergencyDrillPlanInfoService.selectEmergencyDrillPlanById(emergencyDrillExecuteReqDTO.getDrillPlanId());
|
// 判断是否存在该演练计划
|
if (emergencyDrillPlanInfoDetailDO == null) {
|
throw new EmergencyException(EmergencyResultCodes.DRILL_PLAN_NOT_EXIST);
|
} else {
|
Date nowDate = new Date();
|
// 新增应急演练计划实施
|
EmergencyDrillExecuteInfo emergencyDrillExecuteInfo = new EmergencyDrillExecuteInfo();
|
BeanUtils.copyProperties(emergencyDrillExecuteReqDTO, emergencyDrillExecuteInfo);
|
emergencyDrillExecuteInfo.setDelFlag(false);
|
emergencyDrillExecuteInfo.setCreateUid(uid);
|
emergencyDrillExecuteInfo.setGmtCreate(nowDate);
|
emergencyDrillExecuteInfo.setStatus(false);
|
emergencyDrillExecuteInfoService.addEmergencyDrillExecute(emergencyDrillExecuteInfo);
|
|
// 新增应急演练计划实施实际到场人员表
|
if (!CollectionUtils.isEmpty(emergencyDrillExecuteReqDTO.getUserList())) {
|
addEmergencyDrillExecuteUser(uid, emergencyDrillExecuteInfo.getId(), nowDate, emergencyDrillExecuteReqDTO.getUserList());
|
|
}
|
// 新增评价表一行数据
|
EmergencyDrillEvaluationInfo emergencyDrillEvaluationInfo = new EmergencyDrillEvaluationInfo();
|
emergencyDrillEvaluationInfo.setDelFlag(false);
|
emergencyDrillEvaluationInfo.setCreateUid(uid);
|
emergencyDrillEvaluationInfo.setGmtCreate(nowDate);
|
emergencyDrillEvaluationInfo.setDrillExecuteId(emergencyDrillExecuteInfo.getId());
|
emergencyDrillEvaluationInfoService.addEmergencyDrillEvaluation(emergencyDrillEvaluationInfo);
|
|
return new ResultVO<>(ResultCodes.OK);
|
}
|
}
|
}
|
|
private void addEmergencyDrillExecuteUser(Long uid, Long DrillExecuteId, Date nowDate, List<EmergencyDrillExecuteUserReqDTO> emergencyDrillExecuteUserReqDTOList) {
|
List<EmergencyDrillExecuteUserInfo> emergencyDrillExecuteUserInfoList = BeanCopyUtils.copyBeanList(emergencyDrillExecuteUserReqDTOList, EmergencyDrillExecuteUserInfo.class);
|
emergencyDrillExecuteUserInfoList.forEach(EmergencyDrillExecuteUserInfo -> {
|
EmergencyDrillExecuteUserInfo.setDelFlag(false);
|
EmergencyDrillExecuteUserInfo.setCreateUid(uid);
|
EmergencyDrillExecuteUserInfo.setGmtCreate(nowDate);
|
EmergencyDrillExecuteUserInfo.setDrillExecuteId(DrillExecuteId);
|
});
|
for (EmergencyDrillExecuteUserInfo emergencyDrillExecuteUserInfo : emergencyDrillExecuteUserInfoList) {
|
emergencyDrillExecuteUserInfoService.addEmergencyDrillExecuteUser(emergencyDrillExecuteUserInfo);
|
}
|
}
|
|
@Override
|
public ResultVO<EmergencyDrillExecuteDetailRespDTO> getEmergencyDrillExecuteById(Long id) {
|
EmergencyDrillExecuteDetailRespDTO emergencyDrillExecuteDetailRespDTO = new EmergencyDrillExecuteDetailRespDTO();
|
// 查询是否存在应急演练计划实施
|
EmergencyDrillExecuteInfoDetailDO emergencyDrillExecuteInfoDetailDO = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteById(id);
|
if (emergencyDrillExecuteInfoDetailDO == null) {
|
throw new EmergencyException(EmergencyResultCodes.DRILL_EXECUTE_NOT_EXIST);
|
} else {
|
BeanUtils.copyProperties(emergencyDrillExecuteInfoDetailDO, emergencyDrillExecuteDetailRespDTO);
|
|
// 查找对应的人员
|
List<EmergencyDrillExecuteUserInfoDO> emergencyDrillExecuteUserInfoDOList = emergencyDrillExecuteUserInfoService.selectEmergencyDrillExecuteUserByDrillExecuteId(id);
|
if (!CollectionUtils.isEmpty(emergencyDrillExecuteUserInfoDOList)) {
|
List<EmergencyDrillExecuteUserRespDTO> emergencyUserUserRespDTOList = BeanCopyUtils.copyBeanList(emergencyDrillExecuteUserInfoDOList, EmergencyDrillExecuteUserRespDTO.class);
|
emergencyDrillExecuteDetailRespDTO.setUserList(emergencyUserUserRespDTOList);
|
}
|
return new ResultVO<>(ResultCodes.OK, emergencyDrillExecuteDetailRespDTO);
|
}
|
}
|
|
@Override
|
public ResultVO updateEmergencyDrillExecute(Long uid, EmergencyDrillExecuteReqDTO emergencyDrillExecuteReqDTO) {
|
Date nowDate = new Date();
|
// 查询是否存在应急演练计划实施
|
EmergencyDrillExecuteInfoDetailDO emergencyDrillExecuteInfoDetailDO = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteById(emergencyDrillExecuteReqDTO.getId());
|
if (emergencyDrillExecuteInfoDetailDO == null) {
|
throw new EmergencyException(EmergencyResultCodes.DRILL_EXECUTE_NOT_EXIST);
|
} else {
|
EmergencyDrillExecuteInfo emergencyDrillExecuteInfo = new EmergencyDrillExecuteInfo();
|
BeanUtils.copyProperties(emergencyDrillExecuteReqDTO, emergencyDrillExecuteInfo);
|
emergencyDrillExecuteInfo.setUpdateUid(uid);
|
emergencyDrillExecuteInfo.setGmtModitify(nowDate);
|
emergencyDrillExecuteInfoService.updateEmergencyDrillExecute(emergencyDrillExecuteInfo);
|
|
// 更新急演练计划应急队伍表
|
if (!CollectionUtils.isEmpty(emergencyDrillExecuteReqDTO.getUserList())) {
|
updateEmergencyDrillExecuteUser(uid, emergencyDrillExecuteInfo.getId(), nowDate, emergencyDrillExecuteReqDTO.getUserList());
|
}
|
|
return new ResultVO<>(ResultCodes.OK);
|
}
|
}
|
|
private void updateEmergencyDrillExecuteUser(Long uid, Long DrillExecuteId, Date
|
nowDate, List<EmergencyDrillExecuteUserReqDTO> UserReqDTOList) {
|
List<EmergencyDrillExecuteUserInfoDO> emergencyDrillExecuteUserInfoDOList = emergencyDrillExecuteUserInfoService.selectEmergencyDrillExecuteUserByDrillExecuteId(DrillExecuteId);
|
List<Long> oldIdsList = emergencyDrillExecuteUserInfoDOList.stream().map(EmergencyDrillExecuteUserInfoDO::getId).collect(Collectors.toList());
|
List<Long> newIdsList = new ArrayList<>();
|
|
//新增的区域集合
|
List<EmergencyDrillExecuteUserInfo> addList = new ArrayList<>();
|
//删除的区域集合(id)
|
List<Long> deleteList = new ArrayList<>();
|
for (EmergencyDrillExecuteUserReqDTO emergencyDrillExecuteUserReqDTO : UserReqDTOList) {
|
//如果不存在id则表示页面新增的附件
|
if (emergencyDrillExecuteUserReqDTO.getId() == null) {
|
EmergencyDrillExecuteUserInfo emergencyDrillExecuteUserInfo = new EmergencyDrillExecuteUserInfo();
|
BeanUtils.copyProperties(emergencyDrillExecuteUserReqDTO, emergencyDrillExecuteUserInfo);
|
emergencyDrillExecuteUserInfo.setDelFlag(false);
|
emergencyDrillExecuteUserInfo.setGmtCreate(nowDate);
|
emergencyDrillExecuteUserInfo.setCreateUid(uid);
|
emergencyDrillExecuteUserInfo.setDrillExecuteId(DrillExecuteId);
|
addList.add(emergencyDrillExecuteUserInfo);
|
}
|
//如果存在id则判断页面是否删除
|
else {
|
newIdsList.add(emergencyDrillExecuteUserReqDTO.getId());
|
}
|
}
|
for (Long oldId : oldIdsList) {
|
if (!newIdsList.contains(oldId)) {
|
deleteList.add(oldId);
|
}
|
}
|
if (!CollectionUtils.isEmpty(addList)) {
|
for (EmergencyDrillExecuteUserInfo emergencyDrillExecuteUserInfo : addList) {
|
emergencyDrillExecuteUserInfoService.addEmergencyDrillExecuteUser(emergencyDrillExecuteUserInfo);
|
}
|
}
|
if (!CollectionUtils.isEmpty(deleteList)) {
|
emergencyDrillExecuteUserInfoService.deleteEmergencyDrillExecuteUserByIds(deleteList);
|
}
|
}
|
|
@Override
|
public ResultVO batchDeleteEmergencyDrillExecute(Long[] ids) {
|
if (ids == null || ids.length==0){
|
throw new EmergencyException(EmergencyResultCodes.DRILL_EXECUTE_NULL);
|
}else{
|
for (Long id : ids){
|
deleteEmergencyDrillExecute(id);
|
}
|
return new ResultVO(ResultCodes.OK);
|
}
|
}
|
|
private void deleteEmergencyDrillExecute(Long id) {
|
//查询是否存在
|
EmergencyDrillExecuteInfoDetailDO emergencyDrillExecuteInfoDetailDO = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteById(id);
|
if (emergencyDrillExecuteInfoDetailDO == null) {
|
throw new EmergencyException(EmergencyResultCodes.DRILL_EXECUTE_NOT_EXIST);
|
} else {
|
Long DrillExecuteId = emergencyDrillExecuteInfoDetailDO.getId();
|
emergencyDrillExecuteInfoService.deleteEmergencyDrillExecute(DrillExecuteId);
|
//删除人员
|
emergencyDrillExecuteUserInfoService.deleteEmergencyDrillExecuteUserByDrillExecuteId(DrillExecuteId);
|
}
|
}
|
|
@Override
|
public ResultVO<EmergencyDrillExecuteCountRespDTO> countEmergencyDrillExecute(EmergencyDrillExecuteRPCQuery query) {
|
|
EmergencyDrillExecuteCountRespDTO emergencyDrillExecuteCountRespDTO = new EmergencyDrillExecuteCountRespDTO();
|
|
// 根据应急演练实施的创建时间与当前时间 获取间隔天数
|
Integer days = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteIntervalTime();
|
emergencyDrillExecuteCountRespDTO.setDays(days);
|
|
|
List<EmergencyDrillExecuteCountChart> list = new ArrayList<>();
|
EmergencyDrillExecuteRPCDBQuery dbQuery = new EmergencyDrillExecuteRPCDBQuery();
|
dbQuery.setLevel(query.getLevel());
|
// 根据时间、级别获取统计
|
Calendar calendar = Calendar.getInstance();
|
int year = calendar.get(Calendar.YEAR);
|
if (query.getType()==1){
|
// 月
|
int month = calendar.get(Calendar.MONTH);
|
dbQuery.setStartTime(TimeUtils.getMonthFirst(year,month));
|
dbQuery.setEndTime(TimeUtils.getMonthLast(year,month));
|
list = emergencyDrillExecuteInfoService.selectByMouthTimeAndType(dbQuery);
|
}
|
if (query.getType()==2){
|
// 年
|
dbQuery.setStartTime(TimeUtils.getYearFirst(year));
|
dbQuery.setEndTime(TimeUtils.getYearLast(year));
|
list = emergencyDrillExecuteInfoService.selectByYearTimeAndType(dbQuery);
|
}
|
|
if (!CollectionUtils.isEmpty(list)){
|
List<EmergencyDrillExecuteCountChartRespDTO> dataList = BeanCopyUtils.copyBeanList(list,EmergencyDrillExecuteCountChartRespDTO.class);
|
emergencyDrillExecuteCountRespDTO.setDataList(dataList);
|
}else{
|
emergencyDrillExecuteCountRespDTO.setDataList(new ArrayList<>());
|
}
|
|
return new ResultVO<>(ResultCodes.OK,emergencyDrillExecuteCountRespDTO);
|
}
|
}
|