LIJU há 2 semanas atrás
pai
commit
ba576b9ca4

+ 7 - 1
src/main/resources/application-mhyy.yml

@@ -44,7 +44,13 @@ spring:
       jdbc-url: "jdbc:sqlserver://130.150.161.71:1433;databaseName=hisdb"
       username: "sa"
       password: "Symhyy@123"
-      driver-class-name: "com.microsoft.sqlserver.jdbc.SQLServerDriver"
+      # jdbc-url: "jdbc:sqlserver://130.150.161.124:1433;databaseName=po"
+      # username: "sa"
+      # password: "root"
+      # jdbc-url: "jdbc:sqlserver://130.150.161.123:1433;databaseName=hisdb"
+      # username: "sa"
+      # password: "root"      
+      # driver-class-name: "com.microsoft.sqlserver.jdbc.SQLServerDriver"
     durid:
       #type: com.alibaba.druid.pool.DruidDataSource
       #初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时

+ 116 - 1
src/main/resources/static/js/mz/west_pharmacy_send.js

@@ -105,8 +105,25 @@ $(function () {
         let realNo = $("#realNoLabel").val();
         // 从全局变量获取药师执业资格证号
         let pharPracCertNo = window.currentPharPracCertNo || '';
-        sendMedicineProcessing(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
+        
+        // 先验证追溯码数量,再决定是否发药
+        validateTracCodgQuantity(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
+    });
+    // 追溯码数量确认弹框的确认发药按钮
+    $("#confirmTracCodgSend").click(function (t) {
+        // 获取存储的发药参数
+        let sendParams = window.pendingSendParams;
+        if (sendParams) {
+            // 隐藏确认弹框
+            $('#tracCodgConfirmModal').modal('hide');
+            // 执行发药处理
+            sendMedicineProcessing(sendParams.realNo, sendParams.orderNo, sendParams.receiptNo, 
+                                sendParams.times, sendParams.patientId, sendParams.name, sendParams.pharPracCertNo);
+            // 清除存储的参数
+            window.pendingSendParams = null;
+        }
     });
+    
     $("#printSend").click(function (t) {
         $('#zydybqModal').modal('hide');
         $("#zyypbq_name").attr("value", $("#zydyNameLabel").val());
@@ -3539,4 +3556,102 @@ function callYbReturnGoodsItemWithData(ybData, item) {
             // 医保接口失败不影响退药流程,只记录日志
         }
     });
+}
+
+/**
+ * 验证追溯码数量与处方数量的匹配情况
+ * @param realNo 流水号
+ * @param orderNo 处方号
+ * @param receiptNo 发票分票号
+ * @param times 次数
+ * @param patientId 病人ID
+ * @param name 病人姓名
+ * @param pharPracCertNo 药师执业资格证号
+ */
+function validateTracCodgQuantity(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo) {
+    // 获取处方明细表格数据
+    let tableData = $("#tb_table_right").bootstrapTable('getData');
+    let mismatchDetails = [];
+    let hasMismatch = false;
+    
+    console.log('开始验证追溯码数量,表格数据:', tableData);
+    
+    // 遍历每种药品,检查追溯码数量
+    for (let i = 0; i < tableData.length; i++) {
+        let drug = tableData[i];
+        let prescriptionQuantity = parseInt(drug.quantity) || 0; // 处方数量
+        let tracCodgCount = 0; // 追溯码数量
+        
+        // 计算该药品的追溯码数量
+        if (!isEmpty(drug.drugTracCodg)) {
+            // 按<br>分割追溯码,过滤空值
+            let tracCodgList = drug.drugTracCodg.split('<br>').filter(code => code.trim().length > 0);
+            tracCodgCount = tracCodgList.length;
+        }
+        
+        console.log('药品:', drug.drugname, '处方数量:', prescriptionQuantity, '追溯码数量:', tracCodgCount);
+        
+        // 检查数量是否匹配
+        if (tracCodgCount !== prescriptionQuantity) {
+            hasMismatch = true;
+            let mismatchInfo = {
+                drugName: drug.drugname,
+                prescriptionQuantity: prescriptionQuantity,
+                tracCodgCount: tracCodgCount,
+                difference: tracCodgCount - prescriptionQuantity
+            };
+            mismatchDetails.push(mismatchInfo);
+        }
+    }
+    
+    // 如果有不匹配的情况,显示确认弹框
+    if (hasMismatch) {
+        // 存储发药参数,供确认后使用
+        window.pendingSendParams = {
+            realNo: realNo,
+            orderNo: orderNo,
+            receiptNo: receiptNo,
+            times: times,
+            patientId: patientId,
+            name: name,
+            pharPracCertNo: pharPracCertNo
+        };
+        
+        // 构建不匹配详情HTML
+        let detailsHtml = '<div class="table-responsive"><table class="table table-bordered table-striped">';
+        detailsHtml += '<thead><tr><th>药品名称</th><th>处方数量</th><th>追溯码数量</th><th>差异</th></tr></thead><tbody>';
+        
+        for (let i = 0; i < mismatchDetails.length; i++) {
+            let detail = mismatchDetails[i];
+            let differenceText = '';
+            let rowClass = '';
+            
+            if (detail.difference > 0) {
+                differenceText = '<span style="color: orange;">多输入 ' + detail.difference + ' 个</span>';
+                rowClass = 'warning';
+            } else if (detail.difference < 0) {
+                differenceText = '<span style="color: red;">缺少 ' + Math.abs(detail.difference) + ' 个</span>';
+                rowClass = 'danger';
+            }
+            
+            detailsHtml += '<tr class="' + rowClass + '">';
+            detailsHtml += '<td>' + detail.drugName + '</td>';
+            detailsHtml += '<td>' + detail.prescriptionQuantity + '</td>';
+            detailsHtml += '<td>' + detail.tracCodgCount + '</td>';
+            detailsHtml += '<td>' + differenceText + '</td>';
+            detailsHtml += '</tr>';
+        }
+        
+        detailsHtml += '</tbody></table></div>';
+        
+        // 显示确认弹框
+        $('#tracCodgMismatchDetails').html(detailsHtml);
+        $('#tracCodgConfirmModal').modal('show');
+        
+        console.log('追溯码数量不匹配,显示确认弹框:', mismatchDetails);
+    } else {
+        // 数量匹配,直接发药
+        console.log('追溯码数量匹配,直接发药');
+        sendMedicineProcessing(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
+    }
 }

+ 31 - 0
src/main/resources/templates/mz/west_pharmacy_send.html

@@ -1089,6 +1089,37 @@
 </div>
 <!--退药匹配追溯码弹窗结尾-->
 
+<!--追溯码数量确认弹窗开始-->
+<div class="modal fade bs-example-modal-sm in" tabindex="-1" role="dialog" aria-hidden="true" id="tracCodgConfirmModal">
+    <div class="modal-dialog modal-sm">
+        <div class="modal-content" style="width: 600px;margin-left: -200px;">
+            <div class="modal-header">
+                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span>
+                </button>
+                <h4 class="modal-title modal-title-thmz">追溯码数量确认</h4>
+            </div>
+            <div class="modal-body">
+                <div class="row">
+                    <div class="col-md-12 col-sm-12 col-xs-12">
+                        <div class="alert alert-warning">
+                            <i class="fa fa-exclamation-triangle"></i>
+                            <strong>注意:</strong>以下药品的追溯码数量与处方数量不匹配,请确认是否继续发药?<br/>(一盒药如果被拆分使用,只需要上传一次追溯码,如果忘记传,请务必保留该药的药盒,后面需要补传该药追溯码)
+                        </div>
+                        <div id="tracCodgMismatchDetails">
+                            <!-- 动态填充不匹配的详细信息 -->
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-primary" id="confirmTracCodgSend">确认发药</button>
+                <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
+            </div>
+        </div>
+    </div>
+</div>
+<!--追溯码数量确认弹窗结尾-->
+
 <object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0>
     <embed id="LODOP_EM" type="application/x-print-lodop" width=0 height=0></embed>
 </object>