|
@@ -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
|
|
|
*/
|