zhangf
2024-05-08 0414ddb0b2b3a7199ae6181a770f97ac140dbd73
emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyTeamServiceImpl.java
@@ -8,11 +8,15 @@
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.excepiton.EmergencyServiceException;
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;
@@ -28,6 +32,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Service("emergencyTeamService")
public class EmergencyTeamServiceImpl implements EmergencyTeamService {
@@ -70,7 +75,7 @@
        return new SearchResultVO<>(
                true,
                pageIndex,
                pageSize,
                pageSize,page.getPages(),
                page.getTotal(),
                respList,
                ResultCodes.OK
@@ -78,10 +83,11 @@
    }
    @Override
    public ResultVO addEmergencyTeam(Long uid, EmergencyTeamReqDTO emergencyTeamReqDTO) {
    public ResultVO<EmergencyTeamDetailRespDTO> addEmergencyTeam(Long uid, EmergencyTeamReqDTO emergencyTeamReqDTO) {
        //必填项验证
        checkRequired(emergencyTeamReqDTO);
        // 验证枚举
        checkEnum(emergencyTeamReqDTO);
        Date nowDate = new Date();
        //1.新增应急队伍
@@ -92,67 +98,283 @@
        emergencyTeamInfo.setGmtCreate(nowDate);
        emergencyTeamInfoService.addEmergencyTeam(emergencyTeamInfo);
        //2.新增应急队伍附件
        List<EmergencyTeamFileInfo> fileInfoList = BeanCopyUtils.copyBeanList(emergencyTeamReqDTO.getFileList(), EmergencyTeamFileInfo.class);
        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(emergencyTeamInfo.getId());
            EmergencyTeamFileInfo.setTeamId(teamId);
            EmergencyTeamFileInfo.setDelFlag(false);
            EmergencyTeamFileInfo.setCreateUid(uid);
            EmergencyTeamFileInfo.setGmtCreate(nowDate);
        });
        emergencyTeamFileInfoService.addEmergencyTeamFile(fileInfoList);
        //3.新增应急队伍人员
        List<EmergencyTeamMemberInfo> memberInfoList = BeanCopyUtils.copyBeanList(emergencyTeamReqDTO.getMemberList(), EmergencyTeamMemberInfo.class);
        memberInfoList.forEach(EmergencyTeamMemberInfo -> {
            EmergencyTeamMemberInfo.setTeamId(emergencyTeamInfo.getId());
            EmergencyTeamMemberInfo.setDelFlag(false);
            EmergencyTeamMemberInfo.setCreateUid(uid);
            EmergencyTeamMemberInfo.setGmtCreate(nowDate);
        });
        emergencyTeamMemberInfoService.addEmergencyTeamMember(memberInfoList);
        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 EmergencyServiceException(EmergencyResultCodes.TEAM_NAME_NULL);
            throw new EmergencyException(EmergencyResultCodes.TEAM_NAME_NULL);
        }
        //级别
        if (StringUtils.isBlank(emergencyTeamReqDTO.getTeamLevel())) {
            throw new EmergencyServiceException(EmergencyResultCodes.TEAM_LEVEL_NULL);
        if (emergencyTeamReqDTO.getTeamLevel() == null) {
            throw new EmergencyException(EmergencyResultCodes.TEAM_LEVEL_NULL);
        }
        //负责人
        if (emergencyTeamReqDTO.getPrincipalUid() == null || emergencyTeamReqDTO.getPrincipalUid() == 0) {
            throw new EmergencyServiceException(EmergencyResultCodes.TEAM_PRINCIPAL_NULL);
            throw new EmergencyException(EmergencyResultCodes.TEAM_PRINCIPAL_NULL);
        }
        //负责人部门
        if (emergencyTeamReqDTO.getPrincipalDepartmentId() == null || emergencyTeamReqDTO.getPrincipalDepartmentId() == 0) {
            throw new EmergencyServiceException(EmergencyResultCodes.TEAM_PRINCIPAL_DEPARTMENT_NULL);
            throw new EmergencyException(EmergencyResultCodes.TEAM_PRINCIPAL_DEPARTMENT_NULL);
        }
        //负责人手机
        if (StringUtils.isBlank(emergencyTeamReqDTO.getPrincipalPhone())) {
            throw new EmergencyServiceException(EmergencyResultCodes.TEAM_PRINCIPAL_PHONE_NULL);
            throw new EmergencyException(EmergencyResultCodes.TEAM_PRINCIPAL_PHONE_NULL);
        }
        //固定电话
        if (StringUtils.isBlank(emergencyTeamReqDTO.getTelephoneNumber())) {
            throw new EmergencyServiceException(EmergencyResultCodes.TEAM_TELEPHONE_NUMBER_NULL);
            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);
                }
            }
        }
    }
    /**
     * 验证数据库是否存在
     *
     * @return
     * 枚举验证
     */
    public Boolean checkeExist() {
        return null;
    private void checkEnum(EmergencyTeamReqDTO emergencyTeamReqDTO) {
        if (TeamLevelEnum.getByCode(emergencyTeamReqDTO.getTeamLevel()) == null) {
            throw new EmergencyException(EmergencyResultCodes.TEAM_ENUM_LEVEL_NOT_EXIST);
        }
    }
}