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

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

相关文章

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4