diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biHkMacaoServiceZone/repository/mapper/BiHkMacaoServiceZoneReportMapper.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biHkMacaoServiceZone/repository/mapper/BiHkMacaoServiceZoneReportMapper.java new file mode 100644 index 000000000..4f8f78454 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biHkMacaoServiceZone/repository/mapper/BiHkMacaoServiceZoneReportMapper.java @@ -0,0 +1,20 @@ +package com.mhd.bi.domain.biHkMacaoServiceZone.repository.mapper; + +import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone.HkMacaoServiceZoneVO; + +/** + * 港澳服务专区:取 NGWL_TEST_BI.BI_HK_MACAO_SERVICE_ZONE_SNAPSHOT 最新 PAYLOAD_JSON 并解析。 + */ +public interface BiHkMacaoServiceZoneReportMapper { + + String selectLatestPayloadJson(); + + default HkMacaoServiceZoneVO loadLatestHkMacaoServiceZone() { + return BiReportSnapshotMapperSupport.parsePayload( + selectLatestPayloadJson(), + HkMacaoServiceZoneVO.class, + BiReportSnapshotMapperSupport::emptyHkMacaoServiceZone, + "港澳服务专区"); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biHkMacaoServiceZone/service/BiHkMacaoServiceZoneReportService.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biHkMacaoServiceZone/service/BiHkMacaoServiceZoneReportService.java new file mode 100644 index 000000000..4f6f8d215 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biHkMacaoServiceZone/service/BiHkMacaoServiceZoneReportService.java @@ -0,0 +1,21 @@ +package com.mhd.bi.domain.biHkMacaoServiceZone.service; + +import com.mhd.bi.domain.biHkMacaoServiceZone.repository.mapper.BiHkMacaoServiceZoneReportMapper; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone.HkMacaoServiceZoneVO; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 港澳服务专区 + */ +@Service +public class BiHkMacaoServiceZoneReportService { + + @Resource + private BiHkMacaoServiceZoneReportMapper biHkMacaoServiceZoneReportMapper; + + public HkMacaoServiceZoneVO loadLatestHkMacaoServiceZone() { + return biHkMacaoServiceZoneReportMapper.loadLatestHkMacaoServiceZone(); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biHkMacaoServiceZone/support/HkMacaoServiceZoneDemoData.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biHkMacaoServiceZone/support/HkMacaoServiceZoneDemoData.java new file mode 100644 index 000000000..aa1a580f5 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biHkMacaoServiceZone/support/HkMacaoServiceZoneDemoData.java @@ -0,0 +1,150 @@ +package com.mhd.bi.domain.biHkMacaoServiceZone.support; + +import com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone.*; + +import java.util.Arrays; +import java.util.List; + +/** + * 港澳服务专区快照演示数据(对齐大屏示例 JSON;后续可改为真实聚合)。 + */ +public final class HkMacaoServiceZoneDemoData { + + private HkMacaoServiceZoneDemoData() { + } + + public static HkMacaoServiceZoneVO build() { + HkOrderStatsVO orderStats = HkOrderStatsVO.builder() + .totalOrders(4361L) + .unit("单") + .momGrowth("+12.5%") + .trend("up") + .build(); + + List goodsDetails = Arrays.asList( + HkPercentageDetailVO.builder().name("广东").percentage("25%").build(), + HkPercentageDetailVO.builder().name("澳门").percentage("25%").build(), + HkPercentageDetailVO.builder().name("广西").percentage("50%").build() + ); + + List crossBorderDetails = Arrays.asList( + HkPercentageDetailVO.builder().name("出口订单").percentage("25.8%").build(), + HkPercentageDetailVO.builder().name("进口订单").percentage("16.8%").build() + ); + + List warehouseOrderTrend = Arrays.asList( + HkOrderTrendMonthVO.builder().month("1月").orderRatio(150).orderCount(400).build(), + HkOrderTrendMonthVO.builder().month("2月").orderRatio(200).orderCount(250).build(), + HkOrderTrendMonthVO.builder().month("3月").orderRatio(250).orderCount(300).build(), + HkOrderTrendMonthVO.builder().month("4月").orderRatio(200).orderCount(280).build(), + HkOrderTrendMonthVO.builder().month("5月").orderRatio(280).orderCount(320).build(), + HkOrderTrendMonthVO.builder().month("6月").orderRatio(220).orderCount(310).build(), + HkOrderTrendMonthVO.builder().month("7月").orderRatio(260).orderCount(330).build() + ); + + List turnoverData = Arrays.asList( + HkMonthRatePointVO.builder().month("11月").rate(10).build(), + HkMonthRatePointVO.builder().month("12月").rate(15).build(), + HkMonthRatePointVO.builder().month("1月").rate(22).build(), + HkMonthRatePointVO.builder().month("2月").rate(20).build(), + HkMonthRatePointVO.builder().month("3月").rate(12).build(), + HkMonthRatePointVO.builder().month("4月").rate(16).build() + ); + + List cargoVolumeTrend = Arrays.asList( + HkMonthValuePointVO.builder().month("1月").value(80).build(), + HkMonthValuePointVO.builder().month("2月").value(85).build(), + HkMonthValuePointVO.builder().month("3月").value(90).build(), + HkMonthValuePointVO.builder().month("4月").value(70).build(), + HkMonthValuePointVO.builder().month("5月").value(95).build(), + HkMonthValuePointVO.builder().month("6月").value(88).build() + ); + + List transportOrderTrend = Arrays.asList( + HkOrderTrendMonthVO.builder().month("1月").orderRatio(150).orderCount(400).build(), + HkOrderTrendMonthVO.builder().month("2月").orderRatio(200).orderCount(250).build(), + HkOrderTrendMonthVO.builder().month("3月").orderRatio(250).orderCount(300).build(), + HkOrderTrendMonthVO.builder().month("4月").orderRatio(200).orderCount(280).build(), + HkOrderTrendMonthVO.builder().month("5月").orderRatio(280).orderCount(320).build(), + HkOrderTrendMonthVO.builder().month("6月").orderRatio(220).orderCount(310).build(), + HkOrderTrendMonthVO.builder().month("7月").orderRatio(260).orderCount(330).build() + ); + + List onTimeDeliveryRate = Arrays.asList( + HkMonthRatePointVO.builder().month("1月").rate(90).build(), + HkMonthRatePointVO.builder().month("2月").rate(92).build(), + HkMonthRatePointVO.builder().month("3月").rate(88).build(), + HkMonthRatePointVO.builder().month("4月").rate(85).build(), + HkMonthRatePointVO.builder().month("5月").rate(95).build(), + HkMonthRatePointVO.builder().month("6月").rate(93).build() + ); + + List mapPoints = Arrays.asList( + HkMapPointVO.builder() + .id("wh_001") + .type("warehouse") + .name("通宇保税仓") + .status("normal") + .location(HkMapLocationVO.builder().lat(22.2800).lng(113.5600).build()) + .metrics(HkWarehouseMetricsVO.builder() + .inboundOperations(1) + .outboundOperations(1) + .build()) + .build(), + HkMapPointVO.builder() + .id("vehicle_88888") + .type("vehicle") + .name("粤A88888") + .status("in_transit") + .location(HkMapLocationVO.builder().lat(22.2500).lng(113.5500).build()) + .details(HkVehicleDetailsVO.builder() + .warehouseName("通宇") + .licensePlate("粤A88888") + .loadingAddress("珠海") + .destinationAddress("澳门") + .currentLocation("珠海市") + .updateTime("2026年4月15日 17:52") + .build()) + .build() + ); + + return HkMacaoServiceZoneVO.builder() + .warehouseOrderStats(orderStats) + .clientServiceStats(HkClientServiceStatsVO.builder() + .hkMacaoClients(26) + .clientRatio("10.5%") + .warehouseUsageArea("1688m2") + .areaRatio("1.5%") + .build()) + .goodsSourceStats(HkRingChartStatsVO.builder() + .totalOrders(1000) + .details(goodsDetails) + .build()) + .crossBorderOrderStats(HkRingChartStatsVO.builder() + .totalOrders(400) + .details(crossBorderDetails) + .build()) + .warehouseOrderTrend(warehouseOrderTrend) + .inventoryTurnoverTrend(HkInventoryTurnoverTrendVO.builder() + .currentMonthRate("3次") + .annualRate("4次") + .unit("次") + .data(turnoverData) + .build()) + .transportOrderStats(orderStats) + .doorToDoorEfficiency(HkDoorToDoorEfficiencyVO.builder() + .averageTime("28.6分") + .fastestTime("13.2分") + .momGrowth("+30%") + .build()) + .crossBorderTransportStats(HkRingChartStatsVO.builder() + .totalOrders(400) + .details(crossBorderDetails) + .build()) + .cargoVolumeTrend(cargoVolumeTrend) + .transportOrderTrend(transportOrderTrend) + .onTimeDeliveryRate(onTimeDeliveryRate) + .mapData(HkMapDataVO.builder().points(mapPoints).build()) + .build(); + } +} 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 f9bbed264..abf73d99a 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.hkMacaoZone.*; import com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone.*; import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.*; import lombok.extern.slf4j.Slf4j; @@ -206,4 +207,30 @@ public final class BiReportSnapshotMapperSupport { .title("").safeMileage("").avgDeliveryTime("").build()) .build(); } + + public static HkMacaoServiceZoneVO emptyHkMacaoServiceZone() { + HkOrderStatsVO emptyOrderStats = HkOrderStatsVO.builder() + .totalOrders(0L).unit("").momGrowth("").trend("").build(); + return HkMacaoServiceZoneVO.builder() + .warehouseOrderStats(emptyOrderStats) + .clientServiceStats(HkClientServiceStatsVO.builder() + .hkMacaoClients(0).clientRatio("").warehouseUsageArea("").areaRatio("").build()) + .goodsSourceStats(HkRingChartStatsVO.builder() + .totalOrders(0).details(Collections.emptyList()).build()) + .crossBorderOrderStats(HkRingChartStatsVO.builder() + .totalOrders(0).details(Collections.emptyList()).build()) + .warehouseOrderTrend(Collections.emptyList()) + .inventoryTurnoverTrend(HkInventoryTurnoverTrendVO.builder() + .currentMonthRate("").annualRate("").unit("").data(Collections.emptyList()).build()) + .transportOrderStats(emptyOrderStats) + .doorToDoorEfficiency(HkDoorToDoorEfficiencyVO.builder() + .averageTime("").fastestTime("").momGrowth("").build()) + .crossBorderTransportStats(HkRingChartStatsVO.builder() + .totalOrders(0).details(Collections.emptyList()).build()) + .cargoVolumeTrend(Collections.emptyList()) + .transportOrderTrend(Collections.emptyList()) + .onTimeDeliveryRate(Collections.emptyList()) + .mapData(HkMapDataVO.builder().points(Collections.emptyList()).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 4624dbf5f..10d4dfcfa 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 @@ -18,4 +18,6 @@ public interface BiSnapshotWriteMapper { int insertWarehouseOperationZoneSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark); int insertTransportOperationZoneSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark); + + int insertHkMacaoServiceZoneSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark); } 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 ad47fc137..2f42acdf8 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,12 +3,14 @@ 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.biHkMacaoServiceZone.support.HkMacaoServiceZoneDemoData; import com.mhd.bi.domain.biTransportOperationZone.support.TransportOperationZoneDemoData; 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.hkMacaoZone.HkMacaoServiceZoneVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone.TransportOperationZoneVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO; import lombok.RequiredArgsConstructor; @@ -18,7 +20,7 @@ import org.springframework.stereotype.Service; import java.util.Random; /** - * BI 快照表定时同步(综合态势 / 仓储运输 / 月台监测 / 总体运营态势 / 仓储运营专区 / 运输运营专区)。 + * BI 快照表定时同步(综合态势 / 仓储运输 / 月台监测 / 总体运营态势 / 仓储运营专区 / 运输运营专区 / 港澳服务专区)。 *

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

*

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

@@ -43,6 +45,7 @@ public class BiReportSnapshotSyncService { syncOverallOperationSnapshot(); syncWarehouseOperationZoneSnapshot(); syncTransportOperationZoneSnapshot(); + syncHkMacaoServiceZoneSnapshot(); } public void syncComprehensiveSnapshot() { @@ -166,4 +169,25 @@ public class BiReportSnapshotSyncService { protected TransportOperationZoneVO buildTransportOperationZoneSnapshot() { return TransportOperationZoneDemoData.build(); } + + public void syncHkMacaoServiceZoneSnapshot() { + try { + HkMacaoServiceZoneVO vo = buildHkMacaoServiceZoneSnapshot(); + String json = objectMapper.writeValueAsString(vo); + int rows = biSnapshotWriteMapper.insertHkMacaoServiceZoneSnapshot(json, REMARK_SYNC); + if (rows < 1) { + log.warn("BI 港澳服务专区快照 INSERT 影响行数为 {},请确认 NGWL_TEST_BI.BI_HK_MACAO_SERVICE_ZONE_SNAPSHOT", rows); + } + log.info("BI 港澳服务专区快照已写入, affectedRows={}", rows); + } catch (Exception e) { + log.error("BI 港澳服务专区快照同步失败", e); + } + } + + /** + * TODO 业务落地:改为查询真实数据组装 VO。当前为 {@link HkMacaoServiceZoneDemoData} 静态示例。 + */ + protected HkMacaoServiceZoneVO buildHkMacaoServiceZoneSnapshot() { + return HkMacaoServiceZoneDemoData.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 f57922b21..d75f1207c 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,6 +4,7 @@ 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.biHkMacaoServiceZone.service.BiHkMacaoServiceZoneReportService; import com.mhd.bi.domain.biTransportOperationZone.service.BiTransportOperationZoneReportService; import com.mhd.bi.domain.biWarehouseOperationZone.service.BiWarehouseOperationZoneReportService; import com.mhd.bi.domain.biWarehouseTransport.service.BiWarehouseTransportReportService; @@ -12,6 +13,7 @@ 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.hkMacaoZone.HkMacaoServiceZoneVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone.TransportOperationZoneVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO; import com.mhd.common.core.web.controller.BaseController; @@ -53,11 +55,14 @@ public class BiReportApi extends BaseController { @Autowired private BiTransportOperationZoneReportService biTransportOperationZoneReportService; + @Autowired + private BiHkMacaoServiceZoneReportService biHkMacaoServiceZoneReportService; + @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(); @@ -123,4 +128,14 @@ public class BiReportApi extends BaseController { TransportOperationZoneVO data = biTransportOperationZoneReportService.loadLatestTransportOperationZone(); return BiApiResult.ok(data); } + + /** + * 港澳服务专区(大屏「港澳服务专区」) + */ + @ApiOperation(value = "港澳服务专区查询", notes = "返回 DEL_FLAG=1 且 CREATE_TIME 最新的一条整包 JSON 解析结果") + @GetMapping("/hkMacaoServiceZone") + public BiApiResult hkMacaoServiceZone() { + HkMacaoServiceZoneVO data = biHkMacaoServiceZoneReportService.loadLatestHkMacaoServiceZone(); + return BiApiResult.ok(data); + } } diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkClientServiceStatsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkClientServiceStatsVO.java new file mode 100644 index 000000000..c0ec00153 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkClientServiceStatsVO.java @@ -0,0 +1,33 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkClientServiceStatsVO { + + @JsonProperty("hk_macao_clients") + @ApiModelProperty("港澳客户数") + private Integer hkMacaoClients; + + @JsonProperty("client_ratio") + @ApiModelProperty("客户占比") + private String clientRatio; + + @JsonProperty("warehouse_usage_area") + @ApiModelProperty("仓库使用面积") + private String warehouseUsageArea; + + @JsonProperty("area_ratio") + @ApiModelProperty("面积占比") + private String areaRatio; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkDoorToDoorEfficiencyVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkDoorToDoorEfficiencyVO.java new file mode 100644 index 000000000..c91b4fdce --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkDoorToDoorEfficiencyVO.java @@ -0,0 +1,29 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkDoorToDoorEfficiencyVO { + + @JsonProperty("average_time") + @ApiModelProperty("平均时效") + private String averageTime; + + @JsonProperty("fastest_time") + @ApiModelProperty("最快时效") + private String fastestTime; + + @JsonProperty("mom_growth") + @ApiModelProperty("环比增幅") + private String momGrowth; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkInventoryTurnoverTrendVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkInventoryTurnoverTrendVO.java new file mode 100644 index 000000000..5583e0d7b --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkInventoryTurnoverTrendVO.java @@ -0,0 +1,33 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkInventoryTurnoverTrendVO { + + @JsonProperty("current_month_rate") + @ApiModelProperty("本月周转率") + private String currentMonthRate; + + @JsonProperty("annual_rate") + @ApiModelProperty("年度周转率") + private String annualRate; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("按月序列") + private List data; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMacaoServiceZoneVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMacaoServiceZoneVO.java new file mode 100644 index 000000000..a599232c9 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMacaoServiceZoneVO.java @@ -0,0 +1,74 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkMacaoServiceZoneVO { + + @JsonProperty("warehouse_order_stats") + @ApiModelProperty("仓库订单统计") + private HkOrderStatsVO warehouseOrderStats; + + @JsonProperty("client_service_stats") + @ApiModelProperty("服务客户统计") + private HkClientServiceStatsVO clientServiceStats; + + @JsonProperty("goods_source_stats") + @ApiModelProperty("货物品类来源") + private HkRingChartStatsVO goodsSourceStats; + + @JsonProperty("cross_border_order_stats") + @ApiModelProperty("跨境订单统计") + private HkRingChartStatsVO crossBorderOrderStats; + + @JsonProperty("warehouse_order_trend") + @ApiModelProperty("仓库订单趋势") + private List warehouseOrderTrend; + + @JsonProperty("inventory_turnover_trend") + @ApiModelProperty("库存周转率趋势") + private HkInventoryTurnoverTrendVO inventoryTurnoverTrend; + + @JsonProperty("transport_order_stats") + @ApiModelProperty("运输订单统计") + private HkOrderStatsVO transportOrderStats; + + @JsonProperty("door_to_door_efficiency") + @ApiModelProperty("门到门时效") + private HkDoorToDoorEfficiencyVO doorToDoorEfficiency; + + @JsonProperty("cross_border_transport_stats") + @ApiModelProperty("跨境运输订单") + private HkRingChartStatsVO crossBorderTransportStats; + + @JsonProperty("cargo_volume_trend") + @ApiModelProperty("货量趋势") + private List cargoVolumeTrend; + + @JsonProperty("transport_order_trend") + @ApiModelProperty("运输订单趋势") + private List transportOrderTrend; + + @JsonProperty("on_time_delivery_rate") + @ApiModelProperty("准时交付率") + private List onTimeDeliveryRate; + + @JsonProperty("map_data") + @ApiModelProperty("地图点位") + private HkMapDataVO mapData; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMapDataVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMapDataVO.java new file mode 100644 index 000000000..ea5fc3f6f --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMapDataVO.java @@ -0,0 +1,21 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkMapDataVO { + + @ApiModelProperty("点位列表") + private List points; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMapLocationVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMapLocationVO.java new file mode 100644 index 000000000..8c5d0bc8b --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMapLocationVO.java @@ -0,0 +1,22 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkMapLocationVO { + + @ApiModelProperty("纬度") + private Double lat; + + @ApiModelProperty("经度") + private Double lng; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMapPointVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMapPointVO.java new file mode 100644 index 000000000..ea243f5d8 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMapPointVO.java @@ -0,0 +1,37 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkMapPointVO { + + @ApiModelProperty("点位ID") + private String id; + + @ApiModelProperty("类型 warehouse/vehicle") + private String type; + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("状态") + private String status; + + @ApiModelProperty("坐标") + private HkMapLocationVO location; + + @ApiModelProperty("仓库指标(type=warehouse)") + private HkWarehouseMetricsVO metrics; + + @ApiModelProperty("车辆详情(type=vehicle)") + private HkVehicleDetailsVO details; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMonthRatePointVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMonthRatePointVO.java new file mode 100644 index 000000000..b98a35ced --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMonthRatePointVO.java @@ -0,0 +1,22 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkMonthRatePointVO { + + @ApiModelProperty("月份") + private String month; + + @ApiModelProperty("比率或趋势值") + private Integer rate; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMonthValuePointVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMonthValuePointVO.java new file mode 100644 index 000000000..2f887953e --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkMonthValuePointVO.java @@ -0,0 +1,22 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkMonthValuePointVO { + + @ApiModelProperty("月份") + private String month; + + @ApiModelProperty("数值") + private Integer value; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkOrderStatsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkOrderStatsVO.java new file mode 100644 index 000000000..87134a9cb --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkOrderStatsVO.java @@ -0,0 +1,31 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkOrderStatsVO { + + @JsonProperty("total_orders") + @ApiModelProperty("订单总量") + private Long totalOrders; + + @ApiModelProperty("单位") + private String unit; + + @JsonProperty("mom_growth") + @ApiModelProperty("环比增幅") + private String momGrowth; + + @ApiModelProperty("趋势 up/down") + private String trend; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkOrderTrendMonthVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkOrderTrendMonthVO.java new file mode 100644 index 000000000..efefb4e79 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkOrderTrendMonthVO.java @@ -0,0 +1,28 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkOrderTrendMonthVO { + + @ApiModelProperty("月份") + private String month; + + @JsonProperty("order_ratio") + @ApiModelProperty("订单比率/柱值") + private Integer orderRatio; + + @JsonProperty("order_count") + @ApiModelProperty("订单数") + private Integer orderCount; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkPercentageDetailVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkPercentageDetailVO.java new file mode 100644 index 000000000..cde6f4e92 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkPercentageDetailVO.java @@ -0,0 +1,22 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkPercentageDetailVO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("占比") + private String percentage; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkRingChartStatsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkRingChartStatsVO.java new file mode 100644 index 000000000..c3fa0d488 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkRingChartStatsVO.java @@ -0,0 +1,26 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkRingChartStatsVO { + + @JsonProperty("total_orders") + @ApiModelProperty("订单/统计总量") + private Integer totalOrders; + + @ApiModelProperty("明细") + private List details; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkVehicleDetailsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkVehicleDetailsVO.java new file mode 100644 index 000000000..5a289efe3 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkVehicleDetailsVO.java @@ -0,0 +1,41 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkVehicleDetailsVO { + + @JsonProperty("warehouse_name") + @ApiModelProperty("关联仓库") + private String warehouseName; + + @JsonProperty("license_plate") + @ApiModelProperty("车牌号") + private String licensePlate; + + @JsonProperty("loading_address") + @ApiModelProperty("装货地址") + private String loadingAddress; + + @JsonProperty("destination_address") + @ApiModelProperty("目的地") + private String destinationAddress; + + @JsonProperty("current_location") + @ApiModelProperty("当前位置") + private String currentLocation; + + @JsonProperty("update_time") + @ApiModelProperty("更新时间") + private String updateTime; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkWarehouseMetricsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkWarehouseMetricsVO.java new file mode 100644 index 000000000..c66eaf29d --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/hkMacaoZone/HkWarehouseMetricsVO.java @@ -0,0 +1,25 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.hkMacaoZone; + +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 HkWarehouseMetricsVO { + + @JsonProperty("inbound_operations") + @ApiModelProperty("入库作业数") + private Integer inboundOperations; + + @JsonProperty("outbound_operations") + @ApiModelProperty("出库作业数") + private Integer outboundOperations; +} diff --git a/mhd-bi/src/main/resources/mapper/biHkMacaoServiceZone/BiHkMacaoServiceZoneReportMapper.xml b/mhd-bi/src/main/resources/mapper/biHkMacaoServiceZone/BiHkMacaoServiceZoneReportMapper.xml new file mode 100644 index 000000000..8d7934d03 --- /dev/null +++ b/mhd-bi/src/main/resources/mapper/biHkMacaoServiceZone/BiHkMacaoServiceZoneReportMapper.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml b/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml index 9292089ac..21529801a 100644 --- a/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml +++ b/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml @@ -32,4 +32,9 @@ insert into NGWL_TEST_BI.BI_TRANSPORT_OPERATION_ZONE_SNAPSHOT (PAYLOAD_JSON, CREATE_TIME, UPDATE_TIME, DEL_FLAG, REMARK) values (#{payloadJson}, SYSDATE, SYSDATE, 1, #{remark}) + + + insert into NGWL_TEST_BI.BI_HK_MACAO_SERVICE_ZONE_SNAPSHOT (PAYLOAD_JSON, CREATE_TIME, UPDATE_TIME, DEL_FLAG, REMARK) + values (#{payloadJson}, SYSDATE, SYSDATE, 1, #{remark}) +