ソースを参照

feat: update something

shc 1 年間 前
コミット
3663c92278

+ 83 - 9
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -35,12 +35,14 @@ import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysRole;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUserAgreementHistory;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmDrugQuizRelation;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmPkgQuizRelation;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmPlatformQuizTestResult;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmQuiz;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionPercentRule;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
 import com.qunzhixinxi.hnqz.admin.api.dto.UserUpdateInput;
+import com.qunzhixinxi.hnqz.admin.api.model.WmQuizResultModel;
 import com.qunzhixinxi.hnqz.admin.api.vo.PersonalScoreRecordVO;
 import com.qunzhixinxi.hnqz.admin.api.vo.UserBusinessCardVO;
 import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
@@ -99,6 +101,7 @@ import com.qunzhixinxi.hnqz.admin.service.WmDaDrugEntDrugtableService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDrugEntService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaHospitalService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaPharmacyService;
+import com.qunzhixinxi.hnqz.admin.service.WmDrugQuizRelationService;
 import com.qunzhixinxi.hnqz.admin.service.WmFeedbackService;
 import com.qunzhixinxi.hnqz.admin.service.WmPkgQuizRelationService;
 import com.qunzhixinxi.hnqz.admin.service.WmPlatformQuizTestResultService;
@@ -252,6 +255,7 @@ public class ApiController {
     private final WmPlatformQuizTestResultService platformQuizTestResultService;
     private final ApplicationEventPublisher applicationEventPublisher;
     private final SysUserAgreementHistoryService userAgreementHistoryService;
+    private final WmDrugQuizRelationService drugQuizRelationService;
 
     /**
      * 通过任务类型获取表单配置
@@ -389,18 +393,32 @@ public class ApiController {
                                             map.put("value", wmScorePackage.getId());
                                             String drugProducer = ArrayUtils.isEmpty(wmScorePackage.getDrugProducerList()) ? "" : String.join(StrPool.COMMA, wmScorePackage.getDrugProducerList());
                                             map.put("drugProducer", drugProducer);
-                                            map.put("drugTableIds", wmScorePackage.getDrugtable());
-                                            if (ArrayUtil.isNotEmpty(wmScorePackage.getDrugtable())) {
-                                                List<WmDaDrugEntDrugtable> drugtables =
-                                                        wmDaDrugEntDrugtableService.list(Wrappers.<WmDaDrugEntDrugtable>lambdaQuery().in(WmDaDrugEntDrugtable::getId,
-                                                                Arrays.stream(wmScorePackage.getDrugtable()).collect(Collectors.toSet())));
+
+                                            List<String> drugIds = Arrays.stream(wmScorePackage.getDrugtable()).distinct().collect(Collectors.toList());
+
+                                            map.put("drugTableIds", drugIds);
+
+                                            List<Integer> pkgQuizIds = new LinkedList<>();
+                                            if (ArrayUtil.isNotEmpty(drugIds)) {
+
+                                                // 获取药品绑定的试卷
+                                                List<WmDrugQuizRelation> relations = drugQuizRelationService.list(Wrappers.<WmDrugQuizRelation>lambdaQuery().in(WmDrugQuizRelation::getDrugId, drugIds));
+
+                                                Map<Integer, List<WmDrugQuizRelation>> drugIdToQuizzes = relations.stream().collect(Collectors.groupingBy(WmDrugQuizRelation::getDrugId));
+
+
+                                                List<WmDaDrugEntDrugtable> drugtables = wmDaDrugEntDrugtableService.list(Wrappers.<WmDaDrugEntDrugtable>lambdaQuery().in(WmDaDrugEntDrugtable::getId, drugIds));
 
                                                 if (CollUtil.isNotEmpty(drugtables)) {
-                                                    List<Map<String, String>> drugMap = drugtables.stream().map(drug -> {
-                                                        Map<String, String> res = new HashMap<>(3);
+                                                    List<Map<String, Object>> drugMap = drugtables.stream().map(drug -> {
+                                                        Map<String, Object> res = new HashMap<>(3);
                                                         res.put("drugId", drug.getId());
                                                         res.put("drugName", drug.getDrugname());
                                                         res.put("drugPordName", drug.getDrugnameTy());
+                                                        List<WmDrugQuizRelation> quizRelations = drugIdToQuizzes.get(Integer.valueOf(drug.getId()));
+                                                        List<Integer> quizIds = CollUtil.isEmpty(quizRelations) ? Collections.emptyList() : quizRelations.stream().mapToInt(WmDrugQuizRelation::getQuizId).boxed().distinct().collect(Collectors.toList());
+                                                        res.put("quizIds", quizIds);
+                                                        pkgQuizIds.addAll(quizIds);
                                                         return res;
                                                     }).collect(Collectors.toList());
                                                     map.put("drugTable", drugMap);
@@ -411,7 +429,7 @@ public class ApiController {
                                             } else {
                                                 map.put("drugTable", Collections.emptyMap());
                                             }
-
+                                            map.put("pkgQuizIds", pkgQuizIds);
 
                                             listMap.add(map);
                                         }
@@ -3928,7 +3946,7 @@ public class ApiController {
                             .collect(Collectors.groupingBy(WmPlatformQuizTestResult::getQuizId));
             LocalDate today = LocalDate.now();
             for (WmQuiz quiz : quizzes) {
-                Map<String, Object> history = new HashMap<>(3);
+                Map<String, Object> history = new HashMap<>(4);
 
                 // 存在历史答题记录
                 Integer finalMark = null;
@@ -3957,10 +3975,66 @@ public class ApiController {
         vo.setTestResults(histories);
 
         return R.ok(vo);
+    }
 
 
+    /**
+     * 获取当前用户的平台试题测试结果
+     *
+     * @return 平台测试结果信息
+     */
+    @GetMapping(value = "/quiz/plt/test/result/grouping")
+    public R<Map<String, List<Integer>>> checkPlatQuizTestResult1() {
+
+        // 获取用户信息
+        HnqzUser user = SecurityUtils.getUser();
+
+        // 获取平台的问卷 和 答题的情况
+        List<WmQuiz> quizzes = quizService.listEntQuizzes(upmsConfig.getPltEntId(), UpmsState.QuizState.RELEASE);
+
+        if (CollUtil.isEmpty(quizzes)) {
+            return R.ok(Collections.emptyMap());
+        }
+
+
+        List<Integer> quizIds = quizzes.stream().mapToInt(WmQuiz::getQuizId).boxed().distinct().collect(Collectors.toList());
+
+        Map<Integer, List<WmPlatformQuizTestResult>> collect =
+                platformQuizTestResultService.listPltQuizResults(user.getId(), quizIds).stream()
+                        .collect(Collectors.groupingBy(WmPlatformQuizTestResult::getQuizId));
+
+
+        Map<String, List<Integer>> histories = new HashMap<>(2);
+
+        List<Integer> passed = new LinkedList<>();
+        List<Integer> failed = new LinkedList<>();
+
+        quizIds.forEach(id -> {
+
+            List<WmPlatformQuizTestResult> wmPlatformQuizTestResults = collect.get(id);
+            if (CollUtil.isEmpty(wmPlatformQuizTestResults)) {
+                failed.add(id);
+            } else {
+                WmPlatformQuizTestResult wmPlatformQuizTestResult = wmPlatformQuizTestResults.get(0);
+                WmQuizResultModel quizResult = wmPlatformQuizTestResult.getQuizResult();
+
+                if (quizResult.getFinalMark() - quizResult.getPassingMark() >= 0) {
+                    passed.add(id);
+                } else {
+                    failed.add(id);
+                }
+
+            }
+        });
+
+        histories.put("passed", passed);
+        histories.put("failed", failed);
+
+        return R.ok(histories);
+
     }
 
+
     /**
      * 用户保存平台试卷测试结果
      *