فهرست منبع

Merge remote-tracking branch 'origin/dev' into dev

xucaiqin 2 سال پیش
والد
کامیت
a5ff285a55
16فایلهای تغییر یافته به همراه136 افزوده شده و 28 حذف شده
  1. 1 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java
  2. 10 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/RequestCheckFilter.java
  3. 3 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java
  4. 2 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsMenuService.java
  5. 1 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsMenuDao.xml
  6. 2 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java
  7. 2 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java
  8. 1 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/operationManagement/ManagementLogisticsOrderController.java
  9. 2 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/operationManagement/ManagementWaybillOrderController.java
  10. 12 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java
  11. 17 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/AcceptCarriageOrderVO.java
  12. 18 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/execlVo/AcceptCarriageOrderExcelVo.java
  13. 16 7
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  14. 14 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  15. 3 3
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  16. 32 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

+ 1 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java

@@ -47,6 +47,7 @@ public enum DictTypeEnum {
     TRANSPORT_DEMAND_STATUS("transport_demand_status", "运需状态"),
     PREPAID_LIMIT("prepaid_limit", "预付限额"),
     WANT_BUY_STATUS("want_buy_status", "求购状态"),
+    ORDER_SOURCE("order_source", "订单来源"),
     ;
 
     private final String type;

+ 10 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/RequestCheckFilter.java

@@ -136,6 +136,16 @@ public class RequestCheckFilter implements Filter {
 
             //校验用户企业审批状态
             if (!loginEntInfo.getValid() && !REGISTER.equals(requestUri)) {
+                if(loginEntInfo.getApproval() == Global.NO){
+                    ResponseUtil.writer(response, HttpResult.error(HttpStatus.CODE_60603, HttpStatus.ENTCERTIFICATES_NOT_REGISTER));
+                    return;
+                }
+
+                if(loginEntInfo.getApproval() == Global.NUMERICAL_THREE){
+                    ResponseUtil.writer(response, HttpResult.error(HttpStatus.CODE_60603, HttpStatus.ENTCERTIFICATES_NOT_PASS));
+                    return;
+                }
+
                 ResponseUtil.writer(response, HttpResult.error(HttpStatus.CODE_60603, HttpStatus.ENTCERTIFICATES_INVAILD));
                 return;
             }

+ 3 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java

@@ -49,7 +49,9 @@ public class HttpStatus {
 
     /**其他自定义状态码*/
     public static final int CODE_60603 = 60603;
-    public static final String ENTCERTIFICATES_INVAILD = "企业资质已失效";
+    public static final String ENTCERTIFICATES_INVAILD = "您的企业资质已失效,暂没有权限访问,请尽快更新资质";
+    public static final String ENTCERTIFICATES_NOT_REGISTER = "您未做企业资质认证,暂没有权限访问";
+    public static final String ENTCERTIFICATES_NOT_PASS = "您的企业资质认证还在审核中,暂没有权限访问";
 
 
 

+ 2 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsMenuService.java

@@ -22,6 +22,7 @@ import com.sckw.system.model.*;
 import com.sckw.system.model.pojo.FindMenuTreePojo;
 import com.sckw.system.model.vo.req.*;
 import com.sckw.system.model.vo.res.*;
+import net.sf.jsqlparser.expression.CollateExpression;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -398,6 +399,7 @@ public class KwsMenuService {
             kwsMenuRights.setDelFlag(Global.NO);
             list.add(kwsMenuRights);
         }
+
         if (kwsMenuRightsDao.saveBatch(list) < list.size()) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }

+ 1 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsMenuDao.xml

@@ -270,6 +270,7 @@
     from kws_menu sm
     left join kws_menu_rights smr on sm.id = smr.menu_id
     where sm.del_flag = 0
+      and smr.del_flag = 0
     <if test="clientType != null">
       and sm.client_type = #{clientType}
     </if>

+ 2 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java

@@ -90,14 +90,13 @@ public class AcceptCarriageOrderController {
      * @return
      */
     @RequestMapping(value = "/acceptCarriageOrderExport", method = RequestMethod.POST)
-    public HttpResult exportAcceptCarriage(@Validated @RequestBody AcceptCarriageOrderQuery query) {
+    public void exportAcceptCarriage(@Validated @RequestBody AcceptCarriageOrderQuery query) {
         HttpServletResponse response = RequestHolder.getResponse();
         List<AcceptCarriageOrderExcelVo> list = acceptCarriageOrderService.exportAcceptCarriage(query, "2");
         if (org.springframework.util.CollectionUtils.isEmpty(list)){
             throw new CustomPromptException(HttpStatus.SUCCESS_CODE,"暂无数据,请确认");
         }
-        ExcelUtil.download(response, AcceptCarriageOrderExcelVo.class, list);
-        return null;
+        ExcelUtil.downData(response, AcceptCarriageOrderExcelVo.class, list);
     }
 
     /**

+ 2 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java

@@ -91,14 +91,13 @@ public class ConsignOrderController {
      * @return
      */
     @RequestMapping(value = "/consignExport", method = RequestMethod.POST)
-    public HttpResult exportConsign(@Validated @RequestBody ConsignOrderQuery query) {
+    public void exportConsign(@Validated @RequestBody ConsignOrderQuery query) {
         HttpServletResponse response = RequestHolder.getResponse();
         List<ConsignOrderExcelVo> list = consignOrderService.exportConsign(query, "1");
         if (CollectionUtils.isEmpty(list)) {
             throw new CustomPromptException(HttpStatus.SUCCESS_CODE, "暂无数据,请确认");
         }
-        ExcelUtil.download(response, ConsignOrderExcelVo.class, list);
-        return null;
+        ExcelUtil.downData(response, ConsignOrderExcelVo.class, list);
     }
 
 

+ 1 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/operationManagement/ManagementLogisticsOrderController.java

@@ -85,7 +85,7 @@ public class ManagementLogisticsOrderController {
      * @return
      */
     @RequestMapping(value = "/export", method = RequestMethod.POST)
-    public HttpResult exportLogisticsOrder(@Validated @RequestBody ManagementLogisticsOrderQuery query) {
+    public void exportLogisticsOrder(@Validated @RequestBody ManagementLogisticsOrderQuery query) {
         log.error("运营管理端-物流订单-导出 query :{}", JSONObject.toJSONString(query));
         HttpServletResponse response = RequestHolder.getResponse();
         List<ManagementLogisticsOrderExcelVo> list = managementLogisticsOrderService.exportLogisticsOrder(query);
@@ -94,7 +94,6 @@ public class ManagementLogisticsOrderController {
         }
 //      Translator.translate(list);
         ExcelUtil.downData(response, ManagementLogisticsOrderExcelVo.class, list);
-        return null;
     }
 
 

+ 2 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/operationManagement/ManagementWaybillOrderController.java

@@ -77,15 +77,14 @@ public class ManagementWaybillOrderController {
      * @return
      */
     @RequestMapping(value = "/export", method = RequestMethod.POST)
-    public HttpResult exportWaybillOrder(@Validated @RequestBody ManagementWaybillOrderQuery query) {
+    public void exportWaybillOrder(@Validated @RequestBody ManagementWaybillOrderQuery query) {
         log.error("运营管理端-运单-导出 query :{}", JSONObject.toJSONString(query));
         HttpServletResponse response = RequestHolder.getResponse();
         List<ManagementWaybillOrderExcelVO> list = managementWaybillOrderService.exportWaybillOrder(query);
         if (CollectionUtils.isEmpty(list)){
             throw new CustomPromptException(HttpStatus.SUCCESS_CODE,"暂无数据,请确认");
         }
-        ExcelUtil.download(response, ManagementWaybillOrderExcelVO.class, list);
-        return null;
+        ExcelUtil.downData(response, ManagementWaybillOrderExcelVO.class, list);
     }
 
 

+ 12 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java

@@ -182,4 +182,16 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
      * @date 2023/9/6
      **/
     List<KwtWaybillOrder> findWaybillOrder(Map<String, Object> params);
+
+
+    /**
+     * 托运订单-承运订单-通过单据号根据车牌号分组获取车辆信息统计信息
+     * @param ids
+     * @param statusList
+     * @param page
+     * @param pageSize
+     * @return
+     */
+    List<OrderCarDTO> selectInvalidWaybillOrderCarListGroupByTruckNo(@Param("ids") List<String> ids, @Param("statusList") List<Integer> statusList , @Param("page") int page, @Param("pageSize") int pageSize);
+
 }

+ 17 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/AcceptCarriageOrderVO.java

@@ -290,4 +290,21 @@ public class AcceptCarriageOrderVO /*extends PageRequest*/ {
      * 订单主体企业id
      */
     private  Long entId;
+
+    /**
+     * 订单来源
+     */
+    private String type;
+
+
+    /**
+     * 订单来源
+     */
+    private String orderSource;
+
+    /**
+     * 订单来源翻译
+     */
+    private String orderSourceLabel;
+
 }

+ 18 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/execlVo/AcceptCarriageOrderExcelVo.java

@@ -237,6 +237,24 @@ public class AcceptCarriageOrderExcelVo {
     @ExcelProperty(value = "卸货量")
     private String unloadAmount;
 
+
+//    /**
+//     * 订单来源
+//     */
+//    private String type;
+//
+//    /**
+//     * 订单来源
+//     */
+//    private String orderSource;
+
+    /**
+     * 订单来源翻译
+     */
+    @ExcelProperty(value = "订单来源")
+    private String orderSourceLabel;
+
+
 //    /**
 //     * 结算周期
 //     */

+ 16 - 7
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -991,7 +991,7 @@ public class AcceptCarriageOrderService {
         Map<String, String> settlementDictData = getDictData(DictTypeEnum.SETTLEMENT_CYCLE.getType());
         List<SubcontractConsignmentVO> allList = new ArrayList<>();
         List<SubcontractConsignmentVO> voList = logisticsOrderMapper.getSubcontractConsignmentList(ids);
-        if (CollectionUtils.isEmpty(voList)){
+        if (CollectionUtils.isEmpty(voList)) {
             PageRes<SubcontractConsignmentVO> objectPageRes = new PageRes<>();
             objectPageRes.setPage(page);
             objectPageRes.setPageSize(pageSize);
@@ -1036,7 +1036,7 @@ public class AcceptCarriageOrderService {
             }
             allList.addAll(voList);
         }
-        return PageRes.build(pageInfo,allList);
+        return PageRes.build(pageInfo, allList);
 //        for (String lOrderId : stringList) {
 //            List<SubcontractConsignmentVO> list = logisticsOrderMapper.getSubcontractConsignmentNotPage(lOrderId);
 //            //联查数据
@@ -1545,7 +1545,7 @@ public class AcceptCarriageOrderService {
                     .in(KwtLogisticsOrder::getStatus, orderStatusList));
             if (org.springframework.util.CollectionUtils.isEmpty(logisticsOrders)) {
                 tradeOrder.setIsAllComplete(true);
-            }else {
+            } else {
                 tradeOrder.setIsAllComplete(false);
             }
             tradeOrder.setTOrderId(logisticsOrder.getTOrderId());
@@ -2037,7 +2037,7 @@ public class AcceptCarriageOrderService {
                 , messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl()
                 , messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl()
                 , MessageEnum.NEW_LOGISTICS_ORDER, MessageEnum.NEW_CARRIAGE_ORDER
-                ,"1"
+                , "1"
         );
 
         System.out.println("承运订单新建订单-消息列表推送 end ");
@@ -2462,6 +2462,8 @@ public class AcceptCarriageOrderService {
         Map<String, String> signingWay = getDictData(DictTypeEnum.SIGNING_TYPE.getType());
         /**合理损耗*/
 //        Map<String, String> taxRateTypeDictData = getDictData(DictTypeEnum.TAX_RATE_TYPE.getType());
+        /**订单来源*/
+        Map<String, String> orderSource = getDictData(DictTypeEnum.ORDER_SOURCE.getType());
         Map<Long, UserCacheResDto> longUserMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         if (CollectionUtils.isNotEmpty(list)) {
             List<Long> collect = list.stream().map(AcceptCarriageOrderVO::getCreateBy).collect(Collectors.toList());
@@ -2474,6 +2476,7 @@ public class AcceptCarriageOrderService {
             vo.setAppointor(longUserMap.get(vo.getCreateBy()) == null ? null : longUserMap.get(vo.getCreateBy()).getName());
             vo.setBillingModeLabel(chargingDictData.get(vo.getBillingMode()));
             vo.setSigningLabel(signingWay.get(vo.getSigning()));
+            vo.setOrderSourceLabel(orderSource == null ? null : orderSource.get(vo.getOrderSource()));
             vo.setStatusLabel(LogisticsOrderEnum.getName(vo.getStatus()));
             vo.setLoadAddress(vo.getLoadCityName() + vo.getLoadAddress());
             vo.setUnloadAddress(vo.getUnloadCityName() + vo.getUnloadAddress());
@@ -2698,6 +2701,8 @@ public class AcceptCarriageOrderService {
         Map<String, String> taxRate = getDictData(DictTypeEnum.TAX_RATE_TYPE.getType());
         /**运价方式*/
         Map<String, String> priceType = getDictData(DictTypeEnum.PRICE_TYPE.getType());
+        /**订单来源*/
+        Map<String, String> orderSource = getDictData(DictTypeEnum.ORDER_SOURCE.getType());
         Map<Long, UserCacheResDto> longUserMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         if (CollectionUtils.isNotEmpty(list)) {
             List<Long> collect = list.stream().map(AcceptCarriageOrderVO::getCreateBy).collect(Collectors.toList());
@@ -2719,6 +2724,7 @@ public class AcceptCarriageOrderService {
             carriageOrderExcelVo.setStatusLabel(LogisticsOrderEnum.getName(vo.getStatus()));
             carriageOrderExcelVo.setLoadAddress(vo.getLoadCityName() + vo.getLoadAddress());
             carriageOrderExcelVo.setUnloadAddress(vo.getUnloadCityName() + vo.getUnloadAddress());
+            carriageOrderExcelVo.setOrderSourceLabel(orderSource == null ? null : orderSource.get(vo.getOrderSource()));
 //            if (vo.getTOrderId() != null) {
 //                try {
 //                    OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(Long.valueOf(vo.getTOrderId()));
@@ -2907,7 +2913,8 @@ public class AcceptCarriageOrderService {
         }
         StatisticsTotalPriceVO priceVO = new StatisticsTotalPriceVO();
         priceVO.setTotalPrice(currentWeek.getTotalPrice());
-        priceVO.setChainRatio(chainRatio.abs() + "%");
+//        priceVO.setChainRatio(chainRatio.abs() + "%");
+        priceVO.setChainRatio(chainRatio.abs().toString());
         priceVO.setFlag(flag);
         priceVO.setLastTotalPrice(lastWeek.getTotalPrice());
         resultVO.setTotalPriceVO(priceVO);
@@ -2935,7 +2942,8 @@ public class AcceptCarriageOrderService {
         /**承运量*/
         StatisticsAmountVO amountVO = new StatisticsAmountVO();
         amountVO.setAmount(currentWeek.getAmount());
-        amountVO.setChainRatio(amountChainRatio.abs() + "%");
+//        amountVO.setChainRatio(amountChainRatio.abs() + "%");
+        amountVO.setChainRatio(amountChainRatio.abs().toString());
         amountVO.setFlag(amountFlag);
         amountVO.setLastAmount(lastWeek.getAmount());
         resultVO.setAmountVO(amountVO);
@@ -2962,7 +2970,8 @@ public class AcceptCarriageOrderService {
         /**待分配量*/
         StatisticsWaitingAmountVO waitingAmountVO = new StatisticsWaitingAmountVO();
         waitingAmountVO.setWaitingAmount(currentWeek.getWaitingAmount());
-        waitingAmountVO.setChainRatio(chainRatio.abs() + "%");
+//        waitingAmountVO.setChainRatio(chainRatio.abs() + "%");
+        waitingAmountVO.setChainRatio(chainRatio.abs().toString());
         waitingAmountVO.setFlag(flag);
         waitingAmountVO.setLastWaitingAmount(lastWeek.getWaitingAmount());
         resultVO.setWaitingAmountVO(waitingAmountVO);

+ 14 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -802,14 +802,19 @@ public class ConsignOrderService {
 ////            log.error("托运订单获取车辆信息 error id:{},请求参数:{}", orderDto.getId(), JSONObject.toJSONString(orderDto));
 //            HttpResult.error("物流订单不存在");
 //        }
+        /**
+         * 除了已作废的运单对应的车辆不查出(已作废:拒绝接单、拒绝出车、单趟撤回),其他状态的运单对应的车辆带出去重
+         * */
         List<String> stringList = StringUtils.splitStrToList(orderDto.getIds(), String.class);
         if (CollectionUtils.isEmpty(stringList)) {
             return HttpResult.ok();
         }
         List<Integer> statusList = new ArrayList<>();
-        statusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
-        statusList.add(CarWaybillEnum.APPROVAL_PASS.getCode());
-        List<OrderCarDTO> list = kwtWaybillOrderMapper.selectWaybillOrderCarListGroupByTruckNo(stringList, statusList, orderDto.getPage() - 1, orderDto.getPageSize());
+        statusList.add(CarWaybillEnum.REFUSE_TRAFFIC.getCode());
+        statusList.add(CarWaybillEnum.REJECT_ORDER.getCode());
+        statusList.add(CarWaybillEnum.REVOKED.getCode());
+//        List<OrderCarDTO> list = kwtWaybillOrderMapper.selectWaybillOrderCarListGroupByTruckNo(stringList, statusList, orderDto.getPage() - 1, orderDto.getPageSize());
+        List<OrderCarDTO> list = kwtWaybillOrderMapper.selectInvalidWaybillOrderCarListGroupByTruckNo(stringList, statusList, orderDto.getPage() - 1, orderDto.getPageSize());
         if (CollectionUtils.isNotEmpty(list)) {
             List<String> stringLists = list.stream().map(OrderCarDTO::getTruckNo).distinct().collect(Collectors.toList());
             Map<String, RTruckVo> truck = remoteFleetService.findTruck(stringLists);
@@ -2206,7 +2211,8 @@ public class ConsignOrderService {
         }
         StatisticsTotalPriceVO priceVO = new StatisticsTotalPriceVO();
         priceVO.setTotalPrice(currentWeek.getTotalPrice());
-        priceVO.setChainRatio(chainRatio.abs() + "%");
+//        priceVO.setChainRatio(chainRatio.abs() + "%");
+        priceVO.setChainRatio(chainRatio.abs().toString());
         priceVO.setFlag(flag);
         priceVO.setLastTotalPrice(lastWeek.getTotalPrice());
         resultVO.setTotalPriceVO(priceVO);
@@ -2234,7 +2240,8 @@ public class ConsignOrderService {
         /**承运量*/
         StatisticsAmountVO amountVO = new StatisticsAmountVO();
         amountVO.setAmount(currentWeek.getAmount());
-        amountVO.setChainRatio(amountChainRatio.abs() + "%");
+//        amountVO.setChainRatio(amountChainRatio.abs() + "%");
+        amountVO.setChainRatio(amountChainRatio.abs().toString());
         amountVO.setFlag(amountFlag);
         amountVO.setLastAmount(lastWeek.getAmount());
         resultVO.setAmountVO(amountVO);
@@ -2261,7 +2268,8 @@ public class ConsignOrderService {
         /**待分配量*/
         StatisticsWaitingAmountVO waitingAmountVO = new StatisticsWaitingAmountVO();
         waitingAmountVO.setWaitingAmount(currentWeek.getWaitingAmount());
-        waitingAmountVO.setChainRatio(chainRatio.abs() + "%");
+//        waitingAmountVO.setChainRatio(chainRatio.abs() + "%");
+        waitingAmountVO.setChainRatio(chainRatio.abs().toString());
         waitingAmountVO.setFlag(flag);
         waitingAmountVO.setLastWaitingAmount(lastWeek.getWaitingAmount());
         resultVO.setWaitingAmountVO(waitingAmountVO);

+ 3 - 3
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -1039,7 +1039,7 @@
         a.settlement_cycle AS settlementCycle,
         a.price AS price,
         a.price_type AS priceType,
-        a.type AS type,
+        a.type AS orderSource,
         a.unit AS unit,
         a.subcontract_amount AS subcontractAmount,
         a.entrust_amount AS entrustAmount,
@@ -1116,7 +1116,7 @@
         a.settlement_cycle AS settlementCycle,
         a.price AS price,
         a.price_type AS priceType,
-        a.type AS type,
+        a.type AS orderSource,
         a.unit AS unit,
         a.subcontract_amount AS subcontractAmount,
         a.entrust_amount AS entrustAmount,
@@ -1193,7 +1193,7 @@
         settlementCycle,
         price,
         priceType,
-        type,
+        orderSource,
         unit,
         subcontractAmount,
         entrustAmount,

+ 32 - 0
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -671,4 +671,36 @@
             and kwo.status in (7, 8, 9, 10, 12, 13)
         </if>
     </select>
+
+    <select id="selectInvalidWaybillOrderCarListGroupByTruckNo" resultType="com.sckw.transport.model.dto.OrderCarDTO">
+        SELECT
+        a.truck_no AS truckNo,
+        COUNT( a.truck_no ) AS count,
+        a.driver_id AS driverId,
+        a.driver_name AS driverName,
+        a.driver_phone AS driverPhone,
+        a.driver_idcard AS driverCard
+        FROM
+        `kwt_waybill_order` a
+        LEFT JOIN kwt_logistics_order b ON a.l_order_id = b.id
+        AND B.del_flag = 0
+        AND b.del_flag = 0
+        <where>
+            <if test="ids != null and ids.size() > 0">
+                and a.l_order_id in
+                <foreach collection="ids" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="statusList != null and statusList.size() > 0">
+                and a.status not in
+                <foreach collection="statusList" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+        a.truck_no
+        limit #{page},#{pageSize}
+    </select>
 </mapper>