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 @@
+
+
+
+
+
+