From 28179175bedad0d867f111e7d9f34e4a4b9c9371 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 23 七月 2026 19:05:13 +0800
Subject: [PATCH] (1)同德短信问题处理 (2)同德过滤患者查询问题处理 (3)南华出院随访导出新增(年龄、病历号、性别)

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java                      |   16 ++++-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java |    2 
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java     |   87 ++++++++++++++++++++++++----
 ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java            |   20 +++---
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java                |   34 +++++++++++
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskRes.java                   |   14 ++++
 6 files changed, 146 insertions(+), 27 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
index b9a4adb..83905de 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -493,16 +493,18 @@
                         if (active.equals("sltd")) {
                             data = MessageSend.sendMsg(sendMagParam.getContent(), "6", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
                             if (StringUtils.isNotEmpty(data)) {
-                                ObjectMapper mapper = new ObjectMapper();
-                                JsonNode root = mapper.readTree(data);
-                                String status = root.get("result").get(0).get("status").asText();
-                                if (status.equals("00000")) {
-                                    s = "true";
-                                } else {
-                                    setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�: " + data, "5");
-                                    throw new BaseException("鐭俊鍙戦�佸け璐�");
+                                String[] pairs = data.split("&");
+                                String resultVal = null;
+                                for (String pair : pairs) {
+                                    String[] kv = pair.split("=", 2);
+                                    if ("result".equals(kv[0])) {
+                                        resultVal = kv.length > 1 ? kv[1] : null;
+                                        break;
+                                    }
                                 }
-
+                                if ("0".equals(resultVal)) {
+                                    s = "true";
+                                }
                             } else {
                                 setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�: " + data, "5");
                                 throw new BaseException("鐭俊鍙戦�佸け璐�");
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 956cdad..93158e3 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -137,7 +137,7 @@
             return buildRedirect(path + "/login");
         }
 
-        String redirectUrl = path + "/loginSSO?token=" + loginToken + "&orgid=" + orgid + "&orgname=null&ZuHuID=null&deptCode=null";
+        String redirectUrl = path + "/loginSSO?token=" + loginToken + "&orgid=" + orgid + "&campusid=" + campusid + "&orgname=null&ZuHuID=null&deptCode=null";
         log.info("銆怱SO鐧诲綍銆戦噸瀹氬悜鍦板潃锛歿}", redirectUrl);
         return buildRedirect(redirectUrl);
     }
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index 0422675..c7a6e0f 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -1143,10 +1143,18 @@
                             //鐪佺珛鍚屽痉鐨勭煭淇″彂閫佹柟寮�
                             String data = MessageSend.sendMsg(sendMagParam.getContent(), "6", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
                             if (StringUtils.isNotEmpty(data)) {
-                                ObjectMapper mapper = new ObjectMapper();
-                                JsonNode root = mapper.readTree(data);
-                                String status = root.get("result").get(0).get("status").asText();
-                                if (status.equals("00000")) {
+                                // 瑙f瀽 result=0&description=鎴愬姛&faillist= 鏍煎紡锛坮esult=0鎴愬姛锛�1澶辫触锛�
+                                log.info("銆恠fHandlle銆戠渷绔嬪悓寰风煭淇″彂閫佽繑鍥烇細{}", data);
+                                String[] pairs = data.split("&");
+                                String resultVal = null;
+                                for (String pair : pairs) {
+                                    String[] kv = pair.split("=", 2);
+                                    if ("result".equals(kv[0])) {
+                                        resultVal = kv.length > 1 ? kv[1] : null;
+                                        break;
+                                    }
+                                }
+                                if ("0".equals(resultVal)) {
                                     isSuccess = "true";
                                 }
                             }
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
index 851d764..7123091 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
@@ -35,6 +35,40 @@
     private String sendname;
 
     /**
+     * 骞撮緞
+     */
+    @Excel(name = "骞撮緞 ")
+    @ApiModelProperty(value = "骞撮緞")
+    private Long age;
+
+    /**
+     * 鎬у埆
+     */
+    @ApiModelProperty(value = "鎬у埆")
+    private Long sex;
+
+    /**
+     * 鎬у埆
+     */
+    @Excel(name = "鎬у埆")
+    @ApiModelProperty(value = "鎬у埆")
+    private String sexName;
+
+    /**
+     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�
+     */
+//    @Excel(name = "灏辫瘖缂栧彿")
+    @ApiModelProperty(value = "灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�")
+    private String hospno;
+
+    /**
+     * 鐥呭巻鍙�
+     */
+    @Excel(name = "鐥呭巻鍙�")
+    @ApiModelProperty(value = "鎮h�呯紪鍙凤紙鐥呭巻鍙凤級")
+    private String patno;
+
+    /**
      * 鍑洪櫌鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskRes.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskRes.java
index fccb2d8..d49a646 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskRes.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskRes.java
@@ -121,6 +121,13 @@
     private Long sex;
 
     /**
+     * 鎬у埆
+     */
+    @Excel(name = " 鎬у埆鍚嶇О")
+    @ApiModelProperty(value = "鎬у埆鍚嶇О")
+    private String sexName;
+
+    /**
      * 骞撮緞
      */
     @Excel(name = " 骞撮緞 ")
@@ -447,6 +454,13 @@
     private String hospno;
 
     /**
+     * 鎮h�呯紪鍙�
+     */
+    @Excel(name = "鎮h�呯紪鍙凤紙鐥呭巻鍙凤級")
+    @ApiModelProperty(value = "鎮h�呯紪鍙凤紙鐥呭巻鍙凤級")
+    private String patno;
+
+    /**
      * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛�
      */
     @Excel(name = "  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛�")
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index 36f658e..ad34f8d 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -45,11 +45,9 @@
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.ZoneId;
+import java.time.*;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
@@ -418,9 +416,74 @@
                     serviceSubtaskRes.setCurrentPreachform(serviceSubtask.getPreachform().split(",")[0]);
                 }
             }
+            PatMedInhosp inhosp = patMedInhospMapper.selectPatMedInhospByInhospid(serviceSubtask.getInhospid());
+            if (ObjectUtils.isNotEmpty(inhosp)) {
+                PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(inhosp.getPatid());
+                if (ObjectUtils.isNotEmpty(patArchive)) {
+                    Map<String, String> stringStringMap = calculateAge(patArchive.getBirthdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+                    serviceSubtaskRes.setAge(StringUtils.isNotEmpty(stringStringMap.get("age")) ? Long.valueOf(stringStringMap.get("age")) : null);
+                    serviceSubtaskRes.setSex(patArchive.getSex());
+                    serviceSubtaskRes.setSexName(patArchive.getSex() != null ? (patArchive.getSex() == 1 ? "鐢�" : "濂�") : null);
+                }
+                serviceSubtaskRes.setHospno(inhosp.getInhospno());
+                serviceSubtaskRes.setPatno(inhosp.getPatno());
+            }
+
             serviceSubtaskResList.add(serviceSubtaskRes);
         }
         return serviceSubtaskResList;
+    }
+
+    public Map<String, String> calculateAge(LocalDate birthdate, LocalDate today) {
+        if (birthdate == null || today.isBefore(birthdate)) {
+            return null;
+        }
+        Map<String, String> ageMap = new HashMap<>();
+
+        Period period = Period.between(birthdate, today);
+        long totalDays = ChronoUnit.DAYS.between(birthdate, today);
+        long totalMonths = ChronoUnit.MONTHS.between(birthdate, today);
+
+        int years = period.getYears();
+        int months = period.getMonths();
+        int days = period.getDays();
+
+        String ageUnit;
+        Integer age;
+        String ageUnit2 = null;
+        Integer age2 = null;
+
+        if (totalDays < 90) {
+            // 灏忎簬 1 涓湀锛屾寜澶╄绠�
+            ageUnit = "澶�";
+            age = (int) totalDays;
+            ageMap.put("age", age != null ? age.toString() : null);
+            ageMap.put("ageUnit", ageUnit);
+            ageMap.put("age2", null);
+            ageMap.put("ageUnit2", null);
+        } else if (totalMonths < 36) {
+            // 灏忎簬 1 骞达紝鎸夋湀 + 澶╄绠�
+            ageUnit = "鏈�";
+            age = (int) totalMonths;
+            ageUnit2 = "澶�";
+            age2 = days;
+            ageMap.put("age", age != null ? age.toString() : null);
+            ageMap.put("ageUnit", ageUnit);
+            ageMap.put("age2", age2 != null ? age2.toString() : null);
+            ageMap.put("ageUnit2", ageUnit2);
+        } else {
+            // 澶т簬 1 骞达紝鎸夊勾 + 鏈堣绠�
+            ageUnit = "宀�";
+            age = years;
+            ageUnit2 = "鏈�";
+            age2 = months;
+            ageMap.put("age", age != null ? age.toString() : null);
+            ageMap.put("ageUnit", ageUnit);
+            ageMap.put("age2", age2 != null ? age2.toString() : null);
+            ageMap.put("ageUnit2", ageUnit2);
+        }
+
+        return ageMap;
     }
 
     @Override
@@ -4564,9 +4627,9 @@
     }
 
     @Override
-    public List<ServiceSubtask> gethelibraryCountHyperlink(HeLibraryCountVO heLibraryCountVO){
+    public List<ServiceSubtask> gethelibraryCountHyperlink(HeLibraryCountVO heLibraryCountVO) {
         String hyperLinkInfoType = heLibraryCountVO.getHyperLinkInfoType();
-        if(StringUtils.isNotEmpty(hyperLinkInfoType)){
+        if (StringUtils.isNotEmpty(hyperLinkInfoType)) {
             heLibraryCountVO.setSendstate(null);
             heLibraryCountVO.setIsFinished(null);
             switch (hyperLinkInfoType) {
@@ -4789,19 +4852,19 @@
         }
     }
 
-    public String scanGenerateSubtask(ServiceTask serviceTaskVo){
+    public String scanGenerateSubtask(ServiceTask serviceTaskVo) {
         String content = "";
         String ip = localIP;
         ServiceTask serviceTask = new ServiceTask();
         serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceTaskVo.getTaskid());
-        if(ObjectUtils.isNotEmpty(serviceTask)){
+        if (ObjectUtils.isNotEmpty(serviceTask)) {
             try {
                 ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
-                if(ObjectUtils.isNotEmpty(serviceTaskVo.getDeptcode())){
+                if (ObjectUtils.isNotEmpty(serviceTaskVo.getDeptcode())) {
                     serviceTaskdept.setDeptType("1");
                     serviceTaskdept.setDeptCode(serviceTask.getDeptcode());
                 }
-                if(ObjectUtils.isNotEmpty(serviceTaskVo.getLeavehospitaldistrictcode())){
+                if (ObjectUtils.isNotEmpty(serviceTaskVo.getLeavehospitaldistrictcode())) {
                     serviceTaskdept.setDeptType("2");
                     serviceTaskdept.setDeptCode(serviceTaskVo.getLeavehospitaldistrictcode());
                 }
@@ -4818,9 +4881,7 @@
                     ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patArchive);
                     int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                     //鏍规嵁鐢熸垚澶栭摼
-                    if (ObjectUtils.isNotEmpty(serviceSubtask.getTaskid()) &&
-                            ObjectUtils.isNotEmpty(serviceSubtask.getPatid())
-                            && ObjectUtils.isNotEmpty(serviceSubtask.getId())) {
+                    if (ObjectUtils.isNotEmpty(serviceSubtask.getTaskid()) && ObjectUtils.isNotEmpty(serviceSubtask.getPatid()) && ObjectUtils.isNotEmpty(serviceSubtask.getId())) {
                         RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
                         String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);
                         String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);

--
Gitblit v1.9.3