|
@@ -1,6 +1,7 @@
|
|
|
package com.ims.eval.service.impl;
|
|
|
|
|
|
import com.ims.common.utils.Constant;
|
|
|
+import com.ims.common.utils.FormulaUtils;
|
|
|
import com.ims.common.utils.StringUtils;
|
|
|
import com.ims.eval.config.CustomException;
|
|
|
import com.ims.eval.entity.IndicatorDictionary;
|
|
@@ -9,11 +10,8 @@ import com.ims.eval.entity.OrganizationEvaluationInfo;
|
|
|
import com.ims.eval.dao.OrganizationEvaluationInfoMapper;
|
|
|
import com.ims.eval.entity.dto.response.MyuserResDTO;
|
|
|
import com.ims.eval.entity.dto.response.OrganizationEvaluationInfoResDTO;
|
|
|
-import com.ims.eval.service.ICalculateIndicatorItemInfoService;
|
|
|
-import com.ims.eval.service.IIndicatorDictionaryService;
|
|
|
-import com.ims.eval.service.IOrganizationEvaluationInfoService;
|
|
|
+import com.ims.eval.service.*;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.ims.eval.service.IUserService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -48,6 +46,8 @@ public class OrganizationEvaluationInfoServiceImpl extends ServiceImpl<Organizat
|
|
|
@Autowired
|
|
|
private IUserService userService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IEvaluationScoreCountService iEvaluatioinScoreCountService;
|
|
|
@Override
|
|
|
public Map finishValueList(String organizationEvaluationId, String dept, HttpServletRequest request) {
|
|
|
|
|
@@ -195,19 +195,81 @@ public class OrganizationEvaluationInfoServiceImpl extends ServiceImpl<Organizat
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public boolean calculationByEvaluationId(String id, String indicatorId,String organizationEvaluationI) {
|
|
|
- List<OrganizationEvaluationInfoResDTO> list = baseMapper.selectByIdAndEvaluationInfoId(id,indicatorId,organizationEvaluationI);
|
|
|
- Map<String, List<OrganizationEvaluationInfoResDTO>> binSectionGropList = list.stream().collect(Collectors.groupingBy(OrganizationEvaluationInfoResDTO::getBinSection));
|
|
|
-
|
|
|
- for (Map.Entry<String, List<OrganizationEvaluationInfoResDTO>> entry : binSectionGropList.entrySet()){
|
|
|
- if (entry.getValue().size() > 0){
|
|
|
- Map<String, List<OrganizationEvaluationInfoResDTO>> collectIn = entry.getValue().stream().collect(Collectors.groupingBy(OrganizationEvaluationInfoResDTO::getIndicatorId));
|
|
|
-
|
|
|
-
|
|
|
+ public boolean calculationByEvaluationId(String id, String indicatorId,String organizationEvaluationId,String optionCode) {
|
|
|
+ try {
|
|
|
+ List<OrganizationEvaluationInfoResDTO> list = baseMapper.selectByIdAndEvaluationInfoId(id,indicatorId,organizationEvaluationId,"");
|
|
|
+ //根据板块分组
|
|
|
+ Map<String, List<OrganizationEvaluationInfoResDTO>> binSectionGropList = list.stream().collect(Collectors.groupingBy(OrganizationEvaluationInfoResDTO::getBinSection));
|
|
|
+
|
|
|
+ for (Map.Entry<String, List<OrganizationEvaluationInfoResDTO>> binSectionGropEntry : binSectionGropList.entrySet()){
|
|
|
+ if (binSectionGropEntry.getValue().size() > 0){
|
|
|
+ //按照指标分组
|
|
|
+ Map<String, List<OrganizationEvaluationInfoResDTO>> indicatorGropList = binSectionGropEntry.getValue().stream().collect(Collectors.groupingBy(OrganizationEvaluationInfoResDTO::getIndicatorId));
|
|
|
+
|
|
|
+
|
|
|
+ for (Map.Entry<String, List<OrganizationEvaluationInfoResDTO>> indicatorGropListEntry : indicatorGropList.entrySet()){
|
|
|
+ // List<OrganizationEvaluationInfoResDTO> indicator = indicatorGropListEntry.getValue();
|
|
|
+
|
|
|
+ //计算差值等的最大值最小值
|
|
|
+ //iCalculateIndicatorItemInfoService.saveIndicatorInfoDTO(indicatorGropListEntry.getValue());
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (indicatorGropListEntry.getValue().size() > 0){
|
|
|
+ //按照公司规则分组
|
|
|
+ Map<String, List<OrganizationEvaluationInfoResDTO>> ruleIdGropList = indicatorGropListEntry.getValue().stream().collect(Collectors.groupingBy(OrganizationEvaluationInfoResDTO::getOrganizationEvaluationRuleId));
|
|
|
+
|
|
|
+ //遍历公司指标
|
|
|
+ for (Map.Entry<String, List<OrganizationEvaluationInfoResDTO>> ruleIdGropListEntry : ruleIdGropList.entrySet()){
|
|
|
+ if (ruleIdGropListEntry.getValue().size() > 0){
|
|
|
+
|
|
|
+ List<OrganizationEvaluationInfoResDTO> indicator = ruleIdGropListEntry.getValue();
|
|
|
+// EvaluationScoreCount scoreCount = new EvaluationScoreCount();
|
|
|
+ double totalScore = 0.00;
|
|
|
+ for (OrganizationEvaluationInfoResDTO dto: indicator){
|
|
|
+ if(!optionCode.equals(dto.getOptionCode()) ||"DF".equals(dto.getOptionCode()) || "DF2".equals(dto.getOptionCode()) || StringUtils.isEmpty(dto.getFormula())){
|
|
|
+ continue;//当前属性没有配置公式跳过
|
|
|
+ }
|
|
|
+// System.out.println("**************"+dto.getFormula());
|
|
|
+ for (OrganizationEvaluationInfoResDTO f : indicator){
|
|
|
+ if(f.getOptionCode().endsWith("MIN") || f.getOptionCode().endsWith("MAX")){
|
|
|
+ //查询对应的最大值和最小值
|
|
|
+ }
|
|
|
+
|
|
|
+ dto.setFormula(dto.getFormula().replace("["+f.getOptionCode()+"]", f.getQuantifiedValue() + ""));
|
|
|
+// System.out.println("----------"+dto.getFormula());
|
|
|
+
|
|
|
+ }
|
|
|
+// scoreCount.setIndicatorId(dto.getIndicatorId());
|
|
|
+// scoreCount.setOrganizationEvaluationRuleId(dto.getOrganizationEvaluationRuleId());
|
|
|
+// scoreCount.setOrganizationEvaluationId(dto.getOrganizationEvaluationId());
|
|
|
+
|
|
|
+ System.out.print(dto.getOrganizationShortName()+"|"+dto.getIndicatorName()+"----------"+dto.getFormula()+"=");
|
|
|
+ double score = FormulaUtils.caculateFormula(dto.getFormula());
|
|
|
+ if(StringUtils.inStringIgnoreCase("DF",dto.getOptionCode())){
|
|
|
+ totalScore = totalScore+score;
|
|
|
+ }
|
|
|
+ System.out.println(score);
|
|
|
+ OrganizationEvaluationInfo info = baseMapper.selectById(dto.getId());
|
|
|
+ info.setQuantifiedValue(score);
|
|
|
+ this.saveOrUpdate(info);
|
|
|
+ }
|
|
|
+ //得分存入数据库
|
|
|
+// scoreCount.setIsQuantified("1");
|
|
|
+// scoreCount.setScore(totalScore);
|
|
|
+// scoreCount.setObversionScore(totalScore);
|
|
|
+// boolean save = iEvaluatioinScoreCountService.save(scoreCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
}
|
|
|
-
|
|
|
- return false;
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
|