|
@@ -2000,16 +2000,19 @@ public class MzPharmacyController {
|
|
|
try {
|
|
|
log.info("撤销退药医保接口调用开始,参数:{}", params);
|
|
|
|
|
|
- // 1. 获取退药明细数据(包含所有医保接口需要的参数)
|
|
|
+ // 1. 使用简化版的查询方式(和 getRefundYpMx 一样)
|
|
|
ChargeFeeParamsVo chargeFeeParamsVo = new ChargeFeeParamsVo();
|
|
|
chargeFeeParamsVo.setPatientId((String) params.get("patientId"));
|
|
|
chargeFeeParamsVo.setTimes((Integer) params.get("times"));
|
|
|
- chargeFeeParamsVo.setReceiptNo(String.valueOf(params.get("receiptNo")));
|
|
|
- chargeFeeParamsVo.setOrderNo(String.valueOf(params.get("orderNo")));
|
|
|
+ // 处理 receiptNo 和 orderNo 的类型转换,支持 Integer 和 String 两种类型
|
|
|
+ Object receiptNoObj = params.get("receiptNo");
|
|
|
+ Object orderNoObj = params.get("orderNo");
|
|
|
+ chargeFeeParamsVo.setReceiptNo(receiptNoObj instanceof Integer ? String.valueOf(receiptNoObj) : (String) receiptNoObj);
|
|
|
+ chargeFeeParamsVo.setOrderNo(orderNoObj instanceof Integer ? String.valueOf(orderNoObj) : (String) orderNoObj);
|
|
|
chargeFeeParamsVo.setGroupNoOut((String) params.get("groupNoOut"));
|
|
|
- chargeFeeParamsVo.setConfirmFlag(3); // 已退药状态
|
|
|
+ chargeFeeParamsVo.setConfirmFlag(2); // 已退药状态
|
|
|
|
|
|
- List<Map<String, Object>> refundDetailList = mzPharmacyService.getPrescriptionYpMxCxTy(chargeFeeParamsVo);
|
|
|
+ List<Map<String, Object>> refundDetailList = mzPharmacyService.getPrescriptionYpMxCxTySimple(chargeFeeParamsVo);
|
|
|
|
|
|
if (refundDetailList == null || refundDetailList.isEmpty()) {
|
|
|
resultMap.put("code", -1);
|
|
@@ -2028,19 +2031,25 @@ public class MzPharmacyController {
|
|
|
try {
|
|
|
// 2.1 构建追溯码查询参数
|
|
|
MzDrugTracCodg tracCodgQuery = new MzDrugTracCodg();
|
|
|
- tracCodgQuery.setPatientId((String) item.get("patientId"));
|
|
|
- tracCodgQuery.setTimes((Integer) item.get("times"));
|
|
|
- tracCodgQuery.setReceiptNo((Integer) item.get("receiptNo"));
|
|
|
- tracCodgQuery.setOrderNo((Integer) item.get("orderNo"));
|
|
|
- tracCodgQuery.setChargeItemCode((String) item.get("chargeItemCode"));
|
|
|
+ tracCodgQuery.setPatientId((String) item.get("patient_id"));
|
|
|
+ // 处理类型转换,支持 Short 和 Integer 两种类型
|
|
|
+ Object timesObj = item.get("times");
|
|
|
+ Object receiptNoObj = item.get("receipt_no");
|
|
|
+ Object orderNoObj = item.get("order_no");
|
|
|
+ Object itemNoObj = item.get("item_no");
|
|
|
+
|
|
|
+ tracCodgQuery.setTimes(timesObj instanceof Short ? ((Short) timesObj).intValue() : (Integer) timesObj);
|
|
|
+ tracCodgQuery.setReceiptNo(receiptNoObj instanceof Short ? ((Short) receiptNoObj).intValue() : (Integer) receiptNoObj);
|
|
|
+ tracCodgQuery.setOrderNo(orderNoObj instanceof Short ? ((Short) orderNoObj).intValue() : (Integer) orderNoObj);
|
|
|
+ tracCodgQuery.setChargeItemCode((String) item.get("charge_item_code"));
|
|
|
tracCodgQuery.setSerial((String) item.get("serial"));
|
|
|
- tracCodgQuery.setItemNo((Integer) item.get("itemNo"));
|
|
|
+ tracCodgQuery.setItemNo(itemNoObj instanceof Short ? ((Short) itemNoObj).intValue() : (Integer) itemNoObj);
|
|
|
|
|
|
// 2.2 获取追溯码数据
|
|
|
List<MzDrugTracCodg> tracCodgList = mzDrugTracCodgService.getMzDrugTracCodgData(tracCodgQuery);
|
|
|
|
|
|
if (tracCodgList == null || tracCodgList.isEmpty()) {
|
|
|
- log.warn("药品{}未找到追溯码数据", item.get("chargeItemCode"));
|
|
|
+ log.warn("药品{}未找到追溯码数据", item.get("charge_item_code"));
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -2055,20 +2064,22 @@ public class MzPharmacyController {
|
|
|
|
|
|
// 构建 SelinfoSold 对象
|
|
|
SelinfoSold selinfoSold = new SelinfoSold();
|
|
|
- selinfoSold.setPatientId((String) item.get("patientId"));
|
|
|
- selinfoSold.setTimes((Integer) item.get("times"));
|
|
|
- selinfoSold.setReceiptNo((Integer) item.get("receiptNo"));
|
|
|
- selinfoSold.setOrderNo((Integer) item.get("orderNo"));
|
|
|
- selinfoSold.setChargeItemCode((String) item.get("chargeItemCode"));
|
|
|
- selinfoSold.setRealNo((Integer) item.get("realNo"));
|
|
|
- selinfoSold.setMedListCodg((String) item.get("nationalCode"));
|
|
|
+ selinfoSold.setPatientId((String) item.get("patient_id"));
|
|
|
+ selinfoSold.setTimes(timesObj instanceof Short ? ((Short) timesObj).intValue() : (Integer) timesObj);
|
|
|
+ selinfoSold.setReceiptNo(receiptNoObj instanceof Short ? ((Short) receiptNoObj).intValue() : (Integer) receiptNoObj);
|
|
|
+ selinfoSold.setOrderNo(orderNoObj instanceof Short ? ((Short) orderNoObj).intValue() : (Integer) orderNoObj);
|
|
|
+ selinfoSold.setChargeItemCode((String) item.get("charge_item_code"));
|
|
|
+ // 处理 realNo 的类型转换
|
|
|
+ Object realNoObj = item.get("real_no");
|
|
|
+ selinfoSold.setRealNo(realNoObj instanceof Short ? ((Short) realNoObj).intValue() : (Integer) realNoObj);
|
|
|
+ selinfoSold.setMedListCodg((String) item.get("national_code"));
|
|
|
selinfoSold.setPrscDrName(getCurrentDoctorName(params));
|
|
|
selinfoSold.setPharName(getCurrentUserName(params));
|
|
|
selinfoSold.setPharPracCertNo(getPharPracCertNo(params));
|
|
|
selinfoSold.setSelRetnOpterName(getCurrentUserName(params));
|
|
|
selinfoSold.setMdtrtSetlType(item.get("mdtrtSetlType") != null ? (String) item.get("mdtrtSetlType") : "2");
|
|
|
- selinfoSold.setRxFlag(item.get("rxFlag") != null ? (String) item.get("rxFlag") : "0");
|
|
|
- selinfoSold.setTrdnFlag(item.get("clFlag") != null ? (String) item.get("clFlag") : "0");
|
|
|
+ selinfoSold.setRxFlag(item.get("rx_flag") != null ? (String) item.get("rx_flag") : "0");
|
|
|
+ selinfoSold.setTrdnFlag(item.get("cl_flag") != null ? (String) item.get("cl_flag") : "0");
|
|
|
selinfoSold.setPsnCertType(item.get("psnCertType") != null ? (String) item.get("psnCertType") : "01");
|
|
|
selinfoSold.setCertno(item.get("certno") != null ? (String) item.get("certno") : "");
|
|
|
selinfoSold.setPsnName(item.get("psnName") != null ? (String) item.get("psnName") : "");
|
|
@@ -2091,20 +2102,18 @@ public class MzPharmacyController {
|
|
|
|
|
|
if (ybResult != null && ybResult.getCode() == 0) {
|
|
|
successCount++;
|
|
|
- log.info("药品{}医保接口调用成功", item.get("chargeItemCode"));
|
|
|
+ log.info("药品{}医保接口调用成功", item.get("charge_item_code"));
|
|
|
} else {
|
|
|
failCount++;
|
|
|
- String errorMessage = ybResult != null ? ybResult.getMessage() : "医保接口调用失败";
|
|
|
- errorMsg.append("药品").append(item.get("chargeItemCode"))
|
|
|
- .append("医保接口调用失败:").append(errorMessage).append("; ");
|
|
|
- log.error("药品{}医保接口调用失败:{}", item.get("chargeItemCode"), errorMessage);
|
|
|
+ String errorMessage = ybResult != null ? ybResult.getMessage() : "医保接口返回空结果";
|
|
|
+ errorMsg.append("药品").append(item.get("charge_item_code")).append(": ").append(errorMessage).append("; ");
|
|
|
+ log.error("药品{}医保接口调用失败: {}", item.get("charge_item_code"), errorMessage);
|
|
|
}
|
|
|
-
|
|
|
} catch (Exception e) {
|
|
|
failCount++;
|
|
|
- errorMsg.append("药品").append(item.get("chargeItemCode"))
|
|
|
- .append("处理异常:").append(e.getMessage()).append("; ");
|
|
|
- log.error("药品{}处理异常", item.get("chargeItemCode"), e);
|
|
|
+ String errorMessage = "药品" + item.get("charge_item_code") + "处理异常: " + e.getMessage();
|
|
|
+ errorMsg.append(errorMessage).append("; ");
|
|
|
+ log.error(errorMessage, e);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2112,20 +2121,16 @@ public class MzPharmacyController {
|
|
|
if (failCount == 0) {
|
|
|
resultMap.put("code", 0);
|
|
|
resultMap.put("message", "撤销退药医保接口调用成功,共处理" + successCount + "个药品");
|
|
|
- resultMap.put("data", null);
|
|
|
} else {
|
|
|
resultMap.put("code", -1);
|
|
|
resultMap.put("message", "撤销退药医保接口调用部分失败,成功" + successCount + "个,失败" + failCount + "个。错误信息:" + errorMsg.toString());
|
|
|
- resultMap.put("data", null);
|
|
|
}
|
|
|
|
|
|
return resultMap;
|
|
|
-
|
|
|
} catch (Exception e) {
|
|
|
log.error("撤销退药医保接口调用异常", e);
|
|
|
resultMap.put("code", -1);
|
|
|
resultMap.put("message", "撤销退药医保接口调用异常:" + e.getMessage());
|
|
|
- resultMap.put("data", null);
|
|
|
return resultMap;
|
|
|
}
|
|
|
}
|