java项目中柱状图和线型图不存在数据的日期显示和数据补0的问题解决思路

news/2024/11/26 4:50:47/

1.由于传入的查询年月可能是不固定的所以首先需要将开始和结束日期中间的所有的日期利用代码获取。

 public static List<String> getMonthBetweenDate(String startTime, String endTime) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");// 声明保存日期集合List<String> list = new ArrayList<>();try {// 转化成日期类型Date startDate = sdf.parse(startTime);Date endDate = sdf.parse(endTime);//用Calendar 进行日期比较判断Calendar calendar = Calendar.getInstance();while (startDate.getTime() <= endDate.getTime()) {// 把日期添加到集合list.add(sdf.format(startDate));// 设置日期calendar.setTime(startDate);//把月数增加 1calendar.add(Calendar.MONTH, 1);// 获取增加后的日期startDate = calendar.getTime();}} catch (Exception e) {e.printStackTrace();}return list;}

根据开始结束时间年月日获取中间的每一天的日期

/*** 获取两个日期字符串之间的日期集合* @param startTime:String* @param endTime:String* @return list:yyyy-MM-dd*/public static List<String> getBetweenDate(String startTime, String endTime){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 声明保存日期集合List<String> list = new ArrayList<String>();try {// 转化成日期类型Date startDate = sdf.parse(startTime);Date endDate = sdf.parse(endTime);//用Calendar 进行日期比较判断Calendar calendar = Calendar.getInstance();while (startDate.getTime()<=endDate.getTime()){// 把日期添加到集合list.add(sdf.format(startDate));// 设置日期calendar.setTime(startDate);//把日期增加一天calendar.add(Calendar.DATE, 1);// 获取增加后的日期startDate=calendar.getTime();}} catch (ParseException e) {e.printStackTrace();}return list;}

现根据查询添加查询出数据库中已经存在的数据集合,然后根据日期进行循环,判断是否存在月份,如果存在则不需要处理,如果不存在则需要将日期和补0的数据插入到集合中,最后根据月份将列表进行排序即可。

//调用工具栏获取日期列表
List<String> monthBetweenDate = TimeUtil.getMonthBetweenDate(startTime, endTime);
//查询数据列表
List<Map<String, Object>> count = Amapper.getCountInputHospital(startTime, endTime);
//循环日期列表进行判断for(String month:monthBetweenDate){//根据日期判断查询的数据列表中是否存在boolean countInput = count.stream().filter(m -> m.get("month").equals(month)).findAny().isPresent();//判断如果不存在则进行补齐操作if(!countInput){Map<String, Object> input=new HashMap<>();input.put("count",0);input.put("month",month);count .add(input);}}//根据时间字段进行排序处理count= count.stream().sorted(new Comparator<Map<String, Object>>() {@Overridepublic int compare(Map<String, Object> o1, Map<String, Object> o2) {return o1.get("month").toString().compareTo(o2.get("month").toString());}}).collect(Collectors.toList());

http://www.ppmy.cn/news/772958.html

相关文章

GHOST 博客安装中文全攻略

http://www.bokeyy.com/post/ghost-install-in-vps-solution-in-china.html

为什么装一键GHOST恢复,开机没有启动选项?

我的电脑——右键属性——高级——启动和故障恢复——把时间加长到30秒 或者在开机后猛按光标的下键有选项的话就可以出现了 第三种方法 开机后猛按F8 出现中文选单之后选择最后一个 返回操作系统选择菜单 这样开机选单就出现了

HP台式机GHOST及安装版均无法启动windows could not start解决办法

品牌机一直接触比较少&#xff0c;也听说了不少品牌机装系统时遇到的问题。如找不到硬盘&#xff0c;或者设置BIOS后无法保存&#xff0c;GHOST后蓝屏等等。这些问题说起来其实也简单&#xff0c;只要找到了关键的地方设置下即可。比如SATA的operationmode设置为compatible兼容…

go protoc 项目安装要点

1.win10 内嵌入ubantu 记得用bash 命令即可从命令子系统 2.设置好环境变量不然会报错&#xff0c;很难排查 先看go环境变量 GOARCH"amd64" GOBIN"/mnt/e/workspace/golang/bin" GOCACHE"/home/zhoud01/.cache/go-build" GOEXE"" GOHO…

小菜编程成长记

面试受挫——代码无错就是好?小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位。当投递了无数份简历后,终于收到了一个单位的面试通知,小菜欣喜若狂。 到了人家单位,前台小姐给了他一份题目,上面写着,“请用C++…

(转帖)小菜编程成长记(十二 无熟人难办事?——聊设计模式迪米特法则)

次日傍晚&#xff0c;小菜敲开了大鸟家的门。 “回来啦&#xff01;怎么样&#xff1f;第一天上班感受多吧。”大鸟关心的问道。 “感受真是多哦&#xff01;&#xff01;&#xff01;”小菜一脸的不屑一顾 。 “怎么了&#xff1f;受委屈了吗。说说看怎么回事&#xff1f;” …

小菜编程成长记(十一 无熟人难办事?——聊设计模式迪米特法则)

http://kb.cnblogs.com/page/42260/ 作者: 伍迷 &#xff08;续上篇&#xff09;  次日傍晚&#xff0c;小菜敲开了大鸟家的门。 “回来啦&#xff01;怎么样&#xff1f;第一天上班感受多吧。”大鸟关心的问道。 “感受真是多哦&#xff01;&#xff01;&#x…

Win7 安装 -- SHSUCDX can’t install 问题解决

昨天将一台老机器重新安装系统。机器型号ThinkPad T410i。以前都是用光盘安装的&#xff0c;但是光驱在前两年被我拆了。主要是显的太笨重了。那么就采用现在普遍的方式&#xff1a;制作U盘启动盘。网上查了下&#xff0c;采用UltraISO(软碟通)工具制作了一个U盘启动盘。制作过…