Bläddra i källkod

预警规则功能开发

chenminghua 1 år sedan
förälder
incheckning
caa7299f34
19 ändrade filer med 242 tillägg och 55 borttagningar
  1. 24 28
      ims-common/src/main/java/com/ims/common/utils/FormulaUtils.java
  2. 2 0
      ims-service/ims-eval/src/main/java/com/ims/eval/EvalApplication.java
  3. 5 3
      ims-service/ims-eval/src/main/java/com/ims/eval/controller/EvaluationWarningRuleController.java
  4. 3 1
      ims-service/ims-eval/src/main/java/com/ims/eval/dao/EvaluationWarningRuleMapper.java
  5. 6 0
      ims-service/ims-eval/src/main/java/com/ims/eval/dao/OrganizationEvaluationMapper.java
  6. 4 4
      ims-service/ims-eval/src/main/java/com/ims/eval/entity/EvaluationWarningInfo.java
  7. 1 1
      ims-service/ims-eval/src/main/java/com/ims/eval/entity/EvaluationWarningRule.java
  8. 78 0
      ims-service/ims-eval/src/main/java/com/ims/eval/schedule/EvaluationWarningSchedule.java
  9. 10 0
      ims-service/ims-eval/src/main/java/com/ims/eval/service/IEvaluationWarningInfoService.java
  10. 2 1
      ims-service/ims-eval/src/main/java/com/ims/eval/service/IEvaluationWarningRuleService.java
  11. 1 0
      ims-service/ims-eval/src/main/java/com/ims/eval/service/IOrganizationEvaluationService.java
  12. 4 0
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/EvaluatioinScoreCountServiceImpl.java
  13. 50 0
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/EvaluationWarningInfoServiceImpl.java
  14. 4 3
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/EvaluationWarningRuleServiceImpl.java
  15. 2 2
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/OrganizationEvaluationInfoServiceImpl.java
  16. 4 0
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/OrganizationEvaluationServiceImpl.java
  17. 2 2
      ims-service/ims-eval/src/main/resources/mappers/EvaluateRuleInfoMapper.xml
  18. 8 10
      ims-service/ims-eval/src/main/resources/mappers/EvaluateWarningRuleMapper.xml.xml
  19. 32 0
      ims-service/ims-eval/src/main/resources/mappers/OrganizationEvaluationMapper.xml

+ 24 - 28
ims-common/src/main/java/com/ims/common/utils/FormulaUtils.java

@@ -1,6 +1,7 @@
 package com.ims.common.utils;
 
 import com.ims.common.function.IFSFunction;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.ss.formula.FormulaParseException;
 import org.apache.poi.ss.formula.functions.FreeRefFunction;
@@ -12,17 +13,24 @@ import org.apache.poi.ss.usermodel.*;
 import java.io.IOException;
 import java.math.BigDecimal;
 
+@Slf4j
 public class FormulaUtils {
 
+	private static Workbook workbook = null;
 
+	static {
+		if (workbook == null) {
+			workbook = new HSSFWorkbook();
+		}
 
+		String[] functionNames = { IFSFunction.FUNCTION_NAME } ;
+		FreeRefFunction[] functionImpls = { new IFSFunction() } ;
 
-	/**
-	 * Sheet 中的每一行
-	 */
-	private static HSSFRow row = null;
+		UDFFinder udfs = new DefaultUDFFinder( functionNames, functionImpls ) ;
+		UDFFinder udfToolpack = new AggregatingUDFFinder( udfs ) ;
 
-	private static FormulaEvaluator formulaEvaluator = null;
+		workbook.addToolPack(udfToolpack);
+	}
 
 	/**
 	 * 计算值
@@ -30,7 +38,7 @@ public class FormulaUtils {
 	 * @param formula Excel 中的公式,例如:MAX(56-FLOOR(20/6,1),2)
 	 * @return
 	 */
-	public static double caculateFormula1(String formula) {
+	public static double calculateFormula1(String formula) {
 		if(formula.startsWith("=")){
 			formula =formula.replace("=","");
 		}
@@ -39,8 +47,8 @@ public class FormulaUtils {
 
 		HSSFSheet sheet = workbook.createSheet();
 
-		row = sheet.createRow(0);
-		formulaEvaluator = new HSSFFormulaEvaluator(workbook);
+		HSSFRow row = sheet.createRow(0);
+		FormulaEvaluator formulaEvaluator = new HSSFFormulaEvaluator(workbook);
 
 		// 这里必须新建一个对象,否则只有第一个 formula 才有效。查看 formulaEvaluator.evaluate 的源码。
 		HSSFCell cell = row.createCell(0);
@@ -52,23 +60,18 @@ public class FormulaUtils {
 		} catch (FormulaParseException e) {
 			System.out.print(e.getMessage());
 			return 0;
+		} finally {
+			try {
+				workbook.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
 		}
 	}
 
 
-	public static double caculateFormula(String formula){
-		Workbook workbook = null;
+	public static double calculateFormula(String formula){
 		try {
-			workbook = new HSSFWorkbook();
-
-			String[] functionNames = { IFSFunction.FUNCTION_NAME } ;
-			FreeRefFunction[] functionImpls = { new IFSFunction() } ;
-
-			UDFFinder udfs = new DefaultUDFFinder( functionNames, functionImpls ) ;
-			UDFFinder udfToolpack = new AggregatingUDFFinder( udfs ) ;
-
-			workbook.addToolPack(udfToolpack);
-
 			FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
 
 			Sheet sheet = workbook.createSheet();
@@ -81,14 +84,7 @@ public class FormulaUtils {
 			return new BigDecimal(value).setScale(2, BigDecimal.ROUND_CEILING).doubleValue();
 		} catch (Exception e) {
 			e.printStackTrace();
-		}finally {
-			try {
-				if(null != workbook){
-					workbook.close();
-				}
-			} catch (IOException e) {
-				e.printStackTrace();
-			}
+			log.error("FormulaUtils==excel公式解析异常: ", e.getMessage());
 
 		}
 

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

@@ -7,6 +7,7 @@ import org.springframework.cloud.client.SpringCloudApplication;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.ComponentScans;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
  * eval启动器
@@ -19,6 +20,7 @@ import org.springframework.context.annotation.ComponentScans;
 })
 @EnableFeignClients
 @EnableCaching
+@EnableScheduling
 public class EvalApplication {
 
 	public static void main(String[] args) {

+ 5 - 3
ims-service/ims-eval/src/main/java/com/ims/eval/controller/EvaluationWarningRuleController.java

@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -30,9 +31,10 @@ public class EvaluationWarningRuleController {
 	@GetMapping(value = "list")
 	public R EvaluationWarningRuleList(
 		@RequestParam(value = "binSection", required = false) String binSection, //业务板块
-		@RequestParam(value = "ruleName", required = false) String ruleName) { //业务阶段
-		Map<String, Object> map = warningRuleService.warningRuleList(binSection, ruleName);
-		return R.ok().data(map);
+		@RequestParam(value = "ruleName", required = false) String ruleName, //业务阶段
+		@RequestParam(value = "type", required = false) String type) {
+		List<EvaluationWarningRule> list = warningRuleService.warningRuleList(binSection, ruleName, type, null);
+		return R.ok().data(list);
 	}
 
 

+ 3 - 1
ims-service/ims-eval/src/main/java/com/ims/eval/dao/EvaluationWarningRuleMapper.java

@@ -3,6 +3,7 @@ package com.ims.eval.dao;
 import com.ims.eval.entity.EvaluationWarningRule;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -15,5 +16,6 @@ import java.util.Map;
  */
 public interface EvaluationWarningRuleMapper extends BaseMapper<EvaluationWarningRule> {
 
-	Map<String, Object> selectWarningRule(String binSection, String ruleName);
+	List<EvaluationWarningRule> selectWarningRule(String binSection, String ruleName, String type, Boolean enable);
+
 }

+ 6 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/dao/OrganizationEvaluationMapper.java

@@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ims.eval.entity.dto.response.OrganizationEvaluationResDTO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 单位/部门考评记录 Mapper 接口
@@ -17,4 +20,7 @@ public interface OrganizationEvaluationMapper extends BaseMapper<OrganizationEva
 
 	OrganizationEvaluationResDTO selectById(@Param("id")String id);
 
+
+	List<Map<String, Object>> selectCompanyActualValue(String binSection, String indicatorId, String evaluationType);
+
 }

+ 4 - 4
ims-service/ims-eval/src/main/java/com/ims/eval/entity/EvaluationWarningInfo.java

@@ -2,12 +2,14 @@ package com.ims.eval.entity;
 
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import java.time.LocalDate;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author wang
@@ -82,7 +84,5 @@ public class EvaluationWarningInfo extends Model {
     /**
      * 创建时间
      */
-    private LocalDate createTime;
-
-
+    private Date createTime;
 }

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

@@ -34,7 +34,7 @@ public class EvaluationWarningRule extends Model {
     /**
      * 指标id
      */
-    private String indicatorCode;
+    private String indicatorId;
 
     /**
      * 指标信息(计划值、完成值、偏差等信息)

+ 78 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/schedule/EvaluationWarningSchedule.java

@@ -0,0 +1,78 @@
+package com.ims.eval.schedule;
+
+import com.ims.eval.entity.EvaluationWarningRule;
+import com.ims.eval.service.IEvaluateRuleInfoService;
+import com.ims.eval.service.IEvaluationWarningRuleService;
+import com.ims.eval.service.IOrganizationEvaluationService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 考评预警定时处理
+ */
+@Slf4j
+@Component
+public class EvaluationWarningSchedule {
+
+	@Autowired
+	private IEvaluationWarningRuleService warningRuleService;
+	@Autowired
+	private IEvaluateRuleInfoService warningInfoService;
+	@Autowired
+	private IOrganizationEvaluationService evaluationService;
+
+
+	private final String TYPE_NDKP = "NDKP";
+	private final String TYPE_JDKP = "JDKP";
+	private final String TYPE_YDKP = "YDKP";
+
+
+	/**
+	 * 年度考评
+	 */
+	public void warningRuleResolveNDKP(){
+		List<EvaluationWarningRule> list = warningRuleService.warningRuleList(null, null, TYPE_NDKP, true);
+		List<Map<String, Object>> companys = evaluationService.getCompanyWarning(TYPE_NDKP);
+
+		if (list == null || list.size() == 0 || companys == null || companys.size() == 0) {
+			return;
+		}
+
+
+	}
+
+	/**
+	 * 季度考评
+	 */
+	public void warningRuleResolveJDKP(){
+		List<EvaluationWarningRule> list = warningRuleService.warningRuleList(null, null, TYPE_JDKP, true);
+		if (list == null || list.size() == 0) {
+			return;
+		}
+	}
+
+	/**
+	 * 月度考评
+	 */
+	public void warningRuleResolveYDKP(){
+		List<EvaluationWarningRule> list = warningRuleService.warningRuleList(null, null, TYPE_YDKP,true);
+		if (list == null || list.size() == 0) {
+			return;
+		}
+	}
+
+	private void calculate(List<EvaluationWarningRule> rules, List<Map<String, Object>> companys){
+		Map<Object, List<Map<String, Object>>> collect = companys.stream().collect(Collectors.groupingBy(m -> m.get("indicator_id")));
+		for (EvaluationWarningRule rule : rules){
+			for (Map.Entry<Object, List<Map<String, Object>>> entry : collect.entrySet()) {
+				List<Map<String, Object>> v = entry.getValue();
+
+			}
+		}
+	}
+}

+ 10 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/service/IEvaluationWarningInfoService.java

@@ -1,8 +1,10 @@
 package com.ims.eval.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ims.eval.entity.EvaluationWarningInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+
 /**
  * <p>
  *  服务类
@@ -13,4 +15,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IEvaluationWarningInfoService extends IService<EvaluationWarningInfo> {
 
+	/**
+	 * 查询考评预警规则
+	 * @return
+	 */
+	IPage<EvaluationWarningInfo> warningInfoList(Integer pageNum, Integer pageSize, String binSection, String indicatorId, boolean isConfirm);
+
+	boolean saveItem(String code, EvaluationWarningInfo warningInfo);
+
 }

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

@@ -3,6 +3,7 @@ package com.ims.eval.service;
 import com.ims.eval.entity.EvaluationWarningRule;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -21,7 +22,7 @@ public interface IEvaluationWarningRuleService extends IService<EvaluationWarnin
 	 * @param ruleName
 	 * @return
 	 */
-    Map<String, Object> warningRuleList(String binSection, String ruleName);
+    List<EvaluationWarningRule> warningRuleList(String binSection, String ruleName, String type, Boolean enable);
 
 	boolean saveOrUpdate(String code, EvaluationWarningRule warningRule);
 }

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

@@ -47,4 +47,5 @@ public interface IOrganizationEvaluationService extends IService<OrganizationEva
 	OrganizationEvaluationResDTO getByidAndInfo(String id, String dept,HttpServletRequest request);
 
 
+	List<Map<String, Object>> getCompanyWarning(String evaluationType);
 }

+ 4 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/EvaluatioinScoreCountServiceImpl.java

@@ -9,6 +9,7 @@ import com.ims.eval.entity.EvaluationScoreCount;
 import com.ims.eval.service.IEvaluationScoreCountService;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -65,6 +66,9 @@ public class EvaluatioinScoreCountServiceImpl extends ServiceImpl<EvaluationScor
 				mp.put(item.get("indicator_code").toString() + "_flag", item.get("score") == item.get("standard_score") ? "0"
 					: Double.valueOf(item.get("score").toString()) > Double.valueOf(item.get("standard_score").toString()) ? "1" : "-1");
 			}
+			DoubleSummaryStatistics sum = v.stream().collect(Collectors.summarizingDouble(e -> Double.valueOf(e.get("score").toString())));
+			BigDecimal bd = new BigDecimal(sum.getSum());
+			mp.put("score_total", bd.setScale(2, BigDecimal.ROUND_FLOOR).doubleValue());
 			value.add(mp);
 
 			// 添加标题

+ 50 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/EvaluationWarningInfoServiceImpl.java

@@ -1,11 +1,23 @@
 package com.ims.eval.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ims.common.utils.StringUtils;
+import com.ims.eval.cache.CacheContext;
+import com.ims.eval.config.CustomException;
 import com.ims.eval.entity.EvaluationWarningInfo;
 import com.ims.eval.dao.EvaluationWarningInfoMapper;
+import com.ims.eval.entity.OrganizationEvaluationRule;
+import com.ims.eval.entity.dto.response.MyuserResDTO;
 import com.ims.eval.service.IEvaluationWarningInfoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +29,42 @@ import org.springframework.stereotype.Service;
 @Service
 public class EvaluationWarningInfoServiceImpl extends ServiceImpl<EvaluationWarningInfoMapper, EvaluationWarningInfo> implements IEvaluationWarningInfoService {
 
+
+	@Override
+	public IPage<EvaluationWarningInfo> warningInfoList(Integer pageNum, Integer pageSize, String binSection, String indicatorId, boolean isConfirm) {
+		QueryWrapper<EvaluationWarningInfo> qw = new QueryWrapper<>();
+		//构造分页构造器
+		Page<EvaluationWarningInfo> page = new Page<>(pageNum, pageSize);
+		if (null == pageNum || null == pageSize) {
+			throw new CustomException("分页参数为空");
+		}
+
+		if (StringUtils.isNotEmpty(binSection)) {
+			qw.lambda().eq(EvaluationWarningInfo::getBinSection, binSection);
+		}
+
+		if (StringUtils.isNotEmpty(indicatorId)) {
+			qw.lambda().eq(EvaluationWarningInfo::getIndicatorId, indicatorId);
+		}
+
+		qw.lambda().eq(EvaluationWarningInfo::getIsConfirm, isConfirm);
+
+		IPage<EvaluationWarningInfo> list = baseMapper.selectPage(page, qw);
+
+		return list;
+	}
+
+
+	@Override
+	public boolean saveItem(String code, EvaluationWarningInfo warningInfo) {
+		//		MyuserResDTO user = userService.getSysUser(code);
+		MyuserResDTO user = new MyuserResDTO();
+		if (user != null){
+			warningInfo.setUserName(user.getName());
+			warningInfo.setUserCode(code);
+			warningInfo.setDeptId(user.getDeptId());
+		}
+
+		return saveOrUpdate(warningInfo);
+	}
 }

+ 4 - 3
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/EvaluationWarningRuleServiceImpl.java

@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -28,9 +29,9 @@ public class EvaluationWarningRuleServiceImpl extends ServiceImpl<EvaluationWarn
 	private IUserService userService;
 
 	@Override
-	public Map<String, Object> warningRuleList(String binSection, String ruleName) {
-		Map<String, Object> map = baseMapper.selectWarningRule(binSection, ruleName);
-		return map;
+	public List<EvaluationWarningRule> warningRuleList(String binSection, String ruleName, String type, Boolean enable) {
+		List<EvaluationWarningRule> list = baseMapper.selectWarningRule(binSection, ruleName, type, null);
+		return list;
 	}
 
 	@Override

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

@@ -193,7 +193,7 @@ public class OrganizationEvaluationInfoServiceImpl extends ServiceImpl<Organizat
 											for (OrganizationEvaluationInfoResDTO f : childCodeGropListEntry.getValue()) {
 												dto.setFormula(dto.getFormula().replace("[" + f.getOptionCode() + "]", f.getQuantifiedValue() + ""));
 											}
-											double score = FormulaUtils.caculateFormula(dto.getFormula());
+											double score = FormulaUtils.calculateFormula(dto.getFormula());
 											if (StringUtils.inStringIgnoreCase("DF", dto.getOptionCode())) {
 												totalScore = totalScore + score;
 											}
@@ -256,7 +256,7 @@ public class OrganizationEvaluationInfoServiceImpl extends ServiceImpl<Organizat
 												dto.setFormula(dto.getFormula().replace("["+f.getOptionCode()+"]", f.getQuantifiedValue() + ""));
 											}
 											log.info("计算公式为:"+dto.getFormula());
-											double score = FormulaUtils.caculateFormula(dto.getFormula());
+											double score = FormulaUtils.calculateFormula(dto.getFormula());
 											if(StringUtils.inStringIgnoreCase("DF",dto.getOptionCode())){
 												totalScore = totalScore+score;
 											}

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

@@ -568,6 +568,10 @@ public class OrganizationEvaluationServiceImpl extends ServiceImpl<OrganizationE
 		return resDTO;
 	}
 
+	@Override
+	public List<Map<String, Object>> getCompanyWarning(String evaluationType) {
+		return baseMapper.selectCompanyActualValue(null, null, evaluationType);
+	}
 
 
 	@Transactional

+ 2 - 2
ims-service/ims-eval/src/main/resources/mappers/EvaluateRuleInfoMapper.xml

@@ -53,10 +53,10 @@
                 AND ri.evaluate_rule_id = #{evaluateRuleId}
             </if>
 
-            order by ri.order_num asc
-        </where>
 
+        </where>
 
+        order by ri.order_num asc
     </select>
     <select id="selectlistByIndicatorInfo"
             resultType="com.ims.eval.entity.dto.response.EvaluateRuleInfoIndicatorDTO">

+ 8 - 10
ims-service/ims-eval/src/main/resources/mappers/EvaluateWarningRuleMapper.xml.xml

@@ -22,26 +22,24 @@
     </resultMap>
 
 
-    <select id="selectWarningRule" resultType="java.util.Map">
+    <select id="selectWarningRule" resultType="com.ims.eval.entity.EvaluationWarningRule">
         SELECT
-        er.*,
-        bs.section_name,
-        bs.section_code,
-        s.stage_name,
-        s.stage_code
+        er.*
         FROM
         evaluation_warning_rule er
-        LEFT JOIN bin_section bs ON bs.id = er.bin_section
-        LEFT JOIN bin_stage s ON s.id = er.bin_stage
-        LEFT JOIN indicator i ON i.id = er.indicator_id
         <where>
-
             <if test="binSection !=null and binSection !=''">
                 AND er.bin_section = #{binSection}
             </if>
             <if test="ruleName !=null and ruleName !=''">
                 AND er.rule_name like concat('%',#{ruleName},'%');
             </if>
+            <if test="type !=null and type !=''">
+                AND er.type = #{type}
+            </if>
+            <if test="enable !=null and enable !=''">
+                AND er.enable = #{enable}
+            </if>
 
         </where>
 

+ 32 - 0
ims-service/ims-eval/src/main/resources/mappers/OrganizationEvaluationMapper.xml

@@ -49,4 +49,36 @@
 
     </select>
 
+
+    <select id="selectCompanyActualValue" resultType="java.util.Map">
+        SELECT bs.section_name,
+               bs.section_code,
+               er.organization_name,
+               i.indicator_name,
+               oi.child_code,
+               id.option_name,
+               oi.option_code,
+               oi.quantified_value,
+               oe.check_cycle
+        from organization_evaluation  oe
+               LEFT JOIN organization_evaluation_info oi on oe.id = oi.organization_evaluation_id
+               INNER JOIN organization_evaluation_rule er on er.id = oi.organization_evaluation_rule_id
+               INNER JOIN indicator_dictionary id on oi.indicator_dictionary_id = id.id
+               INNER JOIN indicator i on i.id = id.indicator_id and i.id  = oi.indicator_id
+               INNER JOIN bin_section bs ON i.bin_section = bs.id
+        <where>
+            id.is_show = true
+            <if test="binSection !=null and binSection !=''">
+                AND bs.id = #{binSection}
+            </if>
+            <if test="indicatorId !=null and indicatorId !=''">
+                AND oi.indicator_id = #{indicatorId}
+            </if>
+            <if test="evaluationType !=null and evaluationType !=''">
+                AND oe.evaluationType = #{evaluationType}
+            </if>
+        </where>
+        order by oi.child_code ASC
+    </select>
+
 </mapper>