From cbc9cb8b93e3fdbd33557843f5e20fc6866b8e15 Mon Sep 17 00:00:00 2001 From: lvleigang <957075182@qq.com> Date: Tue, 9 Sep 2025 13:42:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E9=80=81=E6=9D=AD=E5=B7=9E=E9=93=B6?= =?UTF-8?q?=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../seeyon/zxbank/entity/ZxBankEntity.java | 9 + .../seeyon/zxbank/entity/ZxBankEntity.xml | 6 +- .../service/impl/ZxBankServiceImpl.java | 560 +++++++++++++----- 3 files changed, 428 insertions(+), 147 deletions(-) diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/entity/ZxBankEntity.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/entity/ZxBankEntity.java index 20177fe0..4de3b356 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/entity/ZxBankEntity.java +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/entity/ZxBankEntity.java @@ -33,6 +33,7 @@ public class ZxBankEntity extends BaseEntity { private String summaryId;// private String mainId;//主表id private String workitemId;//主表id + private String fDocumentNo;//主表id public String getSummaryId() { return summaryId; @@ -273,4 +274,12 @@ public class ZxBankEntity extends BaseEntity { public void setWorkitemId(String workitemId) { this.workitemId = workitemId; } + + public String getfDocumentNo() { + return fDocumentNo; + } + + public void setfDocumentNo(String fDocumentNo) { + this.fDocumentNo = fDocumentNo; + } } diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/entity/ZxBankEntity.xml b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/entity/ZxBankEntity.xml index 3d14938d..94f7ce1a 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/entity/ZxBankEntity.xml +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/entity/ZxBankEntity.xml @@ -4,6 +4,7 @@ + @@ -38,6 +39,7 @@ data_id as dataId ,source_flow_number as sourceFlowNumber ,document_no as documentNo + ,f_document_no as fDocumentNo ,company_code as companyCode ,fund_type as fundType ,digest as digest @@ -94,12 +96,12 @@ diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/service/impl/ZxBankServiceImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/service/impl/ZxBankServiceImpl.java index 5b2ebc63..4909c399 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/service/impl/ZxBankServiceImpl.java +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/service/impl/ZxBankServiceImpl.java @@ -167,168 +167,230 @@ public class ZxBankServiceImpl extends BaseService impleme try { ZxBankEntity zxBankEntity = json.toJavaObject(ZxBankEntity.class); zxBankEntity.setDataSourceCode("HT-OA"); - logger.info("======开始查询中信返回的支付结果====="); + logger.error("======开始查询中信返回的支付结果====="); List zxBankEntities = zxBankDao.queryResultIsNullZX(zxBankEntity); + logger.error("======查询新试图====="); List zxBankEntities1 = zxBankDao.queryResultIsNullZXNew(zxBankEntity); - if(zxBankEntities1 != null && zxBankEntities1.size() > 0){ - if(zxBankEntities == null){ - zxBankEntities = new ArrayList<>(); - } - zxBankEntities.addAll(zxBankEntities1); - } - if(CollectionUtils.isEmpty(zxBankEntities)){ - logger.info("=====杭泰付款单中没有已推送并且支付结果为空的数据========"); - return BaseResult.getSuccessMessageEntity("查询成功"); - } + logger.error("======查询新试图返回结果1====="); + if(zxBankEntities != null&& zxBankEntities.size() > 0){ for (ZxBankEntity bankEntity : zxBankEntities) { - List list = new ArrayList<>(); - list.add(bankEntity.getDocumentNo()); - JSONObject jsonObject=new JSONObject(); - jsonObject.put("documentNoList",list); - JSONObject objectData=new JSONObject(); - objectData.put("data",jsonObject); - logger.info("=======杭泰付款单调用中信支付结果查询请求参数明文为:{}", objectData.toJSONString()); - String encrypt = SM2Util.encrypt(objectData.toJSONString(), publicKey); - JSONObject jsonData=new JSONObject(); - jsonData.put("data",encrypt); - //logger.info("=======杭泰付款单调用中信支付结果查询请求参数密文为:{}", jsonData.toJSONString()); - //发送数据 - String result = HttpRequest.post(url). - header("appId", "800058"). - header("apiCode", "8000580001"). - //header("access_token", tokenBody). - header("publicKey", "ZJYALA1PchEI1s2D5vaapO9RZ6CiDFv/pJAV88lRYg0oBwBCe7eDIk+3zDUT+v578prj"). - header("secretKey", "jcoATYyty05KgDwL4O0xD+Ulq5ExYWkGvZGf2bhKrMaCehb3NIm5DUnJSK/r2SUaj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA="). - body(jsonData.toJSONString()). - execute(). - body(); - logger.info("========杭泰付款单调用中信支付结果查询返回参数为:{}==========", result); - JSONObject resultJson = JSONObject.parseObject(result); - if (!resultJson.getBoolean("flag")) { - saveTaskLivingDetails(bankEntity.getDataId(), bankEntity.getDocumentNo(), jsonData.toJSONString(), resultJson.toJSONString(), false,"ZxBankResultPluginInitializer"); - } else { - JSONObject attribute = resultJson.getJSONObject("attribute"); - String data = attribute.getString("data"); - // logger.info("=======杭泰付款单调用中信支付结果查询返回参数密文为:{}", data); - String decrypt = SM2Util.decrypt(data, privateKey); - logger.info("=======杭泰付款单调用中信支付结果查询返回参数明文为:{}", decrypt); - JSONObject jsonObjectData = JSONObject.parseObject(decrypt); - JSONArray jsonArray = jsonObjectData.getJSONArray("list"); - if(CollectionUtils.isNotEmpty(jsonArray)){ - for (Object o : jsonArray) { - JSONObject jsonObjectList=(JSONObject) JSON.toJSON(o); - String documentNo = jsonObjectList.getString("documentNo");//返回的业务单据号 - String payStatus = jsonObjectList.getString("payStatus");//返回的状态 - String errorMsg = jsonObjectList.getString("errorMsg");//返回的错误信息 - logger.info("====付款單查询中信返回的单据号为:{},返回结果为:{},错误信息为:{}",documentNo,payStatus,errorMsg); - if(documentNo.equals(bankEntity.getDocumentNo())){ - //修改支付状态 - bankEntity.setPayResult(PayState.payStateGetValue(payStatus)); - bankEntity.setDataSourceCode("HT-OA"); - bankEntity.setId(bankEntity.getDataId()); - //中信银行 有很多状态是PAYING的,也会提示错误信息 - if (StrUtil.isNotEmpty(errorMsg)){ - bankEntity.setPayResult(errorMsg); - } - zxBankDao.updateResultStatus(bankEntity); - //1、查询单据是否全部流程结束 - logger.error("====付款單查询中信返回的单据号为:{},返回结果为:{},错误信息为:{}",documentNo,payStatus,errorMsg); - List resultList = null; - bankEntity.setDataSourceCode("HT-OA"); - - //对公付款单 - if("formson_0329".equals(bankEntity.getTabName())){ - resultList = zxBankDao.queryResultStatusMx(bankEntity); - } - //招待报销单 - if("formmain_0294".equals(bankEntity.getTabName())) { - resultList = zxBankDao.queryResultStatus(bankEntity); - } - //日常报销单 - if("formmain_0314".equals(bankEntity.getTabName())) { - resultList = zxBankDao.queryResultStatus(bankEntity); - - } - // 差旅报销单-新 - if("formmain_0533".equals(bankEntity.getTabName())) { - resultList = zxBankDao.queryResultStatus(bankEntity); - - } - // 借还款 - if("formmain_0293".equals(bankEntity.getTabName())) { - resultList = zxBankDao.queryResultStatus(bankEntity); - - } - //资金归集 - if("formson_0378".equals(bankEntity.getTabName())) { - resultList = zxBankDao.queryResultStatusMx(bankEntity); - - } - //资金拨付 - if("formson_0465".equals(bankEntity.getTabName())) { - resultList = zxBankDao.queryResultStatusMx(bankEntity); - - } - //同名账户划转 - if("formson_0469".equals(bankEntity.getTabName())) { - resultList = zxBankDao.queryResultStatusMx(bankEntity); - - } - //2、修改流程结果 - - if(resultList != null && resultList.size() > 0){ - int cg = 0; - int zfz = 0; - int sl = 0; - String workitemId = null; - for (int i = 0; i < resultList.size(); i++) { - sl++; - if(resultList.get(i).getPayResult() != null && ("已支付".equals(resultList.get(i).getPayResult()) || "支付成功".equals(resultList.get(i).getPayResult()) )){ - cg++; - } - if(resultList.get(i).getPayResult() == null || "".equals(resultList.get(i).getPayResult()) || "支付中".equals(resultList.get(i).getPayResult())){ - zfz++; - } - if(workitemId == null){ - workitemId = resultList.get(i).getWorkitemId(); - } + List list = new ArrayList<>(); + list.add(bankEntity.getDocumentNo()); + JSONObject jsonObject=new JSONObject(); + jsonObject.put("documentNoList",list); + JSONObject objectData=new JSONObject(); + objectData.put("data",jsonObject); + logger.info("=======杭泰付款单调用中信支付结果查询请求参数明文为:{}", objectData.toJSONString()); + String encrypt = SM2Util.encrypt(objectData.toJSONString(), publicKey); + JSONObject jsonData=new JSONObject(); + jsonData.put("data",encrypt); + //logger.info("=======杭泰付款单调用中信支付结果查询请求参数密文为:{}", jsonData.toJSONString()); + //发送数据 + String result = HttpRequest.post(url). + header("appId", "800058"). + header("apiCode", "8000580001"). + //header("access_token", tokenBody). + header("publicKey", "ZJYALA1PchEI1s2D5vaapO9RZ6CiDFv/pJAV88lRYg0oBwBCe7eDIk+3zDUT+v578prj"). + header("secretKey", "jcoATYyty05KgDwL4O0xD+Ulq5ExYWkGvZGf2bhKrMaCehb3NIm5DUnJSK/r2SUaj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA="). + body(jsonData.toJSONString()). + execute(). + body(); + logger.info("========杭泰付款单调用中信支付结果查询返回参数为:{}==========", result); + JSONObject resultJson = JSONObject.parseObject(result); + if (!resultJson.getBoolean("flag")) { + saveTaskLivingDetails(bankEntity.getDataId(), bankEntity.getDocumentNo(), jsonData.toJSONString(), resultJson.toJSONString(), false,"ZxBankResultPluginInitializer"); + } else { + JSONObject attribute = resultJson.getJSONObject("attribute"); + String data = attribute.getString("data"); + // logger.info("=======杭泰付款单调用中信支付结果查询返回参数密文为:{}", data); + String decrypt = SM2Util.decrypt(data, privateKey); + logger.info("=======杭泰付款单调用中信支付结果查询返回参数明文为:{}", decrypt); + JSONObject jsonObjectData = JSONObject.parseObject(decrypt); + JSONArray jsonArray = jsonObjectData.getJSONArray("list"); + if(CollectionUtils.isNotEmpty(jsonArray)){ + for (Object o : jsonArray) { + JSONObject jsonObjectList=(JSONObject) JSON.toJSON(o); + String documentNo = jsonObjectList.getString("documentNo");//返回的业务单据号 + String payStatus = jsonObjectList.getString("payStatus");//返回的状态 + String errorMsg = jsonObjectList.getString("errorMsg");//返回的错误信息 + logger.info("====付款單查询中信返回的单据号为:{},返回结果为:{},错误信息为:{}",documentNo,payStatus,errorMsg); + if(documentNo.equals(bankEntity.getDocumentNo())){ + //修改支付状态 + bankEntity.setPayResult(PayState.payStateGetValue(payStatus)); + bankEntity.setDataSourceCode("HT-OA"); + bankEntity.setId(bankEntity.getDataId()); + //中信银行 有很多状态是PAYING的,也会提示错误信息 + if (StrUtil.isNotEmpty(errorMsg)){ + bankEntity.setPayResult(errorMsg); } - logger.error("付款單查询支付中状态:{}",zfz); - if(zfz == 0){//没有支付中才处理流程 - if(workitemId != null && !"".equals(workitemId)){ - String token = getTokens(); - logger.error("付款單token状态:{}",token); + zxBankDao.updateResultStatus(bankEntity); + saveTaskLivingDetails(bankEntity.getDataId(), bankEntity.getDocumentNo(), jsonData.toJSONString(), resultJson.toJSONString(), true,"ZxBankResultPluginInitializer"); + } + } + }else{ + logger.info("====查询支付结果返回值中的list为空===="); + //TODO 为空说明根本就没推到司库,这部分数据是推送时就报错了 ,这里要改下。 在推送司库时如果推送失败当时就要更新错误信息,避免这里查到为空的 + } + } + } + } + if(zxBankEntities1 != null&& zxBankEntities1.size() > 0){ + for (ZxBankEntity bankEntity : zxBankEntities1) { - if(cg == sl){//流程提交 - String senddata = finishValueOf(workitemId,"支付结果获取成功"); - logger.error("修改流程提交发送:{}",senddata); + List list = new ArrayList<>(); + list.add(bankEntity.getDocumentNo()); + JSONObject jsonObject=new JSONObject(); + jsonObject.put("documentNoList",list); + JSONObject objectData=new JSONObject(); + objectData.put("data",jsonObject); + logger.info("=======杭泰付款单调用中信支付结果查询请求参数明文为:{}", objectData.toJSONString()); + String encrypt = SM2Util.encrypt(objectData.toJSONString(), publicKey); + JSONObject jsonData=new JSONObject(); + jsonData.put("data",encrypt); + logger.error("=======杭泰付款单调用中信支付结果查询请求参数密文为:{}铭文{}", jsonData.toJSONString(),bankEntity.getDocumentNo()); + //发送数据 + String result = HttpRequest.post(url). + header("appId", "800058"). + header("apiCode", "8000580001"). + //header("access_token", tokenBody). + header("publicKey", "ZJYALA1PchEI1s2D5vaapO9RZ6CiDFv/pJAV88lRYg0oBwBCe7eDIk+3zDUT+v578prj"). + header("secretKey", "jcoATYyty05KgDwL4O0xD+Ulq5ExYWkGvZGf2bhKrMaCehb3NIm5DUnJSK/r2SUaj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA="). + body(jsonData.toJSONString()). + execute(). + body(); + logger.error("========杭泰付款单调用中信支付结果查询返回参数为:{}====={}=====", result,bankEntity.getDocumentNo()); + JSONObject resultJson = JSONObject.parseObject(result); + if (!resultJson.getBoolean("flag")) { + saveTaskLivingDetails(bankEntity.getDataId(), bankEntity.getDocumentNo(), jsonData.toJSONString(), resultJson.toJSONString(), false,"ZxBankResultPluginInitializer"); + } else { + JSONObject attribute = resultJson.getJSONObject("attribute"); + String data = attribute.getString("data"); + // logger.info("=======杭泰付款单调用中信支付结果查询返回参数密文为:{}", data); + String decrypt = SM2Util.decrypt(data, privateKey); + logger.error("=======杭泰付款单调用中信支付结果查询返回参数明文为:{},{}", decrypt,bankEntity.getDocumentNo()); + JSONObject jsonObjectData = JSONObject.parseObject(decrypt); + JSONArray jsonArray = jsonObjectData.getJSONArray("list"); + if(CollectionUtils.isNotEmpty(jsonArray)){ + for (Object o : jsonArray) { + JSONObject jsonObjectList=(JSONObject) JSON.toJSON(o); + String documentNo = jsonObjectList.getString("documentNo");//返回的业务单据号 + String payStatus = jsonObjectList.getString("payStatus");//返回的状态 + String errorMsg = jsonObjectList.getString("errorMsg");//返回的错误信息 + logger.error("====付款單查询中信返回的单据号为:{},返回结果为:{},错误信息为:{}",documentNo,payStatus,errorMsg); + if(documentNo.equals(bankEntity.getDocumentNo())){ + //修改支付状态 + bankEntity.setPayResult(PayState.payStateGetValue(payStatus)); + bankEntity.setDataSourceCode("HT-OA"); + bankEntity.setId(bankEntity.getDataId()); + //中信银行 有很多状态是PAYING的,也会提示错误信息 + if (StrUtil.isNotEmpty(errorMsg)){ + bankEntity.setPayResult(errorMsg); + } + zxBankDao.updateResultStatus(bankEntity); + //1、查询单据是否全部流程结束 + logger.error("====付款單查询中信返回的单据号为:{},返回结果为:{},错误信息为:{}",documentNo,payStatus,errorMsg); - String returnData = doSendData("8000590007",token,senddata); - logger.error("修改流程提交返回结果"+returnData); + List resultList = null; + bankEntity.setDataSourceCode("HT-OA"); - if (StrUtil.isNotEmpty(returnData)){ + //对公付款单 + if("formson_0329".equals(bankEntity.getTabName())){ + resultList = zxBankDao.queryResultStatusMx(bankEntity); + } + //招待报销单 + if("formmain_0294".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatus(bankEntity); + } + //日常报销单 + if("formmain_0314".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatus(bankEntity); + + } + // 差旅报销单-新 + if("formmain_0533".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatus(bankEntity); + + } + // 借还款 + if("formmain_0293".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatus(bankEntity); + + } + //资金归集 + if("formson_0378".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatusMx(bankEntity); + + } + //资金拨付 + if("formson_0465".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatusMx(bankEntity); + + } + //同名账户划转 + if("formson_0469".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatusMx(bankEntity); + + } + //2、修改流程结果 + + if(resultList != null && resultList.size() > 0){ + int cg = 0; + int zfz = 0; + int sl = 0; + String workitemId = null; + for (int i = 0; i < resultList.size(); i++) { + sl++; + if(resultList.get(i).getPayResult() != null && ("已支付".equals(resultList.get(i).getPayResult()) || "支付成功".equals(resultList.get(i).getPayResult()) )){ + cg++; + } + if(resultList.get(i).getPayResult() == null || "".equals(resultList.get(i).getPayResult()) || "支付中".equals(resultList.get(i).getPayResult())){ + zfz++; + } + if(workitemId == null){ + workitemId = resultList.get(i).getWorkitemId(); + } + } + logger.error("付款單查询支付中状态:{}",zfz); + if(zfz == 0){//没有支付中才处理流程 + if(workitemId != null && !"".equals(workitemId)){ + String token = getTokens(); + logger.error("付款單token状态:{}",token); + + if(cg == sl){//流程提交 + + String senddata = finishValueOf(workitemId,"支付结果获取成功"); + logger.error("修改流程提交发送:{}",senddata); + + String returnData = doSendData("8000590007",token,senddata); logger.error("修改流程提交返回结果"+returnData); - } - }else {//流程回退 - String senddata = stepBackValueOf(workitemId,"支付错误退回"); - logger.error("修改流程回退发送:{}",senddata); - String returnData = doSendData("8000590006",token,senddata); - logger.error("修改流程回退返回结果"+returnData); - if (StrUtil.isNotEmpty(returnData)){ + + if (StrUtil.isNotEmpty(returnData)){ + logger.error("修改流程提交返回结果"+returnData); + } + }else {//流程回退 + String senddata = stepBackValueOf(workitemId,"支付错误退回"); + logger.error("修改流程回退发送:{}",senddata); + String returnData = doSendData("8000590006",token,senddata); logger.error("修改流程回退返回结果"+returnData); + if (StrUtil.isNotEmpty(returnData)){ + logger.error("修改流程回退返回结果"+returnData); + } } } } } + saveTaskLivingDetails(bankEntity.getDataId(), bankEntity.getDocumentNo(), jsonData.toJSONString(), resultJson.toJSONString(), true,"ZxBankResultPluginInitializer"); } - saveTaskLivingDetails(bankEntity.getDataId(), bankEntity.getDocumentNo(), jsonData.toJSONString(), resultJson.toJSONString(), true,"ZxBankResultPluginInitializer"); } + }else{ + if(bankEntity.getTabName().equals("formson_0329")){ + sendDatas(bankEntity); + } + logger.info("====查询支付结果返回值中的list为空===="); + //TODO 为空说明根本就没推到司库,这部分数据是推送时就报错了 ,这里要改下。 在推送司库时如果推送失败当时就要更新错误信息,避免这里查到为空的 } - }else{ - logger.info("====查询支付结果返回值中的list为空===="); - //TODO 为空说明根本就没推到司库,这部分数据是推送时就报错了 ,这里要改下。 在推送司库时如果推送失败当时就要更新错误信息,避免这里查到为空的 } } } @@ -340,6 +402,164 @@ public class ZxBankServiceImpl extends BaseService impleme } return BaseResult.getFailureMessageEntity("支付结果查询失败"); } + + private void sendDatas(ZxBankEntity bankEntity) { + List list = new ArrayList<>(); + list.add(bankEntity.getfDocumentNo()); + JSONObject jsonObject=new JSONObject(); + jsonObject.put("documentNoList",list); + JSONObject objectData=new JSONObject(); + objectData.put("data",jsonObject); + logger.info("=======杭泰付款单调用中信支付结果查询请求参数明文为:{}", objectData.toJSONString()); + String encrypt = SM2Util.encrypt(objectData.toJSONString(), publicKey); + JSONObject jsonData=new JSONObject(); + jsonData.put("data",encrypt); + logger.error("=======杭泰付款单调用中信支付结果查询请求参数密文为:{}铭文{}", jsonData.toJSONString(),bankEntity.getfDocumentNo()); + //发送数据 + String result = HttpRequest.post(url). + header("appId", "800058"). + header("apiCode", "8000580001"). + //header("access_token", tokenBody). + header("publicKey", "ZJYALA1PchEI1s2D5vaapO9RZ6CiDFv/pJAV88lRYg0oBwBCe7eDIk+3zDUT+v578prj"). + header("secretKey", "jcoATYyty05KgDwL4O0xD+Ulq5ExYWkGvZGf2bhKrMaCehb3NIm5DUnJSK/r2SUaj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA="). + body(jsonData.toJSONString()). + execute(). + body(); + logger.error("========杭泰付款单调用中信支付结果查询返回参数为:{}====={}=====", result,bankEntity.getfDocumentNo()); + JSONObject resultJson = JSONObject.parseObject(result); + if (!resultJson.getBoolean("flag")) { + saveTaskLivingDetails(bankEntity.getDataId(), bankEntity.getfDocumentNo(), jsonData.toJSONString(), resultJson.toJSONString(), false,"ZxBankResultPluginInitializer"); + } else { + JSONObject attribute = resultJson.getJSONObject("attribute"); + String data = attribute.getString("data"); + // logger.info("=======杭泰付款单调用中信支付结果查询返回参数密文为:{}", data); + String decrypt = null; + try { + decrypt = SM2Util.decrypt(data, privateKey); + } catch (Exception e) { + e.printStackTrace(); + } + logger.error("=======杭泰付款单调用中信支付结果查询返回参数明文为:{},{}", decrypt,bankEntity.getfDocumentNo()); + JSONObject jsonObjectData = JSONObject.parseObject(decrypt); + JSONArray jsonArray = jsonObjectData.getJSONArray("list"); + if(CollectionUtils.isNotEmpty(jsonArray)){ + for (Object o : jsonArray) { + JSONObject jsonObjectList=(JSONObject) JSON.toJSON(o); + String documentNo = jsonObjectList.getString("documentNo");//返回的业务单据号 + String payStatus = jsonObjectList.getString("payStatus");//返回的状态 + String errorMsg = jsonObjectList.getString("errorMsg");//返回的错误信息 + logger.error("====付款單查询中信返回的单据号为:{},返回结果为:{},错误信息为:{}",documentNo,payStatus,errorMsg); + if(documentNo.equals(bankEntity.getfDocumentNo())){ + //修改支付状态 + bankEntity.setPayResult(PayState.payStateGetValue(payStatus)); + bankEntity.setDataSourceCode("HT-OA"); + bankEntity.setId(bankEntity.getDataId()); + //中信银行 有很多状态是PAYING的,也会提示错误信息 + if (StrUtil.isNotEmpty(errorMsg)){ + bankEntity.setPayResult(errorMsg); + } + zxBankDao.updateResultStatus(bankEntity); + //1、查询单据是否全部流程结束 + logger.error("====付款單查询中信返回的单据号为:{},返回结果为:{},错误信息为:{}",documentNo,payStatus,errorMsg); + + List resultList = null; + bankEntity.setDataSourceCode("HT-OA"); + + //对公付款单 + if("formson_0329".equals(bankEntity.getTabName())){ + resultList = zxBankDao.queryResultStatusMx(bankEntity); + } + //招待报销单 + if("formmain_0294".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatus(bankEntity); + } + //日常报销单 + if("formmain_0314".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatus(bankEntity); + + } + // 差旅报销单-新 + if("formmain_0533".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatus(bankEntity); + + } + // 借还款 + if("formmain_0293".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatus(bankEntity); + + } + //资金归集 + if("formson_0378".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatusMx(bankEntity); + + } + //资金拨付 + if("formson_0465".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatusMx(bankEntity); + + } + //同名账户划转 + if("formson_0469".equals(bankEntity.getTabName())) { + resultList = zxBankDao.queryResultStatusMx(bankEntity); + + } + //2、修改流程结果 + + if(resultList != null && resultList.size() > 0){ + int cg = 0; + int zfz = 0; + int sl = 0; + String workitemId = null; + for (int i = 0; i < resultList.size(); i++) { + sl++; + if(resultList.get(i).getPayResult() != null && ("已支付".equals(resultList.get(i).getPayResult()) || "支付成功".equals(resultList.get(i).getPayResult()) )){ + cg++; + } + if(resultList.get(i).getPayResult() == null || "".equals(resultList.get(i).getPayResult()) || "支付中".equals(resultList.get(i).getPayResult())){ + zfz++; + } + if(workitemId == null){ + workitemId = resultList.get(i).getWorkitemId(); + } + } + logger.error("付款單查询支付中状态:{}",zfz); + if(zfz == 0){//没有支付中才处理流程 + if(workitemId != null && !"".equals(workitemId)){ + String token = getTokens(); + logger.error("付款單token状态:{}",token); + + if(cg == sl){//流程提交 + + String senddata = finishValueOf(workitemId,"支付结果获取成功"); + logger.error("修改流程提交发送:{}",senddata); + + String returnData = doSendData("8000590007",token,senddata); + logger.error("修改流程提交返回结果"+returnData); + + if (StrUtil.isNotEmpty(returnData)){ + logger.error("修改流程提交返回结果"+returnData); + } + }else {//流程回退 + String senddata = stepBackValueOf(workitemId,"支付错误退回"); + logger.error("修改流程回退发送:{}",senddata); + String returnData = doSendData("8000590006",token,senddata); + logger.error("修改流程回退返回结果"+returnData); + if (StrUtil.isNotEmpty(returnData)){ + logger.error("修改流程回退返回结果"+returnData); + } + } + } + } + } + saveTaskLivingDetails(bankEntity.getDataId(), bankEntity.getDocumentNo(), jsonData.toJSONString(), resultJson.toJSONString(), true,"ZxBankResultPluginInitializer"); + } + } + }else{ + logger.info("====查询支付结果返回值中的list为空===="); + } + } + } + private String getTokens() { String token = null; JSONObject param = new JSONObject(); @@ -481,6 +701,9 @@ public class ZxBankServiceImpl extends BaseService impleme elecDownlod(elecdata.toJSONString(),bankEntity); } } + if(bankEntity.getTabName().equals("formson_0329")){ + getHdDatas(bankEntity); + } } }catch (Exception e){ logger.info("======杭泰付款单查询中信电子回单失败:{}",e.getMessage()); @@ -489,6 +712,53 @@ public class ZxBankServiceImpl extends BaseService impleme return null; } + private void getHdDatas(ZxBankEntity bankEntity) throws Exception { + JSONObject jsonParam=new JSONObject(); + jsonParam.put("companyCode",bankEntity.getCompanyCode());//公司编码 + jsonParam.put("documentNo",bankEntity.getfDocumentNo());//单据号 + JSONObject jsonData=new JSONObject(); + jsonData.put("data",jsonParam); + String params = jsonData.toJSONString(); + logger.info("======杭泰付款单调用中信电子回单查询请求参数明文为:{}========",params); + String encrypt = SM2Util.encrypt(params, publicKey); + JSONObject objectData=new JSONObject(); + objectData.put("data",encrypt); + logger.info("======杭泰付款单调用中信电子回单查询请求参数密文为:{}========",objectData.toJSONString()); + //发送数据 + String result = HttpRequest.post(url). + header("appId", "800058"). + header("apiCode", "8000580002"). + //header("access_token", tokenBody). + header("publicKey", "ZJYALA1PchEI1s2D5vaapO9RZ6CiDFv/pJAV88lRYg0oBwBCe7eDIk+3zDUT+v578prj"). + header("secretKey", "jcoATYyty05KgDwL4O0xD+Ulq5ExYWkGvZGf2bhKrMaCehb3NIm5DUnJSK/r2SUaj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA="). + body(objectData.toJSONString()). + execute(). + body(); + logger.info("======杭泰付款单调用中信电子回单查询返回参数为:{}========",result); + JSONObject resultJson = JSONObject.parseObject(result); + if (!resultJson.getBoolean("flag")) { + saveTaskLivingDetails(bankEntity.getDataId(), bankEntity.getfDocumentNo(), params, resultJson.toJSONString(), false,"ZxBankElecPluginInitializer"); + } else { + JSONObject attribute = resultJson.getJSONObject("attribute"); + String data = attribute.getString("data"); + logger.info("=======杭泰付款单调用中信支付结果查询返回参数密文为:{}", data); + String decrypt = SM2Util.decrypt(data, privateKey); + JSONObject jsonObjectData = JSONObject.parseObject(decrypt); + String billId = jsonObjectData.getString("billId"); //电子回单id 电子回单下载需要 + logger.info("======中信电子回单返回的电子回单id为:{}====",billId); + if(StrUtil.isNotEmpty(billId)){ + List list=new ArrayList<>(); + list.add(billId); + JSONObject billIds=new JSONObject(); + billIds.put("billIds",list); + JSONObject elecdata=new JSONObject(); + elecdata.put("data",billIds); + logger.info("====调用中信电子回单下载得请求参数明文为:{}=======",elecdata.toJSONString()); + elecDownlod(elecdata.toJSONString(),bankEntity); + } + } + } + private JsonResultEntity elecDownlod(String params,ZxBankEntity zxBankEntity){ try { String encrypt = SM2Util.encrypt(params, publicKey); @@ -1079,7 +1349,7 @@ public class ZxBankServiceImpl extends BaseService impleme //对公付款单 if("formmain_0327".equals(tableName)){ parent.put("sourceFlowNumber", mxData.getString("id")+"_"+hour+minute); - parent.put("documentNo", mainData.getString("field0146")); + parent.put("documentNo", mxData.getString("field0368")); parent.put("companyCode", mainData.getString("field0149")); parent.put("fundType", "0001"); parent.put("digest","付对公付款"+mxData.getString("field0368"));