Browse Source

年度评级优化

xujuanning 7 months ago
parent
commit
f591c155bf

+ 3 - 2
ims-service/ims-eval/src/main/java/com/ims/eval/controller/OrganizationRatingController.java

@@ -74,8 +74,9 @@ public class OrganizationRatingController {
 				  @RequestParam(value = "annualTarget", required = false) String annualTarget,
 				  @RequestParam(value = "bonusPoint", required = false) String bonusPoint,
 				  @RequestParam(value = "compositeScoreRaking", required = false) String compositeScoreRaking,
-				  @RequestParam(value = "projectLevel", required = false) String projectLevel) {
-		IPage<OrganizationRating> list = organizationRatingService.list(pageNum, pageSize, id, organizationYearRatingId, binSection, year, organizationShortName, organizationId, safetyEnvProtection, veto, netProfit, compositeScore, annualTarget, bonusPoint, compositeScoreRaking, projectLevel);
+				  @RequestParam(value = "projectLevel", required = false) String projectLevel,
+				  @RequestParam(value = "score", required = false) String score) {
+		IPage<OrganizationRating> list = organizationRatingService.list(pageNum, pageSize, id, organizationYearRatingId, binSection, year, organizationShortName, organizationId, safetyEnvProtection, veto, netProfit, compositeScore, annualTarget, bonusPoint, compositeScoreRaking, projectLevel,score);
 		if (list.getRecords().isEmpty()) {
 			return R.ok().data("");
 		}

+ 8 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/dao/OrganizationEvaluationInfoMapper.java

@@ -67,6 +67,14 @@ public interface OrganizationEvaluationInfoMapper extends BaseMapper<Organizatio
 																	@Param("binStage") String binStage,
 																	@Param("organizationId") String organizationId);
 
+	@DataPermission(type = true, isPermission = true, jbtype = true)
+	List<OrganizationEvaluationInfoResDTO> selNDPJInfoList(@Param("organizationEvaluationId") String organizationEvaluationId,
+																	@Param("organizationShortName") String organizationShortName,
+																	@Param("indicatorId") String indicatorId,
+																	@Param("binSection") String binSection,
+																	@Param("binStage") String binStage,
+																	@Param("organizationId") String organizationId);
+
 
 	int selectEvaluationInfoByStateCount(@Param("organizationEvaluationId") String organizationEvaluationId,
 										 @Param("deptId") String deptId,

+ 2 - 1
ims-service/ims-eval/src/main/java/com/ims/eval/dao/OrganizationRatingMapper.java

@@ -31,7 +31,8 @@ public interface OrganizationRatingMapper extends BaseMapper<OrganizationRating>
 										 @Param("annualTarget") String annualTarget,
 										 @Param("bonusPoint") String bonusPoint,
 										 @Param("compositeScoreRaking") String compositeScoreRaking,
-										 @Param("projectLevel") String projectLevel);
+										 @Param("projectLevel") String projectLevel,
+										 @Param("score") String score);
 
 
 	List<OrganizationRating> selectListSating(@Param("organizationYearRatingId") String organizationYearRatingId,

+ 1 - 1
ims-service/ims-eval/src/main/java/com/ims/eval/entity/OrganizationRating.java

@@ -148,7 +148,7 @@ public class OrganizationRating extends Model {
 	private String projectLevel;
 
 	/**
-	 * 
+	 * 综合得
 	 */
 	private String score;
 

+ 2 - 2
ims-service/ims-eval/src/main/java/com/ims/eval/service/IOrganizationRatingService.java

@@ -24,8 +24,7 @@ public interface IOrganizationRatingService extends IService<OrganizationRating>
 
 	IPage<OrganizationRating> list(Integer pageNum, Integer pageSize, String id,String organizationYearRatingId, String binSection,
 								   String year,String organizationShortName,String organizationId,String safetyEnvProtection,String veto,
-								   String netProfit,String compositeScore,String annualTarget,String bonusPoint,String compositeScoreRaking,String projectLevel);
-
+								   String netProfit,String compositeScore,String annualTarget,String bonusPoint,String compositeScoreRaking,String projectLevel,String score);
 
 	boolean generateRating(String organizationYearRatingId, String year);
 
@@ -37,4 +36,5 @@ public interface IOrganizationRatingService extends IService<OrganizationRating>
 
 	R importExcel(MultipartFile file,String binSection,String year);
 
+	int clearOldData(String year);
 }

+ 0 - 41
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/EvaluateReportServiceImpl.java

@@ -107,8 +107,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 			.collect(Collectors.toMap(OrganizationEvaluationRule::getOrganizationId, rule -> rule));
 
 		for (BinSection bi : sections) {
-			IPage<OrganizationRating> orgRatingList = iOrganizationRatingService.list(1, 100000, null, null, bi.getSectionCode(), evaluation.getYear(), null, null, null, null, null, null, null, null, null, null);
-
 			EvaluateReport evaluateReport = new EvaluateReport();
 
 			StringBuilder des = new StringBuilder();
@@ -157,7 +155,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 			reportName.append(bi.getSectionName());
 			reportName.append("考核评分");
 
-
 			evaluateReport.setEvaluateReportName(reportName.toString());
 			evaluateReport.setDes(des.toString());
 			evaluateReport.setOrganizationEvaluationId(evaluation.getId());
@@ -208,7 +205,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 				throw new CustomException("综合考核评分汇总表存储失败");
 			}
 
-
 			//获取当前模块得公司
 //			List<OrganizationEvaluationRule> ruleList = organizationEvaluationRuleService.getOrganizationEvaluationRuleByIds(evaluationRuleIds, bi.getId());
 			List<OrganizationEvaluationRule> ruleList = ruleListall.stream()
@@ -220,7 +216,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 					.filter(rule -> rule.getBinSection().contains(bi.getId())||rule.getBinSection().contains(bi.getMemo3())).collect(Collectors.toList());
 			}
 
-
 			//各板块明细存储
 			List<EvaluateReportInfo> evaluateRuleInfoList = new ArrayList<>();
 
@@ -229,8 +224,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 			List<EvaluationPortalAttach> portalAttachList = new ArrayList<>();
 
 			for (OrganizationEvaluationRule rule : ruleList) {
-
-
 				if ("JJ".equals(bi.getSectionCode()) || "QQ".equals(bi.getSectionCode())) {
 
 					if ( rule.getQqWeight() + rule.getJjWeight() < 1) {
@@ -250,7 +243,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 					}
 				}
 
-
 				StringBuilder remark = new StringBuilder();
 				//生产95%基建5%前期0%
 				if (rule.getScjyWeight() > 0) {
@@ -263,7 +255,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 					remark.append("前期").append(DoubleUtils.getRoundingNum(rule.getQqWeight() * 100,2)).append("%");
 				}
 
-
 				boolean tag = true;
 				if("FD".equals(bi.getSectionCode())){
 					tag = rule.getBinSection().contains(bi.getId());
@@ -280,7 +271,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 				}
 
 
-
 				//存储多块牌子数据
 				List<MultipleBrand> brands = multipleBrandService.getMultipleBranList2(rule.getOrganizationId(), "0", tag ? bi.getId() :bi.getMemo3(), evaluation.getCheckCycle(), evaluation.getYear(), month);
 
@@ -303,7 +293,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 					heighStandard = scoreCount1.stream().filter(s->s.getStandard().equals("1")).map(EvaluationScoreCount::getRemark).collect(Collectors.joining(System.lineSeparator()));
 					lowStandard = scoreCount1.stream().filter(s->s.getStandard().equals("-1")).map(EvaluationScoreCount::getRemark).collect(Collectors.joining(System.lineSeparator()));
 
-
 					//等分
 					double score1 = scoreCount1.stream().mapToDouble(EvaluationScoreCount::getScore).sum();
 					spMultiply = spMultiply + (mb.getProfit() * score1);
@@ -322,12 +311,10 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 //						lowStandard = lowStandard+scoreCount2.stream().filter(s->s.getStandard().equals("-1")).map(EvaluationScoreCount::getRemark).collect(Collectors.joining(",","",","));
 
 					}
-
 					scjyScore = spMultiply / totalProfit;
 				}
 
 
-
 				//首页季度考评排行数据对象
 				EvaluationPortal portal = new EvaluationPortal();
 				portal.setId(StringUtils.getUUID());
@@ -340,13 +327,11 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 				portal.setMemo1(rule.getOrganizationId());//组织编码
 				portal.setCreateTime(new Date());
 
-
 				// 首页季度考评排行悬浮信息数据对象
 				EvaluationPortalAttach portalAttach = new EvaluationPortalAttach();
 				portalAttach.setId(StringUtils.getUUID());
 				portalAttach.setPortalId(portal.getId());
 
-
 				//报告详情数据对象
 				EvaluateReportInfo reportInfo = new EvaluateReportInfo();
 				reportInfo.setEvaluateReportId(evaluateReport.getId());
@@ -366,8 +351,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 					//基准风
 					heighStandard = scjyScoreCount.stream().filter(s->s.getStandard().equals("1")).map(EvaluationScoreCount::getRemark).collect(Collectors.joining(System.lineSeparator()));
 					lowStandard = scjyScoreCount.stream().filter(s->s.getStandard().equals("-1")).map(EvaluationScoreCount::getRemark).collect(Collectors.joining(System.lineSeparator()));
-
-
 				}
 
 				//前期得分
@@ -379,7 +362,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 				heighStandard = heighStandard+System.lineSeparator()+qqScoreCount.stream().filter(s->s.getStandard().equals("1")).map(EvaluationScoreCount::getRemark).collect(Collectors.joining(System.lineSeparator()));
 				lowStandard = lowStandard+System.lineSeparator()+qqScoreCount.stream().filter(s->s.getStandard().equals("-1")).map(EvaluationScoreCount::getRemark).collect(Collectors.joining(System.lineSeparator()));
 
-
 				//基建得分
 				List<EvaluationScoreCount> jjScoreCount = evaluationScoreCountService.getEvaluationScoreCountList(organizationEvaluationId, rule.getId(), null, Arrays.asList("JJXM".split(",")),"");
 				//基建得分
@@ -389,8 +371,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 				heighStandard = heighStandard+System.lineSeparator()+jjScoreCount.stream().filter(s->s.getStandard().equals("1")).map(EvaluationScoreCount::getRemark).collect(Collectors.joining(System.lineSeparator()));
 				lowStandard = lowStandard+System.lineSeparator()+jjScoreCount.stream().filter(s->s.getStandard().equals("-1")).map(EvaluationScoreCount::getRemark).collect(Collectors.joining(System.lineSeparator()));
 
-
-
 				List<EvaluationScoreCount> addSubScoreCount = evaluationScoreCountService.getEvaluationScoreCountList(organizationEvaluationId, rule.getId(), null, Arrays.asList("ZDZX,GLSX".split(",")),"");
 
 				//重点专项
@@ -403,7 +383,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 				Double zdzxkfScore = zdzxScoreCount.stream().mapToDouble(EvaluationScoreCount::getKfScore).sum();
 				String zdzxKfRemark = zdzxScoreCount.stream().map(EvaluationScoreCount::getKfRemark).collect(Collectors.joining(System.lineSeparator()));
 
-
 				//管理事项
 				List<EvaluationScoreCount> glsxScoreCount = addSubScoreCount.stream().filter(a -> a.getBinStage().equals(CacheContext.bseCodeObject.get("GLSX").getId())).collect(Collectors.toList());
 				//管理事项-加分
@@ -414,8 +393,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 				Double glsxkfScore = glsxScoreCount.stream().mapToDouble(EvaluationScoreCount::getKfScore).sum();
 				String glsxKfRemark =  glsxScoreCount.stream().map(EvaluationScoreCount::getKfRemark).filter(Objects::nonNull).collect(Collectors.joining(System.lineSeparator()));
 
-
-
 				//重点专项-加分事项
 				if(zdzxJfScore>0){
 					portal.setMatterHeigh(1);
@@ -500,35 +477,18 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 					}
 				}else {
 					reportInfo.setScore(DoubleUtils.keepPrecision(zhScore, 2));
-
 					reportInfo.setDiscountScore(1.0);
 					portal.setScore(DoubleUtils.keepPrecision(zhScore, 2));//保存到首页排行
 				}
 				reportInfo.setRemark(remark.toString());
 				evaluateRuleInfoList.add(reportInfo);
 			}
-
-			List<OrganizationRating> orlist = new ArrayList<>();
 			for (EvaluateReportInfo info : evaluateRuleInfoList) {
 				b = evaluateReportInfoService.saveOrUpdate(info);
 				if (!b) {
 					throw new CustomException("综合考核评分汇总明细存储失败");
 				}
-				if ("NDKP".equals(evaluation.getCheckCycle())) {
-					List<OrganizationRating> records = orgRatingList.getRecords();
-					if (records.isEmpty()) {
-						continue;
-					}
-					for (OrganizationRating or : records) {
-						if (info.getOrganizationName().equals(or.getOrganizationShortName()) && info.getOrganizationId().equals(or.getOrganizationId())) {
-							or.setScore(String.valueOf(info.getScore()));
-							orlist.add(or);
-						}
-					}
-				}
 			}
-			boolean orgRat = iOrganizationRatingService.saveOrUpdateBatch(orlist);
-
 			if(null !=portalList && portalList.size()>0){
 
 				Map<String, EvaluationPortalAttach> portalAttachMap = portalAttachList.stream()
@@ -542,7 +502,6 @@ public class EvaluateReportServiceImpl extends ServiceImpl<EvaluateReportMapper,
 					}
 				}
 			}
-
 		}
 		return true;
 	}

+ 14 - 46
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/OrganizationEvaluationServiceImpl.java

@@ -174,7 +174,7 @@ public class OrganizationEvaluationServiceImpl extends ServiceImpl<OrganizationE
 					return null;
 				}
 				orgRating(ndkp.get(0));
-				IPage<OrganizationEvaluation> oeLs =baseMapper.selectPage(page, qw);
+				IPage<OrganizationEvaluation> oeLs = baseMapper.selectPage(page, qw);
 				return filter(oeLs);
 			}
 			/*List<OrganizationEvaluation> dwpj = list.getRecords().stream().filter(ll -> "DWPJ".equals(ll.getCheckCycle())).collect(Collectors.toList());
@@ -286,52 +286,11 @@ public class OrganizationEvaluationServiceImpl extends ServiceImpl<OrganizationE
 			return;
 		}
 
-		String uuid = UUID.randomUUID().toString().replace("-", "");
+//		String uuid = UUID.randomUUID().toString().replace("-", "");
 		entity.setOrganizationEvaluationCode("dwpj_" + entity.getYear());
-		entity.setId(uuid);
+		entity.setId(entity.getId() + "_dwpj");
 		entity.setCheckCycle("DWPJ");
 		boolean c = super.save(entity);
-		OrganizationEvaluationResDTO orgEva = baseMapper.selectById(uuid);
-
-		List<OrganizationRating> lors = new ArrayList<>();
-		String ruls = orgEva.getOrganizationEvaluationRuleId();
-		String[] ru = ruls.split(",");
-		List<OrganizationEvaluationRule> oers = iOrganizationEvaluationRuleService.listByIds(Arrays.asList(ru));
-		List<BinSection> binList = iBinSectionService.list();
-		for (OrganizationEvaluationRule oer : oers) {
-			if (!oer.getBinSection().contains(",")) {
-				OrganizationRating or = new OrganizationRating();
-				or.setYear(entity.getYear());
-				or.setOrganizationShortName(oer.getOrganizationShortName());
-				or.setOrganizationId(oer.getOrganizationId());
-				or.setOrganizationYearRatingId(uuid);
-				for (BinSection bl : binList) {
-					if (bl.getId().equals(oer.getBinSection())) {
-						or.setBinSection(bl.getSectionCode());
-						break;
-					}
-				}
-				lors.add(or);
-				continue;
-			}
-			String[] split = oer.getBinSection().split(",");
-			Set<String> splitSet = new LinkedHashSet<>(Arrays.asList(split));
-			for (String s : splitSet) {
-				OrganizationRating or = new OrganizationRating();
-				or.setYear(orgEva.getYear());
-				or.setOrganizationShortName(oer.getOrganizationShortName());
-				or.setOrganizationId(oer.getOrganizationId());
-				or.setOrganizationYearRatingId(uuid);
-				for (BinSection bl : binList) {
-					if (bl.getId().equals(s)) {
-						or.setBinSection(bl.getSectionCode());
-						break;
-					}
-				}
-				lors.add(or);
-			}
-		}
-		iOrganizationRatingService.saveBatch(lors);
 	}
 
 
@@ -347,9 +306,10 @@ public class OrganizationEvaluationServiceImpl extends ServiceImpl<OrganizationE
 
 			List<OrganizationEvaluationInfo> organizationEvaluationInfoOris = organizationEvaluationInfoService.getConvergeCommonInfo(id, organizationId, indicatorId);
 
-			if (null != organizationEvaluationInfoOris && organizationEvaluationInfoOris.size() > 0) {
+			if (null != organizationEvaluationInfoOris && !organizationEvaluationInfoOris.isEmpty()) {
 				if (mark) {
 					int i = organizationEvaluationInfoService.clearOldData(id, organizationId, indicatorId);
+					int j = iOrganizationRatingService.clearOldData(organizationEvaluation.getYear());
 				} else {
 					return R.error("考评明细记录已存在");
 				}
@@ -414,7 +374,7 @@ public class OrganizationEvaluationServiceImpl extends ServiceImpl<OrganizationE
 				}
 
 				//科技创新
-				List<EvaluateRule> kjevaluateRuleList = evaluateRuleService.getEvaluateRuleByYear(CacheContext.bsnCodeObject.get("KJCX").getId() , CacheContext.bseCodeObject.get("KJCX").getId() , "NDKP", evaluationRule.getYear());
+				List<EvaluateRule> kjevaluateRuleList = evaluateRuleService.getEvaluateRuleByYear(CacheContext.bsnCodeObject.get("KJCX").getId(), CacheContext.bseCodeObject.get("KJCX").getId(), "NDKP", evaluationRule.getYear());
 				if (null != kjevaluateRuleList && kjevaluateRuleList.size() > 0) {
 					evaluateRuleList.addAll(kjevaluateRuleList);
 				}
@@ -823,10 +783,18 @@ public class OrganizationEvaluationServiceImpl extends ServiceImpl<OrganizationE
 		if (infocount > 0) {
 			throw new CustomException("已发起流程不允许删除");
 		}
+		/*List<OrganizationEvaluation> loe = new ArrayList<>();
+		for (Serializable s : idList) {
+			OrganizationEvaluation organizationEvaluation = baseMapper.selectById(s);
+			loe.add(organizationEvaluation);
+		}*/
 		boolean b = super.removeByIds(idList);
 		if (!b) {
 			throw new CustomException("删除失败");
 		}
+		/*for (OrganizationEvaluation org : loe) {
+			iOrganizationRatingService.
+		}*/
 		return true;
 	}
 

+ 111 - 40
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/OrganizationRatingServiceImpl.java

@@ -5,8 +5,10 @@ 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.ims.eval.cache.CacheContext;
+import com.ims.eval.dao.OrganizationEvaluationInfoMapper;
 import com.ims.eval.dao.OrganizationRatingMapper;
 import com.ims.eval.entity.*;
+import com.ims.eval.entity.dto.response.OrganizationEvaluationInfoResDTO;
 import com.ims.eval.entity.dto.result.R;
 import com.ims.eval.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -61,10 +63,29 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 	@Resource
 	private IEvaluationPortalService iEvaluationPortalService;
 
+	@Resource
+	private OrganizationEvaluationInfoMapper organizationEvaluationInfoMapper;
+
+	@Resource
+	private IEvaluateReportService iEvaluateReportService;
+
+	@Resource
+	private IEvaluateReportInfoService evaluateReportInfoService;
+
+
+	/**
+	 * 如果重新生成数据则删除之前的评级单位和数据
+	 */
+	public int clearOldData(String year) {
+		LambdaQueryWrapper<OrganizationRating> lqw = new LambdaQueryWrapper<>();
+		lqw.eq(OrganizationRating::getYear, year);
+		return baseMapper.delete(lqw);
+	}
 
 
 	/**
 	 * 导入
+	 *
 	 * @param file
 	 * @return
 	 */
@@ -90,7 +111,7 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 			//Excel导入导出的单元类
 			List<String[]> strings = ExcelUtil.readData(fileType, startRows, true, is);
 			Page<OrganizationRating> page = new Page<>(1, 10000);
-			IPage<OrganizationRating> organizationRatingIPage = baseMapper.selectList(page, null, null, binSection, null, null, null, null, null, null, null, null, null, null, null);
+			IPage<OrganizationRating> organizationRatingIPage = baseMapper.selectList(page, null, null, binSection, null, null, null, null, null, null, null, null, null, null, null, null);
 			List<OrganizationRating> orgRatings = organizationRatingIPage.getRecords().stream().filter(org -> binSection.equals(org.getBinSection()) && year.equals(org.getYear())).collect(Collectors.toList());
 			//遍历Excel表每一行的数据
 			for (String[] str : strings) {
@@ -113,7 +134,8 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 						or.setCompositeScoreRaking(str[11]);
 						or.setProjectLevel(str[12]);
 						or.setJjRate(str[13]);
-						or.setYearRate(str[14]);
+						or.setScore(str[14]);
+						or.setYearRate(str[15]);
 						orgList.add(or);
 					}
 				}
@@ -150,7 +172,7 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 		// 创建表头
 		Row headerRow = sheet.createRow(0);
 		List<String> headers = Arrays.asList("考评单位", "业务板块", "考评年度", "年度安全环保评级", "否决事项:无0,有1", "净利润", "经营业绩考核综合得分百分比", "生产经营评级", "年度项目进度目标完成率",
-			"先进性指标考核得分有无加分", "前期评级", "基建工程综合得分排名", "基建工程项目等级", "基建评级", "年度评级");
+			"先进性指标考核得分有无加分", "前期评级", "基建工程综合得分排名", "基建工程项目等级", "基建评级", "综合得分", "年度评级");
 
 
 		for (int i = 0; i < headers.size(); i++) {
@@ -162,7 +184,7 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 		//行数据
 		Page<OrganizationRating> page = new Page<>(1, 100000);
 		IPage<OrganizationRating> orgRating = baseMapper.selectList(page, null, null, binSection, year, null, null,
-			null, null, null, null, null, null, null, null);
+			null, null, null, null, null, null, null, null, null);
 
 		// 填充数据到工作表
 		int rowIndex = 1; // 从第二行开始填充数据(第一行是表头)
@@ -199,7 +221,9 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 			Cell cell13 = row.createCell(13);
 			cell13.setCellValue(or.getJjRate());
 			Cell cell14 = row.createCell(14);
-			cell14.setCellValue(or.getYearRate());
+			cell14.setCellValue(or.getScore());
+			Cell cell15 = row.createCell(15);
+			cell15.setCellValue(or.getYearRate());
 		}
 		// 自动调整列宽
 		for (int i = 0; i < headers.size() - 1; i++) {
@@ -229,6 +253,9 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 		XSSFWorkbook xwb = new XSSFWorkbook();
 		Sheet st = xwb.createSheet();
 		List<OrganizationRatingRule> rules = iOrganizationRatingRuleService.list(null);
+		if (rules == null || rules.isEmpty()) {
+			return R.error("没有评级公式,请配置评级公式");
+		}
 		List<OrganizationRatingRule> rulesYear = rules.stream().filter(rul -> orgRating.get(0).getYear().equals(rul.getYear())).collect(Collectors.toList());
 
 		Map<String, List<OrganizationRating>> collect = orgRating.stream().collect(Collectors.groupingBy(OrganizationRating::getBinSection));
@@ -238,10 +265,10 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 			.findFirst()
 			.ifPresent(b -> col.put(b.getId(), value)));
 
-		R r1=calcSCJYrating(rulesYear, col, st, xwb);
-		R r2=calcQQXMrating(rulesYear, col, st, xwb);
-		R r3=calcJJXMrating(rulesYear, col, st, xwb);
-		R r4=calcNDrating(rulesYear, orgRating, st, xwb);
+		R r1 = calcSCJYrating(rulesYear, col, st, xwb);
+		R r2 = calcQQXMrating(rulesYear, col, st, xwb);
+		R r3 = calcJJXMrating(rulesYear, col, st, xwb);
+		R r4 = calcNDrating(rulesYear, orgRating, st, xwb);
 		if (r1.getSuccess().equals(false) && r2.getSuccess().equals(false) && r3.getSuccess().equals(false)) {
 			return R.error("评级失败");
 		}
@@ -337,10 +364,10 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 				try {
 					cc.setCellFormula(form);
 				} catch (Exception e) {
-					return R.error("公式错误:"+form);
+					return R.error("公式错误:" + form);
 				}
 				FormulaEvaluator fe = new XSSFFormulaEvaluator(xwb);
-				CellValue cv=fe.evaluate(cc);
+				CellValue cv = fe.evaluate(cc);
 				UpdateWrapper<OrganizationRating> uw = new UpdateWrapper<>();
 				uw.eq("id", or.getId()).set("year_rate", cv.formatAsString());
 				iOrganizationRatingService.update(uw);
@@ -397,16 +424,16 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 					placeholders.put(key, content);
 				}
 				String form = replace;
-				 Row rr = st.createRow(0);
+				Row rr = st.createRow(0);
 				Cell cc = rr.createCell(0);
 				// 这里要设置为公式类型
 				try {
 					cc.setCellFormula(form);
 				} catch (Exception e) {
-					return R.error("公式错误:"+form);
+					return R.error("公式错误:" + form);
 				}
 				FormulaEvaluator fe = new XSSFFormulaEvaluator(xwb);
-				CellValue cv=fe.evaluate(cc);
+				CellValue cv = fe.evaluate(cc);
 				UpdateWrapper<OrganizationRating> uw = new UpdateWrapper<>();
 				uw.eq("id", or.getId()).set("jj_rate", cv.formatAsString()).set("composite_score_raking", or.getCompositeScoreRaking())
 					.set("project_level", or.getProjectLevel());
@@ -462,10 +489,10 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 				try {
 					cc.setCellFormula(form);
 				} catch (Exception e) {
-					return R.error("公式错误:"+form);
+					return R.error("公式错误:" + form);
 				}
 				FormulaEvaluator fe = new XSSFFormulaEvaluator(xwb);
-				CellValue cv =  fe.evaluate(cc);
+				CellValue cv = fe.evaluate(cc);
 				UpdateWrapper<OrganizationRating> uw = new UpdateWrapper<>();
 				uw.eq("id", or.getId()).set("scjy_rate", cv.formatAsString()).set("safety_env_protection", or.getSafetyEnvProtection())
 					.set("veto", or.getVeto()).set("net_profit", or.getNetProfit()).set("composite_score", or.getCompositeScore());
@@ -514,10 +541,10 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 				try {
 					cc.setCellFormula(form);
 				} catch (Exception e) {
-					return R.error("公式错误:"+form);
+					return R.error("公式错误:" + form);
 				}
 				FormulaEvaluator fe = new XSSFFormulaEvaluator(xwb);
-				CellValue cv =  fe.evaluate(cc);
+				CellValue cv = fe.evaluate(cc);
 				UpdateWrapper<OrganizationRating> uw = new UpdateWrapper<>();
 				uw.eq("id", or.getId()).set("qq_rate", cv.formatAsString()).set("annual_target", or.getAnnualTarget()).set("bonus_point", or.getBonusPoint());
 				iOrganizationRatingService.update(uw);
@@ -530,40 +557,84 @@ public class OrganizationRatingServiceImpl extends ServiceImpl<OrganizationRatin
 	@Override
 	public IPage<OrganizationRating> list(Integer pageNum, Integer pageSize, String id, String
 		organizationYearRatingId, String binSection, String year, String organizationShortName, String organizationId, String safetyEnvProtection,
-										  String veto, String netProfit, String compositeScore, String annualTarget, String bonusPoint, String compositeScoreRaking, String projectLevel) {
+										  String veto, String netProfit, String compositeScore, String annualTarget, String bonusPoint, String compositeScoreRaking, String projectLevel, String score) {
+		List<BinSection> bsnList = CacheContext.bsnList;
+		Map<String, List<BinSection>> bsnMap = bsnList.stream().collect(Collectors.groupingBy(BinSection::getId));
+		String[] s = organizationYearRatingId.split("_");
+
 		Page<OrganizationRating> page = new Page<>(pageNum, pageSize);
 		if (null == pageNum || null == pageSize) {
 			throw new RuntimeException("分页参数为空");
 		}
+
 		IPage<OrganizationRating> list = baseMapper.selectList(page, id, organizationYearRatingId, binSection, year, organizationShortName,
-			organizationId, safetyEnvProtection, veto, netProfit, compositeScore, annualTarget, bonusPoint, compositeScoreRaking, projectLevel);
-		if (list.getRecords().isEmpty()) {
-			int c = iOrganizationRatingService.count();
-					if (c > 0) {
-//			IPage<OrganizationRating> ls = baseMapper.selectList(page, null, null, null, null, null,
-//				null, null, null, null, null, null, null, null,
-//				null);
-//			if (!ls.getRecords().isEmpty()) {
-//				if (organizationYearRatingId != null) {
-//					Map<String, OrganizationRating> map = ls.getRecords().stream().filter(rec -> organizationYearRatingId.equals(rec.getOrganizationYearRatingId()))
-//						.collect(Collectors.toMap(OrganizationRating::getId, Function.identity()));
-//					if (!map.isEmpty()) {
-//						int i = baseMapper.deleteBatchIds(map.keySet());
-//						getOrgRatingInfo(organizationYearRatingId);
-//						list = baseMapper.selectList(page, id, organizationYearRatingId, binSection, year, organizationShortName, organizationId,
-//							safetyEnvProtection, veto, netProfit, compositeScore, annualTarget, bonusPoint, compositeScoreRaking, projectLevel);
-//					}
-//				}
+			organizationId, safetyEnvProtection, veto, netProfit, compositeScore, annualTarget, bonusPoint, compositeScoreRaking, projectLevel, score);
+
+		if (list.getRecords() == null || list.getRecords().isEmpty()) {
+			IPage<OrganizationRating> ll = baseMapper.selectList(new Page<>(1, 1000000), null, null, null, null, null,
+				null, null, null, null, null, null, null, null, null, null);
+
+			if (ll.getRecords() == null || ll.getRecords().isEmpty()) {
+				getRatingInfo(organizationYearRatingId, year, s[0], bsnMap);
+				return baseMapper.selectList(page, id, organizationYearRatingId, binSection, year, organizationShortName, organizationId,
+					safetyEnvProtection, veto, netProfit, compositeScore, annualTarget, bonusPoint, compositeScoreRaking, projectLevel, score);
+			}
+			Map<String, List<OrganizationRating>> groupByYear = ll.getRecords().stream().collect(Collectors.groupingBy(OrganizationRating::getYear));
+			if (groupByYear.containsKey(year)) {
 				return list;
 			}
-			getOrgRatingInfo(organizationYearRatingId);
-			list = baseMapper.selectList(page, id, organizationYearRatingId, binSection, year, organizationShortName, organizationId,
-				safetyEnvProtection, veto, netProfit, compositeScore, annualTarget, bonusPoint, compositeScoreRaking, projectLevel);
+			getRatingInfo(organizationYearRatingId, year, s[0], bsnMap);
+			return baseMapper.selectList(page, id, organizationYearRatingId, binSection, year, organizationShortName, organizationId,
+				safetyEnvProtection, veto, netProfit, compositeScore, annualTarget, bonusPoint, compositeScoreRaking, projectLevel, score);
 		}
 		return list;
 	}
 
 
+	private void getRatingInfo(String organizationYearRatingId, String year, String s, Map<String, List<BinSection>> bsnMap) {
+		List<OrganizationEvaluationInfoResDTO> infoResDTOList = organizationEvaluationInfoMapper.selectEvaluationInfoList(s, "", "", "", "", "");
+		if (null == infoResDTOList || infoResDTOList.isEmpty()) {
+			return;
+		}
+		Map<String, List<OrganizationEvaluationInfoResDTO>> binSec = infoResDTOList.stream()
+			.collect(Collectors.groupingBy(OrganizationEvaluationInfoResDTO::getBinSection));
+
+		for (Map.Entry<String, List<OrganizationEvaluationInfoResDTO>> entry : binSec.entrySet()) {
+			List<OrganizationRating> lors = new ArrayList<>();
+			List<OrganizationEvaluationInfoResDTO> orgEvaInfos = entry.getValue();
+
+			List<EvaluateReport> evaReport = iEvaluateReportService.list(s, entry.getKey());
+			List<EvaluateReportInfo> evaReportInfos = null;
+			if ((null!=evaReport) &&(!evaReport.isEmpty())) {
+				LambdaQueryWrapper<EvaluateReportInfo> lqw = new LambdaQueryWrapper<>();
+				lqw.eq(EvaluateReportInfo::getEvaluateReportId, evaReport.get(0).getId());
+				evaReportInfos = evaluateReportInfoService.list(lqw);
+			}
+
+			Map<String, List<OrganizationEvaluationInfoResDTO>> orgName = orgEvaInfos.stream()
+				.collect(Collectors.groupingBy(OrganizationEvaluationInfoResDTO::getOrganizationShortName));
+			for (String keys : orgName.keySet()) {
+				OrganizationEvaluationInfoResDTO oe = orgName.get(keys).get(0);
+				OrganizationRating or = new OrganizationRating();
+				or.setOrganizationYearRatingId(organizationYearRatingId);
+				or.setOrganizationShortName(oe.getOrganizationShortName());
+				or.setOrganizationId(oe.getOrganizationId());
+				or.setYear(year);
+				or.setBinSection(bsnMap.get(oe.getBinSection()).get(0).getSectionCode());
+				if ((evaReportInfos != null) && (!evaReportInfos.isEmpty())) {
+					for (EvaluateReportInfo evaReportInfo : evaReportInfos) {
+						if (evaReportInfo.getOrganizationName().equals(keys)) {
+							or.setScore(evaReportInfo.getScore() != 0.0 ? String.valueOf(evaReportInfo.getScore()) : null);
+						}
+					}
+				}
+				lors.add(or);
+			}
+			iOrganizationRatingService.saveBatch(lors);
+		}
+	}
+
+
 	/**
 	 * 根据年度考评公司写年度等级表中的id
 	 */

+ 6 - 3
ims-service/ims-eval/src/main/resources/mappers/OrganizationRatingMapper.xml

@@ -9,10 +9,10 @@
         r.id,r.organization_year_rating_id,r.organization_short_name,r.organization_id,r.year,r.bin_section,TRIM('"' FROM r.scjy_rate) AS scjy_rate,
         TRIM('"' FROM r.qq_rate) AS qq_rate,TRIM('"' FROM r.jj_rate) AS jj_rate,TRIM('"' FROM r.year_rate) AS year_rate,r.create_by,r.update_by,r.create_time,r.update_time,
         r.remark,r.safety_env_protection,r.veto,r.net_profit,r.composite_score,r.annual_target,r.bonus_point,r.composite_score_raking,r.project_level,r.score,
-            bs.section_name binsectionname
+        bs.section_name binsectionname
         from
-            organization_rating r
-            left join bin_section bs on bs.section_code = r.bin_section and bs.del_flag = false
+        organization_rating r
+        left join bin_section bs on bs.section_code = r.bin_section and bs.del_flag = false
         <where>
 
 
@@ -62,6 +62,9 @@
             <if test="projectLevel !=null and projectLevel !=''">
                 and r.project_level=#{projectLevel}
             </if>
+            <if test="score !=null and score !=''">
+             and r.score=#{score}
+           </if>
 
         </where>
         order by r.organization_short_name