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 abf73d99a..003f4f802 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 @@ -139,7 +139,22 @@ public final class BiReportSnapshotMapperSupport { } public static WarehouseOperationZoneVO emptyWarehouseOperationZone() { + WhColdStorageMetricVO emptyColdMetric = WhColdStorageMetricVO.builder().value("").trend("").build(); return WarehouseOperationZoneVO.builder() + .warehouseName("") + .updateTime("") + .orderSummary(WhOrderSummaryVO.builder() + .totalCount("") + .inboundOrders(WhOrderSummaryCountItemVO.builder().label("").value(0).build()) + .outboundOrders(WhOrderSummaryCountItemVO.builder().label("").value(0).build()) + .operationOrders(WhOrderSummaryCountItemVO.builder().label("").value(0).build()) + .build()) + .coldStorageStats(WhColdStorageStatsVO.builder() + .revenueShare(emptyColdMetric) + .utilizationRate(emptyColdMetric) + .damageRate(emptyColdMetric) + .build()) + .temperatureExceptions(Collections.emptyList()) .storageOverview(WhStorageOverviewVO.builder() .title("").value(0).unit("").subText("").build()) .operationStats(WhOperationStatsVO.builder() @@ -205,9 +220,33 @@ public final class BiReportSnapshotMapperSupport { .title("").unit("").data(Collections.emptyList()).build()) .transportSummary(TrTransportSummaryVO.builder() .title("").safeMileage("").avgDeliveryTime("").build()) + .capacityStats(TrCapacityStatsVO.builder() + .vehicles(emptyCapacityStatItem()) + .drivers(emptyCapacityStatItem()) + .escorts(emptyCapacityStatItem()) + .build()) + .cargoTypeDistribution(TrCargoTypeDistributionVO.builder() + .title("").totalOrders(0).totalUnit("").details(Collections.emptyList()).build()) + .freshOrderStats(emptyBrandOrderStats()) + .vitasoyOrderStats(emptyBrandOrderStats()) .build(); } + private static TrBrandOrderStatsVO emptyBrandOrderStats() { + return TrBrandOrderStatsVO.builder() + .plannedDelivery(TrOrderStatMetricVO.builder().value(0).unit("").label("").build()) + .orderQuantity(TrOrderStatMetricVO.builder().value(0).unit("").label("").build()) + .vehiclesInTransit(TrOrderStatMetricVO.builder().value(0).unit("").label("").build()) + .completedDelivery(TrOrderStatTextMetricVO.builder().value("").unit("").label("").build()) + .overtimeDelivery(TrOrderStatMetricVO.builder().value(0).unit("").label("").build()) + .onTimeRate(TrOrderStatRateMetricVO.builder().value("").trend("").label("").build()) + .build(); + } + + private static TrCapacityStatItemVO emptyCapacityStatItem() { + return TrCapacityStatItemVO.builder().value(0).unit("").label("").build(); + } + public static HkMacaoServiceZoneVO emptyHkMacaoServiceZone() { HkOrderStatsVO emptyOrderStats = HkOrderStatsVO.builder() .totalOrders(0L).unit("").momGrowth("").trend("").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 index 589f54e72..00fc66e2b 100644 --- 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 @@ -2,17 +2,18 @@ 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; +import org.apache.ibatis.annotations.Param; /** * 运输运营专区:取 NGWL_TEST_BI.BI_TRANSPORT_OPERATION_ZONE_SNAPSHOT 最新 PAYLOAD_JSON 并解析。 */ public interface BiTransportOperationZoneReportMapper { - String selectLatestPayloadJson(); + String selectLatestPayloadJson(@Param("organizationName") String organizationName); - default TransportOperationZoneVO loadLatestTransportOperationZone() { + default TransportOperationZoneVO loadTransportOperationZone(String organizationName) { return BiReportSnapshotMapperSupport.parsePayload( - selectLatestPayloadJson(), + selectLatestPayloadJson(organizationName), 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 index b9a72802b..0eb181a5e 100644 --- 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 @@ -2,6 +2,7 @@ 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.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -15,7 +16,10 @@ public class BiTransportOperationZoneReportService { @Resource private BiTransportOperationZoneReportMapper biTransportOperationZoneReportMapper; - public TransportOperationZoneVO loadLatestTransportOperationZone() { - return biTransportOperationZoneReportMapper.loadLatestTransportOperationZone(); + /** + * @param organizationName 企业运营/组织名称(模糊匹配),为空时取全表最新一条 + */ + public TransportOperationZoneVO loadTransportOperationZone(String organizationName) { + return biTransportOperationZoneReportMapper.loadTransportOperationZone(StringUtils.trimToNull(organizationName)); } } 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 index c7f57ba9a..069576cb9 100644 --- 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 @@ -68,6 +68,12 @@ public final class TransportOperationZoneDemoData { TrCargoCategoryItemVO.builder().name("冻品").value(50).color("orange").build() ); + List cargoTypeDetails = Arrays.asList( + TrCargoTypeDetailVO.builder().typeCode("2").name("第2类 气体").percentage("65%").color("#1890FF").build(), + TrCargoTypeDetailVO.builder().typeCode("3").name("第3类 易燃液体").percentage("25%").color("#52C41A").build(), + TrCargoTypeDetailVO.builder().typeCode("8").name("第8类 腐蚀性物质").percentage("15%").color("#FAAD14").build() + ); + TrMapNodeVO mapNode = TrMapNodeVO.builder() .id(1L) .name("通宇作业车辆") @@ -138,9 +144,43 @@ public final class TransportOperationZoneDemoData { .safeMileage("240万公里") .avgDeliveryTime("平均4小时送达") .build()) + .capacityStats(TrCapacityStatsVO.builder() + .vehicles(capacityStatItem(280, "辆", "车辆")) + .drivers(capacityStatItem(360, "人", "驾驶员")) + .escorts(capacityStatItem(56, "人", "押运员")) + .build()) + .cargoTypeDistribution(TrCargoTypeDistributionVO.builder() + .title("货物类型分布") + .totalOrders(1000) + .totalUnit("单") + .details(cargoTypeDetails) + .build()) + .freshOrderStats(sampleBrandOrderStats()) + .vitasoyOrderStats(sampleBrandOrderStats()) .build(); } + private static TrBrandOrderStatsVO sampleBrandOrderStats() { + return TrBrandOrderStatsVO.builder() + .plannedDelivery(orderStatMetric(2135, "单", "计划配送")) + .orderQuantity(orderStatMetric(228, "万吨", "订单数量")) + .vehiclesInTransit(orderStatMetric(84, "辆", "在途车辆")) + .completedDelivery(TrOrderStatTextMetricVO.builder() + .value("22.8%").unit("").label("完成配送").build()) + .overtimeDelivery(orderStatMetric(228, "单", "超时配送")) + .onTimeRate(TrOrderStatRateMetricVO.builder() + .value("85%").trend("+30%").label("准时配送率").build()) + .build(); + } + + private static TrOrderStatMetricVO orderStatMetric(int value, String unit, String label) { + return TrOrderStatMetricVO.builder().value(value).unit(unit).label(label).build(); + } + + private static TrCapacityStatItemVO capacityStatItem(int value, String unit, String label) { + return TrCapacityStatItemVO.builder().value(value).unit(unit).label(label).build(); + } + private static TrMonthValuePointVO point(String month, int value) { return TrMonthValuePointVO.builder().month(month).value(value).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 index 24b8a0f02..5ba495eae 100644 --- 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 @@ -2,17 +2,18 @@ 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; +import org.apache.ibatis.annotations.Param; /** * 仓储运营专区:取 NGWL_TEST_BI.BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT 最新 PAYLOAD_JSON 并解析。 */ public interface BiWarehouseOperationZoneReportMapper { - String selectLatestPayloadJson(); + String selectLatestPayloadJson(@Param("organizationName") String organizationName); - default WarehouseOperationZoneVO loadLatestWarehouseOperationZone() { + default WarehouseOperationZoneVO loadWarehouseOperationZone(String organizationName) { return BiReportSnapshotMapperSupport.parsePayload( - selectLatestPayloadJson(), + selectLatestPayloadJson(organizationName), 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 index eebed5fd4..1a1d3fcc0 100644 --- 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 @@ -2,6 +2,7 @@ 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.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -15,7 +16,10 @@ public class BiWarehouseOperationZoneReportService { @Resource private BiWarehouseOperationZoneReportMapper biWarehouseOperationZoneReportMapper; - public WarehouseOperationZoneVO loadLatestWarehouseOperationZone() { - return biWarehouseOperationZoneReportMapper.loadLatestWarehouseOperationZone(); + /** + * @param organizationName 企业运营/组织名称(模糊匹配),为空时取全表最新一条 + */ + public WarehouseOperationZoneVO loadWarehouseOperationZone(String organizationName) { + return biWarehouseOperationZoneReportMapper.loadWarehouseOperationZone(StringUtils.trimToNull(organizationName)); } } 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 4e63389d9..b4c4c1b37 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 @@ -68,6 +68,20 @@ public final class WarehouseOperationZoneDemoData { ); return WarehouseOperationZoneVO.builder() + .warehouseName("新南仓") + .updateTime("2026-04-16 18:41:00") + .orderSummary(WhOrderSummaryVO.builder() + .totalCount("03600") + .inboundOrders(orderSummaryItem("入库单", 2298)) + .outboundOrders(orderSummaryItem("出库单", 1129)) + .operationOrders(orderSummaryItem("作业单", 345)) + .build()) + .coldStorageStats(WhColdStorageStatsVO.builder() + .revenueShare(coldMetric("64.8%", "+30%")) + .utilizationRate(coldMetric("28.6%", "+30%")) + .damageRate(coldMetric("1.6%", "+30%")) + .build()) + .temperatureExceptions(sampleTemperatureExceptions()) .storageOverview(WhStorageOverviewVO.builder() .title("仓储面积") .value(10) @@ -144,6 +158,38 @@ public final class WarehouseOperationZoneDemoData { .build(); } + private static WhOrderSummaryCountItemVO orderSummaryItem(String label, int value) { + return WhOrderSummaryCountItemVO.builder().label(label).value(value).build(); + } + + private static WhColdStorageMetricVO coldMetric(String value, String trend) { + return WhColdStorageMetricVO.builder().value(value).trend(trend).build(); + } + + private static List sampleTemperatureExceptions() { + return Arrays.asList( + tempException(1, "I级"), + tempException(2, "II级"), + tempException(3, "II级"), + tempException(4, "II级"), + tempException(5, "IV级"), + tempException(6, "IV级"), + tempException(7, "IV级") + ); + } + + private static WhTemperatureExceptionVO tempException(int rank, String level) { + return WhTemperatureExceptionVO.builder() + .rank(rank) + .level(level) + .area("A1区") + .deviceId("01020304") + .temperature("-4°C") + .duration("持续0小时12分钟") + .occurTime("04-16 18:41") + .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) { 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 d75f1207c..6d6156940 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 @@ -19,12 +19,14 @@ import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperat import com.mhd.common.core.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** @@ -112,20 +114,24 @@ public class BiReportApi extends BaseController { /** * 仓储运营专区(大屏「仓储运营专区」Tab) */ - @ApiOperation(value = "仓储运营专区查询", notes = "返回 DEL_FLAG=1 且 CREATE_TIME 最新的一条整包 JSON 解析结果") + @ApiOperation(value = "仓储运营专区查询", notes = "未传 organizationName 时返回全表最新一条;") @GetMapping("/warehouseOperationZone") - public BiApiResult warehouseOperationZone() { - WarehouseOperationZoneVO data = biWarehouseOperationZoneReportService.loadLatestWarehouseOperationZone(); + public BiApiResult warehouseOperationZone( + @ApiParam(value = "企业运营/组织名称") + @RequestParam(value = "organizationName", required = false) String organizationName) { + WarehouseOperationZoneVO data = biWarehouseOperationZoneReportService.loadWarehouseOperationZone(organizationName); return BiApiResult.ok(data); } /** * 运输运营专区(大屏「运输运营专区」Tab) */ - @ApiOperation(value = "运输运营专区查询", notes = "返回 DEL_FLAG=1 且 CREATE_TIME 最新的一条整包 JSON 解析结果") + @ApiOperation(value = "运输运营专区查询", notes = "未传 organizationName 时返回全表最新一条;传入时双向模糊匹配 ORGANIZATION_NAME(库名包含关键词,或关键词包含库名)") @GetMapping("/transportOperationZone") - public BiApiResult transportOperationZone() { - TransportOperationZoneVO data = biTransportOperationZoneReportService.loadLatestTransportOperationZone(); + public BiApiResult transportOperationZone( + @ApiParam(value = "企业运营/组织名称,与快照表 ORGANIZATION_NAME 双向模糊匹配") + @RequestParam(value = "organizationName", required = false) String organizationName) { + TransportOperationZoneVO data = biTransportOperationZoneReportService.loadTransportOperationZone(organizationName); return BiApiResult.ok(data); } diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrBrandOrderStatsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrBrandOrderStatsVO.java new file mode 100644 index 000000000..828bf0f98 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrBrandOrderStatsVO.java @@ -0,0 +1,41 @@ +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 TrBrandOrderStatsVO { + + @JsonProperty("planned_delivery") + @ApiModelProperty("计划配送") + private TrOrderStatMetricVO plannedDelivery; + + @JsonProperty("order_quantity") + @ApiModelProperty("订单数量") + private TrOrderStatMetricVO orderQuantity; + + @JsonProperty("vehicles_in_transit") + @ApiModelProperty("在途车辆") + private TrOrderStatMetricVO vehiclesInTransit; + + @JsonProperty("completed_delivery") + @ApiModelProperty("完成配送") + private TrOrderStatTextMetricVO completedDelivery; + + @JsonProperty("overtime_delivery") + @ApiModelProperty("超时配送") + private TrOrderStatMetricVO overtimeDelivery; + + @JsonProperty("on_time_rate") + @ApiModelProperty("准时配送率") + private TrOrderStatRateMetricVO onTimeRate; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityStatItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityStatItemVO.java new file mode 100644 index 000000000..e0aa878ad --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityStatItemVO.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 TrCapacityStatItemVO { + + @ApiModelProperty("数值") + private Integer value; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("标签") + private String label; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityStatsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityStatsVO.java new file mode 100644 index 000000000..ecfc77724 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCapacityStatsVO.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 TrCapacityStatsVO { + + @ApiModelProperty("车辆") + private TrCapacityStatItemVO vehicles; + + @ApiModelProperty("驾驶员") + private TrCapacityStatItemVO drivers; + + @ApiModelProperty("押运员") + private TrCapacityStatItemVO escorts; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoTypeDetailVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoTypeDetailVO.java new file mode 100644 index 000000000..17b5facfe --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoTypeDetailVO.java @@ -0,0 +1,30 @@ +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 TrCargoTypeDetailVO { + + @JsonProperty("type_code") + @ApiModelProperty("类型编码") + private String typeCode; + + @ApiModelProperty("类型名称") + private String name; + + @ApiModelProperty("占比") + private String percentage; + + @ApiModelProperty("图表颜色") + private String color; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoTypeDistributionVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoTypeDistributionVO.java new file mode 100644 index 000000000..66b163319 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrCargoTypeDistributionVO.java @@ -0,0 +1,33 @@ +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 TrCargoTypeDistributionVO { + + @ApiModelProperty("标题") + private String title; + + @JsonProperty("total_orders") + @ApiModelProperty("订单总量") + private Integer totalOrders; + + @JsonProperty("total_unit") + @ApiModelProperty("总量单位") + private String totalUnit; + + @ApiModelProperty("明细") + private List details; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatMetricVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatMetricVO.java new file mode 100644 index 000000000..ba52f297a --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatMetricVO.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 TrOrderStatMetricVO { + + @ApiModelProperty("数值") + private Integer value; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("标签") + private String label; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatRateMetricVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatRateMetricVO.java new file mode 100644 index 000000000..c3997b794 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatRateMetricVO.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 TrOrderStatRateMetricVO { + + @ApiModelProperty("展示值") + private String value; + + @ApiModelProperty("环比/趋势") + private String trend; + + @ApiModelProperty("标签") + private String label; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatTextMetricVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatTextMetricVO.java new file mode 100644 index 000000000..058514f7d --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/transportZone/TrOrderStatTextMetricVO.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 TrOrderStatTextMetricVO { + + @ApiModelProperty("展示值") + private String value; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("标签") + private String label; +} 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 index 54c6b4a0e..1cf2247b8 100644 --- 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 @@ -77,4 +77,20 @@ public class TransportOperationZoneVO { @JsonProperty("transport_summary") @ApiModelProperty("运输统计总结") private TrTransportSummaryVO transportSummary; + + @JsonProperty("capacity_stats") + @ApiModelProperty("企业运力统计") + private TrCapacityStatsVO capacityStats; + + @JsonProperty("cargo_type_distribution") + @ApiModelProperty("货物类型分布") + private TrCargoTypeDistributionVO cargoTypeDistribution; + + @JsonProperty("fresh_order_stats") + @ApiModelProperty("生鲜订单统计") + private TrBrandOrderStatsVO freshOrderStats; + + @JsonProperty("vitasoy_order_stats") + @ApiModelProperty("维他奶订单统计") + private TrBrandOrderStatsVO vitasoyOrderStats; } 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 01975022a..7eee37645 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 @@ -20,6 +20,26 @@ import java.util.List; @ApiModel("BI-仓储运营专区") public class WarehouseOperationZoneVO { + @JsonProperty("warehouse_name") + @ApiModelProperty("仓库名称") + private String warehouseName; + + @JsonProperty("update_time") + @ApiModelProperty("数据更新时间") + private String updateTime; + + @JsonProperty("order_summary") + @ApiModelProperty("仓库订单统计(顶部)") + private WhOrderSummaryVO orderSummary; + + @JsonProperty("cold_storage_stats") + @ApiModelProperty("冻仓数据统计") + private WhColdStorageStatsVO coldStorageStats; + + @JsonProperty("temperature_exceptions") + @ApiModelProperty("温度异常事件列表") + private List temperatureExceptions; + @JsonProperty("storage_overview") @ApiModelProperty("仓储面积") private WhStorageOverviewVO storageOverview; diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhColdStorageMetricVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhColdStorageMetricVO.java new file mode 100644 index 000000000..e1d94ec01 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhColdStorageMetricVO.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 WhColdStorageMetricVO { + + @ApiModelProperty("展示值") + private String value; + + @ApiModelProperty("趋势") + private String trend; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhColdStorageStatsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhColdStorageStatsVO.java new file mode 100644 index 000000000..94d6b1cab --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhColdStorageStatsVO.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 WhColdStorageStatsVO { + + @JsonProperty("revenue_share") + @ApiModelProperty("收入占比") + private WhColdStorageMetricVO revenueShare; + + @JsonProperty("utilization_rate") + @ApiModelProperty("利用率") + private WhColdStorageMetricVO utilizationRate; + + @JsonProperty("damage_rate") + @ApiModelProperty("损耗率") + private WhColdStorageMetricVO damageRate; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOrderSummaryCountItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOrderSummaryCountItemVO.java new file mode 100644 index 000000000..01c02ebd8 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOrderSummaryCountItemVO.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 WhOrderSummaryCountItemVO { + + @ApiModelProperty("标签") + private String label; + + @ApiModelProperty("数量") + private Integer value; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOrderSummaryVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOrderSummaryVO.java new file mode 100644 index 000000000..89d5c392d --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhOrderSummaryVO.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 WhOrderSummaryVO { + + @JsonProperty("total_count") + @ApiModelProperty("订单总量(翻牌器)") + private String totalCount; + + @JsonProperty("inbound_orders") + @ApiModelProperty("入库单") + private WhOrderSummaryCountItemVO inboundOrders; + + @JsonProperty("outbound_orders") + @ApiModelProperty("出库单") + private WhOrderSummaryCountItemVO outboundOrders; + + @JsonProperty("operation_orders") + @ApiModelProperty("作业单") + private WhOrderSummaryCountItemVO operationOrders; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhTemperatureExceptionVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhTemperatureExceptionVO.java new file mode 100644 index 000000000..909beaaf6 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/warehouseZone/WhTemperatureExceptionVO.java @@ -0,0 +1,40 @@ +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 WhTemperatureExceptionVO { + + @ApiModelProperty("序号") + private Integer rank; + + @ApiModelProperty("等级") + private String level; + + @ApiModelProperty("区域") + private String area; + + @JsonProperty("device_id") + @ApiModelProperty("设备编号") + private String deviceId; + + @ApiModelProperty("温度") + private String temperature; + + @ApiModelProperty("持续时长") + private String duration; + + @JsonProperty("occur_time") + @ApiModelProperty("发生时间") + private String occurTime; +} diff --git a/mhd-bi/src/main/resources/mapper/biTransportOperationZone/BiTransportOperationZoneReportMapper.xml b/mhd-bi/src/main/resources/mapper/biTransportOperationZone/BiTransportOperationZoneReportMapper.xml index 9a4dfda4f..98a24dcf6 100644 --- a/mhd-bi/src/main/resources/mapper/biTransportOperationZone/BiTransportOperationZoneReportMapper.xml +++ b/mhd-bi/src/main/resources/mapper/biTransportOperationZone/BiTransportOperationZoneReportMapper.xml @@ -7,6 +7,15 @@ select PAYLOAD_JSON from NGWL_TEST_BI.BI_TRANSPORT_OPERATION_ZONE_SNAPSHOT where DEL_FLAG = 1 + + and ( + ORGANIZATION_NAME like '%' || #{organizationName} || '%' + or ( + ORGANIZATION_NAME is not null + and INSTR(#{organizationName}, ORGANIZATION_NAME) > 0 + ) + ) + order by CREATE_TIME desc nulls last, ID desc limit 1 diff --git a/mhd-bi/src/main/resources/mapper/biWarehouseOperationZone/BiWarehouseOperationZoneReportMapper.xml b/mhd-bi/src/main/resources/mapper/biWarehouseOperationZone/BiWarehouseOperationZoneReportMapper.xml index 8e20f8616..4bce04b54 100644 --- a/mhd-bi/src/main/resources/mapper/biWarehouseOperationZone/BiWarehouseOperationZoneReportMapper.xml +++ b/mhd-bi/src/main/resources/mapper/biWarehouseOperationZone/BiWarehouseOperationZoneReportMapper.xml @@ -7,6 +7,15 @@ select PAYLOAD_JSON from NGWL_TEST_BI.BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT where DEL_FLAG = 1 + + and ( + ORGANIZATION_NAME like '%' || #{organizationName} || '%' + or ( + ORGANIZATION_NAME is not null + and INSTR(#{organizationName}, ORGANIZATION_NAME) > 0 + ) + ) + order by CREATE_TIME desc nulls last, ID desc limit 1