|
|
@@ -457,7 +457,7 @@ public class OMSDisposeService {
|
|
|
jedis.hset(redisKey, "workInvoiceId", workInvoiceId);
|
|
|
jedis.hset(redisKey, "informType", informType);
|
|
|
jedis.hset(redisKey, "firstExecTime", String.valueOf(System.currentTimeMillis()));
|
|
|
- jedis.expire(redisKey, 7200); // 2小时过期
|
|
|
+ jedis.expire(redisKey, 14400); // 2小时过期
|
|
|
|
|
|
// ========== 追加:封装Redis数据→转JSON→更新发票表(和红冲方法逻辑一致) ==========
|
|
|
long redisStoreTime = System.currentTimeMillis() / 1000; // 秒级存储时间,用于后期回滚
|
|
|
@@ -468,7 +468,7 @@ public class OMSDisposeService {
|
|
|
downloadTaskMap.put("informType", informType);
|
|
|
downloadTaskMap.put("firstExecTime", String.valueOf(System.currentTimeMillis())); // 和Redis保持一致的毫秒数字符串
|
|
|
downloadTaskMap.put("redisKey", redisKey);
|
|
|
- downloadTaskMap.put("redisExpireSeconds", 7200);
|
|
|
+ downloadTaskMap.put("redisExpireSeconds", 14400);
|
|
|
downloadTaskMap.put("redisStoreTime", redisStoreTime); // 新增秒级存储时间
|
|
|
|
|
|
// Map转JSON字符串(单独捕获序列化异常,不影响核心逻辑)
|
|
|
@@ -501,13 +501,57 @@ public class OMSDisposeService {
|
|
|
//将错误信息保存到数据库
|
|
|
workInvoice.setOmsErrorMessage(errorMessage);
|
|
|
workInvoice.setOmsAccessToken(accessToken);
|
|
|
- workInvoice.setInvoiceState("3");
|
|
|
+ if(errorMessage.contains("订单已存在")){
|
|
|
+ //如果开过票
|
|
|
+ workInvoice.setInvoiceState("12");
|
|
|
+ //同时需要将下载的redis进行恢复,以及保存到数据库中
|
|
|
+ Jedis jedis = null;
|
|
|
+ try {
|
|
|
+ jedis = JedisUtils.getResource();
|
|
|
+ String redisKey = "OMS_invoice_download:" + workInvoiceId;
|
|
|
+ jedis.hset(redisKey, "accessToken", accessToken);
|
|
|
+ jedis.hset(redisKey, "workInvoiceId", workInvoiceId);
|
|
|
+ jedis.hset(redisKey, "informType", informType);
|
|
|
+ jedis.hset(redisKey, "firstExecTime", String.valueOf(System.currentTimeMillis()));
|
|
|
+ jedis.expire(redisKey, 14400); // 2小时过期
|
|
|
+
|
|
|
+ // ========== 追加:封装Redis数据→转JSON→更新发票表(和红冲方法逻辑一致) ==========
|
|
|
+ long redisStoreTime = System.currentTimeMillis() / 1000; // 秒级存储时间,用于后期回滚
|
|
|
+ // 封装Map:和Redis中存储的键值完全一致,方便后期回滚解析
|
|
|
+ Map<String, Object> downloadTaskMap = new HashMap<>(10);
|
|
|
+ downloadTaskMap.put("accessToken", accessToken);
|
|
|
+ downloadTaskMap.put("workInvoiceId", workInvoiceId);
|
|
|
+ downloadTaskMap.put("informType", informType);
|
|
|
+ downloadTaskMap.put("firstExecTime", String.valueOf(System.currentTimeMillis())); // 和Redis保持一致的毫秒数字符串
|
|
|
+ downloadTaskMap.put("redisKey", redisKey);
|
|
|
+ downloadTaskMap.put("redisExpireSeconds", 14400);
|
|
|
+ downloadTaskMap.put("redisStoreTime", redisStoreTime); // 新增秒级存储时间
|
|
|
+
|
|
|
+ // Map转JSON字符串(单独捕获序列化异常,不影响核心逻辑)
|
|
|
+ String downloadTaskJson = objectMapper.writeValueAsString(downloadTaskMap);
|
|
|
+
|
|
|
+ // 更新发票表(和红冲方法用相同的DAO/实体,保持风格统一)
|
|
|
+ workInvoice.setBlueDownloadInvoiceJson(downloadTaskJson);
|
|
|
+ workInvoiceDao.updateRedInvoiceJsonByWorkInvoiceId(workInvoice);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if (jedis != null) jedis.close();
|
|
|
+ }
|
|
|
+
|
|
|
+ }else if(errorMessage.contains("该发票已经开过票")){
|
|
|
+ workInvoice.setInvoiceState("5");
|
|
|
+ }else{
|
|
|
+ workInvoice.setInvoiceState("3");
|
|
|
+ }
|
|
|
//修改结果
|
|
|
workInvoiceDao.updateAccessTokenErrorById(workInvoice);
|
|
|
|
|
|
-
|
|
|
- //通知发起人或者开票管理员
|
|
|
- workInvoiceService.handleInvoiceRetryAllFail(workInvoice, errorMessage, informType);
|
|
|
+ if(!"12".equals(workInvoice.getInvoiceState())){
|
|
|
+ //通知发起人或者开票管理员
|
|
|
+ workInvoiceService.handleInvoiceRetryAllFail(workInvoice, errorMessage, informType);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|