From 30dc4cd1e5b14ad43063492ccae54f795b5a1f64 Mon Sep 17 00:00:00 2001 From: yuqh <123456> Date: Thu, 7 Aug 2025 13:38:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BF=9D=E8=AF=81=E9=87=91?= =?UTF-8?q?=E4=BB=98=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PaybillPluginCommonService.java | 44 ++++++++++++++++++- .../impl/PaybillPluginServiceImpl.java | 17 +++++-- 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/payment/service/impl/PaybillPluginCommonService.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/payment/service/impl/PaybillPluginCommonService.java index 836c6709..919f9f0c 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/payment/service/impl/PaybillPluginCommonService.java +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/payment/service/impl/PaybillPluginCommonService.java @@ -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 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); + } + } + } + } } diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/payment/service/impl/PaybillPluginServiceImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/payment/service/impl/PaybillPluginServiceImpl.java index c49626f2..8f4d52f5 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/payment/service/impl/PaybillPluginServiceImpl.java +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/oa/payment/service/impl/PaybillPluginServiceImpl.java @@ -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 forsonDataList) { + private Boolean apPaybill(String summaryId,String datasourceCode, JSONObject formmainData, JSONObject headers, List 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); }