BI大屏新加仓储运营专区接口查询

This commit is contained in:
秦鸿展
2026-05-15 10:31:06 +08:00
parent 3a6cefa0f6
commit d0836cb5c6
26 changed files with 778 additions and 3 deletions
@@ -6,6 +6,7 @@ import com.mhd.bi.interfaces.facadeApi.biReport.vo.CustomerContributionRankVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.WarehouseTransportSituationVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.*;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.*;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -134,4 +135,35 @@ public final class BiReportSnapshotMapperSupport {
.build())
.build();
}
public static WarehouseOperationZoneVO emptyWarehouseOperationZone() {
return WarehouseOperationZoneVO.builder()
.storageOverview(WhStorageOverviewVO.builder()
.title("").value(0).unit("").subText("").build())
.operationStats(WhOperationStatsVO.builder()
.title("").value(0).unit("").growthRate("").trend("").build())
.businessPlanning(WhBusinessPlanningVO.builder()
.generalWarehouse(0).coldStorage(0).foodProcessing(0).automatedStorage(0).build())
.throughputTrend(Collections.emptyList())
.areaDistribution(WhAreaDistributionVO.builder()
.utilizationRate("").details(Collections.emptyList()).build())
.capacityUtilizationTrend(WhCapacityUtilizationTrendVO.builder()
.peakLabel("").data(Collections.emptyList()).build())
.orderStatistics(WhOrderStatisticsVO.builder()
.annualOrders(0L).quarterlyOrders(0L).monthlyOrders(0L).build())
.serviceStatistics(WhServiceStatisticsVO.builder()
.clients(0).coverage("").onTimeRate("").rateChange("").build())
.orderTrend(Collections.emptyList())
.turnoverRateTrend(WhTurnoverRateTrendVO.builder()
.currentMonth("").annual("").data(Collections.emptyList()).build())
.serviceCapacity(Collections.emptyList())
.realTimeAnalysis(WhRealTimeAnalysisVO.builder()
.utilizationRate(WhRealTimeGaugeVO.builder().value("").comparison("").trend("").build())
.rentalRate(WhRealTimeGaugeVO.builder().value("").comparison("").trend("").build())
.build())
.mapPopup(WhMapPopupVO.builder()
.warehouseName("").totalArea("").totalSku(0).todayOrders(0)
.utilizationRate("").rentalRate("").build())
.build();
}
}
@@ -14,4 +14,6 @@ public interface BiSnapshotWriteMapper {
int insertPlatformSurveillanceSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark);
int insertOverallOperationSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark);
int insertWarehouseOperationZoneSnapshot(@Param("payloadJson") String payloadJson, @Param("remark") String remark);
}
@@ -8,7 +8,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* 定时将业务快照写入 BI_COMPREHENSIVE_SNAPSHOT / BI_WAREHOUSE_TRANSPORT_SNAPSHOT / BI_PLATFORM_SURVEILLANCE_SNAPSHOT / BI_OVERALL_OPERATION_SNAPSHOT。
* 定时将业务快照写入 BI_COMPREHENSIVE_SNAPSHOT / BI_WAREHOUSE_TRANSPORT_SNAPSHOT / BI_PLATFORM_SURVEILLANCE_SNAPSHOT / BI_OVERALL_OPERATION_SNAPSHOT / BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT
* <p>默认关闭,需在配置中设置 {@code mhd.bi.snapshot-sync.enabled=true}。</p>
*/
@Slf4j
@@ -3,10 +3,12 @@ package com.mhd.bi.domain.biSnapshotSync.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mhd.bi.domain.biSnapshotSync.repository.mapper.BiSnapshotWriteMapper;
import com.mhd.bi.domain.biSnapshotSync.support.BiSnapshotWeeklyRandomDataBuilder;
import com.mhd.bi.domain.biWarehouseOperationZone.support.WarehouseOperationZoneDemoData;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.ComprehensiveSituationVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.WarehouseTransportSituationVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.OverallOperationSituationVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformSurveillanceVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -14,7 +16,7 @@ import org.springframework.stereotype.Service;
import java.util.Random;
/**
* BI 快照表定时同步(综合态势 / 仓储运输 / 月台监测 / 总体运营态势)。
* BI 快照表定时同步(综合态势 / 仓储运输 / 月台监测 / 总体运营态势 / 仓储运营专区)。
* <p><b>当前(临时)</b>{@code build*} 使用 {@link BiSnapshotWeeklyRandomDataBuilder},每次执行使用新的 {@link Random}
* 故<b>同一天多次手动触发、以及每次定时任务执行</b>,生成的模拟数据均<b>不相同</b>(仍在基准 ±20% 内)。</p>
* <p><b>后续改造</b>:在各 {@code build*} 中改为查库/Feign 聚合真实业务并组装 VO。</p>
@@ -37,6 +39,7 @@ public class BiReportSnapshotSyncService {
syncWarehouseTransportSnapshot();
syncPlatformSurveillanceSnapshot();
syncOverallOperationSnapshot();
syncWarehouseOperationZoneSnapshot();
}
public void syncComprehensiveSnapshot() {
@@ -95,6 +98,20 @@ public class BiReportSnapshotSyncService {
}
}
public void syncWarehouseOperationZoneSnapshot() {
try {
WarehouseOperationZoneVO vo = buildWarehouseOperationZoneSnapshot();
String json = objectMapper.writeValueAsString(vo);
int rows = biSnapshotWriteMapper.insertWarehouseOperationZoneSnapshot(json, REMARK_SYNC);
if (rows < 1) {
log.warn("BI 仓储运营专区快照 INSERT 影响行数为 {},请确认 NGWL_TEST_BI.BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT", rows);
}
log.info("BI 仓储运营专区快照已写入, affectedRows={}", rows);
} catch (Exception e) {
log.error("BI 仓储运营专区快照同步失败", e);
}
}
/**
* TODO 业务落地:改为查询真实数据组装 VO。临时实现见 {@link BiSnapshotWeeklyRandomDataBuilder#overallOperation(Random)}。
*/
@@ -118,4 +135,11 @@ public class BiReportSnapshotSyncService {
protected PlatformSurveillanceVO buildPlatformSurveillanceSnapshot() {
return BiSnapshotWeeklyRandomDataBuilder.platformSurveillance(new Random());
}
/**
* TODO 业务落地:改为查询真实数据组装 VO。当前为 {@link WarehouseOperationZoneDemoData} 静态示例。
*/
protected WarehouseOperationZoneVO buildWarehouseOperationZoneSnapshot() {
return WarehouseOperationZoneDemoData.build();
}
}
@@ -0,0 +1,20 @@
package com.mhd.bi.domain.biWarehouseOperationZone.repository.mapper;
import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO;
/**
* 仓储运营专区:取 NGWL_TEST_BI.BI_WAREHOUSE_OPERATION_ZONE_SNAPSHOT 最新 PAYLOAD_JSON 并解析。
*/
public interface BiWarehouseOperationZoneReportMapper {
String selectLatestPayloadJson();
default WarehouseOperationZoneVO loadLatestWarehouseOperationZone() {
return BiReportSnapshotMapperSupport.parsePayload(
selectLatestPayloadJson(),
WarehouseOperationZoneVO.class,
BiReportSnapshotMapperSupport::emptyWarehouseOperationZone,
"仓储运营专区");
}
}
@@ -0,0 +1,21 @@
package com.mhd.bi.domain.biWarehouseOperationZone.service;
import com.mhd.bi.domain.biWarehouseOperationZone.repository.mapper.BiWarehouseOperationZoneReportMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 南光物流业务经营分析 · 仓储运营专区
*/
@Service
public class BiWarehouseOperationZoneReportService {
@Resource
private BiWarehouseOperationZoneReportMapper biWarehouseOperationZoneReportMapper;
public WarehouseOperationZoneVO loadLatestWarehouseOperationZone() {
return biWarehouseOperationZoneReportMapper.loadLatestWarehouseOperationZone();
}
}
@@ -0,0 +1,139 @@
package com.mhd.bi.domain.biWarehouseOperationZone.support;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.*;
import java.util.Arrays;
import java.util.List;
/**
* 仓储运营专区快照演示数据(对齐大屏示例 JSON;后续可改为真实聚合)。
*/
public final class WarehouseOperationZoneDemoData {
private WarehouseOperationZoneDemoData() {
}
public static WarehouseOperationZoneVO build() {
List<WhThroughputMonthItemVO> throughputTrend = Arrays.asList(
WhThroughputMonthItemVO.builder().month("11月").value(10).build(),
WhThroughputMonthItemVO.builder().month("12月").value(14).build(),
WhThroughputMonthItemVO.builder().month("1月").value(22).build(),
WhThroughputMonthItemVO.builder().month("2月").value(21).build(),
WhThroughputMonthItemVO.builder().month("3月").value(13).build(),
WhThroughputMonthItemVO.builder().month("4月").value(16).build(),
WhThroughputMonthItemVO.builder().month("5月").value(8).build()
);
List<WhAreaDistributionDetailVO> areaDetails = Arrays.asList(
WhAreaDistributionDetailVO.builder().name("普通仓出租面积").value(9400).unit("").build(),
WhAreaDistributionDetailVO.builder().name("自动化立库出租面积").value(9400).unit("").build(),
WhAreaDistributionDetailVO.builder().name("闲置面积").value(9400).unit("").build(),
WhAreaDistributionDetailVO.builder().name("冷冻仓出租面积").value(9400).unit("").build()
);
List<WhMonthRatePointVO> capTrendData = Arrays.asList(
WhMonthRatePointVO.builder().month("1月").rate(20).build(),
WhMonthRatePointVO.builder().month("2月").rate(30).build(),
WhMonthRatePointVO.builder().month("3月").rate(55).build(),
WhMonthRatePointVO.builder().month("4月").rate(40).build(),
WhMonthRatePointVO.builder().month("5月").rate(45).build(),
WhMonthRatePointVO.builder().month("6月").rate(60).build(),
WhMonthRatePointVO.builder().month("7月").rate(50).build()
);
List<WhMonthRatePointVO> orderTrend = Arrays.asList(
WhMonthRatePointVO.builder().month("1月").rate(100).build(),
WhMonthRatePointVO.builder().month("2月").rate(90).build(),
WhMonthRatePointVO.builder().month("3月").rate(75).build(),
WhMonthRatePointVO.builder().month("4月").rate(70).build(),
WhMonthRatePointVO.builder().month("5月").rate(95).build(),
WhMonthRatePointVO.builder().month("6月").rate(85).build()
);
List<WhMonthRatePointVO> turnoverData = Arrays.asList(
WhMonthRatePointVO.builder().month("11月").rate(10).build(),
WhMonthRatePointVO.builder().month("12月").rate(15).build(),
WhMonthRatePointVO.builder().month("1月").rate(22).build(),
WhMonthRatePointVO.builder().month("2月").rate(20).build(),
WhMonthRatePointVO.builder().month("3月").rate(12).build(),
WhMonthRatePointVO.builder().month("4月").rate(16).build()
);
List<WhServiceCapacityRowVO> serviceCapacity = Arrays.asList(
WhServiceCapacityRowVO.builder().rank(1).name("君华仓").totalArea("1.2万m²").processed("2,400单").throughput("2.2万吨").build(),
WhServiceCapacityRowVO.builder().rank(2).name("通宇仓").totalArea("1.2万m²").processed("1,800单").throughput("1.1万吨").build(),
WhServiceCapacityRowVO.builder().rank(3).name("横琴仓").totalArea("1.2万m²").processed("1,200单").throughput("1.5万吨").build(),
WhServiceCapacityRowVO.builder().rank(4).name("新南仓").totalArea("1.2万m²").processed("800单").throughput("2.1万吨").build(),
WhServiceCapacityRowVO.builder().rank(5).name("谷丰仓").totalArea("1.2万m²").processed("567单").throughput("1.8万吨").build()
);
return WarehouseOperationZoneVO.builder()
.storageOverview(WhStorageOverviewVO.builder()
.title("仓储面积")
.value(10)
.unit("万m²")
.subText("覆盖仓库数8个")
.build())
.operationStats(WhOperationStatsVO.builder()
.title("年吞吐量")
.value(26)
.unit("万吨")
.growthRate("8.5%")
.trend("up")
.build())
.businessPlanning(WhBusinessPlanningVO.builder()
.generalWarehouse(43000)
.coldStorage(15000)
.foodProcessing(11000)
.automatedStorage(5200)
.build())
.throughputTrend(throughputTrend)
.areaDistribution(WhAreaDistributionVO.builder()
.utilizationRate("85%")
.details(areaDetails)
.build())
.capacityUtilizationTrend(WhCapacityUtilizationTrendVO.builder()
.peakLabel("60%")
.data(capTrendData)
.build())
.orderStatistics(WhOrderStatisticsVO.builder()
.annualOrders(525440L)
.quarterlyOrders(225120L)
.monthlyOrders(23560L)
.build())
.serviceStatistics(WhServiceStatisticsVO.builder()
.clients(582)
.coverage("覆盖港珠澳")
.onTimeRate("98.2%")
.rateChange("0.4%")
.build())
.orderTrend(orderTrend)
.turnoverRateTrend(WhTurnoverRateTrendVO.builder()
.currentMonth("3次")
.annual("4次")
.data(turnoverData)
.build())
.serviceCapacity(serviceCapacity)
.realTimeAnalysis(WhRealTimeAnalysisVO.builder()
.utilizationRate(WhRealTimeGaugeVO.builder()
.value("50.8%")
.comparison("3.4%")
.trend("up")
.build())
.rentalRate(WhRealTimeGaugeVO.builder()
.value("70.8%")
.comparison("3.4%")
.trend("up")
.build())
.build())
.mapPopup(WhMapPopupVO.builder()
.warehouseName("通宇保税仓")
.totalArea("2000m2")
.totalSku(668)
.todayOrders(237)
.utilizationRate("85%")
.rentalRate("37.1%")
.build())
.build();
}
}
@@ -4,12 +4,14 @@ import com.mhd.bi.domain.biSnapshotSync.service.BiReportSnapshotSyncService;
import com.mhd.bi.domain.biComprehensive.service.BiComprehensiveReportService;
import com.mhd.bi.domain.biPlatformSurveillance.service.BiPlatformSurveillanceReportService;
import com.mhd.bi.domain.biOverallOperation.service.BiOverallOperationReportService;
import com.mhd.bi.domain.biWarehouseOperationZone.service.BiWarehouseOperationZoneReportService;
import com.mhd.bi.domain.biWarehouseTransport.service.BiWarehouseTransportReportService;
import com.mhd.bi.interfaces.facadeApi.biReport.dto.BiApiResult;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.ComprehensiveSituationVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.WarehouseTransportSituationVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.overall.OverallOperationSituationVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformSurveillanceVO;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone.WarehouseOperationZoneVO;
import com.mhd.common.core.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -43,11 +45,14 @@ public class BiReportApi extends BaseController {
@Autowired
private BiOverallOperationReportService biOverallOperationReportService;
@Autowired
private BiWarehouseOperationZoneReportService biWarehouseOperationZoneReportService;
@Autowired
private BiReportSnapshotSyncService biReportSnapshotSyncService;
@ApiOperation(value = "手动触发快照同步", notes = "立即写入各 BI 快照表(综合、仓储运输、月台监测、总体运营);须带 X-BI-Access-Token")
@ApiOperation(value = "手动触发快照同步", notes = "立即写入各 BI 快照表(综合、仓储运输、月台监测、总体运营、仓储运营专区);须带 X-BI-Access-Token")
@PostMapping("/snapshotSync/run")
public BiApiResult<Void> runSnapshotSyncOnce() {
biReportSnapshotSyncService.syncAllSnapshots();
@@ -93,4 +98,14 @@ public class BiReportApi extends BaseController {
OverallOperationSituationVO data = biOverallOperationReportService.loadLatestOverallOperation();
return BiApiResult.ok(data);
}
/**
* 仓储运营专区(大屏「仓储运营专区」Tab)
*/
@ApiOperation(value = "仓储运营专区查询", notes = "返回 DEL_FLAG=1 且 CREATE_TIME 最新的一条整包 JSON 解析结果")
@GetMapping("/warehouseOperationZone")
public BiApiResult<WarehouseOperationZoneVO> warehouseOperationZone() {
WarehouseOperationZoneVO data = biWarehouseOperationZoneReportService.loadLatestWarehouseOperationZone();
return BiApiResult.ok(data);
}
}
@@ -0,0 +1,74 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 南光物流业务经营分析 · 仓储运营专区(整包 data 与快照 PAYLOAD_JSON 一致)
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区")
public class WarehouseOperationZoneVO {
@JsonProperty("storage_overview")
@ApiModelProperty("仓储面积")
private WhStorageOverviewVO storageOverview;
@JsonProperty("operation_stats")
@ApiModelProperty("运营统计")
private WhOperationStatsVO operationStats;
@JsonProperty("business_planning")
@ApiModelProperty("业务规划")
private WhBusinessPlanningVO businessPlanning;
@JsonProperty("throughput_trend")
@ApiModelProperty("吞吐量统计(柱状图)")
private List<WhThroughputMonthItemVO> throughputTrend;
@JsonProperty("area_distribution")
@ApiModelProperty("仓库面积统计(环形图)")
private WhAreaDistributionVO areaDistribution;
@JsonProperty("capacity_utilization_trend")
@ApiModelProperty("库容利用趋势")
private WhCapacityUtilizationTrendVO capacityUtilizationTrend;
@JsonProperty("order_statistics")
@ApiModelProperty("仓库订单统计")
private WhOrderStatisticsVO orderStatistics;
@JsonProperty("service_statistics")
@ApiModelProperty("服务统计")
private WhServiceStatisticsVO serviceStatistics;
@JsonProperty("order_trend")
@ApiModelProperty("仓库订单趋势")
private List<WhMonthRatePointVO> orderTrend;
@JsonProperty("turnover_rate_trend")
@ApiModelProperty("库存周转率趋势")
private WhTurnoverRateTrendVO turnoverRateTrend;
@JsonProperty("service_capacity")
@ApiModelProperty("服务能力表格")
private List<WhServiceCapacityRowVO> serviceCapacity;
@JsonProperty("real_time_analysis")
@ApiModelProperty("实时分析")
private WhRealTimeAnalysisVO realTimeAnalysis;
@JsonProperty("map_popup")
@ApiModelProperty("地图弹窗示例数据")
private WhMapPopupVO mapPopup;
}
@@ -0,0 +1,25 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-面积分布明细")
public class WhAreaDistributionDetailVO {
@ApiModelProperty("分类名称")
private String name;
@ApiModelProperty("数值")
private Integer value;
@ApiModelProperty("单位")
private String unit;
}
@@ -0,0 +1,26 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-仓库面积统计(环形图)")
public class WhAreaDistributionVO {
@JsonProperty("utilization_rate")
@ApiModelProperty("总利用率展示")
private String utilizationRate;
@ApiModelProperty("分项")
private List<WhAreaDistributionDetailVO> details;
}
@@ -0,0 +1,33 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-业务规划(面积 m²)")
public class WhBusinessPlanningVO {
@JsonProperty("general_warehouse")
@ApiModelProperty("普通仓规划")
private Integer generalWarehouse;
@JsonProperty("cold_storage")
@ApiModelProperty("冷冻仓规划")
private Integer coldStorage;
@JsonProperty("food_processing")
@ApiModelProperty("食品加工区规划")
private Integer foodProcessing;
@JsonProperty("automated_storage")
@ApiModelProperty("自动化立库规划")
private Integer automatedStorage;
}
@@ -0,0 +1,26 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-库容利用趋势")
public class WhCapacityUtilizationTrendVO {
@JsonProperty("peak_label")
@ApiModelProperty("峰值标注")
private String peakLabel;
@ApiModelProperty("按月序列")
private List<WhMonthRatePointVO> data;
}
@@ -0,0 +1,41 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-地图弹窗")
public class WhMapPopupVO {
@JsonProperty("warehouse_name")
@ApiModelProperty("仓库名称")
private String warehouseName;
@JsonProperty("total_area")
@ApiModelProperty("总面积")
private String totalArea;
@JsonProperty("total_sku")
@ApiModelProperty("SKU 数")
private Integer totalSku;
@JsonProperty("today_orders")
@ApiModelProperty("当日订单")
private Integer todayOrders;
@JsonProperty("utilization_rate")
@ApiModelProperty("库容利用率")
private String utilizationRate;
@JsonProperty("rental_rate")
@ApiModelProperty("仓库出租率")
private String rentalRate;
}
@@ -0,0 +1,22 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-月份-比率点")
public class WhMonthRatePointVO {
@ApiModelProperty("月份")
private String month;
@ApiModelProperty("比率或趋势值")
private Integer rate;
}
@@ -0,0 +1,33 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-运营统计")
public class WhOperationStatsVO {
@ApiModelProperty("标题")
private String title;
@ApiModelProperty("数值")
private Integer value;
@ApiModelProperty("单位")
private String unit;
@JsonProperty("growth_rate")
@ApiModelProperty("增幅文案")
private String growthRate;
@ApiModelProperty("趋势:up / down")
private String trend;
}
@@ -0,0 +1,29 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-仓库订单统计")
public class WhOrderStatisticsVO {
@JsonProperty("annual_orders")
@ApiModelProperty("本年度订单")
private Long annualOrders;
@JsonProperty("quarterly_orders")
@ApiModelProperty("本季度订单")
private Long quarterlyOrders;
@JsonProperty("monthly_orders")
@ApiModelProperty("本月度订单")
private Long monthlyOrders;
}
@@ -0,0 +1,25 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-实时分析")
public class WhRealTimeAnalysisVO {
@JsonProperty("utilization_rate")
@ApiModelProperty("库容利用率")
private WhRealTimeGaugeVO utilizationRate;
@JsonProperty("rental_rate")
@ApiModelProperty("仓库出租率")
private WhRealTimeGaugeVO rentalRate;
}
@@ -0,0 +1,25 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-实时分析仪表盘单项")
public class WhRealTimeGaugeVO {
@ApiModelProperty("当前值")
private String value;
@ApiModelProperty("同比变化")
private String comparison;
@ApiModelProperty("趋势:up / down")
private String trend;
}
@@ -0,0 +1,33 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-服务能力表格行")
public class WhServiceCapacityRowVO {
@ApiModelProperty("序号")
private Integer rank;
@ApiModelProperty("仓库名称")
private String name;
@JsonProperty("total_area")
@ApiModelProperty("总面积展示")
private String totalArea;
@ApiModelProperty("仓储单量展示")
private String processed;
@ApiModelProperty("吞吐量展示")
private String throughput;
}
@@ -0,0 +1,31 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-服务统计")
public class WhServiceStatisticsVO {
@ApiModelProperty("合作客户数")
private Integer clients;
@ApiModelProperty("覆盖范围文案")
private String coverage;
@JsonProperty("on_time_rate")
@ApiModelProperty("订单准时率")
private String onTimeRate;
@JsonProperty("rate_change")
@ApiModelProperty("准时率变化")
private String rateChange;
}
@@ -0,0 +1,30 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-仓储面积")
public class WhStorageOverviewVO {
@ApiModelProperty("标题")
private String title;
@ApiModelProperty("数值")
private Integer value;
@ApiModelProperty("单位")
private String unit;
@JsonProperty("sub_text")
@ApiModelProperty("副文案")
private String subText;
}
@@ -0,0 +1,22 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-吞吐量月度点")
public class WhThroughputMonthItemVO {
@ApiModelProperty("月份标签")
private String month;
@ApiModelProperty("数值")
private Integer value;
}
@@ -0,0 +1,29 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.warehouseZone;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("BI-仓储运营专区-库存周转率趋势")
public class WhTurnoverRateTrendVO {
@JsonProperty("current_month")
@ApiModelProperty("本周周转率展示文案")
private String currentMonth;
@ApiModelProperty("本年度周转率展示文案")
private String annual;
@ApiModelProperty("按月序列")
private List<WhMonthRatePointVO> data;
}