chenxiaofei 1 місяць тому
батько
коміт
384e06be35

+ 12 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java

@@ -224,6 +224,18 @@ public class KwfTruckController {
         return HttpResult.ok(truckService.truckStatistics());
     }
 
+    /**
+     * 统计车辆业务状态数量(全部、空闲、任务中)
+     * @return 统计结果
+     * @author system
+     * @date 2025/12/08
+     */
+    @GetMapping("/truckBusinessStatusStatistics")
+    @Operation(summary = "车辆业务状态统计", description = "统计全部、空闲、任务中的车辆数量")
+    public BaseResult<TruckBusinessStatusStatisticsVo> truckBusinessStatusStatistics() {
+        return BaseResult.success(truckService.truckBusinessStatusStatistics());
+    }
+
     /**
      * @param params {truckNo 車牌號}
      * @desc 车辆查询(业务关联+归属车辆)

+ 44 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/TruckBusinessStatusStatisticsVo.java

@@ -0,0 +1,44 @@
+package com.sckw.fleet.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 车辆业务状态统计返回数据
+ * @author system
+ */
+@Data
+@Schema(description = "车辆业务状态统计")
+public class TruckBusinessStatusStatisticsVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 全部车辆数量
+     */
+    @Schema(description = "全部车辆数量")
+    private Long totalCount;
+
+    /**
+     * 空闲车辆数量(business_status = 0)
+     */
+    @Schema(description = "空闲车辆数量")
+    private Long idleCount;
+
+    /**
+     * 任务中车辆数量(business_status = 1)
+     */
+    @Schema(description = "任务中车辆数量")
+    private Long busyCount;
+
+    public static TruckBusinessStatusStatisticsVo of(Long totalCount, Long idleCount, Long busyCount) {
+        TruckBusinessStatusStatisticsVo vo = new TruckBusinessStatusStatisticsVo();
+        vo.setTotalCount(totalCount);
+        vo.setIdleCount(idleCount);
+        vo.setBusyCount(busyCount);
+        return vo;
+    }
+}

+ 25 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfTruckRepository.java

@@ -125,4 +125,29 @@ public class KwfTruckRepository extends ServiceImpl<KwfTruckMapper, KwfTruck> {
                 .eq(KwfTruck::getEntId, entId)
                 .orderByDesc(BaseModel::getCreateTime));
     }
+
+    /**
+     * 统计车辆总数(根据企业ID)
+     * @param entId 企业ID
+     * @return 车辆总数
+     */
+    public List<KwfTruck> countByEntId(Long entId) {
+        return list(Wrappers.<KwfTruck>lambdaQuery()
+                .select(BaseModel::getId,BaseModel::getStatus)
+                .eq(BaseModel::getDelFlag, 0)
+                .eq(Objects.nonNull(entId), KwfTruck::getEntId, entId));
+    }
+
+    /**
+     * 统计指定业务状态的车辆数量(根据企业ID)
+     * @param entId 企业ID
+     * @param businessStatus 业务状态(0空闲、1任务)
+     * @return 车辆数量
+     */
+    public Long countByEntIdAndBusinessStatus(Long entId, Integer businessStatus) {
+        return count(Wrappers.<KwfTruck>lambdaQuery()
+                .eq(BaseModel::getDelFlag, 0)
+                .eq(Objects.nonNull(entId), KwfTruck::getEntId, entId)
+                .eq(Objects.nonNull(businessStatus), KwfTruck::getBusinessStatus, businessStatus));
+    }
 }

+ 25 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java

@@ -832,6 +832,31 @@ public class KwfTruckService {
         return truckDao.truckStatistics(LoginUserHolder.getEntId());
     }
 
+    /**
+     * 统计车辆业务状态数量(全部、空闲、任务中)
+     * @return 统计结果
+     * @author system
+     * @date 2025/12/08
+     */
+    public TruckBusinessStatusStatisticsVo truckBusinessStatusStatistics() {
+        log.info("统计车辆业务状态数量(全部、空闲、任务中)");
+        Long entId = LoginUserHolder.getEntId();
+        // 统计全部车辆数量
+        List<KwfTruck> trucks = kwfTruckRepository.countByEntId(entId);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty( trucks)){
+            return TruckBusinessStatusStatisticsVo.of(0L, 0L, 0L);
+        }
+        // 统计空闲车辆数量(business_status = 0)
+        Long idleCount = trucks.stream()
+                .filter(x -> x.getBusinessStatus() == 0)
+                .collect(Collectors.counting());
+        // 统计任务中车辆数量(business_status = 1)
+        Long busyCount = trucks.stream()
+                .filter(x -> x.getBusinessStatus() == 1)
+                .collect(Collectors.counting());
+        return TruckBusinessStatusStatisticsVo.of(Long.parseLong(String.valueOf(trucks.size())), idleCount, busyCount);
+    }
+
     /**
      * @param params {truckNo 車牌號}
      * @desc 车辆查询(业务关联 + 归属车辆)