| | |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ycl.platform.base.CheckIndex; |
| | | import com.ycl.platform.domain.dto.CheckResultExportDTO; |
| | | import com.ycl.platform.domain.dto.CheckScoreDTO; |
| | | import com.ycl.platform.domain.dto.CheckScoreIndexDTO; |
| | | import com.ycl.platform.domain.dto.ScoreIndexDTO; |
| | | import com.ycl.platform.domain.entity.*; |
| | | import com.ycl.platform.domain.vo.CheckIndexCarVO; |
| | | import com.ycl.platform.domain.vo.CheckIndexFaceVO; |
| | | import com.ycl.platform.domain.vo.CheckIndexVideoVO; |
| | | import com.ycl.platform.domain.vo.CheckScoreDetailVO; |
| | | import com.ycl.platform.domain.vo.*; |
| | | import com.ycl.platform.mapper.CheckRuleMapper; |
| | | import com.ycl.platform.mapper.CheckScoreMapper; |
| | | import com.ycl.platform.mapper.CheckTemplateMapper; |
| | |
| | | import utils.poi.ExcelUtilManySheet; |
| | | |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @Autowired |
| | | private ISysDeptService deptService; |
| | | |
| | | |
| | | /** |
| | | * 查询考核积分指标 |
| | | * |
| | |
| | | Integer templateId = 0; |
| | | //方便切换改为:根据score考核类别和dto考核标签查模板规则和权重,注意同种类同标签只能有一个模板 |
| | | QueryWrapper<CheckTemplate> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("examine_tag",checkScoreIndexDTO.getExamineTag()); |
| | | wrapper.eq("examine_category",checkScore.getExamineCategory()); |
| | | wrapper.eq("examine_tag", checkScoreIndexDTO.getExamineTag()); |
| | | wrapper.eq("examine_category", checkScore.getExamineCategory()); |
| | | Optional<CheckTemplate> first = templateMapper.selectList(wrapper).stream().findFirst(); |
| | | if(first.isPresent()){ |
| | | if (first.isPresent()) { |
| | | CheckTemplate checkTemplate = first.get(); |
| | | templateId = checkTemplate.getId(); |
| | | } |
| | |
| | | //控制index表的发布状态 |
| | | List<Integer> ids = checkScoreDTO.getId(); |
| | | QueryWrapper<CheckScore> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.in("id",ids); |
| | | queryWrapper.in("id", ids); |
| | | List<CheckScore> scoreList = scoreMapper.selectList(queryWrapper); |
| | | //最多为3次循环 |
| | | for (CheckScore checkScore : scoreList) { |
| | | Short examineCategory = checkScore.getExamineCategory(); |
| | | if(CheckConstants.Rule_Category_Video.equals(examineCategory)){ |
| | | if (CheckConstants.Rule_Category_Video.equals(examineCategory)) { |
| | | UpdateWrapper<CheckIndexVideo> updateWrapper = new UpdateWrapper<>(); |
| | | updateWrapper.set("publish",code); |
| | | updateWrapper.eq("dept_id",checkScore.getDeptId()); |
| | | updateWrapper.eq("examine_tag",checkScore.getExamineTag()); |
| | | updateWrapper.between("create_time",DateUtils.getDayStart(checkScore.getCreateTime()),DateUtils.getDayEnd(checkScore.getCreateTime())); |
| | | updateWrapper.set("publish", code); |
| | | updateWrapper.eq("id", checkScore.getIndexId()); |
| | | indexVideoService.update(updateWrapper); |
| | | }else if(CheckConstants.Rule_Category_Car.equals(examineCategory)){ |
| | | } else if (CheckConstants.Rule_Category_Car.equals(examineCategory)) { |
| | | UpdateWrapper<CheckIndexCar> updateWrapper = new UpdateWrapper<>(); |
| | | updateWrapper.set("publish",code); |
| | | updateWrapper.eq("dept_id",checkScore.getDeptId()); |
| | | updateWrapper.eq("examine_tag",checkScore.getExamineTag()); |
| | | updateWrapper.between("create_time",DateUtils.getDayStart(checkScore.getCreateTime()),DateUtils.getDayEnd(checkScore.getCreateTime())); |
| | | updateWrapper.set("publish", code); |
| | | updateWrapper.eq("id", checkScore.getIndexId()); |
| | | indexCarService.update(updateWrapper); |
| | | }else if(CheckConstants.Rule_Category_Face.equals(examineCategory)){ |
| | | } else if (CheckConstants.Rule_Category_Face.equals(examineCategory)) { |
| | | UpdateWrapper<CheckIndexFace> updateWrapper = new UpdateWrapper<>(); |
| | | updateWrapper.set("publish",code); |
| | | updateWrapper.eq("dept_id",checkScore.getDeptId()); |
| | | updateWrapper.eq("examine_tag",checkScore.getExamineTag()); |
| | | updateWrapper.between("create_time",DateUtils.getDayStart(checkScore.getCreateTime()),DateUtils.getDayEnd(checkScore.getCreateTime())); |
| | | updateWrapper.set("publish", code); |
| | | updateWrapper.eq("id", checkScore.getIndexId()); |
| | | indexFaceService.update(updateWrapper); |
| | | } |
| | | } |
| | |
| | | * @return 考核积分 |
| | | */ |
| | | @Override |
| | | public void exportIndex(HttpServletResponse response, CheckScore checkScoreDTO) throws IOException { |
| | | String date = checkScoreDTO.getDate(); |
| | | public void exportIndex(HttpServletResponse response, CheckResultExportDTO exportDTO) throws IOException { |
| | | String date = exportDTO.getDate(); |
| | | //如果请求参数时间为空,查这条记录的时间 |
| | | if (StringUtils.isEmpty(checkScoreDTO.getDate()) && CollectionUtils.isEmpty(checkScoreDTO.getQuarter())) { |
| | | CheckScore checkScore = getById(checkScoreDTO.getId()); |
| | | Date createTime = checkScore.getCreateTime(); |
| | | if (StringUtils.isEmpty(exportDTO.getDate()) && CollectionUtils.isEmpty(exportDTO.getQuarter())) { |
| | | SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); |
| | | date = formatter.format(createTime); |
| | | if (exportDTO.getId() != null) { |
| | | CheckScore checkScore = getById(exportDTO.getId()); |
| | | Date createTime = checkScore.getCreateTime(); |
| | | date = formatter.format(createTime); |
| | | } else { |
| | | //防止卡片页面导出不传scoreId,导致报错 |
| | | date = formatter.format(new Date()); |
| | | } |
| | | } |
| | | |
| | | /** 导三张sheet */ |
| | | //车辆 |
| | | CheckIndexCar checkIndexCar = new CheckIndexCar(); |
| | | checkIndexCar.setDate(date); |
| | | checkIndexCar.setQuarter(checkScoreDTO.getQuarter()); |
| | | checkIndexCar.setQuarter(exportDTO.getQuarter()); |
| | | checkIndexCar.setDeptId(exportDTO.getDeptId()); |
| | | checkIndexCar.setDeptIds(exportDTO.getDeptIds()); |
| | | checkIndexCar.setExamineTags(exportDTO.getExamineTags()); |
| | | //权限控制 只能查看已发布 |
| | | roleControl(checkIndexCar); |
| | | List<CheckIndexCar> checkIndexCars = indexCarService.selectCheckIndexCarList(checkIndexCar); |
| | | //计算平均值放在excel最后 |
| | | if (exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexCars)) { |
| | | //先区分各个区县,再区分考核标签 |
| | | Map<Long, List<CheckIndexCar>> carMap = checkIndexCars.stream().collect(Collectors.groupingBy(CheckIndexCar::getDeptId)); |
| | | carMap.forEach((deptId,list)->{ |
| | | List<CheckIndexCar> provinceList = list.stream().filter(car -> CheckConstants.Examine_Tag_Province.equals(car.getExamineTag())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(provinceList)) { |
| | | checkIndexCars.add(CheckIndexCar.calculateAverage(provinceList)); |
| | | } |
| | | List<CheckIndexCar> countyList = list.stream().filter(car -> CheckConstants.Examine_Tag_County.equals(car.getExamineTag())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(countyList)) { |
| | | checkIndexCars.add(CheckIndexCar.calculateAverage(countyList)); |
| | | } |
| | | }); |
| | | } |
| | | List<CheckIndexCarVO> checkIndexCarVOS = new ArrayList<>(); |
| | | for (CheckIndexCar indexCar : checkIndexCars) { |
| | | CheckIndexCarVO excelVo = CheckIndexCar.getExcelVo(indexCar); |
| | |
| | | //人脸 |
| | | CheckIndexFace checkIndexFace = new CheckIndexFace(); |
| | | checkIndexFace.setDate(date); |
| | | checkIndexFace.setQuarter(checkScoreDTO.getQuarter()); |
| | | checkIndexFace.setQuarter(exportDTO.getQuarter()); |
| | | checkIndexFace.setDeptId(exportDTO.getDeptId()); |
| | | checkIndexFace.setDeptIds(exportDTO.getDeptIds()); |
| | | checkIndexFace.setExamineTags(exportDTO.getExamineTags()); |
| | | //权限控制 只能查看已发布 |
| | | roleControl(checkIndexFace); |
| | | List<CheckIndexFace> checkIndexFaces = indexFaceService.selectCheckIndexFaceList(checkIndexFace); |
| | | //计算平均值放在excel最后 |
| | | if (exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexFaces)) { |
| | | //先区分各个区县,再区分考核标签 |
| | | Map<Long, List<CheckIndexFace>> faceMap = checkIndexFaces.stream().collect(Collectors.groupingBy(CheckIndexFace::getDeptId)); |
| | | faceMap.forEach((deptId,list)->{ |
| | | List<CheckIndexFace> provinceList = list.stream().filter(face -> CheckConstants.Examine_Tag_Province.equals(face.getExamineTag())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(provinceList)) { |
| | | checkIndexFaces.add(CheckIndexFace.calculateAverage(provinceList)); |
| | | } |
| | | List<CheckIndexFace> countyList = list.stream().filter(face -> CheckConstants.Examine_Tag_County.equals(face.getExamineTag())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(countyList)) { |
| | | checkIndexFaces.add(CheckIndexFace.calculateAverage(countyList)); |
| | | } |
| | | }); |
| | | } |
| | | List<CheckIndexFaceVO> checkIndexFaceVOS = new ArrayList<>(); |
| | | for (CheckIndexFace indexFace : checkIndexFaces) { |
| | | CheckIndexFaceVO excelVo = CheckIndexFace.getExcelVo(indexFace); |
| | |
| | | //视频 |
| | | CheckIndexVideo checkIndexVideo = new CheckIndexVideo(); |
| | | checkIndexVideo.setDate(date); |
| | | checkIndexVideo.setQuarter(checkScoreDTO.getQuarter()); |
| | | checkIndexVideo.setQuarter(exportDTO.getQuarter()); |
| | | checkIndexVideo.setDeptId(exportDTO.getDeptId()); |
| | | checkIndexVideo.setDeptIds(exportDTO.getDeptIds()); |
| | | checkIndexVideo.setExamineTags(exportDTO.getExamineTags()); |
| | | //权限控制 只能查看已发布 |
| | | roleControl(checkIndexVideo); |
| | | List<CheckIndexVideo> checkIndexVideos = indexVideoService.selectCheckIndexVideoList(checkIndexVideo); |
| | | //计算平均值放在excel最后 |
| | | if (exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexVideos)) { |
| | | //先区分各个区县,再区分考核标签 |
| | | Map<Long, List<CheckIndexVideo>> videoMap = checkIndexVideos.stream().collect(Collectors.groupingBy(CheckIndexVideo::getDeptId)); |
| | | videoMap.forEach((deptId,list)->{ |
| | | List<CheckIndexVideo> provinceList = list.stream().filter(video -> CheckConstants.Examine_Tag_Province.equals(video.getExamineTag())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(provinceList)) { |
| | | checkIndexVideos.add(CheckIndexVideo.calculateAverage(provinceList)); |
| | | } |
| | | List<CheckIndexVideo> countyList = list.stream().filter(video -> CheckConstants.Examine_Tag_County.equals(video.getExamineTag())).collect(Collectors.toList()); |
| | | if (!CollectionUtils.isEmpty(countyList)) { |
| | | checkIndexVideos.add(CheckIndexVideo.calculateAverage(countyList)); |
| | | } |
| | | }); |
| | | } |
| | | List<CheckIndexVideoVO> checkIndexVideoVOS = new ArrayList<>(); |
| | | for (CheckIndexVideo indexVideo : checkIndexVideos) { |
| | | CheckIndexVideoVO excelVo = CheckIndexVideo.getExcelVo(indexVideo); |
| | |
| | | mysheet.add(e1); |
| | | mysheet.add(e2); |
| | | mysheet.add(e3); |
| | | //规则明细 |
| | | List<RuleExcelVO> allRuleTemplate = templateRuleMapper.getAllRuleTemplate(); |
| | | //整合数据 |
| | | List<RuleExcelVO> countyRuleList = allRuleTemplate.stream().filter(vo -> vo.getExamineTag().equals(Integer.parseInt(CheckConstants.Examine_Tag_County + ""))).collect(Collectors.toList()); |
| | | List<RuleExcelVO> provinceRuleList = allRuleTemplate.stream().filter(vo -> vo.getExamineTag().equals(Integer.parseInt(CheckConstants.Examine_Tag_Province + ""))).collect(Collectors.toList()); |
| | | //用区县规则做主体展示 |
| | | for (RuleExcelVO countyRule : countyRuleList) { |
| | | countyRule.setCountyWeight(countyRule.getWeight()); |
| | | //筛选同种规则权重 |
| | | for (RuleExcelVO provinceRule : provinceRuleList) { |
| | | if (provinceRule.getRuleId().equals(countyRule.getRuleId()) && provinceRule.getExamineCategory().equals(countyRule.getExamineCategory())) { |
| | | countyRule.setProvinceWeight(provinceRule.getWeight()); |
| | | } |
| | | } |
| | | } |
| | | ExcelExp e4 = new ExcelExp("规则明细", countyRuleList, RuleExcelVO.class); |
| | | mysheet.add(e4); |
| | | ExcelUtilManySheet<List<ExcelExp>> util = new ExcelUtilManySheet<>(mysheet); |
| | | util.exportExcelManySheet(response, mysheet); |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void roleControl(BaseEntity checkScore) { |
| | | List<SysRole> roles = SecurityUtils.getLoginUser().getUser().getRoles(); |
| | | SysUser user = SecurityUtils.getLoginUser().getUser(); |