#时间处理

##查询前台报表运单数据集

@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&lt;#{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基础】时间处理的更多相关文章

  1. JAVA基础——时间Date类型转换

    在java中有六大时间类,分别是: 1.java.util包下的Date类, 2.java.sql包下的Date类, 3.java.text包下的DateFormat类,(抽象类) 4.java.te ...

  2. Java基础-时间类

    关于java中六个时间类的使用和区别 java.util.Date java.sql.Date ,java.sql.Time , java.sql.Timestamp java.text.Simple ...

  3. Java基础/时间日期格式

    Java时间日期格式转换 一.Date转String和String转Date 参考博客:https://www.cnblogs.com/sharpest/p/7879377.html public s ...

  4. Java基础篇(04):日期与时间API用法详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.时间和日期 在系统开发中,日期与时间作为重要的业务因素,起到十分关键的作用,例如同一个时间节点下的数据生成,基于时间范围的各种数据统计和分 ...

  5. Java基础 与时间日期相关的类:System -Date -SimpleDateFormat -Calendar类 -解决后缀.000Z 的时区问题

    笔记总结: /**与时间相关的类:System_Date_SimpleDateFormat_Calendar类 * 1.system 类下的currentTimeMillis() * 输出从1970年 ...

  6. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  7. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  8. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  9. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  10. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. BIRCH算法全解析:从原理到实战

    本文全面解析了BIRCH(平衡迭代削减聚类层次)算法,一种用于大规模数据聚类的高效工具.文章从基础概念到技术细节,再到实战应用与最佳实践,提供了一系列具体的指导和例子.无论你是数据科学新手,还是有经验 ...

  2. 【uniapp】【外包杯】学习笔记day08 | 初具雏形+后期任务

    总的来说就是BBQ了,基本上前后端都有了阶段性成果,但是问题在于是否符合我们题目的要求,所以也需要进行很详细的改动,其次就是小程序的支付功能以及登录功能1还有具体配置还是不太行. 然后下载的sprin ...

  3. java-图片添加水印

    前言:    需求:需要在图片中添加水印,防止盗用   优缺点:     优点:保护版权,防止盗用     缺点 可能会影响图片的视觉效果:如果水印过大或过醒目,可能会影响图片的视觉效果. 可能会增加 ...

  4. [USACO2022OPEN S] COW Operations S

    题目描述 Bessie 找到了一个长度不超过 \(2 \cdot 10^5\) 且仅包含字符 'C','O' 和 'W' 的字符串 \(s\).她想知道是否可以使用以下操作将该字符串变为单个字母 'C ...

  5. 如何为项目配置opencv

    如何为项目配置opencv 13/100 发布文章 public669 未选择任何文件 new 配置: 包含目录: D:\OpenCV\opencv\build\include D:\OpenCV\o ...

  6. The fourth day learning summary

    一.for 循环循环就是重复做某件事,for循环是python提供第二种循环机制(第一种是while循环),理论上for循环能做的事情,while循环都可以做.目的:之所以要有for循环,是因为for ...

  7. Scrapy框架架构

    ENGINE:引擎,负责各个组件的管理. SPIDERS:各个爬虫文件类.(我们一般要写的代码就是这个). SCHEDULER:调度器,ENGINE将爬虫任务分发给该组件,由该组件调度爬虫任务. DO ...

  8. 华企盾DSC在苹果电脑上申请审批没有通知

    由于系统通知这里没有允许DSC通知,开启后即可.系统偏好设置-通知与专注模式-通知 ​

  9. Vue学习笔记-快速入门

    整体代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  10. JavaFx之ScrollPane滚动板面、CheckBox复选框(二十四)

    JavaFx之ScrollPane滚动板面.CheckBox复选框(二十四) 多个复选框时可能会超出屏幕,需要使用滚动版面. 布局方式:ScrollPane包括VBox.VBox 包括多个 Check ...