LIJU hai 2 semanas
pai
achega
65475541ce
Modificáronse 1 ficheiros con 237 adicións e 12 borrados
  1. 237 12
      src/main/resources/static/js/mz/west_pharmacy_send.js

+ 237 - 12
src/main/resources/static/js/mz/west_pharmacy_send.js

@@ -1961,6 +1961,29 @@ function saveCancelRefundMedicine() {
     }).then((res) => {
         $("#btn_cancel_ty").attr("disabled", false);
         successMesage(res);
+        
+        // ========== 调用撤销退药医保接口 ==========
+        console.log('=== 开始调用撤销退药医保接口 ===');
+        // 获取撤销退药记录的基本信息
+        let patientId = row[0].patientId;
+        let times = row[0].times;
+        let receiptNo = row[0].receiptNo;
+        let orderNo = row[0].orderNo;
+        let realNo = row[0].realNo;
+        let name = row[0].name;
+        
+        console.log('撤销退药医保接口参数:', {
+            patientId: patientId,
+            times: times,
+            receiptNo: receiptNo,
+            orderNo: orderNo,
+            realNo: realNo,
+            name: name
+        });
+        
+        // 调用撤销退药医保接口
+        callYbSaleGoodsItemForCancelRefund(realNo, orderNo, receiptNo, times, patientId, name);
+        
         initTbTable();
     },err =>{
         $("#btn_cancel_ty").attr("disabled",false);
@@ -3260,14 +3283,14 @@ function callYbSaleGoodsItem(realNo, orderNo, receiptNo, times, patientId, name,
         let item = tableData[i];
         
         // 构建关联字段组合(用于关联发药记录)
-        let patientId = item.patientId || patientId;
-        let times = item.times || times;
-        let receiptNo = item.receiptNo || receiptNo;
-        let orderNo = item.orderNo || orderNo;
+        let currentPatientId = item.patientId || patientId;
+        let currentTimes = item.times || times;
+        let currentReceiptNo = item.receiptNo || receiptNo;
+        let currentOrderNo = item.orderNo || orderNo;
         let chargeItemCode = item.chargeItemCode;
-        let realNo = item.realNo || realNo;
+        let currentRealNo = item.realNo || realNo;
         
-        console.log('发药关联键:', {patientId, times, receiptNo, orderNo, chargeItemCode, realNo});
+        console.log('发药关联键:', {patientId: currentPatientId, times: currentTimes, receiptNo: currentReceiptNo, orderNo: currentOrderNo, chargeItemCode, realNo: currentRealNo});
         
         // 参数验证
         // 从处方明细数据中获取开方医师姓名
@@ -3285,12 +3308,12 @@ function callYbSaleGoodsItem(realNo, orderNo, receiptNo, times, patientId, name,
         // 构建医保接口参数
         let ybData = {
             // 关联字段 - 直接传递到医保接口
-            patientId: patientId,
-            times: times,
-            receiptNo: receiptNo,
-            orderNo: orderNo,
+            patientId: currentPatientId,
+            times: currentTimes,
+            receiptNo: currentReceiptNo,
+            orderNo: currentOrderNo,
             chargeItemCode: chargeItemCode,
-            realNo: realNo,
+            realNo: currentRealNo,
             
             // 医疗目录编码(医保编码)
             medListCodg: item.nationalCode,
@@ -3478,7 +3501,7 @@ function callYbReturnGoodsItem(realNo, orderNo, receiptNo, times, patientId, nam
             itemNo: item.item_no,
             groupNo: item.group_no || groupNo
         };
-        
+        console.log("调用退药医保接口tracCodgParams000000000000000000000",tracCodgParams)
         // 调用追溯码查询接口(异步方式)
         // 注意:退药处理后,追溯码已转移到 mz_drug_trac_codg_ty 表
         $.ajax({
@@ -3654,4 +3677,206 @@ function validateTracCodgQuantity(realNo, orderNo, receiptNo, times, patientId,
         console.log('追溯码数量匹配,直接发药');
         sendMedicineProcessing(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
     }
+}
+
+/**
+ * 调用撤销退药医保接口(销售接口)
+ * @param realNo 流水号
+ * @param orderNo 处方号
+ * @param receiptNo 发票分票号
+ * @param times 次数
+ * @param patientId 病人ID
+ * @param name 病人姓名
+ */
+function callYbSaleGoodsItemForCancelRefund(realNo, orderNo, receiptNo, times, patientId, name) {
+    // 获取撤销退药后的处方明细数据 - 从已恢复的收费明细表获取
+    let tableData = $("#tb_table_right").bootstrapTable('getData');
+    
+    if (!tableData || tableData.length === 0) {
+        console.log('没有处方明细数据,跳过撤销退药医保接口调用');
+        return;
+    }
+    
+    // 获取当前用户信息(药师信息)
+    let currentUserName = localStorage.getItem('userName') || '';
+    let currentUserId = localStorage.getItem('userID') || '';
+    
+    // 获取当前时间
+    let currentTime = new Date();
+    let selRetnTime = currentTime.getFullYear() + '-' + 
+                     String(currentTime.getMonth() + 1).padStart(2, '0') + '-' + 
+                     String(currentTime.getDate()).padStart(2, '0') + ' ' +
+                     String(currentTime.getHours()).padStart(2, '0') + ':' + 
+                     String(currentTime.getMinutes()).padStart(2, '0') + ':' + 
+                     String(currentTime.getSeconds()).padStart(2, '0');
+    
+    // 为每个药品调用一次医保接口
+    for (let i = 0; i < tableData.length; i++) {
+        let item = tableData[i];
+        
+        // 构建关联字段组合(用于关联撤销退药记录)
+        let currentPatientId = item.patientId || patientId;
+        let currentTimes = item.times || times;
+        let currentReceiptNo = item.receiptNo || receiptNo;
+        let currentOrderNo = item.orderNo || orderNo;
+        let chargeItemCode = item.chargeItemCode;
+        let currentRealNo = item.realNo || realNo;
+        
+        console.log('撤销退药关联键:', {patientId: currentPatientId, times: currentTimes, receiptNo: currentReceiptNo, orderNo: currentOrderNo, chargeItemCode, realNo: currentRealNo});
+        
+        // 参数验证
+        // 从处方明细数据中获取开方医师姓名
+        let doctorName = item.doctorName || item.employeeName || '';
+        if (!doctorName) {
+            console.warn('开方医师姓名为空,使用默认值');
+            doctorName = '未知医师';
+        }
+        
+        if (!currentUserName) {
+            console.warn('药师姓名为空,使用默认值');
+            currentUserName = '未知药师';
+        }
+        
+        // 构建医保接口参数 - 与发药时相同的参数结构
+        let ybData = {
+            // 关联字段 - 直接传递到医保接口
+            patientId: currentPatientId,
+            times: currentTimes,
+            receiptNo: currentReceiptNo,
+            orderNo: currentOrderNo,
+            chargeItemCode: chargeItemCode,
+            realNo: currentRealNo,
+            
+            // 医疗目录编码(医保编码)
+            medListCodg: item.nationalCode,
+            
+            // 开方医师姓名
+            prscDrName: doctorName,
+            
+            // 药师姓名
+            pharName: currentUserName,
+            
+            // 药师执业资格证号(取当前操作者的药师执业资格证号)
+            pharPracCertNo: localStorage.getItem('pharPracCertNo') || '',
+            
+            // 销售/退货经办人姓名
+            selRetnOpterName: currentUserName,
+            
+            // 就诊结算类型(1-医保结算 2-自费结算)
+            mdtrtSetlType: item.mdtrtSetlType || '2',
+            
+            // 处方药标志
+            rxFlag: item.rxFlag || '0',
+            
+            // 拆零标志(0-否;1-是)
+            trdnFlag: item.clFlag || '0',
+            
+            // 患者相关参数(医保接口需要)
+            // 人员证件类型
+            psnCertType: item.psnCertType || '01',
+            // 证件号码
+            certno: item.certno || '',
+            // 人员姓名
+            psnName: item.psnName || item.name || name || '',
+            
+        };
+        
+        // 追溯码信息 - 从已恢复的追溯码表获取
+        let drugtracinfo = [];
+        
+        // 主动获取追溯码信息(撤销退药后,追溯码已恢复到 mz_drug_trac_codg 表)
+        let tracCodgParams = {
+            patientId: currentPatientId,
+            times: currentTimes,
+            receiptNo: currentReceiptNo,
+            orderNo: currentOrderNo,
+            chargeItemCode: chargeItemCode,
+            serial: item.serial,
+            itemNo: item.itemNo,
+            groupNo: item.groupNo || groupNo
+        };
+        
+        // 调用追溯码查询接口(异步方式)
+        // 注意:撤销退药后,追溯码已恢复到 mz_drug_trac_codg 表
+        $.ajax({
+            type: "POST",
+            url: '/thmz/getMzDrugTracCodgData',
+            contentType: "application/json;charset=UTF-8",
+            dataType: "json",
+            headers: {
+                'Accept': 'application/json',
+                'Authorization': 'Bearer ' + localStorage.getItem("token")
+            },
+            data: JSON.stringify(tracCodgParams),
+            success: function (tracRes) {
+                console.log('撤销退药追溯码查询结果:', tracRes);
+                if (tracRes.code === 0 && tracRes.data && tracRes.data.length > 0) {
+                    // 将追溯码添加到医保接口参数中
+                    for (let k = 0; k < tracRes.data.length; k++) {
+                        let tracItem = tracRes.data[k];
+                        if (tracItem.drugTracCodg && tracItem.drugTracCodg !== '') {
+                            drugtracinfo.push({
+                                drugTracCodg: tracItem.drugTracCodg
+                            });
+                        }
+                    }
+                    console.log('撤销退药成功获取追溯码:', drugtracinfo);
+                } else {
+                    console.log('撤销退药未找到追溯码信息');
+                }
+                
+                // 追溯码查询完成后,调用医保接口
+                callYbSaleGoodsItemWithDataForCancelRefund(ybData, item, drugtracinfo);
+            },
+            error: function (xhr, status, error) {
+                console.error('撤销退药追溯码查询失败:', error);
+                // 即使追溯码查询失败,也要调用医保接口
+                callYbSaleGoodsItemWithDataForCancelRefund(ybData, item, drugtracinfo);
+            }
+        });
+    }
+}
+
+/**
+ * 调用撤销退药医保接口(带追溯码数据)
+ * @param ybData 医保接口参数
+ * @param item 药品信息
+ * @param drugtracinfo 追溯码信息
+ */
+function callYbSaleGoodsItemWithDataForCancelRefund(ybData, item, drugtracinfo) {
+    // 如果没有追溯码,添加空数组(保持数据结构一致)
+    if (drugtracinfo.length === 0) {
+        drugtracinfo = [];
+    }
+    
+    console.log('调用撤销退药医保接口,药品:', item.drugname, '参数:', ybData);
+    
+    let param = {
+        selinfoSold: ybData,
+        drugtracinfo: drugtracinfo
+    }
+    console.log("调用撤销退药医保接口param11111111111111111111111111111111111",param)
+    // 调用医保接口
+    $.ajax({
+        type: "POST",
+        url: '/thmz/Yb/saleGoodsItem',
+        contentType: "application/json;charset=UTF-8",
+        dataType: "json",
+        headers: {
+            'Accept': 'application/json',
+            'Authorization': 'Bearer ' + localStorage.getItem("token")
+        },
+        data: JSON.stringify(param),
+        success: function (res) {
+            console.log('撤销退药医保接口调用成功:', res);
+            if (res.code !== 0) {
+                console.error('撤销退药医保接口调用失败:', res.message);
+                // 医保接口失败不影响撤销退药流程,只记录日志
+            }
+        },
+        error: function (xhr, status, error) {
+            console.error('撤销退药医保接口调用失败:', error);
+            // 医保接口失败不影响撤销退药流程,只记录日志
+        }
+    });
 }