#时间处理

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

@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. HBase|idea使用hbase进行简单的DDL增删改查

    老师要测试什么的,所以我想练习一下,顺便记录在博客里,如有错误,敬请指正,谢谢!!! idea连接hbase 首先确保你可以打开Hbase http://192.168.40.100:16010 查看 ...

  2. C++ Qt开发:Qt的安装与配置

    Qt是一种C++编程框架,用于构建图形用户界面(GUI)应用程序和嵌入式系统.Qt由Qt公司(前身为Nokia)开发,提供了一套跨平台的工具和类库,使开发者能够轻松地创建高效.美观.可扩展的应用程序. ...

  3. 【Linux API 揭秘】container_of函数详解

    [Linux API 揭秘]container_of函数详解 Linux Version:6.6 Author:Donge Github:linux-api-insides 1.container_o ...

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

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

  5. 酷表ChatExcel -北大出品免费自动处理表格工具

    酷表ChatExcel是通过文字聊天实现Excel的交互控制的AI辅助工具,期望通过对表输入需求即可得到处理后的数据(想起来很棒),减少额外的操作,辅助相关工作人员(会计,教师等)更简单的工作.Cha ...

  6. ElasticSearch之线程池

    ElasticSearch节点可用的CPU核的数量,通常可以交给ElasticSearch来自行检测和判定,另外可以在``elasticsearch.yml`中显式指定.样例如下: node.proc ...

  7. JAVAAPI实现血缘关系Rest推送到DataHub V0.12.1版本

    DataHub 更青睐于PythonAPI对血缘与元数据操作 虽然开源源码都有Java示例和Python示例:但是这个API示例数量简直是1:100的差距!!不知为何,项目使用Java编写,示例推送偏 ...

  8. Spring MVC的生命周期与简单三大组件的简单介绍

    1.说到Spring MVC就会想到它是基于MVC设计模式的思想来设计的: 那么MVC设计模式是什么呢? 下面来介绍一下 MVC 设计模式 MVC是模型(model)-视图(view)-控制器(con ...

  9. kubernetes之部署war项目(二)

    kubernetes之部署war项目(二) k8s系列 源自我工作上的实际场景,记录于此. 现在老项目是war包形式,需要基于tomcat部署,因此在打包镜像时将tomcat带上的. 假设我的war项 ...

  10. JavaFx之从controller关闭stage(十八)

    JavaFx之从controller关闭stage(十八) 开发时,我们需要从controller的button时间中关闭当前,那么你的按钮事件可以这样: @FXML public Button ca ...