package com.gkhy.safePlatform.emergency.service.impl; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gkhy.safePlatform.account.rpc.apimodel.AccountDepartmentService; import com.gkhy.safePlatform.account.rpc.apimodel.model.resp.DepInfoRPCRespDTO; import com.gkhy.safePlatform.commons.co.ContextCacheUser; import com.gkhy.safePlatform.commons.enums.E; 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.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.enums.EmergencySuppliesClassificationEnum; import com.gkhy.safePlatform.emergency.enums.EmergencySuppliesStatusEnum; import com.gkhy.safePlatform.emergency.excepiton.EmergencyException; import com.gkhy.safePlatform.emergency.model.dto.req.*; import com.gkhy.safePlatform.emergency.model.dto.resp.*; import com.gkhy.safePlatform.emergency.query.EmergencySuppliesCountQuery; import com.gkhy.safePlatform.emergency.query.EmergencySuppliesQuery; import com.gkhy.safePlatform.emergency.query.db.EmergencySuppliesDBQuery; import com.gkhy.safePlatform.emergency.service.EmergencySuppliesMaintainService; import com.gkhy.safePlatform.emergency.service.EmergencySuppliesService; import com.gkhy.safePlatform.emergency.service.baseService.*; import org.apache.dubbo.config.annotation.DubboReference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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.*; import java.util.stream.Collectors; @Service("emergencySuppliesService") public class EmergencySuppliesServiceImpl implements EmergencySuppliesService { private static final Logger log = LoggerFactory.getLogger(EmergencySuppliesServiceImpl.class); @Autowired private EmergencySuppliesInfoService emergencySuppliesInfoService; @Autowired private EmergencySuppliesInspectInfoService emergencySuppliesInspectInfoService; @Autowired private EmergencySuppliesInspectUserInfoService emergencySuppliesInspectUserInfoService; @Autowired private EmergencySuppliesMaintainInfoService emergencySuppliesMaintainInfoService; @Autowired private EmergencySuppliesMaintainUserInfoService emergencySuppliesMaintainUserInfoService; @DubboReference(check = false) private AccountDepartmentService accountDepartmentService; @Override public SearchResultVO> selectEmergencySuppliesList(PageQuery query) { Long pageIndex = query.getPageIndex(); Long pageSize = query.getPageSize(); Page page = new Page<>(pageIndex, pageSize); EmergencySuppliesDBQuery emergencySuppliesDBQuery = new EmergencySuppliesDBQuery(); if (query.getSearchParams() != null) { BeanUtils.copyProperties(query.getSearchParams(), emergencySuppliesDBQuery); } List emergencySuppliesListDoInfoList = emergencySuppliesInfoService.selectEmergencySuppliesList(page,emergencySuppliesDBQuery); List respList = BeanCopyUtils.copyBeanList(emergencySuppliesListDoInfoList, EmergencySuppliesPageRespDTO.class); Map depPool = new HashMap<>(); respList.forEach(AccidentExpressPageRespDTO ->{ // 设置部门名称 if (!depPool.containsKey(AccidentExpressPageRespDTO.getDepartmentId())) { ResultVO rpcResult = accountDepartmentService.getDepInfoByDepId(AccidentExpressPageRespDTO.getDepartmentId()); if (rpcResult != null && rpcResult.getCode().equals(ResultCodes.OK.getCode())) { if (rpcResult.getData() != null) { DepInfoRPCRespDTO dep = (DepInfoRPCRespDTO) rpcResult.getData(); depPool.put(dep.getDepId(), dep.getDepName()); } }} String depName = depPool.get(AccidentExpressPageRespDTO.getDepartmentId()); AccidentExpressPageRespDTO.setDeptName(depName); }); return new SearchResultVO<>( true, pageIndex, pageSize,page.getPages(), page.getTotal(), respList, ResultCodes.OK ); } @Override public ResultVO addEmergencySupplies(Long uid, EmergencySuppliesReqDTO emergencySuppliesReqDTO) { // 验证必填 checkRequired(emergencySuppliesReqDTO); //验证枚举 checkEnum(emergencySuppliesReqDTO); Date nowDate = new Date(); // 新增应急物资 EmergencySuppliesInfo emergencySuppliesInfo = new EmergencySuppliesInfo(); BeanUtils.copyProperties(emergencySuppliesReqDTO,emergencySuppliesInfo); emergencySuppliesInfo.setDelFlag(false); emergencySuppliesInfo.setCreateUid(uid); emergencySuppliesInfo.setGmtCreate(nowDate); emergencySuppliesInfoService.addEmergencySupplies(emergencySuppliesInfo); return new ResultVO<>(ResultCodes.OK); } @Override public ResultVO getEmergencySuppliesById(Long id) { EmergencySuppliesDetailRespDTO emergencySuppliesDetailRespDTO = new EmergencySuppliesDetailRespDTO(); // 查询是否存在 EmergencySuppliesInfoDetailDO emergencySuppliesInfoDetailDO = emergencySuppliesInfoService.selectEmergencySuppliesById(id); if (emergencySuppliesInfoDetailDO==null){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_NOT_EXIST); }else{ BeanUtils.copyProperties(emergencySuppliesInfoDetailDO,emergencySuppliesDetailRespDTO); // 查找检查记录 List inspectDetailDOList = emergencySuppliesInspectInfoService.selectEmergencySuppliesInspectBySuppliesId(emergencySuppliesDetailRespDTO.getId()); if (!CollectionUtils.isEmpty(inspectDetailDOList)){ List inspectList = BeanCopyUtils.copyBeanList(inspectDetailDOList,EmergencySuppliesInspectDetailRespDTO.class); // 创建人 for (EmergencySuppliesInspectDetailRespDTO emergencySuppliesInspectDetailRespDTO :inspectList){ List inspectUserDOList = emergencySuppliesInspectUserInfoService.selectEmergencySuppliesInspectUserBySuppliesInspectId(emergencySuppliesInspectDetailRespDTO.getId()); if (!CollectionUtils.isEmpty(inspectUserDOList)){ List inspectUserList = BeanCopyUtils.copyBeanList(inspectUserDOList,EmergencySuppliesInspectUserRespDTO.class); emergencySuppliesInspectDetailRespDTO.setUserList(inspectUserList); } } emergencySuppliesDetailRespDTO.setInspectList(inspectList); } // 查找保养记录 List maintainDetailDOList = emergencySuppliesMaintainInfoService.selectEmergencySuppliesMaintainBySuppliesId(emergencySuppliesDetailRespDTO.getId()); if (!CollectionUtils.isEmpty(maintainDetailDOList)){ List maintainList = BeanCopyUtils.copyBeanList(maintainDetailDOList,EmergencySuppliesMaintainDetailRespDTO.class); // 创建人 for (EmergencySuppliesMaintainDetailRespDTO emergencySuppliesMaintainDetailRespDTO :maintainList){ List maintainUserDOList = emergencySuppliesMaintainUserInfoService.selectEmergencySuppliesMaintainUserBySuppliesMaintainId(emergencySuppliesMaintainDetailRespDTO.getId()); if (!CollectionUtils.isEmpty(maintainUserDOList)){ List maintainUserList = BeanCopyUtils.copyBeanList(maintainUserDOList,EmergencySuppliesMaintainUserRespDTO.class); emergencySuppliesMaintainDetailRespDTO.setUserList(maintainUserList); } } emergencySuppliesDetailRespDTO.setMaintainList(maintainList); } return new ResultVO<>(ResultCodes.OK,emergencySuppliesDetailRespDTO); } } @Override public ResultVO updateEmergencySupplies(Long uid, EmergencySuppliesReqDTO emergencySuppliesReqDTO) { // 验证必填 checkRequired(emergencySuppliesReqDTO); //验证枚举 checkEnum(emergencySuppliesReqDTO); Date nowDate = new Date(); // 查询是否存在 EmergencySuppliesInfoDetailDO emergencySuppliesInfoDetailDO = emergencySuppliesInfoService.selectEmergencySuppliesById(emergencySuppliesReqDTO.getId()); if (emergencySuppliesInfoDetailDO==null){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_NOT_EXIST); }else{ EmergencySuppliesInfo emergencySuppliesInfo = new EmergencySuppliesInfo(); BeanUtils.copyProperties(emergencySuppliesReqDTO,emergencySuppliesInfo); emergencySuppliesInfo.setUpdateUid(uid); emergencySuppliesInfo.setGmtModitify(nowDate); emergencySuppliesInfoService.updateEmergencySupplies(emergencySuppliesInfo); return new ResultVO<>(ResultCodes.OK); } } @Override public ResultVO batchDeleteEmergencySupplies( Long[] ids) { if (ids == null || ids.length==0){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_NULL); }else{ for (Long id : ids){ deleteEmergencySupplies(id); } return new ResultVO(ResultCodes.OK); } } /** * 按照物资类型分类获取列表 * @param currentUser * @return */ @Override public List emergencySuppliesList(ContextCacheUser currentUser) { List emergencySuppliesInfoList = emergencySuppliesInfoService.listByNoConditions(); List typeRespDTOList = new ArrayList<>(); for (EmergencySuppliesClassificationEnum teamLevelEnum : EmergencySuppliesClassificationEnum.values()) { EmergencySuppliesTypeRespDTO typeRespDTO = new EmergencySuppliesTypeRespDTO(); typeRespDTO.setMaterialType(teamLevelEnum.getCode()); typeRespDTO.setMaterialTypeName(teamLevelEnum.getValue()); List respDTOList = new ArrayList<>(); List collect = emergencySuppliesInfoList.stream().filter(item -> item.getClassification().equals(teamLevelEnum.getCode())).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(collect)){ for (EmergencySuppliesInfo info : collect) { EmergencySuppliesRespDTO respDTO = new EmergencySuppliesRespDTO(); BeanUtils.copyProperties(info,respDTO); respDTO.setMaterialType(info.getClassification()); respDTO.setMaterialTypeName(teamLevelEnum.getValue()); respDTOList.add(respDTO); } } typeRespDTO.setList(respDTOList); typeRespDTOList.add(typeRespDTO); } return typeRespDTOList; } @Override public List listCountByIds(ContextCacheUser currentUser, List ids) { if(null == ids || ids.size() == 0 ){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_PARAM_NULL); } List emergencySuppliesInfos = emergencySuppliesInfoService.listCountByIds(ids); List respDTOList = new ArrayList<>(); if(!CollectionUtils.isEmpty(emergencySuppliesInfos)){ respDTOList = BeanCopyUtils.copyBeanList(emergencySuppliesInfos,EmergencySuppliesRespDTO.class); } return respDTOList; } private void deleteEmergencySupplies(Long id) { //查询是否存在 EmergencySuppliesInfoDetailDO emergencySuppliesInfoDetailDO = emergencySuppliesInfoService.selectEmergencySuppliesById(id); if (emergencySuppliesInfoDetailDO==null){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_NOT_EXIST); }else{ Long SuppliesId = emergencySuppliesInfoDetailDO.getId(); emergencySuppliesInfoService.deleteEmergencySupplies(SuppliesId); // 删除保养记录 emergencySuppliesMaintainInfoService.deleteBySuppliesId(id); // 删除检查记录 emergencySuppliesInspectInfoService.deleteBySuppliesId(id); } } /** * 验证必填项 * @return */ private void checkRequired(EmergencySuppliesReqDTO emergencySuppliesReqDTO) { //名称 if (StringUtils.isBlank(emergencySuppliesReqDTO.getName())) { throw new EmergencyException(EmergencyResultCodes.SUPPLIES_NAME_NOT_EXIST); } } /** * 验证枚举 */ private void checkEnum(EmergencySuppliesReqDTO emergencySuppliesReqDTO){ if (EmergencySuppliesClassificationEnum.getByCode(emergencySuppliesReqDTO.getClassification())==null){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_ENUM_CLASSIFICATION_NOT_EXIST); } if (EmergencySuppliesStatusEnum.getByCode(emergencySuppliesReqDTO.getStatus())==null){ throw new EmergencyException(EmergencyResultCodes.SUPPLIES_ENUM_STATUS_NOT_EXIST); } } public List getEmergencySupplies(){ List allEmergencySupplies = emergencySuppliesInfoService.getAllEmergencySupplies(); List collect = new ArrayList<>(); for (EmergencySuppliesInfo allEmergencySupply : allEmergencySupplies) { EmergencySuppliesInfoRespDTO e = new EmergencySuppliesInfoRespDTO(); BeanUtils.copyProperties(allEmergencySupply,e); String value = EmergencySuppliesClassificationEnum.getByCode(allEmergencySupply.getClassification()).getValue(); e.setClassificationName(StringUtils.isEmpty(value) ? "" : value); ResultVO rpcResult = accountDepartmentService.getDepInfoByDepId(allEmergencySupply.getDepartmentId()); if (rpcResult != null && rpcResult.getCode().equals(ResultCodes.OK.getCode())) { if (rpcResult.getData() != null) { DepInfoRPCRespDTO dep = (DepInfoRPCRespDTO) rpcResult.getData(); e.setDepartmentName(dep.getDepName()); } } collect.add(e); } return collect; } }