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> selectEmergencyTeamList(PageQuery query) { Long pageIndex = query.getPageIndex(); Long pageSize = query.getPageSize(); Page page = new Page<>(pageIndex, pageSize); EmergencyTeamDBQuery emergencyTeamDBQuery = new EmergencyTeamDBQuery(); if (query.getSearchParams() != null) { BeanUtils.copyProperties(query.getSearchParams(), emergencyTeamDBQuery); } List respList = new ArrayList<>(); List emergencyTeamInfoPageDOList = emergencyTeamInfoService.selectEmergencyTeamList(page, emergencyTeamDBQuery); if (!CollectionUtils.isEmpty(emergencyTeamInfoPageDOList)) { for (EmergencyTeamInfoPageDO emergencyTeamInfoPageDO : emergencyTeamInfoPageDOList) { List emergencyTeamFileInfoDOList = emergencyTeamFileInfoService.selectByEmergencyTeamId(emergencyTeamInfoPageDO.getId()); List 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 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 emergencyTeamFileReqDTOList){ List 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 emergencyTeamMemberReqDTOList){ List 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 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 emergencyTeamFileInfoDOList = emergencyTeamFileInfoService.selectByEmergencyTeamId(id); if (!CollectionUtils.isEmpty(emergencyTeamFileInfoDOList)){ List emergencyTeamFileRespDTOList = BeanCopyUtils.copyBeanList(emergencyTeamFileInfoDOList , EmergencyTeamFileRespDTO.class); emergencyTeamDetailRespDTO.setFileList(emergencyTeamFileRespDTOList); } //查找对应的人员 List emergencyTeamMemberInfoDOList = emergencyTeamMemberInfoService.selectByEmergencyTeamId(id); if (!CollectionUtils.isEmpty(emergencyTeamMemberInfoDOList)){ List 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 emergencyTeamFileReqDTOList){ List emergencyTeamFileInfoDOList = emergencyTeamFileInfoService.selectByEmergencyTeamId(teamId); List oldIdsList = emergencyTeamFileInfoDOList.stream().map(EmergencyTeamFileInfoDO::getId).collect(Collectors.toList()); List newIdsList = new ArrayList<>(); //新增的附件集合 List addList = new ArrayList<>(); //删除的附件集合(id) List 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 emergencyTeamMemberInfoDOList = emergencyTeamMemberInfoService.selectByEmergencyTeamId(teamId); List 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 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); } } }