思路
首先讲讲编程思路的一个问题,导致走了一天的弯路,业务是要把提交表单的多条数据求和取上限,因为之前react写多了,顺手就在前端代码发请求写校验了,但,一是要把限制条件写在前台代码里,二是即使现从后台取上限,我也要在系统中用到此功能的地方都写校验,虽然是复制粘贴,但改的时候也不好改,可能有遗漏,所以后来还是写到数据库中以便于以后的修改,不用每次发版。
新的知识
首先吧,我的多条表单数据格式是`[
{name:xxx,date:xxx,remark:xxx}{name:xxx,date:xxx,remark:xxx}]
日期有相同的,也有不同的,我要根据日期相同的去求另一个字段的和;
用map集合对list进行接收,key为日期,因为map.put如果key存在则覆盖,不存在则更新,利用这一特性可以对相同日期迭代求和覆盖,更新增加,(网上还有一个collector的相关方法,java8的特性但是BigDecimal类型要自定义扩展源码,没有搞成功就放弃了)
Map<String, BigDecimal> group = new HashMap<String, BigDecimal>();
Date estDate1 = new Date();
BigDecimal hourTotal = new BigDecimal(0.0);
for(PmEstimate pmEstimatest1 : list){
estDate1 = pmEstimatest1.getEstDate();
String estDate=DateUtils.formatDate(estDate1);
hourTotal = group.get(estDate);
if(hourTotal == null){
hourTotal = new BigDecimal(0.0);
}
group.put(estDate, hourTotal.add(pmEstimatest1.getConsumed()));
}
注意格式化日期再去与数据库查询,map.get(key)获得的是value,调用null的方法属性会报空指针异常,切换项目报tomcat找不到jar时,双clean。
BigDecimal
String tip = \"\";
for (String key : group.keySet()) {
String currentId = staff.getStaffId();
BigDecimal finshedHour = pmEstimateMapper.queryTotalHours(key,currentId);
if(finshedHour==null) {
finshedHour = new BigDecimal(0.0);
}
BigDecimal big = new BigDecimal(estimateMax);
if((group.get(key).compareTo((big.subtract(finshedHour)))==1)||(big.compareTo((group.get(key)).add(finshedHour))==-1)){//第四:判断是否合法
String tip1 = (key+\"当前已记录\"+finshedHour+\";\");
tip += tip1;
tip1 =\"\";
}
}
if(tip!=\"\") {
res.ok();
res.setData(estimateList);
res.setMessage(tip+\",建议一天总工时不超过\"+estimateMax);
} else {
res.ok();
}
这是一个集合的遍历与BigDecimal的简单运算,加a.add(b)减b.subtract(a)比较大小a.compareTo(b)返回-1,0,1。(dead code eclipse自动判断不会去执行的代码)
react的一点应用
异步promise对象,因为当你连续添加数据页面变化时,不等effect执行完成就执行另一个effect数据状态state并未完成渲染,虽然最后页面变了,但内部数据会出现不可名状的错误,如果要用到异步的数据,要等异步返回success。
继续阅读与本文标签相同的文章
上一篇 :
中国移动原董事长王建宙:5G现在只能测网速
-
【Java类初始化死锁】记一次Cassandra死锁问题排查
2026-05-18栏目: 教程
-
搭建自己的技术博客系列(一)使用 hexo 搭建一个精美的静态博客
2026-05-18栏目: 教程
-
搭建自己的技术博客系列(二)把 Hexo 博客部署到 GitHub 上
2026-05-18栏目: 教程
-
CMU 15-721 14-数据库调度 Scheduling
2026-05-18栏目: 教程
-
从校招生到核心架构师,支付宝研究员李俊奎谈如何成为一名优秀的程序员
2026-05-18栏目: 教程
