瀏覽代碼

停止医嘱时发送消息,以及优化消息查询

xiaochan 5 月之前
父節點
當前提交
c55f67c73e

+ 22 - 14
src/main/java/thyyxxk/webserver/dao/his/socketmessage/SocketMessageDao.java

@@ -39,19 +39,27 @@ public interface SocketMessageDao {
     @Select("select count(1) from t_socket_message where sender='00000'")
     int selectSystemMessageCount();
 
-    @Select("select a.sender,\n" +
-            "       unreadCount=(select count(1)\n" +
-            "                    from t_socket_message_consumer t\n" +
-            "                    where t.receiver = #{receiver}\n" +
-            "                      and t.sender = a.sender\n" +
-            "                      and t.status = 0),\n" +
-            "       sender_name = (select\n" +
-            "                          (select rtrim(name) from zd_unit_code where dept_code = zd_unit_code.code) + '-' + rtrim(name)\n" +
-            "                      from a_employee_mi\n" +
-            "                      where code = a.sender)\n" +
-            "from t_socket_message_consumer a\n" +
-            "where a.receiver = #{receiver}\n" +
-            "group by a.sender")
+    @Select("WITH UnreadCounts AS (\n" +
+            "    SELECT\n" +
+            "        sender,\n" +
+            "        COUNT(1) AS unreadCount\n" +
+            "    FROM\n" +
+            "        t_socket_message_consumer\n" +
+            "    WHERE\n" +
+            "        receiver = '${receiver}'\n" +
+            "      AND status = 0\n" +
+            "    GROUP BY\n" +
+            "        sender\n" +
+            ")\n" +
+            "SELECT\n" +
+            "    a.sender,\n" +
+            "    ISNULL(uc.unreadCount, 0) AS unreadCount,\n" +
+            "    (SELECT (SELECT rtrim(name) FROM zd_unit_code WHERE dept_code = zd_unit_code.code) + '-' + rtrim(name)\n" +
+            "     FROM a_employee_mi WHERE code = a.sender) AS sender_name\n" +
+            "FROM\n" +
+            "    (SELECT DISTINCT sender FROM t_socket_message_consumer WHERE receiver = '${receiver}') a\n" +
+            "        LEFT JOIN\n" +
+            "    UnreadCounts uc ON uc.sender = a.sender;")
     List<MessageIndex> selectMessageIndex(@Param("receiver") String receiver);
 
     @Select("select * from t_socket_message where sender='00000'")
@@ -73,7 +81,7 @@ public interface SocketMessageDao {
     int selectNeededMessagesTotal(@Param("sender") String sender, @Param("receiver") String receiver);
 
     @Select("select top ${pageSize} *\n" +
-            "from (select row_number() over (order by id,send_datetime desc ) row_index, a.*, t.status\n" +
+            "from (select row_number() over (order by send_datetime desc ) row_index, a.*, t.status\n" +
             "      from t_socket_message_consumer t\n" +
             "               left join t_socket_message a on (a.id = t.msg_id)\n" +
             "      where t.sender = #{sender}\n" +

+ 7 - 0
src/main/java/thyyxxk/webserver/service/PublicServer.java

@@ -47,6 +47,7 @@ import thyyxxk.webserver.service.externalhttp.WebSocketService;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.utils.*;
 
+import java.lang.reflect.Array;
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.util.*;
@@ -70,6 +71,7 @@ public class PublicServer {
     private final WebSocketService socketService;
     private final SqlSessionFactory sqlSessionFactory;
 
+
     public PublicServer(PublicDao dao, TransferInOfExpensesDao transferInOfExpensesDao, RedisLikeService redisLikeService, SettingsDao settingsDao, WebSocketService socketService, SqlSessionFactory sqlSessionFactory) {
         this.dao = dao;
         this.transferInOfExpensesDao = transferInOfExpensesDao;
@@ -654,6 +656,11 @@ public class PublicServer {
     }
 
 
+    public void faSongXiaoXi(XinZhenYiZhu huanZheXinXi, String content, String title, String userCode) {
+        List<String> huShiBianMa = dao.huoQuHuanZheBingFangDeHuShi(huanZheXinXi.getDeptCode());
+        sendDoctorNotification(huanZheXinXi, Collections.singletonList(content), title, userCode, huShiBianMa);
+    }
+
     /**
      * @param huanZheXinXi 患者信息
      * @param content      内容

+ 4 - 2
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/YiZhuLuRuServer.java

@@ -653,7 +653,10 @@ public class YiZhuLuRuServer {
         });
 
         if (map.isEmpty()) {
-            dao.setStopTime(param.getList(), TokenUtil.getInstance().getTokenUserId(), param.getInpatientNo(), param.getAdmissTimes());
+            String tokenUserId = TokenUtil.getInstance().getTokenUserId();
+            dao.setStopTime(param.getList(), tokenUserId, param.getInpatientNo(), param.getAdmissTimes());
+            XinZhenYiZhu patInfo = dao.queryPatientInfo(param.getInpatientNo(), param.getAdmissTimes());
+            publicServer.faSongXiaoXi(patInfo, StrUtil.format("停止【{}】条", param.getList().size()), "停止医嘱", tokenUserId);
             return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE);
         }
 
@@ -1522,5 +1525,4 @@ public class YiZhuLuRuServer {
     }
 
 
-
 }