BI大屏单表查询修改

This commit is contained in:
秦鸿展
2026-05-06 17:48:56 +08:00
parent d86639ba4b
commit 13112db89c
33 changed files with 958 additions and 2 deletions
@@ -0,0 +1,69 @@
package com.mhd.bi.interfaces.facadeApi.biReport;
import com.mhd.bi.domain.biComprehensive.service.BiComprehensiveReportService;
import com.mhd.bi.domain.biPlatformSurveillance.service.BiPlatformSurveillanceReportService;
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.platform.PlatformSurveillanceVO;
import com.mhd.common.core.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* BI 报表接口
*/
@Api(tags = "BI报表")
@Slf4j
@RestController
@RequestMapping("/biReport")
@CrossOrigin
public class BiReportApi extends BaseController {
@Autowired
private BiComprehensiveReportService biComprehensiveReportService;
@Autowired
private BiWarehouseTransportReportService biWarehouseTransportReportService;
@Autowired
private BiPlatformSurveillanceReportService biPlatformSurveillanceReportService;
/**
* 综合态势指标查询
*/
@ApiOperation("综合态势指标查询")
@GetMapping("/comprehensive")
public BiApiResult<ComprehensiveSituationVO> comprehensive() {
ComprehensiveSituationVO data = biComprehensiveReportService.loadLatestComprehensive();
return BiApiResult.ok(data);
}
/**
* 仓储运输指标查询
*/
@ApiOperation("仓储运输指标查询")
@GetMapping("/warehouseTransport")
public BiApiResult<WarehouseTransportSituationVO> warehouseTransport() {
WarehouseTransportSituationVO data = biWarehouseTransportReportService.loadLatestWarehouseTransport();
return BiApiResult.ok(data);
}
/**
* 月台监测指标查询
*/
@ApiOperation("月台监测指标查询")
@GetMapping("/platformSurveillance")
public BiApiResult<PlatformSurveillanceVO> platformSurveillance() {
PlatformSurveillanceVO data = biPlatformSurveillanceReportService.loadLatestPlatformSurveillance();
return BiApiResult.ok(data);
}
}
@@ -0,0 +1,24 @@
package com.mhd.bi.interfaces.facadeApi.biReport.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* BI 接口统一响应(与前端约定:message 字段)
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BiApiResult<T> {
private int code = 200;
private String message = "success";
private T data;
public static <T> BiApiResult<T> ok(T data) {
return new BiApiResult<>(200, "success", data);
}
}
@@ -0,0 +1,39 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo;
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("综合态势指标")
public class ComprehensiveSituationVO {
@ApiModelProperty("增值服务收入,单位:元人民币")
private Long valueAddedServiceIncome;
@ApiModelProperty("库存周转率,单位:次")
private Integer inventoryTurnover;
@ApiModelProperty("运输订单量,单位:单")
private Integer orderCount;
@ApiModelProperty("车辆利用率,单位:%")
private Double vehicleUtilizationRate;
@ApiModelProperty("百公里油耗,单位:升")
private Integer fuelConsumptionPerHundredKm;
@ApiModelProperty("运输收入趋势,单位:万元(近半年,按月正序)")
private List<Integer> incomeTrend;
}
@@ -0,0 +1,24 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo;
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("客户贡献排名(前5")
public class CustomerContributionRankVO {
@ApiModelProperty("客户名称")
private List<String> customerName;
@ApiModelProperty("客户金额,单位:万元")
private List<Integer> customerAmount;
}
@@ -0,0 +1,78 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo;
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("仓储运输指标")
public class WarehouseTransportSituationVO {
@ApiModelProperty("仓配衔接准时率,单位:%")
private Double warehouseDistributionOnTimeRate;
@ApiModelProperty("本年度订单,单位:单")
private Long currentYearOrders;
@ApiModelProperty("本季度订单,单位:单")
private Integer currentQuarterOrders;
@ApiModelProperty("本月度订单,单位:单")
private Integer currentMonthOrders;
@ApiModelProperty("仓库订单趋势,单位:单(近半年,按月正序)")
private List<Integer> warehouseOrderTrend;
@ApiModelProperty("吞吐量统计,单位:吨(近半年,按月正序)")
private List<Integer> throughput;
@ApiModelProperty("本月周转率,单位:次")
private Integer currentMonthTurnoverRate;
@ApiModelProperty("本年周转率,单位:次")
private Integer currentYearTurnoverRate;
@ApiModelProperty("库存周转率趋势,单位:次(近半年,按月正序)")
private List<Integer> inventoryTurnoverTrend;
@ApiModelProperty("总收入,单位:万元")
private Integer totalTransportIncome;
@ApiModelProperty("订单数量,单位:单")
private Integer orderCount;
@ApiModelProperty("运输车次,单位:次")
private Integer transportTrips;
@ApiModelProperty("运输货量,单位:万吨")
private Integer annualTransportVolume;
@ApiModelProperty("运输订单总数,单位:单")
private Integer transportOrderTotal;
@ApiModelProperty("跨境订单,单位:单")
private Integer crossBorderTransportOrder;
@ApiModelProperty("国内订单,单位:单")
private Integer domesticTransportOrder;
@ApiModelProperty("运输车次趋势(近半年,按月正序)")
private List<Integer> transportTripsTrend;
@ApiModelProperty("出车利用率,单位:车次(近半年,按月正序)")
private List<Integer> vehicleUtilizationRate;
@ApiModelProperty("仓配衔接准时率(近半年,按月正序),单位:%")
private List<Integer> warehouseDockSyncRate;
@ApiModelProperty("客户贡献排名")
private CustomerContributionRankVO customerContributionRank;
}
@@ -0,0 +1,25 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-平均作业时长趋势项")
public class AvgOperationDurationTrendItemVO {
@ApiModelProperty("月份")
private String month;
@ApiModelProperty("园区作业时长")
private Double yardDuration;
@ApiModelProperty("月台作业时长")
private Double platformDuration;
}
@@ -0,0 +1,34 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-效率统计(本日)")
public class EfficiencyStatisticsVO {
@ApiModelProperty("入园超时率,单位:%")
private Integer entryOvertimeRate;
@ApiModelProperty("超时数量,单位:个")
private Integer overtimeCount;
@ApiModelProperty("月台作业准时率,单位:%")
private Integer platformOnTimeRate;
@ApiModelProperty("月台作业平均时长,单位:小时")
private Double avgPlatformDuration;
@ApiModelProperty("园区作业准时率,单位:%")
private Integer yardOnTimeRate;
@ApiModelProperty("园区作业平均时长,单位:小时")
private Double avgYardDuration;
}
@@ -0,0 +1,34 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-本月任务统计")
public class MonthlyTaskStatisticsVO {
@ApiModelProperty("任务量,单位:个")
private Integer taskTotal;
@ApiModelProperty("任务量同比,单位:%")
private Integer taskTotalYoY;
@ApiModelProperty("任务平均作业时长,单位:小时")
private Double avgTaskDuration;
@ApiModelProperty("任务平均作业时长同比,单位:%")
private Integer avgDurationYoY;
@ApiModelProperty("任务完成率,单位:%")
private Integer taskCompletionRate;
@ApiModelProperty("任务完成率同比,单位:%")
private Integer completionRateYoY;
}
@@ -0,0 +1,22 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-告警分布项")
public class PlatformAlarmDistItemVO {
@ApiModelProperty("告警类型")
private String type;
@ApiModelProperty("告警数量")
private Integer count;
}
@@ -0,0 +1,25 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-月台告警统计(本日)")
public class PlatformAlarmStatisticsVO {
@ApiModelProperty("今日告警总数,单位:个")
private Integer todayAlarmTotal;
@ApiModelProperty("今日已处理告警数,单位:个")
private Integer handled;
@ApiModelProperty("今日未处理告警数,单位:个")
private Integer unhandled;
}
@@ -0,0 +1,22 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-告警趋势项")
public class PlatformAlarmTrendItemVO {
@ApiModelProperty("日期")
private String date;
@ApiModelProperty("告警数量")
private Integer alarmCount;
}
@@ -0,0 +1,28 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-月台实时概览")
public class PlatformOverviewVO {
@ApiModelProperty("月台数量,单位:个")
private Integer totalPlatforms;
@ApiModelProperty("当前占用率,单位:%")
private Integer currentOccupancyRate;
@ApiModelProperty("当前作业中,单位:个")
private Integer operatingPlatforms;
@ApiModelProperty("今日作业任务,单位:个")
private Integer todayTasks;
}
@@ -0,0 +1,51 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测指标")
public class PlatformSurveillanceVO {
@ApiModelProperty("作业车辆状态列表")
private List<PlatformVehicleItemVO> vehicles;
@ApiModelProperty("效率统计(本日)")
private EfficiencyStatisticsVO efficiencyStatistics;
@ApiModelProperty("月台实时概览")
private PlatformOverviewVO platformOverview;
@ApiModelProperty("作业车辆状态汇总")
private VehicleStatusVO vehicleStatus;
@ApiModelProperty("平均作业时长趋势")
private List<AvgOperationDurationTrendItemVO> avgOperationDurationTrend;
@ApiModelProperty("本月任务统计")
private MonthlyTaskStatisticsVO monthlyTaskStatistics;
@ApiModelProperty("任务负荷统计(时段)")
private List<TaskLoadItemVO> taskLoadStatistics;
@ApiModelProperty("月台告警趋势")
private List<PlatformAlarmTrendItemVO> platformAlarmTrend;
@ApiModelProperty("任务类型统计")
private TaskTypeStatisticsVO taskTypeStatistics;
@ApiModelProperty("月台告警统计(本日)")
private PlatformAlarmStatisticsVO platformAlarmStatistics;
@ApiModelProperty("月台告警分布")
private List<PlatformAlarmDistItemVO> platformAlarmDistribution;
}
@@ -0,0 +1,28 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-作业车辆")
public class PlatformVehicleItemVO {
@ApiModelProperty("车牌号码")
private String plateNumber;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("作业月台")
private String platformId;
@ApiModelProperty("月台作业时长,单位:分钟")
private Integer platformDuration;
}
@@ -0,0 +1,22 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-任务负荷时段项")
public class TaskLoadItemVO {
@ApiModelProperty("时段")
private String time;
@ApiModelProperty("任务数量")
private Integer taskCount;
}
@@ -0,0 +1,22 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-任务类型项")
public class TaskTypeCountItemVO {
@ApiModelProperty("任务类型")
private String type;
@ApiModelProperty("任务数量")
private Integer count;
}
@@ -0,0 +1,24 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-任务类型统计")
public class TaskTypeStatisticsVO {
@ApiModelProperty("本月任务总量,单位:个")
private Integer totalTasks;
@ApiModelProperty("各类型任务")
private List<TaskTypeCountItemVO> taskTypes;
}
@@ -0,0 +1,28 @@
package com.mhd.bi.interfaces.facadeApi.biReport.vo.platform;
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("月台监测-作业车辆状态汇总")
public class VehicleStatusVO {
@ApiModelProperty("今日预约车辆,单位:辆")
private Integer todayReservedVehicles;
@ApiModelProperty("当前未签到,单位:辆")
private Integer notCheckedIn;
@ApiModelProperty("当前作业中,单位:辆")
private Integer operatingVehicles;
@ApiModelProperty("作业完成,单位:辆")
private Integer completedVehicles;
}