package com.gkhy.safePlatform.targetDuty.service.impl; 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.targetDuty.entity.TargetMng; import com.gkhy.safePlatform.targetDuty.entity.TargetType; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetDivideDetailQueryCriteria; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetExamineSaveOrUpdate; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetDivideDetailDto; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetMngDto; import com.gkhy.safePlatform.targetDuty.repository.TargetExamineRepository; import com.gkhy.safePlatform.targetDuty.entity.TargetExamine; import com.gkhy.safePlatform.targetDuty.repository.TargetMngRepository; import com.gkhy.safePlatform.targetDuty.repository.TargetTypeRepository; import com.gkhy.safePlatform.targetDuty.service.CommonService; import com.gkhy.safePlatform.targetDuty.service.TargetDivideDetailService; import com.gkhy.safePlatform.targetDuty.service.TargetExamineService; 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.targetDuty.model.dto.req.TargetExamineQueryCriteria; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetExamineDto; import com.gkhy.safePlatform.targetDuty.utils.QueryHelpPlus; import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; /** * (TargetExamine)表服务实现类 * * @author xurui * @since 2022-07-22 09:30:01 */ @Service("targetExamineService") public class TargetExamineServiceImpl extends ServiceImpl implements TargetExamineService { @Autowired private TargetExamineRepository targetExamineRepository; @Autowired private TargetMngRepository targetMngRepository; @Resource private CommonService commonService; @Resource private TargetDivideDetailService targetDivideDetailService; @Autowired private TargetTypeRepository targetTypeRepository; @Override public ResultVO queryAll(PageQuery pageQuery) { Long pageIndex = pageQuery.getPageIndex(); Long pageSize = pageQuery.getPageSize(); IPage page = new Page<>(pageIndex, pageSize); page = targetMngRepository.selectPage(page, QueryHelpPlus.getPredicate(TargetMng.class, pageQuery.getSearchParams())); List respList = BeanCopyUtils.copyBeanList(page.getRecords(), TargetExamineDto.class); respList.forEach(dto->{ //查询关联分解信息 TargetDivideDetailQueryCriteria criteria = new TargetDivideDetailQueryCriteria(); criteria.setTargetId(dto.getId()); List respList1 = BeanCopyUtils.copyBeanList(targetDivideDetailService.queryAll(criteria), TargetDivideDetailDto.class); // --------------------------- 获取部门信息----------------------- //收集所用到的部门ID Set collectDepIdSet = new HashSet(); respList1.forEach(f->{ collectDepIdSet.add(f.getDutyDepartmentId()); collectDepIdSet.add(f.getMakerDepartmentId()); }); //获取部门名集合 Map depNameMap = commonService.getDepName(collectDepIdSet); respList1.forEach(f->{ f.setDutyDepartmentName(depNameMap.get(f.getDutyDepartmentId())); f.setMakerDepartmentName(depNameMap.get(f.getMakerDepartmentId())); }); // --------------------------- 获取目标分类名称----------------------- //收集所用到的目标分类ID Set collectTypeSet = new HashSet(); respList1.forEach(f->{ collectTypeSet.add(f.getTargetTypeId()); }); //获取目标分类名集合 if(!collectTypeSet.isEmpty()){ List typeList = targetTypeRepository.selectBatchIds(collectTypeSet); // TODO Map typeNameMap = typeList.stream() .collect(Collectors.toMap(TargetType::getId, TargetType::getTypeName,(k1, k2)->k1)); respList1.forEach(f->{ f.setTargetTypeName(typeNameMap.get(f.getTargetTypeId())); }); } // --------------------------- 获取考核结果----------------------- //收集所用到的分解详情ID Set collectExamResultSet = new HashSet(); respList1.forEach(f->{ collectExamResultSet.add(f.getId()); }); //获取核结果集合 if(!collectTypeSet.isEmpty()){ List typeList = targetExamineRepository.selectBatchIds(collectTypeSet); Map examResultMap = typeList.stream() .collect(Collectors.toMap(TargetExamine::getId, TargetExamine::getExamineResult,(k1, k2)->k1)); respList1.forEach(f->{ f.setExamineResult(examResultMap.get(f.getId())); }); } dto.setTargetDivideDetailList(respList1); }); return new SearchResultVO<>( true, pageIndex, pageSize,page.getPages(), page.getTotal(), respList, ResultCodes.OK ); } @Override public List queryAll(TargetExamineQueryCriteria criteria) { return baseMapper.selectList(QueryHelpPlus.getPredicate(TargetExamine.class, criteria)); } // @Override // public void addOrUpdate(TargetExamineSaveOrUpdate infoDto) { // // // if(StringUtils.hasText(infoDto.getDelIds())) { // List idList = Arrays.stream(infoDto.getDelIds().split(",")).map(s-> Long.parseLong(s.trim())) // .collect(Collectors.toList()); // this.removeByIds(idList); // } // // infoDto.getExamineList().forEach(f->{ // f.setTargetId(infoDto.getId()); // }); // this.saveOrUpdateBatch(infoDto.getExamineList()); // } }