【JAVA基础】时间处理
#时间处理
##查询前台报表运单数据集
@ApiOperation(value = "查询前台报表运单数据集")
@Permission(permissionPublic = true)
@ProcessLovValue(targetField = BaseConstants.FIELD_BODY)
@GetMapping("/searchIfpShipment")
public ResponseEntity<Map<String, Object>> searchIfpShipment(
@RequestParam(required = false) Date beginTime, @RequestParam(required = false) Date endTime, @PathVariable Long organizationId) throws ParseException {
Map<String,Object> map = this.ifpFrontDeskService.searchIfpShipmentMap(beginTime, endTime, organizationId);
return Results.success(map);
}
/**
* 查找前台折线图展示运单数据返回map
* @param beginTime
* @param endTime
* @param organizationId
* @return
*/
Map<String, Object> searchIfpShipmentMap(Date beginTime, Date endTime, Long organizationId) throws ParseException;
</details>
public Map<String, Object> searchIfpShipmentMap(Date beginTime, Date endTime, Long organizationId) throws ParseException {
Map<String, Object> map = new HashMap<String, Object>();
// 查询已接单TO_LOAD状态的运单数据
List<IfpFrontDeskShipmentDTO> toLoadShipmentList = searchIfpShipment(beginTime, endTime, "TO_LOAD", organizationId);
map.put("TO_LOAD", toLoadShipmentList);
// 查询已装货TO_UNLOAD状态的运单数据
List<IfpFrontDeskShipmentDTO> toUnloadShipmentList = searchIfpShipment(beginTime, endTime, "TO_UNLOAD", organizationId);
map.put("TO_UNLOAD", toUnloadShipmentList);
// 查询已卸货TO_SIGN状态的运单数据
List<IfpFrontDeskShipmentDTO> toSignShipmentList = searchIfpShipment(beginTime, endTime, "TO_SIGN", organizationId);
map.put("TO_SIGN", toSignShipmentList);
// 查询已签收SIGN状态的运单数据
List<IfpFrontDeskShipmentDTO> signShipmentList = searchIfpShipment(beginTime, endTime, "SIGN", organizationId);
map.put("SIGN", signShipmentList);
// 查询已对账状态COMPLETED的运单数据
List<IfpFrontDeskShipmentDTO> completedShipmentList = searchIfpShipment(beginTime, endTime, "COMPLETED", organizationId);
map.put("COMPLETED", completedShipmentList);
// 查询已支付状态PAID的运单数据
List<IfpFrontDeskShipmentDTO> paidShipmentList = searchIfpShipment(beginTime, endTime, "PAID", organizationId);
map.put("PAID", paidShipmentList);
return map;
}
@Override
public List<IfpFrontDeskShipmentDTO> searchIfpShipment(Date beginTime, Date endTime, String status, Long organizationId) throws ParseException {
// 计算时间差
int day = differentDays(beginTime, endTime);
List<IfpFrontDeskShipmentDTO> ifpFrontDeskShipmentDTOList = new ArrayList<>();
Date tempTime = beginTime;
for (int i = 0; i <= day; i++) {
IfpFrontDeskShipmentDTO ifpFrontDeskShipmentDTO = new IfpFrontDeskShipmentDTO();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String s = sdf.format(tempTime);
Date beginDate = sdf.parse(s);
Date endDate = dateAddOne(beginDate);
ifpFrontDeskShipmentDTO.setTime(tempTime);
if (status.equals("TO_LOAD") || status.equals("TO_UNLOAD") || status.equals("TO_SIGN") || status.equals("SIGN")) {
List<IfpShipment> shipmentList = ifpShipmentPushMapper.selectShipment(status, beginDate, endDate, organizationId);
int quantity = shipmentList.size();
ifpFrontDeskShipmentDTO.setShipmentQuantity((long) quantity);
ifpFrontDeskShipmentDTOList.add(ifpFrontDeskShipmentDTO);
} else if (status.equals("COMPLETED")) {
List<IfpShipment> shipmentAccountList = ifpShipmentPushMapper.selectAccountList(status, beginDate, endDate, organizationId);
int quantity = shipmentAccountList.size();
ifpFrontDeskShipmentDTO.setShipmentQuantity((long) quantity);
ifpFrontDeskShipmentDTOList.add(ifpFrontDeskShipmentDTO);
} else if (status.equals("PAID")) {
List<IfpShipment> shipmentAccountList = ifpShipmentPushMapper.selectPaidList(status, beginDate, endDate, organizationId);
int quantity = shipmentAccountList.size();
ifpFrontDeskShipmentDTO.setShipmentQuantity((long) quantity);
ifpFrontDeskShipmentDTOList.add(ifpFrontDeskShipmentDTO);
}
tempTime = dateAddOne(tempTime);
}
return ifpFrontDeskShipmentDTOList;
}
/**
* date2比date1多的天数
*
* @param date1
* @param date2
* @return
*/
private static int differentDays(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
int day1 = cal1.get(Calendar.DAY_OF_YEAR);
int day2 = cal2.get(Calendar.DAY_OF_YEAR);
int year1 = cal1.get(Calendar.YEAR);
int year2 = cal2.get(Calendar.YEAR);
//同一年
if (year1 != year2) {
int timeDistance = 0;
for (int i = year1; i < year2; i++) {
//闰年
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
timeDistance += 366;
} else //不是闰年
{
timeDistance += 365;
}
}
return timeDistance + (day2 - day1);
} else {// 不同年
System.out.println("判断day2 - day1 : " + (day2 - day1));
return day2 - day1;
}
}
/*日期加+1天*/
public static Date dateAddOne(Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
//把日期往后增加一天,整数 往后推,负数往前移动
calendar.add(Calendar.DATE, 1);
//这个时间就是日期往后推一天的结果
date = calendar.getTime();
return date;
}
/**
* 筛选满足运单状态条件的运单数量
* @param status
* @param beginDate
* @param endDate
* @param tenantId
* @return
*/
List<IfpShipment> selectShipment(String status, Date beginDate,Date endDate, Long tenantId);
<select id="selectShipment" resultType="com.hand.htms.ifp.entity.IfpShipment">
SELECT
*
FROM
ifp_shipment t1
WHERE (t1.creation_date > #{beginDate} and t1.creation_date<#{endDate})
<if test="status != null and status != ''">
and t1.shipment_status =#{status}
</if>
<if test="tenantId !=null and tenantId != 1">
and t1.tenant_id = #{tenantId}
</if>
</select>
##相关资料
###获取当前日期和时间
https://blog.csdn.net/topdeveloperr/article/details/91571311?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-91571311-blog-122052434.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-91571311-blog-122052434.pc_relevant_paycolumn_v3&utm_relevant_index=6
###Date与String的相互转换
https://blog.csdn.net/Albert201605/article/details/120463528?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5-120463528-blog-121798357.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5-120463528-blog-121798357.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=6
###两个日期之间相差的天数
https://blog.csdn.net/nandao158/article/details/121905050
###String、Date、LocalDate之间的互相转换
https://blog.csdn.net/weixin_43526092/article/details/103531391
###MySQL查询某一天的数据
https://blog.csdn.net/hl449006540/article/details/119451301?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-119451301-blog-80744153.pc_relevant_multi_platform_featuressortv2dupreplace&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-119451301-blog-80744153.pc_relevant_multi_platform_featuressortv2dupreplace&utm_relevant_index=1
###MyBatis中,大于号、小于号的两种表达方式
https://hanquan.blog.csdn.net/article/details/104045397?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-104045397-blog-74853617.pc_relevant_multi_platform_whitelistv1_exp2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-104045397-blog-74853617.pc_relevant_multi_platform_whitelistv1_exp2&utm_relevant_index=1
【JAVA基础】时间处理的更多相关文章
- JAVA基础——时间Date类型转换
在java中有六大时间类,分别是: 1.java.util包下的Date类, 2.java.sql包下的Date类, 3.java.text包下的DateFormat类,(抽象类) 4.java.te ...
- Java基础-时间类
关于java中六个时间类的使用和区别 java.util.Date java.sql.Date ,java.sql.Time , java.sql.Timestamp java.text.Simple ...
- Java基础/时间日期格式
Java时间日期格式转换 一.Date转String和String转Date 参考博客:https://www.cnblogs.com/sharpest/p/7879377.html public s ...
- Java基础篇(04):日期与时间API用法详解
本文源码:GitHub·点这里 || GitEE·点这里 一.时间和日期 在系统开发中,日期与时间作为重要的业务因素,起到十分关键的作用,例如同一个时间节点下的数据生成,基于时间范围的各种数据统计和分 ...
- Java基础 与时间日期相关的类:System -Date -SimpleDateFormat -Calendar类 -解决后缀.000Z 的时区问题
笔记总结: /**与时间相关的类:System_Date_SimpleDateFormat_Calendar类 * 1.system 类下的currentTimeMillis() * 输出从1970年 ...
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- java基础练习 字符串,控制流,日历,日期等
1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- Java基础知识【上】(转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
随机推荐
- 0x06.HelloPHP
PHP基础 格式 最后一句可以不加分号 <?php echo "hello" ?> 可以不加结束标签,但是最后一句要加分号 <?php echo "he ...
- 在CPF里使用OpenGL做跨平台桌面应用开发
CPF 是开源的C#跨平台UI框架,支持使用OpenGL来渲染,可以用来硬件加速播放视频或者显示3D模型 实现原理其实就是Skia用OpenGL后端,Skia里绑定GLView的OpenGL纹理,将纹 ...
- [AGC030D] Inversion Sum
Problem Statement You are given an integer sequence of length $N$: $A_1,A_2,...,A_N$. Let us perform ...
- [洛谷P3959][NOIP2017提高组] 宝藏
[NOIP2017 提高组] 宝藏 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 \(n\) 个深埋在地下的宝藏屋, 也给出了这 \(n\) 个宝藏屋之间可供开发的 \(m\) 条道路 ...
- liunx系统登录有趣界面图案
# vim /etc/motd .::::. .::::::::. ::::::::::: ..:::::::::::' '::::::::::::' .:::::::::: '::::::::::: ...
- WPF 入门基础
关于 WPF 和 XAML 什么是 WPF WPF(Windows Presentation Foundation)是由微软开发的桌面应用程序框架,用于创建现代化.高度交互和具有视觉吸引力的用户界面. ...
- CH395+EMQX实现MQTT应用(Windows系统)
目录: 1.MQTT协议 1.1简介 1.2特性 1.3实现方式 1.4数据包结构 2.EMQX具体操作步骤 3.代码说明 4.工程链接 MQTT协议 1.MQTT简介 MQTT是一种基于 发布/订阅 ...
- 江西财经大学第一届程序设计竞赛 G题小Q的口袋校园
题目链接:https://www.nowcoder.com/acm/contest/115/G 解题思路:题解就一份代码,贪心的思想.先按开始时间进行排序. 然后不断贪心获得happy[ j ]的最大 ...
- STM32CubeMX教程8 TIM 通用定时器 - 输出比较
1.准备材料 开发板(STM32F407G-DISC1) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) 逻 ...
- Golang实现JAVA虚拟机-解析class文件
原文链接:https://gaoyubo.cn/blogs/de1bedad.html 前言 所需前置知识为:JAVA语言.JVM知识.Go笔记 对应项目:jvmgo 一.准备环境 操作系统:Wind ...