package com.gkhy.safePlatform.equipment.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.safePlatform.account.rpc.apimodel.AccountDepartmentService; import com.gkhy.safePlatform.equipment.entity.*; import com.gkhy.safePlatform.equipment.model.dto.req.*; import com.gkhy.safePlatform.equipment.repository.EquipmentTypeMngRepository; import com.gkhy.safePlatform.equipment.repository.KeypointEquipmentInfoRepository; import com.gkhy.safePlatform.equipment.service.*; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.commons.query.PageQuery; import com.gkhy.safePlatform.commons.vo.ResultVO; import com.gkhy.safePlatform.commons.vo.SearchResultVO; import com.gkhy.safePlatform.equipment.model.dto.resp.KeypointEquipmentInfoDto; import com.gkhy.safePlatform.equipment.utils.QueryHelpPlus; import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; import org.springframework.util.StringUtils; import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; /** * 重点监管装置/设备 详细信息(KeypointEquipmentInfo)表服务实现类 * * @author xurui * @since 2022-07-19 13:36:27 */ @Service("keypointEquipmentInfoService") public class KeypointEquipmentInfoServiceImpl extends ServiceImpl implements KeypointEquipmentInfoService { @Autowired private KeypointEquipmentInfoRepository keypointEquipmentInfoRepository; @Autowired private EquipmentTakecareDetailService equipmentTakecareDetailService; @Autowired private EquipmentTestDetailService equipmentTestDetailService; @Autowired private EquipmentRepairDetailService equipmentRepairDetailService; @Autowired private EquipmentTakecareStardardDetailService equipmentTakecareStardardDetailService; @Autowired private EquipmentCheckStandardDetailService equipmentCheckStandardDetailService; @DubboReference(check = false) private AccountDepartmentService accountDepartmentService; @Autowired private EquipmentInfoService equipmentInfoService; @Autowired private EquipmentTypeMngRepository equipmentTypeMngRepository; @Override public ResultVO queryAll(PageQuery pageQuery) { Long pageIndex = pageQuery.getPageIndex(); Long pageSize = pageQuery.getPageSize(); IPage page = new Page<>(pageIndex, pageSize); page = baseMapper.selectPage(page, QueryHelpPlus.getPredicate(KeypointEquipmentInfo.class, pageQuery.getSearchParams())); List respList = BeanCopyUtils.copyBeanList(page.getRecords(), KeypointEquipmentInfoDto.class); Set collectTypeIdSet = new HashSet(); //获取额外信息 respList.forEach(f->{ //设备保养 EquipmentTakecareDetailQueryCriteria criteria = new EquipmentTakecareDetailQueryCriteria(); criteria.setEquipmentId(f.getId()); criteria.setInfoTpe(3); List takecareDetailList = equipmentTakecareDetailService.queryAll(criteria); f.setTakecareDetailList(takecareDetailList); //设备检测 EquipmentTestDetailQueryCriteria criteria1 = new EquipmentTestDetailQueryCriteria(); criteria1.setEquipmentId(f.getId()); criteria1.setInfoTpe(3); List checkDetailList = equipmentTestDetailService.queryAll(criteria1); f.setCheckDetailList(checkDetailList); //设备检查 TODO //设备维修 EquipmentRepairDetailQueryCriteria criteria2 = new EquipmentRepairDetailQueryCriteria(); criteria2.setEquipmentId(f.getId()); criteria2.setInfoTpe(3); List repairDetailList = equipmentRepairDetailService.queryAll(criteria2); f.setRepaireDetailList(repairDetailList); // --------------------------- 获取设备设施类型管理ID----------------------- collectTypeIdSet.add(f.getEquipmentTypeId()); // --------------------------- 获取部门信息----------------------- //收集所用到的部门ID Set collectDepIdSet = new HashSet(); collectDepIdSet.add(f.getDepartmentId()); takecareDetailList.forEach(info->{collectDepIdSet.add(info.getLeadingPersonDepartmentId());}); checkDetailList.forEach(info->{collectDepIdSet.add(info.getTestPersonDepartmentId());}); repairDetailList.forEach(info->{collectDepIdSet.add(info.getRepairPersonDepartmentId());}); //获取部门名集合 Map depNameMap = equipmentInfoService.getDepName(collectDepIdSet); //set f.setDepartmentName(depNameMap.get(f.getDepartmentId())); takecareDetailList.forEach(info->{info.setLeadingPersonDepartmentName(depNameMap.get(info.getLeadingPersonDepartmentId()));}); checkDetailList.forEach(info->{info.setTestPersonDepartmentName(depNameMap.get(info.getTestPersonDepartmentId()));}); repairDetailList.forEach(info->{info.setRepairPersonDepartmentName(depNameMap.get(info.getRepairPersonDepartmentId()));}); }); //获取设备设施类型名称 if(!collectTypeIdSet.isEmpty()){ List typeMngList = equipmentTypeMngRepository.selectList(new QueryWrapper().in("id",collectTypeIdSet)); Map typePool = new HashMap<>(); typeMngList.forEach(f->{ typePool.put(f.getId(),f.getTypeName()); }); respList.forEach(f->{ f.setEquipmentTypeName(typePool.get(f.getEquipmentTypeId())); }); } return new SearchResultVO<>( true, pageIndex, pageSize,page.getPages(), page.getTotal(), respList, ResultCodes.OK ); } @Override public List queryAll(KeypointEquipmentInfoQueryCriteria criteria) { return baseMapper.selectList(QueryHelpPlus.getPredicate(KeypointEquipmentInfo.class, criteria)); } @Override public KeypointEquipmentInfoDto selectOne(Serializable id) { KeypointEquipmentInfo keypointEquipmentInfo = baseMapper.selectById(id); if(keypointEquipmentInfo == null){ return null; } KeypointEquipmentInfoDto infoDto = BeanCopyUtils.copyBean(keypointEquipmentInfo, KeypointEquipmentInfoDto.class); //设备保养 EquipmentTakecareDetailQueryCriteria criteria = new EquipmentTakecareDetailQueryCriteria(); criteria.setEquipmentId(infoDto.getId()); criteria.setInfoTpe(3); List takecareDetailList = equipmentTakecareDetailService.queryAll(criteria); infoDto.setTakecareDetailList(takecareDetailList); //设备检测 EquipmentTestDetailQueryCriteria criteria1 = new EquipmentTestDetailQueryCriteria(); criteria1.setEquipmentId(infoDto.getId()); criteria1.setInfoTpe(3); List checkDetailList = equipmentTestDetailService.queryAll(criteria1); infoDto.setCheckDetailList(checkDetailList); //设备检查 TODO //设备维修 EquipmentRepairDetailQueryCriteria criteria2 = new EquipmentRepairDetailQueryCriteria(); criteria2.setEquipmentId(infoDto.getId()); criteria2.setInfoTpe(3); List repairDetailList = equipmentRepairDetailService.queryAll(criteria2); infoDto.setRepaireDetailList(repairDetailList); //检查标准 EquipmentCheckStandardDetailQueryCriteria criteria3 = new EquipmentCheckStandardDetailQueryCriteria(); criteria3.setEquipmentId(infoDto.getId()); criteria3.setInfoTpe(3); List checkStandardDetailList = equipmentCheckStandardDetailService.queryAll(criteria3); infoDto.setCheckStandardeDetailList(checkStandardDetailList); //保养标准 EquipmentTakecareStardardDetailQueryCriteria criteria4 = new EquipmentTakecareStardardDetailQueryCriteria(); criteria4.setEquipmentId(infoDto.getId()); criteria4.setInfoTpe(3); List takecareStardardDetailList = equipmentTakecareStardardDetailService.queryAll(criteria4); infoDto.setTakecareStardardeDetailList(takecareStardardDetailList); // --------------------------- 获取部门信息----------------------- //收集所用到的部门ID Set collectDepIdSet = new HashSet(); collectDepIdSet.add(infoDto.getDepartmentId()); takecareDetailList.forEach(info->{collectDepIdSet.add(info.getLeadingPersonDepartmentId());}); checkDetailList.forEach(info->{collectDepIdSet.add(info.getTestPersonDepartmentId());}); repairDetailList.forEach(info->{collectDepIdSet.add(info.getRepairPersonDepartmentId());}); //获取部门名集合 Map depNameMap = equipmentInfoService.getDepName(collectDepIdSet); //set infoDto.setDepartmentName(depNameMap.get(infoDto.getDepartmentId())); takecareDetailList.forEach(info->{info.setLeadingPersonDepartmentName(depNameMap.get(info.getLeadingPersonDepartmentId()));}); checkDetailList.forEach(info->{info.setTestPersonDepartmentName(depNameMap.get(info.getTestPersonDepartmentId()));}); repairDetailList.forEach(info->{info.setRepairPersonDepartmentName(depNameMap.get(info.getRepairPersonDepartmentId()));}); EquipmentTypeMng typeMng = equipmentTypeMngRepository.selectOne(new QueryWrapper().eq("id",infoDto.getEquipmentTypeId())); if(typeMng != null){ infoDto.setEquipmentTypeName(typeMng.getTypeName()); } // TODO 调用应急预案RPC infoDto.setEmergencePlanName(""); return infoDto; } @Override public void addOrUpdate(KeypointEquipmentInfoDto infoDto) { KeypointEquipmentInfo equipmentInfo = BeanCopyUtils.copyBean(infoDto, KeypointEquipmentInfo.class); //保存主数据 if (infoDto.getId() == null) { //新增 this.save(equipmentInfo); } else { this.update(equipmentInfo,new UpdateWrapper().eq("id",infoDto.getId())); } //保存设备保养 List takecareDetailList = infoDto.getTakecareDetailList(); takecareDetailList.forEach(f->{ f.setEquipmentId(equipmentInfo.getId()); f.setInfoTpe(3); }); equipmentTakecareDetailService.saveOrUpdateBatch(takecareDetailList); if(StringUtils.hasText(infoDto.getDelTakecareDetails())){ List idList = Arrays.stream(infoDto.getDelTakecareDetails().split(",")).map(s-> Long.parseLong(s.trim())) .collect(Collectors.toList()); equipmentTakecareDetailService.removeByIds(idList); } //保存设备检测 List testDetailList = infoDto.getTestDetailList(); testDetailList.forEach(f->{ f.setEquipmentId(equipmentInfo.getId()); f.setInfoTpe(3); }); equipmentTestDetailService.saveOrUpdateBatch(testDetailList); if(StringUtils.hasText(infoDto.getDelTestDetails())){ List idList = Arrays.stream(infoDto.getDelTestDetails().split(",")).map(s-> Long.parseLong(s.trim())) .collect(Collectors.toList()); equipmentTestDetailService.removeByIds(idList); } //设备检查 TODO //保存设备维修 List repaireDetailList = infoDto.getRepaireDetailList(); repaireDetailList.forEach(f->{ f.setEquipmentId(equipmentInfo.getId()); f.setInfoTpe(3); }); equipmentRepairDetailService.saveOrUpdateBatch(repaireDetailList); if(StringUtils.hasText(infoDto.getDelRepaireDetails())){ List idList = Arrays.stream(infoDto.getDelRepaireDetails().split(",")).map(s-> Long.parseLong(s.trim())) .collect(Collectors.toList()); equipmentRepairDetailService.removeByIds(idList); } //保存检查标准 List checkStandardeDetailList = infoDto.getCheckStandardeDetailList(); checkStandardeDetailList.forEach(f->{ f.setEquipmentId(equipmentInfo.getId()); f.setInfoTpe(3); }); equipmentCheckStandardDetailService.saveOrUpdateBatch(checkStandardeDetailList); if(StringUtils.hasText(infoDto.getDelCheckStandardeDetails())){ List idList = Arrays.stream(infoDto.getDelCheckStandardeDetails().split(",")).map(s-> Long.parseLong(s.trim())) .collect(Collectors.toList()); equipmentCheckStandardDetailService.removeByIds(idList); } //保存保养标准 List takecareStardardeDetailList = infoDto.getTakecareStardardeDetailList(); takecareStardardeDetailList.forEach(f->{ f.setEquipmentId(equipmentInfo.getId()); f.setInfoTpe(3); }); equipmentTakecareStardardDetailService.saveOrUpdateBatch(takecareStardardeDetailList); if(StringUtils.hasText(infoDto.getDelTakecareStardardeDetails())){ List idList = Arrays.stream(infoDto.getDelTakecareStardardeDetails().split(",")).map(s-> Long.parseLong(s.trim())) .collect(Collectors.toList()); equipmentTakecareStardardDetailService.removeByIds(idList); } } }