diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biReport/support/BiReportSnapshotMapperSupport.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biReport/support/BiReportSnapshotMapperSupport.java index b9d4ad10b..6eab8296d 100644 --- a/mhd-bi/src/main/java/com/mhd/bi/domain/biReport/support/BiReportSnapshotMapperSupport.java +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biReport/support/BiReportSnapshotMapperSupport.java @@ -6,6 +6,7 @@ import com.mhd.bi.interfaces.facadeApi.biReport.vo.CustomerContributionRankVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.WarehouseTransportSituationVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.*; import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.*; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -134,4 +135,35 @@ public final class BiReportSnapshotMapperSupport { .build()) .build(); } + + public static WarehouseOperationZoneVO emptyWarehouseOperationZone() { + return WarehouseOperationZoneVO.builder() + .storageOverview(WhStorageOverviewVO.builder() + .title("").value(0).unit("").subText("").build()) + .operationStats(WhOperationStatsVO.builder() + .title("").value(0).unit("").growthRate("").trend("").build()) + .businessPlanning(WhBusinessPlanningVO.builder() + .generalWarehouse(0).coldStorage(0).foodProcessing(0).automatedStorage(0).build()) + .throughputTrend(Collections.emptyList()) + .areaDistribution(WhAreaDistributionVO.builder() + .utilizationRate("").details(Collections.emptyList()).build()) + .capacityUtilizationTrend(WhCapacityUtilizationTrendVO.builder() + .peakLabel("").data(Collections.emptyList()).build()) + .orderStatistics(WhOrderStatisticsVO.builder() + .annualOrders(0L).quarterlyOrders(0L).monthlyOrders(0L).build()) + .serviceStatistics(WhServiceStatisticsVO.builder() + .clients(0).coverage("").onTimeRate("").rateChange("").build()) + .orderTrend(Collections.emptyList()) + .turnoverRateTrend(WhTurnoverRateTrendVO.builder() + .currentMonth("").annual("").data(Collections.emptyList()).build()) + .serviceCapacity(Collections.emptyList()) + .realTimeAnalysis(WhRealTimeAnalysisVO.builder() + .utilizationRate(WhRealTimeGaugeVO.builder().value("").comparison("").trend("").build()) + .rentalRate(WhRealTimeGaugeVO.builder().value("").comparison("").trend("").build()) + .build()) + .mapPopup(WhMapPopupVO.builder() + .warehouseName("").totalArea("").totalSku(0).todayOrders(0) + .utilizationRate("").rentalRate("").build()) + .build(); + } } diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/repository/mapper/BiSnapshotWriteMapper.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/repository/mapper/BiSnapshotWriteMapper.java index 597fe9e07..36113cafc 100644 --- a/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/repository/mapper/BiSnapshotWriteMapper.java +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/repository/mapper/BiSnapshotWriteMapper.java @@ -14,4 +14,6 @@ public interface BiSnapshotWriteMapper { int insertPlatformSurveillanceSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark); int insertOverallOperationSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark); + + int insertWarehouseOperationZoneSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark); } diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/scheduler/BiReportSnapshotSyncScheduler.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/scheduler/BiReportSnapshotSyncScheduler.java index 9a3301c8a..14d018aef 100644 --- a/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/scheduler/BiReportSnapshotSyncScheduler.java +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/scheduler/BiReportSnapshotSyncScheduler.java @@ -8,7 +8,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** - * 定时将业务快照写入 BI_COMPREHENSIVE_SNAPSHOT / BI_WAREHOUSE_TRANSPORT_SNAPSHOT / BI_PLATFORM_SURVEILLANCE_SNAPSHOT / BI_OVERALL_OPERATION_SNAPSHOT。 + * 定时将业务快照写入 BI_COMPREHENSIVE_SNAPSHOT / BI_WAREHOUSE_TRANSPORT_SNAPSHOT / BI_PLATFORM_SURVEILLANCE_SNAPSHOT / BI_OVERALL_OPERATION_SNAPSHOT / BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT。 *

默认关闭,需在配置中设置 {@code mhd.bi.snapshot-sync.enabled=true}。

*/ @Slf4j diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/service/BiReportSnapshotSyncService.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/service/BiReportSnapshotSyncService.java index e951bd4c5..52ab52f08 100644 --- a/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/service/BiReportSnapshotSyncService.java +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biSnapshotSync/service/BiReportSnapshotSyncService.java @@ -3,10 +3,12 @@ package com.mhd.bi.domain.biSnapshotSync.service; import com.fasterxml.jackson.databind.ObjectMapper; import com.mhd.bi.domain.biSnapshotSync.repository.mapper.BiSnapshotWriteMapper; import com.mhd.bi.domain.biSnapshotSync.support.BiSnapshotWeeklyRandomDataBuilder; +import com.mhd.bi.domain.biWarehouseOperationZone.support.WarehouseOperationZoneDemoData; import com.mhd.bi.interfaces.facadeApi.biReport.vo.ComprehensiveSituationVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.WarehouseTransportSituationVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.OverallOperationSituationVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformSurveillanceVO; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -14,7 +16,7 @@ import org.springframework.stereotype.Service; import java.util.Random; /** - * BI 快照表定时同步(综合态势 / 仓储运输 / 月台监测 / 总体运营态势)。 + * BI 快照表定时同步(综合态势 / 仓储运输 / 月台监测 / 总体运营态势 / 仓储运营专区)。 *

当前(临时):{@code build*} 使用 {@link BiSnapshotWeeklyRandomDataBuilder},每次执行使用新的 {@link Random}, * 故同一天多次手动触发、以及每次定时任务执行,生成的模拟数据均不相同(仍在基准 ±20% 内)。

*

后续改造:在各 {@code build*} 中改为查库/Feign 聚合真实业务并组装 VO。

@@ -37,6 +39,7 @@ public class BiReportSnapshotSyncService { syncWarehouseTransportSnapshot(); syncPlatformSurveillanceSnapshot(); syncOverallOperationSnapshot(); + syncWarehouseOperationZoneSnapshot(); } public void syncComprehensiveSnapshot() { @@ -95,6 +98,20 @@ public class BiReportSnapshotSyncService { } } + public void syncWarehouseOperationZoneSnapshot() { + try { + WarehouseOperationZoneVO vo = buildWarehouseOperationZoneSnapshot(); + String json = objectMapper.writeValueAsString(vo); + int rows = biSnapshotWriteMapper.insertWarehouseOperationZoneSnapshot(json, REMARK_SYNC); + if (rows < 1) { + log.warn("BI 仓储运营专区快照 INSERT 影响行数为 {},请确认 NGWL_TEST_BI.BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT", rows); + } + log.info("BI 仓储运营专区快照已写入, affectedRows={}", rows); + } catch (Exception e) { + log.error("BI 仓储运营专区快照同步失败", e); + } + } + /** * TODO 业务落地:改为查询真实数据组装 VO。临时实现见 {@link BiSnapshotWeeklyRandomDataBuilder#overallOperation(Random)}。 */ @@ -118,4 +135,11 @@ public class BiReportSnapshotSyncService { protected PlatformSurveillanceVO buildPlatformSurveillanceSnapshot() { return BiSnapshotWeeklyRandomDataBuilder.platformSurveillance(new Random()); } + + /** + * TODO 业务落地:改为查询真实数据组装 VO。当前为 {@link WarehouseOperationZoneDemoData} 静态示例。 + */ + protected WarehouseOperationZoneVO buildWarehouseOperationZoneSnapshot() { + return WarehouseOperationZoneDemoData.build(); + } } diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseOperationZone/repository/mapper/BiWarehouseOperationZoneReportMapper.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseOperationZone/repository/mapper/BiWarehouseOperationZoneReportMapper.java new file mode 100644 index 000000000..24b8a0f02 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseOperationZone/repository/mapper/BiWarehouseOperationZoneReportMapper.java @@ -0,0 +1,20 @@ +package com.mhd.bi.domain.biWarehouseOperationZone.repository.mapper; + +import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO; + +/** + * 仓储运营专区:取 NGWL_TEST_BI.BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT 最新 PAYLOAD_JSON 并解析。 + */ +public interface BiWarehouseOperationZoneReportMapper { + + String selectLatestPayloadJson(); + + default WarehouseOperationZoneVO loadLatestWarehouseOperationZone() { + return BiReportSnapshotMapperSupport.parsePayload( + selectLatestPayloadJson(), + WarehouseOperationZoneVO.class, + BiReportSnapshotMapperSupport::emptyWarehouseOperationZone, + "仓储运营专区"); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseOperationZone/service/BiWarehouseOperationZoneReportService.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseOperationZone/service/BiWarehouseOperationZoneReportService.java new file mode 100644 index 000000000..eebed5fd4 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseOperationZone/service/BiWarehouseOperationZoneReportService.java @@ -0,0 +1,21 @@ +package com.mhd.bi.domain.biWarehouseOperationZone.service; + +import com.mhd.bi.domain.biWarehouseOperationZone.repository.mapper.BiWarehouseOperationZoneReportMapper; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 南光物流业务经营分析 · 仓储运营专区 + */ +@Service +public class BiWarehouseOperationZoneReportService { + + @Resource + private BiWarehouseOperationZoneReportMapper biWarehouseOperationZoneReportMapper; + + public WarehouseOperationZoneVO loadLatestWarehouseOperationZone() { + return biWarehouseOperationZoneReportMapper.loadLatestWarehouseOperationZone(); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseOperationZone/support/WarehouseOperationZoneDemoData.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseOperationZone/support/WarehouseOperationZoneDemoData.java new file mode 100644 index 000000000..4861cb9b0 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseOperationZone/support/WarehouseOperationZoneDemoData.java @@ -0,0 +1,139 @@ +package com.mhd.bi.domain.biWarehouseOperationZone.support; + +import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.*; + +import java.util.Arrays; +import java.util.List; + +/** + * 仓储运营专区快照演示数据(对齐大屏示例 JSON;后续可改为真实聚合)。 + */ +public final class WarehouseOperationZoneDemoData { + + private WarehouseOperationZoneDemoData() { + } + + public static WarehouseOperationZoneVO build() { + List throughputTrend = Arrays.asList( + WhThroughputMonthItemVO.builder().month("11月").value(10).build(), + WhThroughputMonthItemVO.builder().month("12月").value(14).build(), + WhThroughputMonthItemVO.builder().month("1月").value(22).build(), + WhThroughputMonthItemVO.builder().month("2月").value(21).build(), + WhThroughputMonthItemVO.builder().month("3月").value(13).build(), + WhThroughputMonthItemVO.builder().month("4月").value(16).build(), + WhThroughputMonthItemVO.builder().month("5月").value(8).build() + ); + + List areaDetails = Arrays.asList( + WhAreaDistributionDetailVO.builder().name("普通仓出租面积").value(9400).unit("m²").build(), + WhAreaDistributionDetailVO.builder().name("自动化立库出租面积").value(9400).unit("m²").build(), + WhAreaDistributionDetailVO.builder().name("闲置面积").value(9400).unit("m²").build(), + WhAreaDistributionDetailVO.builder().name("冷冻仓出租面积").value(9400).unit("m²").build() + ); + + List capTrendData = Arrays.asList( + WhMonthRatePointVO.builder().month("1月").rate(20).build(), + WhMonthRatePointVO.builder().month("2月").rate(30).build(), + WhMonthRatePointVO.builder().month("3月").rate(55).build(), + WhMonthRatePointVO.builder().month("4月").rate(40).build(), + WhMonthRatePointVO.builder().month("5月").rate(45).build(), + WhMonthRatePointVO.builder().month("6月").rate(60).build(), + WhMonthRatePointVO.builder().month("7月").rate(50).build() + ); + + List orderTrend = Arrays.asList( + WhMonthRatePointVO.builder().month("1月").rate(100).build(), + WhMonthRatePointVO.builder().month("2月").rate(90).build(), + WhMonthRatePointVO.builder().month("3月").rate(75).build(), + WhMonthRatePointVO.builder().month("4月").rate(70).build(), + WhMonthRatePointVO.builder().month("5月").rate(95).build(), + WhMonthRatePointVO.builder().month("6月").rate(85).build() + ); + + List turnoverData = Arrays.asList( + WhMonthRatePointVO.builder().month("11月").rate(10).build(), + WhMonthRatePointVO.builder().month("12月").rate(15).build(), + WhMonthRatePointVO.builder().month("1月").rate(22).build(), + WhMonthRatePointVO.builder().month("2月").rate(20).build(), + WhMonthRatePointVO.builder().month("3月").rate(12).build(), + WhMonthRatePointVO.builder().month("4月").rate(16).build() + ); + + List serviceCapacity = Arrays.asList( + WhServiceCapacityRowVO.builder().rank(1).name("君华仓").totalArea("1.2万m²").processed("2,400单").throughput("2.2万吨").build(), + WhServiceCapacityRowVO.builder().rank(2).name("通宇仓").totalArea("1.2万m²").processed("1,800单").throughput("1.1万吨").build(), + WhServiceCapacityRowVO.builder().rank(3).name("横琴仓").totalArea("1.2万m²").processed("1,200单").throughput("1.5万吨").build(), + WhServiceCapacityRowVO.builder().rank(4).name("新南仓").totalArea("1.2万m²").processed("800单").throughput("2.1万吨").build(), + WhServiceCapacityRowVO.builder().rank(5).name("谷丰仓").totalArea("1.2万m²").processed("567单").throughput("1.8万吨").build() + ); + + return WarehouseOperationZoneVO.builder() + .storageOverview(WhStorageOverviewVO.builder() + .title("仓储面积") + .value(10) + .unit("万m²") + .subText("覆盖仓库数8个") + .build()) + .operationStats(WhOperationStatsVO.builder() + .title("年吞吐量") + .value(26) + .unit("万吨") + .growthRate("8.5%") + .trend("up") + .build()) + .businessPlanning(WhBusinessPlanningVO.builder() + .generalWarehouse(43000) + .coldStorage(15000) + .foodProcessing(11000) + .automatedStorage(5200) + .build()) + .throughputTrend(throughputTrend) + .areaDistribution(WhAreaDistributionVO.builder() + .utilizationRate("85%") + .details(areaDetails) + .build()) + .capacityUtilizationTrend(WhCapacityUtilizationTrendVO.builder() + .peakLabel("60%") + .data(capTrendData) + .build()) + .orderStatistics(WhOrderStatisticsVO.builder() + .annualOrders(525440L) + .quarterlyOrders(225120L) + .monthlyOrders(23560L) + .build()) + .serviceStatistics(WhServiceStatisticsVO.builder() + .clients(582) + .coverage("覆盖港珠澳") + .onTimeRate("98.2%") + .rateChange("0.4%") + .build()) + .orderTrend(orderTrend) + .turnoverRateTrend(WhTurnoverRateTrendVO.builder() + .currentMonth("3次") + .annual("4次") + .data(turnoverData) + .build()) + .serviceCapacity(serviceCapacity) + .realTimeAnalysis(WhRealTimeAnalysisVO.builder() + .utilizationRate(WhRealTimeGaugeVO.builder() + .value("50.8%") + .comparison("3.4%") + .trend("up") + .build()) + .rentalRate(WhRealTimeGaugeVO.builder() + .value("70.8%") + .comparison("3.4%") + .trend("up") + .build()) + .build()) + .mapPopup(WhMapPopupVO.builder() + .warehouseName("通宇保税仓") + .totalArea("2000m2") + .totalSku(668) + .todayOrders(237) + .utilizationRate("85%") + .rentalRate("37.1%") + .build()) + .build(); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java index 614feaf2f..5ac025e9c 100644 --- a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java @@ -4,12 +4,14 @@ import com.mhd.bi.domain.biSnapshotSync.service.BiReportSnapshotSyncService; import com.mhd.bi.domain.biComprehensive.service.BiComprehensiveReportService; import com.mhd.bi.domain.biPlatformSurveillance.service.BiPlatformSurveillanceReportService; import com.mhd.bi.domain.biOverallOperation.service.BiOverallOperationReportService; +import com.mhd.bi.domain.biWarehouseOperationZone.service.BiWarehouseOperationZoneReportService; import com.mhd.bi.domain.biWarehouseTransport.service.BiWarehouseTransportReportService; import com.mhd.bi.interfaces.facadeApi.biReport.dto.BiApiResult; import com.mhd.bi.interfaces.facadeApi.biReport.vo.ComprehensiveSituationVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.WarehouseTransportSituationVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.OverallOperationSituationVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformSurveillanceVO; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO; import com.mhd.common.core.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -43,11 +45,14 @@ public class BiReportApi extends BaseController { @Autowired private BiOverallOperationReportService biOverallOperationReportService; + @Autowired + private BiWarehouseOperationZoneReportService biWarehouseOperationZoneReportService; + @Autowired private BiReportSnapshotSyncService biReportSnapshotSyncService; - @ApiOperation(value = "手动触发快照同步", notes = "立即写入各 BI 快照表(综合、仓储运输、月台监测、总体运营);须带 X-BI-Access-Token") + @ApiOperation(value = "手动触发快照同步", notes = "立即写入各 BI 快照表(综合、仓储运输、月台监测、总体运营、仓储运营专区);须带 X-BI-Access-Token") @PostMapping("/snapshotSync/run") public BiApiResult runSnapshotSyncOnce() { biReportSnapshotSyncService.syncAllSnapshots(); @@ -93,4 +98,14 @@ public class BiReportApi extends BaseController { OverallOperationSituationVO data = biOverallOperationReportService.loadLatestOverallOperation(); return BiApiResult.ok(data); } + + /** + * 仓储运营专区(大屏「仓储运营专区」Tab) + */ + @ApiOperation(value = "仓储运营专区查询", notes = "返回 DEL_FLAG=1 且 CREATE_TIME 最新的一条整包 JSON 解析结果") + @GetMapping("/warehouseOperationZone") + public BiApiResult warehouseOperationZone() { + WarehouseOperationZoneVO data = biWarehouseOperationZoneReportService.loadLatestWarehouseOperationZone(); + return BiApiResult.ok(data); + } } diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WarehouseOperationZoneVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WarehouseOperationZoneVO.java new file mode 100644 index 000000000..df93d65ed --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WarehouseOperationZoneVO.java @@ -0,0 +1,74 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 南光物流业务经营分析 · 仓储运营专区(整包 data 与快照 PAYLOAD_JSON 一致) + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区") +public class WarehouseOperationZoneVO { + + @JsonProperty("storage_overview") + @ApiModelProperty("仓储面积") + private WhStorageOverviewVO storageOverview; + + @JsonProperty("operation_stats") + @ApiModelProperty("运营统计") + private WhOperationStatsVO operationStats; + + @JsonProperty("business_planning") + @ApiModelProperty("业务规划") + private WhBusinessPlanningVO businessPlanning; + + @JsonProperty("throughput_trend") + @ApiModelProperty("吞吐量统计(柱状图)") + private List throughputTrend; + + @JsonProperty("area_distribution") + @ApiModelProperty("仓库面积统计(环形图)") + private WhAreaDistributionVO areaDistribution; + + @JsonProperty("capacity_utilization_trend") + @ApiModelProperty("库容利用趋势") + private WhCapacityUtilizationTrendVO capacityUtilizationTrend; + + @JsonProperty("order_statistics") + @ApiModelProperty("仓库订单统计") + private WhOrderStatisticsVO orderStatistics; + + @JsonProperty("service_statistics") + @ApiModelProperty("服务统计") + private WhServiceStatisticsVO serviceStatistics; + + @JsonProperty("order_trend") + @ApiModelProperty("仓库订单趋势") + private List orderTrend; + + @JsonProperty("turnover_rate_trend") + @ApiModelProperty("库存周转率趋势") + private WhTurnoverRateTrendVO turnoverRateTrend; + + @JsonProperty("service_capacity") + @ApiModelProperty("服务能力表格") + private List serviceCapacity; + + @JsonProperty("real_time_analysis") + @ApiModelProperty("实时分析") + private WhRealTimeAnalysisVO realTimeAnalysis; + + @JsonProperty("map_popup") + @ApiModelProperty("地图弹窗示例数据") + private WhMapPopupVO mapPopup; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhAreaDistributionDetailVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhAreaDistributionDetailVO.java new file mode 100644 index 000000000..8fd012305 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhAreaDistributionDetailVO.java @@ -0,0 +1,25 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-面积分布明细") +public class WhAreaDistributionDetailVO { + + @ApiModelProperty("分类名称") + private String name; + + @ApiModelProperty("数值") + private Integer value; + + @ApiModelProperty("单位") + private String unit; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhAreaDistributionVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhAreaDistributionVO.java new file mode 100644 index 000000000..6b18f0cc7 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhAreaDistributionVO.java @@ -0,0 +1,26 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-仓库面积统计(环形图)") +public class WhAreaDistributionVO { + + @JsonProperty("utilization_rate") + @ApiModelProperty("总利用率展示") + private String utilizationRate; + + @ApiModelProperty("分项") + private List details; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhBusinessPlanningVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhBusinessPlanningVO.java new file mode 100644 index 000000000..538496b97 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhBusinessPlanningVO.java @@ -0,0 +1,33 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-业务规划(面积 m²)") +public class WhBusinessPlanningVO { + + @JsonProperty("general_warehouse") + @ApiModelProperty("普通仓规划") + private Integer generalWarehouse; + + @JsonProperty("cold_storage") + @ApiModelProperty("冷冻仓规划") + private Integer coldStorage; + + @JsonProperty("food_processing") + @ApiModelProperty("食品加工区规划") + private Integer foodProcessing; + + @JsonProperty("automated_storage") + @ApiModelProperty("自动化立库规划") + private Integer automatedStorage; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhCapacityUtilizationTrendVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhCapacityUtilizationTrendVO.java new file mode 100644 index 000000000..c44b17073 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhCapacityUtilizationTrendVO.java @@ -0,0 +1,26 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-库容利用趋势") +public class WhCapacityUtilizationTrendVO { + + @JsonProperty("peak_label") + @ApiModelProperty("峰值标注") + private String peakLabel; + + @ApiModelProperty("按月序列") + private List data; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhMapPopupVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhMapPopupVO.java new file mode 100644 index 000000000..7020f43ac --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhMapPopupVO.java @@ -0,0 +1,41 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-地图弹窗") +public class WhMapPopupVO { + + @JsonProperty("warehouse_name") + @ApiModelProperty("仓库名称") + private String warehouseName; + + @JsonProperty("total_area") + @ApiModelProperty("总面积") + private String totalArea; + + @JsonProperty("total_sku") + @ApiModelProperty("SKU 数") + private Integer totalSku; + + @JsonProperty("today_orders") + @ApiModelProperty("当日订单") + private Integer todayOrders; + + @JsonProperty("utilization_rate") + @ApiModelProperty("库容利用率") + private String utilizationRate; + + @JsonProperty("rental_rate") + @ApiModelProperty("仓库出租率") + private String rentalRate; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhMonthRatePointVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhMonthRatePointVO.java new file mode 100644 index 000000000..597715058 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhMonthRatePointVO.java @@ -0,0 +1,22 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-月份-比率点") +public class WhMonthRatePointVO { + + @ApiModelProperty("月份") + private String month; + + @ApiModelProperty("比率或趋势值") + private Integer rate; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOperationStatsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOperationStatsVO.java new file mode 100644 index 000000000..e40a76c96 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOperationStatsVO.java @@ -0,0 +1,33 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-运营统计") +public class WhOperationStatsVO { + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("数值") + private Integer value; + + @ApiModelProperty("单位") + private String unit; + + @JsonProperty("growth_rate") + @ApiModelProperty("增幅文案") + private String growthRate; + + @ApiModelProperty("趋势:up / down") + private String trend; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOrderStatisticsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOrderStatisticsVO.java new file mode 100644 index 000000000..dae5f27ac --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOrderStatisticsVO.java @@ -0,0 +1,29 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-仓库订单统计") +public class WhOrderStatisticsVO { + + @JsonProperty("annual_orders") + @ApiModelProperty("本年度订单") + private Long annualOrders; + + @JsonProperty("quarterly_orders") + @ApiModelProperty("本季度订单") + private Long quarterlyOrders; + + @JsonProperty("monthly_orders") + @ApiModelProperty("本月度订单") + private Long monthlyOrders; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhRealTimeAnalysisVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhRealTimeAnalysisVO.java new file mode 100644 index 000000000..df7cefde8 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhRealTimeAnalysisVO.java @@ -0,0 +1,25 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-实时分析") +public class WhRealTimeAnalysisVO { + + @JsonProperty("utilization_rate") + @ApiModelProperty("库容利用率") + private WhRealTimeGaugeVO utilizationRate; + + @JsonProperty("rental_rate") + @ApiModelProperty("仓库出租率") + private WhRealTimeGaugeVO rentalRate; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhRealTimeGaugeVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhRealTimeGaugeVO.java new file mode 100644 index 000000000..dcd1b3e8c --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhRealTimeGaugeVO.java @@ -0,0 +1,25 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-实时分析仪表盘单项") +public class WhRealTimeGaugeVO { + + @ApiModelProperty("当前值") + private String value; + + @ApiModelProperty("同比变化") + private String comparison; + + @ApiModelProperty("趋势:up / down") + private String trend; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhServiceCapacityRowVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhServiceCapacityRowVO.java new file mode 100644 index 000000000..5cdaafb2a --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhServiceCapacityRowVO.java @@ -0,0 +1,33 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-服务能力表格行") +public class WhServiceCapacityRowVO { + + @ApiModelProperty("序号") + private Integer rank; + + @ApiModelProperty("仓库名称") + private String name; + + @JsonProperty("total_area") + @ApiModelProperty("总面积展示") + private String totalArea; + + @ApiModelProperty("仓储单量展示") + private String processed; + + @ApiModelProperty("吞吐量展示") + private String throughput; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhServiceStatisticsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhServiceStatisticsVO.java new file mode 100644 index 000000000..12e4955f9 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhServiceStatisticsVO.java @@ -0,0 +1,31 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-服务统计") +public class WhServiceStatisticsVO { + + @ApiModelProperty("合作客户数") + private Integer clients; + + @ApiModelProperty("覆盖范围文案") + private String coverage; + + @JsonProperty("on_time_rate") + @ApiModelProperty("订单准时率") + private String onTimeRate; + + @JsonProperty("rate_change") + @ApiModelProperty("准时率变化") + private String rateChange; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhStorageOverviewVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhStorageOverviewVO.java new file mode 100644 index 000000000..5e6b79ee7 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhStorageOverviewVO.java @@ -0,0 +1,30 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-仓储面积") +public class WhStorageOverviewVO { + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("数值") + private Integer value; + + @ApiModelProperty("单位") + private String unit; + + @JsonProperty("sub_text") + @ApiModelProperty("副文案") + private String subText; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhThroughputMonthItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhThroughputMonthItemVO.java new file mode 100644 index 000000000..4b9b363bc --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhThroughputMonthItemVO.java @@ -0,0 +1,22 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-吞吐量月度点") +public class WhThroughputMonthItemVO { + + @ApiModelProperty("月份标签") + private String month; + + @ApiModelProperty("数值") + private Integer value; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhTurnoverRateTrendVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhTurnoverRateTrendVO.java new file mode 100644 index 000000000..9c2084283 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhTurnoverRateTrendVO.java @@ -0,0 +1,29 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-库存周转率趋势") +public class WhTurnoverRateTrendVO { + + @JsonProperty("current_month") + @ApiModelProperty("本周周转率展示文案") + private String currentMonth; + + @ApiModelProperty("本年度周转率展示文案") + private String annual; + + @ApiModelProperty("按月序列") + private List data; +} diff --git a/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml b/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml index 64d3e7820..c377faa07 100644 --- a/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml +++ b/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml @@ -22,4 +22,9 @@ insert into NGWL_TEST_BI.BI_OVERALL_OPERATION_SNAPSHOT (PAYLOAD_JSON, CREATE_TIME, UPDATE_TIME, DEL_FLAG, REMARK) values (#{payloadJson}, SYSDATE, SYSDATE, 1, #{remark}) + + + insert into NGWL_TEST_BI.BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT (PAYLOAD_JSON, CREATE_TIME, UPDATE_TIME, DEL_FLAG, REMARK) + values (#{payloadJson}, SYSDATE, SYSDATE, 1, #{remark}) + diff --git a/mhd-bi/src/main/resources/mapper/biWarehouseOperationZone/BiWarehouseOperationZoneReportMapper.xml b/mhd-bi/src/main/resources/mapper/biWarehouseOperationZone/BiWarehouseOperationZoneReportMapper.xml new file mode 100644 index 000000000..8e20f8616 --- /dev/null +++ b/mhd-bi/src/main/resources/mapper/biWarehouseOperationZone/BiWarehouseOperationZoneReportMapper.xml @@ -0,0 +1,13 @@ + + + + + +