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 6eab8296d..f9bbed264 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.transportZone.*; import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -161,9 +162,48 @@ public final class BiReportSnapshotMapperSupport { .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()) + .map(WhWarehouseMapVO.builder() + .legend("") + .nodes(Collections.emptyList()) + .build()) + .build(); + } + + public static TransportOperationZoneVO emptyTransportOperationZone() { + TrCapacityCountVO emptyCount = TrCapacityCountVO.builder() + .total(0).todayNew(0).yesterdayNew(0).build(); + return TransportOperationZoneVO.builder() + .updateTime("") + .dashboardTitle("") + .activeTab("") + .orderStatistics(TrOrderStatisticsVO.builder().title("").total(0L).trend("").build()) + .transportStats(TrTransportStatsVO.builder() + .title("").tripCount(0).volume(0d).volumeUnit("").build()) + .orderTypeChart(TrOrderTypeChartVO.builder() + .title("").type("").data(Collections.emptyList()).build()) + .tripCountTrend(TrTypedChartVO.builder() + .title("").type("").unit(null).data(Collections.emptyList()).build()) + .orderTrend(TrTypedChartVO.builder() + .title("").type("").unit("").data(Collections.emptyList()).build()) + .volumeTrend(TrTypedChartVO.builder() + .title("").type("").unit("").data(Collections.emptyList()).build()) + .map(TrVehicleMapVO.builder() + .title("") + .legend(TrMapLegendVO.builder().idle(0).working(0).build()) + .nodes(Collections.emptyList()) + .build()) + .enterpriseOperation(TrEnterpriseOperationVO.builder() + .title("").columns(Collections.emptyList()).list(Collections.emptyList()).build()) + .capacityStatus(TrCapacityStatusVO.builder() + .title("").staff(emptyCount).vehicles(emptyCount).build()) + .cargoCategory(TrCargoCategoryVO.builder() + .title("").totalOrders("").data(Collections.emptyList()).build()) + .onTimeRate(TrTypedChartVO.builder() + .title("").type("").unit("").data(Collections.emptyList()).build()) + .vehicleUtilization(TrBarChartVO.builder() + .title("").unit("").data(Collections.emptyList()).build()) + .transportSummary(TrTransportSummaryVO.builder() + .title("").safeMileage("").avgDeliveryTime("").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 36113cafc..4624dbf5f 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 @@ -16,4 +16,6 @@ public interface BiSnapshotWriteMapper { int insertOverallOperationSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark); int insertWarehouseOperationZoneSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark); + + int insertTransportOperationZoneSnapshot(@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 14d018aef..6c6bbf14d 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_WAREHOUSE_OPERATION_ZONE_SNAPSHOT。 + * 定时将业务快照写入 BI_COMPREHENSIVE_SNAPSHOT / BI_WAREHOUSE_TRANSPORT_SNAPSHOT / BI_PLATFORM_SURVEILLANCE_SNAPSHOT / BI_OVERALL_OPERATION_SNAPSHOT / BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT / BI_TRANSPORT_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 52ab52f08..ad47fc137 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,11 +3,13 @@ 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.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.transportZone.TransportOperationZoneVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -16,7 +18,7 @@ import org.springframework.stereotype.Service; import java.util.Random; /** - * BI 快照表定时同步(综合态势 / 仓储运输 / 月台监测 / 总体运营态势 / 仓储运营专区)。 + * BI 快照表定时同步(综合态势 / 仓储运输 / 月台监测 / 总体运营态势 / 仓储运营专区 / 运输运营专区)。 *

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

*

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

@@ -40,6 +42,7 @@ public class BiReportSnapshotSyncService { syncPlatformSurveillanceSnapshot(); syncOverallOperationSnapshot(); syncWarehouseOperationZoneSnapshot(); + syncTransportOperationZoneSnapshot(); } public void syncComprehensiveSnapshot() { @@ -142,4 +145,25 @@ public class BiReportSnapshotSyncService { protected WarehouseOperationZoneVO buildWarehouseOperationZoneSnapshot() { return WarehouseOperationZoneDemoData.build(); } + + public void syncTransportOperationZoneSnapshot() { + try { + TransportOperationZoneVO vo = buildTransportOperationZoneSnapshot(); + String json = objectMapper.writeValueAsString(vo); + int rows = biSnapshotWriteMapper.insertTransportOperationZoneSnapshot(json, REMARK_SYNC); + if (rows < 1) { + log.warn("BI 运输运营专区快照 INSERT 影响行数为 {},请确认 NGWL_TEST_BI.BI_TRANSPORT_OPERATION_ZONE_SNAPSHOT", rows); + } + log.info("BI 运输运营专区快照已写入, affectedRows={}", rows); + } catch (Exception e) { + log.error("BI 运输运营专区快照同步失败", e); + } + } + + /** + * TODO 业务落地:改为查询真实数据组装 VO。当前为 {@link TransportOperationZoneDemoData} 静态示例。 + */ + protected TransportOperationZoneVO buildTransportOperationZoneSnapshot() { + return TransportOperationZoneDemoData.build(); + } } diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biTransportOperationZone/repository/mapper/BiTransportOperationZoneReportMapper.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biTransportOperationZone/repository/mapper/BiTransportOperationZoneReportMapper.java new file mode 100644 index 000000000..589f54e72 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biTransportOperationZone/repository/mapper/BiTransportOperationZoneReportMapper.java @@ -0,0 +1,20 @@ +package com.mhd.bi.domain.biTransportOperationZone.repository.mapper; + +import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone.TransportOperationZoneVO; + +/** + * 运输运营专区:取 NGWL_TEST_BI.BI_TRANSPORT_OPERATION_ZONE_SNAPSHOT 最新 PAYLOAD_JSON 并解析。 + */ +public interface BiTransportOperationZoneReportMapper { + + String selectLatestPayloadJson(); + + default TransportOperationZoneVO loadLatestTransportOperationZone() { + return BiReportSnapshotMapperSupport.parsePayload( + selectLatestPayloadJson(), + TransportOperationZoneVO.class, + BiReportSnapshotMapperSupport::emptyTransportOperationZone, + "运输运营专区"); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biTransportOperationZone/service/BiTransportOperationZoneReportService.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biTransportOperationZone/service/BiTransportOperationZoneReportService.java new file mode 100644 index 000000000..b9a72802b --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biTransportOperationZone/service/BiTransportOperationZoneReportService.java @@ -0,0 +1,21 @@ +package com.mhd.bi.domain.biTransportOperationZone.service; + +import com.mhd.bi.domain.biTransportOperationZone.repository.mapper.BiTransportOperationZoneReportMapper; +import com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone.TransportOperationZoneVO; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 南光物流业务经营分析 · 运输运营专区 + */ +@Service +public class BiTransportOperationZoneReportService { + + @Resource + private BiTransportOperationZoneReportMapper biTransportOperationZoneReportMapper; + + public TransportOperationZoneVO loadLatestTransportOperationZone() { + return biTransportOperationZoneReportMapper.loadLatestTransportOperationZone(); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biTransportOperationZone/support/TransportOperationZoneDemoData.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biTransportOperationZone/support/TransportOperationZoneDemoData.java new file mode 100644 index 000000000..c7f57ba9a --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biTransportOperationZone/support/TransportOperationZoneDemoData.java @@ -0,0 +1,164 @@ +package com.mhd.bi.domain.biTransportOperationZone.support; + +import com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone.*; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * 运输运营专区快照演示数据(对齐大屏示例 JSON;后续可改为真实聚合)。 + */ +public final class TransportOperationZoneDemoData { + + private static final DateTimeFormatter UPDATE_TIME_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + private TransportOperationZoneDemoData() { + } + + public static TransportOperationZoneVO build() { + List orderTypeData = Arrays.asList( + TrOrderTypeMonthItemVO.builder().month("1月").crossBorder(30).domestic(25).build(), + TrOrderTypeMonthItemVO.builder().month("2月").crossBorder(40).domestic(35).build(), + TrOrderTypeMonthItemVO.builder().month("3月").crossBorder(20).domestic(30).build(), + TrOrderTypeMonthItemVO.builder().month("4月").crossBorder(35).domestic(40).build(), + TrOrderTypeMonthItemVO.builder().month("5月").crossBorder(50).domestic(45).build(), + TrOrderTypeMonthItemVO.builder().month("6月").crossBorder(60).domestic(55).build(), + TrOrderTypeMonthItemVO.builder().month("7月").crossBorder(70).domestic(65).build() + ); + + List tripTrend = Arrays.asList( + point("1月", 120), point("2月", 150), point("3月", 220), + point("4月", 100), point("5月", 140), point("6月", 180) + ); + + List orderTrend = Arrays.asList( + point("1月", 100), point("2月", 140), point("3月", 230), + point("4月", 100), point("5月", 140), point("6月", 190) + ); + + List volumeTrend = Arrays.asList( + point("1月", 95), point("2月", 90), point("3月", 80), + point("4月", 65), point("5月", 92), point("6月", 88) + ); + + List onTimeRate = Arrays.asList( + point("1月", 98), point("2月", 96), point("3月", 85), + point("4月", 70), point("5月", 92), point("6月", 90) + ); + + List vehicleUtil = Arrays.asList( + point("1月", 600), point("2月", 460), point("3月", 390), + point("4月", 470), point("5月", 450), point("6月", 620) + ); + + List enterpriseList = Arrays.asList( + row("NO.1", "供应商A", "268.25万", "2400单", 95), + row("NO.2", "供应商B", "258.15万", "1800单", 98), + row("NO.3", "供应商C", "242.32万", "1200单", 13), + row("NO.4", "供应商D", "231.54万", "800单", 12), + row("NO.5", "供应商E", "220.90万", "567单", 15) + ); + + List cargoItems = Arrays.asList( + TrCargoCategoryItemVO.builder().name("危化").value(25).color("green").build(), + TrCargoCategoryItemVO.builder().name("普货").value(25).color("blue").build(), + TrCargoCategoryItemVO.builder().name("冻品").value(50).color("orange").build() + ); + + TrMapNodeVO mapNode = TrMapNodeVO.builder() + .id(1L) + .name("通宇作业车辆") + .location(Arrays.asList(113.55, 22.25)) + .status("working") + .detail(TrMapNodeDetailVO.builder() + .title("作业详情") + .licensePlate("粤A88888") + .businessUnit("通宇") + .loadingPlace("珠海") + .destination("澳门") + .currentLocation("珠海市") + .updateTime("2026年4月15日 17:52") + .build()) + .build(); + + return TransportOperationZoneVO.builder() + .updateTime(LocalDateTime.now().format(UPDATE_TIME_FMT)) + .dashboardTitle("南光物流业务经营分析") + .activeTab("运输运营专区") + .orderStatistics(TrOrderStatisticsVO.builder() + .title("订单统计") + .total(4361L) + .trend("+12.5%") + .build()) + .transportStats(TrTransportStatsVO.builder() + .title("运输统计") + .tripCount(240) + .volume(2.6) + .volumeUnit("万吨") + .build()) + .orderTypeChart(TrOrderTypeChartVO.builder() + .title("订单类型") + .type("area") + .data(orderTypeData) + .build()) + .tripCountTrend(chart("车次趋势", "line", null, tripTrend)) + .orderTrend(chart("订单趋势", "area", "单", orderTrend)) + .volumeTrend(chart("货量趋势", "area", "%", volumeTrend)) + .map(TrVehicleMapVO.builder() + .title("车辆实时监控") + .legend(TrMapLegendVO.builder().idle(80).working(200).build()) + .nodes(Collections.singletonList(mapNode)) + .build()) + .enterpriseOperation(TrEnterpriseOperationVO.builder() + .title("企业运营") + .columns(Arrays.asList("序号", "企业名称", "货运量", "处理单量", "准时配送率")) + .list(enterpriseList) + .build()) + .capacityStatus(TrCapacityStatusVO.builder() + .title("运力情况") + .staff(capacityCount(718, 0, 0)) + .vehicles(capacityCount(507, 0, 0)) + .build()) + .cargoCategory(TrCargoCategoryVO.builder() + .title("货物品类") + .totalOrders("1000单") + .data(cargoItems) + .build()) + .onTimeRate(chart("准时配送率", "line", "%", onTimeRate)) + .vehicleUtilization(TrBarChartVO.builder() + .title("出车利用率") + .unit("车次/辆") + .data(vehicleUtil) + .build()) + .transportSummary(TrTransportSummaryVO.builder() + .title("运输统计") + .safeMileage("240万公里") + .avgDeliveryTime("平均4小时送达") + .build()) + .build(); + } + + private static TrMonthValuePointVO point(String month, int value) { + return TrMonthValuePointVO.builder().month(month).value(value).build(); + } + + private static TrTypedChartVO chart(String title, String type, String unit, List data) { + return TrTypedChartVO.builder().title(title).type(type).unit(unit).data(data).build(); + } + + private static TrCapacityCountVO capacityCount(int total, int todayNew, int yesterdayNew) { + return TrCapacityCountVO.builder() + .total(total).todayNew(todayNew).yesterdayNew(yesterdayNew).build(); + } + + private static TrEnterpriseRowVO row(String rank, String name, String volume, + String processedOrders, int onTimeRate) { + return TrEnterpriseRowVO.builder() + .rank(rank).name(name).volume(volume) + .processedOrders(processedOrders).onTimeRate(onTimeRate) + .build(); + } +} 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 index 4861cb9b0..4e63389d9 100644 --- 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 @@ -126,13 +126,38 @@ public final class WarehouseOperationZoneDemoData { .trend("up") .build()) .build()) - .mapPopup(WhMapPopupVO.builder() - .warehouseName("通宇保税仓") - .totalArea("2000m2") - .totalSku(668) - .todayOrders(237) - .utilizationRate("85%") - .rentalRate("37.1%") + .map(WhWarehouseMapVO.builder() + .legend("仓库") + .nodes(Arrays.asList( + mapNode(1L, "君华仓", 113.52, 22.30, + "君华保税仓", "12000m²", 520, 2400, "82%", "36.5%"), + mapNode(2L, "通宇仓", 113.55, 22.25, + "通宇保税仓", "2000m²", 668, 237, "85%", "37.1%"), + mapNode(3L, "横琴仓", 113.54, 22.12, + "横琴保税仓", "3500m²", 445, 1200, "78%", "42.0%"), + mapNode(4L, "新南仓", 113.58, 22.20, + "新南保税仓", "2800m²", 390, 800, "80%", "35.8%"), + mapNode(5L, "谷丰仓", 113.48, 22.22, + "谷丰保税仓", "4500m²", 512, 567, "76%", "33.2%") + )) + .build()) + .build(); + } + + private static WhMapNodeVO mapNode(long id, String name, double lng, double lat, + String warehouseName, String totalArea, int totalSku, + int todayOrders, String utilizationRate, String rentalRate) { + return WhMapNodeVO.builder() + .id(id) + .name(name) + .location(Arrays.asList(lng, lat)) + .detail(WhMapPopupVO.builder() + .warehouseName(warehouseName) + .totalArea(totalArea) + .totalSku(totalSku) + .todayOrders(todayOrders) + .utilizationRate(utilizationRate) + .rentalRate(rentalRate) .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 5ac025e9c..f57922b21 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.biTransportOperationZone.service.BiTransportOperationZoneReportService; 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; @@ -11,6 +12,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.transportZone.TransportOperationZoneVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO; import com.mhd.common.core.web.controller.BaseController; import io.swagger.annotations.Api; @@ -48,11 +50,14 @@ public class BiReportApi extends BaseController { @Autowired private BiWarehouseOperationZoneReportService biWarehouseOperationZoneReportService; + @Autowired + private BiTransportOperationZoneReportService biTransportOperationZoneReportService; + @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(); @@ -88,7 +93,7 @@ public class BiReportApi extends BaseController { PlatformSurveillanceVO data = biPlatformSurveillanceReportService.loadLatestPlatformSurveillance(); return BiApiResult.ok(data); } - +//园区物流大屏接口---------------------------------------------------------------------- /** * 总体运营态势 */ @@ -108,4 +113,14 @@ public class BiReportApi extends BaseController { WarehouseOperationZoneVO data = biWarehouseOperationZoneReportService.loadLatestWarehouseOperationZone(); return BiApiResult.ok(data); } + + /** + * 运输运营专区(大屏「运输运营专区」Tab) + */ + @ApiOperation(value = "运输运营专区查询", notes = "返回 DEL_FLAG=1 且 CREATE_TIME 最新的一条整包 JSON 解析结果") + @GetMapping("/transportOperationZone") + public BiApiResult transportOperationZone() { + TransportOperationZoneVO data = biTransportOperationZoneReportService.loadLatestTransportOperationZone(); + return BiApiResult.ok(data); + } } diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/dto/BiApiResult.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/dto/BiApiResult.java index ce816be28..31fcbfd49 100644 --- a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/dto/BiApiResult.java +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/dto/BiApiResult.java @@ -14,7 +14,7 @@ public class BiApiResult { private int code = 200; - private String msg = "操作成功"; + private String message = "操作成功"; private T data; diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrBarChartVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrBarChartVO.java new file mode 100644 index 000000000..92b9e1e50 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrBarChartVO.java @@ -0,0 +1,27 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrBarChartVO { + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("数据") + private List data; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityCountVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityCountVO.java new file mode 100644 index 000000000..36ddc94f3 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityCountVO.java @@ -0,0 +1,28 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrCapacityCountVO { + + @ApiModelProperty("总数") + private Integer total; + + @JsonProperty("today_new") + @ApiModelProperty("今日新增") + private Integer todayNew; + + @JsonProperty("yesterday_new") + @ApiModelProperty("昨日新增") + private Integer yesterdayNew; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityStatusVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityStatusVO.java new file mode 100644 index 000000000..6b72c7c13 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityStatusVO.java @@ -0,0 +1,26 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrCapacityStatusVO { + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("承运人") + private TrCapacityCountVO staff; + + @ApiModelProperty("车辆") + private TrCapacityCountVO vehicles; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoCategoryItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoCategoryItemVO.java new file mode 100644 index 000000000..524c37b2d --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoCategoryItemVO.java @@ -0,0 +1,25 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrCargoCategoryItemVO { + + @ApiModelProperty("品类名称") + private String name; + + @ApiModelProperty("占比") + private Integer value; + + @ApiModelProperty("颜色标识") + private String color; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoCategoryVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoCategoryVO.java new file mode 100644 index 000000000..eb227e479 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoCategoryVO.java @@ -0,0 +1,29 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrCargoCategoryVO { + + @ApiModelProperty("标题") + private String title; + + @JsonProperty("total_orders") + @ApiModelProperty("订单总量展示") + private String totalOrders; + + @ApiModelProperty("品类数据") + private List data; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrEnterpriseOperationVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrEnterpriseOperationVO.java new file mode 100644 index 000000000..f40a719cf --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrEnterpriseOperationVO.java @@ -0,0 +1,27 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrEnterpriseOperationVO { + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("表头") + private List columns; + + @ApiModelProperty("列表") + private List list; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrEnterpriseRowVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrEnterpriseRowVO.java new file mode 100644 index 000000000..b0d660a52 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrEnterpriseRowVO.java @@ -0,0 +1,34 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrEnterpriseRowVO { + + @ApiModelProperty("排名") + private String rank; + + @ApiModelProperty("企业名称") + private String name; + + @ApiModelProperty("货运量") + private String volume; + + @JsonProperty("processed_orders") + @ApiModelProperty("处理单量") + private String processedOrders; + + @JsonProperty("on_time_rate") + @ApiModelProperty("准时配送率") + private Integer onTimeRate; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMapLegendVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMapLegendVO.java new file mode 100644 index 000000000..577f818e5 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMapLegendVO.java @@ -0,0 +1,22 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrMapLegendVO { + + @ApiModelProperty("空闲车辆数") + private Integer idle; + + @ApiModelProperty("作业车辆数") + private Integer working; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMapNodeDetailVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMapNodeDetailVO.java new file mode 100644 index 000000000..3914d1f7f --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMapNodeDetailVO.java @@ -0,0 +1,43 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrMapNodeDetailVO { + + @ApiModelProperty("标题") + private String title; + + @JsonProperty("license_plate") + @ApiModelProperty("车牌") + private String licensePlate; + + @JsonProperty("business_unit") + @ApiModelProperty("经营单位") + private String businessUnit; + + @JsonProperty("loading_place") + @ApiModelProperty("装货地") + private String loadingPlace; + + @ApiModelProperty("目的地") + private String destination; + + @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/transportZone/TrMapNodeVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMapNodeVO.java new file mode 100644 index 000000000..7041d3abc --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMapNodeVO.java @@ -0,0 +1,33 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrMapNodeVO { + + @ApiModelProperty("节点ID") + private Long id; + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("坐标 [经度, 纬度]") + private List location; + + @ApiModelProperty("状态:idle / working") + private String status; + + @ApiModelProperty("详情") + private TrMapNodeDetailVO detail; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMonthValuePointVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMonthValuePointVO.java new file mode 100644 index 000000000..3ae8afe2f --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrMonthValuePointVO.java @@ -0,0 +1,22 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrMonthValuePointVO { + + @ApiModelProperty("月份") + private String month; + + @ApiModelProperty("数值") + private Integer value; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatisticsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatisticsVO.java new file mode 100644 index 000000000..0eba9a94a --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatisticsVO.java @@ -0,0 +1,25 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrOrderStatisticsVO { + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("订单总数") + private Long total; + + @ApiModelProperty("环比增长率") + private String trend; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderTypeChartVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderTypeChartVO.java new file mode 100644 index 000000000..b6cd8770e --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderTypeChartVO.java @@ -0,0 +1,28 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrOrderTypeChartVO { + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("图表类型") + private String type; + + @ApiModelProperty("数据") + private List data; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderTypeMonthItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderTypeMonthItemVO.java new file mode 100644 index 000000000..aa28cd802 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderTypeMonthItemVO.java @@ -0,0 +1,27 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrOrderTypeMonthItemVO { + + @ApiModelProperty("月份") + private String month; + + @JsonProperty("cross_border") + @ApiModelProperty("跨境") + private Integer crossBorder; + + @ApiModelProperty("国内") + private Integer domestic; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrTransportStatsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrTransportStatsVO.java new file mode 100644 index 000000000..6271a43ae --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrTransportStatsVO.java @@ -0,0 +1,31 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrTransportStatsVO { + + @ApiModelProperty("标题") + private String title; + + @JsonProperty("trip_count") + @ApiModelProperty("运输车次") + private Integer tripCount; + + @ApiModelProperty("运输货量") + private Double volume; + + @JsonProperty("volume_unit") + @ApiModelProperty("货量单位") + private String volumeUnit; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrTransportSummaryVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrTransportSummaryVO.java new file mode 100644 index 000000000..d2b3f9489 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrTransportSummaryVO.java @@ -0,0 +1,28 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrTransportSummaryVO { + + @ApiModelProperty("标题") + private String title; + + @JsonProperty("safe_mileage") + @ApiModelProperty("安全里程") + private String safeMileage; + + @JsonProperty("avg_delivery_time") + @ApiModelProperty("平均送达时间") + private String avgDeliveryTime; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrTypedChartVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrTypedChartVO.java new file mode 100644 index 000000000..f39268d00 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrTypedChartVO.java @@ -0,0 +1,30 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrTypedChartVO { + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("图表类型") + private String type; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("数据") + private List data; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrVehicleMapVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrVehicleMapVO.java new file mode 100644 index 000000000..cac546be3 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrVehicleMapVO.java @@ -0,0 +1,27 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 TrVehicleMapVO { + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("图例") + private TrMapLegendVO legend; + + @ApiModelProperty("节点") + private List nodes; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TransportOperationZoneVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TransportOperationZoneVO.java new file mode 100644 index 000000000..54c6b4a0e --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TransportOperationZoneVO.java @@ -0,0 +1,80 @@ +package com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone; + +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 与快照 PAYLOAD_JSON 一致) + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-运输运营专区") +public class TransportOperationZoneVO { + + @ApiModelProperty("数据更新时间") + private String updateTime; + + @ApiModelProperty("大屏标题") + private String dashboardTitle; + + @ApiModelProperty("当前 Tab") + private String activeTab; + + @JsonProperty("order_statistics") + @ApiModelProperty("订单统计") + private TrOrderStatisticsVO orderStatistics; + + @JsonProperty("transport_stats") + @ApiModelProperty("运输统计") + private TrTransportStatsVO transportStats; + + @JsonProperty("order_type_chart") + @ApiModelProperty("订单类型面积图") + private TrOrderTypeChartVO orderTypeChart; + + @JsonProperty("trip_count_trend") + @ApiModelProperty("车次趋势折线图") + private TrTypedChartVO tripCountTrend; + + @JsonProperty("order_trend") + @ApiModelProperty("订单趋势面积图") + private TrTypedChartVO orderTrend; + + @JsonProperty("volume_trend") + @ApiModelProperty("货量趋势面积图") + private TrTypedChartVO volumeTrend; + + @ApiModelProperty("车辆实时监控地图") + private TrVehicleMapVO map; + + @JsonProperty("enterprise_operation") + @ApiModelProperty("企业运营表格") + private TrEnterpriseOperationVO enterpriseOperation; + + @JsonProperty("capacity_status") + @ApiModelProperty("运力情况") + private TrCapacityStatusVO capacityStatus; + + @JsonProperty("cargo_category") + @ApiModelProperty("货物品类环形图") + private TrCargoCategoryVO cargoCategory; + + @JsonProperty("on_time_rate") + @ApiModelProperty("准时配送率折线图") + private TrTypedChartVO onTimeRate; + + @JsonProperty("vehicle_utilization") + @ApiModelProperty("出车利用率柱状图") + private TrBarChartVO vehicleUtilization; + + @JsonProperty("transport_summary") + @ApiModelProperty("运输统计总结") + private TrTransportSummaryVO transportSummary; +} 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 index df93d65ed..01975022a 100644 --- 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 @@ -68,7 +68,6 @@ public class WarehouseOperationZoneVO { @ApiModelProperty("实时分析") private WhRealTimeAnalysisVO realTimeAnalysis; - @JsonProperty("map_popup") - @ApiModelProperty("地图弹窗示例数据") - private WhMapPopupVO mapPopup; + @ApiModelProperty("中间地图仓库点位(nodes 为标注数组)") + private WhWarehouseMapVO map; } diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhMapNodeVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhMapNodeVO.java new file mode 100644 index 000000000..ea0b2565a --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhMapNodeVO.java @@ -0,0 +1,30 @@ +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; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-地图点位") +public class WhMapNodeVO { + + @ApiModelProperty("点位ID") + private Long id; + + @ApiModelProperty("地图标注名称(短名)") + private String name; + + @ApiModelProperty("坐标 [经度, 纬度]") + private List location; + + @ApiModelProperty("弹窗详情") + private WhMapPopupVO detail; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhWarehouseMapVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhWarehouseMapVO.java new file mode 100644 index 000000000..97c021156 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhWarehouseMapVO.java @@ -0,0 +1,24 @@ +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; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("BI-仓储运营专区-地图") +public class WhWarehouseMapVO { + + @ApiModelProperty("图例说明") + private String legend; + + @ApiModelProperty("仓库点位列表") + private List nodes; +} diff --git a/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml b/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml index c377faa07..9292089ac 100644 --- a/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml +++ b/mhd-bi/src/main/resources/mapper/biSnapshotSync/BiSnapshotWriteMapper.xml @@ -27,4 +27,9 @@ 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}) + + + 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}) + diff --git a/mhd-bi/src/main/resources/mapper/biTransportOperationZone/BiTransportOperationZoneReportMapper.xml b/mhd-bi/src/main/resources/mapper/biTransportOperationZone/BiTransportOperationZoneReportMapper.xml new file mode 100644 index 000000000..9a4dfda4f --- /dev/null +++ b/mhd-bi/src/main/resources/mapper/biTransportOperationZone/BiTransportOperationZoneReportMapper.xml @@ -0,0 +1,13 @@ + + + + + +