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.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.equipment.entity.*; import com.gkhy.safePlatform.equipment.model.dto.req.*; import com.gkhy.safePlatform.equipment.model.dto.resp.EquipmentInfoDto; import com.gkhy.safePlatform.equipment.repository.EquipmentInfoRepository; import com.gkhy.safePlatform.equipment.service.*; import com.gkhy.safePlatform.equipment.utils.QueryHelpPlus; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.io.Serializable; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 设备设施详细信息(EquipmentInfo)表服务实现类 * * @author xurui * @since 2022-07-19 14:02:50 */ @Service("equipmentInfoService") public class EquipmentInfoServiceImpl extends ServiceImpl implements EquipmentInfoService { @Autowired private EquipmentInfoRepository equipmentInfoRepository; @Autowired private EquipmentTakecareDetailService equipmentTakecareDetailService; @Autowired private EquipmentTestDetailService equipmentTestDetailService; @Autowired private EquipmentRepairDetailService equipmentRepairDetailService; @Autowired private EquipmentTakecareStardardDetailService equipmentTakecareStardardDetailService; @Autowired private EquipmentCheckStandardDetailService equipmentCheckStandardDetailService; @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(EquipmentInfo.class, pageQuery.getSearchParams())); List respList = BeanCopyUtils.copyBeanList(page.getRecords(), EquipmentInfoDto.class); //获取额外信息 respList.forEach(f->{ //设备保养 EquipmentTakecareDetailQueryCriteria criteria = new EquipmentTakecareDetailQueryCriteria(); criteria.setEquipmentId(f.getId()); criteria.setInfoTpe(pageQuery.getSearchParams().getInfoType()); List takecareDetailList = equipmentTakecareDetailService.queryAll(criteria); f.setTakecareDetailList(takecareDetailList); //设备检测 EquipmentTestDetailQueryCriteria criteria1 = new EquipmentTestDetailQueryCriteria(); criteria1.setEquipmentId(f.getId()); criteria1.setInfoTpe(pageQuery.getSearchParams().getInfoType()); List checkDetailList = equipmentTestDetailService.queryAll(criteria1); f.setCheckDetailList(checkDetailList); //设备检查 TODO //设备维修 EquipmentRepairDetailQueryCriteria criteria2 = new EquipmentRepairDetailQueryCriteria(); criteria2.setEquipmentId(f.getId()); criteria2.setInfoTpe(pageQuery.getSearchParams().getInfoType()); List repairDetailList = equipmentRepairDetailService.queryAll(criteria2); f.setRepaireDetailList(repairDetailList); }); return new SearchResultVO<>( true, pageIndex, pageSize, page.getTotal(), respList, ResultCodes.OK ); } @Override public List queryAll(EquipmentInfoQueryCriteria criteria) { return baseMapper.selectList(QueryHelpPlus.getPredicate(EquipmentInfo.class, criteria)); } @Override public EquipmentInfoDto selectOne(Serializable id) { EquipmentInfo equipmentInfo = baseMapper.selectById(id); if(equipmentInfo == null){ return null; } EquipmentInfoDto infoDto = BeanCopyUtils.copyBean(equipmentInfo, EquipmentInfoDto.class); //设备保养 EquipmentTakecareDetailQueryCriteria criteria = new EquipmentTakecareDetailQueryCriteria(); criteria.setEquipmentId(infoDto.getId()); criteria.setInfoTpe(infoDto.getInfoType()); List takecareDetailList = equipmentTakecareDetailService.queryAll(criteria); infoDto.setTakecareDetailList(takecareDetailList); //设备检测 EquipmentTestDetailQueryCriteria criteria1 = new EquipmentTestDetailQueryCriteria(); criteria1.setEquipmentId(infoDto.getId()); criteria1.setInfoTpe(infoDto.getInfoType()); List checkDetailList = equipmentTestDetailService.queryAll(criteria1); infoDto.setCheckDetailList(checkDetailList); //设备检查 TODO //设备维修 EquipmentRepairDetailQueryCriteria criteria2 = new EquipmentRepairDetailQueryCriteria(); criteria2.setEquipmentId(infoDto.getId()); criteria2.setInfoTpe(infoDto.getInfoType()); List repairDetailList = equipmentRepairDetailService.queryAll(criteria2); infoDto.setRepaireDetailList(repairDetailList); //检查标准 EquipmentCheckStandardDetailQueryCriteria criteria3 = new EquipmentCheckStandardDetailQueryCriteria(); criteria3.setEquipmentId(infoDto.getId()); criteria3.setInfoTpe(infoDto.getInfoType()); List checkStandardDetailList = equipmentCheckStandardDetailService.queryAll(criteria3); infoDto.setCheckStandardeDetailList(checkStandardDetailList); //保养标准 EquipmentTakecareStardardDetailQueryCriteria criteria4 = new EquipmentTakecareStardardDetailQueryCriteria(); criteria4.setEquipmentId(infoDto.getId()); criteria4.setInfoTpe(infoDto.getInfoType()); List takecareStardardDetailList = equipmentTakecareStardardDetailService.queryAll(criteria4); infoDto.setTakecareStardardeDetailList(takecareStardardDetailList); return infoDto; } @Override public void addOrUpdate(EquipmentInfoSaveOrUpdate infoDto) { EquipmentInfo equipmentInfo = BeanCopyUtils.copyBean(infoDto, EquipmentInfo.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(equipmentInfo.getInfoType()); }); 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(equipmentInfo.getInfoType()); }); 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(equipmentInfo.getInfoType()); }); 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(equipmentInfo.getInfoType()); }); 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(equipmentInfo.getInfoType()); }); 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); } } @Override public Object statistics() { QueryWrapper wrapper = new QueryWrapper() .select("stop_status as stopStatus,count(0) as count") .groupBy("stop_status"); return this.listMaps(wrapper); } }