Преглед на файлове

营养评估和营养筛选

chenying2100 преди 2 месеца
родител
ревизия
6d4d840319

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -1,7 +1,7 @@
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8080
+  port: 8081
   servlet:
     # 应用的访问路径
     context-path: /

+ 1 - 1
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/PaymentStatus.java → ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/biz/PaymentStatus.java

@@ -1,4 +1,4 @@
-package org.dromara.common.core.enums;
+package org.dromara.common.core.enums.biz;
 
 import lombok.Getter;
 

+ 38 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/biz/QuestionsList.java

@@ -0,0 +1,38 @@
+package org.dromara.common.core.enums.biz;
+
+import lombok.Getter;
+
+/**
+ * @author chenYing
+ * @date 2025-07-21 13:59:58
+ **/
+@Getter
+public enum QuestionsList {
+    BASE_INFO("baseInfo", "基本信息"),
+    OTHER_INFO("otherInfo", "其它"),
+    ANTHROPOMETRY("anthropometry", "人体测量"),
+    ANTHROPOMETRY_CHILD_ONE("1", "人体测量-人体测量"),
+    ANTHROPOMETRY_CHILD_TWO("2", "人体测量-调查时间"),
+    ANTHROPOMETRY_CHILD_THREE("3", "人体测量-过去体重"),
+    ANTHROPOMETRY_CHILD_FOUR("4", "人体测量-体重变化"),
+    DIETARY_STATUS("dietaryStatus", "膳食状况"),
+    DIETARY_STATUS_CHILD_ONE("1", "膳食状况-膳食状况"),
+    DIETARY_STATUS_CHILD_TWO("2", "膳食状况-食物摄入量"),
+    DIETARY_STATUS_CHILD_THREE("3", "膳食状况-食物摄入种类"),
+    DIETARY_STATUS_CHILD_FOUR("4", "膳食状况-营养素摄入分析"),
+    NUTRITIONAL_BIOCHEMICAL("nutritionalBiochemical", "营养生化检查"),
+    QUESTION_TYPE_SELECTION("questionTypeSelection", "题型选择"),
+    SINGLE_CHOICE("singleChoice", "单选"),
+    MULTIPLE_CHOICE("multipleChoice", "多选"),
+    FILL_BLANKS("fillBlanks", "填空"),
+    SCALE_QUESTIONS("scaleQuestions", "量表"),
+    MATRIX_SCALE("matrixScale", "矩阵");
+
+    private String code;
+    private String remark;
+
+    private QuestionsList(String code, String remark) {
+        this.code = code;
+        this.remark = remark;
+    }
+}

+ 1 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysScreeningAssessmentQuestionBo.java

@@ -92,6 +92,7 @@ public class SysScreeningAssessmentQuestionBo extends BaseEntity {
         private String score;
         private String img;
         private Boolean allowFillBlank;
+        private String matrixFillBlank;
         private String unit;
         private String optionContent;
         private Boolean optionFlag;

+ 1 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysScreeningAssessmentQuestionVo.java

@@ -99,6 +99,7 @@ public class SysScreeningAssessmentQuestionVo implements Serializable {
         private String score;
         private String img;
         private Boolean allowFillBlank;
+        private String matrixFillBlank;
         private String unit;
         private String optionContent;
         private Boolean optionFlag;

+ 6 - 5
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/NutritionEvaluationServiceImpl.java

@@ -1,11 +1,12 @@
 package org.dromara.system.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import org.dromara.common.core.constant.BizConst;
-import org.dromara.common.core.enums.PaymentStatus;
+import org.dromara.common.core.enums.biz.PaymentStatus;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -60,7 +61,7 @@ public class NutritionEvaluationServiceImpl implements INutritionEvaluationServi
      * @return 营养评估
      */
     @Override
-    public NutritionEvaluationVo queryById(Long id){
+    public NutritionEvaluationVo queryById(Long id) {
         return baseMapper.selectVoById(id);
     }
 
@@ -149,7 +150,7 @@ public class NutritionEvaluationServiceImpl implements INutritionEvaluationServi
         }
         SysScreeningAssessmentConfigBo configBo = JSON.parseObject(bo.getContent(), new TypeReference<SysScreeningAssessmentConfigBo>() {
         });
-        if (CollUtil.isEmpty(configBo.getOtherInfo())) {
+        if (CollUtil.isEmpty(configBo.getOtherInfo()) && ObjUtil.isEmpty(configBo.getBaseInfo())) {
             throw new ServiceException("没有任何“营养评估”!");
         }
 
@@ -180,7 +181,7 @@ public class NutritionEvaluationServiceImpl implements INutritionEvaluationServi
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(NutritionEvaluation entity){
+    private void validEntityBeforeSave(NutritionEvaluation entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -193,7 +194,7 @@ public class NutritionEvaluationServiceImpl implements INutritionEvaluationServi
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteByIds(ids) > 0;

+ 27 - 18
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/NutritionScreeningServiceImpl.java

@@ -7,7 +7,8 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import org.dromara.common.core.constant.BizConst;
-import org.dromara.common.core.enums.PaymentStatus;
+import org.dromara.common.core.enums.biz.PaymentStatus;
+import org.dromara.common.core.enums.biz.QuestionsList;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -157,29 +158,37 @@ public class NutritionScreeningServiceImpl implements INutritionScreeningService
         }
         SysScreeningAssessmentConfigBo configBo = JSON.parseObject(bo.getContent(), new TypeReference<SysScreeningAssessmentConfigBo>() {
         });
-        if (CollUtil.isEmpty(configBo.getOtherInfo())) {
+        if (CollUtil.isEmpty(configBo.getOtherInfo()) && ObjUtil.isEmpty(configBo.getBaseInfo())) {
             throw new ServiceException("没有任何“营养筛查”!");
         }
 
         BigDecimal total = BigDecimal.ZERO;
-        for (SysScreeningAssessmentQuestionBo questionBo : configBo.getOtherInfo()) {
-            if (ObjUtil.isNull(questionBo.getValue())) {
-                continue;
-            }
+        if (CollUtil.isNotEmpty(configBo.getOtherInfo())) {
+            for (SysScreeningAssessmentQuestionBo questionBo : configBo.getOtherInfo()) {
+                if (ObjUtil.isNull(questionBo.getValue())) {
+                    continue;
+                }
 
-            List<Integer> valueList = CollUtil.newArrayList();
-            String obj = String.valueOf(questionBo.getValue());
-            if (NumberUtil.isNumber(obj)) {
-                valueList.add(Integer.valueOf(obj));
-            } else {
-                List objList = (List) questionBo.getValue();
-                objList.forEach(v -> valueList.add(Integer.valueOf(String.valueOf(v))));
-            }
+                List<Integer> valueList = CollUtil.newArrayList();
+                boolean pass = QuestionsList.QUESTION_TYPE_SELECTION.getCode().equals(questionBo.getQuestionType()) ||
+                    (QuestionsList.ANTHROPOMETRY.getCode().equals(questionBo.getQuestionType()) && QuestionsList.ANTHROPOMETRY_CHILD_FOUR.getCode().equals(questionBo.getLastType())) ||
+                    (QuestionsList.DIETARY_STATUS.getCode().equals(questionBo.getQuestionType()) && QuestionsList.DIETARY_STATUS_CHILD_TWO.getCode().equals(questionBo.getLastType()));
+                if (!pass) {
+                    continue;
+                }
+                String obj = String.valueOf(questionBo.getValue());
+                if (NumberUtil.isNumber(obj)) {
+                    valueList.add(Integer.valueOf(obj));
+                } else {
+                    List objList = (List) questionBo.getValue();
+                    objList.forEach(v -> valueList.add(Integer.valueOf(String.valueOf(v))));
+                }
 
-            for (Integer index : valueList) {
-                SysScreeningAssessmentQuestionBo.QuestionAttrBo attrBo = questionBo.getContentList().get(index);
-                if (StrUtil.isNotBlank(attrBo.getScore()) && NumberUtil.isNumber(attrBo.getScore())) {
-                    total = total.add(new BigDecimal(attrBo.getScore()));
+                for (Integer index : valueList) {
+                    SysScreeningAssessmentQuestionBo.QuestionAttrBo attrBo = questionBo.getContentList().get(index);
+                    if (StrUtil.isNotBlank(attrBo.getScore()) && NumberUtil.isNumber(attrBo.getScore())) {
+                        total = total.add(new BigDecimal(attrBo.getScore()));
+                    }
                 }
             }
         }