江陵项目客流统计 时间的计算

2023-10-09 13:40

本文主要是介绍江陵项目客流统计 时间的计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 1 @Override
 2     public Map<String,List<Map.Entry<String,RmpPassengerDto>>> getPassengerByDateAndPlace(RmpPassengerReportConditionDto conditionDto) {
 3         LogUtils.logInfo("进入客流报表服务层!");
 4         String regionId = conditionDto.getRegion_id();
 5         LogUtils.logInfo("区域ID"+regionId);
 6         Integer regionType = conditionDto.getRegion_type();
 7         LogUtils.logInfo("区域类型"+regionType);
 8         String startDate = conditionDto.getStartDate();
 9         LogUtils.logInfo("开始时间"+startDate);
10         String endDate = conditionDto.getEndDate();
11         LogUtils.logInfo("结束时间"+endDate);
12         String dateType = conditionDto.getDateType();
13         //江铃门店类型
14         Integer storeType = conditionDto.getStoreType();
15         //获得图表显示的日期
16         List<String> timeXList;
17 
18 
19         //对日期进行处理 年 20XX-01-01 00:00:00~20XX-12-31 23:59:59
20         //月 20XX-XX-01
21         LogUtils.logInfo("开始处理时间信息。");
22         Map<String,Date> startAndTime = vssCarRecordService.valiteDate(startDate,endDate,dateType);
23         LogUtils.logInfo("时间信息处理完成。");
24         Date startTime = startAndTime.get("startTime");
25         Date endTime = startAndTime.get("endTime");
26         LogUtils.logInfo("开始时间:"+startTime);
27         LogUtils.logInfo("结束时间:"+endTime);
28         Collection<Date> dateList = getDateList(startTime,endTime,dateType);
29          timeXList = convertDateToStringSimple(dateList, true,dateType);
30 
31        Map<String,RmpPassengerDto> resultMap = new TreeMap<>(new Comparator<String>() {
32            @Override
33            public int compare(String o1, String o2) {
34                return o1.compareTo(o2);
35            }
36        });
37         for (String timeX: timeXList
38              ) {
39             resultMap.put(timeX,null);
40         }
41 
42          Timestamp startTimes = new Timestamp(startTime.getTime());
43         Timestamp endTimes = new Timestamp(endTime.getTime());
44 
45         List<Integer> regionIds = new ArrayList<>();
46         if(regionId!=null && regionType != null) {
47             //通过region中path查询出所有的子门店
48             LogUtils.logInfo("查询区域信息。");
49             regionIds = rmpPassengerUtilDao.getRegionIDsByParentNodes(regionId,-1);
50         }
51         Map<String,List<Map.Entry<String,RmpPassengerDto>>> brandDateMap = rmpPassengerDao.queryDataByDateAndPlaceDevideBrand(startTimes, endTimes, dateType, regionIds,resultMap,storeType);
52         return brandDateMap;
53     }
 /*** 给定日期类型(年月周天)和日期计算出开始和结束的时间** @param startDate* @param endDate* @param dateType* @return*/public Map<String, Date> valiteDate(String startDate, String endDate, String dateType) {Calendar c = Calendar.getInstance();SimpleDateFormat sdf;Date startTime = new Date();Date endTime = new Date();int year;int month;switch (dateType) {case RmpReportConstant.LEVEL_YEAR:sdf = new SimpleDateFormat("yyyy");try {startTime = sdf.parse(startDate);c.setTime(startTime);year = c.get(Calendar.YEAR);c.set(year, 0, 01, 00, 00, 00);startTime = c.getTime();c.set(year, 11, 31, 23, 59, 59);endTime = c.getTime();} catch (ParseException e) {e.printStackTrace();}break;case RmpReportConstant.LEVEL_MONTH:sdf = new SimpleDateFormat("yyyy-MM");try {startTime = sdf.parse(startDate);c.setTime(startTime);year = c.get(Calendar.YEAR);month = c.get(Calendar.MONTH);int dayMonthEnd = c.getActualMaximum(Calendar.DAY_OF_MONTH);c.set(year, month, 01, 00, 00, 00);startTime = c.getTime();c.set(year, month, dayMonthEnd, 23, 59, 59);endTime = c.getTime();} catch (ParseException e) {e.printStackTrace();}break;case RmpReportConstant.LEVEL_WEEK:String startDates = RmpDateTimeUtil.getFirstDayOfWeek(startDate);String endDates = RmpDateTimeUtil.getLastDayOfWeek(startDate);sdf = new SimpleDateFormat("yyyy-MM-dd");try {startTime = sdf.parse(startDates);endTime = sdf.parse(endDates);} catch (ParseException e) {e.printStackTrace();}break;case RmpReportConstant.LEVEL_DAY:sdf = new SimpleDateFormat("yyyy-MM-dd");try {Date dayDate = sdf.parse(startDate);c.setTime(dayDate);c.set(Calendar.HOUR, 0);c.set(Calendar.MINUTE, 0);c.set(Calendar.SECOND, 0);c.set(Calendar.MILLISECOND, 0);startTime = c.getTime();c.set(Calendar.HOUR, 23);c.set(Calendar.MINUTE, 59);c.set(Calendar.SECOND, 59);c.set(Calendar.MILLISECOND, 999);endTime = c.getTime();} catch (ParseException e) {e.printStackTrace();}break;case RmpReportConstant.LEVEL_CUSTOM:sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {startTime = sdf.parse(startDate + " 00:00:00");endTime = sdf.parse(endDate + " 23:59:59");} catch (ParseException e) {e.printStackTrace();}break;default:break;}Map<String, Date> resultMap = new TreeMap<>();resultMap.put("startTime", startTime);resultMap.put("endTime", endTime);return resultMap;}
/*** 获取当前时间所属周的第一天* @author yuchuanjun 2016年12月14日 下午7:41:17* @param date* @return*/public static String getFirstDayOfWeek(String date) {try{SimpleDateFormat format = new SimpleDateFormat(DATA_FORMAT_yyyy_MM_dd);Calendar cal = Calendar.getInstance();cal.setTime(format.parse(date));int day = cal.get(Calendar.DAY_OF_WEEK);// 当周第一天是星期天 Calendar周日是每周的第一天if (day == 1) {day = 7;} else {day--;}// 周一cal.add(Calendar.DAY_OF_MONTH, -(day - 1));return format.format(cal.getTime());}catch(Exception e){e.printStackTrace();}return null;}/*** 获取当前时间所属周的最后一天* @author yuchuanjun 2016年12月14日 下午7:45:34* @param date* @return*/public static String getLastDayOfWeek(String date) {try{SimpleDateFormat format = new SimpleDateFormat(DATA_FORMAT_yyyy_MM_dd);Calendar cal = Calendar.getInstance();cal.setTime(format.parse(date));int day = cal.get(Calendar.DAY_OF_WEEK);// 当周第一天是星期天 Calendar周日是每周的第一天if (day == 1) {day = 7;} else {day--;}// 周日cal.add(Calendar.DAY_OF_MONTH, 7 - day);return format.format(cal.getTime());}catch(Exception e){e.printStackTrace();}return null;}
View Code
 protected Collection<Date> getDateList( Date startDate,Date endDate,String dateType) {Collection<Date> dateSet = new ArrayList<Date>();if(endDate!=null){Calendar calendar = Calendar.getInstance();while(startDate.compareTo(endDate) <= 0) {calendar.setTime(startDate);dateSet.add(startDate);if("day".equals(dateType)){addCalendarDay(calendar);}else if("year".equals(dateType)){addCalendarYear(calendar);}else {addCalendar(calendar);}startDate = calendar.getTime();}}else{dateSet.add(startDate);}return dateSet;}
    protected List<String> convertDateToStringSimple(Collection<Date> dateList, boolean isConvertToday,String dateType) {List<String> dateStrList = new ArrayList<String>();if(!RmpUtils.isEmpty(dateList)){for(Date date : dateList){if("day".equals(dateType)){dateStrList.add(convertDateToStringSimpleDay(date, isConvertToday));}else if("year".equals(dateType)){dateStrList.add(convertDateToStringSimpleYear(date, isConvertToday));}else{dateStrList.add(convertDateToStringSimple(date, isConvertToday));}}}return dateStrList;}protected String convertDateToStringSimple(Date date, boolean isConvertToday) {return RmpDateTimeUtil.dateToString(date, RmpDateTimeUtil.DATA_FORMAT_yyyy_MM_dd);}protected String convertDateToStringSimpleDay(Date date, boolean isConvertToday) {return RmpDateTimeUtil.dateToString(date, RmpDateTimeUtil.DATE_FORMAT_HH);}protected String convertDateToStringSimpleYear(Date date, boolean isConvertToday) {return RmpDateTimeUtil.dateToString(date, RmpDateTimeUtil.DATE_FORMAT_yyyy_MM);}
SELECTstore.brand_name,z. DATE,SUM (z.in_count) passenger_in_count,SUM (z.out_count) passenger_out_count
FROM(SELECTx.region_id,x. DATE,SUM (x. IN) AS in_count,SUM (x. OUT) AS out_countFROM(SELECTto_char(v. TIME, 'yyyy-MM') DATE,v.region_id,SUM (v.passenger_in_count) AS IN,SUM (v.passenger_out_count) AS OUTFROMvss_passenger_hour_view vLEFT JOIN s_region s ON v.region_id = s.region_idWHEREs.region_level = 0AND v.datetime BETWEEN ?AND ?AND v.region_id IN (6, 7, 4)GROUP BYv. TIME,v.region_id) xGROUP BYx.region_id,DATE) z
LEFT JOIN (SELECTrs.unit_id,rb.brand_nameFROMrmp_brand rbRIGHT JOIN rmp_store rs ON rb. ID = rs.brand_id
) store ON z.region_id = store.unit_id
GROUP BYstore.brand_name,z. DATE

 

switch (timeType) {
case RmpReportConstant.LEVEL_YEAR:
queryDateType = "yyyy-MM";
break;
case RmpReportConstant.LEVEL_MONTH:
queryDateType = "yyyy-MM-dd";
break;
case RmpReportConstant.LEVEL_WEEK:
queryDateType = "yyyy-MM-dd";
break;
case RmpReportConstant.LEVEL_CUSTOM:
queryDateType = "yyyy-MM-dd";
break;
case RmpReportConstant.LEVEL_DAY:
queryDateType = "hh24";
break;
default:
break;
}

转载于:https://www.cnblogs.com/xjatj/p/9637304.html

这篇关于江陵项目客流统计 时间的计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/173238

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分

java时区时间转为UTC的代码示例和详细解释

《java时区时间转为UTC的代码示例和详细解释》作为一名经验丰富的开发者,我经常被问到如何将Java中的时间转换为UTC时间,:本文主要介绍java时区时间转为UTC的代码示例和详细解释,文中通... 目录前言步骤一:导入必要的Java包步骤二:获取指定时区的时间步骤三:将指定时区的时间转换为UTC时间步

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建