From 43ab29aed1270edbc2a9172714184006147575dd Mon Sep 17 00:00:00 2001 From: ccsens_zhengzhichuan Date: Sun, 1 Mar 2026 11:45:49 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=8D=95=E5=AF=BC=E5=87=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/system/domain/dto/EmsDto.java | 5 +- .../com/ccsens/system/domain/vo/AmsVo.java | 3 + .../com/ccsens/system/domain/vo/RmsVo.java | 2 + .../com/ccsens/admin/persist/dao/RmsDao.java | 3 + .../admin/service/impl/RmsServiceImpl.java | 59 ++----- .../src/main/resources/mapper/dao/RmsDao.xml | 49 ++++++ .../client/controller/AmsController.java | 2 +- .../com/ccsens/client/persist/dao/RmsDao.java | 3 + .../client/service/impl/AmsServiceImpl.java | 30 ++-- .../client/service/impl/IEmsServiceImpl.java | 2 +- .../client/service/impl/RmsServiceImpl.java | 151 ++++++++++++------ .../src/main/resources/mapper/dao/AmsDao.xml | 1 + .../src/main/resources/mapper/dao/RmsDao.xml | 57 +++++++ 13 files changed, 250 insertions(+), 117 deletions(-) diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/dto/EmsDto.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/dto/EmsDto.java index c75160a..da465cd 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/dto/EmsDto.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/dto/EmsDto.java @@ -101,8 +101,7 @@ public class EmsDto { public static class BindScale { @ApiModelProperty("测评id") private Long evaluationId; - @ApiModelProperty("套餐ID") - private Long comboId; + @ApiModelProperty("问题id") private List scaleList; } @@ -112,6 +111,8 @@ public class EmsDto { public static class EvaluationScale{ @ApiModelProperty("量表code") private String scaleCode; + @ApiModelProperty("套餐ID") + private Long comboId; @ApiModelProperty("排序") private Integer sort; } diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/AmsVo.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/AmsVo.java index fb725e0..337af06 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/AmsVo.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/AmsVo.java @@ -678,6 +678,9 @@ public class AmsVo { private String scaleName; @ApiModelProperty("分数") private BigDecimal score; + + @ApiModelProperty("量表总分") + private BigDecimal totalScore; @ApiModelProperty("总题数") private Integer totalNum; @ApiModelProperty("已完成题数") diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/RmsVo.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/RmsVo.java index 3859f2f..1b9223a 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/RmsVo.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/RmsVo.java @@ -438,6 +438,8 @@ public class RmsVo { private Integer sort; @ApiModelProperty("认知域code") private String parentCode; + @ApiModelProperty("认知域父级id") + private Long parentId; @ApiModelProperty("报告单检查类型名称") private String name; @ApiModelProperty("量表类型名称") diff --git a/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/persist/dao/RmsDao.java b/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/persist/dao/RmsDao.java index 12ca5c8..70a9392 100644 --- a/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/persist/dao/RmsDao.java +++ b/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/persist/dao/RmsDao.java @@ -135,4 +135,7 @@ public interface RmsDao { @Param("code") String scaleCode); List queryReport(@Param("dto") RmsDto.ReportQuery dto); + + List queryEmsScaleScore(@Param("evaId") Long evaId, + @Param("scaleCodeList") List scaleCodeList); } diff --git a/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/RmsServiceImpl.java b/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/RmsServiceImpl.java index b4db5f5..1ab4311 100644 --- a/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/RmsServiceImpl.java +++ b/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/RmsServiceImpl.java @@ -123,7 +123,8 @@ public class RmsServiceImpl implements IRmsService { reportExample.createCriteria().andEvaluationIdEqualTo(dto.getEvaluationId()).andDelFlagEqualTo((byte) 0); List rmsReports = rmsReportMapper.selectByExample(reportExample); RmsReport report; - List scores; + //查询报告单关联的量表 + List scores = rmsDao.queryEmsScaleScore(dto.getEvaluationId(), CollectionUtil.newArrayList()); Map reportScaleScoreMap = new HashMap<>(); if (CollUtil.isEmpty(rmsReports)) { //生成报告单 @@ -151,9 +152,9 @@ public class RmsServiceImpl implements IRmsService { rmsReportMapper.insertSelective(report); //查询报告单分数 - List reportScore = rmsDao.queryReportScore1(dto.getEvaluationId(), null, dto.getSex()); - //重新封装报告单信息 - scores = getReportScores(reportScore, dto.getEvaluationId()); +// List reportScore = rmsDao.queryReportScore1(dto.getEvaluationId(), null, dto.getSex()); +// //重新封装报告单信息 +// scores = getReportScores(reportScore, dto.getEvaluationId()); if (CollUtil.isNotEmpty(scores)) { scores.forEach(score -> { @@ -165,7 +166,6 @@ public class RmsServiceImpl implements IRmsService { reportResult.setReportId(report.getId()); }); } - //添加体质辨识养生建议 List reportYsjyList = score.getReportYsjyList(); if (CollUtil.isNotEmpty(reportYsjyList)) { @@ -173,12 +173,6 @@ public class RmsServiceImpl implements IRmsService { reportResult.setReportId(report.getId()); }); } -// 获取初步印象 - ClientEvaVo.ReportView reportView = reportView(dto.getEvaluationId(), score.getCode()); - if (reportView != null) { - score.setImpression(reportView.getResult()); - score.setScore(reportView.getTotalScore()); - } } //添加量表分数统计 RmsReportScaleScore reportScaleScore = new RmsReportScaleScore(); @@ -203,44 +197,6 @@ public class RmsServiceImpl implements IRmsService { } } } - //每次查询报告单 都重新生成分数 - //查询报告单分数 - List reportScore = rmsDao.queryReportScore3(dto.getEvaluationId(), null, dto.getSex()); - //重新封装报告单信息 - scores = getReportScores(reportScore, dto.getEvaluationId()); - - if (CollUtil.isNotEmpty(scores)) { - scores = scores.stream().sorted(Comparator.comparing(RmsVo.ReportScore::getEcrSort)).collect(Collectors.toList()); - scores.forEach(score -> { - //查找初步印象 - RmsReportScaleScoreExample scoreExample = new RmsReportScaleScoreExample(); - scoreExample.createCriteria().andReportIdEqualTo(report.getId()).andScaleCodeEqualTo(score.getCode()).andDelFlagEqualTo((byte) 0); - List rmsReportScaleScores = rmsReportScaleScoreMapper.selectByExample(scoreExample); - if (CollUtil.isNotEmpty(rmsReportScaleScores)) { - score.setImpression(rmsReportScaleScores.get(0).getImpression()); - if ("TZBS_LN".equals(score.getCode()) || "TZBS_BZ".equals(score.getCode())) { - score.setScore(rmsReportScaleScores.get(0).getScore()); - } - reportScaleScoreMap.put(score.getCode(), rmsReportScaleScores.get(0)); - } - - //查询量表试题 - QmsQuestionExample qmsQuestionExample = new QmsQuestionExample(); - qmsQuestionExample.createCriteria().andScaleCodeEqualTo(score.getCode()).andDelFlagEqualTo((byte) 0); - List qmsQuestions = qmsQuestionMapper.selectByExample(qmsQuestionExample); - if (CollUtil.isNotEmpty(qmsQuestions)) { - //查询量表试题时长 - EmsEvaluationQuestionDurationExample questionDurationExample = new EmsEvaluationQuestionDurationExample(); - questionDurationExample.createCriteria().andEvaluationIdEqualTo(dto.getEvaluationId()).andDelFlagEqualTo((byte) 0) - .andQuestionIdIn(qmsQuestions.stream().map(QmsQuestion::getId).collect(Collectors.toList())); - List emsEvaluationQuestionDurations = emsEvaluationQuestionDurationMapper.selectByExample(questionDurationExample); - if (CollUtil.isNotEmpty(emsEvaluationQuestionDurations)) { - score.setQuestionDuration(emsEvaluationQuestionDurations.stream().mapToLong(EmsEvaluationQuestionDuration::getDuration).sum()); - } - } - }); - } - RmsVo.ReportDetail detail = new RmsVo.ReportDetail(); //查询报告单信息和病人信息 RmsVo.ReportPatient reportPatient = rmsDao.queryReportResult(report.getId()); @@ -648,6 +604,11 @@ public class RmsServiceImpl implements IRmsService { if ("TZBS_LN".equals(score.getCode()) || "TZBS_BZ".equals(score.getCode())) { score.setSubReport(new ArrayList<>()); zytzbs(evaluationId, score); + ClientEvaVo.ReportView reportView = reportView(evaluationId, score.getCode()); + if (reportView != null) { + score.setImpression(reportView.getResult()); + score.setScore(reportView.getTotalScore()); + } } }); return scores; diff --git a/ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/RmsDao.xml b/ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/RmsDao.xml index 58b6c26..bb7c9ca 100644 --- a/ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/RmsDao.xml +++ b/ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/RmsDao.xml @@ -1472,4 +1472,53 @@ d.dept_name as hospitalName group by r.id + + + + + + \ No newline at end of file diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/AmsController.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/AmsController.java index d7e79c3..8d7fbf4 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/AmsController.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/AmsController.java @@ -146,7 +146,7 @@ public class AmsController extends BaseController { //查询测评下某个量表的完成情况 @ApiOperation(value = "测评结论", notes = "测评结论 (计算分数)") @PostMapping("/queryConclusion") - public JsonResponse< List> queryConclusion(@RequestBody @ApiParam @Valid AmsDto.ScaleAchievement queryDto) { + public JsonResponse> queryConclusion(@RequestBody @ApiParam @Valid AmsDto.ScaleAchievement queryDto) { List scaleAchievement = amsService.queryConclusion(queryDto); return JsonResponse.ok(scaleAchievement); } diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/persist/dao/RmsDao.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/persist/dao/RmsDao.java index 4db73a9..3b9e2d6 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/persist/dao/RmsDao.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/persist/dao/RmsDao.java @@ -133,4 +133,7 @@ public interface RmsDao { List queryCodeByScCode(@Param("list")List list); + List queryEmsScaleScore(@Param("evaluationId") Long evaluationId, + @Param("scaleCodeList") List scaleCodeList); + } diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/AmsServiceImpl.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/AmsServiceImpl.java index 9efe21c..2bb6f2f 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/AmsServiceImpl.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/AmsServiceImpl.java @@ -1209,18 +1209,20 @@ public class AmsServiceImpl implements IAmsService { List reportScores = rmsService.getReportScores(reportScore, queryDto.getEvaluationId()); if (CollUtil.isNotEmpty(reportScores)) { reportScores.forEach(score -> { + //保存测评量表分数 + EmsEvaluationScaleCognitiveRelevance evaluationScaleCognitiveRelevance = new EmsEvaluationScaleCognitiveRelevance(); + evaluationScaleCognitiveRelevance.setEvaluationId(queryDto.getEvaluationId()); + evaluationScaleCognitiveRelevance.setDelFlag(GenConstants.Ht.NO_DEL); + evaluationScaleCognitiveRelevance.setScaleCode(scaleAchievement.getScaleCode()); + evaluationScaleCognitiveRelevance.setScore(score.getScore()); + evaluationScaleCognitiveRelevance.setParentId(0L); + evaluationScaleCognitiveRelevance.setTotalScore(scaleAchievement.getTotalScore()); + evaluationScaleCognitiveRelevance.setCreateTime(new Date()); + evaluationScaleCognitiveRelevance.setId(IdUtil.getSnowflake().nextId()); + evaluationScaleCognitiveRelevance.setCreateBy(SecurityUtils.getUsername()); + emsEvaluationScaleCognitiveRelevanceMapper.insert(evaluationScaleCognitiveRelevance); //保存认知域得分 if (CollectionUtil.isNotEmpty(score.getSubReport())) { - //保存测评量表分数 - EmsEvaluationScaleCognitiveRelevance evaluationScaleCognitiveRelevance = new EmsEvaluationScaleCognitiveRelevance(); - evaluationScaleCognitiveRelevance.setEvaluationId(queryDto.getEvaluationId()); - evaluationScaleCognitiveRelevance.setScaleCode(scaleAchievement.getScaleCode()); - evaluationScaleCognitiveRelevance.setScore(score.getScore()); - evaluationScaleCognitiveRelevance.setParentId(0L); - evaluationScaleCognitiveRelevance.setCreateTime(new Date()); - evaluationScaleCognitiveRelevance.setId(IdUtil.getSnowflake().nextId()); - emsEvaluationScaleCognitiveRelevanceMapper.insert(evaluationScaleCognitiveRelevance); - //保存测评量表认知域分数 if (CollectionUtil.isNotEmpty(score.getSubReport())) { score.getSubReport().forEach(subReport -> { @@ -1231,7 +1233,9 @@ public class AmsServiceImpl implements IAmsService { emsEvaluationScaleCognitiveRelevance.setScore(subReport.getScore()); emsEvaluationScaleCognitiveRelevance.setParentId(evaluationScaleCognitiveRelevance.getId()); emsEvaluationScaleCognitiveRelevance.setCreateTime(new Date()); + emsEvaluationScaleCognitiveRelevance.setDelFlag(GenConstants.Ht.NO_DEL); emsEvaluationScaleCognitiveRelevance.setId(IdUtil.getSnowflake().nextId()); + emsEvaluationScaleCognitiveRelevance.setCreateBy(SecurityUtils.getUsername()); emsEvaluationScaleCognitiveRelevanceMapper.insert(emsEvaluationScaleCognitiveRelevance); if (CollectionUtil.isNotEmpty(subReport.getSubReport())) { subReport.getSubReport().forEach(subSubReport -> { @@ -1243,6 +1247,8 @@ public class AmsServiceImpl implements IAmsService { emsEvaluationScaleCognitiveRelevance1.setCreateTime(new Date()); emsEvaluationScaleCognitiveRelevance1.setParentId(emsEvaluationScaleCognitiveRelevance.getId()); emsEvaluationScaleCognitiveRelevance1.setId(IdUtil.getSnowflake().nextId()); + emsEvaluationScaleCognitiveRelevance1.setDelFlag(GenConstants.Ht.NO_DEL); + emsEvaluationScaleCognitiveRelevance1.setCreateBy(SecurityUtils.getUsername()); emsEvaluationScaleCognitiveRelevanceMapper.insert(emsEvaluationScaleCognitiveRelevance1); }); @@ -1252,10 +1258,6 @@ public class AmsServiceImpl implements IAmsService { } }); } - - //查找量表下每道题的完成情况 - List scaleQuestionAchievementList = amsDao.getScaleQuestionAchievement(queryDto.getEvaluationId(), scaleAchievement.getScaleCode(), queryDto.getSex()); - scaleAchievement.setQuestionDetail(scaleQuestionAchievementList); //NPI特殊处理总分 if ("NPI".equals(scaleAchievement.getScaleCode())) { scaleAchievement.setScore(amsDao.getTotalScoreByNPI(queryDto.getEvaluationId())); diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/IEmsServiceImpl.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/IEmsServiceImpl.java index a7c1d5b..e765b14 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/IEmsServiceImpl.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/IEmsServiceImpl.java @@ -323,7 +323,7 @@ public class IEmsServiceImpl implements IEmsService { evaluationScaleRelevance.setId(IDGenerator.nextSnowflakeId()); evaluationScaleRelevance.setEvaluationId(dto.getEvaluationId()); evaluationScaleRelevance.setScaleCode(evaluationScale.getScaleCode()); - evaluationScaleRelevance.setComboId(dto.getComboId()); + evaluationScaleRelevance.setComboId(evaluationScale.getComboId()); evaluationScaleRelevance.setSort(sort1++); evaluationScaleRelevance.setCreateBy(loginUser.getUsername()); evaluationScaleRelevanceMapper.insertSelective(evaluationScaleRelevance); diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/RmsServiceImpl.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/RmsServiceImpl.java index 0889b76..7e89ef4 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/RmsServiceImpl.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/RmsServiceImpl.java @@ -114,6 +114,100 @@ public class RmsServiceImpl implements IRmsService { return 0; } + /** + * 递归组装ReportScore的父子级树形结构 + * @param allReportScores 所有未组装的ReportScore列表 + * @param rootParentId 根节点的parentId(比如0或null,根据业务定义) + * @return 组装好的树形结构根节点列表 + */ + public static List buildReportScoreTree(List allReportScores, Long rootParentId) { + // 1. 预处理:将所有节点放入Map,key=scaleId,方便快速查找 + Map scoreMap = new HashMap<>(); + for (RmsVo.ReportScore score : allReportScores) { + scoreMap.put(score.getScaleId(), score); + // 初始化子列表(避免空指针) + if (score.getSubReport() == null) { + score.setSubReport(new ArrayList<>()); + } + } + + // 2. 筛选根节点(parentId等于rootParentId的节点) + List rootNodes = new ArrayList<>(); + for (RmsVo.ReportScore score : allReportScores) { + Long parentId = score.getParentId(); + // 判断是否为根节点(适配parentId=null或0的情况) + boolean isRoot = (rootParentId == null && parentId == null) + || (rootParentId != null && rootParentId.equals(parentId)); + if (isRoot) { + rootNodes.add(score); + // 递归组装子节点 + buildChildren(score, scoreMap); + } + } + + // 3. 按sort/ecrSort排序(可选,根据业务需求) + sortReportScoreTree(rootNodes); + + return rootNodes; + } + + /** + * 递归为单个节点组装子节点 + * @param parentNode 父节点 + * @param scoreMap 所有节点的Map(key=scaleId) + */ + private static void buildChildren(RmsVo.ReportScore parentNode, Map scoreMap) { + // 遍历所有节点,找到当前父节点的子节点(子节点的parentId=父节点的scaleId转Long) + for (RmsVo.ReportScore childNode : scoreMap.values()) { + Long childParentId = childNode.getParentId(); + String parentScaleId = parentNode.getScaleId(); + + // 避免空指针,先判断parentScaleId是否能转Long(根据业务,scaleId应为数字字符串) + if (childParentId == null || parentScaleId == null) { + continue; + } + + // 匹配子节点:子节点的parentId = 父节点的scaleId(转Long) + try { + Long parentIdLong = Long.parseLong(parentScaleId); + if (childParentId.equals(parentIdLong)) { + // 加入子列表 + parentNode.getSubReport().add(childNode); + // 递归组装子节点的子节点 + buildChildren(childNode, scoreMap); + } + } catch (NumberFormatException e) { + // 若scaleId非数字,根据业务处理(此处打印日志,跳过) + System.err.println("scaleId转换Long失败:" + parentScaleId + ",原因:" + e.getMessage()); + continue; + } + } + + // 子节点排序(可选) + if (CollectionUtil.isNotEmpty(parentNode.getSubReport())) { + sortReportScoreTree(parentNode.getSubReport()); + } + } + + /** + * 对ReportScore列表按排序字段排序(优先sort,其次ecrSort) + * @param reportScores 待排序的列表 + */ + private static void sortReportScoreTree(List reportScores) { + reportScores.sort((o1, o2) -> { + // 先按sort排序 + if (o1.getSort() != null && o2.getSort() != null) { + return o1.getSort().compareTo(o2.getSort()); + } + // sort为空则按ecrSort排序 + if (o1.getEcrSort() != null && o2.getEcrSort() != null) { + return o1.getEcrSort().compareTo(o2.getEcrSort()); + } + // 都为空则按scaleId排序 + return o1.getScaleId().compareTo(o2.getScaleId()); + }); + } + @Override public RmsVo.ReportDetail queryReportDetail(RmsDto.QueryDetail dto) { //根据测评id查找报告单 @@ -121,7 +215,12 @@ public class RmsServiceImpl implements IRmsService { reportExample.createCriteria().andEvaluationIdEqualTo(dto.getEvaluationId()).andDelFlagEqualTo((byte) 0); List rmsReports = rmsReportMapper.selectByExample(reportExample); RmsReport report; - List scores = new ArrayList<>(); + //查询测评量表 + List scores = rmsDao.queryEmsScaleScore(dto.getEvaluationId(), CollectionUtil.newArrayList()); + if (CollUtil.isNotEmpty(scores)) { + //组装成父子级关系 + scores = buildReportScoreTree(scores, 0L); + } Map reportScaleScoreMap = new HashMap<>(); if (CollUtil.isEmpty(rmsReports)) { //生成报告单 @@ -136,7 +235,6 @@ public class RmsServiceImpl implements IRmsService { //查找病人信息 PmsPatient pmsPatient = pmsPatientMapper.selectByPrimaryKey(emsEvaluation.getPatientId()); if (ObjectUtil.isNotNull(pmsPatient)) { -// report.setPatientAge(IdcardUtil.getAgeByIdCard(pmsPatient.getIdcard())); report.setPatientAge(getAge(pmsPatient)); } //修改测评的状态 @@ -148,11 +246,6 @@ public class RmsServiceImpl implements IRmsService { } rmsReportMapper.insertSelective(report); - //查询报告单分数 - List reportScore = rmsDao.queryReportScore1(dto.getEvaluationId(), null, dto.getSex()); - //重新封装报告单信息 - scores = getReportScores(reportScore, dto.getEvaluationId()); - if (CollUtil.isNotEmpty(scores)) { scores.forEach(score -> { if ("TZBS_LN".equals(score.getCode()) || "TZBS_BZ".equals(score.getCode())) { @@ -197,43 +290,6 @@ public class RmsServiceImpl implements IRmsService { } } } - //每次查询报告单 都重新生成分数 - //查询报告单分数 -// List reportScore = rmsDao.queryReportScore3(dto.getEvaluationId(), null, dto.getSex()); -// //重新封装报告单信息 -// scores = getReportScores(reportScore, dto.getEvaluationId()); - -// if (CollUtil.isNotEmpty(scores)) { -// scores = scores.stream().sorted(Comparator.comparing(RmsVo.ReportScore::getEcrSort)).collect(Collectors.toList()); -// scores.forEach(score -> { -//// //查找初步印象 -//// RmsReportScaleScoreExample scoreExample = new RmsReportScaleScoreExample(); -//// scoreExample.createCriteria().andReportIdEqualTo(report.getId()).andScaleCodeEqualTo(score.getCode()).andDelFlagEqualTo((byte) 0); -//// List rmsReportScaleScores = rmsReportScaleScoreMapper.selectByExample(scoreExample); -//// if (CollUtil.isNotEmpty(rmsReportScaleScores)) { -//// score.setImpression(rmsReportScaleScores.get(0).getImpression()); -////// if ("TZBS_LN".equals(score.getCode()) || "TZBS_BZ".equals(score.getCode())) { -////// score.setScore(rmsReportScaleScores.get(0).getScore()); -////// } -//// reportScaleScoreMap.put(score.getCode(), rmsReportScaleScores.get(0)); -//// } -// -//// //查询量表试题 -//// QmsQuestionExample qmsQuestionExample = new QmsQuestionExample(); -//// qmsQuestionExample.createCriteria().andScaleCodeEqualTo(score.getCode()).andDelFlagEqualTo((byte) 0); -//// List qmsQuestions = qmsQuestionMapper.selectByExample(qmsQuestionExample); -//// if (CollUtil.isNotEmpty(qmsQuestions)) { -//// //查询量表试题时长 -//// EmsEvaluationQuestionDurationExample questionDurationExample = new EmsEvaluationQuestionDurationExample(); -//// questionDurationExample.createCriteria().andEvaluationIdEqualTo(dto.getEvaluationId()).andDelFlagEqualTo((byte) 0) -//// .andQuestionIdIn(qmsQuestions.stream().map(QmsQuestion::getId).collect(Collectors.toList())); -//// List emsEvaluationQuestionDurations = emsEvaluationQuestionDurationMapper.selectByExample(questionDurationExample); -//// if (CollUtil.isNotEmpty(emsEvaluationQuestionDurations)) { -//// score.setQuestionDuration(emsEvaluationQuestionDurations.stream().mapToLong(EmsEvaluationQuestionDuration::getDuration).sum()); -//// } -//// } -// }); -// } RmsVo.ReportDetail detail = new RmsVo.ReportDetail(); //查询报告单信息和病人信息 @@ -322,16 +378,11 @@ public class RmsServiceImpl implements IRmsService { if (CollectionUtil.isNotEmpty(set)) { MessageDto.QuestionInform questionInform = new MessageDto.QuestionInform(); questionInform.setQuestionId(0L); - boolean remove = set.remove(questionInform); + set.remove(questionInform); } -// if (set.size() > 0) { - //list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MessageDto.QuestionInform::getQuestionId))), ArrayList::new)); - // redisUtil.set("message_" + score.getPatientReportId(), set, 7200); redisUtil.deleteObject("message_" + dto.getEvaluationId()); -// } } -// scores = scores.stream().sorted(Comparator.comparing(RmsVo.ReportScore::getSort)).collect(Collectors.toList()); detail.setPatient(reportPatient); detail.setScores(scores); return detail; diff --git a/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/AmsDao.xml b/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/AmsDao.xml index 8d5d108..6581c6d 100644 --- a/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/AmsDao.xml +++ b/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/AmsDao.xml @@ -27,6 +27,7 @@ SELECT qs.`code` AS scaleCode, qs.`name` AS scaleName, + qs.total_score AS totalScore, sum(q.score) as score, count( DISTINCT q.questionId ) AS totalNum, count( DISTINCT q.answerQuestionId ) AS completedNum diff --git a/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/RmsDao.xml b/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/RmsDao.xml index 236786f..970e057 100644 --- a/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/RmsDao.xml +++ b/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/RmsDao.xml @@ -1743,4 +1743,61 @@ group by ee.id group by code order by sort + + \ No newline at end of file From 68133f92294c4bf8067cc07ca1f8c49cb49c94f8 Mon Sep 17 00:00:00 2001 From: ccsens_zhengzhichuan Date: Sun, 1 Mar 2026 16:54:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=84?= =?UTF-8?q?=E5=88=86=E6=95=B0=20=E5=85=88=E5=88=A0=E9=99=A4=E5=90=8E?= =?UTF-8?q?=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/client/controller/EmsController.java | 6 ++++++ .../java/com/ccsens/client/service/IEmsService.java | 3 +++ .../ccsens/client/service/impl/AmsServiceImpl.java | 7 +++++++ .../ccsens/client/service/impl/IEmsServiceImpl.java | 11 +++++++++++ 4 files changed, 27 insertions(+) diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/EmsController.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/EmsController.java index 19967c2..00a766d 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/EmsController.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/EmsController.java @@ -129,4 +129,10 @@ public class EmsController extends BaseController { public JsonResponse delete(@RequestBody @ApiParam @Valid EmsDto.Delete dto){ return JsonResponse.ok(emsService.delete(dto.getIdList())); } + + @ApiOperation(value = "撤回测评") + @PostMapping("/revoke") + public JsonResponse revoke(@RequestBody @ApiParam @Valid EmsDto.Complate dto){ + return JsonResponse.ok(emsService.revoke(dto.getEvaluationId())); + } } diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/IEmsService.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/IEmsService.java index 2e6f4cf..50fc4b0 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/IEmsService.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/IEmsService.java @@ -38,4 +38,7 @@ public interface IEmsService { Integer complate(Long evaluationId, Byte complateStatus); Integer delete(List idList); + + Integer revoke(Long evaluationId); + } diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/AmsServiceImpl.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/AmsServiceImpl.java index 2bb6f2f..c74847c 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/AmsServiceImpl.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/AmsServiceImpl.java @@ -1202,6 +1202,13 @@ public class AmsServiceImpl implements IAmsService { List scaleAchievementList = amsDao.getScaleAchievement(queryDto.getEvaluationId(), queryDto.getScaleCode(), queryDto.getSex()); if (CollUtil.isNotEmpty(scaleAchievementList)) { + //删除已有分数 + EmsEvaluationScaleCognitiveRelevanceExample emsEvaluationScaleCognitiveRelevanceExample = new EmsEvaluationScaleCognitiveRelevanceExample(); + emsEvaluationScaleCognitiveRelevanceExample.createCriteria().andEvaluationIdEqualTo(queryDto.getEvaluationId()); + EmsEvaluationScaleCognitiveRelevance emsEvaluationScaleCognitiveRelevance2 = new EmsEvaluationScaleCognitiveRelevance(); + emsEvaluationScaleCognitiveRelevance2.setDelFlag(GenConstants.Ht.IS_DEL); + emsEvaluationScaleCognitiveRelevanceMapper.updateByExampleSelective(emsEvaluationScaleCognitiveRelevance2, emsEvaluationScaleCognitiveRelevanceExample); + scaleAchievementList.forEach(scaleAchievement -> { //查询测评量表分数 List reportScore = rmsDao.queryReportScore(queryDto.getEvaluationId(), scaleAchievement.getScaleCode()); diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/IEmsServiceImpl.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/IEmsServiceImpl.java index e765b14..4b251ae 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/IEmsServiceImpl.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/IEmsServiceImpl.java @@ -232,6 +232,17 @@ public class IEmsServiceImpl implements IEmsService { return evaluationMapper.updateByExampleSelective(emsEvaluation, emsEvaluationExample); } + @Override + public Integer revoke(Long evaluationId) { + EmsEvaluation emsEvaluation = evaluationMapper.selectByPrimaryKey(evaluationId); + if (emsEvaluation == null) { + throw new BaseException(ErrorConstant.PATIENT_REPORT_NOT_FOUND); + } + emsEvaluation.setCompleteStatus((byte) 0); + emsEvaluation.setUpdateTime(new Date()); + return evaluationMapper.updateByPrimaryKeySelective(emsEvaluation); + } + @Override public Integer bindPatient(EmsDto.BindPatient dto) { LoginUser loginUser = getLoginUser();