Bladeren bron

1、4.2司机端接口;

zk 1 jaar geleden
bovenliggende
commit
523d6f1ecb

+ 30 - 15
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java

@@ -12,64 +12,65 @@ public enum CarWaybillEnum {
     /**
      * 待接单
      */
-    PENDING_ORDER(101, "pendingOrder", "101", "待接单"),
+    PENDING_ORDER(101, "pendingOrder", "101", "待接单", "确认接单"),
     /**
      * 已撤销
      */
-    REVOKED(102, "revoked", "102", "撤回"),
+    REVOKED(102, "revoked", "102", "撤回", "撤回"),
     /**
      * 拒接单
      */
-    REJECT_ORDER(103, "rejectOrder", "103", "拒接单"),
+    REJECT_ORDER(103, "rejectOrder", "103", "拒接单", "拒接单"),
     /**
      * 出车-待出车
      */
-    PENDING_VEHICLE(201, "pendingVehicle", "201", "待出车"),
+    PENDING_VEHICLE(201, "pendingVehicle", "201", "待出车", "确认出车"),
     /**
      * 出车-拒出车
      */
-    REFUSE_TRAFFIC(202, "refuseTraffic", "202", "拒出车"),
+    REFUSE_TRAFFIC(202, "refuseTraffic", "202", "拒出车", "拒出车"),
     /**
      * 出车-已出车
      */
-    EXIT_COMPLETED(203, "exitCompleted", "203", "已出车"),
+    EXIT_COMPLETED(203, "exitCompleted", "203", "已出车", "已出车"),
     /**
      * 装货-到达装货点
      */
-    WAIT_LOADING(301, "waitLoading", "301", "到达装货点"),
+    WAIT_LOADING(301, "waitLoading", "301", "到达装货点", "到达装货点"),
     /**
      * 装货-已装货
      */
-    COMPLETION_LOADING(302, "completionLoading", "302", "已装货"),
+    COMPLETION_LOADING(302, "completionLoading", "302", "已装货", "已装货"),
     /**
      * 卸货-到达卸货点
      */
-    WAIT_UNLOADING(401, "waitUnloading", "401", "到达卸货点"),
+    WAIT_UNLOADING(401, "waitUnloading", "401", "到达卸货点", "到达卸货点"),
     /**
      * 卸货-已卸货
      */
-    COMPLETION_UNLOADING(402, "completionUnloading", "402", "已卸货"),
+    COMPLETION_UNLOADING(402, "completionUnloading", "402", "已卸货", "已卸货"),
     /**
      * 审核-待
      */
-    APPROVAL_TREAT(501, "approvalTreat", "501", "待审核"),
+    APPROVAL_TREAT(501, "approvalTreat", "501", "待审核", "待审核"),
     /**
      * 审核-通过
      */
-    APPROVAL_PASS(502, "approvalPass", "502", "审核通过"),
+    APPROVAL_PASS(502, "approvalPass", "502", "审核通过", "审核通过"),
     /**
      * 审核-驳回
      */
-    APPROVAL_NO_PASS(503, "revoked", "503", "核单驳回"),
+    APPROVAL_NO_PASS(503, "revoked", "503", "核单驳回", "核单驳回"),
     /**
      * 审核-单证更新审核中
      */
-    APPROVAL_IN(504, "approvalIn", "504", "单证更新审核中"),
+    APPROVAL_IN(504, "approvalIn", "504", "单证更新审核中", "单证更新审核中"),
     ;
 
     private final Integer code;
     private final String value;
     private final String status;
+    private final String alias;
     private final String destination;
 
     public Integer getCode() {
@@ -84,14 +85,19 @@ public enum CarWaybillEnum {
         return status;
     }
 
+    public String getAlias() {
+        return alias;
+    }
+
     public String getDestination() {
         return destination;
     }
 
-    CarWaybillEnum(Integer code, String value, String status, String destination) {
+    CarWaybillEnum(Integer code, String value, String status, String alias, String destination) {
         this.code = code;
         this.value = value;
         this.status = status;
+        this.alias = alias;
         this.destination = destination;
     }
 
@@ -122,6 +128,15 @@ public enum CarWaybillEnum {
         return null;
     }
 
+    public static String getAlias(Integer code) {
+        for (CarWaybillEnum waybillEnum : CarWaybillEnum.values()) {
+            if (waybillEnum.getCode().equals(code)) {
+                return waybillEnum.getDestination();
+            }
+        }
+        return null;
+    }
+
     public static List<Integer> getCodes() {
         List<Integer> codes = new ArrayList<>();
         for (CarWaybillEnum waybillEnum : CarWaybillEnum.values()) {

+ 4 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java

@@ -46,6 +46,10 @@ public class DateUtils extends DateUtil {
 
     public static String FORMAT10 = "yyyy-MM";
 
+    public static String FORMAT11 = "MM-dd HH:mm";
+
+    public static String FORMAT12 = "yy-MM";
+
     public static int THIRTEEN = 13;
 
     /**

+ 14 - 17
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java

@@ -76,10 +76,6 @@ public class KwtWaybillOrderController {
         return HttpResult.ok(waybillOrderV1Service.findNdexPage(params));
     }
 
-
-
-
-
     /**
      * @desc 统计司机任务数(待接单/出车/执行/完结)
      * @author zk
@@ -88,7 +84,7 @@ public class KwtWaybillOrderController {
     @GetMapping("/findCountByDriver")
     public HttpResult findCountByDriver(HttpServletRequest request){
         Long driverId = LoginUserHolder.getUserId();
-        Map count = waybillOrderService.findStatisticsCountByDriver(driverId, request);
+        Map<String, Object> count = waybillOrderV1Service.findStatisticsCountByDriver(driverId, request);
         return HttpResult.ok(count);
     }
 
@@ -118,49 +114,53 @@ public class KwtWaybillOrderController {
      **/
     @PostMapping("/findWaybillOrderByDriver")
     public HttpResult findWaybillOrderByDriver(@RequestBody Map<String, Object> params, HttpServletRequest request){
-        params.put("driverId", LoginUserHolder.getUserId());
-        /**校验**/
+        /*校验**/
         if (StringUtils.isBlank(params.get("busStatus"))) {
             return HttpResult.error("请选择业务状态!");
         }
         // 设置分页参数
         PageHelper.startPage(PageResult.getPage(params), PageResult.getPageSize(params));
-        List<WaybillOrderDriverVo> list = waybillOrderService.findWaybillOrderByDriver(params, request);
+        List<JSONObject> list = waybillOrderV1Service.findWaybillOrderByDriver(params, request);
         PageResult pageResult = PageHelperUtil.getPageResult(new PageInfo<>(list));
         return HttpResult.ok(pageResult);
     }
 
+
+
+
+
+
     /**
-     * @param params
+     * @param params 请求参数
      * @desc 变更司机
      * @author zk
      * @date 2023/8/2
      **/
     @PostMapping("/changeDriver")
     public HttpResult changeDriver(@RequestBody @Valid ChangeDriverDto params){
-        return waybillOrderService.changeDriver(params);
+        return waybillOrderV1Service.changeDriver(params);
     }
 
     /**
-     * @param params
+     * @param params 请求参数
      * @desc 变更车辆
      * @author zk
      * @date 2023/8/2
      **/
     @PostMapping("/changeTruck")
     public HttpResult changeTruck(@RequestBody @Valid ChangeTruckDto params){
-        return waybillOrderService.changeTruck(params);
+        return waybillOrderV1Service.changeTruck(params);
     }
 
     /**
-     * @param wOrderId
+     * @param wOrderId 运单ID
      * @desc 变更车辆/司机查询
      * @author zk
      * @date 2023/8/2
      **/
     @GetMapping("/changeWaybillOrder")
     public HttpResult changeWaybillOrder(@RequestParam("wOrderId") Long wOrderId){
-        return waybillOrderService.changeWaybillOrder(wOrderId);
+        return waybillOrderV1Service.changeWaybillOrder(wOrderId);
     }
 
     /**
@@ -179,9 +179,6 @@ public class KwtWaybillOrderController {
         }
     }
 
-
-
-
     /**
      * @param params {}
      * @desc 派车-趟次/循环

+ 12 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderV1Mapper.java

@@ -33,8 +33,19 @@ public interface KwtWaybillOrderV1Mapper extends BaseMapper<KwtWaybillOrderV1> {
      */
     List<WaybillOrderSelectVo> findListPage(WaybillOrderQueryDto params);
 
+    /**
+     * 司机端任务统计
+     * @param driverId 司机ID
+     * @return 统计数据
+     */
+    Map<String, Object> findStatisticsCountByDriver(@Param("driverId") Long driverId, @Param("specialEntIds") List<Long> specialEntIds);
 
-
+    /**
+     * 司机端查询运单
+     * @param params 请求参数{driverId 司机ID, busStatus 状态 1待接单/2出车/3执行/4完结, month月份}
+     * @return 返回值
+     */
+    List<KwtWaybillOrderV1> findWaybillOrderByDriver(Map<String, Object> params);
 
     /**
      * 查询统计司机或车辆关联订单数量信息

+ 213 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -1,5 +1,7 @@
 package com.sckw.transport.service;
 
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
@@ -17,8 +19,10 @@ import com.sckw.excel.utils.DateUtil;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RDriverVo;
 import com.sckw.fleet.api.model.vo.RTruckVo;
+import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.dao.*;
@@ -27,6 +31,8 @@ import com.sckw.transport.model.dto.*;
 import com.sckw.transport.model.enuma.CarWaybillTableTopEnum;
 import com.sckw.transport.model.vo.*;
 import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.validation.Valid;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,6 +40,9 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
@@ -102,6 +111,11 @@ public class KwtWaybillOrderV1Service {
 
         //数据处理
         List<TableTop> topList = new ArrayList<>();
+        TableTop top1 = new TableTop();
+        top1.setName("全部");
+        top1.setTotal(tableTops.stream().mapToInt(TableTop::getTotal).sum());
+        topList.add(top1);
+
         for (CarWaybillTableTopEnum entity:CarWaybillTableTopEnum.values()) {
             TableTop top = new TableTop();
             top.setName(entity.getName());
@@ -157,8 +171,103 @@ public class KwtWaybillOrderV1Service {
         return pageResult;
     }
 
+    /**
+     * @param driverId 司机ID
+     * @desc 统计司机任务数(待接单 / 出车 / 执行 / 完结)
+     * @author zk
+     * @date 2024/3/12
+     **/
+    public Map<String, Object> findStatisticsCountByDriver(Long driverId, HttpServletRequest request) {
+        //专场逻辑
+        String accessSpecial = request.getHeader("Access-Special");
+        List<Long> specialEntIds = remoteSystemService.queryEntIdsByCode(accessSpecial, EntTypeEnum.carrier());
+        return waybillOrderV1Dao.findStatisticsCountByDriver(driverId, specialEntIds);
+    }
 
+    /**
+     * @param params {driverId 司机ID, busStatus  1待接单/2出车/3执行/4完结, month月份}
+     * @desc 任务查询
+     * @author zk
+     * @date 2024/3/12
+     **/
+    public List<JSONObject> findWaybillOrderByDriver(Map<String, Object> params, HttpServletRequest request) {
+        /*参数处理*/
+        params.put("driverId", StringUtils.isBlank(params.get("driverId")) ? LoginUserHolder.getUserId() : params.get("driverId"));
+        //专场逻辑
+        String accessSpecial = request.getHeader("Access-Special");
+        List<Long> specialEntIds = remoteSystemService.queryEntIdsByCode(accessSpecial, EntTypeEnum.carrier());
+        params.put("specialEntIds", specialEntIds);
+        // 设置分页参数
+        PageHelper.startPage(PageResult.getPage(params), PageResult.getPageSize(params));
 
+        /*数据查询**/
+        List<KwtWaybillOrderV1> waybillOrders = waybillOrderV1Dao.findWaybillOrderByDriver(params);
+        //企业ID
+        List<Long> entIds = waybillOrders.stream().map(KwtWaybillOrderV1::getEntId).toList();
+        Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
+
+        //数据处理
+        List<JSONObject> list = new ArrayList<>();
+        for (KwtWaybillOrderV1 waybillOrder:waybillOrders) {
+            //运单地址信息
+            List<KwtWaybillOrderAddress> addresses = waybillOrderAddressDao.findByAddresses(waybillOrder.getId(), null);
+            List<JSONObject> addressList = new ArrayList<>();
+            for (KwtWaybillOrderAddress address:addresses) {
+                //运单子单
+                KwtWaybillOrderSubtask subtask = waybillOrderSubtaskDao.selectById(address.getWSubtaskId());
+                //物流订单商品信息
+                KwtLogisticsOrderGoods goods = logisticsOrderGoodsDao.findByGoods(subtask != null ? subtask.getLOrderId() : null);
+                //榜单信息
+                KwtWaybillOrderTicket ticket = waybillOrderTicketDao.findWaybillOrderTicketV2(address.getId(), subtask.getUnit());
+                //数据组装
+                JSONObject addressJson = new JSONObject();
+                addressJson.put("addressName", address.getName());
+                addressJson.put("addressCityName", address.getCityName());
+                addressJson.put("addressDetail", address.getDetailAddress());
+                addressJson.put("planTime", DateUtils.format(address.getPlanTime(), DateUtils.FORMAT12));
+                addressJson.put("entrustAmount", address.getEntrustAmount());
+                addressJson.put("goodsName", goods != null ? goods.getGoodsName() : null);
+                addressJson.put("amount", ticket != null ? ticket.getAmount() : null);
+                addressJson.put("operateTime", ticket != null ? DateUtils.format(address.getPlanTime(), DateUtils.FORMAT11) : null);
+                addressJson.put("approvalStatus", ticket != null ? ticket.getStatus() : null);
+
+
+                addressList.add(addressJson);
+            }
+
+            JSONObject order = JSON.parseObject(JSON.toJSONString(waybillOrder));
+            order.put("statusName", CarWaybillEnum.getName(waybillOrder.getStatus()));
+            order.put("carrierFirmName", ents.get(waybillOrder.getEntId()) != null ? ents.get(waybillOrder.getEntId()).getFirmName() : null);
+            order.put("addressList", addressList);
+            list.add(order);
+        }
+
+
+
+        /*数据配置
+        List<Long> entIds = new ArrayList<>();
+        List<String> dictKey = new ArrayList<>();
+        for (WaybillOrderDriverVo waybillOrder : waybillOrders) {
+            entIds.add(waybillOrder.getCarrierEntId());
+            dictKey.add(DictTypeEnum.UNIT_TYPE.getType() + Global.POUND + waybillOrder.getUnit());
+        }
+        //企业数据集
+        entIds = entIds.stream().distinct().collect(Collectors.toList());
+        Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
+        //数据字典
+        Map<String, SysDictResDto> dicts = this.dict(dictKey);
+
+        //数据组装
+        for (WaybillOrderDriverVo waybillOrder : waybillOrders) {
+            EntCacheResDto ent = ents == null ? null : ents.get(waybillOrder.getCarrierEntId());
+            SysDictResDto unit = dicts == null ? null : dicts.get(DictTypeEnum.UNIT_TYPE.getType() + Global.POUND + waybillOrder.getUnit());
+            //String value = getDictValue(DictTypeEnum.UNIT_TYPE.getType(), waybillOrder.getUnit());
+            waybillOrder.setCarrierFirmName(ent != null ? ent.getFirmName() : null);
+            waybillOrder.setUnitName(unit != null ? unit.getLabel() : null);
+        }
+        */
+        return list;
+    }
 
 
 
@@ -1614,11 +1723,11 @@ public class KwtWaybillOrderV1Service {
             trackData.put("wOrderId", track != null ? track.getWOrderId() : null);
             trackData.put("wSubtaskId", track != null ? track.getWSubtaskId() : null);
             trackData.put("wAddressId", track != null ? track.getWAddressId() : null);
-            trackData.put("operateTime", track != null ? track.getOperateTime() : null);
+            trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
             trackData.put("createTime", track != null ? track.getCreateTime() : null);
             trackData.put("createByName", track != null ? usersMap.get(track.getCreateBy()) == null ? waybillOrder.getDriverName() : usersMap.get(track.getCreateBy()).getName() : null);
             trackData.put("status", status);
-            trackData.put("statusName", CarWaybillEnum.getName(status));
+            trackData.put("statusName", CarWaybillEnum.getAlias(status));
             trackData.put("operateStatus", track != null);
             trackList.add(trackData);
         }
@@ -1643,7 +1752,7 @@ public class KwtWaybillOrderV1Service {
                 trackData.put("wOrderId", track != null ? track.getWOrderId() : null);
                 trackData.put("wSubtaskId", track != null ? track.getWSubtaskId() : null);
                 trackData.put("wAddressId", track != null ? track.getWAddressId() : null);
-                trackData.put("operateTime", track != null ? track.getOperateTime() : null);
+                trackData.put("operateTime", track != null ? DateUtils.format(track.getOperateTime(), DateUtils.FORMAT11) : null);
                 trackData.put("createTime", track != null ? track.getCreateTime() : null);
                 trackData.put("createByName", track != null ? usersMap.get(track.getCreateBy()) == null ? waybillOrder.getDriverName() : usersMap.get(track.getCreateBy()).getName() : null);
                 trackData.put("status", status);
@@ -1652,6 +1761,9 @@ public class KwtWaybillOrderV1Service {
                 trackData.put("planTime", track != null ? address.getPlanTime() : null);
                 trackData.put("entrustAmount", track != null ? address.getEntrustAmount() : null);
                 trackData.put("goodsName", goods != null ? goods.getGoodsName() : null);
+                trackData.put("addressName", address.getName());
+                trackData.put("addressCityName", address.getCityName());
+                trackData.put("addressDetail", address.getDetailAddress());
                 trackList.add(trackData);
             }
         }
@@ -1667,11 +1779,11 @@ public class KwtWaybillOrderV1Service {
         result.put("driverIdcard", waybillOrder.getDriverIdcard());
         result.put("createTime", waybillOrder.getCreateTime());
         result.put("trackList", trackList);
+        return HttpResult.ok(result);
+    }
 
 
 
-        return HttpResult.ok(result);
-    }
 
 
 
@@ -1679,9 +1791,105 @@ public class KwtWaybillOrderV1Service {
 
 
 
+    /**
+     * @param wOrderId 运单ID
+     * @desc 变更车辆/司机查询
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public HttpResult changeWaybillOrder(@RequestParam("wOrderId") Long wOrderId) {
+        //车辆运单信息
+        KwtWaybillOrderV1 waybillOrder = waybillOrderV1Dao.selectById(wOrderId);
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+
+        Map<String, Object> result = new HashMap<>(NumberConstant.SIXTEEN);
+        result.put("id", wOrderId);
+        result.put("wOrderId", wOrderId);
+        result.put("wOrderNo", waybillOrder.getWOrderNo());
+        result.put("statusName", CarWaybillEnum.getName(waybillOrder.getStatus()));
+        result.put("truckNo", waybillOrder.getTruckNo());
+        result.put("truckId", waybillOrder.getTruckId());
+
+        result.put("driverId", waybillOrder.getDriverId());
+        result.put("driverPhone", waybillOrder.getDriverPhone());
+        result.put("driverIdcard", waybillOrder.getDriverIdcard());
+        result.put("driverName", waybillOrder.getDriverName());
+        RTruckVo truck = remoteFleetService.findTruck(waybillOrder.getTruckId());
+        result.put("trailerNo", truck != null ? truck.getTrailerNo() : null);
+        return HttpResult.ok(result);
+    }
+
+    /**
+     * @param params 参数
+     * @desc 变更司机
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public HttpResult changeDriver(@RequestBody @Valid ChangeDriverDto params) {
+        /*数据校验*/
+        //车辆运单信息
+        KwtWaybillOrderV1 waybillOrder = waybillOrderV1Dao.selectById(params.getWOrderId());
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+        if (!CarWaybillEnum.changeDriver(waybillOrder.getStatus())) {
+            return HttpResult.error("车辆运单当前状态不能变更司机!");
+        }
 
+        /*更新车辆运单**/
+        changeWaybillOrder(params, null);
+        return HttpResult.ok("更换司机成功!");
+    }
 
+    /**
+     * @param params 参数
+     * @desc 变更车辆
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public HttpResult changeTruck(@RequestBody @Valid ChangeTruckDto params) {
+        /*数据校验**/
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        //车辆运单信息
+        KwtWaybillOrderV1 waybillOrder = waybillOrderV1Dao.selectById(params.getWOrderId());
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+        if (!CarWaybillEnum.changeTruck(waybillOrder.getStatus())) {
+            return HttpResult.error("车辆运单当前状态不能变更车辆!");
+        }
 
+        /*更新车辆运单**/
+        changeWaybillOrder(null, params);
+        return HttpResult.ok("更换车辆成功!");
+    }
+
+    /**
+     * @param driver 司机信息
+     * @param truck  车辆信息
+     * @desc 更新车辆运单信息
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public void changeWaybillOrder(ChangeDriverDto driver, ChangeTruckDto truck) {
+        //车辆运单信息
+        KwtWaybillOrderV1 waybillOrder = new KwtWaybillOrderV1();
+        if (driver != null) {
+            waybillOrder.setId(driver.getWOrderId());
+            waybillOrder.setDriverId(driver.getDriverId());
+            waybillOrder.setDriverPhone(driver.getDriverPhone());
+            waybillOrder.setDriverName(driver.getDriverName());
+            waybillOrder.setDriverIdcard(driver.getDriverIdcard());
+        }
+        if (truck != null) {
+            waybillOrder.setId(truck.getWOrderId());
+            waybillOrder.setTruckId(truck.getTruckId());
+            waybillOrder.setTruckNo(truck.getTruckNo());
+        }
+        waybillOrderV1Dao.updateById(waybillOrder);
+    }
 
     /**
      * @param driverId 司机档案ID

+ 6 - 2
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderSubtaskMapper.xml

@@ -21,7 +21,11 @@
         remark, status, create_by createBy, create_time createTime, update_by updateBy, update_time updateTime
         from kwt_waybill_order_subtask
         where del_flag = 0
-        and w_order_id = #{wOrderId, jdbcType=BIGINT}
-        and l_order_id = #{lOrderId, jdbcType=BIGINT}
+        <if test="wOrderId != null and wOrderId != ''">
+            and w_order_id = #{wOrderId, jdbcType=BIGINT}
+        </if>
+        <if test="lOrderId != null and lOrderId != ''">
+            and l_order_id = #{lOrderId, jdbcType=BIGINT}
+        </if>
     </select>
 </mapper>

+ 64 - 1
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderV1Mapper.xml

@@ -62,7 +62,7 @@
     <select id="findListPage" resultType="com.sckw.transport.model.vo.WaybillOrderSelectVo"
             parameterType="com.sckw.transport.model.dto.WaybillOrderQueryDto">
         SELECT
-        wo.id wOrderId, wo.w_order_no wOrderNo, wo.truck_no truckNo, wo.driver_name driverName, wo.driver_phone driverPhone,
+        wo.id wOrderId, wo.ent_id entId, wo.w_order_no wOrderNo, wo.truck_no truckNo, wo.driver_name driverName, wo.driver_phone driverPhone,
         wo.type, wo.create_time sendCarTime, wo.create_time createTime, wo.update_time updateTime, wo.status
         from kwt_waybill_order wo
         where wo.del_flag = 0
@@ -119,7 +119,70 @@
         order by wo.update_time desc
     </select>
 
+    <select id="findStatisticsCountByDriver" resultType="java.util.Map">
+        SELECT
+        count(case when wo.status = 101 then 1 end) waitTotal,
+        count(case when wo.status = 201 then 1 end) departureTotal,
+        count(case when wo.status in (203, 301, 302, 401, 402) then 1 end) executeTotal,
+        count(case when wo.status in (501, 502, 503, 504, 103, 202) then 1 end) endTotal
+        from kwt_waybill_order wo
+        where wo.del_flag = 0
+        and wo.driver_id = #{driverId, jdbcType=BIGINT}
+        <if test="specialEntIds != null and specialEntIds.size() > 0">
+            and wo.ent_id in
+            <foreach collection="specialEntIds" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+        </if>
+    </select>
 
+    <select id="findWaybillOrderByDriver" resultType="com.sckw.transport.model.KwtWaybillOrderV1" parameterType="java.util.Map">
+        SELECT
+        wo.id, wo.id wOrderId, wo.ent_id entId, wo.w_order_no wOrderNo, wo.truck_no truckNo, wo.driver_name driverName, wo.driver_phone driverPhone,
+        wo.type, wo.create_time sendCarTime, wo.create_time createTime, wo.update_time updateTime, wo.status
+        from kwt_waybill_order wo
+        left join kwt_waybill_order_subtask wos on wos.w_order_id = wo.id
+        where wo.del_flag = 0 and wos.del_flag = 0
+        <if test="entId != null and entId != ''">
+            and wo.ent_id = #{entId, jdbcType=VARCHAR}
+        </if>
+        <if test="specialEntIds != null and specialEntIds.size() > 0">
+            and wo.ent_id in
+            <foreach collection="specialEntIds" item="item" open="(" close=")" separator=",">
+                #{item,jdbcType=BIGINT}
+            </foreach>
+        </if>
+        <if test="driverId != null and driverId != ''">
+            and wo.driver_id = #{driverId, jdbcType=BIGINT}
+        </if>
+        <if test="busStatus != null and busStatus == 1">
+            and wo.status = 101
+        </if>
+        <if test="busStatus != null and busStatus == 2">
+            and wo.status = 201
+        </if>
+        <if test="busStatus != null and busStatus == 3">
+            and wo.status in (203, 301, 302, 401, 402)
+        </if>
+        <if test="busStatus != null and busStatus == 4">
+            and wo.status in (103, 202, 501, 502, 503, 504)
+        </if>
+        <if test="month != null and month != ''">
+            and LEFT(wo.create_time, 7) = #{month, jdbcType=TIMESTAMP}
+        </if>
+        <if test="startTime != null and startTime != ''">
+            and DATE(wo.create_time) <![CDATA[ >= ]]> #{startTime,jdbcType=TIMESTAMP}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            and DATE(wo.create_time) <![CDATA[ <= ]]> #{endTime,jdbcType=TIMESTAMP}
+        </if>
+        <if test="busStatus != null and busStatus == 2">
+            ORDER BY wos.load_time
+        </if>
+        <if test="busStatus != null and busStatus == 4">
+            ORDER BY CASE WHEN wo.status = 503 THEN  wo.status * -1  ELSE wo.status END ASC, wo.update_time desc
+        </if>
+    </select>
 
 
     <select id="findCountByDriverOrTruck" resultType="com.sckw.transport.model.vo.WaybillCountVo">