ソースを参照

feat: 实现车辆资源地图车辆地图统计接口

weijianghai 1 年間 前
コミット
189df0f028

+ 8 - 0
src/main/java/com/nokia/financeapi/controller/car/CarResourceMapController.java

@@ -1,8 +1,10 @@
 package com.nokia.financeapi.controller.car;
 
 import com.nokia.financeapi.common.R;
+import com.nokia.financeapi.pojo.dto.GetCarMapStatDto;
 import com.nokia.financeapi.pojo.dto.GetCarNoticeDto;
 import com.nokia.financeapi.pojo.dto.GetCarTypeStatDto;
+import com.nokia.financeapi.pojo.vo.GetCarMapStatVo;
 import com.nokia.financeapi.pojo.vo.GetCarNoticeVo;
 import com.nokia.financeapi.pojo.vo.GetCarTypeStatVo;
 import com.nokia.financeapi.service.car.CarResourceMapService;
@@ -37,4 +39,10 @@ public class CarResourceMapController {
     public R<GetCarTypeStatVo> getCarTypeStat(@Valid @RequestBody GetCarTypeStatDto dto) {
         return carResourceMapService.getCarTypeStat(dto);
     }
+
+    @Operation(summary = "获取车辆地图统计")
+    @PostMapping("/getCarMapStat")
+    public R<List<GetCarMapStatVo>> getCarMapStat(@Valid @RequestBody GetCarMapStatDto dto) {
+        return carResourceMapService.getCarMapStat(dto);
+    }
 }

+ 113 - 0
src/main/java/com/nokia/financeapi/dao/car/CarResourceMapMapper.java

@@ -1,7 +1,9 @@
 package com.nokia.financeapi.dao.car;
 
+import com.nokia.financeapi.pojo.dto.GetCarMapStatDto;
 import com.nokia.financeapi.pojo.dto.GetCarNoticeDto;
 import com.nokia.financeapi.pojo.dto.GetCarTypeStatDto;
+import com.nokia.financeapi.pojo.vo.GetCarMapStatVo;
 import com.nokia.financeapi.pojo.vo.GetCarNoticeVo;
 import com.nokia.financeapi.pojo.vo.GetCarTypeStatVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -47,4 +49,115 @@ where
 </script>
 """)
     GetCarTypeStatVo getCarTypeStat(@Param("dto") GetCarTypeStatDto dto);
+
+    /**
+     * 获取各个地市的车辆数量和低效数量统计
+     */
+    @Select("""
+with
+t101 as (
+select
+    city,
+    count(1) as total
+from
+    car.car_base_data_month
+where
+    nian_yue = (
+    select
+        max(nian_yue)
+    from
+        car.car_base_data_month)
+    and city is not null
+    and city != ''
+group by
+    city
+),
+t102 as (
+select
+    city,
+    count(1) as inefficiency_count
+from
+    car.car_di_xiao_month
+where
+    nian_yue = (
+    select
+        max(nian_yue)
+    from
+        car.car_di_xiao_month)
+    and city is not null
+    and city != ''
+group by
+    city
+),
+t103 as (
+select
+t101.*,
+t102.inefficiency_count
+from t101 left join t102 on t101.city = t102.city
+),
+t104 as (
+select
+city as area_name,
+total,
+coalesce(inefficiency_count, 0) as inefficiency_count
+from t103
+)
+select * from t104 order by area_name
+""")
+    List<GetCarMapStatVo> getCityCarMapStat();
+
+    @Select("""
+with
+t101 as (
+select
+    district,
+    count(1) as total
+from
+    car.car_base_data_month
+where
+    nian_yue = (
+    select
+        max(nian_yue)
+    from
+        car.car_base_data_month)
+    and district is not null
+    and district != ''
+    and city = #{dto.city}
+group by
+    district
+),
+t102 as (
+select
+    district,
+    count(1) as inefficiency_count
+from
+    car.car_di_xiao_month
+where
+    nian_yue = (
+    select
+        max(nian_yue)
+    from
+        car.car_di_xiao_month)
+    and district is not null
+    and district != ''
+    and city = #{dto.city}
+group by
+    district
+),
+t103 as (
+select
+t101.*,
+t102.inefficiency_count
+from t101 left join t102 on t101.district = t102.district
+),
+t104 as (
+select
+district as area_name,
+total,
+coalesce(inefficiency_count, 0) as inefficiency_count
+from t103
+)
+select * from t104 order by area_name
+""")
+    List<GetCarMapStatVo> getDistrictCarMapStat(@Param("dto") GetCarMapStatDto dto);
 }

+ 10 - 0
src/main/java/com/nokia/financeapi/pojo/dto/GetCarMapStatDto.java

@@ -0,0 +1,10 @@
+package com.nokia.financeapi.pojo.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class GetCarMapStatDto {
+    @Schema(description = "地市,不传默认全省", example = "石家庄")
+    private String city;
+}

+ 14 - 0
src/main/java/com/nokia/financeapi/pojo/vo/GetCarMapStatVo.java

@@ -0,0 +1,14 @@
+package com.nokia.financeapi.pojo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class GetCarMapStatVo {
+    @Schema(description = "地区名称", example = "石家庄")
+    private String areaName;
+    @Schema(description = "车辆数量", example = "11")
+    private Integer total;
+    @Schema(description = "低效数量", example = "22")
+    private Integer inefficiencyCount;
+}

+ 2 - 4
src/main/java/com/nokia/financeapi/pojo/vo/GetLandBuildingStatVo.java

@@ -3,14 +3,12 @@ package com.nokia.financeapi.pojo.vo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import java.math.BigDecimal;
-
 @Data
 public class GetLandBuildingStatVo {
     @Schema(description = "地区名称", example = "石家庄")
     private String areaName;
     @Schema(description = "建筑数量", example = "11")
-    private BigDecimal buildingCount;
+    private Integer buildingCount;
     @Schema(description = "土地数量", example = "22")
-    private BigDecimal landCount;
+    private Integer landCount;
 }

+ 11 - 0
src/main/java/com/nokia/financeapi/service/car/CarResourceMapService.java

@@ -2,8 +2,10 @@ package com.nokia.financeapi.service.car;
 
 import com.nokia.financeapi.common.R;
 import com.nokia.financeapi.dao.car.CarResourceMapMapper;
+import com.nokia.financeapi.pojo.dto.GetCarMapStatDto;
 import com.nokia.financeapi.pojo.dto.GetCarNoticeDto;
 import com.nokia.financeapi.pojo.dto.GetCarTypeStatDto;
+import com.nokia.financeapi.pojo.vo.GetCarMapStatVo;
 import com.nokia.financeapi.pojo.vo.GetCarNoticeVo;
 import com.nokia.financeapi.pojo.vo.GetCarTypeStatVo;
 import org.springframework.stereotype.Service;
@@ -31,4 +33,13 @@ public class CarResourceMapService {
         GetCarTypeStatVo vo = carResourceMapMapper.getCarTypeStat(dto);
         return R.ok(vo);
     }
+
+    public R<List<GetCarMapStatVo>> getCarMapStat(GetCarMapStatDto dto) {
+        if (StringUtils.hasText(dto.getCity())) {
+            List<GetCarMapStatVo> vo = carResourceMapMapper.getDistrictCarMapStat(dto);
+            return R.ok(vo);
+        }
+        List<GetCarMapStatVo> vo = carResourceMapMapper.getCityCarMapStat();
+        return R.ok(vo);
+    }
 }