【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 程 ...
随机推荐
- Qt中QTabWidget添加控件(按钮,label等)以及使用方法
今天遇到了一个问题,已经在QTabWidget每一行添加了一个按钮,我有一个需求就是,点击每一行的按钮都有各自的响应 首先说一下添加控件代码: 添加文字可以用setItem,添加控件就得用setCel ...
- Promise规范与原理解析
摘要 Promise对象用于清晰的处理异步任务的完成,返回最终的结果值,本次分享主要介绍Promise的基本属性以及Promise内部的基础实现,能够帮我们更明确使用场景.更快速定位问题. Promi ...
- 33. 干货系列从零用Rust编写正反向代理,关于HTTP客户端代理的源码实现
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...
- C# 从代码入门 Mysql 数据库事务
目录 生成数据库数据 Mysql 数据库事务基础 数据库的并发一致性问题 数据库事务的隔离级别 BeginTransaction() 和 TransactionScope 的区别 BeginTrans ...
- Oracle密码文件、警告日志文件、跟踪文件
密码文件 oracle用于验证sysdba权限的二进制文件. 警告日志文件 警告日志文件是用来记录oracle数据库系统在运行期间的各种信息: oracle实例打开和关闭.建立表空间.增加数据文件等记 ...
- 数字孪生融合GIS系统将为交通领域带来什么改变?
随着科技的不断发展,数字孪生和GIS技术正成为交通领域的新宠.数字孪生是指通过数学建模.数据采集和实时仿真等技术手段,将实体世界与数字世界相互关联,形成一个全新的虚拟系统.而GIS(地理信息系统)则是 ...
- GPT Zero 是什么?
from https://openaigptguide.com/gptzero/ 在人工智能技术飞速发展的今天,人们对于文字内容的准确性和可信度要求越来越高.例如在学术研究领域,防止抄袭和造假是非常重 ...
- 信创选国产,Solon v2.6.3 发布
Solon 是什么框架? Java 新的"生态级"应用开发框架.从零开始构建,有自己的标准规范与开放生态(历时六年,具备全球第二级别的生态规模). 相对于 Spring,有什么特点 ...
- DDD落地实践-架构师眼中的餐厅 | 京东云技术团队
本文以餐厅场景为叙事主线,以领域驱动为核心思想,结合架构设计与功能设计方法论.是从领域分析到落地的全过程案例,内容偏重于落地,因此不乏一些探讨,欢迎指正. 文章较长.全程干货.耐心读完.必有收获. 本 ...
- R6900 R7000刷梅林 AImesh组网
本文作者: Colin本文链接: https://www.colinjiang.com/archives/netgear-r6900-flash-merlin-rom.html 然后开始讲正题,刷梅林 ...