lb:pdf文件合并功能
This commit is contained in:
parent
5bc6e34327
commit
12142a62d1
@ -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<String,String> attachControl = getAttachControl(parentFormName);
|
||||
Set<String> attachControlKey = attachControl.keySet();
|
||||
// 初始化 [目标面板]下拉列表项集合
|
||||
String currLCId = Lang.get().toString();// 获取当前语言代码
|
||||
List<ComboItem> 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<String> getAttachControl(String formName){
|
||||
private Map<String,String> getAttachControl(String formName){
|
||||
MainEntityType entityType = EntityMetadataCache.getDataEntityType(formName);
|
||||
FormMetadata taskMeta = (FormMetadata) MetadataDao.readRuntimeMeta(MetadataDao.getIdByNumber(
|
||||
entityType.getName(), MetaCategory.Form), MetaCategory.Form);
|
||||
List<ControlAp<?>> items = taskMeta.getItems();
|
||||
// 附件面板标识集合。
|
||||
List<String> attachmentPanelAp = new ArrayList<>();
|
||||
Map<String,String> 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;
|
||||
|
Loading…
Reference in New Issue
Block a user