From e455db28a7839c5e210c96ca4c7a18a0e465822d Mon Sep 17 00:00:00 2001 From: lvleigang <957075182@qq.com> Date: Thu, 28 Aug 2025 13:40:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=82=B9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/ZxBankNewPluginInitializer.java | 57 ++ .../spring/spring-buildpackage-plugin.xml | 1 + .../frame/seeyon/zxbank/dao/IZxBankDao.java | 39 + .../seeyon/zxbank/dao/impl/ZxBankDaoImpl.java | 46 ++ .../seeyon/zxbank/entity/ZxBankEntity.java | 18 + .../seeyon/zxbank/entity/ZxBankEntity.xml | 47 +- .../seeyon/zxbank/service/IZxBankService.java | 10 + .../service/impl/ZxBankServiceImpl.java | 729 +++++++++++++++++- 8 files changed, 944 insertions(+), 3 deletions(-) create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/zxBank/plugin/ZxBankNewPluginInitializer.java diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/zxBank/plugin/ZxBankNewPluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zxBank/plugin/ZxBankNewPluginInitializer.java new file mode 100644 index 00000000..f79e445d --- /dev/null +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zxBank/plugin/ZxBankNewPluginInitializer.java @@ -0,0 +1,57 @@ +package com.hzya.frame.plugin.zxBank.plugin; + +import com.alibaba.fastjson.JSONObject; +import com.hzya.frame.base.PluginBaseEntity; +import com.hzya.frame.seeyon.zxbank.service.IZxBankService; +import com.hzya.frame.web.entity.JsonResultEntity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public class ZxBankNewPluginInitializer extends PluginBaseEntity { + + Logger logger = LoggerFactory.getLogger(ZxBankNewPluginInitializer.class); + @Autowired + private IZxBankService zxBankService; + + @Override + public void initialize() { + logger.info(getPluginLabel() + "執行初始化方法initialize()"); + } + + @Override + public void destroy() { + logger.info(getPluginLabel() + "執行銷毀方法destroy()"); + } + + @Override + public String getPluginId() { + return "ZxBankNewPluginInitializer"; + } + + @Override + public String getPluginName() { + return "ZxBankNewPluginInitializer插件"; + } + + @Override + public String getPluginLabel() { + return "ZxBankNewPluginInitializer"; + } + + @Override + public String getPluginType() { + return "1"; + } + @Override + public JsonResultEntity executeBusiness(JSONObject requestJson) { + try { + logger.info("======开始执行杭泰付款单同步========"); + return zxBankService.queryArchivesNew(requestJson); + }catch (Exception e){ + logger.info("======执行杭泰付款单同步失败:{}========",e.getMessage()); + e.printStackTrace(); + } + return null; + } +} diff --git a/base-buildpackage/src/main/resources/cfgHome/plugin/zxBank/spring/spring-buildpackage-plugin.xml b/base-buildpackage/src/main/resources/cfgHome/plugin/zxBank/spring/spring-buildpackage-plugin.xml index 845017ce..d221bfe2 100644 --- a/base-buildpackage/src/main/resources/cfgHome/plugin/zxBank/spring/spring-buildpackage-plugin.xml +++ b/base-buildpackage/src/main/resources/cfgHome/plugin/zxBank/spring/spring-buildpackage-plugin.xml @@ -5,4 +5,5 @@ + diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/dao/IZxBankDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/dao/IZxBankDao.java index ceb11fe5..8b740ae2 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/dao/IZxBankDao.java +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/dao/IZxBankDao.java @@ -40,6 +40,16 @@ public interface IZxBankDao extends IBaseDao { * **/ List queryResultIsNullZX(ZxBankEntity zxBankEntity); + /** + * + * @content 查询已推送并且支付结果为空的数据 + * @Param + * @Return + * @Author hecan + * @Date 2025-03-18 17:44 + * **/ + List queryResultIsNullZXNew(ZxBankEntity zxBankEntity); + /** * * @content 修改支付状态 @@ -59,6 +69,15 @@ public interface IZxBankDao extends IBaseDao { * @Date 2025-03-19 14:15 * **/ List queryElecIsNullZX(ZxBankEntity entity); + /** + * + * @content 查询已支付并且电子回单为空的数据 + * @Param + * @Return + * @Author hecan + * @Date 2025-03-19 14:15 + * **/ + List queryElecIsNullZXNew(ZxBankEntity entity); /** * @@ -69,4 +88,24 @@ public interface IZxBankDao extends IBaseDao { * @Date 2025-04-07 17:06 * **/ Integer updateElecStatusZX(ZxBankEntity entity); + + /** + * @Author lvleigang + * @Description 查询组织 + * @Date 11:02 上午 2025/8/25 + * @param zxBankEntity + * @return java.util.List + **/ + List queryOrg(ZxBankEntity zxBankEntity); + + /** + * @Author lvleigang + * @Description 查询所有结果 + * @Date 11:03 上午 2025/8/25 + * @param bankEntity + * @return java.util.List + **/ + List queryResultStatus(ZxBankEntity bankEntity); + + List queryResultStatusMx(ZxBankEntity bankEntity); } diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/dao/impl/ZxBankDaoImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/dao/impl/ZxBankDaoImpl.java index bb092c8c..bcec73c0 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/dao/impl/ZxBankDaoImpl.java +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/dao/impl/ZxBankDaoImpl.java @@ -45,6 +45,11 @@ public class ZxBankDaoImpl extends MybatisGenericDao implem public List queryResultIsNullZX(ZxBankEntity entity) { return super.queryList(entity,"queryResultIsNullZX"); } + @DS("#entity.dataSourceCode") + @Override + public List queryResultIsNullZXNew(ZxBankEntity entity) { + return super.queryList(entity,"queryResultIsNullZXNew"); + } @DS("#entity.dataSourceCode") @Override @@ -58,9 +63,50 @@ public class ZxBankDaoImpl extends MybatisGenericDao implem return super.queryList(entity,"queryElecIsNullZX"); } + @DS("#entity.dataSourceCode") + @Override + public List queryElecIsNullZXNew(ZxBankEntity entity) { + return super.queryList(entity,"queryElecIsNullZXNew"); + } + @DS("#entity.dataSourceCode") @Override public Integer updateElecStatusZX(ZxBankEntity entity) { return super.update("updateElecStatusZX",entity); } + + @DS("#entity.dataSourceCode") + @Override + public List queryOrg(ZxBankEntity entity) { + return super.queryList(entity,getSqlIdPrifx() + "queryOrg"); + } + + /** + * @param entity + * @return java.util.List + * @Author lvleigang + * @Description 查询所有结果 + * @Date 11:03 上午 2025/8/25 + **/ + @DS("#entity.dataSourceCode") + @Override + public List queryResultStatus(ZxBankEntity entity) { + return super.queryList(entity,getSqlIdPrifx() + "queryResultStatus"); + + } + /** + * @param entity + * @return java.util.List + * @Author lvleigang + * @Description 查询所有结果 + * @Date 11:03 上午 2025/8/25 + **/ + @DS("#entity.dataSourceCode") + @Override + public List queryResultStatusMx(ZxBankEntity entity) { + return super.queryList(entity,getSqlIdPrifx() + "queryResultStatusMx"); + + } + + } 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 e648cac2..20177fe0 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 @@ -31,6 +31,8 @@ public class ZxBankEntity extends BaseEntity { private String receipt;//电子回单 private String pushStatus;//推送标识 private String summaryId;// + private String mainId;//主表id + private String workitemId;//主表id public String getSummaryId() { return summaryId; @@ -255,4 +257,20 @@ public class ZxBankEntity extends BaseEntity { public void setSubmitUser(String submitUser) { this.submitUser = submitUser; } + + public String getMainId() { + return mainId; + } + + public void setMainId(String mainId) { + this.mainId = mainId; + } + + public String getWorkitemId() { + return workitemId; + } + + public void setWorkitemId(String workitemId) { + this.workitemId = workitemId; + } } 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 7c598d8a..3d14938d 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 @@ -30,6 +30,7 @@ + @@ -62,6 +63,7 @@ ,receipt as receipt ,push_status as pushStatus ,summary_id as summaryId + ,main_id as mainId @@ -78,11 +80,26 @@ from v_hzya_pay where push_status is not null and (pay_result is null or pay_result='支付中') + + + @@ -97,9 +114,35 @@ - update ${tabName} set ${receiptFiled} =#{receipt} where id=#{dataId} + update ${tabName} set ${receiptFiled} =#{receipt} where id= #{dataId} + + diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/service/IZxBankService.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/service/IZxBankService.java index 9c51f399..f5a242f4 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/service/IZxBankService.java +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/zxbank/service/IZxBankService.java @@ -15,6 +15,16 @@ public interface IZxBankService extends IBaseService { * @Date 2025-03-18 9:53 * **/ JsonResultEntity queryArchives(JSONObject jsonObject); + /** + * + * @content 付款单节点推送 + * @Param + * @Return + * @Author hecan + * @Date 2025-03-18 9:53 + * **/ + JsonResultEntity queryArchivesNew(JSONObject jsonObject); + /** * 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 3036e63c..f1a8c7ca 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 @@ -1,5 +1,8 @@ package com.hzya.frame.seeyon.zxbank.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; @@ -38,8 +41,10 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.*; +import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.URL; +import java.text.SimpleDateFormat; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -164,11 +169,18 @@ public class ZxBankServiceImpl extends BaseService impleme zxBankEntity.setDataSourceCode("HT-OA"); logger.info("======开始查询中信返回的支付结果====="); List zxBankEntities = zxBankDao.queryResultIsNullZX(zxBankEntity); + 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("查询成功"); } - for (ZxBankEntity bankEntity : zxBankEntities) { + for (ZxBankEntity bankEntity : zxBankEntities) { List list = new ArrayList<>(); list.add(bankEntity.getDocumentNo()); JSONObject jsonObject=new JSONObject(); @@ -219,6 +231,98 @@ public class ZxBankServiceImpl extends BaseService impleme 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"); } } @@ -236,8 +340,83 @@ public class ZxBankServiceImpl extends BaseService impleme } return BaseResult.getFailureMessageEntity("支付结果查询失败"); } + private String getTokens() { + String token = null; + JSONObject param = new JSONObject(); + // 向JSON对象中添加键值对 + param.put("password", "b19afb1a-5a72-43db-84e1-e84aa4c571b5"); + param.put("userName", "YDRest"); + param.put("loginName", "ZZZH"); + String result = HttpRequest.post(url) + .header("appId", "800059") + .header("apiCode", "8000590001") + .header("publicKey", "ZJYA7f8FzV219otH8zhkReiyyWpXswpbY/+StvC2em0hf59Ce7eDIk+3zDUT+v578prj")//OA公钥 + .header("secretKey", "xJ9J1Ev2F0faiJ/nQnCNklskAgtQp3QSm+ihO21uY/H0UADj0tSDPxmIhFfC4v6Fj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥 + .body(param.toJSONString())//表单内容 + .timeout(30000)//超时,毫秒 + .execute().body(); + logger.error("OaToken返回报文:{}",result); + if (StrUtil.isNotEmpty(result)){ + JSONObject tokenObj = JSONObject.parseObject(result); + String code = tokenObj.getString("status"); + if ("200".equals(code)){ + JSONObject attribute = tokenObj.getJSONObject("attribute"); + if (null != attribute){ + token = attribute.getString("id"); + } + } + } + return token; + } + private String doSendData(String apiCode,String token,String param) { + String result = HttpRequest.post(url) + .header("appId", "800059") + .header("apiCode", apiCode) + .header("token", token)//token + .header("publicKey", "ZJYA7f8FzV219otH8zhkReiyyWpXswpbY/+StvC2em0hf59Ce7eDIk+3zDUT+v578prj")//OA公钥 + .header("secretKey", "xJ9J1Ev2F0faiJ/nQnCNklskAgtQp3QSm+ihO21uY/H0UADj0tSDPxmIhFfC4v6Fj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥 + .body(param)//表单内容 + .timeout(30000)//超时,毫秒 + .execute().body(); + logger.error("Oa返回报文:{}",result); + return result; + } + + public String finishValueOf(String workitemId, String content) { + Assert.notEmpty(workitemId,"流程提交时workitemId 必填"); + JSONObject json = new JSONObject(); + json.put("appName", "collaboration"); + json.put("workitemId", workitemId); + + JSONObject data = new JSONObject(); + data.put("submitType", "1"); + + JSONObject commentDeal = new JSONObject(); + commentDeal.put("attitude", "2");//2表示同意 + commentDeal.put("content", content); + data.put("comment_deal", commentDeal); + json.put("data", data); + return json.toJSONString(); + } + + public String stepBackValueOf(String workitemId, String content) { + Assert.notEmpty(workitemId,"流程提交时workitemId 必填"); + JSONObject json = new JSONObject(); + JSONObject commentres = new JSONObject(); + commentres.put("attitude", "1");//"1", //1 已阅, 2 同意, 3 不同意 + commentres.put("content", content);//意见 + + JSONObject datares = new JSONObject(); + datares.put("isWFTrace", "0");//,// 流程追溯 + datares.put("comment_deal",commentres); + + json.put("appName", "collaboration");//应用类型,协同表单设置为:collaboration + json.put("workitemId", workitemId);//对应事项接口返回对象中的subObjectId + json.put("data",datares);//当前处理人登录名 + return json.toJSONString(); + } @Override public JsonResultEntity queryArchivesElec(JSONObject json) { @@ -246,6 +425,13 @@ public class ZxBankServiceImpl extends BaseService impleme zxBankEntity.setDataSourceCode("HT-OA"); logger.info("======开始查询中信电子回单====="); List zxBankEntities = zxBankDao.queryElecIsNullZX(zxBankEntity); + List zxBankEntities1 = zxBankDao.queryElecIsNullZXNew(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("查询成功"); @@ -619,4 +805,545 @@ public class ZxBankServiceImpl extends BaseService impleme } } + + //—————————————————————————————————————————————————————————————————————————————— + @Override + public JsonResultEntity queryArchivesNew(JSONObject requestJson) { + logger.error("同步付款单:" + requestJson.toJSONString()); + JSONObject jsonStr = requestJson.getJSONObject("jsonStr"); + if (jsonStr == null) { + return BaseResult.getFailureMessageEntity("系统错误"); + } + JSONObject businessDataStr = jsonStr.getJSONObject("businessDataStr"); + if (businessDataStr == null) { + return BaseResult.getFailureMessageEntity("系统错误"); + } + //判断是否有对应的biao单 + String tableName = null; + String mxtableName = null; + if(businessDataStr.containsKey("formmain_0327")){ + tableName = "formmain_0327"; + mxtableName = "formson_0329"; + }else if(businessDataStr.containsKey("formmain_0294")){ + tableName = "formmain_0294"; + mxtableName = "formson_0297"; + }else if(businessDataStr.containsKey("formmain_0314")){ + tableName = "formmain_0314"; + mxtableName = "formson_0317"; + }else if(businessDataStr.containsKey("formmain_0533")){ + tableName = "formmain_0533"; + mxtableName = "formson_0536"; + }else if(businessDataStr.containsKey("formmain_0293")){ + tableName = "formmain_0293"; + mxtableName = "formson_0399"; + }else if(businessDataStr.containsKey("formmain_0362")){ + tableName = "formmain_0362"; + mxtableName = "formson_0378"; + }else if(businessDataStr.containsKey("formmain_0464")){ + tableName = "formmain_0464"; + mxtableName = "formson_0465"; + }else if(businessDataStr.containsKey("formmain_0467")){ + tableName = "formmain_0467"; + mxtableName = "formson_0469"; + }else { + return BaseResult.getFailureMessageEntity("系统错误,表单未配置"); + } + JSONObject mainData = businessDataStr.getJSONObject(tableName); + if (mainData == null) { + return BaseResult.getFailureMessageEntity("系统错误"); + } + JSONArray detailArray = businessDataStr.getJSONArray(mxtableName); + if(detailArray != null && detailArray.size() > 0){ + for (int i = 0; i < detailArray.size(); i++) { + //组装发送数据 + JSONObject sendData = getSendData(mainData, detailArray.getJSONObject(i),tableName,mxtableName); + //发送数据 + logger.error("推送付款单推送:" + sendData.toJSONString()); + String tokenResult = HttpRequest.post(url). + header("appId", "800058"). + header("apiCode", "8000580000"). + header("publicKey", "ZJYAWb7lhAUTYqekPkU+uHJv1/ObJxb7dT7sD8HPRDGAgyhCe7eDIk+3zDUT+v578prj"). + header("secretKey", "fviZnLBsQUAGF8w8FSOdJi7XlIm/XAZclMxRagDLfTyJFlvnIBF3w66Hrpfzs8cYj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA="). + body(sendData.toJSONString()). + execute(). + body(); + logger.error("推送付款单返回:" + tokenResult); + JSONObject resoutJson = JSONObject.parseObject(tokenResult); + + if (resoutJson.getBoolean("flag") ) { + JSONObject attribute = resoutJson.getJSONObject("attribute"); + if("AAAAAAA".equals(attribute.getString("code"))){ + JSONObject bizInfo = attribute.getJSONObject("bizInfo"); + if("AAAAAAA".equals(bizInfo.getString("bizCode"))){ + ZxBankEntity zxBankEntity = new ZxBankEntity(); + zxBankEntity.setPushStatus("1"); + zxBankEntity.setDataSourceCode("HT-OA"); + //对公付款单 + if("formmain_0327".equals(tableName)){ + zxBankEntity.setTabName("formson_0329"); + zxBankEntity.setPushStatusField("field0366"); + zxBankEntity.setId(detailArray.getJSONObject(i).getString("id")); + } + //招待报销单 + if("formmain_0294".equals(tableName)) { + zxBankEntity.setTabName("formmain_0294"); + zxBankEntity.setPushStatusField("field0174"); + zxBankEntity.setId(mainData.getString("id")); + } + //日常报销单 + if("formmain_0314".equals(tableName)) { + zxBankEntity.setTabName("formmain_0314"); + zxBankEntity.setPushStatusField("field0295"); + zxBankEntity.setId(mainData.getString("id")); + } + // 差旅报销单-新 + if("formmain_0533".equals(tableName)) { + zxBankEntity.setTabName("formmain_0533"); + zxBankEntity.setPushStatusField("field0309"); + zxBankEntity.setId(mainData.getString("id")); + } + // 借还款 + if("formmain_0293".equals(tableName)) { + zxBankEntity.setTabName("formmain_0293"); + zxBankEntity.setPushStatusField("field0092"); + zxBankEntity.setId(mainData.getString("id")); + } + //资金归集 + if("formmain_0362".equals(tableName)) { + zxBankEntity.setTabName("formson_0378"); + zxBankEntity.setPushStatusField("field0059"); + zxBankEntity.setId(detailArray.getJSONObject(i).getString("id")); + } + //资金拨付 + if("formmain_0464".equals(tableName)) { + zxBankEntity.setTabName("formson_0465"); + zxBankEntity.setPushStatusField("field0058"); + zxBankEntity.setId(detailArray.getJSONObject(i).getString("id")); + } + //同名账户划转 + if("formmain_0467".equals(tableName)) { + zxBankEntity.setTabName("formson_0469"); + zxBankEntity.setPushStatusField("field0057"); + zxBankEntity.setId(detailArray.getJSONObject(i).getString("id")); + } + zxBankDao.updatePushStatusZX(zxBankEntity); + return BaseResult.getSuccessMessageEntity("推送付款单成功"); + }else { + return BaseResult.getFailureMessageEntity("推送付款单失败:" + bizInfo.getString("bizMessage")); + } + }else { + return BaseResult.getFailureMessageEntity("推送付款单失败:" + resoutJson.getString("msg")); + } + } else { + JSONObject attribute = resoutJson.getJSONObject("attribute"); + if("AAAAAAA".equals(attribute.getString("code"))){ + JSONObject bizInfo = attribute.getJSONObject("bizInfo"); + if("AAAAAAA".equals(bizInfo.getString("bizCode"))){ + ZxBankEntity zxBankEntity = new ZxBankEntity(); + zxBankEntity.setPushStatus("1"); + zxBankEntity.setDataSourceCode("HT-OA"); + //对公付款单 + if("formmain_0327".equals(tableName)){ + zxBankEntity.setTabName("formson_0329"); + zxBankEntity.setPushStatusField("field0366"); + zxBankEntity.setId(detailArray.getJSONObject(i).getString("id")); + } + //招待报销单 + if("formmain_0294".equals(tableName)) { + zxBankEntity.setTabName("formmain_0294"); + zxBankEntity.setPushStatusField("field0174"); + zxBankEntity.setId(mainData.getString("id")); + } + //日常报销单 + if("formmain_0314".equals(tableName)) { + zxBankEntity.setTabName("formmain_0314"); + zxBankEntity.setPushStatusField("field0295"); + zxBankEntity.setId(mainData.getString("id")); + } + // 差旅报销单-新 + if("formmain_0533".equals(tableName)) { + zxBankEntity.setTabName("formmain_0533"); + zxBankEntity.setPushStatusField("field0309"); + zxBankEntity.setId(mainData.getString("id")); + } + // 借还款 + if("formmain_0293".equals(tableName)) { + zxBankEntity.setTabName("formmain_0293"); + zxBankEntity.setPushStatusField("field0092"); + zxBankEntity.setId(mainData.getString("id")); + } + //资金归集 + if("formmain_0362".equals(tableName)) { + zxBankEntity.setTabName("formson_0378"); + zxBankEntity.setPushStatusField("field0059"); + zxBankEntity.setId(detailArray.getJSONObject(i).getString("id")); + } + //资金拨付 + if("formmain_0464".equals(tableName)) { + zxBankEntity.setTabName("formson_0465"); + zxBankEntity.setPushStatusField("field0058"); + zxBankEntity.setId(detailArray.getJSONObject(i).getString("id")); + } + //同名账户划转 + if("formmain_0467".equals(tableName)) { + zxBankEntity.setTabName("formson_0469"); + zxBankEntity.setPushStatusField("field0057"); + zxBankEntity.setId(detailArray.getJSONObject(i).getString("id")); + } + zxBankDao.updatePushStatusZX(zxBankEntity); + return BaseResult.getSuccessMessageEntity("推送付款单成功"); + }else { + return BaseResult.getFailureMessageEntity("推送付款单失败:" + bizInfo.getString("bizMessage")); + } + }else { + return BaseResult.getFailureMessageEntity("推送付款单失败:" + resoutJson.getString("msg")); + } + } + } + } + return BaseResult.getSuccessMessageEntity("推送付款单成功"); + } + + /** + * @param mainData + * @param mxData + * @return com.alibaba.fastjson.JSONObject + * @Author lvleigang + * @Description 组装数据 + * @Date 6:12 下午 2025/6/27 + **/ + private JSONObject getSendData(JSONObject mainData, JSONObject mxData,String tableName,String mxtableName) { + // 创建主JSONObject + String hour = Convert.toStr(DateUtil.hour(new Date(),true)); + String minute = Convert.toStr(DateUtil.minute(new Date())); + JSONObject parent = new JSONObject(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String day = sdf.format(new Date()); + //对公付款单 + if("formmain_0327".equals(tableName)){ + parent.put("sourceFlowNumber", mxData.getString("id")+"_"+hour+minute); + parent.put("documentNo", mainData.getString("field0146")); + parent.put("companyCode", mainData.getString("field0149")); + parent.put("fundType", "0001"); + parent.put("digest","'付对公付款'"+mxData.getString("field0368")); + parent.put("payAccountNum", mxData.getString("field0137")); + parent.put("payAccountName", mainData.getString("field0116")); + parent.put("recAccountNum", mxData.getString("field0210")); + parent.put("recAccountName", mxData.getString("field0136")); + parent.put("recBankCode", mxData.getString("field0257")); + parent.put("settleAccountType", "CASH_TRANSFER"); + parent.put("payChannel", "DIRECT"); + if(mxData.getString("field0256") != null && !"".equals(mxData.getString("field0256"))){ + parent.put("currency", mxData.getString("field0256")); + }else { + parent.put("currency", "CNY"); + } + parent.put("transAmount", mxData.getString("field0135")); + if(mainData.getString("field0362") != null && !"".equals(mainData.getString("field0362"))){ + parent.put("payDate",sdf.format(mainData.getDate("field0362"))); + }else { + parent.put("payDate", day); + } + boolean fale=true; + parent.put("toPublic",fale); + parent.put("purpose", mainData.getString("field0124")); + } + //招待报销单 + if("formmain_0294".equals(tableName)) { + parent.put("sourceFlowNumber", mainData.getString("id")+"_"+hour+minute); + parent.put("documentNo", mainData.getString("field0053")); + parent.put("companyCode", mainData.getString("field0108")); + parent.put("fundType", "0002"); + parent.put("digest", "付招待报销"+mainData.getString("field0053")); + parent.put("payAccountNum", mxData.getString("field0073")); + parent.put("payAccountName", mainData.getString("field0080")); + parent.put("recAccountNum", mxData.getString("field0136")); + if(mxData.getString("field0178") != null){ + ZxBankEntity zxBankEntity = new ZxBankEntity(); + zxBankEntity.setDataSourceCode("HT-OA"); + zxBankEntity.setRecAccountName(mxData.getString("field0178")); + List name = zxBankDao.queryOrg(zxBankEntity); + if(name != null && name.size() > 0){ + parent.put("recAccountName", name.get(0).getRecAccountName()); + } + } + parent.put("recBankCode", mxData.getString("field0176")); + parent.put("settleAccountType", "CASH_TRANSFER"); + parent.put("payChannel", "DIRECT"); + if(mxData.getString("field0175") != null && !"".equals(mxData.getString("field0175"))){ + parent.put("currency", mxData.getString("field0175")); + }else { + parent.put("currency", "CNY"); + } + parent.put("transAmount", mxData.getString("field0100")); + if(mxData.getString("field0215") != null && !"".equals(mxData.getString("field0215"))){ + parent.put("payDate",sdf.format(mxData.getDate("field0215"))); + }else { + parent.put("payDate", day); + } + parent.put("toPublic",false); + parent.put("recFinanceCode",getBankCode("false",mxData.getString("field0135"),mxData.getString("field0098"))); + + if (null != getBankCode("false",mxData.getString("field0135"),mxData.getString("field0098"))){ + parent.put("recBankCode", null); + } + } + //日常报销单 + if("formmain_0314".equals(tableName)) { + parent.put("sourceFlowNumber", mainData.getString("id")+"_"+hour+minute); + parent.put("documentNo", mainData.getString("field0220")); + parent.put("companyCode", mainData.getString("field0228")); + parent.put("fundType", "0002"); + parent.put("digest", "付日常报销"+mainData.getString("field0220")); + parent.put("payAccountNum", mxData.getString("field0269")); + parent.put("payAccountName", mainData.getString("field0188")); + parent.put("recAccountNum", mxData.getString("field0217")); + if(mainData.getString("field0015") != null){ + ZxBankEntity zxBankEntity = new ZxBankEntity(); + zxBankEntity.setDataSourceCode("HT-OA"); + zxBankEntity.setRecAccountName(mainData.getString("field0015")); + List name = zxBankDao.queryOrg(zxBankEntity); + if(name != null && name.size() > 0){ + parent.put("recAccountName", name.get(0).getRecAccountName()); + } + } + + parent.put("recBankCode", mxData.getString("field0297")); + parent.put("settleAccountType", "CASH_TRANSFER"); + parent.put("payChannel", "DIRECT"); + if(mxData.getString("field0296") != null && !"".equals(mxData.getString("field0296"))){ + parent.put("currency", mxData.getString("field0296")); + }else { + parent.put("currency", "CNY"); + } + + parent.put("transAmount", mxData.getString("field0215")); + if(mainData.getString("field0335") != null && !"".equals(mainData.getString("field0335"))){ + parent.put("payDate",sdf.format(mainData.getDate("field0335"))); + }else { + parent.put("payDate", day); + } + parent.put("toPublic",false); + parent.put("recFinanceCode",getBankCode("false",mxData.getString("field0216"),mxData.getString("field0268"))); + if (null != getBankCode("false",mxData.getString("field0216"),mxData.getString("field0268"))){ + parent.put("recBankCode", null); + } + parent.put("purpose", mainData.getString("field0199")); + } + + // 差旅报销单-新 + if("formmain_0533".equals(tableName)) { + parent.put("sourceFlowNumber", mainData.getString("id")+"_"+hour+minute); + parent.put("documentNo", mainData.getString("field0094")); + parent.put("companyCode", mainData.getString("field0377")); + parent.put("fundType", "0002"); + parent.put("digest", "付差旅报销"+mainData.getString("field0094")); + parent.put("payAccountNum", mxData.getString("field0266")); + parent.put("payAccountName", mainData.getString("field0188")); + parent.put("recAccountNum", mxData.getString("field0218")); + if(mxData.getString("field0313") != null){ + ZxBankEntity zxBankEntity = new ZxBankEntity(); + zxBankEntity.setDataSourceCode("HT-OA"); + zxBankEntity.setRecAccountName(mxData.getString("field0313")); + List name = zxBankDao.queryOrg(zxBankEntity); + if(name != null && name.size() > 0){ + parent.put("recAccountName", name.get(0).getRecAccountName()); + } + } + parent.put("recBankCode", mxData.getString("field0311")); + parent.put("settleAccountType","CASH_TRANSFER"); + parent.put("payChannel", "DIRECT"); + if(mxData.getString("field0310") != null && !"".equals(mxData.getString("field0310"))){ + parent.put("currency", mxData.getString("field0310")); + }else { + parent.put("currency", "CNY"); + } + + parent.put("transAmount", mxData.getString("field0215")); + if(mainData.getString("field0375") != null && !"".equals(mainData.getString("field0375"))){ + parent.put("payDate",sdf.format(mainData.getDate("field0375"))); + }else { + parent.put("payDate", day); + } + parent.put("toPublic",false); + parent.put("recFinanceCode",getBankCode("false",mxData.getString("field0216"),mxData.getString("field0265"))); + if (null != getBankCode("false",mxData.getString("field0216"),mxData.getString("field0265"))){ + parent.put("recBankCode", null); + } + parent.put("purpose", mainData.getString("field0359")); + } + // 借还款 + if("formmain_0293".equals(tableName)) { + parent.put("sourceFlowNumber", mainData.getString("id")+"_"+hour+minute); + parent.put("documentNo", mainData.getString("field0056")); + parent.put("companyCode", mainData.getString("field0084")); + parent.put("fundType", "0002"); + parent.put("digest", "付借还单"+mainData.getString("field0056")); + parent.put("payAccountNum", mxData.getString("field0079")); + parent.put("payAccountName", mainData.getString("field0074")); + parent.put("recAccountNum", mxData.getString("field0081")); + if(mainData.getString("field0006") != null){ + ZxBankEntity zxBankEntity = new ZxBankEntity(); + zxBankEntity.setDataSourceCode("HT-OA"); + zxBankEntity.setRecAccountName(mainData.getString("field0006")); + List name = zxBankDao.queryOrg(zxBankEntity); + if(name != null && name.size() > 0){ + parent.put("recAccountName", name.get(0).getRecAccountName()); + } + } + parent.put("recBankCode", mxData.getString("field0093")); + parent.put("settleAccountType", "CASH_TRANSFER"); + parent.put("payChannel", "DIRECT"); + parent.put("currency", "CNY"); + parent.put("transAmount", mxData.getString("field0077")); + if(mainData.getString("field0100") != null && !"".equals(mainData.getString("field0100"))){ + parent.put("payDate",sdf.format(mainData.getDate("field0100"))); + }else { + parent.put("payDate", day); + } + parent.put("toPublic",false); + parent.put("recFinanceCode",getBankCode("false",mxData.getString("field0080"),mxData.getString("field0078"))); + + + if (null != getBankCode("false",mxData.getString("field0080"),mxData.getString("field0078"))){ + parent.put("recBankCode", null); + } + parent.put("purpose", mainData.getString("field0042")); + } + //资金归集 + if("formmain_0362".equals(tableName)) { + parent.put("sourceFlowNumber", mxData.getString("id")+"_"+hour+minute); + parent.put("documentNo", mxData.getString("field0061")); + parent.put("companyCode", mainData.getString("field0037")); + parent.put("fundType", "0001"); + parent.put("digest", "付资金归集"+mxData.getString("field0061")); + parent.put("payAccountNum", mxData.getString("field0008")); + parent.put("payAccountName", mxData.getString("field0003")); + parent.put("recAccountNum", mainData.getString("field0023")); + parent.put("recAccountName", mainData.getString("field0001")); + parent.put("recBankCode", mainData.getString("field0046")); + parent.put("settleAccountType", "CASH_TRANSFER"); + parent.put("payChannel", "DIRECT"); + parent.put("currency", "CNY"); + parent.put("transAmount", mxData.getString("field0004")); + if(mainData.getString("field0056") != null && !"".equals(mainData.getString("field0056"))){ + parent.put("payDate",sdf.format(mainData.getDate("field0056"))); + }else { + parent.put("payDate", day); + } + parent.put("toPublic",true); + parent.put("purpose", mxData.getString("field0009")); + } + //资金拨付 + if("formmain_0464".equals(tableName)) { + parent.put("sourceFlowNumber", mxData.getString("id")+"_"+hour+minute); + parent.put("documentNo", mxData.getString("field0060")); + parent.put("companyCode", mainData.getString("field0037")); + parent.put("fundType", "0001"); + parent.put("digest", "付资金拨付"+mxData.getString("field0060")); + parent.put("payAccountNum", mainData.getString("field0023")); + parent.put("payAccountName", mainData.getString("field0001")); + parent.put("recAccountNum", mxData.getString("field0008")); + parent.put("recAccountName", mxData.getString("field0003")); + parent.put("recBankCode", mxData.getString("field0044")); + parent.put("settleAccountType", "CASH_TRANSFER"); + parent.put("payChannel", "DIRECT"); + parent.put("currency", "CNY"); + parent.put("transAmount", mxData.getString("field0004")); + if(mainData.getString("field0055") != null && !"".equals(mainData.getString("field0055"))){ + parent.put("payDate",sdf.format(mainData.getDate("field0055"))); + }else { + parent.put("payDate", day); + } + parent.put("toPublic",true); + parent.put("purpose", mxData.getString("field0009")); + } + + //同名账户划转 + if("formmain_0467".equals(tableName)) { + parent.put("sourceFlowNumber", mxData.getString("id")+"_"+hour+minute); + parent.put("documentNo", mxData.getString("field0059")); + parent.put("companyCode", mxData.getString("field0038")); + parent.put("fundType", "0001"); + parent.put("digest", "付同名账户划转"+mxData.getString("field0059")); + parent.put("payAccountNum", mxData.getString("field0016")); + parent.put("payAccountName", mainData.getString("field0021")); + parent.put("recAccountNum", mxData.getString("field0019")); + parent.put("recAccountName", mainData.getString("field0021")); + parent.put("recBankCode", mxData.getString("field0044")); + parent.put("settleAccountType", "CASH_TRANSFER"); + parent.put("payChannel","DIRECT"); + parent.put("currency", "CNY"); + parent.put("transAmount", mxData.getString("field0020")); + if(mainData.getString("field0054") != null && !"".equals(mainData.getString("field0054"))){ + parent.put("payDate",sdf.format(mainData.getDate("field0054"))); + }else { + parent.put("payDate", day); + } + parent.put("toPublic",true); + parent.put("purpose", mxData.getString("field0035")); + } + + JSONObject bodys = new JSONObject(); + bodys.put("data",parent); + String params = bodys.toJSONString(); + SM2Util sm2Util=new SM2Util(); + String encrypt = sm2Util.encrypt(params, publicKey); + JSONObject zx = new JSONObject(); + zx.put("data",encrypt); + return zx; + } + + /** + * 获取银行编码 + * @param toPublic 对公/对私标记("true"表示对公,"false"表示对私) + * @param recBankName 收款银行名称 + * @param payBankName 付款银行名称(原SQL中的PayBanmName应为笔误) + * @return 对应的银行编码,不满足条件时返回null + */ + public static String getBankCode(String toPublic, String recBankName, String payBankName) { + // 处理参数为空的情况 + String trimmedToPublic = toPublic == null ? "" : toPublic.trim().toUpperCase(); + String trimmedPayBankName = payBankName == null ? "" : payBankName.trim(); + + // 检查是否为对私账户且付款银行为中信银行 + if ("FALSE".equals(trimmedToPublic) && trimmedPayBankName.contains("中信")) { + // 处理收款银行名称(去除前后空格) + String trimmedRecBankName = recBankName == null ? "" : recBankName.trim(); + + // 根据收款银行名称匹配对应的银行编码 + if (trimmedRecBankName.contains("工商") || trimmedRecBankName.contains("工行")) { + return "ICBC"; + } else if (trimmedRecBankName.contains("农业")) { + return "ABC"; + } else if (trimmedRecBankName.contains("中国银行") || trimmedRecBankName.contains("中行")) { + return "BOC"; + } else if (trimmedRecBankName.contains("建设") || trimmedRecBankName.contains("建行")) { + return "CCB"; + } else if (trimmedRecBankName.contains("交通") || trimmedRecBankName.contains("交行")) { + return "BCM"; + } else if (trimmedRecBankName.contains("邮政") || trimmedRecBankName.contains("邮储")) { + return "PSBC"; + } else if (trimmedRecBankName.contains("中信")) { + return "CITIC"; + } else if (trimmedRecBankName.contains("光大")) { + return "CEB"; + } else if (trimmedRecBankName.contains("民生")) { + return "CMBC"; + } else if (trimmedRecBankName.contains("广发")) { + return "CGB"; + } else if (trimmedRecBankName.contains("平安")) { + return "PAB"; + } else if (trimmedRecBankName.contains("招商") || trimmedRecBankName.contains("招行")) { + return "CMB"; + } else if (trimmedRecBankName.contains("兴业")) { + return "CIB"; + } else if (trimmedRecBankName.contains("浦发") || trimmedRecBankName.contains("浦东发展")) { + return "SPDB"; + } + } + + // 不满足条件时返回null + return null; + } }