BI二级页面查询

This commit is contained in:
秦鸿展
2026-05-19 14:18:20 +08:00
parent fea6b30c16
commit bab277f244
25 changed files with 586 additions and 16 deletions
@@ -139,7 +139,22 @@ public final class BiReportSnapshotMapperSupport {
} }
public static WarehouseOperationZoneVO emptyWarehouseOperationZone() { public static WarehouseOperationZoneVO emptyWarehouseOperationZone() {
WhColdStorageMetricVO emptyColdMetric = WhColdStorageMetricVO.builder().value("").trend("").build();
return WarehouseOperationZoneVO.builder() 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() .storageOverview(WhStorageOverviewVO.builder()
.title("").value(0).unit("").subText("").build()) .title("").value(0).unit("").subText("").build())
.operationStats(WhOperationStatsVO.builder() .operationStats(WhOperationStatsVO.builder()
@@ -205,9 +220,33 @@ public final class BiReportSnapshotMapperSupport {
.title("").unit("").data(Collections.emptyList()).build()) .title("").unit("").data(Collections.emptyList()).build())
.transportSummary(TrTransportSummaryVO.builder() .transportSummary(TrTransportSummaryVO.builder()
.title("").safeMileage("").avgDeliveryTime("").build()) .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(); .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() { public static HkMacaoServiceZoneVO emptyHkMacaoServiceZone() {
HkOrderStatsVO emptyOrderStats = HkOrderStatsVO.builder() HkOrderStatsVO emptyOrderStats = HkOrderStatsVO.builder()
.totalOrders(0L).unit("").momGrowth("").trend("").build(); .totalOrders(0L).unit("").momGrowth("").trend("").build();
@@ -2,17 +2,18 @@ package com.mhd.bi.domain.biTransportOperationZone.repository.mapper;
import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport; import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone.TransportOperationZoneVO; 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 并解析。 * 运输运营专区:取 NGWL_TEST_BI.BI_TRANSPORT_OPERATION_ZONE_SNAPSHOT 最新 PAYLOAD_JSON 并解析。
*/ */
public interface BiTransportOperationZoneReportMapper { public interface BiTransportOperationZoneReportMapper {
String selectLatestPayloadJson(); String selectLatestPayloadJson(@Param("organizationName") String organizationName);
default TransportOperationZoneVO loadLatestTransportOperationZone() { default TransportOperationZoneVO loadTransportOperationZone(String organizationName) {
return BiReportSnapshotMapperSupport.parsePayload( return BiReportSnapshotMapperSupport.parsePayload(
selectLatestPayloadJson(), selectLatestPayloadJson(organizationName),
TransportOperationZoneVO.class, TransportOperationZoneVO.class,
BiReportSnapshotMapperSupport::emptyTransportOperationZone, BiReportSnapshotMapperSupport::emptyTransportOperationZone,
"运输运营专区"); "运输运营专区");
@@ -2,6 +2,7 @@ package com.mhd.bi.domain.biTransportOperationZone.service;
import com.mhd.bi.domain.biTransportOperationZone.repository.mapper.BiTransportOperationZoneReportMapper; import com.mhd.bi.domain.biTransportOperationZone.repository.mapper.BiTransportOperationZoneReportMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone.TransportOperationZoneVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.transportZone.TransportOperationZoneVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -15,7 +16,10 @@ public class BiTransportOperationZoneReportService {
@Resource @Resource
private BiTransportOperationZoneReportMapper biTransportOperationZoneReportMapper; private BiTransportOperationZoneReportMapper biTransportOperationZoneReportMapper;
public TransportOperationZoneVO loadLatestTransportOperationZone() { /**
return biTransportOperationZoneReportMapper.loadLatestTransportOperationZone(); * @param organizationName 企业运营/组织名称(模糊匹配),为空时取全表最新一条
*/
public TransportOperationZoneVO loadTransportOperationZone(String organizationName) {
return biTransportOperationZoneReportMapper.loadTransportOperationZone(StringUtils.trimToNull(organizationName));
} }
} }
@@ -68,6 +68,12 @@ public final class TransportOperationZoneDemoData {
TrCargoCategoryItemVO.builder().name("冻品").value(50).color("orange").build() TrCargoCategoryItemVO.builder().name("冻品").value(50).color("orange").build()
); );
List<TrCargoTypeDetailVO> 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() TrMapNodeVO mapNode = TrMapNodeVO.builder()
.id(1L) .id(1L)
.name("通宇作业车辆") .name("通宇作业车辆")
@@ -138,9 +144,43 @@ public final class TransportOperationZoneDemoData {
.safeMileage("240万公里") .safeMileage("240万公里")
.avgDeliveryTime("平均4小时送达") .avgDeliveryTime("平均4小时送达")
.build()) .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(); .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) { private static TrMonthValuePointVO point(String month, int value) {
return TrMonthValuePointVO.builder().month(month).value(value).build(); return TrMonthValuePointVO.builder().month(month).value(value).build();
} }
@@ -2,17 +2,18 @@ package com.mhd.bi.domain.biWarehouseOperationZone.repository.mapper;
import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport; import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO; 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 并解析。 * 仓储运营专区:取 NGWL_TEST_BI.BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT 最新 PAYLOAD_JSON 并解析。
*/ */
public interface BiWarehouseOperationZoneReportMapper { public interface BiWarehouseOperationZoneReportMapper {
String selectLatestPayloadJson(); String selectLatestPayloadJson(@Param("organizationName") String organizationName);
default WarehouseOperationZoneVO loadLatestWarehouseOperationZone() { default WarehouseOperationZoneVO loadWarehouseOperationZone(String organizationName) {
return BiReportSnapshotMapperSupport.parsePayload( return BiReportSnapshotMapperSupport.parsePayload(
selectLatestPayloadJson(), selectLatestPayloadJson(organizationName),
WarehouseOperationZoneVO.class, WarehouseOperationZoneVO.class,
BiReportSnapshotMapperSupport::emptyWarehouseOperationZone, BiReportSnapshotMapperSupport::emptyWarehouseOperationZone,
"仓储运营专区"); "仓储运营专区");
@@ -2,6 +2,7 @@ package com.mhd.bi.domain.biWarehouseOperationZone.service;
import com.mhd.bi.domain.biWarehouseOperationZone.repository.mapper.BiWarehouseOperationZoneReportMapper; import com.mhd.bi.domain.biWarehouseOperationZone.repository.mapper.BiWarehouseOperationZoneReportMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO; import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -15,7 +16,10 @@ public class BiWarehouseOperationZoneReportService {
@Resource @Resource
private BiWarehouseOperationZoneReportMapper biWarehouseOperationZoneReportMapper; private BiWarehouseOperationZoneReportMapper biWarehouseOperationZoneReportMapper;
public WarehouseOperationZoneVO loadLatestWarehouseOperationZone() { /**
return biWarehouseOperationZoneReportMapper.loadLatestWarehouseOperationZone(); * @param organizationName 企业运营/组织名称(模糊匹配),为空时取全表最新一条
*/
public WarehouseOperationZoneVO loadWarehouseOperationZone(String organizationName) {
return biWarehouseOperationZoneReportMapper.loadWarehouseOperationZone(StringUtils.trimToNull(organizationName));
} }
} }
@@ -68,6 +68,20 @@ public final class WarehouseOperationZoneDemoData {
); );
return WarehouseOperationZoneVO.builder() 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() .storageOverview(WhStorageOverviewVO.builder()
.title("仓储面积") .title("仓储面积")
.value(10) .value(10)
@@ -144,6 +158,38 @@ public final class WarehouseOperationZoneDemoData {
.build(); .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<WhTemperatureExceptionVO> 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, private static WhMapNodeVO mapNode(long id, String name, double lng, double lat,
String warehouseName, String totalArea, int totalSku, String warehouseName, String totalArea, int totalSku,
int todayOrders, String utilizationRate, String rentalRate) { int todayOrders, String utilizationRate, String rentalRate) {
@@ -19,12 +19,14 @@ import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperat
import com.mhd.common.core.web.controller.BaseController; import com.mhd.common.core.web.controller.BaseController;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
/** /**
@@ -112,20 +114,24 @@ public class BiReportApi extends BaseController {
/** /**
* 仓储运营专区(大屏「仓储运营专区」Tab) * 仓储运营专区(大屏「仓储运营专区」Tab)
*/ */
@ApiOperation(value = "仓储运营专区查询", notes = "返回 DEL_FLAG=1 且 CREATE_TIME 最新一条整包 JSON 解析结果") @ApiOperation(value = "仓储运营专区查询", notes = "未传 organizationName 时返回全表最新一条")
@GetMapping("/warehouseOperationZone") @GetMapping("/warehouseOperationZone")
public BiApiResult<WarehouseOperationZoneVO> warehouseOperationZone() { public BiApiResult<WarehouseOperationZoneVO> warehouseOperationZone(
WarehouseOperationZoneVO data = biWarehouseOperationZoneReportService.loadLatestWarehouseOperationZone(); @ApiParam(value = "企业运营/组织名称")
@RequestParam(value = "organizationName", required = false) String organizationName) {
WarehouseOperationZoneVO data = biWarehouseOperationZoneReportService.loadWarehouseOperationZone(organizationName);
return BiApiResult.ok(data); return BiApiResult.ok(data);
} }
/** /**
* 运输运营专区(大屏「运输运营专区」Tab) * 运输运营专区(大屏「运输运营专区」Tab)
*/ */
@ApiOperation(value = "运输运营专区查询", notes = "返回 DEL_FLAG=1 且 CREATE_TIME 最新的一条整包 JSON 解析结果") @ApiOperation(value = "运输运营专区查询", notes = "未传 organizationName 时返回全表最新一条;传入时双向模糊匹配 ORGANIZATION_NAME(库名包含关键词,或关键词包含库名)")
@GetMapping("/transportOperationZone") @GetMapping("/transportOperationZone")
public BiApiResult<TransportOperationZoneVO> transportOperationZone() { public BiApiResult<TransportOperationZoneVO> transportOperationZone(
TransportOperationZoneVO data = biTransportOperationZoneReportService.loadLatestTransportOperationZone(); @ApiParam(value = "企业运营/组织名称,与快照表 ORGANIZATION_NAME 双向模糊匹配")
@RequestParam(value = "organizationName", required = false) String organizationName) {
TransportOperationZoneVO data = biTransportOperationZoneReportService.loadTransportOperationZone(organizationName);
return BiApiResult.ok(data); return BiApiResult.ok(data);
} }
@@ -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;
}
@@ -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;
}
@@ -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;
}
@@ -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;
}
@@ -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<TrCargoTypeDetailVO> details;
}
@@ -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;
}
@@ -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;
}
@@ -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;
}
@@ -77,4 +77,20 @@ public class TransportOperationZoneVO {
@JsonProperty("transport_summary") @JsonProperty("transport_summary")
@ApiModelProperty("运输统计总结") @ApiModelProperty("运输统计总结")
private TrTransportSummaryVO transportSummary; 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;
} }
@@ -20,6 +20,26 @@ import java.util.List;
@ApiModel("BI-仓储运营专区") @ApiModel("BI-仓储运营专区")
public class WarehouseOperationZoneVO { 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<WhTemperatureExceptionVO> temperatureExceptions;
@JsonProperty("storage_overview") @JsonProperty("storage_overview")
@ApiModelProperty("仓储面积") @ApiModelProperty("仓储面积")
private WhStorageOverviewVO storageOverview; private WhStorageOverviewVO storageOverview;
@@ -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;
}
@@ -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;
}
@@ -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;
}
@@ -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;
}
@@ -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;
}
@@ -7,6 +7,15 @@
select PAYLOAD_JSON select PAYLOAD_JSON
from NGWL_TEST_BI.BI_TRANSPORT_OPERATION_ZONE_SNAPSHOT from NGWL_TEST_BI.BI_TRANSPORT_OPERATION_ZONE_SNAPSHOT
where DEL_FLAG = 1 where DEL_FLAG = 1
<if test="organizationName != null and organizationName != ''">
and (
ORGANIZATION_NAME like '%' || #{organizationName} || '%'
or (
ORGANIZATION_NAME is not null
and INSTR(#{organizationName}, ORGANIZATION_NAME) &gt; 0
)
)
</if>
order by CREATE_TIME desc nulls last, ID desc order by CREATE_TIME desc nulls last, ID desc
limit 1 limit 1
</select> </select>
@@ -7,6 +7,15 @@
select PAYLOAD_JSON select PAYLOAD_JSON
from NGWL_TEST_BI.BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT from NGWL_TEST_BI.BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT
where DEL_FLAG = 1 where DEL_FLAG = 1
<if test="organizationName != null and organizationName != ''">
and (
ORGANIZATION_NAME like '%' || #{organizationName} || '%'
or (
ORGANIZATION_NAME is not null
and INSTR(#{organizationName}, ORGANIZATION_NAME) &gt; 0
)
)
</if>
order by CREATE_TIME desc nulls last, ID desc order by CREATE_TIME desc nulls last, ID desc
limit 1 limit 1
</select> </select>