zhaowenxuan
11 小时以前 dedacd79c93f8ef95e0cb986f5e7fbd27ddbd907
2025-07-03
11个文件已修改
1个文件已添加
414 ■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/controller/lis/LisApiMethod.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/websocket/ClientSessionInfo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/websocket/MyWebSocketConfig.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/websocket/interceptor/TokenHandshakeInterceptor.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-framework/src/main/java/com/ltkj/framework/web/service/TokenService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/LtkjHysqdMapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/LtkjHysqdService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/LtkjHysqdServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/resources/mapper/hosp/LtkjHysqdMapper.xml 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
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();
    }
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");
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;
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("*"); // 允许跨域
    }
}
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()));
    }
}
ltkj-admin/src/main/java/com/ltkj/web/websocket/interceptor/TokenHandshakeInterceptor.java
New file
@@ -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);
    }
}
ltkj-framework/src/main/java/com/ltkj/framework/web/service/TokenService.java
@@ -73,6 +73,13 @@
        return null;
    }
    public LoginUser getLoginUser(Claims claims){
        // 解析对应的权限以及用户信息
        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)
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);
}
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);
}
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);
    }
}
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>