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

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

相关文章

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll