Przeglądaj źródła

打印纸张调整
发药socket优化

WANGJIALIANG 4 lat temu
rodzic
commit
4347e29cbf

+ 1 - 0
src/main/java/cn/hnthyy/thmz/controller/mz/MzPharmacyController.java

@@ -548,6 +548,7 @@ public class MzPharmacyController {
             MzVisitTable visit = mzVisitTableService.queryByPatientIdAndTimes(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes());
             printMap.put("patientId", mzChargeDetail.getPatientId());
             printMap.put("ybCardNo", mzPatientMi.getYbCardNo());
+            printMap.put("icCardNo", mzPatientMi.getIcCardNo());
             printMap.put("name", mzPatientMi.getName());
             printMap.put("sex", mzPatientMi.getSex());
             printMap.put("age", mzPatientMi.getAge());

+ 1 - 1
src/main/java/cn/hnthyy/thmz/mapper/his/YpZdDictMapper.java

@@ -13,7 +13,7 @@ public interface YpZdDictMapper {
      * @param code
      * @return
      */
-    @Select("select code,name,specification,mz_restrict,bill_item_mz,pack_retprice,country_flag,supply_type,pack_unit,weight,volum from yp_zd_dict where code = #{code,jdbcType=VARCHAR} and serial = #{serial}")
+    @Select("select code,name,specification,mz_restrict,bill_item_mz,pack_retprice,country_flag,supply_type,pack_unit,weight,volum,manu_code from yp_zd_dict where code = #{code,jdbcType=VARCHAR} and serial = #{serial}")
     YpZdDict selectYpZdDictByCodeAndSerial(@Param("code") String code,@Param("serial") String serial);
 
     /**

+ 1 - 1
src/main/java/cn/hnthyy/thmz/mapper/his/mz/MzPharmacyMapper.java

@@ -712,7 +712,7 @@ public interface MzPharmacyMapper {
             "a.group_no ," +
             "#{confirmTime}," +
             "b.name ," +
-            "b.specification ," +
+            "left(b.specification,16)specification ," +
             "#{confirmId}," +
             "#{confirmName}," +
             "#{doctorId}," +

+ 1 - 9
src/main/java/cn/hnthyy/thmz/mapper/his/mz/MzYpFydlMapper.java

@@ -56,22 +56,14 @@ public interface MzYpFydlMapper {
     int updateSeralNoForByjz(MzYpFydl mzYpFydl);
 
     /**
-     * 查询未发药药品
+     * 查询未发药病人
      * @param groupNo 药房分组 71 西药房 72 住院药房 81 中药房 82 颗粒剂药房
      * @param beginDate 开始时间
      * @param endDate 结束时间
      * @return
      */
     @Select("  SELECT DISTINCT rtrim(mz_charge_detail.patient_id)patient_id," +
-            "         rtrim(mz_charge_detail.times)times," +
-            "         rtrim(mz_charge_detail.receipt_no)receipt_no," +
-            "         rtrim(mz_charge_detail.order_no)order_no," +
-            "         rtrim(mz_charge_detail.group_no)group_no," +
-            "         rtrim(mz_charge_detail.real_no)real_no," +
             "         rtrim(mz_charge_detail.name)name," +
-            "         rtrim(mz_charge_detail.price_time)price_time,"+
-            "         rtrim(doctor_flag)doctor_flag," +
-            "         rtrim(warn_dept)warn_dept," +
             "         rtrim(confirm_flag)confirm_flag," +
             "         rtrim(windows_no_yf)windows_no_yf" +
             "    FROM mz_charge_detail,yp_zd_dict" +

+ 31 - 12
src/main/resources/static/js/common/socket-com.js

@@ -1,12 +1,17 @@
 //# sourceURL=socket-com.js
+var prescriptionPrintWebsocket = null;
+var lockReconnect = false; //避免ws重复连接
 function openSocket(type) {
-    var prescriptionPrintWebsocket = null;
-
 //判断当前浏览器是否支持WebSocket
-    if ('WebSocket' in window) {
-        prescriptionPrintWebsocket = new WebSocket("ws://" + window.location.host + "/thmz/prescriptionPrintSocket/" + type);
-    } else {
-        alert('当前浏览器不支持WebSocket,请更换浏览器');
+    try {
+        if ('WebSocket' in window) {
+            prescriptionPrintWebsocket = new WebSocket("ws://" + window.location.host + "/thmz/prescriptionPrintSocket/" + type);
+        } else {
+            alert('当前浏览器不支持WebSocket,请更换浏览器');
+        }
+    }catch (e) {
+        reconnect(type);
+        console.log(e);
     }
 
 //连接发生错误的回调方法
@@ -17,7 +22,7 @@ function openSocket(type) {
 //连接成功建立的回调方法
     prescriptionPrintWebsocket.onopen = function (event) {
         console.log(type+"连接prescriptionPrintSocket连接成功");
-    }
+    };
 
 //接收到消息的回调方法
     prescriptionPrintWebsocket.onmessage = function (event) {
@@ -28,13 +33,15 @@ function openSocket(type) {
         }else if(type == 'JH'){
             cellNumberMessage(JSON.parse(event.data));
         }
-    }
+    };
 
 //连接关闭的回调方法
-    prescriptionPrintWebsocket.onclose = function () {
-        console.log(type+"连接prescriptionPrintSocket连接关闭");
-        openSocket(type);//自动重连
-    }
+    prescriptionPrintWebsocket.onclose = function (event) {
+        console.log(type+"连接prescriptionPrintSocket连接关闭 code:"+event.code+",原因:"+event.reason+",是否正常关闭:"+event.wasClean);
+        if(event.code == '1001' || event.code == '1006'){//1001:终端离开, 可能因为服务端错误 1006:没有发送关闭帧
+            reconnect(type);
+        }
+    };
 
 //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
     window.onbeforeunload = function () {
@@ -42,6 +49,17 @@ function openSocket(type) {
     }
 }
 
+//重新连接
+function reconnect(type) {
+    if(lockReconnect) return;
+    lockReconnect = true;
+    //没连接上会一直重连,设置延迟避免请求过多
+    setTimeout(function () {
+        openSocket(type);
+        lockReconnect = false;
+    }, 500);
+}
+
 /**
  * 接收到配药完成消息回调方法
  * @param data
@@ -75,6 +93,7 @@ function sendMedicineMessage(data){
  */
 function cellNumberMessage(data){
     if(data.type == 'JF'){//来自缴费后的消息
+        dispenseListClear(data);
         //添加正在配药列表
         dispenseList[dispenseList.length] = {name: data.name, patient_id: data.patient_id};
     }else if (data.type == 'PY') {//来自配药处理成功后的消息

+ 8 - 0
src/main/resources/static/js/menu.js

@@ -343,6 +343,14 @@ function changeContent(url) {
         headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
         success: function (result) {
             content_url = url;
+            //打开发药叫号、配药、发药界面,先关闭历史socket连接
+            if(url == '/thmz/pharmacy-cell-number' || url == '/thmz/west-pharmacy-send' || url == '/thmz/west-pharmacy-dispensing'){
+                try{
+                    prescriptionPrintWebsocket.close();
+                }catch(e){
+                    console.log("prescriptionPrintWebsocket连接关闭失败:"+e.message);
+                }
+            }
             $("#content").html(result);
         },
         error:function (jqXHR) {

+ 10 - 2
src/main/resources/static/js/mz/pharmacy-cell-number.js

@@ -17,9 +17,11 @@ var tempDispenseList = new Array();
 var groupNo = null;
 var timeInterval;
 var tableInterval;
+var getTableDateInterval;
 $(function () {
     clearInterval(timeInterval);
     clearInterval(tableInterval);
+    clearInterval(getTableDateInterval);
     openSocket("JH");
     $("input").each(function (){
         this.onkeydown = function (e) { // 监听键盘事件
@@ -202,8 +204,14 @@ function getTableDate() {
                         tempDispenseList[tempDispenseList.length] = current; //重置标志
                     }
                 }
-                //10秒刷新一次队列里面的数据,应对数据很多,一页展示不完的情况
-                tableInterval = setInterval(refeshTable, 10000);
+                if(tableInterval == null){
+                    //10秒刷新一次队列里面的数据,应对数据很多,一页展示不完的情况
+                    tableInterval = setInterval(refeshTable, 10000);
+                }
+                if(getTableDateInterval == null){
+                    //每十分钟重新加载等待叫号和正在配药数据
+                    getTableDateInterval = setInterval(getTableDate, 100000);
+                }
             } else {
                 errorMesage(result);
             }

+ 9 - 5
src/main/resources/static/js/mz/west_pharmacy_dispensing.js

@@ -277,6 +277,9 @@ function printPrescription(patientId, times) {
                 } else {
                     $('#sex').attr("value", '未知');
                 }
+                if(res.data.ybCardNo == null || res.data.ybCardNo == ''){
+                    $('#ybCardNo').attr("value", res.data.icCardNo);
+                }
                 var tr = '';
                 for (let i = 0; i < list.length; i++) {
                     var number = i + 1;
@@ -305,15 +308,16 @@ function printPrescription(patientId, times) {
                     $('#div_yp').append('<span id="yxwk">以下为空</span>');
                 }
                 LODOP = getLodop();
-                LODOP.PRINT_INITA(6, 0, "141mm", "171mm", "泰和医院处方笺");
+                LODOP.PRINT_INITA(6, 0, "140mm", "202mm", "泰和医院处方笺");
                 LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
                 //设置默认打印机
                 LODOP.SET_PRINTER_INDEX(printIndex);
-                LODOP.SET_PRINT_PAGESIZE(1, '141mm', '171mm', "CreateCustomPage");
-                LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "141mm");
-                LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "171mm");
+                LODOP.SET_PRINT_PAGESIZE(1, '140mm', '202mm', "CreateCustomPage");
+                LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "140mm");
+                LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "202mm");
                 LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "门诊处方笺");//对新建的纸张重命名
-                LODOP.ADD_PRINT_HTM("10mm", "5mm", "RightMargin:5mm", "BottomMargin:5mm", $("div[id='print_view']").html());
+                LODOP.ADD_PRINT_HTM("5mm", "5mm", "140mm", "202mm",  $("div[id='print_view']").html());
+                // LODOP.NewPage();//下一页
                 LODOP.PRINT();
                 //LODOP.PREVIEW();
             } else {

+ 9 - 9
src/main/resources/static/js/mz/west_pharmacy_send.js

@@ -459,27 +459,27 @@ function printInjectionOralMedicine(patientId, orderNo, realNo, times, receiptNo
                     }
                     $('#zsd_two').append(htm);
                     LODOP = getLodop();
-                    LODOP.PRINT_INITA(6, 0, "148mm", "210mm", "泰和医院门、急诊注射单");
+                    LODOP.PRINT_INITA(6, 0, "210mm", "148mm", "泰和医院门、急诊注射单");
                     LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
                     //设置默认打印机
                     LODOP.SET_PRINTER_INDEX(zsdPrintIndex);
-                    LODOP.SET_PRINT_PAGESIZE(2, '148mm', '210mm', "CreateCustomPage");
-                    LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "148mm");
-                    LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "210mm");
+                    LODOP.SET_PRINT_PAGESIZE(1, '210mm', '148mm', "CreateCustomPage");
+                    LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "210mm");
+                    LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "148mm");
                     LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "泰和医院门、急诊注射单");//对新建的纸张重命名
-                    LODOP.ADD_PRINT_HTM("10mm", "5mm", "148mm", "210mm", $("div[id='print_view_zsd']").html());
+                    LODOP.ADD_PRINT_HTM("5mm", "2mm", "210mm", "148mm", $("div[id='print_view_zsd']").html());
                     LODOP.PRINT();
                     //LODOP.PREVIEW();
                 }
                 if (drugs.length > 0) {
                     LODOP = getLodop();
-                    LODOP.PRINT_INITA(6, 0, "60mm", "80mm", "患者药品标签");
+                    LODOP.PRINT_INITA(6, 0, "80mm", "60mm", "患者药品标签");
                     LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
                     //设置默认打印机
                     LODOP.SET_PRINTER_INDEX(bqPrintIndex);
-                    LODOP.SET_PRINT_PAGESIZE(2, '60mm', '80mm', "CreateCustomPage");
-                    LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "60mm");
-                    LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "80mm");
+                    LODOP.SET_PRINT_PAGESIZE(1, '80mm', '60mm', "CreateCustomPage");
+                    LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "80mm");
+                    LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "60mm");
                     LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "患者药品标签");//对新建的纸张重命名
                     for (let j = 0; j < drugs.length; j++) {
                         for (var key in drugs[j]) {

+ 1 - 1
src/main/resources/templates/mz/west_pharmacy_dispensing.html

@@ -151,7 +151,7 @@
                             </tbody>
                         </table>
                     </div>
-                    <div id="zbr_div" style="position: absolute;top:530px; ">
+                    <div id="zbr_div" style="position: absolute;top:640px; ">
                         <div style="margin-top: 10px;"><span>医师(签章):</span>
                             <input style="border-top: 0px;border-left: 0px;border-right: 0px;border-bottom: 1px solid;width: 190px;background-color: white;color: black;"
                                    disabled value="" id="employeeName"/>