From 8a0bbe1ffb7cd41664aa2240130c5d4abbc7dd9b Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 21 一月 2026 10:28:58 +0800
Subject: [PATCH] 双屏仪硬件回调信息添加诊所账号

---
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/H5AICallbackController.java    |   37 ++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysAiMessageMapper.java            |   16 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/TSysAiMessageService.java          |   16 +++++
 ruoyi-system/src/main/resources/mapper/system/TSysAiMessageMapper.xml                  |   19 ++++++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TSysAiMessage.java                   |   53 +++++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysAiMessageServiceImpl.java |   20 ++++++
 6 files changed, 161 insertions(+), 0 deletions(-)

diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/H5AICallbackController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/H5AICallbackController.java
index fa25ff3..1ebce1b 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/H5AICallbackController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/H5AICallbackController.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.system.model.*;
 import com.ruoyi.system.service.*;
 import com.ruoyi.system.utils.util.AesSimpleUtil;
@@ -47,6 +48,12 @@
     private TSysInspectionRiskEstimateService sysInspectionRiskEstimateService;
     @Autowired
     private TSysChronicDiseaseService sysChronicDiseaseService;
+    @Autowired
+    private TSysAiMessageService sysAiMessageService;
+    @Autowired
+    private ISysUserService sysUserService;
+    @Autowired
+    private TCrmClinicService crmClinicService;
 
 //    @PostMapping("/reportReturn")
 //    public String reportReturn(String encryptedJson, String signEncryptedJson) throws Exception {
@@ -146,6 +153,10 @@
         // 解密
         String raw = AesUtil.decrypt(clientKey, clientIV , data);
         log.info("H5舌面报告推送,解密后:{}",raw);
+        TSysAiMessage tSysAiMessage = new TSysAiMessage();
+        tSysAiMessage.setCommitType(1);
+        tSysAiMessage.setContent(raw);
+        tSysAiMessage.setCreateTime(LocalDateTime.now());
 
         JSONObject jsonObject = JSONObject.parseObject(raw);
 
@@ -175,7 +186,10 @@
             if(Objects.nonNull(vipEndTime) && vipEndTime.isAfter(LocalDateTime.now())){
                 sysInspection.setIsPay(1);
             }
+        }else {
+            tSysAiMessage.setErrorMessage("未查询到患者");
         }
+        sysAiMessageService.save(tSysAiMessage);
         sysInspection.setOutUserId(outUserId);
         sysInspection.setBirthday(birthday);
         sysInspection.setSex("0".equals(gender)?1:2);
@@ -220,6 +234,10 @@
     @PostMapping("/xiMaDoubleScreenReportPush")
     public JSONObject xiMaDoubleScreenReportPush(@RequestBody JSONObject jsonObject){
         log.info("双屏仪报告推送:{}",jsonObject);
+        TSysAiMessage tSysAiMessage = new TSysAiMessage();
+        tSysAiMessage.setCommitType(1);
+        tSysAiMessage.setContent(jsonObject.toJSONString());
+        tSysAiMessage.setCreateTime(LocalDateTime.now());
         // 主体信息
         String reportTime = jsonObject.getString("report_time"); // 报告时间
         String report_print_url = jsonObject.getString("report_print_url"); // 报告H5页面地址
@@ -244,6 +262,7 @@
         Long device_account_id = userInfo.getLong("device_account_id"); // 设备账号ID
         String sex = userInfo.getString("sex"); // 性别
         String age = userInfo.getString("age"); // 年龄
+        String device_account = userInfo.getString("device_account"); // 诊所账号
 
         sysInspection.setThreeUserId(id);
         sysInspection.setPhone(phone);
@@ -275,6 +294,24 @@
             sysAppUser.setSex("男".equals(sex) ? 1 : 2);
         }
 
+        // 查询诊所账号
+        SysUser sysUser = sysUserService.selectByPhone(device_account);
+        if(Objects.nonNull(sysUser)){
+            // 通过账号查询诊所信息
+            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, sysUser.getUserId())
+                    .last("LIMIT 1"));
+            if(Objects.nonNull(crmClinic)){
+                sysAppUser.setClinicId(crmClinic.getId());
+            }else {
+                tSysAiMessage.setErrorMessage("未查询到诊所信息");
+                sysAiMessageService.save(tSysAiMessage);
+            }
+        }else {
+            tSysAiMessage.setErrorMessage("未查询到诊所绑定账号");
+            sysAiMessageService.save(tSysAiMessage);
+        }
+
         sysInspectionService.save(sysInspection);
 
         // 指脉结果
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysAiMessageMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysAiMessageMapper.java
new file mode 100644
index 0000000..96b2a8d
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysAiMessageMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.model.TSysAiMessage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * AI推送消息表 Mapper 接口
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-01-21
+ */
+public interface TSysAiMessageMapper extends BaseMapper<TSysAiMessage> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysAiMessage.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysAiMessage.java
new file mode 100644
index 0000000..e92eb66
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysAiMessage.java
@@ -0,0 +1,53 @@
+package com.ruoyi.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * AI推送消息表
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-01-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_sys_ai_message")
+@ApiModel(value="TSysAiMessage对象", description="AI推送消息表")
+public class TSysAiMessage implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private String id;
+
+    @ApiModelProperty(value = "推送内容")
+    @TableField("content")
+    private String content;
+
+    @ApiModelProperty(value = "推送时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "推送类型 1=小程序 2=双屏仪硬件")
+    @TableField("commit_type")
+    private Integer commitType;
+
+    @ApiModelProperty(value = "错误信息提示")
+    @TableField("error_message")
+    private String errorMessage;
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysAiMessageService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysAiMessageService.java
new file mode 100644
index 0000000..8af7f6c
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysAiMessageService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.model.TSysAiMessage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * AI推送消息表 服务类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-01-21
+ */
+public interface TSysAiMessageService extends IService<TSysAiMessage> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysAiMessageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysAiMessageServiceImpl.java
new file mode 100644
index 0000000..5755bf1
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysAiMessageServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.system.model.TSysAiMessage;
+import com.ruoyi.system.mapper.TSysAiMessageMapper;
+import com.ruoyi.system.service.TSysAiMessageService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * AI推送消息表 服务实现类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-01-21
+ */
+@Service
+public class TSysAiMessageServiceImpl extends ServiceImpl<TSysAiMessageMapper, TSysAiMessage> implements TSysAiMessageService {
+
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TSysAiMessageMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TSysAiMessageMapper.xml
new file mode 100644
index 0000000..a70c3bf
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/TSysAiMessageMapper.xml
@@ -0,0 +1,19 @@
+<?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.ruoyi.system.mapper.TSysAiMessageMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TSysAiMessage">
+        <id column="id" property="id" />
+        <result column="content" property="content" />
+        <result column="create_time" property="createTime" />
+        <result column="commit_type" property="commitType" />
+        <result column="error_message" property="errorMessage" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, content, create_time, commit_type, error_message
+    </sql>
+
+</mapper>

--
Gitblit v1.7.1