Ver Fonte

feat:运力调度相关接口

wangweiyu há 4 anos atrás
pai
commit
487cf7de6e

+ 7 - 16
src/main/java/com/aoyang/tms/controller/WorkOrderManageController.java

@@ -6,6 +6,7 @@ import com.aoyang.common.param.PageParam;
 import com.aoyang.common.result.Result;
 import com.aoyang.tms.common.ErrCodeEnum;
 import com.aoyang.tms.controller.param.Truck;
+import com.aoyang.tms.controller.param.WorkManagePageParam;
 import com.aoyang.tms.controller.vo.TruckOrderManageVO;
 import com.aoyang.tms.controller.vo.TruckOrderStatisticsVO;
 import com.aoyang.tms.entity.WorkOrder;
@@ -32,7 +33,7 @@ import javax.annotation.Resource;
  */
 @RestController
 @Slf4j
-@Api(value = "运营端运力调度相关接口")
+@Api(value = "运营端运力调度接口")
 @RequestMapping("/tms/work_order_manage")
 public class WorkOrderManageController {
 
@@ -41,30 +42,20 @@ public class WorkOrderManageController {
 
     @ApiOperation(value = "获取运力调度列表",notes="")
     @PostMapping("/list")
-    public Result<IPage<TruckOrderManageVO>> list(@RequestBody PageParam<Truck> pageParam) {
+    public Result<IPage<TruckOrderManageVO>> list(@RequestBody PageParam<WorkManagePageParam> pageParam) {
         log.info("获取运力调度列表,调用/tms/work_order_manage/list param:{} ", JSON.toJSONString(pageParam));
-        if (pageParam == null) {
+        if (pageParam == null || pageParam.getParam() == null || pageParam.getParam().getOrgId() == null) {
             return new Result<>(ErrCodeEnum.BAD_PARAM.getCode(), ErrCodeEnum.BAD_PARAM.getMessage());
         }
-        Page<TruckOrderManageVO> page = new Page<>(pageParam.getPage(), pageParam.getSize());
-        IPage<TruckOrderManageVO> records = null;
-        return new Result<>(records);
+        return workOrderService.getTruckOrderManageList(pageParam);
     }
 
     @ApiOperation(value = "运力调度统计汇总信息",notes="")
     @PostMapping("/statistics")
     public Result<TruckOrderStatisticsVO> statistics(@RequestHeader(value = "orgId") Long orgId,
                                                      @RequestHeader(value = "userId") Long userId) {
-        TruckOrderStatisticsVO vo = new TruckOrderStatisticsVO();
-        vo.setLoadCount(100);
-        vo.setLoadGotoSpot(10);
-        vo.setLoadSubmit(20);
-        vo.setLoadWait(30);
-        vo.setUnloadCount(100);
-        vo.setUnloadGotoSpot(10);
-        vo.setUnloadSubmit(20);
-        vo.setUnloadWait(30);
-        return new Result<>(vo);
+        log.info("获取运力调度统计汇总信息,调用/tms/work_order_manage/statistics orgId:{} ", orgId);
+        return new Result<>(workOrderService.getTruckOrderStatistics(orgId));
     }
 
 }

+ 65 - 0
src/main/java/com/aoyang/tms/controller/param/WorkManagePageParam.java

@@ -0,0 +1,65 @@
+package com.aoyang.tms.controller.param;
+
+import com.aoyang.tms.entity.WorkOrder;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 作业实时调度查询参数
+ */
+@Data
+@ApiModel(value="WorkManagePageParam对象", description="作业实时调度查询参数")
+public class WorkManagePageParam {
+
+    @ApiModelProperty(value = "组织id,必传")
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long orgId;
+
+    @ApiModelProperty(value = "运力部门id")
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long deptId;
+
+    @ApiModelProperty(value = "托运方id")
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long shipperId;
+
+    @ApiModelProperty(value = "车牌号")
+    private String carNumber;
+
+
+    @ApiModelProperty(value = "装车占用运力")
+    private Integer loadCount;
+
+    @ApiModelProperty(value = "装车前往装车点")
+    private Integer loadGotoSpot;
+
+    @ApiModelProperty(value = "装车等待")
+    private Integer loadWait;
+
+    @ApiModelProperty(value = "装车成果报备中")
+    private Integer loadSubmit;
+
+    @ApiModelProperty(value = "卸车占用运力")
+    private Integer unloadCount;
+
+    @ApiModelProperty(value = "卸车前往装车点")
+    private Integer unloadGotoSpot;
+
+    @ApiModelProperty(value = "卸车等待")
+    private Integer unloadWait;
+
+    @ApiModelProperty(value = "卸车成果报备中")
+    private Integer unloadSubmit;
+
+    @ApiModelProperty(value = "剩余运力")
+    private Integer surplusCount;
+
+    @ApiModelProperty(value = "未派单")
+    private Integer unAllocated;
+
+    @ApiModelProperty(value = "未执行运单")
+    private Integer unExecuted;
+
+}

+ 3 - 0
src/main/java/com/aoyang/tms/controller/vo/ReadInfo.java

@@ -28,4 +28,7 @@ public class ReadInfo {
     @ApiModelProperty(value = "已读未读标识 0-未读 1-已读")
     private Integer readFlag;
 
+    @ApiModelProperty(value = "未读时间(分钟)")
+    private Integer minutes;
+
 }

+ 6 - 2
src/main/java/com/aoyang/tms/controller/vo/TruckOrderManageVO.java

@@ -55,8 +55,8 @@ public class TruckOrderManageVO implements Serializable {
     /**
      * 执行中运单
      */
-    @ApiModelProperty(value = "id,自增")
-    private Long id;
+    @ApiModelProperty(value = "运单id")
+    private Long orderId;
 
     @ApiModelProperty(value = "行程周期id")
     private Long cycleId;
@@ -78,6 +78,10 @@ public class TruckOrderManageVO implements Serializable {
 
     @ApiModelProperty(value = "修改日期时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createDate;
+
+    @ApiModelProperty(value = "修改日期时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updateDate;
 
     @ApiModelProperty(value = "排队号")

+ 14 - 0
src/main/java/com/aoyang/tms/mapper/TruckMapper.java

@@ -1,7 +1,14 @@
 package com.aoyang.tms.mapper;
 
+import com.aoyang.tms.controller.param.WorkManagePageParam;
+import com.aoyang.tms.controller.vo.TruckOrderManageVO;
 import com.aoyang.tms.entity.Truck;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
 
 /**
  * <p>
@@ -11,6 +18,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author guoyong
  * @since 2022-04-22
  */
+@Component
 public interface TruckMapper extends BaseMapper<Truck> {
 
+    Page<TruckOrderManageVO> listTmsManageTruck(@Param("page") Page page, @Param("param") WorkManagePageParam param);
+
+    Page<Truck> listUnAllocatedTruck(@Param("page") Page page, @Param("orgId") Long orgId);
+
+    int getUnAllocatedTruckCount(@Param("orgId") Long orgId);
+
 }

+ 3 - 2
src/main/java/com/aoyang/tms/service/WorkOrderService.java

@@ -2,13 +2,14 @@ package com.aoyang.tms.service;
 
 import com.aoyang.common.param.PageParam;
 import com.aoyang.common.result.Result;
-import com.aoyang.tms.controller.param.Truck;
+import com.aoyang.tms.controller.param.WorkManagePageParam;
 import com.aoyang.tms.controller.vo.TruckOrderManageVO;
 import com.aoyang.tms.controller.vo.TruckOrderStatisticsVO;
 import com.aoyang.common.param.PageParam;
 import com.aoyang.tms.controller.param.WorkOrderPageParam;
 import com.aoyang.tms.controller.vo.WorkOrderPageListVO;
 import com.aoyang.tms.entity.Shipper;
+import com.aoyang.tms.entity.Truck;
 import com.aoyang.tms.entity.WorkOrder;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -34,7 +35,7 @@ public interface WorkOrderService extends IService<WorkOrder> {
      * 分页查询运力调度统计列表
      * @return
      */
-    Result<IPage<TruckOrderManageVO>> getTruckOrderStatistics(PageParam<Truck> pageParam);
+    Result<IPage<TruckOrderManageVO>> getTruckOrderManageList(PageParam<WorkManagePageParam> pageParam);
 
     /**
      * @return

+ 67 - 58
src/main/java/com/aoyang/tms/service/impl/WorkOrderServiceImpl.java

@@ -4,33 +4,25 @@ import com.aoyang.common.param.PageParam;
 import com.aoyang.common.result.Result;
 import com.aoyang.tms.common.ErrCodeEnum;
 import com.aoyang.tms.common.WorkOrderEnum;
-import com.aoyang.tms.controller.param.Truck;
-import com.aoyang.tms.controller.vo.LocationVO;
-import com.aoyang.tms.controller.vo.TruckOrderManageVO;
-import com.aoyang.tms.controller.vo.TruckOrderStatisticsVO;
-import com.aoyang.common.param.PageParam;
-import com.aoyang.tms.common.WorkOrderEnum;
+import com.aoyang.tms.controller.param.WorkManagePageParam;
+import com.aoyang.tms.controller.vo.*;
 import com.aoyang.tms.controller.param.WorkOrderPageParam;
-import com.aoyang.tms.controller.vo.TruckDeptListVO;
-import com.aoyang.tms.controller.vo.WorkOrderPageListVO;
-import com.aoyang.tms.entity.Shipper;
-import com.aoyang.tms.entity.TruckDept;
-import com.aoyang.tms.entity.WorkOrder;
+import com.aoyang.tms.entity.*;
+import com.aoyang.tms.mapper.TruckMapper;
 import com.aoyang.tms.mapper.WorkOrderMapper;
-import com.aoyang.tms.service.CommonService;
-import com.aoyang.tms.service.WorkOrderService;
+import com.aoyang.tms.service.*;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.*;
 
+import java.time.Duration;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -48,9 +40,19 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
     @Resource
     private CommonService commonService;
     @Resource
+    private TruckDriverService truckDriverService;
+    @Resource
+    private TruckEscortService truckEscortService;
+    @Resource
+    private TruckService truckService;
+    @Resource
+    private TruckMapper truckMapper;
+    @Resource
     private WorkOrderService workOrderService;
     @Resource
     private WorkOrderMapper workOrderMapper;
+    @Resource
+    private WorkOrderReadinfoService workOrderReadinfoService;
 
     @Override
     public TruckOrderStatisticsVO getTruckOrderStatistics(Long orgId) {
@@ -73,7 +75,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         //未执行运单
         vo.setUnExecuted(getOrgOrderCount(orgId, null, WorkOrderEnum.TODO.orderStatus()));
         //未派单
-        vo.setUnAllocated(0);
+        vo.setUnAllocated(truckMapper.getUnAllocatedTruckCount(orgId));
 
         return vo;
     }
@@ -88,54 +90,61 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
     }
 
     @Override
-    public Result<IPage<TruckOrderManageVO>> getTruckOrderStatistics(PageParam<Truck> pageParam) {
-        if (pageParam.getParam() == null) {
+    public Result<IPage<TruckOrderManageVO>> getTruckOrderManageList(PageParam<WorkManagePageParam> pageParam) {
+        if (pageParam.getParam() == null || pageParam.getParam().getOrgId() == null) {
             return new Result<>(ErrCodeEnum.BAD_PARAM.getCode(), ErrCodeEnum.BAD_PARAM.getMessage());
         }
-        // TODO strategy接口
-        Result<IPage<Truck>> trucksResult = null;
-        if (!commonService.verifyResult(trucksResult)) {
-            return new Result<>(trucksResult.getCode(), trucksResult.getMessage());
-        }
-        IPage<Truck> records = trucksResult.getData();
-        List<Truck> trucks = records.getRecords();
-        IPage<TruckOrderManageVO> truckOrderRecords = new Page<TruckOrderManageVO>();
-        if (records == null || trucks.size() == 0) {
-            return new Result<>(truckOrderRecords);
-        }
-        truckOrderRecords.setTotal(records.getTotal());
-        truckOrderRecords.setCurrent(records.getCurrent());
-        truckOrderRecords.setSize(records.getSize());
+        // strategy接口
+        Page<Truck> page = new Page<>(pageParam.getPage(), pageParam.getSize());
+        IPage<TruckOrderManageVO> truckOrderRecords = truckMapper.listTmsManageTruck(page, pageParam.getParam());
         List<TruckOrderManageVO> truckOrderList = new ArrayList<>();
-        for (Truck truck : trucks) {
-            TruckOrderManageVO vo = new TruckOrderManageVO();
-            BeanUtils.copyProperties(truck, vo);
-            QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper();
-            queryWrapper.eq("truck_id", truck.getTruckId());
-            List<Integer> statuses = new ArrayList<>();
-            statuses.add(10);
-            statuses.add(20);
-            statuses.add(30);
-            queryWrapper.in("order_status", statuses);
-            WorkOrder order = workOrderService.getOne(queryWrapper);
-            if (order != null) {
-                vo.setCycleId(order.getCycleId());
-                vo.setOrderNo(order.getOrderNo());
-                vo.setOrderStatus(order.getOrderStatus());
-                vo.setSpotId(order.getSpotId());
-                vo.setSpotName(order.getSpotName());
-                vo.setUpdateDate(order.getUpdateDate());
-                if (order.getOrderStatus().equals(WorkOrderEnum.ZHUANGCHE_WAIT.orderStatus())) {
-                    // 等待中状态运单排队号
-                    vo.setQueueNo(order.getQueueNo());
+        for (TruckOrderManageVO vo : truckOrderList) {
+            LocationVO location = commonService.getLocation(vo.getTruckId());
+            if (location != null) {
+                vo.setLatitude(location.getLatitude());
+                vo.setLongitude(location.getLongitude());
+            }
+            if (vo.getOrderId() != null) {
+                // 设置已读未读信息
+                List<TruckDriver> truckDrivers = truckDriverService.findTruckDrivers(vo.getTruckId());
+                List<ReadInfo> readInfos = new ArrayList<>();
+                for (TruckDriver driver : truckDrivers) {
+                    QueryWrapper queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("order_id", vo.getOrderId());
+                    queryWrapper.eq("user_id", vo.getOrderId());
+                    WorkOrderReadinfo read = workOrderReadinfoService.getOne(queryWrapper);
+                    ReadInfo readInfo = new ReadInfo();
+                    readInfo.setDriverId(driver.getDriverId());
+                    readInfo.setDriverName(driver.getDriverName());
+                    readInfo.setDriverType(0);
+                    if (read == null) {
+                        readInfo.setReadFlag(0);
+                        readInfo.setMinutes((int)Duration.between(vo.getCreateDate(), LocalDateTime.now()).toMinutes());
+                    } else {
+                        readInfo.setReadFlag(1);
+                    }
+                    readInfos.add(readInfo);
                 }
-                LocationVO location = commonService.getLocation(truck.getTruckId());
-                if (location != null) {
-                    vo.setLatitude(location.getLatitude());
-                    vo.setLongitude(location.getLongitude());
+                List<TruckEscort> truckEscorts = truckEscortService.list(new QueryWrapper<TruckEscort>().eq("truck_id", vo.getTruckId()));
+                for (TruckEscort truckEscort : truckEscorts) {
+                    QueryWrapper queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("order_id", vo.getOrderId());
+                    queryWrapper.eq("user_id", vo.getOrderId());
+                    WorkOrderReadinfo read = workOrderReadinfoService.getOne(queryWrapper);
+                    ReadInfo readInfo = new ReadInfo();
+                    readInfo.setDriverId(truckEscort.getUserId());
+                    readInfo.setDriverName(truckEscort.getEscortName());
+                    readInfo.setDriverType(1);
+                    if (read == null) {
+                        readInfo.setReadFlag(0);
+                        readInfo.setMinutes((int)Duration.between(vo.getCreateDate(), LocalDateTime.now()).toMinutes());
+                    } else {
+                        readInfo.setReadFlag(1);
+                    }
+                    readInfos.add(readInfo);
                 }
             }
-            truckOrderList.add(vo);
+
         }
 
         truckOrderRecords.setRecords(truckOrderList);

Diff do ficheiro suprimidas por serem muito extensas
+ 81 - 0
src/main/resources/mapper/TruckMapper.xml