调整保证金付款

This commit is contained in:
yuqh 2025-08-07 13:38:44 +08:00
parent 147ecde323
commit 30dc4cd1e5
2 changed files with 56 additions and 5 deletions

View File

@ -3,12 +3,20 @@ package com.hzya.frame.plugin.oa.payment.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.seeyon.entity.CollAttachmentResDTO;
import com.hzya.frame.seeyon.util.OARestUtil;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.net.URLDecoder;
import java.util.Base64;
import java.util.List;
/**
* @Description
* @Author xiangerlin
@ -16,7 +24,8 @@ import org.springframework.stereotype.Service;
**/
@Service(value = "paybillPluginCommonService")
public class PaybillPluginCommonService {
@Autowired
private OARestUtil oaRestUtil;
@Value("${zt.url}")
private String baseUrl;
Logger logger = LoggerFactory.getLogger(PaybillPluginCommonService.class);
@ -88,4 +97,37 @@ public class PaybillPluginCommonService {
}
return null;
}
public void uploadFile(String summaryId, JSONObject headers, String pk_order) {
String fileApiCode = headers.getString("fileApiCode");
String token = oaRestUtil.getToken(null, fileApiCode);
List<CollAttachmentResDTO> collAttachmentList = oaRestUtil.getColAttachments(summaryId, "0", fileApiCode, token);
if (CollectionUtils.isNotEmpty(collAttachmentList)){
//获取OA token
for (CollAttachmentResDTO collAttachment : collAttachmentList) {
try {
String fileName = URLDecoder.decode(collAttachment.getFilename(), "UTF-8");
byte[] bytes = oaRestUtil.downloadFileBytes("hzya", fileApiCode, collAttachment.getFileUrl(), fileName, token);
String base64File = Base64.getEncoder().encodeToString(bytes);
JSONObject fileParams = new JSONObject();
fileParams.put("creator", headers.getString("creator"));
fileParams.put("pk_bill", pk_order);
fileParams.put("filename",fileName);
fileParams.put("file",base64File);
String result = HttpRequest.post(baseUrl)
.header("appId", "800065")//NCC应用
.header("apiCode", "8000650001")//NCC附件上传接口
.header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥
.header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥
.body(fileParams.toString())//表单内容
.timeout(30000)//超时毫秒
.execute().body();
logger.info("======OA附件上传到NCC响应参数:{}======",result);
}catch(Exception e){
e.printStackTrace();
logger.error("下载OA附件出错:{}",e);
}
}
}
}
}

View File

@ -43,6 +43,8 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
@Autowired
private ICLPayApplyService clpayApplyService;
@Autowired
private PaybillPluginCommonService paybillPluginCommonService;
@Autowired
private ICLPayApplyDao clPayApplyDao;
/**
@ -81,7 +83,7 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
* 如果支付类型是开票保证金要单独生成一张付款结算单
*/
//付款单
Boolean flag = apPaybill(datasourceCode, formmainData, headers, forsonDataList);
Boolean flag = apPaybill(summaryId,datasourceCode, formmainData, headers, forsonDataList);
String orgCode = formmainData.getString("field0053");
if ("002".equals(orgCode)) {
cmpPaybill(datasourceCode, formmainData, headers, forsonDataList);
@ -290,7 +292,7 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
* @param headers
* @param forsonDataList
*/
private Boolean apPaybill(String datasourceCode, JSONObject formmainData, JSONObject headers, List<JSONObject> forsonDataList) {
private Boolean apPaybill(String summaryId,String datasourceCode, JSONObject formmainData, JSONObject headers, List<JSONObject> forsonDataList) {
String billmaker = headers.getString("billmaker");
boolean falg = true;
//付款明细行,每一行都生成一张NCC付款单
@ -314,7 +316,7 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
.execute().body();
logger.info("======OA付款单传NCC付款单响应参数:{}======", result);
//解析返回结果 并把NCC单据号更新到OA表单
falg = parseRes(result,datasourceCode,headers,forson.getString("id"));
falg = parseRes(summaryId,result,datasourceCode,headers,forson.getString("id"));
}
//}
return falg;
@ -525,7 +527,7 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
* @param id OA付款单明细行id
* @return
*/
private Boolean parseRes(String result,String datasourceCode,JSONObject headers,String id){
private Boolean parseRes(String summaryId ,String result,String datasourceCode,JSONObject headers,String id){
boolean flag = false;
JSONObject attribute = getAttribute(result);
if (null != attribute){
@ -537,6 +539,13 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
String message = Convert.toStr(attribute.getString("message"), "成功");
String billno = data.getString("billno");
if (StrUtil.isNotEmpty(billno)){
String pk_bill = data.getString("pk_bill");
// 上傳附件到NCC
try {
paybillPluginCommonService.uploadFile(summaryId,headers,pk_bill);
} catch (Exception e) {
logger.error("上傳附件到NCC失敗",e);
}
String sqlTemplate = "update {} set {} = '{}',{} = '{}' where {} = '{}'";
sql = StrUtil.format(sqlTemplate,headers.getString("forsonTableName"),"field0100",billno,"field0101",message,"id",id);
}