update:对账消息推送,军保账单统计,退款数据统计
This commit is contained in:
@@ -80,6 +80,7 @@ public class BankGetDataByWXAPI {
|
||||
// 如果没问题 解析返回的集合
|
||||
if ("0".equals(errCode)) {
|
||||
String list = StringDUtil.changeNullToEmpty(jsonObject.get("list"));
|
||||
log.info("微信获取对账单返回数据:" + list);
|
||||
List<BankbillHistory> bankbillHistories = JSONArray.parseArray(list, BankbillHistory.class);
|
||||
|
||||
// 如果有数据
|
||||
|
||||
@@ -75,6 +75,8 @@ public class HISGetDataMethodByJH {
|
||||
operatorsCodeStr=operatorsCodeStr.substring(0,operatorsCodeStr.length()-1);
|
||||
}
|
||||
|
||||
log.info("HIS获取数据定时任务【"+name+"】开始执行,操作员号:【"+operatorsCodeStr+"】,获取日期:【"+trade_date+"】");
|
||||
|
||||
//全部支付方式
|
||||
List<Dicinfo> pay_type = dicinfoService.findDicinfoTreeNodeList("PAY_TYPE");
|
||||
HashMap<String, String> payTypeMap = new HashMap<>();
|
||||
@@ -145,11 +147,29 @@ public class HISGetDataMethodByJH {
|
||||
for (int i = 0; i < hisBillList.size(); i++) {
|
||||
HashMap<Object, Object> hisBillHashMap = hisBillList.get(i);
|
||||
|
||||
//先判断关键id是否为空 ,为空的这条记录就作废了,可能之后会有现金记录进入,此id仍为空,到时需要另加判断
|
||||
//获取PowerTranID和ReceiptNO作为唯一标识
|
||||
String powerTranID = StringDUtil.changeNullToEmpty(hisBillHashMap.get("powerTranID"));
|
||||
if ("".equals(powerTranID)){
|
||||
String receiptNO = StringDUtil.changeNullToEmpty(hisBillHashMap.get("receiptNO"));
|
||||
String hisTransId = StringDUtil.changeNullToEmpty(hisBillHashMap.get("hisTransId"));
|
||||
|
||||
// 修改跳过逻辑:只有当关键业务信息都缺失时才跳过
|
||||
// 检查是否有足够的业务信息来处理这条记录
|
||||
String patientId = StringDUtil.changeNullToEmpty(hisBillHashMap.get("patientID"));
|
||||
String amount = StringDUtil.changeNullToEmpty(hisBillHashMap.get("amount"));
|
||||
String tradeTime = StringDUtil.changeNullToEmpty(hisBillHashMap.get("tradeTime"));
|
||||
|
||||
// 只有当缺少关键业务信息时才跳过(患者ID、金额、交易时间都为空)
|
||||
if ("".equals(patientId) && "".equals(amount) && "".equals(tradeTime)){
|
||||
log.warn("跳过缺少关键业务信息的记录: powerTranID={}, receiptNO={}, hisTransId={}",
|
||||
powerTranID, receiptNO, hisTransId);
|
||||
continue;
|
||||
}
|
||||
|
||||
// 对于没有唯一标识的记录,记录警告但继续处理
|
||||
if ("".equals(powerTranID) && "".equals(receiptNO) && "".equals(hisTransId)){
|
||||
log.warn("处理无唯一标识的记录: patientID={}, amount={}, tradeTime={}",
|
||||
patientId, amount, tradeTime);
|
||||
}
|
||||
|
||||
//数据类型 1-门诊 2-住院 无需修改
|
||||
String payMethod = StringDUtil.changeNullToEmpty(hisBillHashMap.get("visitzOrg"));
|
||||
@@ -168,23 +188,17 @@ public class HISGetDataMethodByJH {
|
||||
String originalPayType = StringDUtil.changeNullToEmpty(hisBillHashMap.get("payType"));
|
||||
String payType = convertPayTypeByDictionary(originalPayType, payTypeMap);
|
||||
|
||||
//交易时间
|
||||
String tradeTime = StringDUtil.changeNullToEmpty(hisBillHashMap.get("tradeTime"));
|
||||
|
||||
//操作员
|
||||
String hisOperCode = StringDUtil.changeNullToEmpty(hisBillHashMap.get("hisOperCode"));
|
||||
|
||||
//交易金额
|
||||
String amount = StringDUtil.changeNullToEmpty(hisBillHashMap.get("amount"));
|
||||
|
||||
//说明
|
||||
String remarks = "";
|
||||
|
||||
//银商订单号
|
||||
String platformTransId = StringDUtil.changeNullToEmpty(hisBillHashMap.get("powerTranID"));
|
||||
|
||||
//患者 ID
|
||||
String patientId = StringDUtil.changeNullToEmpty(hisBillHashMap.get("patientID"));
|
||||
//银商订单号:优先使用PowerTranID,如果为空则使用ReceiptNO或HisTransId
|
||||
String platformTransId = powerTranID;
|
||||
if ("".equals(platformTransId)) {
|
||||
platformTransId = "".equals(receiptNO) ? hisTransId : receiptNO;
|
||||
}
|
||||
|
||||
//患者姓名
|
||||
String patientName = StringDUtil.changeNullToEmpty(hisBillHashMap.get("patientName"));
|
||||
|
||||
@@ -47,7 +47,7 @@ public class ReconciliationMethod {
|
||||
|
||||
|
||||
HisbillsHistoryService hisbillsHistoryService = GetBeanUtil.getBean(HisbillsHistoryServiceImpl.class);
|
||||
|
||||
OperatorService operatorService = GetBeanUtil.getBean(OperatorServiceImpl.class);
|
||||
|
||||
//记录是第几次对账
|
||||
int managerNum = 0;
|
||||
@@ -56,6 +56,12 @@ public class ReconciliationMethod {
|
||||
searchMap.put("trade_date", trade_date);
|
||||
searchMap.put("is_ok", 1);
|
||||
|
||||
//查询军保操作员,用于排除军保账单
|
||||
List<HashMap<Object, Object>> militaryOperators = operatorService.findMilitaryOperators(new HashMap<>());
|
||||
if (militaryOperators != null && militaryOperators.size() > 0) {
|
||||
searchMap.put("excludeMilitaryOperators", militaryOperators);
|
||||
}
|
||||
|
||||
//先判断是否已生成
|
||||
List<HashMap<Object, Object>> reconciliationLog = reconciliationLogService.findReconciliationLogByParam(searchMap);
|
||||
|
||||
@@ -803,6 +809,22 @@ public class ReconciliationMethod {
|
||||
}
|
||||
|
||||
reconciliationLogService.insertReconciliationLog(addMap);
|
||||
|
||||
// 对账完成后发送消息通知
|
||||
try {
|
||||
NotifyService notifyService = (NotifyService) GetBeanUtil.getBean("notifyServiceImpl");
|
||||
if (notifyService != null) {
|
||||
String status = "0".equals(errCode) ? "1" : "0"; // 1:成功 0:失败
|
||||
String message = "0".equals(errCode) ? "对账完成" : errMsg;
|
||||
notifyService.sendReconciliationNotify(trade_date, status, message);
|
||||
System.out.println("对账通知发送完成,日期:" + trade_date + ",状态:" + ("1".equals(status) ? "成功" : "失败"));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("发送对账通知失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
// 消息推送失败不影响对账结果
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
errCode = "999";
|
||||
|
||||
Reference in New Issue
Block a user