🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
系统中,涉及到单据或其他实体的编辑的时候,如果有两个及以上针对同一个实体并发操作的时候,如果不进行控制,会出现数据冲突。 对于这个问题,我们给出了通用的commonLock解决方案。以下以几个典型场景案例为示范,解释了这种机制; ## 一、场景1 场景1描述: A用户登陆系统,打开一个单据的修改或审核某个单据的界面,B用户此时,不应该可以打开该单据的修改或审核某个单据的界面。 解决方案: A用户进入修改或审核某个单据的界面的时候,同时锁定该单据,记录锁定人、锁定时间,当其B用户点击该单据,准备进入修改或者审核的时候,提示该单据已经有某某在某某时间锁定了,拒绝该用户进入。当A提交了修改或者审核的时候,释放该锁定信息。 ## 二、场景2 场景2描述: 当一个单据被审核后,不应该因为遗留界面,再次被修改。 解决方案: 进入修改的界面的时候,首先检测单据的状态不能是已审核过。 为了更稳妥起见,提交修改的界面的时候,再次检测单据的状态不能是已审核通过。 ## 三、场景3 场景3描述: 如果单据已经关联了SN,则不允许修改,只能审核不通过,提交修改,重新审核 ## 四、场景4 场景4描述: 如果同一个人同时打开了同一张单据的审核和修改,则只能成功提交一个,另外一个失败并提示 ## 五、场景5 场景5描述: 区分修改和审核界面,分别持有不同的锁,加一个锁类型,修改或者审核 设计一张新的锁定表,包括如下字段: 锁定人、锁定时间、锁定单据类型、锁定单据id、 再加一张锁定历史表,当解除锁定后,数据迁移到锁定历史表,备查。