From 7366547b0be58c519a099a31f28265c97794c3c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=B4=B5=E5=BC=BA?= Date: Thu, 16 Oct 2025 12:40:16 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E5=AD=90=E5=9B=9E=E5=8D=95=E3=80=81?= =?UTF-8?q?=E7=94=B5=E5=AD=90=E5=AF=B9=E8=B4=A6=E5=8D=95=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/task/ElecReceiptUrlSaveTask.java | 68 +++++++++++++ .../plugin/task/ElecStatementUrlSaveTask.java | 95 +++++++++++++++++++ 2 files changed, 163 insertions(+) create mode 100644 main/java/shjh/jhzj7/fi/fi/plugin/task/ElecReceiptUrlSaveTask.java create mode 100644 main/java/shjh/jhzj7/fi/fi/plugin/task/ElecStatementUrlSaveTask.java diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/task/ElecReceiptUrlSaveTask.java b/main/java/shjh/jhzj7/fi/fi/plugin/task/ElecReceiptUrlSaveTask.java new file mode 100644 index 0000000..7f430eb --- /dev/null +++ b/main/java/shjh/jhzj7/fi/fi/plugin/task/ElecReceiptUrlSaveTask.java @@ -0,0 +1,68 @@ +package shjh.jhzj7.fi.fi.plugin.task; + +import kd.bos.context.RequestContext; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.exception.KDException; +import kd.bos.ext.fi.bei.util.EmptyUtil; +import kd.bos.form.plugin.AbstractFormPlugin; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.schedule.executor.AbstractTask; +import kd.bos.servicehelper.AttachmentServiceHelper; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.bos.url.UrlService; +import kd.sdk.plugin.Plugin; +import kd.tmc.bei.common.helper.ReceiptPrintHelper; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 动态表单插件 + * 单子回单查询-定时获取回单url保存 + */ +public class ElecReceiptUrlSaveTask extends AbstractTask implements Plugin { + + private final static Log logger = LogFactory.getLog(ElecReceiptUrlSaveTask.class); + + @Override + public void execute(RequestContext requestContext, Map map) throws KDException { + QFilter qFilter = new QFilter("ismatch", QCP.equals, true); + qFilter.and(new QFilter("shjh_url", QCP.equals, "")); + //qFilter.and(new QFilter("billno", QCP.equals, "EBB-250428-000571")); + DynamicObject[] load = BusinessDataServiceHelper.load("bei_elecreceipt", "id,billno,billstatus,ismatch,receiptno,shjh_url", qFilter.toArray()); + if (load.length != 0) { + for (DynamicObject dynamicObject : load) { + Object pkValue = dynamicObject.getPkValue(); + DynamicObjectCollection fileReceiptColl = QueryServiceHelper.query("bei_elecreceipt", "id,billno,fileflag,uploadfilename,username", new QFilter[]{new QFilter("id", "in", pkValue)}); + List FileBillList = (List) fileReceiptColl.stream().filter((e) -> { + return e.getBoolean("fileflag") && StringUtils.isNotBlank("uploadfilename"); + }).map((e) -> { + return e.getString("uploadfilename"); + }).collect(Collectors.toList()); + if (!EmptyUtil.isEmpty(FileBillList)) { + Iterator var2 = FileBillList.iterator(); + while (var2.hasNext()) { + String fileUrl = (String) var2.next(); + //String realPath = ReceiptPrintHelper.getRealUploadUrl(fileUrl); + String downloadUrl = UrlService.getAttachmentDownloadUrl(fileUrl); + logger.info("电子回单下载URL:"+downloadUrl); + DynamicObject beiElecreceipt = BusinessDataServiceHelper.loadSingle(pkValue, "bei_elecreceipt"); + beiElecreceipt.set("shjh_url", downloadUrl); + beiElecreceipt.set("shjh_url_tag", downloadUrl); + SaveServiceHelper.update(beiElecreceipt); + } + } + } + } + } +} diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/task/ElecStatementUrlSaveTask.java b/main/java/shjh/jhzj7/fi/fi/plugin/task/ElecStatementUrlSaveTask.java new file mode 100644 index 0000000..cd0ce61 --- /dev/null +++ b/main/java/shjh/jhzj7/fi/fi/plugin/task/ElecStatementUrlSaveTask.java @@ -0,0 +1,95 @@ +package shjh.jhzj7.fi.fi.plugin.task; + +import kd.bos.context.RequestContext; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.entity.LocaleString; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.exception.KDException; +import kd.bos.ext.fi.bei.util.EmptyUtil; +import kd.bos.fileservice.FileService; +import kd.bos.fileservice.FileServiceFactory; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.schedule.executor.AbstractTask; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.PrintServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.bos.servicehelper.print.NotePrintService; +import kd.bos.url.UrlService; +import kd.bos.util.ExceptionUtils; +import kd.sdk.plugin.Plugin; +import kd.tmc.bei.common.helper.BeiHelper; +import kd.tmc.bei.common.helper.ReceiptPrintHelper; +import kd.tmc.fbp.common.ofd.OfdConvertUtil; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 后台任务插件 + * 电子对账单查询-获取回单地址保存在单据 + */ +public class ElecStatementUrlSaveTask extends AbstractTask implements Plugin { + + private final static Log logger = LogFactory.getLog(ElecStatementUrlSaveTask.class); + + + @Override + public void execute(RequestContext requestContext, Map map) throws KDException { + DynamicObject[] load = BusinessDataServiceHelper.load("bei_elecstatement", "id,billno,billstatus,isfile,shjh_url", new QFilter[]{new QFilter("billstatus", QCP.equals, "C")}); + if (load.length != 0) { + ArrayList idList = new ArrayList<>(); + for (DynamicObject bill : load) { + if (bill.getBoolean("isfile") && EmptyUtil.isEmpty(bill.getString("shjh_url"))) { + idList.add((Long) bill.getPkValue()); + } + } + if (idList.size() != 0) { + Map beiElecstatement = BusinessDataServiceHelper.loadFromCache(idList.toArray(), "bei_elecstatement"); + // 处理每个单据 + for (DynamicObject bill : beiElecstatement.values()) { + getPdfUrlFromFileBill(bill); + } + + } + } + } + + /** + * 从文件类型单据获取PDF URL + */ + private void getPdfUrlFromFileBill(DynamicObject bill) { + + try { + + DynamicObjectCollection urlEntry = bill.getDynamicObjectCollection("urlEntry"); + if (!EmptyUtil.isEmpty(urlEntry)) { + for (DynamicObject urlInfo : urlEntry) { + String downloadUrl = getRealUploadUrl(urlInfo); // 需要实现这个方法 + bill.set("shjh_url", downloadUrl); + bill.set("shjh_url_tag", downloadUrl); + SaveServiceHelper.update(bill); + } + } + } catch (Exception e) { + logger.error("处理文件类型PDF失败", e); + + } + } + + private String getRealUploadUrl(DynamicObject statement) { + String uploadFilName = statement.getString("e_fileservicepath"); + String downloadUrl = UrlService.getAttachmentDownloadUrl(uploadFilName); + logger.info("获取文件下载路径:" +downloadUrl); + return downloadUrl; + } + + + +} \ No newline at end of file