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

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