From dedacd79c93f8ef95e0cb986f5e7fbd27ddbd907 Mon Sep 17 00:00:00 2001
From: zhaowenxuan <chacca165@163.com>
Date: 星期四, 03 七月 2025 09:12:49 +0800
Subject: [PATCH] 2025-07-03

---
 ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/LtkjHysqdMapper.java                          |   12 +
 ltkj-hosp/src/main/java/com/ltkj/hosp/service/LtkjHysqdService.java                        |    8 +
 ltkj-admin/src/main/java/com/ltkj/web/websocket/interceptor/TokenHandshakeInterceptor.java |   59 ++++++++
 ltkj-admin/src/main/java/com/ltkj/web/websocket/ClientSessionInfo.java                     |    2 
 ltkj-admin/src/main/java/com/ltkj/web/controller/lis/LisApiMethod.java                     |   15 ++
 ltkj-hosp/src/main/resources/mapper/hosp/LtkjHysqdMapper.xml                               |   13 +
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java           |   17 ++
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java             |  218 +++++++++++++++++++++----------
 ltkj-admin/src/main/java/com/ltkj/web/websocket/MyWebSocketConfig.java                     |    5 
 ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java                      |   33 +++-
 ltkj-framework/src/main/java/com/ltkj/framework/web/service/TokenService.java              |    9 +
 ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/LtkjHysqdServiceImpl.java               |   23 +++
 12 files changed, 323 insertions(+), 91 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/lis/LisApiMethod.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/lis/LisApiMethod.java
index 515599d..58b31bf 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/lis/LisApiMethod.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/lis/LisApiMethod.java
@@ -263,12 +263,14 @@
             lisSaveSqdxxDto.setYbbm(s.substring(s.indexOf("_") + 1));
 
 
+            String hisBms ="";
             for (TjProject tjProject : entry.getValue()) {
                 LisSaveSqdxxJyxmlistDto dto = new LisSaveSqdxxJyxmlistDto();
                 dto.setXh(String.valueOf(xh.getAndIncrement() + 1));
                 dto.setJyxm(tjProject.getLisXmbm());
                 dto.setXmmc(tjProject.getProName());
                 dtos.add(dto);
+                hisBms+=tjProject.getHisXmbm()+",";
             }
 
 
@@ -283,6 +285,19 @@
                 log.error("璇锋眰澶辫触 ->{}", lisSaveSqdxxDto);
                 flag = false;
                 break;
+            }else {
+                LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
+                tree.setCardId(tjOrder.getCardId());
+                tree.setPationid(tjCustomer.getPationId());
+                tree.setSqdh("jk"+jyxh);
+                tree.setFyhj(String.valueOf(allPrice));
+                tree.setHisXmdm(hisBms.substring(0,hisBms.length()-1));
+                tree.setType("妫�楠�");
+                tree.setService("lis");
+                tree.setTjPrice(String.valueOf(allPrice));
+                tree.setCreateTime(DateUtil.date());
+                tree.setXmfl(lisSaveSqdxxDto.getYbbm());
+                ltkjJianchajianyanTreeService.save(tree);
             }
         }
         return flag;
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java
index 4acc06a..637fa40 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java
@@ -1,10 +1,13 @@
 package com.ltkj.web.controller.system;
 
+import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ltkj.common.core.domain.entity.SysUser;
 import com.ltkj.common.core.domain.model.LoginUser;
@@ -12,6 +15,8 @@
 import com.ltkj.hosp.domain.SysNoticeUser;
 import com.ltkj.hosp.service.SysNoticeUserService;
 import com.ltkj.system.service.ISysUserService;
+import com.ltkj.web.websocket.ClientSessionInfo;
+import com.ltkj.web.websocket.WebSockerManager;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
@@ -31,6 +36,8 @@
 import com.ltkj.common.enums.BusinessType;
 import com.ltkj.system.domain.SysNotice;
 import com.ltkj.system.service.ISysNoticeService;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
 
 /**
  * 鍏憡 淇℃伅鎿嶄綔澶勭悊
@@ -46,6 +53,8 @@
     private SysNoticeUserService sysNoticeUserService;
     @Autowired
     private ISysUserService userService;
+    @Autowired
+    private WebSockerManager webSockerManager;
 
     /**
      * 鑾峰彇閫氱煡鍏憡鍒楄〃
@@ -113,6 +122,14 @@
                 sysNoticeUserService.save(user);
             }
         }else return AjaxResult.error();
+        for (Map.Entry<String, ClientSessionInfo> entry : webSockerManager.userSessions.entrySet()) {
+            if (!notice.getUserIds().contains(entry.getKey())) continue;
+            WebSocketSession session = entry.getValue().getSession();
+            try {
+                session.sendMessage(new TextMessage(JSONUtil.toJsonStr(notice)));
+            } catch (IOException ignored) {
+            }
+        }
         return AjaxResult.success();
     }
 
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
index 2230d62..314cf36 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -465,15 +465,22 @@
                         //鍚屾妫�楠�
                         if (null != baoGaoDans && baoGaoDans.size() > 0) {
                             Date dates = new Date();
-                            Map<String, Object> map = new HashMap<>();
-                            map.put("his_registration_id", order.getCardId());
-                            map.put("ksbm", "");
-                            map.put("pationid", "");
-                            map.put("ksrq", DateUtil.format(DateUtil.beginOfDay(order.getCreateTime()), "yyyy-MM-dd HH:mm:ss"));
-                            map.put("jsrq", DateUtil.format(DateUtil.endOfDay(dates), "yyyy-MM-dd HH:mm:ss"));
-                            map.put("pagecount", 10);
-                            map.put("page", 1);
-                            AjaxResult result = controller.Getlabreportinfo(map);
+                            String jytbfs = configService.selectConfigByKey("jytbfs");
+                            AjaxResult result;
+                            if (StrUtil.isBlank(jytbfs) || jytbfs.equalsIgnoreCase("Y")){
+                                Map<String, Object> map = new HashMap<>();
+                                map.put("his_registration_id", order.getCardId());
+                                map.put("ksbm", "");
+                                map.put("pationid", "");
+                                map.put("ksrq", DateUtil.format(DateUtil.beginOfDay(order.getCreateTime()), "yyyy-MM-dd HH:mm:ss"));
+                                map.put("jsrq", DateUtil.format(DateUtil.endOfDay(dates), "yyyy-MM-dd HH:mm:ss"));
+                                map.put("pagecount", 10);
+                                map.put("page", 1);
+                                result = controller.Getlabreportinfo(map);
+                            }else{
+                                result = ltkjHysqdService.getAsyncDataByPro("浣撴涓績", order.getCardId(), "''", 100, 1);
+                            }
+
                             String result1 = getAjaxResult(result);
                             JSONObject object = getJSONObject(result1);
                             String code = object.getStr("ResultCode");
@@ -505,68 +512,71 @@
                                 hysqd.setShrxm(jsonObject.getStr("JYYSQM"));
                                 hysqd.setJybgjg(jsonObject.getStr("JYBGJG"));
                                 if (ltkjHysqdService.save(hysqd)) {
-                                    Map<String, Object> hashMap = new HashMap<>();
-                                    hashMap.put("jybgid", hysqd.getTmh());
-                                    AjaxResult bgdres = controller.Getlabdetailinfo(hashMap);
-                                    String result2 = getAjaxResult(bgdres);
-                                    JSONObject object1 = getJSONObject(result2);
-                                    String code1 = object1.getStr("ResultCode");
-                                    if (null != code1 && code1.equals("0")) {
-                                        JSONArray datas = object1.getJSONArray("ResultData");
-                                        for (Object o : datas) {
-                                            JSONObject js = (JSONObject) o;
+                                    if(StrUtil.isBlank(jytbfs) || jytbfs.equalsIgnoreCase("Y")){
+                                        Map<String, Object> hashMap = new HashMap<>();
+                                        hashMap.put("jybgid", hysqd.getTmh());
+                                        AjaxResult bgdres = controller.Getlabdetailinfo(hashMap);
+                                        String result2 = getAjaxResult(bgdres);
+                                        JSONObject object1 = getJSONObject(result2);
+                                        String code1 = object1.getStr("ResultCode");
+                                        if (null != code1 && code1.equals("0")) {
+                                            JSONArray datas = object1.getJSONArray("ResultData");
+                                            for (Object o : datas) {
+                                                JSONObject js = (JSONObject) o;
 //                            ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(jsonObject.getStr("JYBGID"));
-                                            LtkjHybgd bgd = new LtkjHybgd();
-                                            bgd.setTmh(hysqd.getTmh());
-                                            bgd.setJcxmid(js.getStr("JCZBDM"));
-                                            bgd.setJcxm(js.getStr("JCZBMC"));
-                                            bgd.setTdh(js.getStr(""));
-                                            bgd.setJyjg(js.getStr("JCZBJG"));
-                                            bgd.setJgdw(js.getStr("JLDW"));
-                                            bgd.setFwzdz(js.getStr(""));
-                                            bgd.setFwzgz(js.getStr(""));
-                                            bgd.setFwz(js.getStr("CKZFW"));
-                                            bgd.setJysj(js.getStr("BGRQ"));
-                                            bgd.setJyys(js.getStr("JCRBH"));
-                                            bgd.setShsj(js.getStr("BGRQ"));
-                                            bgd.setShsj(js.getStr("BGRQ"));
-                                            bgd.setShys(js.getStr("SHRBH"));
-                                            bgd.setShysmc(js.getStr("SHRXM"));
-                                            bgd.setYcbz(js.getStr("YCTS"));
+                                                LtkjHybgd bgd = new LtkjHybgd();
+                                                bgd.setTmh(hysqd.getTmh());
+                                                bgd.setJcxmid(js.getStr("JCZBDM"));
+                                                bgd.setJcxm(js.getStr("JCZBMC"));
+                                                bgd.setTdh(js.getStr(""));
+                                                bgd.setJyjg(js.getStr("JCZBJG"));
+                                                bgd.setJgdw(js.getStr("JLDW"));
+                                                bgd.setFwzdz(js.getStr(""));
+                                                bgd.setFwzgz(js.getStr(""));
+                                                bgd.setFwz(js.getStr("CKZFW"));
+                                                bgd.setJysj(js.getStr("BGRQ"));
+                                                bgd.setJyys(js.getStr("JCRBH"));
+                                                bgd.setShsj(js.getStr("BGRQ"));
+                                                bgd.setShsj(js.getStr("BGRQ"));
+                                                bgd.setShys(js.getStr("SHRBH"));
+                                                bgd.setShysmc(js.getStr("SHRXM"));
+                                                bgd.setYcbz(js.getStr("YCTS"));
 //                            bgd.setTpurl(js.getStr(""));
-                                            ltkjHybgdService.save(bgd);
+                                                ltkjHybgdService.save(bgd);
+                                            }
                                         }
-                                    }
 
-                                    Map<String, Object> fbhashMap = new HashMap<>();
-                                    fbhashMap.put("jybgid", hysqd.getTmh());
-                                    AjaxResult fbres = controller.Getlabgermrepinfo(fbhashMap);
-                                    String ajaxResult = getAjaxResult(fbres);
-                                    JSONObject fbobject = getJSONObject(ajaxResult);
-                                    String fbcode = fbobject.getStr("ResultCode");
-                                    if (null != fbcode && fbcode.equals("0")) {
-                                        JSONArray datas = fbobject.getJSONArray("ResultData");
-                                        for (Object o : datas) {
-                                            JSONObject js = (JSONObject) o;
-                                            LtkjHybgd bgd = new LtkjHybgd();
-                                            bgd.setTmh(hysqd.getTmh());
-                                            bgd.setJcxmid(hysqd.getXmid());
-                                            bgd.setJcxm(hysqd.getXmmc());
-                                            bgd.setTdh(js.getStr(""));
-                                            bgd.setJyjg(js.getStr("JCJG"));
-                                            bgd.setJgdw("/");
-                                            bgd.setFwzdz("/");
-                                            bgd.setFwzgz("/");
-                                            bgd.setFwz("/");
-                                            bgd.setJysj(js.getStr("BGRQ"));
-                                            bgd.setJyys(hysqd.getSqrxm());
-                                            bgd.setShsj(js.getStr("BGRQ"));
-                                            bgd.setShys(hysqd.getShrdm());
-                                            bgd.setShysmc(hysqd.getShrxm());
-                                            ltkjHybgdService.save(bgd);
+                                        Map<String, Object> fbhashMap = new HashMap<>();
+                                        fbhashMap.put("jybgid", hysqd.getTmh());
+                                        AjaxResult fbres = controller.Getlabgermrepinfo(fbhashMap);
+                                        String ajaxResult = getAjaxResult(fbres);
+                                        JSONObject fbobject = getJSONObject(ajaxResult);
+                                        String fbcode = fbobject.getStr("ResultCode");
+                                        if (null != fbcode && fbcode.equals("0")) {
+                                            JSONArray datas = fbobject.getJSONArray("ResultData");
+                                            for (Object o : datas) {
+                                                JSONObject js = (JSONObject) o;
+                                                LtkjHybgd bgd = new LtkjHybgd();
+                                                bgd.setTmh(hysqd.getTmh());
+                                                bgd.setJcxmid(hysqd.getXmid());
+                                                bgd.setJcxm(hysqd.getXmmc());
+                                                bgd.setTdh(js.getStr(""));
+                                                bgd.setJyjg(js.getStr("JCJG"));
+                                                bgd.setJgdw("/");
+                                                bgd.setFwzdz("/");
+                                                bgd.setFwzgz("/");
+                                                bgd.setFwz("/");
+                                                bgd.setJysj(js.getStr("BGRQ"));
+                                                bgd.setJyys(hysqd.getSqrxm());
+                                                bgd.setShsj(js.getStr("BGRQ"));
+                                                bgd.setShys(hysqd.getShrdm());
+                                                bgd.setShysmc(hysqd.getShrxm());
+                                                ltkjHybgdService.save(bgd);
+                                            }
                                         }
+                                    }else {
+                                        saveHybgdPro(hysqd);
                                     }
-
                                 }
                             }
                             //鍚屾鍖栭獙椤圭洰
@@ -779,7 +789,7 @@
                                 map.put("page", 1);
                                 result = controller.Getlabreportinfo(map);
                             }else {
-                                result = ltkjHysqdService.getAsyncDataByPro("浣撴涓績", order.getCardId(), "''", 100, 1, "'1'");
+                                result = ltkjHysqdService.getAsyncDataByPro("浣撴涓績", order.getCardId(), "''", 100, 1);
                             }
                             log.info("妫�楠岄」鐩煡璇㈣繑鍥炲��:      " + JSONUtil.toJsonStr(result));
 
@@ -816,10 +826,18 @@
                                     List<LtkjHysqd> list = ltkjHysqdService.list(queryWrapper);
                                     if (list.isEmpty())
                                         isInsertHysqd = true;
-                                    if (isInsertHysqd) {
-                                        saveHysqd(hysqd);
-                                    } else {
-                                        saveHybgd(hysqd);
+                                    if(StrUtil.isBlank(jytbfs) || jytbfs.equalsIgnoreCase("Y")){
+                                        if (isInsertHysqd) {
+                                            saveHysqd(hysqd);
+                                        } else {
+                                            saveHybgd(hysqd);
+                                        }
+                                    }else {
+                                        if (isInsertHysqd) {
+                                            saveHysqdPro(hysqd);
+                                        } else {
+                                            saveHybgdPro(hysqd);
+                                        }
                                     }
                                 }
                             } else {
@@ -946,6 +964,12 @@
         }
     }
 
+    private void saveHysqdPro(LtkjHysqd hysqd) {
+        if (ltkjHysqdService.save(hysqd)) {
+            saveHybgdPro(hysqd);
+        }
+    }
+
     private void saveHybgd(LtkjHysqd hysqd) {
         Map<String, Object> hashMap = new HashMap<>();
         hashMap.put("jybgid", hysqd.getTmh());
@@ -1017,6 +1041,60 @@
         }
     }
 
+    private void saveHybgdPro(LtkjHysqd hysqd) {
+        List<Map<String, Object>> mapList = ltkjHysqdService.getAsyncJybgdByPro(hysqd.getTmh());
+        log.info("usp_his_getlabdetailinfolttj 杩斿洖->\n{}",JSONUtil.toJsonStr(mapList));
+        for (Map<String, Object> map : mapList) {
+            JSONObject js = JSONUtil.parseObj(map);
+            LtkjHybgd bgd = new LtkjHybgd();
+            bgd.setTmh(hysqd.getTmh());
+            bgd.setJcxmid(js.getStr("JCZBDM"));
+            bgd.setJcxm(js.getStr("JCZBMC"));
+            bgd.setTdh(js.getStr(""));
+            bgd.setJyjg(js.getStr("JCZBJG"));
+            bgd.setJgdw(js.getStr("JLDW"));
+            bgd.setFwzdz(js.getStr(""));
+            bgd.setFwzgz(js.getStr(""));
+            bgd.setFwz(js.getStr("CKZFW"));
+            bgd.setJysj(js.getStr("BGRQ"));
+            bgd.setJyys(js.getStr("JCRBH"));
+            bgd.setShsj(js.getStr("BGRQ"));
+            bgd.setShsj(js.getStr("BGRQ"));
+            bgd.setShys(js.getStr("SHRBH"));
+            bgd.setShysmc(js.getStr("SHRXM"));
+            bgd.setYcbz(js.getStr("YCTS"));
+            bgd.setCreateTime(new Date());
+            QueryWrapper<LtkjHybgd> queryWrapper = new QueryWrapper<>(bgd);
+            List<LtkjHybgd> list = ltkjHybgdService.list(queryWrapper);
+            if (list.isEmpty())
+                ltkjHybgdService.save(bgd);
+        }
+        List<Map<String, Object>> mapList1 = ltkjHysqdService.getAsyncJybgdWswByPro(hysqd.getTmh());
+        log.info("usp_his_getlabgermrepinfolttj 杩斿洖->\n{}",JSONUtil.toJsonStr(mapList1));
+        for (Map<String, Object> map : mapList1) {
+            JSONObject js = JSONUtil.parseObj(map);
+            LtkjHybgd bgd = new LtkjHybgd();
+            bgd.setTmh(hysqd.getTmh());
+            bgd.setJcxmid(hysqd.getXmid());
+            bgd.setJcxm(hysqd.getXmmc());
+            bgd.setTdh(js.getStr(""));
+            bgd.setJyjg(js.getStr("JCJG"));
+            bgd.setJgdw("/");
+            bgd.setFwzdz("/");
+            bgd.setFwzgz("/");
+            bgd.setFwz("/");
+            bgd.setJysj(js.getStr("BGRQ"));
+            bgd.setJyys(hysqd.getSqrxm());
+            bgd.setShsj(js.getStr("BGRQ"));
+            bgd.setShys(hysqd.getShrdm());
+            bgd.setShysmc(hysqd.getShrxm());
+            QueryWrapper<LtkjHybgd> queryWrapper = new QueryWrapper<>(bgd);
+            List<LtkjHybgd> list = ltkjHybgdService.list(queryWrapper);
+            if (list.isEmpty())
+                ltkjHybgdService.save(bgd);
+        }
+    }
+
     //灏嗘柟娉曡繑鍥炲�艰В鏋愭垚json鏍煎紡
     public JSONObject getJSONObject(String builder) {
         String Response = JSONUtil.parseObj(builder).getStr("Response");
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/websocket/ClientSessionInfo.java b/ltkj-admin/src/main/java/com/ltkj/web/websocket/ClientSessionInfo.java
index 248734b..0500ba9 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/websocket/ClientSessionInfo.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/websocket/ClientSessionInfo.java
@@ -2,10 +2,12 @@
 
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 import org.springframework.web.socket.WebSocketSession;
 
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class ClientSessionInfo {
     private WebSocketSession session;
     private String code;
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/websocket/MyWebSocketConfig.java b/ltkj-admin/src/main/java/com/ltkj/web/websocket/MyWebSocketConfig.java
index 1532224..e7bc060 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/websocket/MyWebSocketConfig.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/websocket/MyWebSocketConfig.java
@@ -1,5 +1,6 @@
 package com.ltkj.web.websocket;
 
+import com.ltkj.web.websocket.interceptor.TokenHandshakeInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.socket.config.annotation.EnableWebSocket;
@@ -16,10 +17,12 @@
 public class MyWebSocketConfig implements WebSocketConfigurer {
     @Autowired
     private WebSockerManager webSockerManager;
+    @Autowired
+    private TokenHandshakeInterceptor tokenHandshakeInterceptor;
     @Override
     public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
         registry.addHandler(webSockerManager, "/ws")
-//                .addInterceptors(tokenHandshakeInterceptor)
+                .addInterceptors(tokenHandshakeInterceptor)
                 .setAllowedOrigins("*"); // 鍏佽璺ㄥ煙
     }
 }
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java b/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java
index e1efb33..5bdaba0 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java
@@ -1,6 +1,7 @@
 package com.ltkj.web.websocket;
 
 import cn.hutool.json.JSONUtil;
+import com.ltkj.common.core.domain.model.LoginUser;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.web.socket.CloseStatus;
@@ -9,7 +10,10 @@
 import org.springframework.web.socket.handler.TextWebSocketHandler;
 import redis.clients.jedis.util.SafeEncoder;
 
+import java.util.ArrayList;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
 
 /**
  * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
@@ -20,20 +24,19 @@
 @Component
 public class WebSockerManager extends TextWebSocketHandler {
 
-    private static final ConcurrentHashMap<Long, ClientSessionInfo> userSessions = new ConcurrentHashMap<>();
+    public final ConcurrentHashMap<String, ClientSessionInfo> userSessions = new ConcurrentHashMap<>();
     private static final ConcurrentHashMap<String, WebSocketClientInfo> sessions = new ConcurrentHashMap<>();
 
     private WebSocketClientInfo getUser(WebSocketSession session) {
-//        long uid = Long.parseLong(session.getAttributes().get("uid").toString());
-//        String hospId = session.getAttributes().get("hospId").toString();
-//        WebSocketClientInfo info = new WebSocketClientInfo();
-//        info.setUid(uid);
-//        info.setHospId(hospId);
-//        return info;
-        WebSocketClientInfo clientInfo = new WebSocketClientInfo();
-        clientInfo.setUid(123L);
-        clientInfo.setHospId("hosp");
-        return clientInfo;
+        LoginUser loginUser = (LoginUser) session.getAttributes().get("user");
+        WebSocketClientInfo info = new WebSocketClientInfo();
+        info.setUid(Long.parseLong(loginUser.getUserId()));
+        info.setHospId(loginUser.getHospName());
+        return info;
+//        WebSocketClientInfo clientInfo = new WebSocketClientInfo();
+//        clientInfo.setUid(123L);
+//        clientInfo.setHospId("hosp");
+//        return clientInfo;
     }
 
     @Override
@@ -41,8 +44,12 @@
         WebSocketClientInfo clientInfo = getUser(session);
 //        userSessions.put(clientInfo.getUid(), new ClientSessionInfo(session, clientInfo.getHospId()));
         sessions.put(session.getId(),clientInfo);
-        log.info(JSONUtil.toJsonStr(sessions));
+        ClientSessionInfo sessionInfo = new ClientSessionInfo();
+        sessionInfo.setSession(session);
+        sessionInfo.setCode(clientInfo.getHospId());
+        userSessions.put(String.valueOf(clientInfo.getUid()), sessionInfo);
         session.sendMessage(new TextMessage("杩炴帴鎴愬姛"));
+        log.info("[WebSocket] 鍦ㄧ嚎鍒楄〃UserIds\n{}",JSONUtil.toJsonStr(new ArrayList<>(userSessions.keySet())));
     }
 
     @Override
@@ -62,5 +69,7 @@
     @Override
     public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
         log.info("[WebSocket] 杩炴帴鍏抽棴: " + status);
+        WebSocketClientInfo clientInfo = sessions.get(session.getId());
+        userSessions.remove(String.valueOf(clientInfo.getUid()));
     }
 }
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/websocket/interceptor/TokenHandshakeInterceptor.java b/ltkj-admin/src/main/java/com/ltkj/web/websocket/interceptor/TokenHandshakeInterceptor.java
new file mode 100644
index 0000000..a6748ca
--- /dev/null
+++ b/ltkj-admin/src/main/java/com/ltkj/web/websocket/interceptor/TokenHandshakeInterceptor.java
@@ -0,0 +1,59 @@
+package com.ltkj.web.websocket.interceptor;
+
+import com.ltkj.common.core.domain.model.LoginUser;
+import com.ltkj.framework.web.service.TokenService;
+import io.jsonwebtoken.Claims;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.stereotype.Component;
+import org.springframework.web.socket.WebSocketHandler;
+import org.springframework.web.socket.server.HandshakeInterceptor;
+
+import java.net.URI;
+import java.util.Map;
+
+@Component
+public class TokenHandshakeInterceptor implements HandshakeInterceptor {
+    @Autowired
+    private TokenService tokenService;
+
+    @Override
+    public boolean beforeHandshake(ServerHttpRequest request,
+                                   ServerHttpResponse response,
+                                   WebSocketHandler wsHandler,
+                                   Map<String, Object> attributes) {
+        URI uri = request.getURI();
+        String query = uri.getQuery();
+        String token = null;
+        if (query != null && query.startsWith("token=")) {
+            token = query.substring("token=".length());
+        }
+        if (token == null) {
+            System.out.println("[WebSocket] 浠ょ墝鏃犳晥鎷掔粷");
+            return false;
+        }
+        LoginUser validToken = isValidToken(token);
+        if (validToken == null) {
+            System.out.println("[WebSocket] 浠ょ墝鏃犳晥鎷掔粷");
+            return false;
+        }
+        attributes.put("user", validToken);
+        return true;
+    }
+
+    @Override
+    public void afterHandshake(ServerHttpRequest request,
+                               ServerHttpResponse response,
+                               WebSocketHandler wsHandler,
+                               Exception exception) {
+    }
+
+    private LoginUser isValidToken(String token) {
+        String tokenStr = token.replace("Bearer", "").trim();
+        Claims claims = tokenService.parseToken(tokenStr);
+        return tokenService.getLoginUser(claims);
+    }
+
+
+}
diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/web/service/TokenService.java b/ltkj-framework/src/main/java/com/ltkj/framework/web/service/TokenService.java
index 3c021cd..f72eaee 100644
--- a/ltkj-framework/src/main/java/com/ltkj/framework/web/service/TokenService.java
+++ b/ltkj-framework/src/main/java/com/ltkj/framework/web/service/TokenService.java
@@ -73,6 +73,13 @@
         return null;
     }
 
+    public LoginUser getLoginUser(Claims claims){
+        // 瑙f瀽瀵瑰簲鐨勬潈闄愪互鍙婄敤鎴蜂俊鎭�
+        String uuid = (String) claims.get(Constants.LOGIN_USER_KEY);
+        String userKey = getTokenKey(uuid);
+        return redisCache.getCacheObject(userKey);
+    }
+
     /**
      * 璁剧疆鐢ㄦ埛韬唤淇℃伅
      */
@@ -186,7 +193,7 @@
      * @param token 浠ょ墝
      * @return 鏁版嵁澹版槑
      */
-    private Claims parseToken(String token) {
+    public Claims parseToken(String token) {
         return Jwts.parser()
                 .setSigningKey(secret)
                 .parseClaimsJws(token)
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/LtkjHysqdMapper.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/LtkjHysqdMapper.java
index 296dc21..62e0c4d 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/LtkjHysqdMapper.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/LtkjHysqdMapper.java
@@ -111,6 +111,14 @@
                                                 @Param("str_in")String strIn,
                                                 @Param("brid")String brid,
                                                 @Param("pagecount")int pagecount,
-                                                @Param("page")int page,
-                                                @Param("status")String status);
+                                                @Param("page")int page);
+
+
+    @DataSource(value = DataSourceType.SLAVE_HIS)
+    @Qualifier(value = "slaveHisDataSource")
+    List<Map<String ,Object>> getAsyncHybgdDataByPro(@Param("str_in")String strIn);
+
+    @DataSource(value = DataSourceType.SLAVE_HIS)
+    @Qualifier(value = "slaveHisDataSource")
+    List<Map<String ,Object>> getAsyncHybgdWswDataByPro(@Param("str_in")String strIn);
 }
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/LtkjHysqdService.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/LtkjHysqdService.java
index 33775e1..84d8fe7 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/LtkjHysqdService.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/LtkjHysqdService.java
@@ -1,5 +1,6 @@
 package com.ltkj.hosp.service;
 
+import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ltkj.common.core.domain.AjaxResult;
 import com.ltkj.hosp.domain.TjCustomer;
@@ -9,6 +10,7 @@
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
@@ -32,5 +34,9 @@
 
     void deletedByTjhAndXmId(String tjh, String xmid);
 
-    AjaxResult getAsyncDataByPro(String ksmc,String strIn,String brid,int pagecount,int page,String status);
+    AjaxResult getAsyncDataByPro(String ksmc,String strIn,String brid,int pagecount,int page);
+
+    List<Map<String ,Object>> getAsyncJybgdByPro(String strIn);
+
+    List<Map<String ,Object>> getAsyncJybgdWswByPro(String strIn);
 }
diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/LtkjHysqdServiceImpl.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/LtkjHysqdServiceImpl.java
index 6b65031..6e3da02 100644
--- a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/LtkjHysqdServiceImpl.java
+++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/LtkjHysqdServiceImpl.java
@@ -1,5 +1,7 @@
 package com.ltkj.hosp.service.impl;
 
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ltkj.common.core.domain.AjaxResult;
 import com.ltkj.hosp.domain.TjCustomer;
@@ -16,6 +18,7 @@
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 鐥呯+鎰忚Service涓氬姟灞傚鐞�
@@ -65,7 +68,23 @@
     }
 
     @Override
-    public AjaxResult getAsyncDataByPro(String ksmc,String strIn,String brid,int pagecount,int page,String status) {
-        return AjaxResult.success().put("ResultData",mapper.getAsyncDataByPro(ksmc,strIn,brid,pagecount,page,status)).put("code",0);
+    public AjaxResult getAsyncDataByPro(String ksmc,String strIn,String brid,int pagecount,int page) {
+        List<Map<String, Object>> maps = mapper.getAsyncDataByPro(ksmc, strIn, brid, pagecount, page);
+        JSONObject entries = JSONUtil.createObj();
+        entries.putOpt("ResultCode","0");
+        entries.putOpt("ResultData",maps);
+        JSONObject object = JSONUtil.createObj();
+        object.putOpt("Response",entries);
+        return AjaxResult.success().put("data",object).put("code",0);
+    }
+
+    @Override
+    public List<Map<String ,Object>> getAsyncJybgdByPro(String strIn) {
+        return mapper.getAsyncHybgdDataByPro(strIn);
+    }
+
+    @Override
+    public List<Map<String, Object>> getAsyncJybgdWswByPro(String strIn) {
+        return mapper.getAsyncHybgdWswDataByPro(strIn);
     }
 }
diff --git a/ltkj-hosp/src/main/resources/mapper/hosp/LtkjHysqdMapper.xml b/ltkj-hosp/src/main/resources/mapper/hosp/LtkjHysqdMapper.xml
index e2fd732..c8eb61e 100644
--- a/ltkj-hosp/src/main/resources/mapper/hosp/LtkjHysqdMapper.xml
+++ b/ltkj-hosp/src/main/resources/mapper/hosp/LtkjHysqdMapper.xml
@@ -10,8 +10,17 @@
         ${brid},
         ${str_in},
         ${pagecount},
-        ${page},
-        ${status}
+        ${page}
+    </select>
+
+    <select id="getAsyncHybgdDataByPro" resultType="java.util.Map">
+        exec usp_his_getlabdetailinfolttj
+        ${str_in}
+    </select>
+
+    <select id="getAsyncHybgdWswDataByPro" resultType="java.util.Map">
+        exec usp_his_getlabgermrepinfolttj
+        ${str_in}
     </select>
 
 </mapper>

--
Gitblit v1.8.0