kongzy
2024-09-23 d015cc0b48ca51a2b93b6c60c91dc352a104b1e7
emergency/emergency-service/src/main/java/com/gkhy/safePlatform/emergency/service/impl/EmergencyTeamServiceImpl.java
@@ -7,13 +7,16 @@
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.EmergencyTeamMemberInfoDO;
import com.gkhy.safePlatform.emergency.excepiton.EmergencyServiceException;
import com.gkhy.safePlatform.emergency.entity.EmergencyTeamFileInfoDO;
import com.gkhy.safePlatform.emergency.entity.EmergencyTeamInfoPageDO;
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;
@@ -27,7 +30,9 @@
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 {
@@ -53,9 +58,9 @@
        }
        List<EmergencyTeamPageRespDTO> respList = new ArrayList<>();
        List<EmergencyTeamInfoPageDO> emergencyTeamInfoPageDOList = emergencyTeamInfoService.selectEmergencyTeamList(page,emergencyTeamDBQuery);
        List<EmergencyTeamInfoPageDO> emergencyTeamInfoPageDOList = emergencyTeamInfoService.selectEmergencyTeamList(page, emergencyTeamDBQuery);
        if (!CollectionUtils.isEmpty(emergencyTeamInfoPageDOList)){
        if (!CollectionUtils.isEmpty(emergencyTeamInfoPageDOList)) {
            for (EmergencyTeamInfoPageDO emergencyTeamInfoPageDO : emergencyTeamInfoPageDOList) {
                List<EmergencyTeamFileInfoDO> emergencyTeamFileInfoDOList = emergencyTeamFileInfoService.selectByEmergencyTeamId(emergencyTeamInfoPageDO.getId());
                List<EmergencyTeamFileRespDTO> emergencyTeamFileRespDTOList = BeanCopyUtils.copyBeanList(emergencyTeamFileInfoDOList, EmergencyTeamFileRespDTO.class);
@@ -70,73 +75,306 @@
        return new SearchResultVO<>(
                true,
                pageIndex,
                pageSize,
                pageSize,page.getPages(),
                page.getTotal(),
                respList,
                ResultCodes.OK
                );
        );
    }
    @Override
    public ResultVO addEmergencyTeam(Long uid, EmergencyTeamReqDTO emergencyTeamReqDTO) {
    public ResultVO<EmergencyTeamDetailRespDTO> addEmergencyTeam(Long uid, EmergencyTeamReqDTO emergencyTeamReqDTO) {
        //必填项验证
        checkRequired(emergencyTeamReqDTO);
        //1.新增应急队伍
        EmergencyTeamFileInfoDO emergencyTeamFileInfoDO = new EmergencyTeamFileInfoDO();
        BeanUtils.copyProperties(emergencyTeamReqDTO,emergencyTeamFileInfoDO);
        emergencyTeamInfoService.addEmergencyTeam(emergencyTeamFileInfoDO);
        //2.新增应急队伍附件
        List<EmergencyTeamFileInfoDO> fileInfoDOList = new ArrayList<>();
        BeanCopyUtils.copyBeanList(emergencyTeamReqDTO.getFileList(),fileInfoDOList.getClass());
        fileInfoDOList.forEach(e->e.setTeamId(emergencyTeamFileInfoDO.getId()));
        emergencyTeamFileInfoService.addEmergencyTeamFile(fileInfoDOList);
        //3.新增应急队伍人员
        List<EmergencyTeamMemberInfoDO> memberInfoDOList = new ArrayList<>();
        BeanCopyUtils.copyBeanList(emergencyTeamReqDTO.getMemberList(),memberInfoDOList.getClass());
        memberInfoDOList.forEach(e->e.setTeamId(emergencyTeamFileInfoDO.getId()));
        emergencyTeamMemberInfoService.addEmergencyTeamMember(memberInfoDOList);
        // 验证枚举
        checkEnum(emergencyTeamReqDTO);
        return ResultVO.success();
        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){
    private void checkRequired(EmergencyTeamReqDTO emergencyTeamReqDTO) {
        //名称
        if (StringUtils.isBlank(emergencyTeamReqDTO.getTeamName())){
            throw new EmergencyServiceException(EmergencyResultCodes.TEAM_NAME_NULL);
        if (StringUtils.isBlank(emergencyTeamReqDTO.getTeamName())) {
            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 (StringUtils.isBlank(emergencyTeamReqDTO.getPrincipalUid())){
            throw new EmergencyServiceException(EmergencyResultCodes.TEAM_PRINCIPAL_NULL);
        if (emergencyTeamReqDTO.getPrincipalUid() == null || emergencyTeamReqDTO.getPrincipalUid() == 0) {
            throw new EmergencyException(EmergencyResultCodes.TEAM_PRINCIPAL_NULL);
        }
        //负责人部门
        if(emergencyTeamReqDTO.getPrincipalDepartmentId() == null || emergencyTeamReqDTO.getPrincipalDepartmentId() == 0){
            throw new EmergencyServiceException(EmergencyResultCodes.TEAM_PRINCIPAL_DEPARTMENT_NULL);
        if (emergencyTeamReqDTO.getPrincipalDepartmentId() == null || emergencyTeamReqDTO.getPrincipalDepartmentId() == 0) {
            throw new EmergencyException(EmergencyResultCodes.TEAM_PRINCIPAL_DEPARTMENT_NULL);
        }
        //负责人手机
        if (StringUtils.isBlank(emergencyTeamReqDTO.getPrincipalPhone())){
            throw new EmergencyServiceException(EmergencyResultCodes.TEAM_PRINCIPAL_PHONE_NULL);
        if (StringUtils.isBlank(emergencyTeamReqDTO.getPrincipalPhone())) {
            throw new EmergencyException(EmergencyResultCodes.TEAM_PRINCIPAL_PHONE_NULL);
        }
        //固定电话
        if (StringUtils.isBlank(emergencyTeamReqDTO.getTelephoneNumber())){
            throw new EmergencyServiceException(EmergencyResultCodes.TEAM_TELEPHONE_NUMBER_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);
                }
            }
        }
    }
    /**
     * 验证数据库是否存在
     * @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);
        }
    }
}