Procházet zdrojové kódy

1.在不影响原发药提醒下,新增一个发药提醒测试界面
2.优化发药处理界面

WANGJIALIANG před 4 roky
rodič
revize
0f2142215b

+ 13 - 1
src/main/java/cn/hnthyy/thmz/controller/NavigationController.java

@@ -544,7 +544,19 @@ public class NavigationController {
         }
         return "mz/to-medicine";
     }
-
+    /**
+     * 发药提醒测试
+     *
+     * @return
+     */
+    @RequestMapping("/to-medicine-test")
+    public String toMedicineTest(HttpServletRequest httpServletRequest) throws Exception {
+        List<String> urls = getRoleUrls(httpServletRequest);
+        if (!urls.contains("/thmz/to-medicine-test")) {
+            throw new Exception("您没有此模块的权限,请联系管理员开通!");
+        }
+        return "mz/to-medicine-test";
+    }
 
     /**
      * 手机自助缴费查询

+ 35 - 0
src/main/java/cn/hnthyy/thmz/controller/mz/YpfydlController.java

@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 @RestController
@@ -80,4 +82,37 @@ public class YpfydlController {
             return resultMap;
         }
     }
+
+    /**
+     * 查询未发药名单
+     *
+     * @return
+     */
+    @UserLoginToken
+    @RequestMapping(value = "/getToMedicineUser", method = {RequestMethod.GET})
+    public Map<String, Object> getToMedicineUser(@RequestParam("groupNo") String groupNo) {
+        Map<String, Object> resultMap = new HashMap<>();
+        try {
+            if (StringUtils.isBlank(groupNo)) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "查询未发药药品失败,未选择药房");
+                return resultMap;
+            }
+            DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
+            Date myDate1 = dateFormat1.parse("2021-01-22");
+            Date begin = DateUtil.getFirstSecond(myDate1);
+            Date end = DateUtil.getLastSecond(myDate1);
+            List<Map<String, Object>> currentList = mzYpFydlService.queryToMedicine(groupNo, begin, end);
+            resultMap.put("code", 0);
+            resultMap.put("message", "查询未发药药品成功");
+            resultMap.put("currentList", currentList);
+            return resultMap;
+        } catch (Exception e) {
+            e.printStackTrace();
+            resultMap.put("code", -1);
+            resultMap.put("message", "查询未发药药品失败,错误信息:【" + e.getMessage() + "】");
+            log.error("查询未发药药品失败,错误信息:[]", e.getMessage());
+            return resultMap;
+        }
+    }
 }

+ 358 - 0
src/main/resources/static/js/mz/to-medicine-test.js

@@ -0,0 +1,358 @@
+//@ sourceURL=to-medicine.js
+//待取药队列
+var currentList = null;
+//过号名单队列
+var pastList = null;
+//临时待取药队列
+var tempCurrentList = null;
+//临时过号名单
+var tempPastList = null;
+//待取药队列是否已经加载完成
+var currentListHadDone = true;
+//过号名单队列是否已经加载完成
+var pastListHadDone = true;
+//药房编号
+var groupNo = null;
+$(function () {
+    $(".selectpicker").selectpicker({
+        dropuAuto: false
+    });
+
+    var yesNo = '<option value="71">门诊西药房</option><option value="81">门诊中药房</option><option value="82">颗粒剂药房</option>';
+    $('#fyClass').html(yesNo);
+    $('#fyClass').selectpicker('refresh');
+    $("#editModal").modal("show");
+    //
+    // //查询已经设置好的结果,回显
+    // $.ajax({
+    //     type: "GET",
+    //     url: '/thmz/getConfigByKey?key=weekend_fee',
+    //     dataType: "json",
+    //     headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
+    //     success: function (res) {
+    //         if (res == '401' || res == 401) {
+    //             window.location.href = '/thmz/login/view'
+    //             return;
+    //         }
+    //         if(res.data.configValue=='0'){
+    //             setSwitchery(false);
+    //         }else {
+    //             setSwitchery(true);
+    //         }
+    //     }
+    // });
+    //进入页面就加载一次
+    CurentTime();
+    intClock();
+    //每秒获取当前时间
+    //setInterval(CurentTime, 1000);
+    //10秒刷新一次队列里面的数据,应对数据很多,一页展示不完的情况
+    //setInterval(refeshTable, 10000);
+    //三十秒从后台拉一次数据
+    //setInterval(getTableDate, 30000);
+    getTableDate();
+    //设置页面宽度
+    setHeightForTable();
+    $(window).resize(function () {
+        //设置页面宽度
+        setHeightForTable();
+    });
+
+    $(document).keyup(function(event){
+        if(event.keyCode ==13){
+            initTable();
+        }
+    });
+
+});
+
+
+/**
+ * 设置页面宽度
+ */
+function setHeightForTable() {
+    var height = $(window).height() - 320;
+    var realHeigt = height / 7;
+    if (realHeigt < 88) {
+        realHeigt = 88;
+    }
+    $("#tableList tr").css("height", realHeigt + "px");
+}
+
+
+/**
+ * 取当前时间 格式 yyyy年mm月dd日 hh:mm:ss weekday
+ * @constructor
+ */
+function CurentTime() {
+    var now = new Date();
+    var year = now.getFullYear();       //年
+    var month = now.getMonth() + 1;     //月
+    var day = now.getDate();            //日
+    var hh = now.getHours();            //时
+    var mm = now.getMinutes();          //分
+    // var ss=now.getSeconds();            //秒
+    var weekday = new Array(7)			//周
+    weekday[0] = "星期日"
+    weekday[1] = "星期一"
+    weekday[2] = "星期二"
+    weekday[3] = "星期三"
+    weekday[4] = "星期四"
+    weekday[5] = "星期五"
+    weekday[6] = "星期六"
+    var date = year + "年";
+    if (month < 10) date += "0";
+    date += month + "月";
+    if (day < 10) date += "0";
+    date += day + "日 ";
+    date += "  " + weekday[now.getDay()];
+    $("#dateNow").html(date);
+    var time = "";
+    if (hh < 10) time += "0";
+    time += hh + ":";
+    if (mm < 10) time += '0';
+    time += mm;
+    $("#timeNow").html(time)
+}
+
+
+/**
+ * 初始化时钟
+ */
+function intClock() {
+    var audioElement = new Audio("");
+    //clock plugin constructor
+    $('#myclock').thooClock({
+        //size:$(document).height()/1.4,
+        size: 80,
+        onAlarm: function () {
+            //all that happens onAlarm
+            //$('#alarm1').show();
+            // alarmBackground(0);
+            //audio element just for alarm sound
+            document.body.appendChild(audioElement);
+            var canPlayType = audioElement.canPlayType("audio/ogg");
+            if (canPlayType.match(/maybe|probably/i)) {
+                audioElement.src = 'alarm.ogg';
+            } else {
+                audioElement.src = 'alarm.mp3';
+            }
+            // erst abspielen wenn genug vom mp3 geladen wurde
+            audioElement.addEventListener('canplay', function () {
+                audioElement.loop = true;
+                audioElement.play();
+            }, false);
+        },
+        showNumerals: true,
+        brandText: 'THOOYORK',
+        brandText2: 'Germany',
+        onEverySecond: function () {
+            //callback that should be fired every second
+        },
+        //alarmTime:'15:10',
+        offAlarm: function () {
+            //$('#alarm1').hide();
+            audioElement.pause();
+            clearTimeout(intVal);
+            $('body').css('background-color', '#FCFCFC');
+        }
+    });
+}
+
+
+/**
+ * 实例化列表
+ */
+function initTable() {
+    var winNo = $("#winNo").val();
+    groupNo = $("#fyClass").val();
+    if (groupNo == null || groupNo == "") {
+        alert("未选择药房!");
+        return;
+    }
+    if (winNo == null || winNo == "") {
+        alert("窗口号未录入!");
+        return;
+    }
+    var yfName = "门诊西药房";
+    if (groupNo == 81) {
+        yfName = "门诊中药房";
+    } else if (groupNo == 82) {
+        yfName = "颗粒剂药房";
+    }
+    $("#yfName").html(yfName);
+    $("#winNum").text(winNo);
+    $("#editModal").modal("hide");
+    getTableDate();
+}
+
+
+/**
+ * 获取后台最新数据
+ */
+function getTableDate() {
+    //如果过号列表还没有加载完,不发起新的请求
+    if (!pastListHadDone) {
+        return;
+    }
+    //如果等待取药列表还没有加载完,不发起新的请求
+    if (!currentListHadDone) {
+        return;
+    }
+    $.ajax({
+        type: "GET",
+        contentType: "application/json;charset=UTF-8",
+        url: "/thmz/getToMedicineUser?groupNo=" + groupNo,
+        headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
+        dataType: 'json',
+        success: function (result) {
+            if (result == '401' || result == 401) {
+                window.location.href = '/thmz/login/view'
+                return;
+            }
+            if (result.code == 0) {
+                pastList = result.pastList;
+                currentList = result.currentList;
+                //深度拷贝数组
+                tempPastList = $.extend(true, [], pastList);
+                tempCurrentList = $.extend(true, [], currentList);
+                if (currentList != null && currentList.length > 0) {
+                    var rightPerson = currentList[0];
+                    $("#rightPerson").text(rightPerson == null ? "" : rightPerson);
+                    //重置标志
+                    currentListHadDone = false;
+                } else {
+                    //重置标志
+                    currentListHadDone = true;
+                    $("#rightPerson").text("");
+                }
+
+                if (pastList == null || pastList.length == 0) {
+                    pastListHadDone = true;
+                } else {
+                    //重置标志
+                    pastListHadDone = false;
+                }
+                refeshTable();
+            } else {
+                errorMesage(result);
+            }
+        }
+    });
+}
+
+/**
+ * 刷新列表
+ */
+function refeshTable() {
+    //清空表格
+    clear();
+    for (var i = 1; i < 7; i++) {
+        if (tempPastList == null || tempPastList.length == 0) {
+            break;
+        }
+        //当遍历完成而且总长度小于等于6 时,不需要轮询
+        if (pastListHadDone && pastList.length <= 6) {
+            break;
+        }
+        //删除并返回数组的第一个元素
+        var name = tempPastList.shift();
+        $("#past" + i).text(name);
+        if (tempPastList.length == 0) {
+            pastListHadDone = true;
+            //如果待取药列表也遍历完成,将过号列表置空,否责重新遍历过号列表
+            if (currentListHadDone) {
+                tempPastList == null;
+            } else {
+                //深度拷贝数组
+                tempPastList = $.extend(true, [], pastList);
+            }
+        }
+    }
+    for (var i = 1; i < 13; i++) {
+        if (tempCurrentList == null || tempCurrentList.length == 0) {
+            break;
+        }
+        //当遍历完成而且总长度小于等于12 时,不需要轮询
+        if (currentListHadDone && currentList.length <= 12) {
+            break;
+        }
+        //删除并返回数组的第一个元素
+        var name = tempCurrentList.shift();
+        $("#current" + i).text(name);
+        if (tempCurrentList.length == 0) {
+            currentListHadDone = true;
+            //如果过号列表也遍历完成,将待取药列表置空,否责重新遍历待取药列表
+            if (pastListHadDone) {
+                tempCurrentList == null;
+            } else {
+                //深度拷贝数组
+                tempCurrentList = $.extend(true, [], currentList);
+            }
+        }
+    }
+}
+
+
+/**
+ * 清空表格
+ */
+function clear() {
+    //重新加载的数据,清空
+    if ((pastList.length <= 6 && !pastListHadDone) || pastList.length==0) {
+        for (var i = 1; i < 7; i++) {
+            $("#past" + i).text("");
+        }
+    }
+    //重新加载的数据,清空
+    if ((currentList.length <= 12 && !currentListHadDone) || currentList.length==0) {
+        for (var i = 1; i < 13; i++) {
+            $("#current" + i).text("");
+        }
+    }
+
+}
+
+// /**
+//  * 全屏方法
+//  */
+// function fullscreenOwn(){
+//     var  elem=document.body;
+//     if(elem.webkitRequestFullScreen){
+//         elem.webkitRequestFullScreen();
+//     }else if(elem.mozRequestFullScreen){
+//         elem.mozRequestFullScreen();
+//     }else if(elem.requestFullScreen){
+//         elem.requestFullscreen();
+//     }else{
+//         //浏览器不支持全屏API或已被禁用
+//     }
+// }
+//
+// /**
+//  * 退出全屏
+//  */
+// function exitFullscreen(){
+//     var elem=document;
+//     if(elem.webkitCancelFullScreen){
+//         elem.webkitCancelFullScreen();
+//     }else if(elem.mozCancelFullScreen){
+//         elem.mozCancelFullScreen();
+//     }else if(elem.cancelFullScreen){
+//         elem.cancelFullScreen();
+//     }else if(elem.exitFullscreen){
+//         elem.exitFullscreen();
+//     }else{
+//         //浏览器不支持全屏API或已被禁用
+//     }
+// }
+//
+//
+//
+// var intVal;
+//
+
+
+
+
+

+ 179 - 0
src/main/resources/templates/mz/to-medicine-test.html

@@ -0,0 +1,179 @@
+<link rel="stylesheet" href="/thmz/css/bootstrap/css/bootstrap-select.css"/>
+<link rel="stylesheet" href="/thmz/css/bootstrap/css/daterangepicker.css"/>
+<link rel="stylesheet" href="/thmz/css/custom.min.css"/>
+<link rel="stylesheet" href="/thmz/css/toll_administration.css"/>
+<script src="/thmz/js/dependent/bootstrap-select.js"></script>
+<script src="/thmz/js/dependent/jquery.thooClock.js"></script>
+<script src="/thmz/js/mz/to-medicine-test.js"></script>
+<title>发药提醒</title>
+<style>
+    tr{
+        /*height: 100px;*/
+        font-size: 50px;
+        letter-spacing:8px;
+    }
+    .current{
+        background: rgb(189,219,243);
+        color: rgb(69,124,189);
+    }
+    .dispense{
+        background: rgb(92,183,190);
+        color: black;
+        border-color: black;
+    }
+    .past{
+        color: rgb(63,72,204);
+        background: rgb(149,190,191);
+    }
+    .table.table-bordered > tr >td {
+        height: 88px;
+        max-height: 88px;
+    }
+</style>
+<div class="row">
+    <div class="col-md-12 col-sm-12 col-xs-12">
+        <div class="x_panel">
+            <div class="panel-body">
+                <!--<form id="formSearch" class="form-horizontal" autocomplete="off">-->
+                <!--<div class="form-group col-md-2 col-sm-2 col-xs-12"></div>-->
+                <!--<div class="form-group col-md-10 col-sm-10 col-xs-12">-->
+                <!--<div class="col-md-2 col-sm-2 col-xs-12" style="text-align:right;float: right;">-->
+                <!--<button type="button" style="margin-left:3px" id="btn_weekend" class="btn btn-primary"-->
+                <!--title="全屏"><i class="fa fa-gear"></i>-->
+                <!--</button>-->
+                <!--<button type="button" style="margin-left:3px" id="btn_add" class="btn btn-primary"-->
+                <!--title="新增节假日设置"><i class="fa fa-plus"></i>-->
+                <!--</button>-->
+                <!--</div>-->
+                <!--</div>-->
+                <!--</form>-->
+            </div>
+            <div class="row" id="showDiv">
+                <div class="col-md-3 col-sm-3 col-xs-12">
+                    <img src="/thmz/images/logo.png"/>
+                </div>
+                <div class="col-md-9 col-sm-9 col-xs-12" style="border-bottom: 6px solid #8ADCA3;height: 89px;">
+                    <div class="col-md-3 col-sm-3 col-xs-12"><h1
+                            style="line-height: 69px;margin-left: 60px;font-weight: bold;" id="yfName"></h1></div>
+                    <div class="col-md-6 col-sm-6 col-xs-12"><h1 style="line-height: 69px;" id="dateNow"></h1></div>
+                    <div class="col-md-1 col-sm-1 col-xs-12">
+                        <div class="container">
+                            <div id="myclock"></div>
+                        </div>
+                    </div>
+                    <div class="col-md-2 col-sm-2 col-xs-12">
+                        <h1 style="line-height: 69px;" id="timeNow"></h1>
+                    </div>
+                </div>
+                <div style="margin-top: 110px;">
+                    <table class="table table-striped table-bordered" id="tableList">
+                        <tbody>
+                        <tr>
+                            <td rowspan="2" style="background: #FFF4C7;vertical-align: middle !important;font-weight: bold;" class="text-center"><span  id="winNum"></span>号窗口</td>
+                            <td colspan="2" class="text-center" style="background:cornflowerblue;color: aliceblue;vertical-align: middle !important;font-weight: bold;">等待取药</td>
+                            <td colspan="2" class="text-center" style="vertical-align: middle !important;background: rgb(61,146,153);color:rgb(255,255,255); font-weight: bold;">正在配药</td>
+                            <td class="text-center" style="vertical-align: middle !important;background: cadetblue;color:aliceblue;font-weight: bold;">过号名单</td>
+                        </tr>
+                        <tr style="background: #BBFDBC;">
+                            <td class="text-center current" style="vertical-align: middle !important;" id="current1"></td>
+                            <td class="text-center current" style="vertical-align: middle !important;" id="current2"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;" id="dispense1"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;" id="dispense2"></td>
+                            <td  class="text-center past" style="vertical-align: middle !important;" id="past1"></td>
+                        </tr>
+                        <tr style="background: #9CD4D4;">
+                            <td class="text-center" style="background:rgb(69,124,189);color: aliceblue;vertical-align: middle !important;width: 25%;font-weight: bold;">正在取药</td>
+                            <td class="text-center current" style="vertical-align: middle !important;width: 15%;" id="current3"></td>
+                            <td class="text-center current" style="vertical-align: middle !important;width: 15%;" id="current4"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;width: 15%;" id="dispense3"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;width: 15%;" id="dispense4"></td>
+                            <td class="text-center past" style="vertical-align: middle !important;width: 15%;color: red;" id="past2"></td>
+                        </tr>
+                        <tr style="background: #BBFDBC;">
+                            <td rowspan="4" class="text-center" style="background: aliceblue;vertical-align: middle !important;color: rgb(69,124,189);font-weight: bold;font-size: 120px;" id="rightPerson"></td>
+                            <td class="text-center current" style="vertical-align: middle !important;" id="current5"></td>
+                            <td class="text-center current" style="vertical-align: middle !important;" id="current6"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;" id="dispense5"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;" id="dispense6"></td>
+                            <td class="text-center past" style="vertical-align: middle !important;color: red;" id="past3"></td>
+                        </tr>
+                        <tr style="background: #9CD4D4;">
+                            <td class="text-center current" style="vertical-align: middle !important;" id="current7"></td>
+                            <td class="text-center current" style="vertical-align: middle !important;" id="current8"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;" id="dispense7"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;" id="dispense8"></td>
+                            <td class="text-center past" style="vertical-align: middle !important;color: red;" id="past4"></td>
+                        </tr>
+                        <tr style="background: #BBFDBC;">
+                            <td class="text-center current" style="vertical-align: middle !important;" id="current9"></td>
+                            <td class="text-center current" style="vertical-align: middle !important;" id="current10"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;" id="dispense9"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;" id="dispense10"></td>
+                            <td class="text-center past" style="vertical-align: middle !important;color: red;" id="past5"></td>
+                        </tr>
+                        <tr style="background: #9CD4D4;">
+                            <td class="text-center current" style="vertical-align: middle !important;" id="current11"></td>
+                            <td class="text-center current" style="vertical-align: middle !important;" id="current12"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;" id="dispense11"></td>
+                            <td class="text-center dispense" style="vertical-align: middle !important;" id="dispense12"></td>
+                            <td class="text-center past" style="vertical-align: middle !important;" id="past6"></td>
+                        </tr>
+                        </tbody>
+                    </table>
+                </div>
+                <div class="col-md-12 col-sm-12 col-xs-12" style="border-top: 4px solid #8ADCA3;border-bottom: 6px solid #8ADCA3;border-left: 6px solid #8ADCA3;border-right: 6px solid #8ADCA3;height: 60px;border-top-left-radius: 15px;/* 左上角 */border-bottom-right-radius: 15px; /* 右下角 */">
+                    <div class="col-md-2 col-sm-2 col-xs-12" style="margin-top: 5px">
+                        <img src="/thmz/images/wxts.png" style="height: 40px;opacity: 0.50;-moz-opacity:0.50;filter:alpha(opacity=50);"/>
+                    </div>
+                    <div class="col-md-10 col-sm-10 col-xs-12" style="margin-top: -5px;">
+                        <h1 style="color: red;line-height: 40px;">请在缴费收据上核对取药窗口,待屏幕显示姓名后凭处方到对应窗口取药。</h1>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+
+
+<!--选择展示药房弹窗开始-->
+<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-hidden="true" id="editModal">
+    <div class="modal-dialog modal-lg">
+        <div class="modal-content" style="width: 420px;margin-left: 250px;margin-top: 300px;">
+            <div class="modal-header">
+                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span>
+                </button>
+                <h4 class="modal-title">请选择药房</h4>
+            </div>
+            <div class="modal-body">
+                <form class="form-horizontal form-label-left" novalidate  autocomplete="off">
+
+                    <div class="item form-group thmz_alert">
+                        <label class="control-label col-md-4 col-sm-4 col-xs-12" for="fyClass">药房 <span
+                                class="required">*</span>
+                        </label>
+                        <div class="col-md-6 col-sm-6 col-xs-12">
+                            <select class="form-control selectpicker show-tick" required="required" title="请选择"
+                                    id="fyClass">
+                            </select>
+                        </div>
+                    </div>
+                    <div class="item form-group thmz_alert">
+                        <label class="control-label col-md-4 col-sm-4 col-xs-12" for="winNo">窗口号 <span
+                                class="required">*</span>
+                        </label>
+                        <div class="col-md-6 col-sm-6 col-xs-12">
+                            <input id="winNo" type='text' class="form-control" placeholder="请输入取药窗口号"/>
+                        </div>
+                    </div>
+                </form>
+            </div>
+            <div class="modal-footer">
+                <!--因为部门表没有主键,需要记录下来要修改的记录原code,防止修改了code本身-->
+                <button type="button" class="btn btn-primary"  onclick="initTable()">确定</button>
+                <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
+            </div>
+        </div>
+    </div>
+</div>
+<!--选择展示药房弹窗结尾-->

+ 1 - 2
src/main/resources/templates/mz/west_pharmacy_send.html

@@ -108,8 +108,7 @@
             </div>
             <div class="modal-body">
                 <div class="row">
-                    <div class="col-md-12 col-sm-12 col-xs-12"
-                         style="-webkit-box-shadow: inset 0 0 2px #ccc;border: solid 1px rgba(0,0,0,0.075);">
+                    <div class="col-md-12 col-sm-12 col-xs-12">
                         <form id="fyform" class="form-horizontal" autocomplete="off">
                             <div class="form-group" style="padding-top: 10px;">
                                 <label class="control-label col-md-1 col-sm-1 col-xs-12" for="employeeNameLabel">医生: