diff --git a/src/main/java/com/luca/pilot/entity/PlanModule.java b/src/main/java/com/luca/pilot/entity/PlanModule.java index 02c677af840dec299d4c3f3f30fa0aca03eaf5c0..405a747ab75d9026b2fe2b86272b3d824c0c5d60 100644 --- a/src/main/java/com/luca/pilot/entity/PlanModule.java +++ b/src/main/java/com/luca/pilot/entity/PlanModule.java @@ -4,7 +4,7 @@ import lombok.Data; import org.springframework.data.mongodb.core.mapping.Document; @Data -@Document(collection="plan_module") +@Document(collection="plan_module_hj") public class PlanModule { private String key; @@ -22,6 +22,7 @@ public class PlanModule { * plan */ private String projectCode; + private Long siteId; private String projectName; private String siteName; private Long planId; @@ -74,7 +75,7 @@ public class PlanModule { /** * 缁勮 */ - private String result; + private Object result; private String digitalModuleTableName; /** diff --git a/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java b/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java index 80c907df565c7874a4150ada1bcc31a3fcc9e71c..188bce5e06b59d74e2778778e96d3f84d2f3c2ac 100644 --- a/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java +++ b/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java @@ -99,7 +99,7 @@ public class PlanServiceImpl implements PlanService { Map<Long, String> relationNameMap = queryRelateMoudleName(planMoudleRelates); - Map<Long, Map<String, String>> resultMap = queryPlanTaskDetailResult(planTaskDetails); + Map<Long, Map<String, Object>> resultMap = queryPlanTaskDetailResult(planTaskDetails); Map<Long, Map<Long, Long>> digitalMedicalEventMap = queryDigitalMedicalEvent(planTaskDetails); Map<Long, Map<Long, String>> digitalMedicalTypeMap = queryDigitalMedicalType(planTaskDetails); @@ -142,6 +142,7 @@ public class PlanServiceImpl implements PlanService { } if (Objects.nonNull(site)) { planMoudle.setSiteName(site.getSiteName()); + planMoudle.setSiteId(site.getId()); } if (Objects.nonNull(plan)) { @@ -186,10 +187,10 @@ public class PlanServiceImpl implements PlanService { } if (MapUtil.isNotEmpty(resultMap)) { - Map<String, String> planTaskDetailMap = resultMap.get(planTaskDetail.getId()); + Map<String, Object> planTaskDetailMap = resultMap.get(planTaskDetail.getId()); if (MapUtil.isNotEmpty(planTaskDetailMap)) { - String result = planTaskDetailMap.get(String.valueOf(relate.getRelationId())); + Object result = planTaskDetailMap.get(String.valueOf(relate.getRelationId())); if (!StringUtils.isEmpty(result)) { planMoudle.setResult(result); } @@ -403,11 +404,11 @@ public class PlanServiceImpl implements PlanService { return map; } - private Map<Long, Map<String, String>> queryPlanTaskDetailResult(List<PlanTaskDetails> planTaskDetails) { - Map<Long, Map<String, String>> map = new HashMap<>(); - Map<Long, Map<String, String>> scaleMap = queryScaleResult(planTaskDetails); + private Map<Long, Map<String, Object>> queryPlanTaskDetailResult(List<PlanTaskDetails> planTaskDetails) { + Map<Long, Map<String, Object>> map = new HashMap<>(); + Map<Long, Map<String, Object>> scaleMap = queryScaleResult(planTaskDetails); map.putAll(scaleMap); - Map<Long, Map<String, String>> questonaireMap = queryQuestionaireResult(planTaskDetails); + Map<Long, Map<String, Object>> questonaireMap = queryQuestionaireResult(planTaskDetails); questonaireMap.forEach((k, v) -> { if (map.containsKey(k)) { @@ -417,7 +418,7 @@ public class PlanServiceImpl implements PlanService { } }); - Map<Long, Map<String, String>> crfMap = queryCrfResult(planTaskDetails); + Map<Long, Map<String, Object>> crfMap = queryCrfResult(planTaskDetails); crfMap.forEach((k, v) -> { if (map.containsKey(k)) { map.get(k).putAll(v); @@ -429,7 +430,7 @@ public class PlanServiceImpl implements PlanService { return map; } - private Map<Long, Map<String, String>> queryCrfResult(List<PlanTaskDetails> planTaskDetails) { + private Map<Long, Map<String, Object>> queryCrfResult(List<PlanTaskDetails> planTaskDetails) { Set<Long> planTskDetailIds = planTaskDetails.stream().map(PlanTaskDetails::getId).collect(Collectors.toSet()); if (CollectionUtils.isEmpty(planTskDetailIds)) { return new HashMap<>(); @@ -443,15 +444,15 @@ public class PlanServiceImpl implements PlanService { Map<Long, String> crfMap = mongoTemplate.find(new Query().addCriteria(where("id").in(crfIds)), Crf.class) .stream().collect(Collectors.toMap(Crf::getId, Crf::getQuestionJson, (k1, k2) -> k2)); - Map<Long, Map<String, String>> map = new HashMap<>(); + Map<Long, Map<String, Object>> map = new HashMap<>(); crfAnswersMap.forEach((k, v) -> { if (!CollectionUtils.isEmpty(v)) { - Map<String, String> innerMap = new HashMap<>(); + Map<String, Object> innerMap = new HashMap<>(); v.forEach(crfAnswer -> { String questionJson = crfMap.get(crfAnswer.getCrfId()); if (Objects.nonNull(questionJson) && Objects.nonNull(crfAnswer.getAnswerJson())) { try { - String result = CrfUtil.parseCrfProblemAndAnswer(questionJson, crfAnswer.getAnswerJson()); + Map<String, Object> result = CrfUtil.parseCrfProblemAndAnswer(questionJson, crfAnswer.getAnswerJson()); if (Objects.nonNull(result)) { innerMap.put(crfAnswer.getCrfTopId().toString(), result); } @@ -468,7 +469,7 @@ public class PlanServiceImpl implements PlanService { return map; } - private Map<Long, Map<String, String>> queryQuestionaireResult(List<PlanTaskDetails> planTaskDetails) { + private Map<Long, Map<String, Object>> queryQuestionaireResult(List<PlanTaskDetails> planTaskDetails) { Set<Long> planTskDetailIds = planTaskDetails.stream().map(PlanTaskDetails::getId).collect(Collectors.toSet()); if (CollectionUtils.isEmpty(planTskDetailIds)) { return new HashMap<>(); @@ -486,54 +487,55 @@ public class PlanServiceImpl implements PlanService { Set<Long> ansowerIds = answers.stream().map(QuestionnaireAnswer::getId).collect(Collectors.toSet()); List<QuestionnaireAnswerOption> answerOptions = mongoTemplate.find(new Query().addCriteria(where("answer_id").in(ansowerIds)), QuestionnaireAnswerOption.class); - Map<Long, Map<String, String>> map = new HashMap<>(); + Map<Long, Map<String, Object>> map = new HashMap<>(); for (QuestionnaireAnswerRecord record : records) { List<QuestionnaireAnswer> answerList = answers.stream().filter(x -> x.getRecordId().equals(record.getId())).collect(Collectors.toList()); - Map<String, String> resultMap = new HashMap<>(); - List<String> keyValueNewVos = new ArrayList<>(); + Map<String, Object> resultMap = new HashMap<>(); +// List<String> keyValueNewVos = new ArrayList<>(); + Map<String,Object> keyValueNewVos = new HashMap<>(); for (QuestionnaireAnswer answer : answerList) { Stream<QuestionnaireAnswerOption> questionnaireAnswerOptionStream = answerOptions.stream().filter(x -> x.getAnswerId().equals(answer.getId()) && x.getQuestionId().equals(answer.getQuestionId())); Optional<QuestionnaireAnswerOption> optionalAnswerOption = questionnaireAnswerOptionStream.findAny(); switch (answer.getType()) { case "CHOICE": - keyValueNewVos.add(answer.getQuestionName() + ":" + optionalAnswerOption.map(QuestionnaireAnswerOption::getOptionName).orElse("-")); + keyValueNewVos.put(answer.getQuestionName() , optionalAnswerOption.map(QuestionnaireAnswerOption::getOptionName).orElse("-")); break; case "SLIDE": case "DATE_SELECT": case "NUMBER": - keyValueNewVos.add(answer.getQuestionName() + ":" + optionalAnswerOption.map(option -> String.valueOf(option.getNumberAnswer())).orElse("-")); + keyValueNewVos.put(answer.getQuestionName() , optionalAnswerOption.map(option -> String.valueOf(option.getNumberAnswer())).orElse("-")); break; case "MULTIPLE_CHOICE": List<String> optionNames = answerOptions.stream() .filter(x -> x.getAnswerId().equals(answer.getId()) && x.getQuestionId().equals(answer.getQuestionId())) .map(QuestionnaireAnswerOption::getOptionName) .collect(Collectors.toList()); - keyValueNewVos.add(answer.getQuestionName() + ":" + (optionNames.isEmpty() ? "-" : String.join(",", optionNames))); + keyValueNewVos.put(answer.getQuestionName() , (optionNames.isEmpty() ? "-" : String.join(",", optionNames))); break; case "DATE": - keyValueNewVos.add(answer.getQuestionName() + ":" + optionalAnswerOption.map(QuestionnaireAnswerOption::getDateAt).orElse("-")); + keyValueNewVos.put(answer.getQuestionName() , optionalAnswerOption.map(QuestionnaireAnswerOption::getDateAt).orElse("-")); break; case "SECTION_NUMBER": - keyValueNewVos.add(answer.getQuestionName() + ":" + (optionalAnswerOption.map(option -> option.getLeftMin() + "-" + option.getRightMax()).orElse("-"))); + keyValueNewVos.put(answer.getQuestionName() , (optionalAnswerOption.map(option -> option.getLeftMin() + "-" + option.getRightMax()).orElse("-"))); break; case "TEXT": - keyValueNewVos.add(answer.getQuestionName() + ":" + optionalAnswerOption.map(QuestionnaireAnswerOption::getContent).orElse("-")); + keyValueNewVos.put(answer.getQuestionName() , optionalAnswerOption.map(QuestionnaireAnswerOption::getContent).orElse("-")); break; } } - resultMap.put(String.valueOf(record.getTopId()), JSONUtil.toJsonStr(keyValueNewVos)); + resultMap.put(String.valueOf(record.getTopId()), keyValueNewVos); map.put(record.getPlanTaskDetailsId(), resultMap); } return map; } - private Map<Long, Map<String, String>> queryScaleResult(List<PlanTaskDetails> planTaskDetails) { + private Map<Long, Map<String, Object>> queryScaleResult(List<PlanTaskDetails> planTaskDetails) { Set<Long> planTskDetailIds = planTaskDetails.stream().map(PlanTaskDetails::getId).collect(Collectors.toSet()); if (CollectionUtils.isEmpty(planTskDetailIds)) { return new HashMap<>(); @@ -543,21 +545,24 @@ public class PlanServiceImpl implements PlanService { mongoTemplate.find(new Query().addCriteria(where("plan_task_details_id").in(planTskDetailIds)), PatientScaleEvaluatingEntity.class) .stream().collect(Collectors.groupingBy(PatientScaleEvaluatingEntity::getPlanTaskDetailsId)); - Map<Long, Map<String, String>> map = new HashMap<>(); + Map<Long, Map<String, Object>> map = new HashMap<>(); scaleEvaluatMap.forEach((k, v) -> { if (!CollectionUtils.isEmpty(v)) { - Map<String, String> result = new HashMap<>(); + Map<String, Object> result = new HashMap<>(); v.forEach(item -> { - List<String> sb = new ArrayList<>(); +// List<String> sb = new ArrayList<>(); + Map<String,Object> resultMap = new HashMap<>(); if (Objects.nonNull(item.getScaleResult())) { - sb.add("result:" + item.getScaleResult()); +// sb.add("result:" + item.getScaleResult()); + resultMap.put("result",item.getScaleResult()); } if (Objects.nonNull(item.getTotalScore())) { - sb.add("totalScore:" + item.getTotalScore()); +// sb.add("totalScore:" + item.getTotalScore()); + resultMap.put("totalScore",item.getTotalScore()); } - if (!CollectionUtils.isEmpty(sb)) { - result.put(item.getScaleCode(), JSONUtil.toJsonStr(sb)); + if (!MapUtil.isEmpty(resultMap)) { + result.put(item.getScaleCode(), resultMap); } }); diff --git a/src/main/java/com/luca/pilot/util/CrfUtil.java b/src/main/java/com/luca/pilot/util/CrfUtil.java index ccffa6c857708a9e60dfdd8a94e2c4421ac5b537..a7e34ed5d4011725706f864230c348cf27eae4f0 100644 --- a/src/main/java/com/luca/pilot/util/CrfUtil.java +++ b/src/main/java/com/luca/pilot/util/CrfUtil.java @@ -1,6 +1,7 @@ package com.luca.pilot.util; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.map.MapUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; @@ -12,10 +13,10 @@ import java.util.stream.Collectors; public class CrfUtil { - public static String parseCrfProblemAndAnswer(String crfProblemJson, String crfAswerJson) { + public static Map<String, Object> parseCrfProblemAndAnswer(String crfProblemJson, String crfAswerJson) { if (Objects.isNull(crfProblemJson) || "".equals(crfProblemJson) || Objects.isNull(crfAswerJson) || "".equals(crfAswerJson)) { - return ""; + return new HashMap<>(); } List<CrfProblemBo> crfProblemBos = crfProblemJsonAnalysisNew(crfProblemJson); @@ -25,16 +26,17 @@ public class CrfUtil { List<CrfJsonValueBo> crfJsonValueBos = crfJsonAnalysis(crfAswerJson); - List<String> crfAswers = new ArrayList<>(); +// List<String> crfAswers = new ArrayList<>(); + Map<String,Object> crfAswers = new HashMap<>(); crfJsonValueBos.stream().filter(x -> dataIds.contains(x.getKey())).forEach(item -> { if (Objects.nonNull(item.getName()) && Objects.nonNull(item.getText())) { - crfAswers.add(item.getName() + ":" + item.getText()); + crfAswers.put(item.getName() , item.getText()); } }); - if (CollectionUtil.isEmpty(crfAswers)) { + if (MapUtil.isEmpty(crfAswers)) { return null; } - return JSONUtil.toJsonStr(crfAswers); + return crfAswers; } /**