소스 검색

OMS发票信息部分代码上传

徐滕 3 주 전
부모
커밋
3b7848d8d8
1개의 변경된 파일50개의 추가작업 그리고 6개의 파일을 삭제
  1. 50 6
      src/main/java/com/jeeplus/modules/workinvoice/service/OMS/OMSDisposeService.java

+ 50 - 6
src/main/java/com/jeeplus/modules/workinvoice/service/OMS/OMSDisposeService.java

@@ -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);
+                }
 
             }