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.EmergencyResultCodes; import com.gkhy.safePlatform.emergency.excepiton.EmergencyException; import com.gkhy.safePlatform.emergency.model.dto.req.EmergencySuppliesMaintainReqDTO; import com.gkhy.safePlatform.emergency.model.dto.req.EmergencySuppliesMaintainUserReqDTO; import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencySuppliesMaintainDetailRespDTO; import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencySuppliesMaintainPageRespDTO; import com.gkhy.safePlatform.emergency.model.dto.resp.EmergencySuppliesMaintainUserRespDTO; import com.gkhy.safePlatform.emergency.query.EmergencySuppliesMaintainQuery; import com.gkhy.safePlatform.emergency.query.db.EmergencySuppliesMaintainDBQuery; import com.gkhy.safePlatform.emergency.service.EmergencySuppliesMaintainService; import com.gkhy.safePlatform.emergency.service.baseService.EmergencySuppliesInfoService; import com.gkhy.safePlatform.emergency.service.baseService.EmergencySuppliesMaintainInfoService; import com.gkhy.safePlatform.emergency.service.baseService.EmergencySuppliesMaintainUserInfoService; 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("emergencySuppliesMaintainService") public class EmergencySuppliesMaintainServiceImpl implements EmergencySuppliesMaintainService { @Autowired private EmergencySuppliesMaintainInfoService emergencySuppliesMaintainInfoService; @Autowired private EmergencySuppliesMaintainUserInfoService emergencySuppliesMaintainUserInfoService; @Autowired private EmergencySuppliesInfoService emergencySuppliesInfoService; @Override public SearchResultVO> selectEmergencySuppliesMaintainList(PageQuery query) { Long pageIndex = query.getPageIndex(); Long pageSize = query.getPageSize(); Page page = new Page<>(pageIndex, pageSize); EmergencySuppliesMaintainDBQuery emergencySuppliesMaintainDBQuery = new EmergencySuppliesMaintainDBQuery(); if (query.getSearchParams() != null) { BeanUtils.copyProperties(query.getSearchParams(), emergencySuppliesMaintainDBQuery); } List emergencySuppliesMaintainListDoInfoList = emergencySuppliesMaintainInfoService.selectEmergencySuppliesMaintainList(page,emergencySuppliesMaintainDBQuery); List respList = BeanCopyUtils.copyBeanList(emergencySuppliesMaintainListDoInfoList, EmergencySuppliesMaintainPageRespDTO.class); return new SearchResultVO<>( true, pageIndex, pageSize,page.getPages(), page.getTotal(), respList, ResultCodes.OK ); } @Override public ResultVO addEmergencySuppliesMaintain(Long uid, EmergencySuppliesMaintainReqDTO emergencySuppliesMaintainReqDTO) { Long suppliesId = emergencySuppliesMaintainReqDTO.getSuppliesId(); if (suppliesId==null){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_NULL); }else{ EmergencySuppliesInfoDetailDO emergencySuppliesInfoDetailDO = emergencySuppliesInfoService.selectEmergencySuppliesById(suppliesId); if (emergencySuppliesInfoDetailDO==null){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_NOT_EXIST); }else{ Date nowDate = new Date(); // 新增应急物资检查 EmergencySuppliesMaintainInfo emergencySuppliesMaintainInfo = new EmergencySuppliesMaintainInfo(); BeanUtils.copyProperties(emergencySuppliesMaintainReqDTO,emergencySuppliesMaintainInfo); emergencySuppliesMaintainInfo.setDelFlag(false); emergencySuppliesMaintainInfo.setCreateUid(uid); emergencySuppliesMaintainInfo.setGmtCreate(nowDate); emergencySuppliesMaintainInfoService.addEmergencySuppliesMaintain(emergencySuppliesMaintainInfo); // 新增急演练计划应急人员表 if (!CollectionUtils.isEmpty(emergencySuppliesMaintainReqDTO.getUserList())) { addEmergencySuppliesMaintainUser(uid, emergencySuppliesMaintainInfo.getId(), nowDate, emergencySuppliesMaintainReqDTO.getUserList()); } return new ResultVO<>(ResultCodes.OK); } } } private void addEmergencySuppliesMaintainUser(Long uid, Long MaintainId, Date nowDate, List userList) { List emergencySuppliesMaintainUserInfoList = BeanCopyUtils.copyBeanList(userList, EmergencySuppliesMaintainUserInfo.class); emergencySuppliesMaintainUserInfoList.forEach(EmergencySuppliesMaintainUserInfo -> { EmergencySuppliesMaintainUserInfo.setDelFlag(false); EmergencySuppliesMaintainUserInfo.setCreateUid(uid); EmergencySuppliesMaintainUserInfo.setGmtCreate(nowDate); EmergencySuppliesMaintainUserInfo.setMaintainId(MaintainId); }); for (EmergencySuppliesMaintainUserInfo emergencySuppliesMaintainUserInfo : emergencySuppliesMaintainUserInfoList) { emergencySuppliesMaintainUserInfoService.addEmergencySuppliesMaintainUser(emergencySuppliesMaintainUserInfo); } } @Override public ResultVO getEmergencySuppliesMaintainById(Long id) { EmergencySuppliesMaintainDetailRespDTO emergencySuppliesMaintainDetailRespDTO = new EmergencySuppliesMaintainDetailRespDTO(); // 查询是否存在 EmergencySuppliesMaintainInfoDetailDO emergencySuppliesMaintainInfoDetailDO = emergencySuppliesMaintainInfoService.selectEmergencySuppliesMaintainById(id); if (emergencySuppliesMaintainInfoDetailDO==null){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_MAINTAIN_NOT_EXIST); }else{ BeanUtils.copyProperties(emergencySuppliesMaintainInfoDetailDO,emergencySuppliesMaintainDetailRespDTO); // 查找对应的人员表 List emergencySuppliesMaintainUserInfoDOList = emergencySuppliesMaintainUserInfoService.selectEmergencySuppliesMaintainUserBySuppliesMaintainId(id); if (!CollectionUtils.isEmpty(emergencySuppliesMaintainUserInfoDOList)) { List emergencySuppliesMaintainUserRespDTOList = BeanCopyUtils.copyBeanList(emergencySuppliesMaintainUserInfoDOList, EmergencySuppliesMaintainUserRespDTO.class); emergencySuppliesMaintainDetailRespDTO.setUserList(emergencySuppliesMaintainUserRespDTOList); } return new ResultVO<>(ResultCodes.OK,emergencySuppliesMaintainDetailRespDTO); } } @Override public ResultVO updateEmergencySuppliesMaintain(Long uid, EmergencySuppliesMaintainReqDTO emergencySuppliesMaintainReqDTO) { Date nowDate = new Date(); // 查询是否存在 EmergencySuppliesMaintainInfoDetailDO emergencySuppliesMaintainInfoDetailDO = emergencySuppliesMaintainInfoService.selectEmergencySuppliesMaintainById(emergencySuppliesMaintainReqDTO.getId()); if (emergencySuppliesMaintainInfoDetailDO==null){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_MAINTAIN_NOT_EXIST); }else{ EmergencySuppliesMaintainInfo emergencySuppliesMaintainInfo = new EmergencySuppliesMaintainInfo(); BeanUtils.copyProperties(emergencySuppliesMaintainReqDTO,emergencySuppliesMaintainInfo); emergencySuppliesMaintainInfo.setUpdateUid(uid); emergencySuppliesMaintainInfo.setGmtModitify(nowDate); emergencySuppliesMaintainInfoService.updateEmergencySuppliesMaintain(emergencySuppliesMaintainInfo); // 更新急演练计划应急人员表 if (!CollectionUtils.isEmpty(emergencySuppliesMaintainReqDTO.getUserList())) { updateEmergencySuppliesMaintainUser(uid, emergencySuppliesMaintainInfo.getId(), nowDate, emergencySuppliesMaintainReqDTO.getUserList()); } return new ResultVO<>(ResultCodes.OK); } } private void updateEmergencySuppliesMaintainUser(Long uid, Long suppliesMaintainId, Date nowDate, List UserReqDTOList) { List emergencySuppliesMaintainUserInfoDOList = emergencySuppliesMaintainUserInfoService.selectEmergencySuppliesMaintainUserBySuppliesMaintainId(suppliesMaintainId); List oldIdsList = emergencySuppliesMaintainUserInfoDOList.stream().map(EmergencySuppliesMaintainUserInfoDO::getId).collect(Collectors.toList()); List newIdsList = new ArrayList<>(); //新增的区域集合 List addList = new ArrayList<>(); //删除的区域集合(id) List deleteList = new ArrayList<>(); for (EmergencySuppliesMaintainUserReqDTO emergencySuppliesMaintainUserReqDTO : UserReqDTOList) { //如果不存在id则表示页面新增的附件 if (emergencySuppliesMaintainUserReqDTO.getId() == null) { EmergencySuppliesMaintainUserInfo emergencySuppliesMaintainUserInfo = new EmergencySuppliesMaintainUserInfo(); BeanUtils.copyProperties(emergencySuppliesMaintainUserReqDTO, emergencySuppliesMaintainUserInfo); emergencySuppliesMaintainUserInfo.setDelFlag(false); emergencySuppliesMaintainUserInfo.setGmtCreate(nowDate); emergencySuppliesMaintainUserInfo.setCreateUid(uid); emergencySuppliesMaintainUserInfo.setMaintainId(suppliesMaintainId); addList.add(emergencySuppliesMaintainUserInfo); } //如果存在id则判断页面是否删除 else { newIdsList.add(emergencySuppliesMaintainUserReqDTO.getId()); } } for (Long oldId : oldIdsList) { if (!newIdsList.contains(oldId)) { deleteList.add(oldId); } } if (!CollectionUtils.isEmpty(addList)) { for (EmergencySuppliesMaintainUserInfo emergencySuppliesMaintainUserInfo : addList) { emergencySuppliesMaintainUserInfoService.addEmergencySuppliesMaintainUser(emergencySuppliesMaintainUserInfo); } } if (!CollectionUtils.isEmpty(deleteList)) { emergencySuppliesMaintainUserInfoService.deleteEmergencySuppliesMaintainUserByIds(deleteList); } } @Override public ResultVO batchDeleteEmergencySuppliesMaintain(Long[] ids) { if (ids == null || ids.length==0){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_MAINTAIN_NULL); }else{ for (Long id : ids){ deleteEmergencySuppliesMaintain(id); } return new ResultVO(ResultCodes.OK); } } private void deleteEmergencySuppliesMaintain(Long id) { //查询是否存在 EmergencySuppliesMaintainInfoDetailDO emergencySuppliesMaintainInfoDetailDO = emergencySuppliesMaintainInfoService.selectEmergencySuppliesMaintainById(id); if (emergencySuppliesMaintainInfoDetailDO==null){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_MAINTAIN_NOT_EXIST); }else{ Long suppliesMaintainId = emergencySuppliesMaintainInfoDetailDO.getId(); emergencySuppliesMaintainInfoService.deleteEmergencySuppliesMaintain(suppliesMaintainId); //删除人员 emergencySuppliesMaintainUserInfoService.deleteEmergencySuppliesMaintainUserBySuppliesMaintainId(suppliesMaintainId); } } }