Kaynağa Gözat

档位占比分析图报表接口,试卷管理,试卷复核bug修复

xiaof 5 yıl önce
ebeveyn
işleme
5181e22762

+ 82 - 6
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/QualityAnalyseController.java

@@ -1,11 +1,20 @@
 package cn.com.qmth.stmms.ms.admin.api;
 
+import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
+import cn.com.qmth.stmms.ms.core.domain.Level;
+import cn.com.qmth.stmms.ms.core.domain.MarkStage;
+import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
+import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
+import java.util.*;
+
 /**
  * @Description: 质量分析报表controller
  * @Param:
@@ -18,6 +27,15 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("api/quality")
 public class QualityAnalyseController {
 
+    @Autowired
+    private LevelRepo levelRepo;
+
+    @Autowired
+    private MarkTaskRepo markTaskRepo;
+
+    @Autowired
+    private SqlUtil sqlUtil;
+
     /**
      * 档位占比报表
      *
@@ -29,17 +47,75 @@ public class QualityAnalyseController {
      */
 //    @ApiOperation(value = "档位占比报表接口")
     @RequestMapping(value = "levelsPropReport", method = RequestMethod.GET)
-    public void levelsPropReport(
-//            @ApiParam(value = "workId", required = true)
+    public Object levelsPropReport(
             @RequestParam Long workId,
-//            @ApiParam(value = "科目", required = true)
             @RequestParam Subject subject,
-//            @ApiParam(value = "考点", required = true)
             @RequestParam String areaCode,
-//            @ApiParam(value = "开始时间", required = false)
             @RequestParam(required = false) String startTime,
-//            @ApiParam(value = "结束时间", required = false)
             @RequestParam(required = false) String endTime) {
+        List fList = new ArrayList();
+        List<Level> levels = levelRepo.findByWorkId(workId);
+        levels.forEach(l -> {
+            StringBuffer sql = new StringBuffer();
+            sql.append("  SELECT                                                        ");
+            sql.append("      mu.id markerId,                                           ");
+            sql.append("      mu.name markerName,                                       ");
+            sql.append("      SUM(IF(mt.result = '" + l.getCode() + "', 1, 0)) levelCount,  ");
+            sql.append("      COUNT(1) total                                            ");
+            sql.append("  FROM                                                          ");
+            sql.append("      mark_user mu                                              ");
+            sql.append("          LEFT JOIN                                             ");
+            sql.append("      (SELECT                                                   ");
+            sql.append("          m.*                                                     ");
+            sql.append("      FROM                                                      ");
+            sql.append("          mark_task m                                           ");
+            sql.append("          left join paper p on m.paper_id = p.id                ");
+            sql.append("      WHERE                                                     ");
+            sql.append("          stage = " + MarkStage.LEVEL.ordinal() + "             ");
+            if (!Objects.isNull(areaCode)) {
+                sql.append(" and p.area_code = " + areaCode);
+            }
+            if (!Objects.isNull(startTime)) {
+                sql.append(" and m.updated_on >= '" + startTime +"'");
+            }
+            if (!Objects.isNull(endTime)) {
+                sql.append(" and m.updated_on <= '" + endTime + "'");
+            }
+            sql.append("          ) mt ON mu.work_id = mt.work_id                       ");
+            sql.append("          AND mu.subject = mt.subject                           ");
+            sql.append("          AND mu.id = mt.marker_id                              ");
+            sql.append("  WHERE                                                         ");
+            sql.append("      mu.work_id = " + workId + " AND mu.subject = '" + subject.toString() + "' ");
+            sql.append("          AND mu.role = 'MARKER'                                ");
+            sql.append("  GROUP BY mu.id , mu.name                                      ");
+            sql.append("  ORDER BY mu.id                                                ");
+
+            List list = sqlUtil.execSqlForMap(sql.toString());
+            Map map = new HashMap();
+            List<Map> data = new ArrayList();
+            map.put("name", l.getCode());
+            for (Object o : list) {
+                Map m = (Map) o;
+                //该档任务数
+                BigDecimal levelCount = BigDecimal.valueOf(Long.parseLong(m.get("levelCount").toString()));
+                //总任务数
+                BigDecimal total = BigDecimal.valueOf(Long.parseLong(m.get("total").toString()));
+                //占比
+                BigDecimal propBig = BigDecimal.ZERO.compareTo(total) == 0 ? BigDecimal.ZERO : levelCount.divide(total, 4, BigDecimal.ROUND_HALF_UP);
+                double prop = propBig.doubleValue();
+                Map temp = new HashMap();
+                temp.put("markerId", m.get("markerId"));
+                temp.put("markerName", m.get("markerName"));
+                temp.put("prop", prop * 100);
+                data.add(temp);
+            }
+            //排序
+            Collections.sort(data, Comparator.comparing(o -> o.get("markerId").toString()));
+            map.put("data", data);
+            fList.add(map);
+        });
+
+        return fList;
 
     }
 

+ 1 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/ScoreApi.java

@@ -333,6 +333,7 @@ public class ScoreApi {
                 predicates.add(builder.equal(root.get("examNumber"), startNumber));
             }
             predicates.add(builder.equal(root.get("isManual"), Optional.ofNullable(isManual).orElse(true)));
+            predicates.add(builder.equal(root.get("test"), 0));
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
         };
         List<PaperDTO> paperDTOs = new ArrayList<>();

+ 1 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java

@@ -140,7 +140,7 @@ public class PaperApi {
             if (isManual != null) {
                 predicates.add(builder.equal(root.get("isManual"), isManual));
             }
-
+            predicates.add(builder.equal(root.get("test"), 0));
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
         };
         List<PaperDTO> paperDTOs = new ArrayList<>();