上传附件后,删除旧附件原创
16人赞赏了该文章
5304次浏览
编辑于2021年04月21日 16:28:07
创作不易,如果文章对您有帮助,请为我点击一个朴实无华的赞^_^,我会更有动力地更新文章。
删除旧附件,达到一个替换附件的效果
思路:
新建java插件,注册附件上传的监听事件。
在附件上传时,把上传附件的uid记录起来。
在附件上传之后,当前控制器和数据库中,通过第2步骤的记录区分原附件和此次上次附件,把上一次的附件删除掉。
当前有三个附件
上次两个新附件,原来的附件被删除
插件代码如下
package kd.ecos.demo; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.control.AttachmentPanel; import kd.bos.form.control.events.UploadEvent; import kd.bos.form.control.events.UploadListener; import kd.bos.form.plugin.AbstractFormPlugin; import kd.bos.servicehelper.AttachmentServiceHelper; import java.util.*; public class DemoTestPlugin extends AbstractFormPlugin implements UploadListener { List pkIdList = new ArrayList<>(); @Override public void registerListener(EventObject e) { super.registerListener(e); // 注册监听事件 AttachmentPanel attachmentPanel = getControl("attachmentpanel"); attachmentPanel.addUploadListener(this); } @Override public void propertyChanged(PropertyChangedArgs e) { System.out.println(""); } @Override public void upload(UploadEvent evt) { // 记录此次上传的附件 Object[] maps = evt.getUrls(); for(Object o : maps) { if (o instanceof Map) { pkIdList.add(((Map)o).get("uid")); } }; System.out.println(""); } @Override public void afterUpload(UploadEvent evt) { System.out.println(""); // 获取附件控制器 AttachmentPanel attachmentPanel = getControl("attachmentpanel"); if (attachmentPanel.getAttachmentData().size() > 0) { // 获取全部附件 List<Map<String, Object>> mapList = attachmentPanel.getAttachmentData(); Iterator<Map<String, Object>> iterator = mapList.iterator(); // 遍历所有附件 while (iterator.hasNext()) { Map map = iterator.next(); boolean canRemove = true; for (Object id : pkIdList) { // 判断附件是否此次上传,如果不是,把变量canRemove置为false if (map.get("uid").toString().equals(id.toString())) { canRemove = false; break; } } // 删除附件 if (canRemove) { String formId = map.get("entityNum").toString(); Object pkId = map.get("billPkId"); Object fileUid = map.get("uid"); //从数据库中删除上一次保存的附件 AttachmentServiceHelper.remove(formId, pkId, fileUid); //控制器中删除附件 attachmentPanel.remove(map); } } // 删除完成之后刷新界面 getView().invokeOperation("refresh"); } // 列表清空 pkIdList.clear(); } }
推荐阅读