Forráskód Böngészése

feat(task): 任务类型数据分析增加任务分类筛选功能

- 在 findTypeScopeCount 和 findTaskTypeSettingDataAnalysis 方法中添加任务类型 ID 筛选条件
- 使用 StringUtils 和 ParameterUtil 优化参数获取和处理逻辑
- 重构 SQL 查询语句,提高代码可读性和维护性
wanyuan 1 hónapja
szülő
commit
d6c3656ebc

+ 28 - 13
tc-service/tap-task/src/main/java/com/minto/app/task/dao/TaskAnalysisDaoImpl.java

@@ -25,6 +25,7 @@ import com.minto.core.util.StringUtil;
 import com.minto.tap.performmance.dto.TaskScoreParam;
 import com.minto.tip.common.exceptions.BusinessException;
 import com.minto.tip.common.util.PageInfo;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Repository;
 
 @Repository("taskAnalysisDao")
@@ -2086,6 +2087,8 @@ hql.append("AND EXISTS (\n" +
 
     @Override
     public List<Map<String, Object>> findTypeScopeCount(Map<String, Object> params){
+        Map<String, Object> param = new HashMap<>();
+        param.put("year", ParameterUtil.getInteger(params, "year", DateUtil.getYear()));
         StringBuilder sql = new StringBuilder();
         sql.append(" SELECT te.value AS name, COUNT(1) as c, ");
 //        sql.append(" SUM(CASE WHEN typeScore.base_score IS NULL THEN 0 ELSE typeScore.base_score END) AS scope1");
@@ -2103,29 +2106,41 @@ hql.append("AND EXISTS (\n" +
         sql.append(" LEFT JOIN type_setting_score typeScore ON typeScore.enum_id = te.id AND typeScore.year = :year ");
         sql.append(" WHERE to_char(ts.create_date,'yyyy') = :year ");
         sql.append(" and ts.tstate != 7 ");
+        String taskTypeId = ParameterUtil.getString(params, "taskTypeId");
+        if(StringUtils.isNotBlank(taskTypeId)){
+            sql.append("and ts.tasktype_id = :taskTypeId ");
+            param.put("taskTypeId",taskTypeId);
+        }
         sql.append(" GROUP BY te.value,te.id ");
         String order = ParameterUtil.getString(params,"order","c");
         Integer asc = ParameterUtil.getInteger(params,"asc",0);
         sql.append(" ORDER BY ").append(order).append(asc == 1 ? " ASC " : " DESC ");
-        Map<String, Object> param = new HashMap<>();
-        param.put("year", ParameterUtil.getInteger(params, "year", DateUtil.getYear()));
         return getHibernateTpl().queryBySql(sql.toString(), param);
     }
 
     @Override
     public List<Map<String, Object>> findTaskTypeSettingDataAnalysis(Map<String, Object> params){
-        String sql = "select te.id as id, te.value as name, te.color as color, (case when te.color is null or te"
-                + ".color = '1' then count(CASE WHEN tts.type_state = '1' THEN tts.id END) else sum(CASE WHEN tts.type_state "
-                + "is not null THEN tts.type_state else 1 END) end) as c1, (case when te.color is null or te.color = '1' then"
-        + " count(tts.id) else count(tts.id) end) as c2 from task_type_setting tts inner join task_summary ts on ts"
-        + ".id = tts.reference_id left join (SELECT * FROM tip_enum WHERE type IN ( SELECT id FROM tip_enum WHERE key"
-        + " = 'matter_type_settings' ) AND status <> -1 ) te on te.id = tts.type_id where ts.tstate != 7 and to_char"
-        + "(ts.create_date,'yyyy') = :year group by te.id, te.value, te.color ";
-        String order = ParameterUtil.getString(params, "order", "name");
-        Integer asc = ParameterUtil.getInteger(params, "asc", 0);
-        sql = sql + (" ORDER BY " + order + (asc == 1 ? " ASC " : " DESC "));
         Map<String, Object> param = new HashMap<>();
         param.put("year", ParameterUtil.getInteger(params, "year", DateUtil.getYear()));
-        return getHibernateTpl().queryBySql(sql, param);
+        StringBuilder sql = new StringBuilder();
+        sql.append("select te.id as id, te.value as name, te.color as color, ");
+        sql.append("(case when te.color is null or te.color = '1' then count(CASE WHEN tts.type_state = '1' THEN tts.id END) ");
+        sql.append("else sum(CASE WHEN tts.type_state is not null THEN tts.type_state else 1 END) end) as c1, ");
+        sql.append("(case when te.color is null or te.color = '1' then count(tts.id) else count(tts.id) end) as c2 ");
+        sql.append("from task_type_setting tts ");
+        sql.append("inner join task_summary ts on ts.id = tts.reference_id ");
+        sql.append("left join (SELECT * FROM tip_enum WHERE type IN ( SELECT id FROM tip_enum WHERE key = 'matter_type_settings' ) AND status <> -1 ) te ");
+        sql.append("on te.id = tts.type_id ");
+        sql.append("where ts.tstate != 7 and to_char(ts.create_date, 'yyyy') = :year ");
+        String taskTypeId = ParameterUtil.getString(params, "taskTypeId");
+        if(StringUtils.isNotBlank(taskTypeId)){
+            sql.append("and ts.tasktype_id = :taskTypeId ");
+            param.put("taskTypeId",taskTypeId);
+        }
+        sql.append("group by te.id, te.value, te.color ");
+        String order = ParameterUtil.getString(params, "order", "name");
+        Integer asc = ParameterUtil.getInteger(params, "asc", 0);
+        sql.append(" ORDER BY ").append(order).append(asc == 1 ? " ASC " : " DESC ");
+        return getHibernateTpl().queryBySql(sql.toString(), param);
     }
 }