增加附件上传接口

2024年8月7日 09:45:52
This commit is contained in:
xiang2lin 2024-08-07 09:46:05 +08:00
parent 5ce5818c94
commit 0cf730bb43
2 changed files with 112 additions and 4 deletions

View File

@ -42,4 +42,18 @@ public interface INingboBankPluginService {
* @param apiCode
*/
void queryResult(List<HashMap<String, Object>> hashMaps,String apiCode);
/**
* 查询OA附件并上传到宁波银行
* @param oaId oa主键id
* @return 宁波银行附件上传编码
*/
String fileUpload(String oaId);
/**
* 更新u8c单据状态
* @param billCode oa单据编号
* @param dwbm 公司编码
*/
void updateU8CStatus(String billCode,String dwbm);
}

View File

@ -6,6 +6,7 @@ import cn.hutool.core.map.MapBuilder;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.ningboBankTreasury.dto.req.SingleTransferReq;
import com.hzya.frame.ningboBankTreasury.dto.req.TTRemitReq;
@ -13,14 +14,17 @@ import com.hzya.frame.ningboBankTreasury.dto.res.AccTransactionRes;
import com.hzya.frame.ningboBankTreasury.enums.CurrencyEnum;
import com.hzya.frame.ningboBankTreasury.enums.PayStatusEnum;
import com.hzya.frame.ningboBankTreasury.enums.TTPayStatusEnum;
import com.hzya.frame.ningboBankTreasury.service.INingboBankTreasuryService;
import com.hzya.frame.plugin.a8bill.dao.IPayBillPluginInitializerDao;
import com.hzya.frame.plugin.a8bill.entity.PayBillEntity;
import com.hzya.frame.plugin.a8bill.service.INingboBankPluginService;
import com.hzya.frame.seeyon.dongj.entity.Formmain0044Entity;
import com.hzya.frame.seeyon.dongj.service.IFormmain0044Service;
import com.hzya.frame.seeyon.util.RestUtil;
import com.hzya.frame.stringutil.StringUtil;
import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity;
import com.hzya.frame.sysnew.integtationTaskLivingDetails.service.IIntegrationTaskLivingDetailsService;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -28,7 +32,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import javax.annotation.Resource;
import java.util.*;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -44,7 +51,10 @@ private IFormmain0044Service formmain0044Service;
private IIntegrationTaskLivingDetailsService taskLivingDetailsService;
@Autowired
private IPayBillPluginInitializerDao payBillDao;
@Autowired
private RestUtil restUtil;
@Autowired
private INingboBankTreasuryService ningboBankTreasuryService;
@Value("${OA.data_source_code}")
private String oa_data_source_code;
@ -69,13 +79,17 @@ private IFormmain0044Service formmain0044Service;
main.put(key, hashMap.get(key));
}
String param = "";
//单笔转账
if ("8000360000".equals(apiCode)){
SingleTransferReq singleTransferReq = JSONObject.parseObject(main.toString(), SingleTransferReq.class);
param = JSONObject.toJSONString(singleTransferReq);
}else if("8000360003".equals(apiCode)){
//TT汇款
TTRemitReq ttRemitReq = JSONObject.parseObject(main.toString(), TTRemitReq.class);
if ("01".equals(ttRemitReq.getPayMode()) || "1".equals(ttRemitReq.getPayMode())){
ttRemitReq.setFileUploadCodes(Convert.toList(String.class,"0a736c17-e79f-48be-b3cd-710585165d55"));
//货到付款时要上传附件
if ("01".equals(ttRemitReq.getPayMode())){
String fileCode = fileUpload(main.getString("id"));
ttRemitReq.setFileUploadCodes(Convert.toList(String.class,fileCode));
}
param = JSONObject.toJSONString(ttRemitReq);
}
@ -143,6 +157,8 @@ private IFormmain0044Service formmain0044Service;
//修改推送状态防止重复推送
oaBillEntity.setSql(str);
payBillDao.updateStateForId(str,oaBillEntity);
//更新u8c付款单状态
updateU8CStatus(main.getString("serialNo"),main.getString("dwbm"));
}catch (Exception e){
logger.info("宁波银行付款接口调用出错:{}",e);
}
@ -311,6 +327,84 @@ private IFormmain0044Service formmain0044Service;
}
}
/**
* 查询OA附件并上传到宁波银行
*
* @param oaId oa主键id
* @return 宁波银行附件上传编码
*/
@Override
public String fileUpload(String oaId) {
if (StrUtil.isNotEmpty(oaId)){
try {
//查询oa单据关联附件
PayBillEntity oaBillEntity = new PayBillEntity();
oaBillEntity.setDataSourceCode(oa_data_source_code);
String sql = " SELECT\n" +
" formmain_0058.id,\n" +
" formmain_0058.field0024 ,\n" +
" CTP_ATTACHMENT.FILE_URL,\n" +
" CTP_ATTACHMENT.FILENAME\n" +
"FROM\n" +
" formmain_0058 \n" +
" LEFT JOIN CTP_ATTACHMENT ON CTP_ATTACHMENT.SUB_REFERENCE = formmain_0058.field0024 \n" +
"WHERE\n" +
" formmain_0058.field0061 = '境外'\n" +
" and formmain_0058.id = '" + oaId+"'";
oaBillEntity.setSql(sql);
List<HashMap<String, Object>> dataList = payBillDao.getOaBillData(sql, oaBillEntity);
if (CollectionUtils.isNotEmpty(dataList)){
HashMap<String, Object> oaDataMap = dataList.get(0);
String fileUrl = String.valueOf(oaDataMap.get("FILE_URL"));
String fileName = String.valueOf(oaDataMap.get("FILENAME"));
if (StrUtil.isNotEmpty(fileUrl)){
//下载OA附件
byte[] bytes = restUtil.downloadFileBytes("oa1", "8000340000", fileUrl, fileName);
//上传到宁波银行
logger.info("上传附件到宁波银行:{},{}",fileUrl,fileName);
JSONObject param = new JSONObject();
param.put("fileName",fileName);
param.put("bytes",bytes);
param.put("channelNo","open-filegateway");
String res = executeEsb(param.toString(), "8000360008");
JsonResultEntity jsonResultEntity = JSONObject.parseObject(res, JsonResultEntity.class);
if (null != jsonResultEntity && jsonResultEntity.isFlag()){
JSONObject attribute = JSONObject.parseObject(String.valueOf(jsonResultEntity.getAttribute()));
JSONObject data = attribute.getJSONObject("Data");
String fileCode = data.getString("data");
return fileCode;
}
}
}
}catch(Exception e){
logger.error("上传附件到宁波银行出错:{}",e);
}
}
return null;
}
/**
* 更新u8c单据状态
* @param billCode oa单据编号
* @param dwbm 公司编码
*/
@Override
public void updateU8CStatus(String billCode,String dwbm) {
if (StrUtil.isNotEmpty(billCode)){
JSONObject billObj = new JSONObject();
billObj.put("djbh",billCode);
billObj.put("dwbm",dwbm);
billObj.put("operatedate",DateUtil.today());
billObj.put("operatorid","yonyou02");
billObj.put("result","0");
JSONArray bills = new JSONArray();
bills.add(bills);
JSONObject param = new JSONObject();
param.put("bills",bills);
String s = executeEsb(param.toString(), "8000350044");
logger.info("调用U8C付款单审批返回参数:{}",s);
}
}
private static String getAccLogXmlTemplate(){
// return "<forms version=\"2.1\"><formExport><summary id=\"1828182906863371818\" name=\"formmain_0044\"/><definitions><column id=\"field0001\" type=\"0\" name=\"我方账号\" isNullable=\"false\" length=\"200\"/><column id=\"field0017\" type=\"0\" name=\"我方开户行\" isNullable=\"false\" length=\"200\"/><column id=\"field0024\" type=\"0\" name=\"我方户名\" isNullable=\"false\" length=\"200\"/><column id=\"field0029\" type=\"0\" name=\"客户方账号\" isNullable=\"false\" length=\"200\"/><column id=\"field0022\" type=\"0\" name=\"客户方户名\" isNullable=\"false\" length=\"2000\"/><column id=\"field0030\" type=\"0\" name=\"客户方开户行\" isNullable=\"false\" length=\"500\"/><column id=\"field0018\" type=\"2\" name=\"交易日期\" isNullable=\"false\" length=\"255\"/><column id=\"field0019\" type=\"0\" name=\"交易流水号\" isNullable=\"false\" length=\"100\"/><column id=\"field0020\" type=\"4\" name=\"收款金额\" isNullable=\"false\" length=\"20\"/><column id=\"field0021\" type=\"0\" name=\"摘要\" isNullable=\"false\" length=\"500\"/><column id=\"field0025\" type=\"0\" name=\"银行类型\" isNullable=\"false\" length=\"100\"/><column id=\"field0026\" type=\"0\" name=\"银行流水号\" isNullable=\"false\" length=\"100\"/><column id=\"field0027\" type=\"0\" name=\"币种\" isNullable=\"false\" length=\"100\"/><column id=\"field0028\" type=\"0\" name=\"用途\" isNullable=\"false\" length=\"800\"/><column id=\"field0031\" type=\"0\" name=\"关联客户号\" isNullable=\"false\" length=\"100\"/><column id=\"field0032\" type=\"0\" name=\"客商编号\" isNullable=\"false\" length=\"100\"/><column id=\"field0033\" type=\"0\" name=\"交易代码\" isNullable=\"false\" length=\"100\"/><column id=\"field0034\" type=\"0\" name=\"客商名称\" isNullable=\"false\" length=\"100\"/><column id=\"field0035\" type=\"0\" name=\"对账码\" isNullable=\"false\" length=\"100\"/><column id=\"field0036\" type=\"0\" name=\"备注\" isNullable=\"false\" length=\"800\"/><column id=\"field0037\" type=\"0\" name=\"ERP业务参考号\" isNullable=\"false\" length=\"100\"/><column id=\"field0038\" type=\"0\" name=\"币种ID\" isNullable=\"false\" length=\"100\"/><column id=\"field0039\" type=\"0\" name=\"币种编码\" isNullable=\"false\" length=\"100\"/><column id=\"field0040\" type=\"0\" name=\"控制只关联1次\" isNullable=\"false\" length=\"100\"/><column id=\"field0044\" type=\"4\" name=\"收款剩余金额\" isNullable=\"false\" length=\"20\"/><column id=\"field0045\" type=\"0\" name=\"收款完成情况\" isNullable=\"false\" length=\"100\"/><column id=\"field0046\" type=\"4\" name=\"是否收款完成\" isNullable=\"false\" length=\"20\"/></definitions><values><column name=\"我方账号\"><value><![CDATA[{}]]></value></column><column name=\"我方开户行\"><value><![CDATA[{}]]></value></column><column name=\"我方户名\"><value><![CDATA[{}]]></value></column><column name=\"客户方账号\"><value><![CDATA[{}]]></value></column><column name=\"客户方户名\"><value><![CDATA[{}]]></value></column><column name=\"客户方开户行\"><value><![CDATA[{}]]></value></column><column name=\"交易日期\"><value><![CDATA[{}]]></value></column><column name=\"交易流水号\"><value><![CDATA[{}]]></value></column><column name=\"收款金额\"><value><![CDATA[{}]]></value></column><column name=\"摘要\"><value><![CDATA[{}]]></value></column><column name=\"银行类型\"><value><![CDATA[{}]]></value></column><column name=\"银行流水号\"><value><![CDATA[{}]]></value></column><column name=\"币种\"><value><![CDATA[{}]]></value></column><column name=\"用途\"><value><![CDATA[{}]]></value></column><column name=\"关联客户号\"><value><![CDATA[{}]]></value></column><column name=\"客商编号\"><value><![CDATA[{}]]></value></column><column name=\"交易代码\"><value><![CDATA[{}]]></value></column><column name=\"客商名称\"><value><![CDATA[{}]]></value></column><column name=\"对账码\"><value><![CDATA[{}]]></value></column><column name=\"备注\"><value><![CDATA[{}]]></value></column><column name=\"ERP业务参考号\"><value><![CDATA[{}]]></value></column><column name=\"币种ID\"><value><![CDATA[{}]]></value></column><column name=\"币种编码\"><value><![CDATA[{}]]></value></column><column name=\"控制只关联1次\"><value><![CDATA[{}]]></value></column><column name=\"收款剩余金额\"><value><![CDATA[{}]]></value></column><column name=\"收款完成情况\"><value><![CDATA[{}]]></value></column><column name=\"是否收款完成\"><value><![CDATA[{}]]></value></column></values><subForms/></formExport></forms>";