Jelajahi Sumber

量表计算公式

yuchengwei 2 bulan lalu
induk
melakukan
50f8600a54
37 mengubah file dengan 1491 tambahan dan 7 penghapusan
  1. 79 0
      src/main/java/com/diagbot/dto/KlCalculatorFormulaDTO.java
  2. 5 0
      src/main/java/com/diagbot/dto/KlConceptStaticDTO.java
  3. 2 0
      src/main/java/com/diagbot/dto/StaticKnowledgeDTO.java
  4. 144 0
      src/main/java/com/diagbot/entity/KlCalculatorFormula.java
  5. 139 0
      src/main/java/com/diagbot/entity/KlCalculatorFormulaGroupDetail.java
  6. 85 0
      src/main/java/com/diagbot/entity/KlCalculatorFormulaGroupScore.java
  7. 74 0
      src/main/java/com/diagbot/entity/KlCalculatorFormulaParam.java
  8. 242 0
      src/main/java/com/diagbot/facade/KlCalculatorFormulaFacade.java
  9. 13 0
      src/main/java/com/diagbot/facade/KlCalculatorFormulaGroupDetailFacade.java
  10. 13 0
      src/main/java/com/diagbot/facade/KlCalculatorFormulaGroupScoreFacade.java
  11. 13 0
      src/main/java/com/diagbot/facade/KlCalculatorFormulaParamFacade.java
  12. 30 0
      src/main/java/com/diagbot/facade/KlConceptStaticFacade.java
  13. 10 1
      src/main/java/com/diagbot/facade/OtherTipFacade.java
  14. 16 0
      src/main/java/com/diagbot/mapper/KlCalculatorFormulaGroupDetailMapper.java
  15. 16 0
      src/main/java/com/diagbot/mapper/KlCalculatorFormulaGroupScoreMapper.java
  16. 16 0
      src/main/java/com/diagbot/mapper/KlCalculatorFormulaMapper.java
  17. 16 0
      src/main/java/com/diagbot/mapper/KlCalculatorFormulaParamMapper.java
  18. 170 1
      src/main/java/com/diagbot/process/OtherTipProcess.java
  19. 16 0
      src/main/java/com/diagbot/service/KlCalculatorFormulaGroupDetailService.java
  20. 16 0
      src/main/java/com/diagbot/service/KlCalculatorFormulaGroupScoreService.java
  21. 16 0
      src/main/java/com/diagbot/service/KlCalculatorFormulaParamService.java
  22. 16 0
      src/main/java/com/diagbot/service/KlCalculatorFormulaService.java
  23. 20 0
      src/main/java/com/diagbot/service/impl/KlCalculatorFormulaGroupDetailServiceImpl.java
  24. 20 0
      src/main/java/com/diagbot/service/impl/KlCalculatorFormulaGroupScoreServiceImpl.java
  25. 20 0
      src/main/java/com/diagbot/service/impl/KlCalculatorFormulaParamServiceImpl.java
  26. 20 0
      src/main/java/com/diagbot/service/impl/KlCalculatorFormulaServiceImpl.java
  27. 86 0
      src/main/java/com/diagbot/vo/KlCalculatorFormulaVO.java
  28. 7 0
      src/main/java/com/diagbot/vo/KlConceptStaticVO.java
  29. 20 0
      src/main/java/com/diagbot/web/KlCalculatorFormulaController.java
  30. 20 0
      src/main/java/com/diagbot/web/KlCalculatorFormulaGroupController.java
  31. 20 0
      src/main/java/com/diagbot/web/KlCalculatorFormulaGroupDetailController.java
  32. 20 0
      src/main/java/com/diagbot/web/KlCalculatorFormulaParamController.java
  33. 29 0
      src/main/resources/mapper/KlCalculatorFormulaGroupDetailMapper.xml
  34. 21 0
      src/main/resources/mapper/KlCalculatorFormulaGroupScoreMapper.xml
  35. 18 0
      src/main/resources/mapper/KlCalculatorFormulaMapper.xml
  36. 18 0
      src/main/resources/mapper/KlCalculatorFormulaParamMapper.xml
  37. 5 5
      src/test/java/com/diagbot/CodeGeneration.java

+ 79 - 0
src/main/java/com/diagbot/dto/KlCalculatorFormulaDTO.java

@@ -0,0 +1,79 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class KlCalculatorFormulaDTO {
+    /**
+     * 术语概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 备注
+     */
+    private String notes;
+
+    private List<KlCalculatorFormulaDTO.ContentTableData> contentTableData;
+
+    private List<KlCalculatorFormulaDTO.ScoreTableData> scoreTableData;
+
+
+
+
+    @Data
+    public static class ContentTableData{
+        private String name;
+        private String unit;
+    }
+
+    @Data
+    public static class ScoreTableData{
+        private Long groupId;
+
+        private Long conditionId;
+
+        private String conditionName;
+
+        private String conditionType;
+
+        private KlCalculatorFormulaDTO.ConditionContent conditionContent;
+
+        private String formula;
+
+        private List<KlCalculatorFormulaDTO.ScoreRange> scoreRange;
+    }
+
+    @Data
+    public static class ConditionContent{
+        private String textType;
+        private KlCalculatorFormulaDTO.ValueType valueType;
+
+    }
+
+    @Data
+    public static class ValueType{
+        private String maxValueName;
+        private BigDecimal maxValue;
+        private String maxValueUnit;
+
+        private String minValueName;
+        private BigDecimal minValue;
+        private String minValueUnit;
+    }
+
+    @Data
+    public static class ScoreRange{
+        private BigDecimal greaterEqual;
+        private BigDecimal lessEqual;
+        private String result;
+    }
+}

+ 5 - 0
src/main/java/com/diagbot/dto/KlConceptStaticDTO.java

@@ -64,4 +64,9 @@ public class KlConceptStaticDTO {
      * 量表结构
      */
     private KlScaleByIdDTO scale;
+
+    /**
+     * 量表计算公式
+     */
+    private KlCalculatorFormulaDTO calculatorFormula;
 }

+ 2 - 0
src/main/java/com/diagbot/dto/StaticKnowledgeDTO.java

@@ -47,4 +47,6 @@ public class StaticKnowledgeDTO {
      * 量表结构
      */
     private ConceptScaleDTO scale;
+
+    private KlCalculatorFormulaDTO calculatorFormula;
 }

+ 144 - 0
src/main/java/com/diagbot/entity/KlCalculatorFormula.java

@@ -0,0 +1,144 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 量表计算公式
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+public class KlCalculatorFormula implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 术语概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 备注
+     */
+    private String notes;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getConceptId() {
+        return conceptId;
+    }
+
+    public void setConceptId(Long conceptId) {
+        this.conceptId = conceptId;
+    }
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+    public String getNotes() {
+        return notes;
+    }
+
+    public void setNotes(String notes) {
+        this.notes = notes;
+    }
+
+    @Override
+    public String toString() {
+        return "KlCalculatorFormula{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", conceptId=" + conceptId +
+            ", title=" + title +
+            ", notes=" + notes +
+        "}";
+    }
+}

+ 139 - 0
src/main/java/com/diagbot/entity/KlCalculatorFormulaGroupDetail.java

@@ -0,0 +1,139 @@
+package com.diagbot.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 量表计算公式组条件内容
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Data
+public class KlCalculatorFormulaGroupDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 术语概念id
+     */
+    private Long conceptId;
+    /**
+     * 公式id
+     */
+    private Long formulaId;
+
+    /**
+     * 公式组id
+     */
+    private Long groupId;
+
+    /**
+     * 公式
+     */
+    private String formula;
+
+    /**
+     * 条件id
+     */
+    private Long conditionId;
+
+    /**
+     * 条件名称
+     */
+    private String conditionName;
+
+    /**
+     * 条件类型
+     */
+    private String conditionType;
+
+    /**
+     * 文本类型内容
+     */
+    private String textType;
+
+    /**
+     * 最大值符号
+     */
+    private String maxValueName;
+
+    /**
+     * 最大值
+     */
+    private BigDecimal maxValue;
+
+    /**
+     * 最大值单位
+     */
+    private String maxValueUnit;
+
+    /**
+     * 最小值符号
+     */
+    private String minValueName;
+
+    /**
+     * 最小值
+     */
+    private BigDecimal minValue;
+
+    /**
+     * 最小值单位
+     */
+    private String minValueUnit;
+
+    /**
+     * 大于等于
+     */
+    private BigDecimal greaterEqual;
+
+    /**
+     * 小于等于
+     */
+    private BigDecimal lessEqual;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+}

+ 85 - 0
src/main/java/com/diagbot/entity/KlCalculatorFormulaGroupScore.java

@@ -0,0 +1,85 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 量表计算公式组
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Data
+public class KlCalculatorFormulaGroupScore implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 量表计算公式id
+     */
+    private Long formulaId;
+
+    /**
+     * 组id
+     */
+    private Long groupId;
+
+    /**
+     * 术语概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 大于等于
+     */
+    private BigDecimal greaterEqual;
+
+    /**
+     * 小于等于
+     */
+    private BigDecimal lessEqual;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+}

+ 74 - 0
src/main/java/com/diagbot/entity/KlCalculatorFormulaParam.java

@@ -0,0 +1,74 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 量表计算公式参数
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Data
+public class KlCalculatorFormulaParam implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 术语概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 量表计算公式id
+     */
+    private Long formulaId;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+}

+ 242 - 0
src/main/java/com/diagbot/facade/KlCalculatorFormulaFacade.java

@@ -0,0 +1,242 @@
+package com.diagbot.facade;
+
+import com.alibaba.druid.support.json.JSONUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.diagbot.dto.KlCalculatorFormulaDTO;
+import com.diagbot.entity.KlCalculatorFormula;
+import com.diagbot.entity.KlCalculatorFormulaGroupDetail;
+import com.diagbot.entity.KlCalculatorFormulaGroupScore;
+import com.diagbot.entity.KlCalculatorFormulaParam;
+import com.diagbot.service.impl.KlCalculatorFormulaServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.KlCalculatorFormulaVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 量表计算公式
+ */
+@Component
+@Slf4j
+public class KlCalculatorFormulaFacade extends KlCalculatorFormulaServiceImpl {
+
+    @Autowired
+    KlCalculatorFormulaParamFacade klCalculatorFormulaParamFacade;
+    @Autowired
+    KlCalculatorFormulaGroupDetailFacade klCalculatorFormulaGroupDetailFacade;
+    @Autowired
+    KlCalculatorFormulaGroupScoreFacade klCalculatorFormulaGroupScoreFacade;
+
+    public void saveCalculatorFormulaAll(KlCalculatorFormulaVO klCalculatorFormulaVO) {
+
+//        log.info("=====klCalculatorFormulaVO is :" + JSONUtils.toJSONString(klCalculatorFormulaVO));
+        //保存主表
+        LambdaQueryWrapper<KlCalculatorFormula> queryWrapper = Wrappers.<KlCalculatorFormula>lambdaQuery().eq(KlCalculatorFormula::getConceptId, klCalculatorFormulaVO.getConceptId());
+        this.remove(queryWrapper);
+        KlCalculatorFormula klCalculatorFormula = new KlCalculatorFormula();
+        BeanUtil.copyProperties(klCalculatorFormulaVO, klCalculatorFormula);
+
+        this.save(klCalculatorFormula);
+        //保存参数表
+        LambdaQueryWrapper<KlCalculatorFormulaParam> paramQueryWrapper = Wrappers.<KlCalculatorFormulaParam>lambdaQuery().eq(KlCalculatorFormulaParam::getConceptId, klCalculatorFormulaVO.getConceptId());
+        klCalculatorFormulaParamFacade.remove(paramQueryWrapper);
+        List<KlCalculatorFormulaVO.ContentTableData> contentTableData = klCalculatorFormulaVO.getContentTableData();
+        for (KlCalculatorFormulaVO.ContentTableData contentTableDatum : contentTableData) {
+            KlCalculatorFormulaParam klCalculatorFormulaParam = new KlCalculatorFormulaParam();
+            BeanUtil.copyProperties(contentTableDatum, klCalculatorFormulaParam);
+            klCalculatorFormulaParam.setFormulaId(klCalculatorFormula.getId());
+            klCalculatorFormulaParam.setConceptId(klCalculatorFormulaVO.getConceptId());
+            klCalculatorFormulaParam.setModifier(klCalculatorFormulaVO.getModifier());
+            klCalculatorFormulaParamFacade.save(klCalculatorFormulaParam);
+        }
+
+
+        //保存公式表
+        LambdaQueryWrapper<KlCalculatorFormulaGroupDetail> groupDetailQueryWrapper = Wrappers.<KlCalculatorFormulaGroupDetail>lambdaQuery().eq(KlCalculatorFormulaGroupDetail::getConceptId, klCalculatorFormulaVO.getConceptId());
+        klCalculatorFormulaGroupDetailFacade.remove(groupDetailQueryWrapper);
+        List<KlCalculatorFormulaVO.ScoreTableData> scoreTableData = klCalculatorFormulaVO.getScoreTableData();
+        Map<String,List<KlCalculatorFormulaVO.ScoreRange>> scoreRangeMap = new HashMap<>();
+        for (KlCalculatorFormulaVO.ScoreTableData scoreTableDatum : scoreTableData) {
+            KlCalculatorFormulaGroupDetail klCalculatorFormulaGroupDetail = new KlCalculatorFormulaGroupDetail();
+
+            klCalculatorFormulaGroupDetail.setModifier(klCalculatorFormulaVO.getModifier());
+            klCalculatorFormulaGroupDetail.setConceptId(klCalculatorFormulaVO.getConceptId());
+            klCalculatorFormulaGroupDetail.setFormulaId(klCalculatorFormula.getId());
+            klCalculatorFormulaGroupDetail.setFormula(scoreTableDatum.getFormula());
+
+            klCalculatorFormulaGroupDetail.setGroupId(scoreTableDatum.getGroupId());
+            klCalculatorFormulaGroupDetail.setConditionId(scoreTableDatum.getConditionId());
+            klCalculatorFormulaGroupDetail.setConditionName(scoreTableDatum.getConditionName());
+            klCalculatorFormulaGroupDetail.setConditionType(scoreTableDatum.getConditionType());
+            klCalculatorFormulaGroupDetail.setTextType(scoreTableDatum.getConditionContent().getTextType());
+            klCalculatorFormulaGroupDetail.setMaxValueName(scoreTableDatum.getConditionContent().getValueType().getMaxValueName());
+            klCalculatorFormulaGroupDetail.setMaxValue(scoreTableDatum.getConditionContent().getValueType().getMaxValue());
+            klCalculatorFormulaGroupDetail.setMaxValueUnit(scoreTableDatum.getConditionContent().getValueType().getMaxValueUnit());
+            klCalculatorFormulaGroupDetail.setMinValueName(scoreTableDatum.getConditionContent().getValueType().getMinValueName());
+            klCalculatorFormulaGroupDetail.setMinValue(scoreTableDatum.getConditionContent().getValueType().getMinValue());
+            klCalculatorFormulaGroupDetail.setMinValueUnit(scoreTableDatum.getConditionContent().getValueType().getMinValueUnit());
+
+            String key = klCalculatorFormulaVO.getConceptId() + "_" + klCalculatorFormula.getId() + "_" + scoreTableDatum.getGroupId();
+            scoreRangeMap.put(key,scoreTableDatum.getScoreRange());
+//            klCalculatorFormulaGroupDetail.setGreaterEqual(scoreTableDatum.getScoreRange().getGreaterEqual());
+//            klCalculatorFormulaGroupDetail.setLessEqual(scoreTableDatum.getScoreRange().getLessEqual());
+//            klCalculatorFormulaGroupDetail.setResult(scoreTableDatum.getResult());
+
+            klCalculatorFormulaGroupDetailFacade.save(klCalculatorFormulaGroupDetail);
+
+        }
+
+        //保存得分结果表
+        if (!scoreRangeMap.isEmpty()) {
+            LambdaQueryWrapper<KlCalculatorFormulaGroupScore> groupScoreQueryWrapper = Wrappers.<KlCalculatorFormulaGroupScore>lambdaQuery().eq(KlCalculatorFormulaGroupScore::getConceptId, klCalculatorFormulaVO.getConceptId());
+            klCalculatorFormulaGroupScoreFacade.remove(groupScoreQueryWrapper);
+            for (Map.Entry<String, List<KlCalculatorFormulaVO.ScoreRange>> entry : scoreRangeMap.entrySet()) {
+                String key = entry.getKey();
+                List<KlCalculatorFormulaVO.ScoreRange> scoreRanges = entry.getValue();
+                String[] keys = key.split("_");
+                Long conceptId = Long.valueOf(keys[0]);
+                Long formulaId =Long.valueOf(keys[1]);
+                Long groupId = Long.valueOf(keys[2]);
+                for (KlCalculatorFormulaVO.ScoreRange scoreRange : scoreRanges) {
+                    KlCalculatorFormulaGroupScore klCalculatorFormulaGroupScore = new KlCalculatorFormulaGroupScore();
+                    klCalculatorFormulaGroupScore.setModifier(klCalculatorFormulaVO.getModifier());
+                    klCalculatorFormulaGroupScore.setConceptId(conceptId);
+                    klCalculatorFormulaGroupScore.setFormulaId(formulaId);
+                    klCalculatorFormulaGroupScore.setGroupId(groupId);
+                    klCalculatorFormulaGroupScore.setGreaterEqual(scoreRange.getGreaterEqual());
+                    klCalculatorFormulaGroupScore.setLessEqual(scoreRange.getLessEqual());
+                    klCalculatorFormulaGroupScore.setResult(scoreRange.getResult());
+                    klCalculatorFormulaGroupScoreFacade.save(klCalculatorFormulaGroupScore);
+                }
+            }
+        }
+    }
+
+    public KlCalculatorFormulaDTO getCalculatorFormulaById(Long conceptId) {
+
+        KlCalculatorFormulaDTO klCalculatorFormulaDTO = new KlCalculatorFormulaDTO();
+
+        LambdaQueryWrapper<KlCalculatorFormula> queryWrapper = Wrappers.<KlCalculatorFormula>lambdaQuery().eq(KlCalculatorFormula::getConceptId, conceptId);
+        KlCalculatorFormula calculatorFormula = this.getOne(queryWrapper);
+        if (calculatorFormula == null) {
+            return null;
+        }
+        klCalculatorFormulaDTO.setTitle(calculatorFormula.getTitle());
+        klCalculatorFormulaDTO.setConceptId(calculatorFormula.getConceptId());
+        klCalculatorFormulaDTO.setNotes(calculatorFormula.getNotes());
+
+
+        LambdaQueryWrapper<KlCalculatorFormulaParam> paramQueryWrapper = Wrappers.<KlCalculatorFormulaParam>lambdaQuery().eq(KlCalculatorFormulaParam::getFormulaId, calculatorFormula.getId());
+        List<KlCalculatorFormulaParam> formulaParamList = klCalculatorFormulaParamFacade.list(paramQueryWrapper);
+        if (ListUtil.isNotEmpty(formulaParamList)) {
+            List<KlCalculatorFormulaDTO.ContentTableData> contentTableDataList = new ArrayList<>();
+            for (KlCalculatorFormulaParam klCalculatorFormulaParam : formulaParamList) {
+                KlCalculatorFormulaDTO.ContentTableData contentTableData = new KlCalculatorFormulaDTO.ContentTableData();
+                contentTableData.setName(klCalculatorFormulaParam.getName());
+                contentTableData.setUnit(klCalculatorFormulaParam.getUnit());
+                contentTableDataList.add(contentTableData);
+            }
+            klCalculatorFormulaDTO.setContentTableData(contentTableDataList);
+        }
+
+        LambdaQueryWrapper<KlCalculatorFormulaGroupScore> scoreLambdaQueryWrapper
+                = Wrappers.<KlCalculatorFormulaGroupScore>lambdaQuery()
+                .eq(KlCalculatorFormulaGroupScore::getFormulaId, calculatorFormula.getId());
+        List<KlCalculatorFormulaGroupScore> formulaGroupScoreList = klCalculatorFormulaGroupScoreFacade.list(scoreLambdaQueryWrapper);
+        Map<Long, List<KlCalculatorFormulaGroupScore>> groupIdScoreMap = new HashMap<>();
+        if (ListUtil.isNotEmpty(formulaGroupScoreList)) {
+            groupIdScoreMap = formulaGroupScoreList.stream().collect(Collectors.groupingBy(KlCalculatorFormulaGroupScore::getGroupId));
+        }
+
+
+        LambdaQueryWrapper<KlCalculatorFormulaGroupDetail> detailLambdaQueryWrapper
+                = Wrappers.<KlCalculatorFormulaGroupDetail>lambdaQuery()
+                .eq(KlCalculatorFormulaGroupDetail::getFormulaId, calculatorFormula.getId())
+                .orderByAsc(KlCalculatorFormulaGroupDetail::getGroupId).orderByAsc(KlCalculatorFormulaGroupDetail::getConditionId);
+        List<KlCalculatorFormulaGroupDetail> formulaGroupDetailList = klCalculatorFormulaGroupDetailFacade.list(detailLambdaQueryWrapper);
+        if (ListUtil.isNotEmpty(formulaGroupDetailList)) {
+            List<KlCalculatorFormulaDTO.ScoreTableData> scoreTableDataList = new ArrayList<>();
+            for (KlCalculatorFormulaGroupDetail klCalculatorFormulaGroupDetail : formulaGroupDetailList) {
+                KlCalculatorFormulaDTO.ScoreTableData scoreTableData = new KlCalculatorFormulaDTO.ScoreTableData();
+                scoreTableData.setGroupId(klCalculatorFormulaGroupDetail.getGroupId());
+                scoreTableData.setConditionId(klCalculatorFormulaGroupDetail.getConditionId());
+                scoreTableData.setConditionName(klCalculatorFormulaGroupDetail.getConditionName());
+                scoreTableData.setFormula(klCalculatorFormulaGroupDetail.getFormula());
+//                scoreTableData.setResult(klCalculatorFormulaGroupDetail.getResult());
+                scoreTableData.setConditionType(klCalculatorFormulaGroupDetail.getConditionType());
+
+                KlCalculatorFormulaDTO.ConditionContent conditionContent = new KlCalculatorFormulaDTO.ConditionContent();
+                conditionContent.setTextType(klCalculatorFormulaGroupDetail.getTextType());
+
+                KlCalculatorFormulaDTO.ValueType valueType = new KlCalculatorFormulaDTO.ValueType();
+                valueType.setMaxValueName(klCalculatorFormulaGroupDetail.getMaxValueName());
+                valueType.setMaxValue(klCalculatorFormulaGroupDetail.getMaxValue());
+                valueType.setMaxValueUnit(klCalculatorFormulaGroupDetail.getMaxValueUnit());
+                valueType.setMinValueName(klCalculatorFormulaGroupDetail.getMinValueName());
+                valueType.setMinValue(klCalculatorFormulaGroupDetail.getMinValue());
+                valueType.setMinValueUnit(klCalculatorFormulaGroupDetail.getMinValueUnit());
+                conditionContent.setValueType(valueType);
+                scoreTableData.setConditionContent(conditionContent);
+
+                List<KlCalculatorFormulaGroupScore> klCalculatorFormulaGroupScores = groupIdScoreMap.get(scoreTableData.getGroupId());
+                if (ListUtil.isNotEmpty(klCalculatorFormulaGroupScores)) {
+                    List<KlCalculatorFormulaDTO.ScoreRange> scoreRangeList = new ArrayList<>();
+                    for (KlCalculatorFormulaGroupScore klCalculatorFormulaGroupScore : klCalculatorFormulaGroupScores) {
+                        KlCalculatorFormulaDTO.ScoreRange scoreRange = new KlCalculatorFormulaDTO.ScoreRange();
+                        scoreRange.setGreaterEqual(klCalculatorFormulaGroupScore.getGreaterEqual());
+                        scoreRange.setLessEqual(klCalculatorFormulaGroupScore.getLessEqual());
+                        scoreRange.setResult(klCalculatorFormulaGroupScore.getResult());
+                        scoreRangeList.add(scoreRange);
+                    }
+                    scoreTableData.setScoreRange(scoreRangeList);
+                }
+
+                scoreTableDataList.add(scoreTableData);
+            }
+
+            klCalculatorFormulaDTO.setScoreTableData(scoreTableDataList);
+        }
+
+
+        return klCalculatorFormulaDTO;
+    }
+
+    public KlCalculatorFormulaDTO getCalculatorFormulaStaticInfo(Long conceptId) {
+
+        KlCalculatorFormulaDTO klCalculatorFormulaDTO = new KlCalculatorFormulaDTO();
+
+        LambdaQueryWrapper<KlCalculatorFormula> queryWrapper = Wrappers.<KlCalculatorFormula>lambdaQuery().eq(KlCalculatorFormula::getConceptId, conceptId);
+        KlCalculatorFormula calculatorFormula = this.getOne(queryWrapper);
+        if (calculatorFormula == null) {
+            return null;
+        }
+        klCalculatorFormulaDTO.setTitle(calculatorFormula.getTitle());
+        klCalculatorFormulaDTO.setConceptId(calculatorFormula.getConceptId());
+        klCalculatorFormulaDTO.setNotes(calculatorFormula.getNotes());
+
+
+        LambdaQueryWrapper<KlCalculatorFormulaParam> paramQueryWrapper = Wrappers.<KlCalculatorFormulaParam>lambdaQuery().eq(KlCalculatorFormulaParam::getFormulaId, calculatorFormula.getId());
+        List<KlCalculatorFormulaParam> formulaParamList = klCalculatorFormulaParamFacade.list(paramQueryWrapper);
+        if (ListUtil.isNotEmpty(formulaParamList)) {
+            List<KlCalculatorFormulaDTO.ContentTableData> contentTableDataList = new ArrayList<>();
+            for (KlCalculatorFormulaParam klCalculatorFormulaParam : formulaParamList) {
+                KlCalculatorFormulaDTO.ContentTableData contentTableData = new KlCalculatorFormulaDTO.ContentTableData();
+                contentTableData.setName(klCalculatorFormulaParam.getName());
+                contentTableData.setUnit(klCalculatorFormulaParam.getUnit());
+                contentTableDataList.add(contentTableData);
+            }
+            klCalculatorFormulaDTO.setContentTableData(contentTableDataList);
+        }
+
+        return klCalculatorFormulaDTO;
+    }
+}

+ 13 - 0
src/main/java/com/diagbot/facade/KlCalculatorFormulaGroupDetailFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.KlCalculatorFormulaGroupDetailServiceImpl;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 量表计算公式参数
+ */
+@Component
+public class KlCalculatorFormulaGroupDetailFacade extends KlCalculatorFormulaGroupDetailServiceImpl {
+
+}

+ 13 - 0
src/main/java/com/diagbot/facade/KlCalculatorFormulaGroupScoreFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.KlCalculatorFormulaGroupScoreServiceImpl;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 量表计算公式参数
+ */
+@Component
+public class KlCalculatorFormulaGroupScoreFacade extends KlCalculatorFormulaGroupScoreServiceImpl {
+
+}

+ 13 - 0
src/main/java/com/diagbot/facade/KlCalculatorFormulaParamFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.KlCalculatorFormulaParamServiceImpl;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 量表计算公式参数
+ */
+@Component
+public class KlCalculatorFormulaParamFacade extends KlCalculatorFormulaParamServiceImpl {
+
+}

+ 30 - 0
src/main/java/com/diagbot/facade/KlConceptStaticFacade.java

@@ -76,6 +76,9 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
     @Autowired
     KlRegulationBaseFacade klRegulationBaseFacade;
 
+    @Autowired
+    KlCalculatorFormulaFacade klCalculatorFormulaFacade;
+
     /**
      * 获取静态知识
      *
@@ -287,6 +290,13 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
             ScaleVO scaleVO = new ScaleVO();
             BeanUtil.copyProperties(staticKnowledgeVO, scaleVO);
             staticKnowledgeDTO.setScale(getScaleStructure(scaleVO, concept.getId()));
+
+            //计算公式详情
+            KlCalculatorFormulaDTO calculatorFormulaStaticInfo = klCalculatorFormulaFacade.getCalculatorFormulaStaticInfo(concept.getId());
+            if (calculatorFormulaStaticInfo != null) {
+                staticKnowledgeDTO.setCalculatorFormula(calculatorFormulaStaticInfo);
+            }
+
         }
 
         staticKnowledgeDTO.setClinicalPathwayName(staticInfo.getClinicalPathwayName());
@@ -600,6 +610,17 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
             }
         }
 
+        //保存计算公式明细
+        if (klConceptStaticVO.getSource() != null
+                && klConceptStaticVO.getSource().equals(1)
+                && klConceptStaticVO.getType().equals(LexiconEnum.Scale.getKey())) {
+            if (klConceptStaticVO.getCalculatorFormula() != null) {
+                klConceptStaticVO.getCalculatorFormula().setConceptId(concept.getId());
+                klConceptStaticVO.getCalculatorFormula().setModifier(concept.getModifier());
+                klCalculatorFormulaFacade.saveCalculatorFormulaAll(klConceptStaticVO.getCalculatorFormula());
+            }
+        }
+
         return true;
     }
 
@@ -688,6 +709,15 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
                 klConceptStaticDTO.setScale(scaleList.get(0));
             }
         }
+
+        //获取量表计算公式结构
+        if (concept.getLibType().equals(LexiconEnum.Scale.getKey())) {
+            KlCalculatorFormulaDTO calculatorFormulaDTO = klCalculatorFormulaFacade.getCalculatorFormulaById(idVO.getId());
+            if (calculatorFormulaDTO != null) {
+                klConceptStaticDTO.setCalculatorFormula(calculatorFormulaDTO);
+            }
+        }
+
         return klConceptStaticDTO;
     }
 

+ 10 - 1
src/main/java/com/diagbot/facade/OtherTipFacade.java

@@ -31,9 +31,18 @@ public class OtherTipFacade {
         // 其他值提醒——化验
         otherTipProcess.processLis(wordCrfDTO, res);
 
-        // 其他值提醒——查体
+        // 其他值提醒——查体-体格检查项目
         otherTipProcess.processVital(wordCrfDTO, res);
 
+        // 其他值提醒——查体-体格检查结果
+        otherTipProcess.processVitalResult(wordCrfDTO, res);
+
+        // 其他值提醒——查体-体格检查项目集合
+        otherTipProcess.processVitalList(wordCrfDTO, res);
+
+        // 其他值提醒——查体-体格检查结果集合
+        otherTipProcess.processVitalResultList(wordCrfDTO, res);
+
         // 其他值提醒——辅检
         otherTipProcess.processPacs(wordCrfDTO, res);
 

+ 16 - 0
src/main/java/com/diagbot/mapper/KlCalculatorFormulaGroupDetailMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlCalculatorFormulaGroupDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 量表计算公式组条件内容 Mapper 接口
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+public interface KlCalculatorFormulaGroupDetailMapper extends BaseMapper<KlCalculatorFormulaGroupDetail> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/mapper/KlCalculatorFormulaGroupScoreMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlCalculatorFormulaGroupScore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 量表计算公式组 Mapper 接口
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+public interface KlCalculatorFormulaGroupScoreMapper extends BaseMapper<KlCalculatorFormulaGroupScore> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/mapper/KlCalculatorFormulaMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlCalculatorFormula;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 量表计算公式 Mapper 接口
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+public interface KlCalculatorFormulaMapper extends BaseMapper<KlCalculatorFormula> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/mapper/KlCalculatorFormulaParamMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlCalculatorFormulaParam;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 量表计算公式参数 Mapper 接口
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+public interface KlCalculatorFormulaParamMapper extends BaseMapper<KlCalculatorFormulaParam> {
+
+}

+ 170 - 1
src/main/java/com/diagbot/process/OtherTipProcess.java

@@ -105,7 +105,7 @@ public class OtherTipProcess {
     }
 
     /**
-     * 处理业务——查体
+     * 处理业务——查体-体格检查项目
      *
      * @param wordCrfDTO
      * @param res
@@ -139,6 +139,115 @@ public class OtherTipProcess {
             }
         }
     }
+
+    /**
+     * 处理业务——查体-体格检查结果
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void processVitalResult(WordCrfDTO wordCrfDTO, IndicationDTO res) {
+        VitalLabel vitalLabel = wordCrfDTO.getVitalLabel();
+        List<Vital> vitals = vitalLabel.getVitals();
+
+        List<BillMsg> otherList = res.getOtherList();
+        for (Vital vital : vitals) {
+            RuleVO ruleVO = getVitalResultRuleVO(vital, RuleTypeEnum.other.getKey());
+            // 1、获取相关数据
+            if (ruleVO != null) {
+                RuleExtDTO ruleExtDTO = commonFacade.getRuleData(ruleVO);
+                if (ruleExtDTO == null) {
+                    continue;
+                }
+                List<RuleConditionDTO> ruleConditionDTOList = ruleExtDTO.getRuleConditionDTOList();
+                for (RuleConditionDTO ruleConditionDTO : ruleConditionDTOList) {
+                    List<RuleBaseDTO> ruleBaseDTOList = ruleConditionDTO.getRuleBaseDTOList();
+
+                    for (RuleBaseDTO ruleBaseDTO : ruleBaseDTOList) {
+                        Map<String, Object> map = CoreUtil.compareVitalMulti(ruleBaseDTO, vitalLabel);
+                        if (CoreUtil.getMapFlag(map)) {
+                            String msg = "该患者"+vital.getName()+"结果" + vital.getPd().getValue() + ",请留意," + ruleConditionDTO.getMsg();
+                            BillMsg billMsg = MsgUtil.getCommonOtherMsg(TypeEnum.other.getName(), msg, null, null, null);
+                            CoreUtil.addBeanToList(otherList, billMsg);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 处理业务——查体-体格检查项目集合
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void processVitalList(WordCrfDTO wordCrfDTO, IndicationDTO res) {
+        VitalLabel vitalLabel = wordCrfDTO.getVitalLabel();
+        List<Vital> vitals = vitalLabel.getVitals();
+
+        List<BillMsg> otherList = res.getOtherList();
+        for (Vital vital : vitals) {
+            RuleVO ruleVO = getVitalListRuleVO(vital, RuleTypeEnum.other.getKey());
+            // 1、获取相关数据
+            if (ruleVO != null) {
+                RuleExtDTO ruleExtDTO = commonFacade.getRuleData(ruleVO);
+                if (ruleExtDTO == null) {
+                    continue;
+                }
+                List<RuleConditionDTO> ruleConditionDTOList = ruleExtDTO.getRuleConditionDTOList();
+                for (RuleConditionDTO ruleConditionDTO : ruleConditionDTOList) {
+                    List<RuleBaseDTO> ruleBaseDTOList = ruleConditionDTO.getRuleBaseDTOList();
+
+                    for (RuleBaseDTO ruleBaseDTO : ruleBaseDTOList) {
+                        Map<String, Object> map = CoreUtil.compareVitalMulti(ruleBaseDTO, vitalLabel);
+                        if (CoreUtil.getMapFlag(map)) {
+                            String msg = "该患者"+vital.getName()+"结果" + vital.getPd().getValue() + ",请留意," + ruleConditionDTO.getMsg();
+                            BillMsg billMsg = MsgUtil.getCommonOtherMsg(TypeEnum.other.getName(), msg, null, null, null);
+                            CoreUtil.addBeanToList(otherList, billMsg);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 处理业务——查体-体格检查结果集合
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void processVitalResultList(WordCrfDTO wordCrfDTO, IndicationDTO res) {
+        VitalLabel vitalLabel = wordCrfDTO.getVitalLabel();
+        List<Vital> vitals = vitalLabel.getVitals();
+
+        List<BillMsg> otherList = res.getOtherList();
+        for (Vital vital : vitals) {
+            RuleVO ruleVO = getVitalResultListRuleVO(vital, RuleTypeEnum.other.getKey());
+            // 1、获取相关数据
+            if (ruleVO != null) {
+                RuleExtDTO ruleExtDTO = commonFacade.getRuleData(ruleVO);
+                if (ruleExtDTO == null) {
+                    continue;
+                }
+                List<RuleConditionDTO> ruleConditionDTOList = ruleExtDTO.getRuleConditionDTOList();
+                for (RuleConditionDTO ruleConditionDTO : ruleConditionDTOList) {
+                    List<RuleBaseDTO> ruleBaseDTOList = ruleConditionDTO.getRuleBaseDTOList();
+
+                    for (RuleBaseDTO ruleBaseDTO : ruleBaseDTOList) {
+                        Map<String, Object> map = CoreUtil.compareVitalMulti(ruleBaseDTO, vitalLabel);
+                        if (CoreUtil.getMapFlag(map)) {
+                            String msg = "该患者"+vital.getName()+"结果" + vital.getPd().getValue() + ",请留意," + ruleConditionDTO.getMsg();
+                            BillMsg billMsg = MsgUtil.getCommonOtherMsg(TypeEnum.other.getName(), msg, null, null, null);
+                            CoreUtil.addBeanToList(otherList, billMsg);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     /**
      * 处理业务——辅检
      *
@@ -661,4 +770,64 @@ public class OtherTipProcess {
         }
         return null;
     }
+
+    /**
+     * 获取其他值提醒入参--查体
+     *
+     * @param vital
+     * @return
+     */
+    public RuleVO getVitalResultRuleVO(Vital vital, Integer key) {
+        if (StringUtil.isNotBlank(vital.getName())) {
+            RuleVO ruleVO = new RuleVO();
+            ruleVO.setInputName(vital.getName());
+            ruleVO.setLibName(vital.getName());
+            ruleVO.setLibType(LexiconEnum.VitalResult.getKey());
+            ruleVO.setLibTypeName(TypeEnum.vital.getName());
+            ruleVO.setDateValue(vital.getValue());
+            ruleVO.setSuffix(String.valueOf(key));
+            return ruleVO;
+        }
+        return null;
+    }
+
+    /**
+     * 获取其他值提醒入参--查体
+     *
+     * @param vital
+     * @return
+     */
+    public RuleVO getVitalListRuleVO(Vital vital, Integer key) {
+        if (StringUtil.isNotBlank(vital.getName())) {
+            RuleVO ruleVO = new RuleVO();
+            ruleVO.setInputName(vital.getName());
+            ruleVO.setLibName(vital.getName());
+            ruleVO.setLibType(LexiconEnum.VitalCollection.getKey());
+            ruleVO.setLibTypeName(TypeEnum.vital.getName());
+            ruleVO.setDateValue(vital.getValue());
+            ruleVO.setSuffix(String.valueOf(key));
+            return ruleVO;
+        }
+        return null;
+    }
+
+    /**
+     * 获取其他值提醒入参--查体
+     *
+     * @param vital
+     * @return
+     */
+    public RuleVO getVitalResultListRuleVO(Vital vital, Integer key) {
+        if (StringUtil.isNotBlank(vital.getName())) {
+            RuleVO ruleVO = new RuleVO();
+            ruleVO.setInputName(vital.getName());
+            ruleVO.setLibName(vital.getName());
+            ruleVO.setLibType(LexiconEnum.VitalCollection.getKey());
+            ruleVO.setLibTypeName(TypeEnum.vital.getName());
+            ruleVO.setDateValue(vital.getValue());
+            ruleVO.setSuffix(String.valueOf(key));
+            return ruleVO;
+        }
+        return null;
+    }
 }

+ 16 - 0
src/main/java/com/diagbot/service/KlCalculatorFormulaGroupDetailService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlCalculatorFormulaGroupDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 量表计算公式组条件内容 服务类
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+public interface KlCalculatorFormulaGroupDetailService extends IService<KlCalculatorFormulaGroupDetail> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/service/KlCalculatorFormulaGroupScoreService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlCalculatorFormulaGroupScore;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 量表计算公式组 服务类
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+public interface KlCalculatorFormulaGroupScoreService extends IService<KlCalculatorFormulaGroupScore> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/service/KlCalculatorFormulaParamService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlCalculatorFormulaParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 量表计算公式参数 服务类
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+public interface KlCalculatorFormulaParamService extends IService<KlCalculatorFormulaParam> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/service/KlCalculatorFormulaService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlCalculatorFormula;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 量表计算公式 服务类
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+public interface KlCalculatorFormulaService extends IService<KlCalculatorFormula> {
+
+}

+ 20 - 0
src/main/java/com/diagbot/service/impl/KlCalculatorFormulaGroupDetailServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlCalculatorFormulaGroupDetail;
+import com.diagbot.mapper.KlCalculatorFormulaGroupDetailMapper;
+import com.diagbot.service.KlCalculatorFormulaGroupDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 量表计算公式组条件内容 服务实现类
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Service
+public class KlCalculatorFormulaGroupDetailServiceImpl extends ServiceImpl<KlCalculatorFormulaGroupDetailMapper, KlCalculatorFormulaGroupDetail> implements KlCalculatorFormulaGroupDetailService {
+
+}

+ 20 - 0
src/main/java/com/diagbot/service/impl/KlCalculatorFormulaGroupScoreServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlCalculatorFormulaGroupScore;
+import com.diagbot.mapper.KlCalculatorFormulaGroupScoreMapper;
+import com.diagbot.service.KlCalculatorFormulaGroupScoreService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 量表计算公式组 服务实现类
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Service
+public class KlCalculatorFormulaGroupScoreServiceImpl extends ServiceImpl<KlCalculatorFormulaGroupScoreMapper, KlCalculatorFormulaGroupScore> implements KlCalculatorFormulaGroupScoreService {
+
+}

+ 20 - 0
src/main/java/com/diagbot/service/impl/KlCalculatorFormulaParamServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlCalculatorFormulaParam;
+import com.diagbot.mapper.KlCalculatorFormulaParamMapper;
+import com.diagbot.service.KlCalculatorFormulaParamService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 量表计算公式参数 服务实现类
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Service
+public class KlCalculatorFormulaParamServiceImpl extends ServiceImpl<KlCalculatorFormulaParamMapper, KlCalculatorFormulaParam> implements KlCalculatorFormulaParamService {
+
+}

+ 20 - 0
src/main/java/com/diagbot/service/impl/KlCalculatorFormulaServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlCalculatorFormula;
+import com.diagbot.mapper.KlCalculatorFormulaMapper;
+import com.diagbot.service.KlCalculatorFormulaService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 量表计算公式 服务实现类
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Service
+public class KlCalculatorFormulaServiceImpl extends ServiceImpl<KlCalculatorFormulaMapper, KlCalculatorFormula> implements KlCalculatorFormulaService {
+
+}

+ 86 - 0
src/main/java/com/diagbot/vo/KlCalculatorFormulaVO.java

@@ -0,0 +1,86 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 计算公式
+ */
+@Data
+public class KlCalculatorFormulaVO {
+    /**
+     * 术语概念id
+     */
+    private Long conceptId;
+
+    private String modifier;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 备注
+     */
+    private String notes;
+
+    private List<ContentTableData> contentTableData;
+
+    private List<ScoreTableData> scoreTableData;
+
+
+
+
+    @Data
+    public static class ContentTableData{
+        private String name;
+        private String unit;
+    }
+
+    @Data
+    public static class ScoreTableData{
+        private Long groupId;
+
+        private Long conditionId;
+
+        private String conditionName;
+
+        private String conditionType;
+
+        private ConditionContent conditionContent;
+
+        private String formula;
+
+        private List<ScoreRange> scoreRange;
+    }
+
+    @Data
+    public static class ConditionContent{
+        private String textType;
+        private ValueType valueType;
+
+    }
+
+    @Data
+    public static class ValueType{
+        private String maxValueName;
+        private BigDecimal maxValue;
+        private String maxValueUnit;
+
+        private String minValueName;
+        private BigDecimal minValue;
+        private String minValueUnit;
+    }
+
+    @Data
+    public static class ScoreRange{
+        private BigDecimal greaterEqual;
+        private BigDecimal lessEqual;
+        private String result;
+    }
+
+
+}

+ 7 - 0
src/main/java/com/diagbot/vo/KlConceptStaticVO.java

@@ -58,4 +58,11 @@ public class KlConceptStaticVO {
      * 数据来源:0-医院端、1-云平台,默认0
      */
     private Integer source = 0;
+
+    /**
+     * 计算公式
+     */
+    private KlCalculatorFormulaVO calculatorFormula;
+
+
 }

+ 20 - 0
src/main/java/com/diagbot/web/KlCalculatorFormulaController.java

@@ -0,0 +1,20 @@
+package com.diagbot.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 量表计算公式 前端控制器
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Controller
+@RequestMapping("/klCalculatorFormula")
+public class KlCalculatorFormulaController {
+
+}

+ 20 - 0
src/main/java/com/diagbot/web/KlCalculatorFormulaGroupController.java

@@ -0,0 +1,20 @@
+package com.diagbot.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 量表计算公式组 前端控制器
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Controller
+@RequestMapping("/klCalculatorFormulaGroup")
+public class KlCalculatorFormulaGroupController {
+
+}

+ 20 - 0
src/main/java/com/diagbot/web/KlCalculatorFormulaGroupDetailController.java

@@ -0,0 +1,20 @@
+package com.diagbot.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 量表计算公式组条件内容 前端控制器
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Controller
+@RequestMapping("/klCalculatorFormulaGroupDetail")
+public class KlCalculatorFormulaGroupDetailController {
+
+}

+ 20 - 0
src/main/java/com/diagbot/web/KlCalculatorFormulaParamController.java

@@ -0,0 +1,20 @@
+package com.diagbot.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 量表计算公式参数 前端控制器
+ * </p>
+ *
+ * @author yuchengwei
+ * @since 2025-03-17
+ */
+@Controller
+@RequestMapping("/klCalculatorFormulaParam")
+public class KlCalculatorFormulaParamController {
+
+}

+ 29 - 0
src/main/resources/mapper/KlCalculatorFormulaGroupDetailMapper.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.KlCalculatorFormulaGroupDetailMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.KlCalculatorFormulaGroupDetail">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="group_id" property="groupId" />
+        <result column="condition_id" property="conditionId" />
+        <result column="condition_name" property="conditionName" />
+        <result column="condition_type" property="conditionType" />
+        <result column="text_type" property="textType" />
+        <result column="max_value_name" property="maxValueName" />
+        <result column="max_value" property="maxValue" />
+        <result column="max_value_unit" property="maxValueUnit" />
+        <result column="min_value_name" property="minValueName" />
+        <result column="min_value" property="minValue" />
+        <result column="min_value_unit" property="minValueUnit" />
+        <result column="greater_equal" property="greaterEqual" />
+        <result column="less_equal" property="lessEqual" />
+        <result column="result" property="result" />
+    </resultMap>
+
+</mapper>

+ 21 - 0
src/main/resources/mapper/KlCalculatorFormulaGroupScoreMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.KlCalculatorFormulaGroupScoreMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.KlCalculatorFormulaGroupScore">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="formula_id" property="formulaId" />
+        <result column="group_id" property="groupId" />
+        <result column="concept_id" property="conceptId" />
+        <result column="greater_equal" property="greaterEqual" />
+        <result column="less_equal" property="lessEqual" />
+        <result column="result" property="result" />
+    </resultMap>
+
+</mapper>

+ 18 - 0
src/main/resources/mapper/KlCalculatorFormulaMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.KlCalculatorFormulaMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.KlCalculatorFormula">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="concept_id" property="conceptId" />
+        <result column="title" property="title" />
+        <result column="notes" property="notes" />
+    </resultMap>
+
+</mapper>

+ 18 - 0
src/main/resources/mapper/KlCalculatorFormulaParamMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.KlCalculatorFormulaParamMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.KlCalculatorFormulaParam">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="formula_id" property="formulaId" />
+        <result column="name" property="name" />
+        <result column="unit" property="unit" />
+    </resultMap>
+
+</mapper>

+ 5 - 5
src/test/java/com/diagbot/CodeGeneration.java

@@ -27,13 +27,13 @@ public class CodeGeneration {
 
         // 全局配置
         GlobalConfig gc = new GlobalConfig();
-        gc.setOutputDir("E://code//med2021");
+        gc.setOutputDir("/Users/ycw/IdeaProjects/cdss-core/src/main/java");
         gc.setFileOverride(true);
         gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false
         gc.setEnableCache(false);// XML 二级缓存
         gc.setBaseResultMap(true);// XML ResultMap
         gc.setBaseColumnList(false);// XML columList
-        gc.setAuthor("zhoutg");// 作者
+        gc.setAuthor("yuchengwei");// 作者
 
         // 自定义文件命名,注意 %s 会自动填充表实体属性!
         gc.setControllerName("%sController");
@@ -48,15 +48,15 @@ public class CodeGeneration {
         dsc.setDbType(DbType.MYSQL);
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
         dsc.setUsername("root");
-        dsc.setPassword("lantone");
-        dsc.setUrl("jdbc:mysql://192.168.2.236:3306/med_2021?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+        dsc.setPassword("dsYun8!@#");
+        dsc.setUrl("jdbc:mysql://173.18.12.194:3306/med_2021?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
         mpg.setDataSource(dsc);
 
         // 策略配置
         StrategyConfig strategy = new StrategyConfig();
         // strategy.setTablePrefix(new String[] { "demo_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude("kl_diagnose_record", "kl_diagnose_record_detail"); // 需要生成的表
+        strategy.setInclude("kl_calculator_formula_group","kl_calculator_formula_group_detail","kl_calculator_formula_param"); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);