Merge remote-tracking branch 'origin/dev_WMS20260401' into dev_WMS20260401

This commit is contained in:
王奎兴
2026-05-06 17:56:19 +08:00
33 changed files with 958 additions and 2 deletions
+31
View File
@@ -0,0 +1,31 @@
-- =============================================================================
-- 达梦 DM8:综合态势(单表,可重复执行)
-- 接口:GET /biReport/comprehensive
-- 执行顺序:删除历史多表/旧快照 → 建 BI_COMPREHENSIVE_SNAPSHOT → 示例 INSERT
-- PAYLOAD_JSON 与 ComprehensiveSituationVO 字段名一致;应用取 UPDATE_TIME 最新一条。
-- =============================================================================
-- 子表优先
DROP TABLE IF EXISTS BI_COMPREHENSIVE_INCOME_TREND;
DROP TABLE IF EXISTS BI_COMPREHENSIVE_METRIC;
DROP TABLE IF EXISTS BI_COMPREHENSIVE_SNAPSHOT;
CREATE TABLE BI_COMPREHENSIVE_SNAPSHOT (
ID BIGINT IDENTITY(1,1) NOT NULL,
PAYLOAD_JSON CLOB NOT NULL,
CREATE_TIME DATETIME DEFAULT NULL,
UPDATE_TIME DATETIME DEFAULT NULL,
REMARK VARCHAR(500) DEFAULT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IDX_BI_COMP_SNAP_UPD ON BI_COMPREHENSIVE_SNAPSHOT(UPDATE_TIME);
COMMENT ON TABLE BI_COMPREHENSIVE_SNAPSHOT IS '综合态势-整包 JSON 快照';
INSERT INTO BI_COMPREHENSIVE_SNAPSHOT (PAYLOAD_JSON, CREATE_TIME, UPDATE_TIME)
VALUES (
'{"valueAddedServiceIncome":5330000,"inventoryTurnover":25,"orderCount":42300,"vehicleUtilizationRate":97.4,"fuelConsumptionPerHundredKm":15,"incomeTrend":[280,210,260,310,470,390]}',
SYSDATE,
SYSDATE
);
COMMIT;
@@ -0,0 +1,35 @@
-- =============================================================================
-- 达梦 DM8:月台监测(单表,可重复执行)
-- 接口:GET /biReport/platformSurveillance
-- 执行顺序:删除历史多表/旧快照 → 建 BI_PLATFORM_SURVEILLANCE_SNAPSHOT → 示例 INSERT
-- PAYLOAD_JSON 与 PlatformSurveillanceVO 一致;应用 ORDER BY UPDATE_TIME DESC LIMIT 1。
-- =============================================================================
DROP TABLE IF EXISTS BI_PS_ALARM_DIST;
DROP TABLE IF EXISTS BI_PS_TASK_TYPE;
DROP TABLE IF EXISTS BI_PS_ALARM_TREND;
DROP TABLE IF EXISTS BI_PS_TASK_LOAD;
DROP TABLE IF EXISTS BI_PS_AVG_DURATION_TREND;
DROP TABLE IF EXISTS BI_PS_VEHICLE;
DROP TABLE IF EXISTS BI_PLATFORM_SURVEILLANCE_METRIC;
DROP TABLE IF EXISTS BI_PLATFORM_SURVEILLANCE_SNAPSHOT;
CREATE TABLE BI_PLATFORM_SURVEILLANCE_SNAPSHOT (
ID BIGINT IDENTITY(1,1) NOT NULL,
PAYLOAD_JSON CLOB NOT NULL,
CREATE_TIME DATETIME DEFAULT NULL,
UPDATE_TIME DATETIME DEFAULT NULL,
REMARK VARCHAR(500) DEFAULT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IDX_BI_PS_SNAP_UPD ON BI_PLATFORM_SURVEILLANCE_SNAPSHOT(UPDATE_TIME);
COMMENT ON TABLE BI_PLATFORM_SURVEILLANCE_SNAPSHOT IS '月台监测-整包 JSON 快照';
INSERT INTO BI_PLATFORM_SURVEILLANCE_SNAPSHOT (PAYLOAD_JSON, CREATE_TIME, UPDATE_TIME)
VALUES (
'{"vehicles":[{"plateNumber":"粤CFR1958","status":"作业中","platformId":"#48","platformDuration":265},{"plateNumber":"粤CFR1958","status":"已离园","platformId":"#48","platformDuration":265},{"plateNumber":"粤CFR1958","status":"作业中","platformId":"#48","platformDuration":265},{"plateNumber":"粤CFR1958","status":"作业中","platformId":"#48","platformDuration":265},{"plateNumber":"粤CFR1958","status":"作业中","platformId":"#48","platformDuration":265},{"plateNumber":"粤CFR1958","status":"作业中","platformId":"#48","platformDuration":265}],"efficiencyStatistics":{"entryOvertimeRate":60,"overtimeCount":45,"platformOnTimeRate":92,"avgPlatformDuration":4.5,"yardOnTimeRate":88,"avgYardDuration":4.5},"platformOverview":{"totalPlatforms":43,"currentOccupancyRate":50,"operatingPlatforms":23,"todayTasks":324},"vehicleStatus":{"todayReservedVehicles":3000,"notCheckedIn":1500,"operatingVehicles":1000,"completedVehicles":1000},"avgOperationDurationTrend":[{"month":"11月","yardDuration":10,"platformDuration":23},{"month":"12月","yardDuration":14,"platformDuration":15},{"month":"1月","yardDuration":23.5,"platformDuration":20},{"month":"2月","yardDuration":22,"platformDuration":17},{"month":"3月","yardDuration":13,"platformDuration":14},{"month":"4月","yardDuration":17,"platformDuration":10}],"monthlyTaskStatistics":{"taskTotal":1455,"taskTotalYoY":5,"avgTaskDuration":4.5,"avgDurationYoY":-5,"taskCompletionRate":95,"completionRateYoY":5},"taskLoadStatistics":[{"time":"15时","taskCount":100},{"time":"16时","taskCount":110},{"time":"17时","taskCount":115},{"time":"18时","taskCount":80},{"time":"19时","taskCount":60},{"time":"20时","taskCount":40},{"time":"21时","taskCount":40},{"time":"22时","taskCount":40},{"time":"23时","taskCount":30},{"time":"0时","taskCount":10},{"time":"1时","taskCount":10},{"time":"2时","taskCount":10},{"time":"3时","taskCount":10},{"time":"4时","taskCount":10},{"time":"5时","taskCount":10},{"time":"6时","taskCount":20},{"time":"7时","taskCount":30},{"time":"8时","taskCount":70},{"time":"9时","taskCount":95},{"time":"10时","taskCount":110},{"time":"11时","taskCount":120},{"time":"12时","taskCount":130},{"time":"13时","taskCount":130}],"platformAlarmTrend":[{"date":"11日","alarmCount":10},{"date":"12日","alarmCount":14},{"date":"13日","alarmCount":23},{"date":"14日","alarmCount":22},{"date":"15日","alarmCount":13},{"date":"16日","alarmCount":17},{"date":"17日","alarmCount":8}],"taskTypeStatistics":{"totalTasks":4325,"taskTypes":[{"type":"类型1","count":2400},{"type":"类型2","count":2300},{"type":"类型3","count":2300},{"type":"类型4","count":2300}]},"platformAlarmStatistics":{"todayAlarmTotal":13,"handled":12,"unhandled":1},"platformAlarmDistribution":[{"type":"类型1","count":300},{"type":"类型2","count":245},{"type":"类型3","count":280},{"type":"类型4","count":340},{"type":"类型5","count":455},{"type":"类型6","count":400},{"type":"类型7","count":300}]}',
SYSDATE,
SYSDATE
);
COMMIT;
@@ -0,0 +1,31 @@
-- =============================================================================
-- 达梦 DM8:仓储运输(单表,可重复执行)
-- 接口:GET /biReport/warehouseTransport
-- 执行顺序:删除历史多表/旧快照 → 建 BI_WAREHOUSE_TRANSPORT_SNAPSHOT → 示例 INSERT
-- PAYLOAD_JSON 与 WarehouseTransportSituationVO 字段名一致;应用取 UPDATE_TIME 最新一条。
-- =============================================================================
DROP TABLE IF EXISTS BI_WTS_CUSTOMER_RANK;
DROP TABLE IF EXISTS BI_WTS_TIME_SERIES;
DROP TABLE IF EXISTS BI_WAREHOUSE_TRANSPORT_METRIC;
DROP TABLE IF EXISTS BI_WAREHOUSE_TRANSPORT_SNAPSHOT;
CREATE TABLE BI_WAREHOUSE_TRANSPORT_SNAPSHOT (
ID BIGINT IDENTITY(1,1) NOT NULL,
PAYLOAD_JSON CLOB NOT NULL,
CREATE_TIME DATETIME DEFAULT NULL,
UPDATE_TIME DATETIME DEFAULT NULL,
REMARK VARCHAR(500) DEFAULT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IDX_BI_WTS_SNAP_UPD ON BI_WAREHOUSE_TRANSPORT_SNAPSHOT(UPDATE_TIME);
COMMENT ON TABLE BI_WAREHOUSE_TRANSPORT_SNAPSHOT IS '仓储运输-整包 JSON 快照';
INSERT INTO BI_WAREHOUSE_TRANSPORT_SNAPSHOT (PAYLOAD_JSON, CREATE_TIME, UPDATE_TIME)
VALUES (
'{"warehouseDistributionOnTimeRate":99.2,"currentYearOrders":525440,"currentQuarterOrders":225120,"currentMonthOrders":23560,"warehouseOrderTrend":[100,93,85,70,98,88],"throughput":[10,14,23,10,13,19],"currentMonthTurnoverRate":3,"currentYearTurnoverRate":4,"inventoryTurnoverTrend":[10,14,23,22,13,17],"totalTransportIncome":5850,"orderCount":856,"transportTrips":533,"annualTransportVolume":15,"transportOrderTotal":4325,"crossBorderTransportOrder":2400,"domesticTransportOrder":2300,"transportTripsTrend":[100,140,230,100,130,192],"vehicleUtilizationRate":[600,460,350,470,450,620],"warehouseDockSyncRate":[100,98,87,78,97,86],"customerContributionRank":{"customerName":["客户A","客户B","客户C","客户D","客户E"],"customerAmount":[147,150,170,160,180]}}',
SYSDATE,
SYSDATE
);
COMMIT;
@@ -12,7 +12,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication(scanBasePackages = {"com.mhd", "com.mhd.bi"})
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.mhd","com.mhd.bi.infrastructure.feign"})
@EnableFeignClients(basePackages = {"com.mhd"})
@MapperScan("com.mhd.bi.domain.**.mapper")
@Import({SetFeildValueAspect.class, CommonService.class})
@EnableAsync
@@ -0,0 +1,23 @@
package com.mhd.bi.domain.biComprehensive.repository.mapper;
import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.ComprehensiveSituationVO;
/**
* 综合态势:SQL 见 BiComprehensiveReportMapper.xml;取数与组装均在 Mapper 层完成。
*/
public interface BiComprehensiveReportMapper {
String selectLatestPayloadJson();
/**
* 最新快照 → VO(内部调用 {@link #selectLatestPayloadJson()}
*/
default ComprehensiveSituationVO loadLatestComprehensive() {
return BiReportSnapshotMapperSupport.parsePayload(
selectLatestPayloadJson(),
ComprehensiveSituationVO.class,
BiReportSnapshotMapperSupport::emptyComprehensiveSituation,
"综合态势");
}
}
@@ -0,0 +1,21 @@
package com.mhd.bi.domain.biComprehensive.service;
import com.mhd.bi.domain.biComprehensive.repository.mapper.BiComprehensiveReportMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.ComprehensiveSituationVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 综合态势:数据访问仅经 Mapper(含 XML 内 SQL 与 Mapper 默认方法组装)。
*/
@Service
public class BiComprehensiveReportService {
@Resource
private BiComprehensiveReportMapper biComprehensiveReportMapper;
public ComprehensiveSituationVO loadLatestComprehensive() {
return biComprehensiveReportMapper.loadLatestComprehensive();
}
}
@@ -0,0 +1,20 @@
package com.mhd.bi.domain.biPlatformSurveillance.repository.mapper;
import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformSurveillanceVO;
/**
* 月台监测:SQL 见 BiPlatformSurveillanceReportMapper.xml;取数与组装均在 Mapper 层完成。
*/
public interface BiPlatformSurveillanceReportMapper {
String selectLatestPayloadJson();
default PlatformSurveillanceVO loadLatestPlatformSurveillance() {
return BiReportSnapshotMapperSupport.parsePayload(
selectLatestPayloadJson(),
PlatformSurveillanceVO.class,
BiReportSnapshotMapperSupport::emptyPlatformSurveillance,
"月台监测");
}
}
@@ -0,0 +1,18 @@
package com.mhd.bi.domain.biPlatformSurveillance.service;
import com.mhd.bi.domain.biPlatformSurveillance.repository.mapper.BiPlatformSurveillanceReportMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.platform.PlatformSurveillanceVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class BiPlatformSurveillanceReportService {
@Resource
private BiPlatformSurveillanceReportMapper biPlatformSurveillanceReportMapper;
public PlatformSurveillanceVO loadLatestPlatformSurveillance() {
return biPlatformSurveillanceReportMapper.loadLatestPlatformSurveillance();
}
}
@@ -0,0 +1,99 @@
package com.mhd.bi.domain.biReport.support;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.ComprehensiveSituationVO;
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.platform.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.util.Collections;
import java.util.function.Supplier;
/**
* Mapper 层使用的快照 JSON 解析与空态(SQL 仅定义在对应 Mapper.xml
*/
@Slf4j
public final class BiReportSnapshotMapperSupport {
private static final ObjectMapper MAPPER = new ObjectMapper();
private BiReportSnapshotMapperSupport() {
}
public static <T> T parsePayload(String json, Class<T> type, Supplier<T> empty, String logLabel) {
if (StringUtils.isBlank(json)) {
return empty.get();
}
try {
return MAPPER.readValue(json.trim(), type);
} catch (Exception e) {
log.warn("{} PAYLOAD_JSON 解析失败,返回空态", logLabel, e);
return empty.get();
}
}
public static ComprehensiveSituationVO emptyComprehensiveSituation() {
return ComprehensiveSituationVO.builder()
.valueAddedServiceIncome(0L)
.inventoryTurnover(0)
.orderCount(0)
.vehicleUtilizationRate(0d)
.fuelConsumptionPerHundredKm(0)
.incomeTrend(Collections.emptyList())
.build();
}
public static WarehouseTransportSituationVO emptyWarehouseTransportSituation() {
return WarehouseTransportSituationVO.builder()
.warehouseDistributionOnTimeRate(0d)
.currentYearOrders(0L)
.currentQuarterOrders(0)
.currentMonthOrders(0)
.warehouseOrderTrend(Collections.emptyList())
.throughput(Collections.emptyList())
.currentMonthTurnoverRate(0)
.currentYearTurnoverRate(0)
.inventoryTurnoverTrend(Collections.emptyList())
.totalTransportIncome(0)
.orderCount(0)
.transportTrips(0)
.annualTransportVolume(0)
.transportOrderTotal(0)
.crossBorderTransportOrder(0)
.domesticTransportOrder(0)
.transportTripsTrend(Collections.emptyList())
.vehicleUtilizationRate(Collections.emptyList())
.warehouseDockSyncRate(Collections.emptyList())
.customerContributionRank(CustomerContributionRankVO.builder()
.customerName(Collections.emptyList())
.customerAmount(Collections.emptyList())
.build())
.build();
}
public static PlatformSurveillanceVO emptyPlatformSurveillance() {
return PlatformSurveillanceVO.builder()
.vehicles(Collections.emptyList())
.efficiencyStatistics(EfficiencyStatisticsVO.builder()
.entryOvertimeRate(0).overtimeCount(0).platformOnTimeRate(0)
.avgPlatformDuration(0d).yardOnTimeRate(0).avgYardDuration(0d).build())
.platformOverview(PlatformOverviewVO.builder()
.totalPlatforms(0).currentOccupancyRate(0).operatingPlatforms(0).todayTasks(0).build())
.vehicleStatus(VehicleStatusVO.builder()
.todayReservedVehicles(0).notCheckedIn(0).operatingVehicles(0).completedVehicles(0).build())
.avgOperationDurationTrend(Collections.emptyList())
.monthlyTaskStatistics(MonthlyTaskStatisticsVO.builder()
.taskTotal(0).taskTotalYoY(0).avgTaskDuration(0d).avgDurationYoY(0)
.taskCompletionRate(0).completionRateYoY(0).build())
.taskLoadStatistics(Collections.emptyList())
.platformAlarmTrend(Collections.emptyList())
.taskTypeStatistics(TaskTypeStatisticsVO.builder()
.totalTasks(0).taskTypes(Collections.emptyList()).build())
.platformAlarmStatistics(PlatformAlarmStatisticsVO.builder()
.todayAlarmTotal(0).handled(0).unhandled(0).build())
.platformAlarmDistribution(Collections.emptyList())
.build();
}
}
@@ -0,0 +1,20 @@
package com.mhd.bi.domain.biWarehouseTransport.repository.mapper;
import com.mhd.bi.domain.biReport.support.BiReportSnapshotMapperSupport;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.WarehouseTransportSituationVO;
/**
* 仓储运输:SQL 见 BiWarehouseTransportReportMapper.xml;取数与组装均在 Mapper 层完成。
*/
public interface BiWarehouseTransportReportMapper {
String selectLatestPayloadJson();
default WarehouseTransportSituationVO loadLatestWarehouseTransport() {
return BiReportSnapshotMapperSupport.parsePayload(
selectLatestPayloadJson(),
WarehouseTransportSituationVO.class,
BiReportSnapshotMapperSupport::emptyWarehouseTransportSituation,
"仓储运输");
}
}
@@ -0,0 +1,18 @@
package com.mhd.bi.domain.biWarehouseTransport.service;
import com.mhd.bi.domain.biWarehouseTransport.repository.mapper.BiWarehouseTransportReportMapper;
import com.mhd.bi.interfaces.facadeApi.biReport.vo.WarehouseTransportSituationVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class BiWarehouseTransportReportService {
@Resource
private BiWarehouseTransportReportMapper biWarehouseTransportReportMapper;
public WarehouseTransportSituationVO loadLatestWarehouseTransport() {
return biWarehouseTransportReportMapper.loadLatestWarehouseTransport();
}
}
@@ -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;
}
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mhd.bi.domain.biComprehensive.repository.mapper.BiComprehensiveReportMapper">
<select id="selectLatestPayloadJson" resultType="java.lang.String">
select PAYLOAD_JSON
from BI_COMPREHENSIVE_SNAPSHOT
order by UPDATE_TIME desc, ID desc
limit 1
</select>
</mapper>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mhd.bi.domain.biPlatformSurveillance.repository.mapper.BiPlatformSurveillanceReportMapper">
<select id="selectLatestPayloadJson" resultType="java.lang.String">
select PAYLOAD_JSON
from BI_PLATFORM_SURVEILLANCE_SNAPSHOT
order by UPDATE_TIME desc, ID desc
limit 1
</select>
</mapper>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mhd.bi.domain.biWarehouseTransport.repository.mapper.BiWarehouseTransportReportMapper">
<select id="selectLatestPayloadJson" resultType="java.lang.String">
select PAYLOAD_JSON
from BI_WAREHOUSE_TRANSPORT_SNAPSHOT
order by UPDATE_TIME desc, ID desc
limit 1
</select>
</mapper>
@@ -8,6 +8,8 @@ import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO;
import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO;
import com.mhd.wms.interfaces.dto.stockOutOrder.StockOutOrderDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
@@ -26,7 +28,10 @@ public interface StockOutOrderMapper extends BaseMapper<StockOutOrder> {
List<OutMaterialDetailPO> queryOutStockNoticePrintDetail(StockOutOrderDTO stockOutOrderDTO);
List<CopyCodeReferencePO> queryCopyCodeWeightListByBatch(String batchNumber, Long materialBaseInfoId, Long warehouseId, String boxPalletNo);
List<CopyCodeReferencePO> queryCopyCodeWeightListByBatch(@Param("batchNumber") String batchNumber,
@Param("materialBaseInfoId") Long materialBaseInfoId,
@Param("warehouseId") Long warehouseId,
@Param("boxPalletNo") String boxPalletNo);
List<OutMaterialDetailPO> queryOutStockNoticePrintDetailGF(StockOutOrderDTO stockOutOrderDTO);
}