博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码的优化(二)---不要写重复代码
阅读量:6382 次
发布时间:2019-06-23

本文共 3055 字,大约阅读时间需要 10 分钟。

如果可以的话,重复逻辑不要多次判断,代码会非常的冗余。 这段代码没有修改之前,大概300行,优化之后只有100行左右。 /**     * 判断是否可以执行退还保证金操作     * 1.判断该条保证金缴纳记录是否可以退还     * 2.如果可以退还,退还的金额是多少?     *      * 根据时间做判断?     * 不用凑整数,可以退就直接退掉     */    @Override    public Map
returnCheck(String bailPayId,Long customerId) { logger.debug("returnCheck,bailPayId {},customerId{}",bailPayId,customerId); Map
map = null; BigDecimal returnBailPay = new BigDecimal(0); BailPay bailPay = bailPayRepository.findOne(bailPayId); if (bailPay != null) { int bailClass = bailPay.bailClass();//该条记录的保证金缴纳的类别 String agencyId = bailPay.agencyId();//缴纳该条保证金的机构id值 BigDecimal maxCommonBailLock; BigDecimal bailLockSpecialSum; if (bailClass == 1) {
//通用保证金 //如果当前竞买人存在保证金冻结记录状态为"锁定"的状态,不能够执行保证金退还操作 int bailLockCount = this.bailLockCommonQuery(customerId); if (bailLockCount != 0) { map = new HashMap
(); map.put("flag", 0);//不可以返还 map.put("returnBailPay", 0);//返还的金额为 0 return map; } maxCommonBailLock = this.checkMaxCommonFrozenBailPay(customerId); bailLockSpecialSum = new BigDecimal(0); } else {
//专项保证金 maxCommonBailLock = this.bailLockSpecialQuery(customerId,agencyId); bailLockSpecialSum = this.bailLockSpecialQuery(customerId,agencyId); } BigDecimal canUseBailLockSum = new BigDecimal(0); //查询出当前该笔保证金缴纳记录之前缴纳的所有的缴纳记录的总和 Specification
spec = (root, query, cb) -> { List
predicates = new ArrayList
(); Predicate predicate1 = cb.equal(root.get(BailPay_.customerId), customerId);//当前登录用户的id predicates.add(predicate1); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Predicate predicate2 = cb.lessThan(root.
get(BailPay_.crtTime), sdf.parse(bailPay.crtTime().toString()));// predicates.add(predicate2); } catch (ParseException e) { e.printStackTrace(); } Predicate predicate3 = cb.equal(root.get(BailPay_.bailClass), BailPay.BAIL_CLASS_TONGYONG);//通用保证金 predicates.add(predicate3); //判断缴纳时间早于当前该条记录的缴纳记录 if (!predicates.isEmpty()) { return cb.and(predicates.toArray(new Predicate[0])); } else { return null; } }; List
bailPayList = bailPayRepository.findAll(spec); if (bailPayList != null && bailPayList.size()>0) { for (BailPay bailPay2 : bailPayList) { if (bailPay2 != null) { canUseBailLockSum = canUseBailLockSum.add(bailPay2.remainBailPay());//每一条缴纳记录的剩余金额的总和 } } } if(canUseBailLockSum.compareTo(maxCommonBailLock.add(bailLockSpecialSum)) != -1){ //可以退还该条保证金缴纳记录的金额 map = new HashMap
(); map.put("flag", 1);//可以返还 map.put("returnBailPay", returnBailPay);//返还的金额 return map; } } map = new HashMap
(); map.put("flag", 0);//不可以返还 map.put("returnBailPay", 0);//返还的金额 return map; }

 

转载地址:http://qrwha.baihongyu.com/

你可能感兴趣的文章
WCF简单教程(10) Ajax调用
查看>>
实验:从命令行接收多个数字并求和
查看>>
DBCC SHRINKFILE 为什么会运行很长时间?
查看>>
Linux系统下常见性能分析工具的使用
查看>>
linux下QOS--理论篇
查看>>
一步一步学Silverlight 2系列(26):基本图形
查看>>
word无所不能之word连接数据库
查看>>
Wijmo 更优美的jQuery UI部件集:客户端更改C1GridView数据源
查看>>
详解 Windows下apache 实现 SSL
查看>>
从产品疑问到态度问题:808.8GB拷问西部数据
查看>>
cocos2d-x学习笔记16:记录存储1:CCUserDefault
查看>>
Windows Server 2012正式版RDS系列⒀
查看>>
infortrend ESDS RAID6 数据恢复过程
查看>>
基于CentOS5.3邮件系统(Windows AD+Slockd+Dspam)整合
查看>>
WPF/E CTP Quick Start - 第七部分:文本(翻译)
查看>>
求助:WPF不明内存泄露原因,头发都白了几根
查看>>
安全筛选器创建与管理
查看>>
将最小特权原则应用到 Windows XP 上的用户帐户
查看>>
学会战斗中成长 运用网络中的利器
查看>>
小结:linux下的FTP、DHCP、DNS和postfix
查看>>