package com.gkhy.safePlatform.emergency.service.impl;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.TeamLevelEnum;
|
import com.gkhy.safePlatform.emergency.excepiton.EmergencyException;
|
import com.gkhy.safePlatform.emergency.enums.EmergencyResultCodes;
|
import com.gkhy.safePlatform.emergency.model.dto.req.EmergencyTeamFileReqDTO;
|
import com.gkhy.safePlatform.emergency.model.dto.req.EmergencyTeamMemberReqDTO;
|
import com.gkhy.safePlatform.emergency.model.dto.req.EmergencyTeamReqDTO;
|
import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyTeamDetailRespDTO;
|
import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyTeamFileRespDTO;
|
import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyTeamMemberRespDTO;
|
import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencyTeamPageRespDTO;
|
import com.gkhy.safePlatform.emergency.query.EmergencyTeamQuery;
|
import com.gkhy.safePlatform.emergency.query.db.EmergencyTeamDBQuery;
|
import com.gkhy.safePlatform.emergency.service.EmergencyTeamService;
|
import com.gkhy.safePlatform.emergency.service.baseService.EmergencyTeamFileInfoService;
|
import com.gkhy.safePlatform.emergency.service.baseService.EmergencyTeamInfoService;
|
import com.gkhy.safePlatform.emergency.service.baseService.EmergencyTeamMemberInfoService;
|
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.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service("emergencyTeamService")
|
public class EmergencyTeamServiceImpl implements EmergencyTeamService {
|
|
@Autowired
|
private EmergencyTeamInfoService emergencyTeamInfoService;
|
|
@Autowired
|
private EmergencyTeamFileInfoService emergencyTeamFileInfoService;
|
|
@Autowired
|
private EmergencyTeamMemberInfoService emergencyTeamMemberInfoService;
|
|
@Override
|
public SearchResultVO<List<EmergencyTeamPageRespDTO>> selectEmergencyTeamList(PageQuery<EmergencyTeamQuery> query) {
|
Long pageIndex = query.getPageIndex();
|
Long pageSize = query.getPageSize();
|
Page<EmergencyTeamInfoPageDO> page = new Page<>(pageIndex, pageSize);
|
|
EmergencyTeamDBQuery emergencyTeamDBQuery = new EmergencyTeamDBQuery();
|
if (query.getSearchParams() != null) {
|
BeanUtils.copyProperties(query.getSearchParams(), emergencyTeamDBQuery);
|
}
|
|
List<EmergencyTeamPageRespDTO> respList = new ArrayList<>();
|
List<EmergencyTeamInfoPageDO> emergencyTeamInfoPageDOList = emergencyTeamInfoService.selectEmergencyTeamList(page, emergencyTeamDBQuery);
|
|
if (!CollectionUtils.isEmpty(emergencyTeamInfoPageDOList)) {
|
for (EmergencyTeamInfoPageDO emergencyTeamInfoPageDO : emergencyTeamInfoPageDOList) {
|
List<EmergencyTeamFileInfoDO> emergencyTeamFileInfoDOList = emergencyTeamFileInfoService.selectByEmergencyTeamId(emergencyTeamInfoPageDO.getId());
|
List<EmergencyTeamFileRespDTO> emergencyTeamFileRespDTOList = BeanCopyUtils.copyBeanList(emergencyTeamFileInfoDOList, EmergencyTeamFileRespDTO.class);
|
|
EmergencyTeamPageRespDTO emergencyTeamPageRespDTO = new EmergencyTeamPageRespDTO();
|
BeanUtils.copyProperties(emergencyTeamInfoPageDO, emergencyTeamPageRespDTO);
|
emergencyTeamPageRespDTO.setFileList(emergencyTeamFileRespDTOList);
|
respList.add(emergencyTeamPageRespDTO);
|
}
|
}
|
|
return new SearchResultVO<>(
|
true,
|
pageIndex,
|
pageSize,page.getPages(),
|
page.getTotal(),
|
respList,
|
ResultCodes.OK
|
);
|
}
|
|
@Override
|
public ResultVO<EmergencyTeamDetailRespDTO> addEmergencyTeam(Long uid, EmergencyTeamReqDTO emergencyTeamReqDTO) {
|
//必填项验证
|
checkRequired(emergencyTeamReqDTO);
|
// 验证枚举
|
checkEnum(emergencyTeamReqDTO);
|
|
Date nowDate = new Date();
|
//1.新增应急队伍
|
EmergencyTeamInfo emergencyTeamInfo = new EmergencyTeamInfo();
|
BeanUtils.copyProperties(emergencyTeamReqDTO, emergencyTeamInfo);
|
emergencyTeamInfo.setDelFlag(false);
|
emergencyTeamInfo.setCreateUid(uid);
|
emergencyTeamInfo.setGmtCreate(nowDate);
|
emergencyTeamInfoService.addEmergencyTeam(emergencyTeamInfo);
|
//2.新增应急队伍附件
|
if (!CollectionUtils.isEmpty(emergencyTeamReqDTO.getFileList())){
|
addEmergencyTeamFile(emergencyTeamInfo.getId(),uid,nowDate,emergencyTeamReqDTO.getFileList());
|
}
|
//3.新增应急队伍人员
|
if (!CollectionUtils.isEmpty(emergencyTeamReqDTO.getMemberList())){
|
addEmergencyTeamMember(emergencyTeamInfo.getId(),uid,nowDate,emergencyTeamReqDTO.getMemberList());
|
}
|
EmergencyTeamDetailRespDTO emergencyTeamDetailRespDTO = new EmergencyTeamDetailRespDTO();
|
BeanUtils.copyProperties(emergencyTeamInfo,emergencyTeamDetailRespDTO);
|
return new ResultVO<>(ResultCodes.OK,emergencyTeamDetailRespDTO);
|
}
|
|
private void addEmergencyTeamFile(Long teamId ,Long uid , Date nowDate , List<EmergencyTeamFileReqDTO> emergencyTeamFileReqDTOList){
|
List<EmergencyTeamFileInfo> fileInfoList = BeanCopyUtils.copyBeanList(emergencyTeamFileReqDTOList, EmergencyTeamFileInfo.class);
|
fileInfoList.forEach(EmergencyTeamFileInfo -> {
|
EmergencyTeamFileInfo.setTeamId(teamId);
|
EmergencyTeamFileInfo.setDelFlag(false);
|
EmergencyTeamFileInfo.setCreateUid(uid);
|
EmergencyTeamFileInfo.setGmtCreate(nowDate);
|
});
|
for (EmergencyTeamFileInfo emergencyTeamFileInfo :fileInfoList){
|
emergencyTeamFileInfoService.addEmergencyTeamFile(emergencyTeamFileInfo);
|
}
|
}
|
|
private void addEmergencyTeamMember(Long teamId ,Long uid , Date nowDate , List<EmergencyTeamMemberReqDTO> emergencyTeamMemberReqDTOList){
|
List<EmergencyTeamMemberInfo> memberInfoList = BeanCopyUtils.copyBeanList(emergencyTeamMemberReqDTOList, EmergencyTeamMemberInfo.class);
|
memberInfoList.forEach(EmergencyTeamFileInfo -> {
|
EmergencyTeamFileInfo.setTeamId(teamId);
|
EmergencyTeamFileInfo.setDelFlag(false);
|
EmergencyTeamFileInfo.setCreateUid(uid);
|
EmergencyTeamFileInfo.setGmtCreate(nowDate);
|
});
|
for (EmergencyTeamMemberInfo emergencyTeamMemberInfo : memberInfoList){
|
emergencyTeamMemberInfoService.addEmergencyTeamMember(emergencyTeamMemberInfo);
|
}
|
}
|
|
@Override
|
public ResultVO<EmergencyTeamDetailRespDTO> getEmergencyTeamById(Long id) {
|
EmergencyTeamDetailRespDTO emergencyTeamDetailRespDTO = new EmergencyTeamDetailRespDTO();
|
//查询是否存在
|
EmergencyTeamInfoDetailDO emergencyTeamInfoDetailDO = emergencyTeamInfoService.selectEmergencyTeamById(id);
|
if (emergencyTeamInfoDetailDO==null){
|
throw new EmergencyException(EmergencyResultCodes.TEAM_NOT_EXIST);
|
}else{
|
BeanUtils.copyProperties(emergencyTeamInfoDetailDO,emergencyTeamDetailRespDTO);
|
//查找对应的附件
|
List<EmergencyTeamFileInfoDO> emergencyTeamFileInfoDOList = emergencyTeamFileInfoService.selectByEmergencyTeamId(id);
|
if (!CollectionUtils.isEmpty(emergencyTeamFileInfoDOList)){
|
List<EmergencyTeamFileRespDTO> emergencyTeamFileRespDTOList = BeanCopyUtils.copyBeanList(emergencyTeamFileInfoDOList , EmergencyTeamFileRespDTO.class);
|
emergencyTeamDetailRespDTO.setFileList(emergencyTeamFileRespDTOList);
|
}
|
|
//查找对应的人员
|
List<EmergencyTeamMemberInfoDO> emergencyTeamMemberInfoDOList = emergencyTeamMemberInfoService.selectByEmergencyTeamId(id);
|
if (!CollectionUtils.isEmpty(emergencyTeamMemberInfoDOList)){
|
List<EmergencyTeamMemberRespDTO> emergencyTeamMemberRespDTOList = BeanCopyUtils.copyBeanList(emergencyTeamMemberInfoDOList , EmergencyTeamMemberRespDTO.class);
|
emergencyTeamDetailRespDTO.setMemberList(emergencyTeamMemberRespDTOList);
|
}
|
return new ResultVO<>(ResultCodes.OK ,emergencyTeamDetailRespDTO);
|
}
|
}
|
|
@Override
|
public ResultVO updateEmergencyTeam(Long uid, EmergencyTeamReqDTO emergencyTeamReqDTO) {
|
// 验证枚举
|
checkEnum(emergencyTeamReqDTO);
|
Date nowDate = new Date();
|
//查询是否存在
|
EmergencyTeamInfoDetailDO emergencyTeamInfoDetailDO = emergencyTeamInfoService.selectEmergencyTeamById(emergencyTeamReqDTO.getId());
|
if (emergencyTeamInfoDetailDO==null){
|
throw new EmergencyException(EmergencyResultCodes.TEAM_NOT_EXIST);
|
}else{
|
EmergencyTeamInfo emergencyTeamInfo = new EmergencyTeamInfo();
|
BeanUtils.copyProperties(emergencyTeamReqDTO,emergencyTeamInfo);
|
emergencyTeamInfo.setUpdateUid(uid);
|
emergencyTeamInfo.setGmtModitify(nowDate);
|
emergencyTeamInfoService.updateEmergencyTeam(emergencyTeamInfo);
|
//修改应急队伍附件
|
updateEmergencyTeamFile(uid,emergencyTeamReqDTO.getId(),nowDate,emergencyTeamReqDTO.getFileList());
|
return new ResultVO(ResultCodes.OK);
|
}
|
}
|
|
private void updateEmergencyTeamFile(Long uid ,Long teamId ,Date nowDate,List<EmergencyTeamFileReqDTO> emergencyTeamFileReqDTOList){
|
|
List<EmergencyTeamFileInfoDO> emergencyTeamFileInfoDOList = emergencyTeamFileInfoService.selectByEmergencyTeamId(teamId);
|
List<Long> oldIdsList = emergencyTeamFileInfoDOList.stream().map(EmergencyTeamFileInfoDO::getId).collect(Collectors.toList());
|
List<Long> newIdsList = new ArrayList<>();
|
|
//新增的附件集合
|
List<EmergencyTeamFileInfo> addList = new ArrayList<>();
|
//删除的附件集合(id)
|
List<Long> deleteList = new ArrayList<>();
|
for (EmergencyTeamFileReqDTO emergencyTeamFileReqDTO : emergencyTeamFileReqDTOList){
|
//如果不存在id则表示页面新增的附件
|
if (emergencyTeamFileReqDTO.getId() == null){
|
EmergencyTeamFileInfo emergencyTeamFileInfo = new EmergencyTeamFileInfo();
|
BeanUtils.copyProperties(emergencyTeamFileReqDTO,emergencyTeamFileInfo);
|
emergencyTeamFileInfo.setDelFlag(false);
|
emergencyTeamFileInfo.setGmtCreate(nowDate);
|
emergencyTeamFileInfo.setCreateUid(uid);
|
emergencyTeamFileInfo.setTeamId(teamId);
|
addList.add(emergencyTeamFileInfo);
|
}
|
//如果存在id则判断页面是否删除
|
else{
|
newIdsList.add(emergencyTeamFileReqDTO.getId());
|
}
|
}
|
for (Long oldId : oldIdsList){
|
if (!newIdsList.contains(oldId)){
|
deleteList.add(oldId);
|
}
|
}
|
if (!CollectionUtils.isEmpty(addList)){
|
for (EmergencyTeamFileInfo emergencyTeamFileInfo : addList){
|
emergencyTeamFileInfoService.addEmergencyTeamFile(emergencyTeamFileInfo);
|
}
|
}
|
if (!CollectionUtils.isEmpty(deleteList)){
|
emergencyTeamFileInfoService.deleteEmergencyTeamFileByIds(deleteList);
|
}
|
}
|
|
@Override
|
public ResultVO addEmergencyTeamMember(Long uid, EmergencyTeamMemberReqDTO emergencyTeamMemberReqDTO) {
|
EmergencyTeamMemberInfo emergencyTeamMemberInfo = new EmergencyTeamMemberInfo();
|
BeanUtils.copyProperties(emergencyTeamMemberReqDTO,emergencyTeamMemberInfo);
|
emergencyTeamMemberInfo.setCreateUid(uid);
|
emergencyTeamMemberInfo.setGmtCreate(new Date());
|
emergencyTeamMemberInfo.setDelFlag(false);
|
emergencyTeamMemberInfoService.addEmergencyTeamMember(emergencyTeamMemberInfo);
|
return new ResultVO(ResultCodes.OK);
|
}
|
|
@Override
|
public ResultVO updateEmergencyTeamMember(Long uid, EmergencyTeamMemberReqDTO emergencyTeamMemberReqDTO) {
|
//查询是否存在
|
EmergencyTeamMemberInfoDO emergencyTeamMemberInfoDO = emergencyTeamMemberInfoService.selectEmergencyTeamMemberById(emergencyTeamMemberReqDTO.getId());
|
if (emergencyTeamMemberInfoDO==null){
|
throw new EmergencyException(EmergencyResultCodes.TEAM_USER_NOT_EXIST);
|
}else{
|
EmergencyTeamMemberInfo emergencyTeamMemberInfo = new EmergencyTeamMemberInfo();
|
BeanUtils.copyProperties(emergencyTeamMemberReqDTO,emergencyTeamMemberInfo);
|
emergencyTeamMemberInfo.setUpdateUid(uid);
|
emergencyTeamMemberInfo.setGmtModitify(new Date());
|
emergencyTeamMemberInfoService.updateEmergencyTeamMember(emergencyTeamMemberInfo);
|
return new ResultVO(ResultCodes.OK);
|
}
|
}
|
|
@Override
|
public ResultVO batchDeleteEmergencyTeam(Long[] ids) {
|
if (ids == null || ids.length==0){
|
throw new EmergencyException(EmergencyResultCodes.TEAM_NULL);
|
}else{
|
for (Long id : ids){
|
deleteEmergencyTeam(id);
|
}
|
return new ResultVO(ResultCodes.OK);
|
}
|
}
|
|
@Override
|
public ResultVO getEmergencyTeamMemberByTeamId(Long teamId) {
|
List<EmergencyTeamMemberInfoDO> emergencyTeamMemberInfoDOList = emergencyTeamMemberInfoService.selectByEmergencyTeamId(teamId);
|
List<EmergencyTeamMemberRespDTO> emergencyTeamMemberRespDTOList = BeanCopyUtils.copyBeanList(emergencyTeamMemberInfoDOList , EmergencyTeamMemberRespDTO.class);
|
return new ResultVO<>(ResultCodes.OK,emergencyTeamMemberRespDTOList);
|
}
|
|
private void deleteEmergencyTeam(Long id) {
|
//查询是否存在
|
EmergencyTeamInfoDetailDO emergencyTeamInfoDetailDO = emergencyTeamInfoService.selectEmergencyTeamById(id);
|
if (emergencyTeamInfoDetailDO==null){
|
throw new EmergencyException(EmergencyResultCodes.TEAM_NOT_EXIST);
|
}else{
|
Long teamId = emergencyTeamInfoDetailDO.getId();
|
//删除人员
|
emergencyTeamMemberInfoService.deleteEmergencyTeamMemberByTeamId(teamId);
|
//删除附件
|
emergencyTeamFileInfoService.deleteEmergencyTeamFileByTeamId(teamId);
|
//删除应急队伍
|
emergencyTeamInfoService.deleteEmergencyTeamById(teamId);
|
}
|
}
|
|
@Override
|
public ResultVO deleteEmergencyTeamMember(Long id) {
|
//查询是否存在
|
EmergencyTeamMemberInfoDO emergencyTeamMemberInfoDO = emergencyTeamMemberInfoService.selectEmergencyTeamMemberById(id);
|
if (emergencyTeamMemberInfoDO==null){
|
throw new EmergencyException(EmergencyResultCodes.TEAM_USER_NOT_EXIST);
|
}else{
|
emergencyTeamMemberInfoService.deleteEmergencyTeamMemberById(id);
|
return new ResultVO(ResultCodes.OK);
|
}
|
}
|
|
@Override
|
public ResultVO<EmergencyTeamMemberRespDTO> getEmergencyTeamMemberById(Long id) {
|
//查询是否存在
|
EmergencyTeamMemberInfoDO emergencyTeamMemberInfoDO = emergencyTeamMemberInfoService.selectEmergencyTeamMemberById(id);
|
if (emergencyTeamMemberInfoDO==null){
|
throw new EmergencyException(EmergencyResultCodes.TEAM_USER_NOT_EXIST);
|
}else{
|
EmergencyTeamMemberRespDTO emergencyTeamMemberRespDTO = new EmergencyTeamMemberRespDTO();
|
BeanUtils.copyProperties(emergencyTeamMemberInfoDO,emergencyTeamMemberRespDTO);
|
return new ResultVO<>(ResultCodes.OK ,emergencyTeamMemberRespDTO);
|
}
|
}
|
|
|
/**
|
* 验证必填项
|
* @return
|
*/
|
private void checkRequired(EmergencyTeamReqDTO emergencyTeamReqDTO) {
|
//名称
|
if (StringUtils.isBlank(emergencyTeamReqDTO.getTeamName())) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_NAME_NULL);
|
}
|
//级别
|
if (emergencyTeamReqDTO.getTeamLevel() == null) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_LEVEL_NULL);
|
}
|
//负责人
|
if (emergencyTeamReqDTO.getPrincipalUid() == null || emergencyTeamReqDTO.getPrincipalUid() == 0) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_PRINCIPAL_NULL);
|
}
|
//负责人部门
|
if (emergencyTeamReqDTO.getPrincipalDepartmentId() == null || emergencyTeamReqDTO.getPrincipalDepartmentId() == 0) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_PRINCIPAL_DEPARTMENT_NULL);
|
}
|
//负责人手机
|
if (StringUtils.isBlank(emergencyTeamReqDTO.getPrincipalPhone())) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_PRINCIPAL_PHONE_NULL);
|
}
|
//固定电话
|
if (StringUtils.isBlank(emergencyTeamReqDTO.getTelephoneNumber())) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_TELEPHONE_NUMBER_NULL);
|
}
|
//人员列表如果不为空,则需要验证其中的必填项
|
if (!CollectionUtils.isEmpty(emergencyTeamReqDTO.getMemberList())){
|
for(EmergencyTeamMemberReqDTO emergencyTeamMemberReqDTO : emergencyTeamReqDTO.getMemberList()){
|
//工号
|
if (StringUtils.isBlank(emergencyTeamMemberReqDTO.getJobNumber())) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_USER_JOB_NUMBER_NULL);
|
}
|
//名称
|
if (StringUtils.isBlank(emergencyTeamMemberReqDTO.getName())) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_USER_NAME_NULL);
|
}
|
//性别
|
if (emergencyTeamMemberReqDTO.getGender()==null) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_USER_GENDER_NULL);
|
}
|
//手机号码
|
if (StringUtils.isBlank(emergencyTeamMemberReqDTO.getPhone())) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_USER_PHONE_NULL);
|
}
|
//职务
|
if (StringUtils.isBlank(emergencyTeamMemberReqDTO.getPosition())) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_USER_POSITION_NULL);
|
}
|
}
|
}
|
}
|
|
/**
|
* 枚举验证
|
*/
|
private void checkEnum(EmergencyTeamReqDTO emergencyTeamReqDTO) {
|
if (TeamLevelEnum.getByCode(emergencyTeamReqDTO.getTeamLevel()) == null) {
|
throw new EmergencyException(EmergencyResultCodes.TEAM_ENUM_LEVEL_NOT_EXIST);
|
}
|
}
|
|
}
|