update:对账消息推送,军保账单统计,退款数据统计

This commit is contained in:
Yuan
2025-10-20 14:39:29 +08:00
parent 9fb2ea9cb4
commit ff5bad9967
35 changed files with 3649 additions and 100 deletions

View File

@@ -39,11 +39,12 @@ public class BankGetData implements Job {
HashMap<Object, Object> wlifSearchMap = new HashMap<>();
wlifSearchMap.put("FUBS", "1");
List<HashMap<Object, Object>> thirdFtpConfigList = thirdFtpConfigService.findThirdFtpConfigList(searchMap);
List<HashMap<Object, Object>> wlConfigList = thirdFtpConfigService.findWLIF(searchMap);
List<HashMap<Object, Object>> wlConfigList = thirdFtpConfigService.findWLIF(wlifSearchMap);
for (int i = 0; i < thirdFtpConfigList.size(); i++) {
HashMap<Object, Object> hashMap = thirdFtpConfigList.get(i);
String execute_class = StringDUtil.changeNullToEmpty(hashMap.get("EXECUTE_CLASS"));

View File

@@ -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);
// 如果有数据

View File

@@ -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"));

View File

@@ -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";