Bladeren bron

Merge remote-tracking branch 'origin/master'

wangweiyu 4 jaren geleden
bovenliggende
commit
c00d64ccd6

+ 17 - 5
src/main/java/com/aoyang/tms/controller/WorkerController.java

@@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSON;
 import com.aoyang.common.param.PageParam;
 import com.aoyang.common.result.Result;
 import com.aoyang.tms.common.ErrCodeEnum;
+import com.aoyang.tms.controller.vo.LocationVO;
 import com.aoyang.tms.controller.vo.WorkOrderVO;
 import com.aoyang.tms.controller.vo.WorkerInfo;
 import com.aoyang.tms.entity.*;
 import com.aoyang.tms.service.*;
+import com.aoyang.tms.util.DateUtils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -73,15 +75,24 @@ public class WorkerController {
 
     @ApiOperation(value = "运单详情", notes = "必传参数:订单id")
     @PostMapping("/find_order_info")
-    public Result<WorkOrder> findOrderInfo(@RequestHeader(value = "orgId") Long orgId,
-                                           @RequestHeader(value = "userId") Long userId, @RequestBody WorkOrder workOrder) {
+    public Result<WorkOrderVO> findOrderInfo(@RequestHeader(value = "orgId") Long orgId,
+                                             @RequestHeader(value = "userId") Long userId, @RequestBody WorkOrder workOrder) {
         log.info("运单详情,/tms/worker/find_order_info,参数:{}", JSON.toJSONString(workOrder));
         if (workOrder == null || workOrder.getId() == null) {
             return new Result(ErrCodeEnum.BAD_PARAM.getCode(), ErrCodeEnum.BAD_PARAM.getMessage());
         }
+        WorkOrderVO vo = new WorkOrderVO();
         WorkOrder workerInfo1 = workOrderService.getById(workOrder.getId());
+        if (workerInfo1 != null) {
+            //取ExecuteTime第一条GPS上报时间
+            LocationVO locationVO = commonService.getLocationByDate(workerInfo1.getTruckId(), workerInfo1.getExecuteTime());
+            if (locationVO != null) {
+                vo.setTime(DateUtils.betweenTime(locationVO.getDate(), LocalDateTime.now()));
+            }
+        }
+        BeanUtils.copyProperties(workerInfo1, vo);
 
-        return new Result<>(workerInfo1);
+        return new Result<>(vo);
     }
 
     @ApiOperation(value = "每个作业上报单独小按钮使用", notes = "")
@@ -289,6 +300,7 @@ public class WorkerController {
         } catch (UnsupportedEncodingException ignored) {
         }
         //TODO 1.车辆进入出车前检车状态,2.订单进入前往装车点状态,3.并记行车日志,4.创建行程周期
+        workOrder.setExecuteTime(LocalDateTime.now());
         Boolean flag = workerService.startOrder(userId, utf8Name, workOrder);
         return new Result<>(flag);
     }
@@ -373,7 +385,7 @@ public class WorkerController {
             utf8Name = URLDecoder.decode(userName, "UTF-8");
         } catch (UnsupportedEncodingException ignored) {
         }
-        //TODO 1.车辆进入收车后检查状态,2.订单完成状态,3.并记行车日志
+        //TODO 1.车辆进入收车后检查状态,2.并记行车日志
         Boolean flag = workerService.arriveTerminal(userId, utf8Name, workOrder);
         return new Result<>(flag);
     }
@@ -390,7 +402,7 @@ public class WorkerController {
             utf8Name = URLDecoder.decode(userName, "UTF-8");
         } catch (UnsupportedEncodingException ignored) {
         }
-        //TODO 1.车辆进入已经收车状态,2.订单完成状态,3.并记行车日志,4.结束当前行程周期(从收车中到出车检查也结束当前行程周期)
+        //TODO 1.车辆进入已经收车状态,3.并记行车日志,4.结束当前行程周期(从收车中到出车检查也结束当前行程周期)
         Boolean flag = workerService.finishWork(userId, utf8Name, workOrder);
         return new Result<>(flag);
     }

+ 5 - 5
src/main/java/com/aoyang/tms/controller/vo/WorkOrderVO.java

@@ -17,8 +17,8 @@ import java.time.LocalDateTime;
 
 /**
  * <p>
-    * 运单运单表
-    * </p>
+ * 运单运单表
+ * </p>
  *
  * @author guoyong
  * @since 2022-04-20
@@ -26,7 +26,7 @@ import java.time.LocalDateTime;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="WorkOrder对象", description="运单运单表")
+@ApiModel(value = "WorkOrder对象", description = "运单运单表")
 public class WorkOrderVO extends WorkOrder implements Serializable {
 
     @ApiModelProperty(value = "已读未读状态,0未读,1已读")
@@ -35,8 +35,8 @@ public class WorkOrderVO extends WorkOrder implements Serializable {
     @ApiModelProperty(value = "车辆状态,已收车0,出车前检查1,出车作业中2,收车中3,收车后检查4")
     private Integer truckStatus;
 
-    @ApiModelProperty(value = "已用时,单位分钟")
-    private int time;
+    @ApiModelProperty(value = "已用时,如1天1小时16分钟")
+    private String time;
 
     @ApiModelProperty(value = "装卸车点经度")
     @TableField("longitude")

+ 4 - 0
src/main/java/com/aoyang/tms/entity/WorkSpot.java

@@ -60,6 +60,10 @@ public class WorkSpot implements Serializable {
     @TableField("type")
     private Integer type;
 
+    @ApiModelProperty(value = "精确地点经纬度")
+    @TableField("location")
+    private String location;
+
     @ApiModelProperty(value = "作业点经纬度数据集")
     @TableField("region_data")
     private String regionData;

+ 1 - 0
src/main/java/com/aoyang/tms/service/impl/WorkerServiceImpl.java

@@ -174,6 +174,7 @@ public class WorkerServiceImpl implements WorkerService {
 
                 //2.订单完成状态
                 workOrder.setOrderStatus(WorkOrderEnum.COMPLETED.orderStatus());
+                workOrder.setCompleteTime(LocalDateTime.now());
                 workOrderService.updateById(workOrder);
 
                 //3.并记行车日志

+ 201 - 0
src/main/java/com/aoyang/tms/util/DateUtils.java

@@ -0,0 +1,201 @@
+package com.aoyang.tms.util;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * @Description: 日期时间工具类
+ * @Author guoyong
+ * @Date 2022/4/24 10:51
+ * @Version 1.0
+ */
+
+public class DateUtils {
+    /**
+     * 通过Date类获取时间
+     *
+     * @return
+     */
+    public static String getDateByDate() {
+        Date date = new Date();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-HH-dd HH:mm:ss");
+        String dateStr = dateFormat.format(date);
+        System.out.println(dateStr);
+        return dateStr;
+    }
+
+
+    /**
+     * 通过Calendar类获取时间
+     *
+     * @return
+     */
+
+    public static String getDateByCalendar() {
+        Calendar calendar = Calendar.getInstance();
+        Date date = calendar.getTime();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-HH-dd HH:mm:ss");
+        String dateStr = dateFormat.format(date);
+        System.out.println(dateStr);
+        return dateStr;
+    }
+
+
+    /**
+     * 通过字符串获取时间
+     *
+     * @param dateStr
+     * @return
+     */
+
+    public static Date formString(String dateStr) {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-HH-dd HH:mm:ss");
+        try {
+            Date date = dateFormat.parse(dateStr);
+            System.out.println(date);
+            return date;
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    /**
+     * 通过时间戳获取时间
+     *
+     * @param time
+     * @return
+     */
+
+    public static String getByLong(long time) {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-HH-dd HH:mm:ss");
+        String date = dateFormat.format(time);
+        return date;
+
+    }
+
+    /**
+     * 获取系统时间,时间戳
+     *
+     * @return
+     */
+    public static long getCurrentTime() {
+        long time = System.currentTimeMillis();
+        return time;
+
+    }
+
+    /**
+     * 获取当前年月日
+     *
+     * @return
+     */
+    public static void getYearMonthDay() {
+
+//第一种,通过Calendar类获取
+        Calendar now = Calendar.getInstance();
+        System.out.println("年: " + now.get(Calendar.YEAR));
+        System.out.println("月: " + (now.get(Calendar.MONTH) + 1) + "");
+        System.out.println("日: " + now.get(Calendar.DAY_OF_MONTH));
+        System.out.println("时: " + now.get(Calendar.HOUR_OF_DAY));
+        System.out.println("分: " + now.get(Calendar.MINUTE));
+        System.out.println("秒: " + now.get(Calendar.SECOND));
+        System.out.println("当前时间毫秒数:" + now.getTimeInMillis());
+//第二种,通过Date类获取
+        Date date = new Date();
+        DateFormat df1 = DateFormat.getDateInstance();//日期格式,精确到日
+        System.out.println(df1.format(date));
+        DateFormat df2 = DateFormat.getDateTimeInstance();//可以精确到时分秒
+        System.out.println(df2.format(date));
+        DateFormat df3 = DateFormat.getTimeInstance();//只显示出时分秒
+        System.out.println("只显示出时分秒:" + df3.format(date));
+        DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); //显示日期,周,上下午,时间(精确到秒)
+        System.out.println("显示日期,周,上下午,时间(精确到秒):" + df4.format(date));
+        DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); //显示日期,上下午,时间(精确到秒)
+        System.out.println("显示日期,上下午,时间(精确到秒):" + df5.format(date));
+        DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); //显示日期,上下午,时间(精确到分)
+        System.out.println("显示日期,上下午,时间(精确到分):" + df6.format(date));
+        DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); //显示日期,时间(精确到分)
+        System.out.println("显示日期,时间(精确到分):" + df7.format(date));
+        String[] dates = new SimpleDateFormat("yyyy-MM-dd").format(date).split("-");
+        String year = dates[0];
+        String month = dates[1];
+        String day = dates[2];
+        String[] months = new SimpleDateFormat("HH:mm:ss").format(date).split(":");
+        String hour = dates[0];
+        String minute = dates[1];
+        String seconde = dates[2];
+    }
+
+
+    /**
+     * 获取前一段时间/后一段时间
+     */
+    public static void beforTime() {
+//根据现在时间计算
+        Calendar now = Calendar.getInstance();
+        now.add(Calendar.YEAR, 1); //现在时间是1年后
+        System.out.println(now);
+        now.add(Calendar.YEAR, -1); //现在时间是1年前
+        System.out.println(now);
+//根据某个特定的时间 date (Date 型) 计算
+        Calendar specialDate = Calendar.getInstance();
+        specialDate.setTime(new Date()); //注意在此处将 specialDate 的值改为特定日期
+        specialDate.add(Calendar.YEAR, 1); //特定时间的1年后
+        System.out.println(specialDate);
+        specialDate.add(Calendar.YEAR, -1); //特定时间的1年前
+        System.out.println(specialDate);
+
+    }
+
+
+    /**
+     * 计算两个日期相差多少天、小时、分钟、秒
+     */
+
+    public static String betweenTime(LocalDateTime startTime, LocalDateTime endTime) {
+        java.time.Duration duration = java.time.Duration.between(startTime, endTime);
+        //总秒
+        long seconds = duration.toMillis() / 1000;
+        //总分钟
+        long minutes = duration.toMinutes();
+        //总小时
+        long hours = duration.toHours();
+        //总天数
+        long days = duration.toDays();
+
+        System.out.println(days);
+        System.out.println(hours);
+        System.out.println(minutes);
+        System.out.println(seconds);
+        String last = "";
+        if (days > 0) {
+            last = last + days + "天";
+        }
+        if (hours > 0) {
+            last = last + hours % 24 + "小时";
+        }
+        if (minutes > 0) {
+            last = last + minutes % 60 + "分钟";
+        }
+        if (seconds > 0) {
+            last = last + seconds % 60 + "秒";
+        }
+        return last;
+
+    }
+
+    public static void main(String[] args) {
+        LocalDateTime now = LocalDateTime.of(2022, 4, 24, 11, 9, 38);
+        LocalDateTime end = LocalDateTime.of(2022, 4, 25, 14, 12, 32);
+        String last = betweenTime(now, end);
+        System.out.println(last);
+    }
+
+}
+

+ 33 - 16
src/main/resources/mapper/WorkSpotMapper.xml

@@ -4,26 +4,43 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.aoyang.tms.entity.WorkSpot">
-        <id column="spot_id" property="spotId" />
-        <result column="spot_name" property="spotName" />
-        <result column="org_id" property="orgId" />
-        <result column="org_name" property="orgName" />
-        <result column="org_short_name" property="orgShortName" />
-        <result column="adress" property="adress" />
-        <result column="type" property="type" />
-        <result column="region_data" property="regionData" />
-        <result column="note" property="note" />
-        <result column="creater" property="creater" />
-        <result column="creater_name" property="createrName" />
-        <result column="create_date" property="createDate" />
-        <result column="updater" property="updater" />
-        <result column="updater_name" property="updaterName" />
-        <result column="update_date" property="updateDate" />
+        <id column="spot_id" property="spotId"/>
+        <result column="spot_name" property="spotName"/>
+        <result column="org_id" property="orgId"/>
+        <result column="org_name" property="orgName"/>
+        <result column="org_short_name" property="orgShortName"/>
+        <result column="adress" property="adress"/>
+        <result column="type" property="type"/>
+        <result column="location" property="location"/>
+        <result column="region_data" property="regionData"/>
+        <result column="note" property="note"/>
+        <result column="creater" property="creater"/>
+        <result column="creater_name" property="createrName"/>
+        <result column="create_date" property="createDate"/>
+        <result column="updater" property="updater"/>
+        <result column="updater_name" property="updaterName"/>
+        <result column="update_date" property="updateDate"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        spot_id, spot_name, org_id, org_name, org_short_name, adress, type, region_data, note, creater, creater_name, create_date, updater, updater_name, update_date
+        spot_id
+        ,
+        spot_name,
+        org_id,
+        org_name,
+        org_short_name,
+        adress,
+        type,
+        region_data,
+        location,
+        note,
+        creater,
+        creater_name,
+        create_date,
+        updater,
+        updater_name,
+        update_date
     </sql>
 
 </mapper>