批量更新数据不同状态时 ,1.在更新前检测 2.更新后执行自己的逻辑

  今天在项目中做盘点管理,盘点单据有 编辑->提交->审批->撤销->退回->开盘->盘毕等状态。根据操作对盘点单据会不停的更新其状态。
一般做法是根据这5.6种状态,编写5,6中ServiceImpl方法 分别去Update。若要是批量操作则会加上for循环,代码块冗余过多。自己便将Update抽离出来。
抽离出来后,面临这一些问题。就是在有些状态更新操作时,需要做验证(如:退回只能操作审批状态。开盘只能操作审批状态)。这个时候就需要在update之前需
要判断,
看其当前状态是否满足条件。
-------------------------------------------------------------
批量更新数据不同状态时 ,1.在更新前检测 2.更新后执行自己的逻辑

此时利用断言型接口
Predicate<?> 处理【有点象JS中的callback】

/**
* 提交盘点单 */ @Override public Result submitInventoryPlan(List<InvlctInventory> entitys) throws FrameExecuteException { return changeEntityStatus(entitys,InventoryStatus.SUBMIT,e->true,"提交成功!"); //若不需要在更新前进行检测 直接return true; } /** * 功能:(编制中)撤销盘点单据 * @param entitys 盘点单实体List */ @Override public Result retreatInventoryPlan(List<InvlctInventory> entitys) throws FrameExecuteException { return changeEntityStatus(entitys,InventoryStatus.EDIT,e->InventoryStatus.SUBMIT.equals(e.getSts()),"撤销成功!"); } /** * 功能:改变盘点单据状态 * @param entitys 盘点单据实体LIst * @param status 要设置成的状态 * @param trueMessage 操作成功后的提示消息 * @return Result */ private Result changeEntityStatus(List<InvlctInventory> entitys,InventoryStatus status,Predicate<InvlctInventory> pre,String trueMessage){ List<InvlctInventory> list = new ArrayList<>(); for (InvlctInventory invlctInventory : entitys) { InvlctInventory entity = get(invlctInventory.getCod()); if(entity!=null){ //检查是否满足 状态更新 if(pre.test(entity)){//回调判断 entity.setSts(status); entity.setEtim(new Date()); update(entity); } }else{ list.add(invlctInventory); } } String message = null; if(list.isEmpty() || list.size()==0){ message = trueMessage; }else{ message = "部分数据不存在,请刷新!"; } return new Result(true,message); }

 

转载于:https://www.cnblogs.com/wang-yi/p/10025417.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值