From 09f364d067c397fd615bccaeb90c8e2a61816783 Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 20 Nov 2024 10:23:54 +0800 Subject: [PATCH] md --- .../EmisSettleInvoiceChRecordServiceImpl.java | 62 +++++++++++++++++-- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceChRecordServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceChRecordServiceImpl.java index e9cfadf19..428a6c986 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceChRecordServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceChRecordServiceImpl.java @@ -168,7 +168,14 @@ public class EmisSettleInvoiceChRecordServiceImpl implements IEmisSettleInvoiceC EmisBaseInvoiceChInfo emisBaseInvoiceChInfo=emisBaseInvoiceChInfoMapper.selectEmisBaseInvoiceChInfoByTaxNo(old.getSalerCompanyTaxNo()); HXOrderInfo order = new HXOrderInfo(); - String token=HXSdk.getToken(emisBaseInvoiceChInfo.getAppKey(),emisBaseInvoiceChInfo.getAppSecret()); + + // 判断token是否存在如果token不存在则获取token + if(StringUtils.isEmpty(emisBaseInvoiceChInfo.getToken())) { + String token = HXSdk.getToken(emisBaseInvoiceChInfo.getAppKey(), emisBaseInvoiceChInfo.getAppSecret()); + emisBaseInvoiceChInfo.setToken(token); + // 更新token + emisBaseInvoiceChInfoMapper.updateEmisBaseInvoiceChInfo(emisBaseInvoiceChInfo); + } order.setOrderNo(old.getReqNo()); order.setBuyerTaxNum(old.getCompanyTaxNo()); @@ -255,7 +262,27 @@ public class EmisSettleInvoiceChRecordServiceImpl implements IEmisSettleInvoiceC order.setDetailInfos(goodsList); - JSONObject jRst =HXSdk.asyncOpenBillReceive(order,token); + JSONObject jRst =HXSdk.asyncOpenBillReceive(order,emisBaseInvoiceChInfo.getToken()); + // 如果token失效则重新获取token再触发一次 + /* + "code": "B0301", + "exceptionClazz": "AuthException", + "exceptionPlace": "", + "exceptionTip": "当前登录会话过期,请重新登录", + "message": "当前登录会话过期,请重新登录", + */ + String rstCode=jRst.getString("code"); + String rstMsg=jRst.getString("message"); + if("B0301".equals(rstCode) || "当前登录会话过期,请重新登录".equals(rstMsg)){ + String token = HXSdk.getToken(emisBaseInvoiceChInfo.getAppKey(), emisBaseInvoiceChInfo.getAppSecret()); + emisBaseInvoiceChInfo.setToken(token); + // 更新token + emisBaseInvoiceChInfoMapper.updateEmisBaseInvoiceChInfo(emisBaseInvoiceChInfo); + + // 再次发出请求 + jRst =HXSdk.asyncOpenBillReceive(order,emisBaseInvoiceChInfo.getToken()); + } + // 更新开票状态 if( "00000".equals(jRst.getString("code")) ){ EmisSettleInvoiceChRecord newRecord=new EmisSettleInvoiceChRecord(); @@ -303,10 +330,37 @@ public class EmisSettleInvoiceChRecordServiceImpl implements IEmisSettleInvoiceC EmisBaseInvoiceChInfo emisBaseInvoiceChInfo = emisBaseInvoiceChInfoMapper.selectEmisBaseInvoiceChInfoByTaxNo(itemRecord.getSalerCompanyTaxNo()); - String token = HXSdk.getToken(emisBaseInvoiceChInfo.getAppKey(), emisBaseInvoiceChInfo.getAppSecret()); + // 判断token是否存在如果token不存在则获取token + if(StringUtils.isEmpty(emisBaseInvoiceChInfo.getToken())) { + String token = HXSdk.getToken(emisBaseInvoiceChInfo.getAppKey(), emisBaseInvoiceChInfo.getAppSecret()); + emisBaseInvoiceChInfo.setToken(token); + // 更新token + emisBaseInvoiceChInfoMapper.updateEmisBaseInvoiceChInfo(emisBaseInvoiceChInfo); + } // 立即查询状态 - JSONObject jQRst = HXSdk.queryInvoiceResult(itemRecord.getReqNo(), token); + JSONObject jQRst = HXSdk.queryInvoiceResult(itemRecord.getReqNo(), emisBaseInvoiceChInfo.getToken()); + // 如果token失效则重新获取token再触发一次 + /* + "code": "B0301", + "exceptionClazz": "AuthException", + "exceptionPlace": "", + "exceptionTip": "当前登录会话过期,请重新登录", + "message": "当前登录会话过期,请重新登录", + */ + String rstCode=jQRst.getString("code"); + String rstMsg=jQRst.getString("message"); + if("B0301".equals(rstCode) || "当前登录会话过期,请重新登录".equals(rstMsg)){ + String token = HXSdk.getToken(emisBaseInvoiceChInfo.getAppKey(), emisBaseInvoiceChInfo.getAppSecret()); + emisBaseInvoiceChInfo.setToken(token); + // 更新token + emisBaseInvoiceChInfoMapper.updateEmisBaseInvoiceChInfo(emisBaseInvoiceChInfo); + + // 再次发出请求 + jQRst = HXSdk.queryInvoiceResult(itemRecord.getReqNo(), token); + } + + if ("00000".equals(jQRst.getString("code"))) { JSONObject data = jQRst.getJSONObject("data"); JSONArray jInvoiceInfos = data.getJSONArray("invoiceInfos");