Ver Fonte

update
修改疼痛评价结构

18339543638 há 4 meses atrás
pai
commit
ea72af6d33

+ 24 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/config/PainAssessmentJsonbTypeHandler.java

@@ -0,0 +1,24 @@
+package cn.tr.module.smart.common.config;
+
+import cn.tr.module.smart.common.entity.BizPainAssessmentContentEntity;
+import cn.tr.plugin.mybatis.config.handler.JsonbTypeHandler;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.lang.reflect.Type;
+
+@MappedJdbcTypes(JdbcType.OTHER)
+@MappedTypes(BizPainAssessmentContentEntity.class)
+public class PainAssessmentJsonbTypeHandler extends JsonbTypeHandler {
+
+    private static final ObjectMapper mapper = new ObjectMapper();
+
+    public PainAssessmentJsonbTypeHandler() {
+    }
+
+    public PainAssessmentJsonbTypeHandler(Class aClass) {
+        super(aClass);
+    }
+}

+ 1 - 2
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/entity/BizPainAssessmentContentEntity.java

@@ -7,5 +7,4 @@ public class BizPainAssessmentContentEntity {
     private String key;
     private String level;
     private String content;
-
-}
+}

+ 18 - 19
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizPainAssessmentPO.java

@@ -1,8 +1,7 @@
 package cn.tr.module.smart.common.po;
 
+import cn.tr.module.smart.common.config.PainAssessmentJsonbTypeHandler;
 import cn.tr.module.smart.common.entity.BizPainAssessmentContentEntity;
-import cn.tr.plugin.mybatis.config.handler.JsonbTypeHandler;
-import cn.tr.plugin.mybatis.config.handler.StringListTypeHandler;
 import cn.tr.plugin.mybatis.pojo.TenantPO;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -31,93 +30,93 @@ public class BizPainAssessmentPO extends TenantPO {
 
     /** 静息时疼痛评分(0-10) */
     @ApiModelProperty(value = "静息时疼痛评分(0-10)", position = 2)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity restingPain;
 
     /** 运动时疼痛评分(0-10) */
     @ApiModelProperty(value = "运动时疼痛评分(0-10)", position = 3)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity movementPain;
 
     /** 过去24小时内最剧烈疼痛评分(0-10) */
     @ApiModelProperty(value = "过去24小时内最剧烈疼痛评分(0-10)", position = 4)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity painLast;
 
     /** 爆发痛每日发生频次 */
     @ApiModelProperty(value = "爆发痛每日发生频次", position = 5)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity flareUpFrequency;
 
     /** 爆发痛每次持续时长(分钟) */
     @ApiModelProperty(value = "爆发痛每次持续时长(分钟)", position = 6)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity flareUpDuration;
 
     /** 睡眠质量状况(极差/很差/较差/尚可/正常) */
     @ApiModelProperty(value = "睡眠质量状况(极差/很差/较差/尚可/正常)", position = 7)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity sleepStatus;
 
     /** 精神状态(极差/很差/较差/尚可/正常) */
     @ApiModelProperty(value = "精神状态(极差/很差/较差/尚可/正常)", position = 8)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity mentalStatus;
 
     /** 食欲状况(极差/很差/较差/尚可/正常) */
     @ApiModelProperty(value = "食欲状况(极差/很差/较差/尚可/正常)", position = 9)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity appetiteStatus;
 
     /** 恶心呕吐情况(呕吐/仅恶心/无) */
     @ApiModelProperty(value = "恶心呕吐情况(呕吐/仅恶心/无)", position = 10)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity nauseaVomiting;
 
     /** 瘙痒程度(无/轻度/中度/重度) */
     @ApiModelProperty(value = "瘙痒程度(无/轻度/中度/重度)", position = 11)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity itching;
 
     /** 眩晕程度(无/轻度/中度/重度) */
     @ApiModelProperty(value = "眩晕程度(无/轻度/中度/重度)", position = 12)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity dizziness;
 
     /** 喉咙疼痛程度(无/轻度/中度/重度) */
     @ApiModelProperty(value = "喉咙疼痛程度(无/轻度/中度/重度)", position = 13)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity throatPain;
 
     /** 声音嘶哑情况(无/有) */
     @ApiModelProperty(value = "声音嘶哑情况(无/有)", position = 14)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity voiceHoarseness;
 
     /** 患者满意度评分(不满意/较满意/满意) */
     @ApiModelProperty(value = "患者满意度评分(不满意/较满意/满意)", position = 15)
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity satisfactionRating;
 
     @ApiModelProperty(value = "手术ID" ,position = 16)
     private String clinicId;
 
     @ApiModelProperty("疼痛部位_正面")
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private Map<String,Object> localDetailFront;
 
     @ApiModelProperty("疼痛部位_正面base64图")
     private String localDetailFrontImg;
 
     @ApiModelProperty("疼痛部位_背部")
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private Map<String,Object> localDetailTail;
 
     @ApiModelProperty("疼痛部位_背部base64图")
     private String localDetailTailImg;
 
     @ApiModelProperty("疼痛性质")
-    @TableField(typeHandler = JsonbTypeHandler.class)
+    @TableField(typeHandler = PainAssessmentJsonbTypeHandler.class)
     private BizPainAssessmentContentEntity painNature;
 
 }

+ 17 - 2
tr-plugins/tr-spring-boot-starter-plugin-mybatis/src/main/java/cn/tr/plugin/mybatis/config/handler/JsonbTypeHandler.java

@@ -2,11 +2,15 @@ package cn.tr.plugin.mybatis.config.handler;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.type.TypeFactory;
 import org.apache.ibatis.type.BaseTypeHandler;
 import org.apache.ibatis.type.JdbcType;
 import org.apache.ibatis.type.MappedJdbcTypes;
 import org.apache.ibatis.type.MappedTypes;
 import org.postgresql.util.PGobject;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
 import java.sql.CallableStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -17,6 +21,14 @@ import java.sql.SQLException;
 public class JsonbTypeHandler extends BaseTypeHandler<Object> {
 
     private static final ObjectMapper mapper = new ObjectMapper();
+    private Class aClass;
+
+    public JsonbTypeHandler() {
+    }
+
+    public JsonbTypeHandler(Class aClass) {
+        this.aClass = aClass;
+    }
 
     @Override
     public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
@@ -46,13 +58,16 @@ public class JsonbTypeHandler extends BaseTypeHandler<Object> {
     }
 
     private Object parseJson(String json) throws SQLException {
-        if (json == null) {
+        if (json == null || json.isEmpty()) {
             return null;
         }
         try {
+            if (aClass != null) {
+                return mapper.readValue(json, aClass);
+            }
             return mapper.readValue(json, Object.class);
         } catch (JsonProcessingException e) {
-            throw new SQLException("Error parsing JSONB string", e);
+            throw new SQLException("Error parsing JSONB string: " + json, e);
         }
     }
 }