Browse Source

添加专项指标新增功能

wangchangsheng 1 year ago
parent
commit
dfbcb1eb67

+ 21 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/controller/OrganizationEvaluationInfoController.java

@@ -3,6 +3,7 @@ package com.ims.eval.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.ims.eval.entity.OrganizationEvaluationInfo;
+import com.ims.eval.entity.dto.request.AddEvaluationInfoDTO;
 import com.ims.eval.entity.dto.response.OrganizationEvaluationInfoResDTO;
 import com.ims.eval.entity.dto.result.R;
 import com.ims.eval.service.IOrganizationEvaluationInfoService;
@@ -151,7 +152,27 @@ public class OrganizationEvaluationInfoController {
 	}
 
 
+	/**
+	 * 添加指标
+	 * @param addEvaluationInfoDTO
+	 * @return
+	 */
+	@PostMapping(value = "/addEvaluationInfo")
+	@ApiOperation(value = "新增重点事项、管理事项", notes = "新增重点事项、管理事项")
+	public R addEvaluationInfo(@RequestBody AddEvaluationInfoDTO addEvaluationInfoDTO) {
 
+		try {
+			boolean b = organizationEvaluationInfoService.addEvaluationInfo(addEvaluationInfoDTO);
+			if (b) {
+				return R.ok().data(b);
+			} else {
+				return R.error().data("保存失败!");
+			}
+		} catch (Exception e) {
+			log.error("错误", e);
+			return R.customError(e.getMessage()).data("失败!");
+		}
+	}
 
 
 	/**

+ 44 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/entity/dto/request/AddEvaluationInfoDTO.java

@@ -0,0 +1,44 @@
+package com.ims.eval.entity.dto.request;
+
+
+
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+public class AddEvaluationInfoDTO {
+
+
+	/**
+	 * 组织id
+	 */
+	private String organizationId;
+
+	/**
+	 * 考评id
+	 */
+	private  String organizationEvaluationId;
+
+	/**
+	 * 指标id
+	 */
+	private String indicatorId;
+
+	/**
+	 * 业务版块
+	 */
+	private String binSection;
+
+
+	/**
+	 * 业务阶段
+	 */
+	private String binStage;
+
+	/**
+	 * 指标想属性
+	 */
+	private Map<String,Object> optionMap;
+
+}

+ 14 - 2
ims-service/ims-eval/src/main/java/com/ims/eval/entity/dto/response/IndicatorResDTO.java

@@ -10,14 +10,15 @@ public class IndicatorResDTO {
 	private static final long serialVersionUID = 1L;
 
 	/**
-	 * 指标id
+	 * 指标id
 	 */
 	private String id;
 
 	/**
 	 * 指标id
 	 */
-	private String indicatorDictionaryID;
+	private String indicatorId;
+
 
 	/**
 	 * 选项编码
@@ -39,6 +40,11 @@ public class IndicatorResDTO {
 	 */
 	private String  childCode;
 
+	/**
+	 * 子指标名
+	 */
+	private String childName;
+
 
 	/**
 	 * 指标部门id
@@ -46,6 +52,12 @@ public class IndicatorResDTO {
 	private String deptId;
 
 
+	/**
+	 * 能否量化2
+	 */
+	private Boolean isQuantified2;
+
+
 
 
 }

+ 3 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/service/IOrganizationEvaluationInfoService.java

@@ -3,6 +3,7 @@ package com.ims.eval.service;
 import com.alibaba.fastjson.JSONObject;
 import com.ims.eval.entity.OrganizationEvaluationInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ims.eval.entity.dto.request.AddEvaluationInfoDTO;
 import com.ims.eval.entity.dto.response.OrganizationEvaluationInfoResDTO;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -40,6 +41,8 @@ public interface IOrganizationEvaluationInfoService extends IService<Organizatio
 
 	boolean updateEvaluationInfo(List<JSONObject> jsonObjects);
 
+	boolean addEvaluationInfo(AddEvaluationInfoDTO addEvaluationInfoDTO);
+
 	byte[] downloadExcel(String organizationEvaluationId, String indicatorId, String binSection, String binStage, HttpServletRequest request)throws Exception;
 
 	boolean importExcel(MultipartFile file) throws IOException;

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

@@ -35,7 +35,7 @@ public interface IOrganizationEvaluationRuleService extends IService<Organizatio
 	List<OrganizationEvaluationRule> getOrganizationEvaluationRuleByIds(List<String> ids, String binSection);
 
 
-	List<OrganizationEvaluationRule> getOrganizationEvaluationRuleByYearAndCycle(String organizationType,String evaluationCycle, String year);
+	List<OrganizationEvaluationRule> getOrganizationEvaluationRuleByYearAndCycle(String organizationType,String evaluationCycle, String year,String organizationId);
 
 
 

+ 132 - 30
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/OrganizationEvaluationInfoServiceImpl.java

@@ -3,10 +3,13 @@ package com.ims.eval.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.ims.common.utils.FormulaUtils;
 import com.ims.common.utils.StringUtils;
+import com.ims.eval.cache.CacheContext;
 import com.ims.eval.config.CustomException;
 import com.ims.eval.dao.CalculateIndicatorItemInfoMapper;
 import com.ims.eval.entity.*;
 import com.ims.eval.dao.OrganizationEvaluationInfoMapper;
+import com.ims.eval.entity.dto.request.AddEvaluationInfoDTO;
+import com.ims.eval.entity.dto.response.IndicatorResDTO;
 import com.ims.eval.entity.dto.response.OrganizationEvaluationInfoResDTO;
 import com.ims.eval.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -61,6 +64,20 @@ public class OrganizationEvaluationInfoServiceImpl extends ServiceImpl<Organizat
 	@Autowired
 	private CalculateIndicatorItemInfoMapper calculateIndicatorItemInfoMapper;
 
+	@Autowired
+	private IIndicatorService indicatorService;
+
+
+	@Autowired
+	private IOrganizationEvaluationService organizationEvaluationService;
+
+	@Autowired
+	private  IOrganizationEvaluationRuleService organizationEvaluationRuleService;
+
+
+
+
+
 	@Override
 	public Map finishValueList(String organizationEvaluationId, String dept, HttpServletRequest request) {
 
@@ -336,7 +353,24 @@ public class OrganizationEvaluationInfoServiceImpl extends ServiceImpl<Organizat
 
 	@Override
 	public List<Map> getEvaluationIndicatorList(String organizationEvaluationId, String binSection, String binStage, HttpServletRequest request) {
-		List<Map> indicatorMap = baseMapper.selectEvaluationIndicatorList(organizationEvaluationId,binSection,binStage);
+		//判断是否是(重点专项和管理事项)
+		List<Map> indicatorMap = new ArrayList<>();
+		if("ZDZX".equals(CacheContext.bseIdObject.get(binStage).getStageCode()) || "GLSX".equals(CacheContext.bseIdObject.get(binStage).getStageCode())){
+
+			List<Indicator> indicatorList = indicatorService.listAll("","","",binSection,binStage,"","");
+			if(null != indicatorList && indicatorList.size()>0){
+				for (Indicator i : indicatorList){
+					Map map = new HashMap();
+					map.put("id",i.getId());
+					map.put("indicator_name",i.getIndicatorName());
+					indicatorMap.add(map);
+				}
+			}
+
+		}else {
+			indicatorMap = baseMapper.selectEvaluationIndicatorList(organizationEvaluationId,binSection,binStage);
+		}
+
 		return indicatorMap;
 	}
 
@@ -352,6 +386,38 @@ public class OrganizationEvaluationInfoServiceImpl extends ServiceImpl<Organizat
 		Map<String, List<OrganizationEvaluationInfoResDTO>> groupedData = infoResDTOList.stream()
 			.collect(Collectors.groupingBy(OrganizationEvaluationInfoResDTO::getOrganizationId));
 		List<Map> mapList = new ArrayList<>();
+
+
+		//设置数据标题
+		//将子指标分组
+		Map<String, List<IndicatorDictionary>> groupedChildCode = dictionaryList.stream()
+			.collect(Collectors.groupingBy(d -> d.getChildCode() + "," + d.getChildName()));
+
+		if (titlemark) {
+			Map title = new LinkedHashMap();
+			for (Map.Entry<String, List<IndicatorDictionary>> childCodeEntry : groupedChildCode.entrySet()) {
+
+
+				List<Map> titleArray = new ArrayList<>();
+				for (IndicatorDictionary d : childCodeEntry.getValue()) {
+					Map titlemap = new LinkedHashMap();
+					if (!d.getIsShow()) {
+						continue;
+					}
+					titlemap.put("key", d.getOptionName());//名称
+					titlemap.put("code",d.getChildCode()+"_"+d.getOptionCode());//名称
+					titleArray.add(titlemap);
+
+				}
+				title.put(childCodeEntry.getKey().split(",")[1], titleArray);
+
+			}
+			titlemark = false;
+			data.put("title", title);
+		}
+
+
+		//获取行数据
 		//遍历按照公司分组后的数据
 		for (Map.Entry<String, List<OrganizationEvaluationInfoResDTO>> entry : groupedData.entrySet()) {
 
@@ -365,34 +431,6 @@ public class OrganizationEvaluationInfoServiceImpl extends ServiceImpl<Organizat
 					(oldValue, newValue) -> oldValue)); // 解决键重复的情况
 			boolean mark = true;//标记给公司名赋值
 
-			//将子指标分组
-			Map<String, List<IndicatorDictionary>> groupedChildCode = dictionaryList.stream()
-				.collect(Collectors.groupingBy(d -> d.getChildCode() + "," + d.getChildName()));
-
-
-			if (titlemark) {
-				Map title = new LinkedHashMap();
-				for (Map.Entry<String, List<IndicatorDictionary>> childCodeEntry : groupedChildCode.entrySet()) {
-
-
-					List<Map> titleArray = new ArrayList<>();
-					for (IndicatorDictionary d : childCodeEntry.getValue()) {
-						Map titlemap = new LinkedHashMap();
-						if (!d.getIsShow()) {
-							continue;
-						}
-						titlemap.put("key", d.getOptionName());//名称
-						titlemap.put("code",d.getChildCode()+"_"+d.getOptionCode());//名称
-						titleArray.add(titlemap);
-
-					}
-					title.put(childCodeEntry.getKey().split(",")[1], titleArray);
-
-				}
-				titlemark = false;
-				data.put("title", title);
-			}
-
 			for (IndicatorDictionary d : dictionaryList) {
 				if (!d.getIsShow()) {
 					continue;
@@ -631,7 +669,7 @@ public class OrganizationEvaluationInfoServiceImpl extends ServiceImpl<Organizat
 				Map<String, Object> dataMap = new LinkedHashMap<>();
 
 				// 遍历每一列数据
-				for (int j = 1; j < totalColumns; j++) {
+				for (int j = 2; j < totalColumns; j++) {
 					Cell headerCell = headerRow.getCell(j);
 					Cell cell = row.getCell(j);
 
@@ -730,6 +768,70 @@ public class OrganizationEvaluationInfoServiceImpl extends ServiceImpl<Organizat
 		return true;
 	}
 
+	@Transactional
+	@Override
+	public boolean addEvaluationInfo(AddEvaluationInfoDTO addEvaluationInfoDTO) {
+		//1.获取考评id(获取此考评记录)
+		String organizationEvaluationId = addEvaluationInfoDTO.getOrganizationEvaluationId();
+
+		if (StringUtils.isEmpty(organizationEvaluationId)) {
+			throw new CustomException("保存失败");
+		}
+		OrganizationEvaluation organizationEvaluation = organizationEvaluationService.getById(organizationEvaluationId);
+
+		if (null == organizationEvaluation) {
+			throw new CustomException("保存失败");
+		}
+		organizationEvaluation.getCheckCycle();
+
+		//2.获取组织id 和所属板块(判断该板块下是否有此组织的考核)
+		String organizationType = organizationEvaluation.getOrganizationType();//考评类型 DWKP
+		String checkCycle = organizationEvaluation.getCheckCycle();//考评周期-月度、季度
+		String year = organizationEvaluation.getYear();//年份
+
+		//3.查询当前对应的考评权重(需要考评的单位)
+		List<OrganizationEvaluationRule> evaluationRules = organizationEvaluationRuleService.getOrganizationEvaluationRuleByYearAndCycle(organizationType, checkCycle, year, addEvaluationInfoDTO.getOrganizationId());
+		if (null == evaluationRules || evaluationRules.size() <= 0) {
+			throw new CustomException("当前组织没有参与考评");
+		}
+		OrganizationEvaluationRule evaluationRule = evaluationRules.get(0);
+
+		//4.获取指标信息
+		List<String> indicatorIds = Arrays.asList(addEvaluationInfoDTO.getIndicatorId().split(","));
+		List<IndicatorResDTO> dictionaryList = indicatorService.listByIds(indicatorIds);
+		Map<String, List<IndicatorResDTO>> groupedChildCode = dictionaryList.stream()
+			.collect(Collectors.groupingBy(d -> d.getChildCode() + "," + d.getChildName()));
+		Map<String, Object> optionMap = addEvaluationInfoDTO.getOptionMap();
+
+		//5.保存指标
+		for (Map.Entry<String, List<IndicatorResDTO>> childCodeEntry : groupedChildCode.entrySet()) {
+
+			for (IndicatorResDTO d : childCodeEntry.getValue()) {
+				OrganizationEvaluationInfo info = new OrganizationEvaluationInfo();
+				info.setOrganizationEvaluationId(addEvaluationInfoDTO.getOrganizationEvaluationId());
+				info.setOrganizationEvaluationRuleId(evaluationRule.getId());
+				info.setIndicatorId(addEvaluationInfoDTO.getIndicatorId());
+				info.setIndicatorDictionaryId(d.getId());
+				info.setOptionCode(d.getOptionCode());
+				info.setIsQuantified(d.getIsQuantified());
+				if (null != optionMap.get(d.getChildCode()+"_"+d.getOptionCode())) {
+					String value = String.valueOf(optionMap.get(d.getOptionCode()));
+					info.setNonQuantifiedValue(value);
+					if (d.getIsQuantified2()) {
+						info.setQuantifiedValue(Double.valueOf(value));
+					}
+				}
+				info.setChildCode(d.getChildCode());
+				info.setDeptId(d.getDeptId());
+				info.setCreateTime(new Date());
+				this.saveOrUpdate(info);
+			}
+		}
+
+
+		return false;
+	}
+
 	//todo  后续添加需要计算的指标项
 	public boolean calculateIdicatorItem(List<OrganizationEvaluationInfo> organizationEvaluationInfos){
 

+ 5 - 2
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/OrganizationEvaluationRuleServiceImpl.java

@@ -252,7 +252,7 @@ public class OrganizationEvaluationRuleServiceImpl extends ServiceImpl<Organizat
 	}
 
 	@Override
-	public List<OrganizationEvaluationRule> getOrganizationEvaluationRuleByYearAndCycle(String organizationType,String evaluationCycle, String year) {
+	public List<OrganizationEvaluationRule> getOrganizationEvaluationRuleByYearAndCycle(String organizationType,String evaluationCycle, String year,String organizationId) {
 
 		QueryWrapper<OrganizationEvaluationRule> qw = new QueryWrapper<>();
 
@@ -266,7 +266,10 @@ public class OrganizationEvaluationRuleServiceImpl extends ServiceImpl<Organizat
 			qw.lambda().eq(OrganizationEvaluationRule::getYear, year);
 		}
 
-
+		if (StringUtils.isNotEmpty(organizationId)) {
+			qw.lambda().eq(OrganizationEvaluationRule::getOrganizationId, organizationId);
+		}
+		
 		//没有删除标记,并且是需要考核的单位
 		qw.lambda().eq(OrganizationEvaluationRule::getDelFlag, false);
 		qw.lambda().eq(OrganizationEvaluationRule::getIsCheck, true);

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

@@ -290,19 +290,19 @@ public class OrganizationEvaluationServiceImpl extends ServiceImpl<OrganizationE
 					OrganizationEvaluationInfo info = new OrganizationEvaluationInfo();
 					info.setOrganizationEvaluationId(organizationEvaluation.getId());
 					info.setOrganizationEvaluationRuleId(ruleId);
-					info.setIndicatorId(r.getId());
+					info.setIndicatorId(r.getIndicatorId());
 					info.setDeptId(r.getDeptId());
 					info.setChildCode(r.getChildCode());
-					info.setIndicatorDictionaryId(r.getIndicatorDictionaryID());
+					info.setIndicatorDictionaryId(r.getId());
 					info.setOptionCode(r.getOptionCode());
 					info.setIsQuantified(r.getIsQuantified());
 					//
 					if ("JHZ".equals(r.getOptionCode()) || "MBZ".equals(r.getOptionCode()) || "DBZ".equals(r.getOptionCode())) {
-						if (null != objectMap.get(r.getId())) {
+						if (null != objectMap.get(r.getIndicatorId())) {
 							if ("是".equals(r.getIsQuantified())) {
-								info.setQuantifiedValue(null == objectMap.get(r.getId()) ? null : Double.valueOf(objectMap.get(r.getId()).toString()));
+								info.setQuantifiedValue(null == objectMap.get(r.getIndicatorId()) ? null : Double.valueOf(objectMap.get(r.getIndicatorId()).toString()));
 							} else {
-								info.setNonQuantifiedValue(null == objectMap.get(r.getId()) ? null : objectMap.get(r.getId()).toString());
+								info.setNonQuantifiedValue(null == objectMap.get(r.getIndicatorId()) ? null : objectMap.get(r.getIndicatorId()).toString());
 							}
 						}
 					}
@@ -333,7 +333,7 @@ public class OrganizationEvaluationServiceImpl extends ServiceImpl<OrganizationE
 			String year = organizationEvaluation.getYear();//年份
 
 			//查询当前周期下对应的考评权重(需要考评的单位)
-			List<OrganizationEvaluationRule> evaluationRules = organizationEvaluationRuleService.getOrganizationEvaluationRuleByYearAndCycle(organizationType,checkCycle,year);
+			List<OrganizationEvaluationRule> evaluationRules = organizationEvaluationRuleService.getOrganizationEvaluationRuleByYearAndCycle(organizationType,checkCycle,year,"");
 
 
 			//遍历考核的单位

+ 5 - 3
ims-service/ims-eval/src/main/resources/mappers/IndicatorMapper.xml

@@ -92,13 +92,15 @@
     <select id="selectListByIds" resultType="com.ims.eval.entity.dto.response.IndicatorResDTO">
 
         SELECT
-        i.id id,
+        d.id ,
+        i.id indicatorId,
         i.dept_id,
         i.is_quantified isQuantified,
-        d.id indicatorDictionaryID,
         d.option_code optionCode,
         d.option_name optionName,
-        d.child_code
+        d.child_code,
+        d.child_name,
+        d.is_quantified isQuantified2
         FROM
         INDICATOR i
         LEFT JOIN indicator_dictionary d ON i.ID = d.indicator_id