From 12142a62d1b5ffe4b80a3e03bb82407b14dfd1bc Mon Sep 17 00:00:00 2001 From: bang Date: Sat, 18 Jan 2025 11:40:33 +0800 Subject: [PATCH] =?UTF-8?q?lb=EF=BC=9Apdf=E6=96=87=E4=BB=B6=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../attach/dynamic/PDFMergeDynamicPlugin.java | 62 +++++++++++++------ 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/yem-base/yem-base-common/src/main/java/yem/base/common/module/attach/dynamic/PDFMergeDynamicPlugin.java b/yem-base/yem-base-common/src/main/java/yem/base/common/module/attach/dynamic/PDFMergeDynamicPlugin.java index 88a8697..e83c940 100644 --- a/yem-base/yem-base-common/src/main/java/yem/base/common/module/attach/dynamic/PDFMergeDynamicPlugin.java +++ b/yem-base/yem-base-common/src/main/java/yem/base/common/module/attach/dynamic/PDFMergeDynamicPlugin.java @@ -7,6 +7,7 @@ import kd.bos.cache.CacheFactory; 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.resource.ResManager; import kd.bos.entity.EntityMetadataCache; import kd.bos.entity.MainEntityType; @@ -21,12 +22,17 @@ import kd.bos.form.control.AttachmentPanel; import kd.bos.form.control.Control; import kd.bos.form.control.EntryGrid; import kd.bos.form.events.AfterDoOperationEventArgs; +import kd.bos.form.field.ComboEdit; +import kd.bos.form.field.ComboItem; import kd.bos.form.plugin.AbstractFormPlugin; +import kd.bos.lang.Lang; import kd.bos.metadata.dao.MetaCategory; import kd.bos.metadata.dao.MetadataDao; import kd.bos.metadata.form.ControlAp; import kd.bos.metadata.form.FormMetadata; import kd.bos.metadata.form.control.AttachmentPanelAp; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.user.UserServiceHelper; import kd.sdk.plugin.Plugin; @@ -49,6 +55,25 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin @Override public void afterCreateNewData(EventObject e) { super.afterCreateNewData(e); + IFormView parentView = this.getView().getParentView(); + String parentFormName = parentView.getModel().getDataEntity().getDataEntityType().getName(); + DynamicObject orgBillObject = BusinessDataServiceHelper.loadSingle("bos_entityobject", + new QFilter[]{new QFilter("number", QCP.equals, parentFormName)}); + this.getView().getModel().setValue("yem_srcentity",orgBillObject); + this.getView().setEnable(false,"yem_srcentity"); + Map attachControl = getAttachControl(parentFormName); + Set attachControlKey = attachControl.keySet(); + // 初始化 [目标面板]下拉列表项集合 + String currLCId = Lang.get().toString();// 获取当前语言代码 + List entryItems = new ArrayList<>(); + for (String name : attachControlKey) { + ComboItem comboItem = new ComboItem(); + comboItem.setValue(attachControl.get(name)); + comboItem.setCaption(new LocaleString(currLCId, "" + name)); + entryItems.add(comboItem); + } + ComboEdit yemTargetkey = this.getControl("yem_targetkey"); + yemTargetkey.setComboItems(entryItems); initData(); } @@ -71,12 +96,13 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin private void initData(){ IFormView view = this.getView(); IDataModel model = view.getModel(); + IFormView parentView = this.getView().getParentView(); + String parentFormName = parentView.getModel().getDataEntity().getDataEntityType().getName(); // 清除分录 model.deleteEntryData("yem_entryentity"); FormShowParameter formShowParameter = view.getFormShowParameter(); String attachKey = formShowParameter.getCustomParam("srcAttachKey"); if (YEM.isEmpty(attachKey))return; - IFormView parentView = view.getParentView(); if (parentView == null) return; DynamicObject dataEntity = parentView.getModel().getDataEntity();// 源单实体 // 获取附件 @@ -106,29 +132,31 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin super.click(evt); IFormView view = this.getView(); IFormView parentView = view.getParentView(); + if (parentView == null)return; Control source = (Control) evt.getSource(); String key = source.getKey(); // 获取需要合并的文件 EntryGrid treeEntryEntity = this.getControl("yem_entryentity"); + String yemTargetkey = (String) view.getModel().getValue("yem_targetkey"); int[] rows = treeEntryEntity.getSelectRows(); switch(key){ case "btnok": - if (rows.length == 0 ){ - this.getView().showErrorNotification(ResManager.loadKDString("请先选择需要合并的附件!", "PDFMergeDynamicPlugin_0", "yem-base")); - return; - } if (rows.length < 2 ){ this.getView().showErrorNotification(ResManager.loadKDString("请至少选择两个文件进行合并!", "PDFMergeDynamicPlugin_1", "yem-base")); return; } + if (YEM.isEmpty(yemTargetkey)){ + this.getView().showErrorNotification(ResManager.loadKDString("请先选择合并附件的目标面板!", "PDFMergeDynamicPlugin_0", "yem-base")); + return; + } Arrays.sort(rows); try { - mergeCreateFile(rows); + mergeCreateFile(rows,yemTargetkey); } catch (IOException e) { this.getView().showErrorNotification(ResManager.loadKDString("文件合并失败!", "PDFMergeDynamicPlugin_2", "yem-base")); return; } - view.returnDataToParent("success"); + view.returnDataToParent(yemTargetkey); view.close(); break; case "btncancel": @@ -144,12 +172,9 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin // 合并生成文件并回传至源单 - private void mergeCreateFile(int[] rows) throws IOException { + private void mergeCreateFile(int[] rows ,String yemTargetkey ) throws IOException { // 获取源单数据 - FormShowParameter formShowParameter = this.getView().getFormShowParameter(); - String attachKey = formShowParameter.getCustomParam("targetAttachKey"); IFormView parentView = this.getView().getParentView(); - if (YEM.isEmpty(attachKey) || parentView == null)return; DynamicObject obj = parentView.getModel().getDataEntity();// 源单实体 SimpleDateFormat format = new SimpleDateFormat("HHmmss"); String date = format.format(new Date()); @@ -219,7 +244,7 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin attachMap.put("creator", user == null ? "金小蝶":user.getString("name")); attachMap.put("description", "");//description attachMap.put("type", "pdf"); - attachMap.put("fattachmentpanel",attachKey); + attachMap.put("fattachmentpanel",yemTargetkey); attachMap.put("entityNum", ""); attachMap.put("billPkId", 0L); attachMap.put("billno", ""); @@ -227,9 +252,9 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin attachMap.put("endProgress", true); attachMap.put("filesource", 1); attachDataList.add(attachMap); - AttachmentPanel control = this.getView().getParentView().getControl(attachKey); + AttachmentPanel control = this.getView().getParentView().getControl(yemTargetkey); control.upload(attachDataList); - this.getView().getParentView().updateView(attachKey); + this.getView().getParentView().updateView(yemTargetkey); } @@ -286,19 +311,20 @@ public class PDFMergeDynamicPlugin extends AbstractFormPlugin implements Plugin /** - * 获取源单实体所有附件面板的key + * 获取源单实体所有附件面板的key\name * @param formName 源单标识 * */ - private List getAttachControl(String formName){ + private Map getAttachControl(String formName){ MainEntityType entityType = EntityMetadataCache.getDataEntityType(formName); FormMetadata taskMeta = (FormMetadata) MetadataDao.readRuntimeMeta(MetadataDao.getIdByNumber( entityType.getName(), MetaCategory.Form), MetaCategory.Form); List> items = taskMeta.getItems(); // 附件面板标识集合。 - List attachmentPanelAp = new ArrayList<>(); + Map attachmentPanelAp = new HashMap<>(); items.forEach(item ->{ if(item instanceof AttachmentPanelAp){ - attachmentPanelAp.add(item.getKey()); + AttachmentPanelAp attachmentPanel = (AttachmentPanelAp) item; + attachmentPanelAp.put(String.valueOf(attachmentPanel.getName()),attachmentPanel.getKey()); } }); return attachmentPanelAp;