堃博OA对接宁波银行

This commit is contained in:
yuqh 2024-07-18 15:05:58 +08:00
parent 5202887be0
commit 35ea37fbfc
3 changed files with 123 additions and 34 deletions

View File

@ -94,9 +94,9 @@
</properties> </properties>
</profile> </profile>
<profile> <profile>
<id>kunb</id> <!--堃博--> <id>dongj</id> <!--东进-->
<properties> <properties>
<profile.active>kunb</profile.active> <profile.active>dongj</profile.active>
</properties> </properties>
</profile> </profile>
</profiles> </profiles>

View File

@ -1,20 +1,24 @@
package com.hzya.frame.plugin.a8bill.plugin; package com.hzya.frame.plugin.a8bill.plugin;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.base.PluginBaseEntity; import com.hzya.frame.base.PluginBaseEntity;
import com.hzya.frame.plugin.a8bill.dao.IPayBillPluginInitializerDao; import com.hzya.frame.plugin.a8bill.dao.IPayBillPluginInitializerDao;
import com.hzya.frame.plugin.a8bill.entity.PayBillEntity; import com.hzya.frame.plugin.a8bill.entity.PayBillEntity;
import com.hzya.frame.plugin.a8bill.util.NingBBankUtil; import com.hzya.frame.plugin.a8bill.util.NingBBankUtil;
import com.hzya.frame.seeyon.paybill.service.IPayBillService; import com.hzya.frame.seeyon.paybill.service.IPayBillService;
import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity;
import com.hzya.frame.web.entity.JsonResultEntity; import com.hzya.frame.web.entity.JsonResultEntity;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 堃博OA单据推送宁波银行 * 堃博OA单据推送宁波银行
@ -57,7 +61,105 @@ public class KunBNingBBankPluginInitializer extends PluginBaseEntity{
} }
@Override @Override
public JsonResultEntity executeBusiness(JSONObject requestJson) { public JsonResultEntity executeBusiness(JSONObject requestJson) {
PayBillEntity oaBillEntity = new PayBillEntity();
String dataSourceCode = "KUNBOA";
oaBillEntity.setDataSourceCode(dataSourceCode);
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("select field0001 as serialNo,field0031 as corpCode,field0012 as rcvAcc,'' as rcvBankName,field0030 as payAcc,field0032 as rcvBankNo,field0012 as rcvName,field0033 as purpose,field0008 as amt,'field0034' as fieldName,'formmain_0020' as tableName, as field0036 payMsg from formmain_0020 where field0034 = '1' and field0012 is not null and field0030 is not null");
try {
List<HashMap<String, Object>> hashMaps = payBillDao.getOaBillData(stringBuffer.toString(),oaBillEntity);
if(CollectionUtils.isNotEmpty(hashMaps)){
for (HashMap<String, Object> hashMap : hashMaps) {
JSONObject main = new JSONObject();
for(String key:hashMap.keySet()) {
main.put(key, hashMap.get(key));
}
String tableName = main.getString("tableName");
String fieldName = main.getString("fieldName");
String payMsg = main.getString("payMsg");
try {
return new JsonResultEntity("成功",true,new JsonResultEntity()); logger.info("获取到付款单状态的数据"+main.toString());
String apiCode = "8000310001";
JSONObject reMain = new JSONObject();
reMain.put("serialNo",main.getString("serialNo"));
String result = NingBBankUtil.sendU9cTOCrmEsb(reMain.toString(),apiCode);
logger.info("获取付款状态结果"+result);
JSONObject resultObj = JSON.parseObject(result);
JSONObject attribute = resultObj.getJSONObject("attribute");
boolean flag = resultObj.getBoolean("flag");
StringBuffer sb = new StringBuffer();
sb.append("update "+tableName);
if(flag){
JSONObject data = attribute.getJSONObject("Data");
JSONObject transferDtl = data.getJSONObject("transferDtl");
String status = transferDtl.getString("status");
// if(1==1){
// status = "0";
// }
String msg = formatStatus(status);
if(StrUtil.isEmpty(msg)){
msg ="未知交易状态,请联系管理员查证";
sb.append(" set "+payMsg+" = '"+msg+"'");
sb.append(" , "+fieldName+" = '2'");
}
sb.append(" set "+payMsg+" = '"+msg+"'");
if(status.equals("0")||status.equals("-2")||status.equals("-3")||status.equals("2")||status.equals("4")||status.equals("5")||status.equals("6")||status.equals("96")||status.equals("112")){
sb.append(" , "+fieldName+" = '0'");
}
}else {
sb.append(" set "+payMsg+" = '查询失败,请联系管理员'");
sb.append(" ,"+fieldName+" = '2'");
}
sb.append(" where id = '"+main.getString("id")+"'");
//修改推送状态防止重复推送
oaBillEntity.setSql(sb.toString());
payBillDao.updateStateForId(sb.toString(),oaBillEntity);
} catch (Exception e) {
StringBuffer sb = new StringBuffer();
sb.append("update "+tableName );
sb.append(" set "+payMsg+" = '获取交易状态失败'");
sb.append(" , "+fieldName+" = '2'");
sb.append(" where id = '"+main.getString("id")+"'");
logger.info("获取交易状态失败,更新交易信息为失败状态,后续不在查询");
e.printStackTrace();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return new JsonResultEntity("成功",true,new JsonResultEntity());
}
public String formatStatus(String status){
Map<String,String> statusMap = new HashMap<>();
statusMap.put("0","交易成功");
statusMap.put("-2","已删除");
statusMap.put("-3","审批打回交易关闭");
statusMap.put("2","交易失败");
statusMap.put("4","交易失败,资金下拨失败");
statusMap.put("5","联动支付失败,资金退回成功");
statusMap.put("6","联动支付失败,资金退回查证中、");
statusMap.put("96","联动支付失败,资金退回失败");
statusMap.put("112","请款失败");
statusMap.put("-1","驳回");
statusMap.put("1","交易待查证");
statusMap.put("3","待发送");
statusMap.put("95","审批通过");
statusMap.put("7","暂存");
statusMap.put("-4","经办撤回");
statusMap.put("111","请款查证中");
statusMap.put("113","请款成功,交易待发送");
statusMap.put("114","联动支付成功,智能支付交易待发送");
if(Long.valueOf(status)>=11 && Long.valueOf(status) <=94){
return "待审批";
}
return statusMap.get(status);
} }
} }

View File

@ -52,7 +52,7 @@ public class KunBPayBillPluginInitializer extends PluginBaseEntity{
@Override @Override
public String getPluginName() { public String getPluginName() {
return "KunBPayBillPluginInitializer插件"; return "堃博OA付款单同步宁波银行";
} }
@Override @Override
@ -76,7 +76,7 @@ public class KunBPayBillPluginInitializer extends PluginBaseEntity{
try { try {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
if(null != requestJson && StrUtil.isNotEmpty(requestJson.getString("code"))){ if(StrUtil.isNotEmpty(rootAppPk)){
String code = requestJson.getString("code"); String code = requestJson.getString("code");
sb.append(" and id = '"+rootAppPk+"'"); sb.append(" and id = '"+rootAppPk+"'");
}else{ }else{
@ -84,30 +84,12 @@ public class KunBPayBillPluginInitializer extends PluginBaseEntity{
} }
PayBillEntity oaBillEntity = new PayBillEntity(); PayBillEntity oaBillEntity = new PayBillEntity();
String dataSourceCode = requestJson.getString("sourceCode"); String dataSourceCode = "KUNBOA";
oaBillEntity.setDataSourceCode(dataSourceCode); oaBillEntity.setDataSourceCode(dataSourceCode);
StringBuffer stringBuffer = new StringBuffer(); StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("select \n" +
"id as id,\n" + //备用金申请单
"serialno as serialNo,\n" + stringBuffer.append("select * from v_hzya_pay" );
"corpcode as corpCode,\n" +
"payacc as payAcc,\n" +
"rcvacc as rcvAcc,\n" +
"rcvbankname as rcvBankName,\n" +
"rcvbankno as rcvBankNo,\n" +
"rcvname as rcvName,\n" +
"purpose as purpose,\n" +
"remark as remark,\n" +
"issubscribe as isSubscribe,\n" +
"difbank as difBank,\n" +
"areasign as areaSign,\n" +
"amt as amt,\n" +
"'subState' as fieldName,\n" +
"'formmain_bank' as tableName,\n" +
"amt as amt,\n" +
"wishpaytime as wishPayTime,\n" +
"isforindividual as isForIndividual\n" +
"from formmain_bank where 1=1 " );
stringBuffer.append(sb.toString()); stringBuffer.append(sb.toString());
List<HashMap<String, Object>> hashMaps = payBillDao.getOaBillData(stringBuffer.toString(),oaBillEntity); List<HashMap<String, Object>> hashMaps = payBillDao.getOaBillData(stringBuffer.toString(),oaBillEntity);
if(CollectionUtils.isNotEmpty(hashMaps)){ if(CollectionUtils.isNotEmpty(hashMaps)){
@ -133,30 +115,35 @@ public class KunBPayBillPluginInitializer extends PluginBaseEntity{
String subState = ""; String subState = "";
String fieldName = main.getString("fieldName"); String fieldName = main.getString("fieldName");
String tableName = main.getString("tableName"); String tableName = main.getString("tableName");
String payMsg = main.getString("payMsg");
String str = ""; String str = "";
String sync_flag = "";
try { try {
if(StrUtil.isEmpty(interId)){ if(StrUtil.isEmpty(interId)){//todo 银行状态 1支付中 2 支付失败 null 未提交支付 0支付成功
if(flag){ if(flag){
subState = "Y"; subState = "1";
sync_flag = " ,"+payMsg+" = '支付中'";
taskLivingDetailsService.saveLogToSuccess(logDetails); taskLivingDetailsService.saveLogToSuccess(logDetails);
}else{ }else{
subState = "N"; subState = "2";
taskLivingDetailsService.saveLogToFail(logDetails); taskLivingDetailsService.saveLogToFail(logDetails);
} }
}else{ }else{
logDetails.setId(interId); logDetails.setId(interId);
if(flag){ if(flag){
subState = "Y"; subState = "1";
sync_flag = " ,"+payMsg+" = '支付中'";
taskLivingDetailsService.saveLogFailToSuccess(logDetails); taskLivingDetailsService.saveLogFailToSuccess(logDetails);
}else{ }else{
subState = "N"; subState = "2";
taskLivingDetailsService.updateLogFailToSuccess(logDetails); taskLivingDetailsService.updateLogFailToSuccess(logDetails);
} }
} }
str = "update "+tableName+" set " + fieldName + "= '" +subState+"'," +"subMsg = '"+attribute+"'"+"where id = '"+main.getString("id")+"'";
str = "update "+tableName+" set " + fieldName + "= '" +subState+"'," +"subMsg = '"+attribute+"'"+sync_flag+"where id = '"+main.getString("id")+"'";
} catch (Exception e) { } catch (Exception e) {
subState = "N"; subState = "N";
str = "update "+tableName+" set " + fieldName + "= '" +subState+"'," +"subMsg = '"+attribute+"'"+"where id = '"+main.getString("id")+"'"; str = "update "+tableName+" set " + fieldName + "= '" +subState+"'," +"subMsg = '"+attribute+"' "+"where id = '"+main.getString("id")+"'";
logger.info("保存日志失败"+e.getMessage()); logger.info("保存日志失败"+e.getMessage());
oaBillEntity.setSql(str); oaBillEntity.setSql(str);
payBillDao.updateStateForId(str,oaBillEntity); payBillDao.updateStateForId(str,oaBillEntity);