如何实现分组基础资料左树节点的互斥功能原创
1人赞赏了该文章
795次浏览
编辑于2022年12月19日 09:14:00
关键词:分组基础资料、左树节点、网络互斥
一、需求
a用户选择某个节点进行编辑时,不允许b用户对该节点进行编辑;a用户选择某个节点进行新增时,b用户可以对该节点进行编辑。
二、思路与方案
分组基础资料中,左节点其实是另外一个基础资料(kded_groupbdclz)的数据,网络互斥是实际上是互斥分组的数据。
点击左树控件的新增或者编辑按钮时,分别为该节点申请网络互斥资源,当其他用户进行同样的操作时,申请互斥锁失败。
三、实现过程
1、给基础资料kded_groupbdclz新增两个空操作
2、添加互斥锁,a用户点击左树节点进行新增或者编辑前,申请节点基础资料的互斥锁
public class MuteLockListPlugin extends StandardTreeListPlugin { @Override public void registerListener(EventObject e) { Button btnnew = this.getView().getControl("btnnew"); btnnew.addClickListener(this); Button btnedit = this.getView().getControl("btnedit"); btnedit.addClickListener(this); super.registerListener(e); } @Override public void beforeClick(BeforeClickEvent evt) { Object source = evt.getSource(); if (source instanceof Button){ Button bt=(Button)source; String key = bt.getKey(); ITreeModel treeModel = this.getTreeModel(); GroupProp prop = this.getTreeModel().getGroupProp(); String entityId = prop.getBaseEntityId(); String currentNodeId = (String)treeModel.getCurrentNodeId(); //获取网络互斥锁 if (key.equals("btnnew")){ boolean requLock = MutexHelper.require(entityId,currentNodeId,"btnnew",false,null); if (!requLock){ this.getView().showErrorNotification("该树节点正在被其他用户新增节点占用,请稍后再试"); evt.setCancel(true); } }else if(key.equals("btnedit")){ boolean requLock = MutexHelper.require(entityId,currentNodeId,"btnedit",false,null); if (!requLock){ this.getView().showErrorNotification("该树节点正在被其他用户编辑占用,请稍后再试"); evt.setCancel(true); } } } super.beforeClick(evt); } }
3、点击11这个节点进行编辑后,只有a用户在分组资料退出时,才释放互斥锁
//分组资料插件 public class Groupbasebillplugin extends AbstractBillPlugIn { // 创建logger private final static Log logger = LogFactory.getLog(Groupbasebillplugin.class); //分组页面关闭时释放互斥锁 @Override public void pageRelease(EventObject e) { BillShowParameter bsp = (BillShowParameter) this.getView().getFormShowParameter(); String formId = bsp.getFormId(); String operate = bsp.getCustomParam("operate"); if (operate==null){ return; } if (operate.equals("addnew")){ String id = bsp.getCustomParam("id"); boolean isRelease = MutexHelper.release(formId, "btnnew", id); logger.info("互斥锁释放状态"+String.valueOf(isRelease)); }else if (operate.equals("edit")){ Map<String, Object> parentInfo = bsp.getCustomParam("tree_curr_id"); String id = (String) parentInfo.get("value"); boolean isRelease = MutexHelper.release(formId, "btnedit", id); logger.info("互斥锁释放状态"+String.valueOf(isRelease)); } super.pageRelease(e); } }
四、效果图
b用户点击11节点进行编辑时,申请互斥锁失败,
系统管理中的网络互斥列表可以看到相关网络互斥信息
五、开发环境版本
V5.0.002
六、参考资料
MutexDemoplugin.zip(2.33KB)
kded_mycloud-kded_reqord-20221 …(17.01KB)
赞 1
1人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!