Files
dzpt/src/main/java/com/saye/hospitalgd/scheduler/jobMethod/BankGetDataByWXAPI.java
2025-07-31 15:27:47 +08:00

138 lines
5.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.saye.hospitalgd.scheduler.jobMethod;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.saye.hospitalgd.commons.date.DateDUtil;
import com.saye.hospitalgd.commons.getBean.GetBeanUtil;
import com.saye.hospitalgd.commons.log.LogUtil;
import com.saye.hospitalgd.commons.string.StringDUtil;
import com.saye.hospitalgd.entity.BankbillHistory;
import com.saye.hospitalgd.service.BankbillGetinfoService;
import com.saye.hospitalgd.service.BankbillHistoryService;
import com.saye.hospitalgd.service.impl.BankbillGetinfoServiceImpl;
import com.saye.hospitalgd.service.impl.BankbillHistoryServiceImpl;
import com.saye.hospitalgd.service.system.ServiceParamsService;
import com.saye.hospitalgd.service.system.impl.ServiceParamsServiceImpl;
import com.saye.hospitalgd.util.HttpDutil;
import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.List;
/**
* @author Mr.zs
* @date 2024/6/25
*/
@Slf4j
public class BankGetDataByWXAPI {
public HashMap<Object, Object> getDate(String id, String name, String trade_date, HashMap<Object, Object> map) {
HashMap<Object, Object> resultMap = new HashMap<>();
String errCode = "0";
String errMsg = "";
BankbillHistoryService bankbillHistoryService = GetBeanUtil.getBean(BankbillHistoryServiceImpl.class);
BankbillGetinfoService bankbillGetinfoService = GetBeanUtil.getBean(BankbillGetinfoServiceImpl.class);
ServiceParamsService serviceParamsService = GetBeanUtil.getBean(ServiceParamsServiceImpl.class);
boolean isOk = false;
// 重新执行最多10次 还没获取到肯定有问题 不执行了
// 如果有传入时间 那就只执行一次 获取不到就还是获取不到
int num = "".equals(trade_date) ? 0 : 9;
while (!isOk && num < 10) {
num++;
String bill_table_name = StringDUtil.changeNullToEmpty(map.get("BILL_TABLE_NAME"));
String thirdConfigId = StringDUtil.changeNullToEmpty(map.get("ID"));
String dateStr = "";
// 如果有传入时间 那就使用传入时间
if (StrUtil.isNotBlank(trade_date)) {
DateTime parse = DateUtil.parse(trade_date);
dateStr = DateUtil.format(parse, "yyyyMMdd");
} else {
DateTime yesterday = DateUtil.yesterday();
dateStr = DateUtil.format(yesterday, "yyyyMMdd");
trade_date = DateUtil.format(yesterday, "yyyy-MM-dd");
}
map.put("trade_date", dateStr);
try {
List<HashMap<Object, Object>> serviceParams = serviceParamsService.findParamValByParamCode("hgd_dmz");
String dmz_url = StringDUtil.changeNullToEmpty(serviceParams.get(0).get("PARAM_VAL"));
String result = HttpDutil.post(dmz_url + "/getBankDataByWXAPI", map);
// 解析返回的json字符串
JSONObject jsonObject = JSONObject.parseObject(result);
errCode = StringDUtil.changeNullToEmpty(jsonObject.get("errCode"));
errMsg = StringDUtil.changeNullToEmpty(jsonObject.get("errMsg"));
// 如果没问题 解析返回的集合
if ("0".equals(errCode)) {
String list = StringDUtil.changeNullToEmpty(jsonObject.get("list"));
List<BankbillHistory> bankbillHistories = JSONArray.parseArray(list, BankbillHistory.class);
// 如果有数据
if (bankbillHistories != null && bankbillHistories.size() > 0) {
// 先存一份原始的 这份只是留底查询
bankbillHistoryService.insertBankBillOriginal(bankbillHistories, trade_date, bill_table_name);
// 再存一份修改替换其中一些字段的
bankbillHistoryService.insertAllBankHistory(bankbillHistories, trade_date, bill_table_name);
}
isOk = true;
} else {
isOk = false;
}
} catch (Exception e) {
e.printStackTrace();
errCode = "999";
errMsg = "处理数据错误,原因:" + e.getMessage();
isOk = false;
}
// 记录数据获取记录
HashMap<Object, Object> addMap = new HashMap<>();
addMap.put("trade_date", trade_date);
addMap.put("quartz_id", id);
addMap.put("quartz_name", name);
addMap.put("bill_table_name", bill_table_name);
addMap.put("thirdConfigId", thirdConfigId);
if (isOk) {
addMap.put("is_ok", "1");
} else {
addMap.put("is_ok", "0");
}
addMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
bankbillGetinfoService.insertBankbillGetinfo(addMap);
// 判断是否成功 如果失败 执行休眠一小时
if (!isOk && num < 10) {
try {
// 记录日志
LogUtil.error(this.getClass(), errMsg);
System.out.println("获取对账记录没有成功1小时后重新执行");
Thread.sleep(1000 * 60 * 60);
} catch (Exception e) {
e.printStackTrace();
}
}
}
resultMap.put("errCode", errCode);
resultMap.put("errMsg", errMsg);
return resultMap;
}
}