From 13112db89c5c44be24c427dc4280d00bc82bbddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 6 May 2026 17:48:56 +0800 Subject: [PATCH] =?UTF-8?q?BI=E5=A4=A7=E5=B1=8F=E5=8D=95=E8=A1=A8=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mhd-bi/sql/create_bi_comprehensive_dm.sql | 31 ++++++ .../create_bi_platform_surveillance_dm.sql | 35 +++++++ .../sql/create_bi_warehouse_transport_dm.sql | 31 ++++++ .../main/java/com/mhd/bi/BiApplication.java | 2 +- .../mapper/BiComprehensiveReportMapper.java | 23 +++++ .../service/BiComprehensiveReportService.java | 21 ++++ .../BiPlatformSurveillanceReportMapper.java | 20 ++++ .../BiPlatformSurveillanceReportService.java | 18 ++++ .../BiReportSnapshotMapperSupport.java | 99 +++++++++++++++++++ .../BiWarehouseTransportReportMapper.java | 20 ++++ .../BiWarehouseTransportReportService.java | 18 ++++ .../facadeApi/biReport/BiReportApi.java | 69 +++++++++++++ .../facadeApi/biReport/dto/BiApiResult.java | 24 +++++ .../biReport/vo/ComprehensiveSituationVO.java | 39 ++++++++ .../vo/CustomerContributionRankVO.java | 24 +++++ .../vo/WarehouseTransportSituationVO.java | 78 +++++++++++++++ .../AvgOperationDurationTrendItemVO.java | 25 +++++ .../vo/platform/EfficiencyStatisticsVO.java | 34 +++++++ .../vo/platform/MonthlyTaskStatisticsVO.java | 34 +++++++ .../vo/platform/PlatformAlarmDistItemVO.java | 22 +++++ .../platform/PlatformAlarmStatisticsVO.java | 25 +++++ .../vo/platform/PlatformAlarmTrendItemVO.java | 22 +++++ .../vo/platform/PlatformOverviewVO.java | 28 ++++++ .../vo/platform/PlatformSurveillanceVO.java | 51 ++++++++++ .../vo/platform/PlatformVehicleItemVO.java | 28 ++++++ .../biReport/vo/platform/TaskLoadItemVO.java | 22 +++++ .../vo/platform/TaskTypeCountItemVO.java | 22 +++++ .../vo/platform/TaskTypeStatisticsVO.java | 24 +++++ .../biReport/vo/platform/VehicleStatusVO.java | 28 ++++++ .../BiComprehensiveReportMapper.xml | 12 +++ .../BiPlatformSurveillanceReportMapper.xml | 12 +++ .../BiWarehouseTransportReportMapper.xml | 12 +++ .../mapper/StockOutOrderMapper.java | 7 +- 33 files changed, 958 insertions(+), 2 deletions(-) create mode 100644 mhd-bi/sql/create_bi_comprehensive_dm.sql create mode 100644 mhd-bi/sql/create_bi_platform_surveillance_dm.sql create mode 100644 mhd-bi/sql/create_bi_warehouse_transport_dm.sql create mode 100644 mhd-bi/src/main/java/com/mhd/bi/domain/biComprehensive/repository/mapper/BiComprehensiveReportMapper.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/domain/biComprehensive/service/BiComprehensiveReportService.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformSurveillance/repository/mapper/BiPlatformSurveillanceReportMapper.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformSurveillance/service/BiPlatformSurveillanceReportService.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/domain/biReport/support/BiReportSnapshotMapperSupport.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseTransport/repository/mapper/BiWarehouseTransportReportMapper.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseTransport/service/BiWarehouseTransportReportService.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/dto/BiApiResult.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/ComprehensiveSituationVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/CustomerContributionRankVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/WarehouseTransportSituationVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/AvgOperationDurationTrendItemVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/EfficiencyStatisticsVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/MonthlyTaskStatisticsVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmDistItemVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmStatisticsVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmTrendItemVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformOverviewVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformSurveillanceVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformVehicleItemVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskLoadItemVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskTypeCountItemVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskTypeStatisticsVO.java create mode 100644 mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/VehicleStatusVO.java create mode 100644 mhd-bi/src/main/resources/mapper/biComprehensive/BiComprehensiveReportMapper.xml create mode 100644 mhd-bi/src/main/resources/mapper/biPlatformSurveillance/BiPlatformSurveillanceReportMapper.xml create mode 100644 mhd-bi/src/main/resources/mapper/biWarehouseTransport/BiWarehouseTransportReportMapper.xml diff --git a/mhd-bi/sql/create_bi_comprehensive_dm.sql b/mhd-bi/sql/create_bi_comprehensive_dm.sql new file mode 100644 index 000000000..d6758b80d --- /dev/null +++ b/mhd-bi/sql/create_bi_comprehensive_dm.sql @@ -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; diff --git a/mhd-bi/sql/create_bi_platform_surveillance_dm.sql b/mhd-bi/sql/create_bi_platform_surveillance_dm.sql new file mode 100644 index 000000000..9b91607c7 --- /dev/null +++ b/mhd-bi/sql/create_bi_platform_surveillance_dm.sql @@ -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; diff --git a/mhd-bi/sql/create_bi_warehouse_transport_dm.sql b/mhd-bi/sql/create_bi_warehouse_transport_dm.sql new file mode 100644 index 000000000..9bf319dd8 --- /dev/null +++ b/mhd-bi/sql/create_bi_warehouse_transport_dm.sql @@ -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; diff --git a/mhd-bi/src/main/java/com/mhd/bi/BiApplication.java b/mhd-bi/src/main/java/com/mhd/bi/BiApplication.java index dc87a6747..5a9ec7a44 100644 --- a/mhd-bi/src/main/java/com/mhd/bi/BiApplication.java +++ b/mhd-bi/src/main/java/com/mhd/bi/BiApplication.java @@ -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 diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biComprehensive/repository/mapper/BiComprehensiveReportMapper.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biComprehensive/repository/mapper/BiComprehensiveReportMapper.java new file mode 100644 index 000000000..ec02f70ac --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biComprehensive/repository/mapper/BiComprehensiveReportMapper.java @@ -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, + "综合态势"); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biComprehensive/service/BiComprehensiveReportService.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biComprehensive/service/BiComprehensiveReportService.java new file mode 100644 index 000000000..2698baa54 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biComprehensive/service/BiComprehensiveReportService.java @@ -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(); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformSurveillance/repository/mapper/BiPlatformSurveillanceReportMapper.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformSurveillance/repository/mapper/BiPlatformSurveillanceReportMapper.java new file mode 100644 index 000000000..70be42e06 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformSurveillance/repository/mapper/BiPlatformSurveillanceReportMapper.java @@ -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, + "月台监测"); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformSurveillance/service/BiPlatformSurveillanceReportService.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformSurveillance/service/BiPlatformSurveillanceReportService.java new file mode 100644 index 000000000..2bce3b165 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biPlatformSurveillance/service/BiPlatformSurveillanceReportService.java @@ -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(); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biReport/support/BiReportSnapshotMapperSupport.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biReport/support/BiReportSnapshotMapperSupport.java new file mode 100644 index 000000000..a3f6f7979 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biReport/support/BiReportSnapshotMapperSupport.java @@ -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 parsePayload(String json, Class type, Supplier 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(); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseTransport/repository/mapper/BiWarehouseTransportReportMapper.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseTransport/repository/mapper/BiWarehouseTransportReportMapper.java new file mode 100644 index 000000000..10fbe554e --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseTransport/repository/mapper/BiWarehouseTransportReportMapper.java @@ -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, + "仓储运输"); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseTransport/service/BiWarehouseTransportReportService.java b/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseTransport/service/BiWarehouseTransportReportService.java new file mode 100644 index 000000000..58ae0c060 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/domain/biWarehouseTransport/service/BiWarehouseTransportReportService.java @@ -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(); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java new file mode 100644 index 000000000..b5a17897e --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/BiReportApi.java @@ -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 comprehensive() { + ComprehensiveSituationVO data = biComprehensiveReportService.loadLatestComprehensive(); + return BiApiResult.ok(data); + } + + /** + * 仓储运输指标查询 + */ + @ApiOperation("仓储运输指标查询") + @GetMapping("/warehouseTransport") + public BiApiResult warehouseTransport() { + WarehouseTransportSituationVO data = biWarehouseTransportReportService.loadLatestWarehouseTransport(); + return BiApiResult.ok(data); + } + + /** + * 月台监测指标查询 + */ + @ApiOperation("月台监测指标查询") + @GetMapping("/platformSurveillance") + public BiApiResult platformSurveillance() { + PlatformSurveillanceVO data = biPlatformSurveillanceReportService.loadLatestPlatformSurveillance(); + return BiApiResult.ok(data); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/dto/BiApiResult.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/dto/BiApiResult.java new file mode 100644 index 000000000..e0a9c3306 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/dto/BiApiResult.java @@ -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 { + + private int code = 200; + + private String message = "success"; + + private T data; + + public static BiApiResult ok(T data) { + return new BiApiResult<>(200, "success", data); + } +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/ComprehensiveSituationVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/ComprehensiveSituationVO.java new file mode 100644 index 000000000..8a8864352 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/ComprehensiveSituationVO.java @@ -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 incomeTrend; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/CustomerContributionRankVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/CustomerContributionRankVO.java new file mode 100644 index 000000000..f61e98183 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/CustomerContributionRankVO.java @@ -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 customerName; + + @ApiModelProperty("客户金额,单位:万元") + private List customerAmount; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/WarehouseTransportSituationVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/WarehouseTransportSituationVO.java new file mode 100644 index 000000000..01a6e8711 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/WarehouseTransportSituationVO.java @@ -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 warehouseOrderTrend; + + @ApiModelProperty("吞吐量统计,单位:吨(近半年,按月正序)") + private List throughput; + + @ApiModelProperty("本月周转率,单位:次") + private Integer currentMonthTurnoverRate; + + @ApiModelProperty("本年周转率,单位:次") + private Integer currentYearTurnoverRate; + + @ApiModelProperty("库存周转率趋势,单位:次(近半年,按月正序)") + private List 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 transportTripsTrend; + + @ApiModelProperty("出车利用率,单位:车次(近半年,按月正序)") + private List vehicleUtilizationRate; + + @ApiModelProperty("仓配衔接准时率(近半年,按月正序),单位:%") + private List warehouseDockSyncRate; + + @ApiModelProperty("客户贡献排名") + private CustomerContributionRankVO customerContributionRank; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/AvgOperationDurationTrendItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/AvgOperationDurationTrendItemVO.java new file mode 100644 index 000000000..ce04873c1 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/AvgOperationDurationTrendItemVO.java @@ -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; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/EfficiencyStatisticsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/EfficiencyStatisticsVO.java new file mode 100644 index 000000000..2b90b45a8 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/EfficiencyStatisticsVO.java @@ -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; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/MonthlyTaskStatisticsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/MonthlyTaskStatisticsVO.java new file mode 100644 index 000000000..b3422daae --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/MonthlyTaskStatisticsVO.java @@ -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; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmDistItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmDistItemVO.java new file mode 100644 index 000000000..5d261d257 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmDistItemVO.java @@ -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; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmStatisticsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmStatisticsVO.java new file mode 100644 index 000000000..26d84446b --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmStatisticsVO.java @@ -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; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmTrendItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmTrendItemVO.java new file mode 100644 index 000000000..676b1ae0a --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformAlarmTrendItemVO.java @@ -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; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformOverviewVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformOverviewVO.java new file mode 100644 index 000000000..a34587b34 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformOverviewVO.java @@ -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; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformSurveillanceVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformSurveillanceVO.java new file mode 100644 index 000000000..0efd4039f --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformSurveillanceVO.java @@ -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 vehicles; + + @ApiModelProperty("效率统计(本日)") + private EfficiencyStatisticsVO efficiencyStatistics; + + @ApiModelProperty("月台实时概览") + private PlatformOverviewVO platformOverview; + + @ApiModelProperty("作业车辆状态汇总") + private VehicleStatusVO vehicleStatus; + + @ApiModelProperty("平均作业时长趋势") + private List avgOperationDurationTrend; + + @ApiModelProperty("本月任务统计") + private MonthlyTaskStatisticsVO monthlyTaskStatistics; + + @ApiModelProperty("任务负荷统计(时段)") + private List taskLoadStatistics; + + @ApiModelProperty("月台告警趋势") + private List platformAlarmTrend; + + @ApiModelProperty("任务类型统计") + private TaskTypeStatisticsVO taskTypeStatistics; + + @ApiModelProperty("月台告警统计(本日)") + private PlatformAlarmStatisticsVO platformAlarmStatistics; + + @ApiModelProperty("月台告警分布") + private List platformAlarmDistribution; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformVehicleItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformVehicleItemVO.java new file mode 100644 index 000000000..8ec4ebc49 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/PlatformVehicleItemVO.java @@ -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; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskLoadItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskLoadItemVO.java new file mode 100644 index 000000000..b56db8973 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskLoadItemVO.java @@ -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; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskTypeCountItemVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskTypeCountItemVO.java new file mode 100644 index 000000000..6c1b5c029 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskTypeCountItemVO.java @@ -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; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskTypeStatisticsVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskTypeStatisticsVO.java new file mode 100644 index 000000000..22558e0e1 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/TaskTypeStatisticsVO.java @@ -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 taskTypes; +} diff --git a/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/VehicleStatusVO.java b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/VehicleStatusVO.java new file mode 100644 index 000000000..f71aefe19 --- /dev/null +++ b/mhd-bi/src/main/java/com/mhd/bi/interfaces/facadeApi/biReport/vo/platform/VehicleStatusVO.java @@ -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; +} diff --git a/mhd-bi/src/main/resources/mapper/biComprehensive/BiComprehensiveReportMapper.xml b/mhd-bi/src/main/resources/mapper/biComprehensive/BiComprehensiveReportMapper.xml new file mode 100644 index 000000000..b71fd5735 --- /dev/null +++ b/mhd-bi/src/main/resources/mapper/biComprehensive/BiComprehensiveReportMapper.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/mhd-bi/src/main/resources/mapper/biPlatformSurveillance/BiPlatformSurveillanceReportMapper.xml b/mhd-bi/src/main/resources/mapper/biPlatformSurveillance/BiPlatformSurveillanceReportMapper.xml new file mode 100644 index 000000000..c29740c99 --- /dev/null +++ b/mhd-bi/src/main/resources/mapper/biPlatformSurveillance/BiPlatformSurveillanceReportMapper.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/mhd-bi/src/main/resources/mapper/biWarehouseTransport/BiWarehouseTransportReportMapper.xml b/mhd-bi/src/main/resources/mapper/biWarehouseTransport/BiWarehouseTransportReportMapper.xml new file mode 100644 index 000000000..0692697bc --- /dev/null +++ b/mhd-bi/src/main/resources/mapper/biWarehouseTransport/BiWarehouseTransportReportMapper.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/mapper/StockOutOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/mapper/StockOutOrderMapper.java index 2b0dda4ea..e67a73048 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/mapper/StockOutOrderMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/mapper/StockOutOrderMapper.java @@ -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 { List queryOutStockNoticePrintDetail(StockOutOrderDTO stockOutOrderDTO); - List queryCopyCodeWeightListByBatch(String batchNumber, Long materialBaseInfoId, Long warehouseId, String boxPalletNo); + List queryCopyCodeWeightListByBatch(@Param("batchNumber") String batchNumber, + @Param("materialBaseInfoId") Long materialBaseInfoId, + @Param("warehouseId") Long warehouseId, + @Param("boxPalletNo") String boxPalletNo); List queryOutStockNoticePrintDetailGF(StockOutOrderDTO stockOutOrderDTO); }