简税合并版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
jianshui-all/jianshui-invoice/src/main/java/com/jianshui/invoice/task/QueryBackZhongQiTask.java

87 lines
3.3 KiB

package com.jianshui.invoice.task;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.jianshui.common.core.domain.entity.Companyservice;
import com.jianshui.common.core.redis.RedisCache;
import com.jianshui.common.utils.StringUtils;
import com.jianshui.common.utils.spring.SpringUtils;
import com.jianshui.framework.manager.AsyncManager;
import com.jianshui.invoice.domain.BillInfo;
import com.jianshui.invoice.domain.Invoice;
import com.jianshui.invoice.domain.dto.QueryBillInfoDTO;
import com.jianshui.invoice.mapper.InvoiceMapper;
import com.jianshui.invoice.service.IInvoiceApiService;
import com.jianshui.queue.utils.RedisQueueUtil;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import java.util.TimerTask;
/**
* @Description 重汽开票回调
**/
@Slf4j
public class QueryBackZhongQiTask extends TimerTask {
private String callBackUrl;
private Long id;
public QueryBackZhongQiTask(String callBackUrl, Long id) {
this.callBackUrl = callBackUrl;
this.id = id;
}
@SneakyThrows
@Override
public void run() {
RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
InvoiceMapper invoiceMapper = SpringUtils.getBean(InvoiceMapper.class);
Invoice invoice = invoiceMapper.selectInvoiceById(id);
if (invoice == null) {
log.info("【控制台】发票信息未查询到,id={}", id);
return;
}
try {
log.info("【控制台】发票回调接口,发送数据开始,id={}", id);
String result = HttpUtil.post(callBackUrl, JSONUtil.toJsonStr(invoice));
log.info("【控制台】发票回调接口,发送数据结束,id={},接口返回信息={}", id, JSONUtil.toJsonStr(invoice));
} catch (Exception e) {
log.info("【控制台】发票回调接口,发送数据异常,id={}", id);
return;
}
// TODO: 2023/10/25 回调队列看一下怎么处理
/* if (invoice == null || StringUtils.equalsAny(Integer.toString(invoice.getState()), "0", "20")) {
// 查询下失败队列,是否有次数
String keys = "invoice_query_times_" + this.companyservice.getCompanyid() + "_" + this.finalBillInfo.getSystemOrderno();
Integer queryTimes = redisCache.getCacheObject(keys);
// 查询重试次数超过20次,就不查了
if (queryTimes != null && queryTimes > 20) {
log.error("【定时任务】【发票查询】发票信息始终不存在,不再进行查询:{}", JSONObject.toJSONString(this.finalBillInfo));
redisCache.deleteObject(keys);
return;
}
if (queryTimes == null) {
queryTimes = 0;
}
queryTimes += 1;
redisCache.setCacheObject(keys, queryTimes);
log.error("【定时任务】【发票查询】发票信息不存在或还在开票中,再次进入查询:{}", JSONObject.toJSONString(this.finalBillInfo));
AsyncManager.me().execute(new QueryBackZhongQiTask(this.finalBillInfo, companyservice, this.invoiceApiService));
}
RedisQueueUtil.build().setData(invoice).onQueue("invoice_add_callback_consumer").retry(0).dispatch();*/
}
}