From af86a1fdfff35c7e001372d7707cce74889482b2 Mon Sep 17 00:00:00 2001 From: zzh <1368735060@qq.com> Date: Sat, 1 Aug 2026 11:56:15 +0800 Subject: [PATCH] Remove KPI warning areas and slim transport warning scene schema. Drop legacy scene match columns from code/SQL and delete unused area tables guidance for pre-prod cleanup. Co-authored-by: Cursor --- ...ansport_warning_scene_drop_legacy_cols.sql | 211 ++++++++++++++++++ .../20260801_transport_warning_simplify.sql | 4 +- .../AutoMapper/WarningMapperProfile.cs | 24 -- .../Dtos/Forewarning/AreaCacheEntry.cs | 29 --- .../Dtos/Forewarning/RuleAreaBaseInfo.cs | 17 -- .../Transport/TransportWarningSceneDto.cs | 42 +--- .../UpsertTransportWarningSceneInput.cs | 23 +- .../Events/ClearRulCacheEvent.cs | 7 +- .../Hangfire/WarningNotifyAggregator.cs | 22 +- .../KpiAreaCacheService.cs | 24 -- .../ForewarningServices/KpiAreaService.cs | 147 ------------ .../Handlers/TransportWarningHandler.cs | 30 +-- .../Warning/Model/TransportWarningSceneBO.cs | 39 +--- .../Warning/TransportWarningService.cs | 29 +-- .../KPIAreaAggregate/IKpiAreaRepository.cs | 75 ------- .../KPIAreaAggregate/RuleAreaEntity.cs | 52 ----- .../KPIAreaAggregate/RuleAreaInfoEntity.cs | 80 ------- .../Transport/TransportWarningDetailsIndex.cs | 23 +- .../Transport/TransportWarningSceneEntity.cs | 45 +--- .../TransportWarningSceneRuleItemEntity.cs | 6 +- .../WarningAggregate/WarningRuleEntity.cs | 4 +- .../Consts/GlobalConst.Redis.cs | 5 - .../Forewarning/AddRuleAreaInfoRequest.cs | 44 ---- .../Dtos/Forewarning/AreaDto.cs | 29 --- .../Dtos/Forewarning/AreaInfoDto.cs | 46 ---- .../Dtos/Forewarning/CreateRuleAreaRequest.cs | 18 -- .../Dtos/Forewarning/KpiAreaInfo.cs | 31 --- .../Dtos/Forewarning/QueryAreaInfoRequest.cs | 9 - .../Dtos/Forewarning/QueryAreaRequest.cs | 14 -- .../Forewarning/UpdateRuleAreaInfoRequest.cs | 46 ---- .../Dtos/Forewarning/UpdateRuleAreaRequest.cs | 17 -- .../Repositories/KpiAreaInfoRepository.cs | 5 - .../Repositories/KpiAreaRepository.cs | 130 ----------- 33 files changed, 269 insertions(+), 1058 deletions(-) create mode 100644 scripts/sql/20260801_transport_warning_scene_drop_legacy_cols.sql delete mode 100644 src/TrackCenter.Application/Dtos/Forewarning/AreaCacheEntry.cs delete mode 100644 src/TrackCenter.Application/Dtos/Forewarning/RuleAreaBaseInfo.cs delete mode 100644 src/TrackCenter.Application/Services/ForewarningServices/KpiAreaCacheService.cs delete mode 100644 src/TrackCenter.Application/Services/ForewarningServices/KpiAreaService.cs delete mode 100644 src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/IKpiAreaRepository.cs delete mode 100644 src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/RuleAreaEntity.cs delete mode 100644 src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/RuleAreaInfoEntity.cs delete mode 100644 src/TrackCenter.Domain/Dtos/Forewarning/AddRuleAreaInfoRequest.cs delete mode 100644 src/TrackCenter.Domain/Dtos/Forewarning/AreaDto.cs delete mode 100644 src/TrackCenter.Domain/Dtos/Forewarning/AreaInfoDto.cs delete mode 100644 src/TrackCenter.Domain/Dtos/Forewarning/CreateRuleAreaRequest.cs delete mode 100644 src/TrackCenter.Domain/Dtos/Forewarning/KpiAreaInfo.cs delete mode 100644 src/TrackCenter.Domain/Dtos/Forewarning/QueryAreaInfoRequest.cs delete mode 100644 src/TrackCenter.Domain/Dtos/Forewarning/QueryAreaRequest.cs delete mode 100644 src/TrackCenter.Domain/Dtos/Forewarning/UpdateRuleAreaInfoRequest.cs delete mode 100644 src/TrackCenter.Domain/Dtos/Forewarning/UpdateRuleAreaRequest.cs delete mode 100644 src/TrackCenter.Repository/Repositories/KpiAreaInfoRepository.cs delete mode 100644 src/TrackCenter.Repository/Repositories/KpiAreaRepository.cs diff --git a/scripts/sql/20260801_transport_warning_scene_drop_legacy_cols.sql b/scripts/sql/20260801_transport_warning_scene_drop_legacy_cols.sql new file mode 100644 index 00000000..7636d957 --- /dev/null +++ b/scripts/sql/20260801_transport_warning_scene_drop_legacy_cols.sql @@ -0,0 +1,211 @@ +-- 运输时效场景表瘦身:删除历史匹配字段,并同步现行字段注释 +-- 执行前请备份 t_warning_transport_scene +-- 依赖:已执行 20260801_transport_warning_simplify.sql(CountryCode / AssessmentTotalTimeSpan 已存在) +-- 注释更新通过 information_schema 保留原列类型,避免误改长度/默认值 + +-- 1) 删除历史字段(列不存在则跳过,避免 1091) +SET @schema = DATABASE(); + +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning_transport_scene` DROP COLUMN `IsTransit`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning_transport_scene' AND COLUMN_NAME = 'IsTransit' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning_transport_scene` DROP COLUMN `CargoType`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning_transport_scene' AND COLUMN_NAME = 'CargoType' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning_transport_scene` DROP COLUMN `LeavePort`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning_transport_scene' AND COLUMN_NAME = 'LeavePort' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning_transport_scene` DROP COLUMN `Months`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning_transport_scene' AND COLUMN_NAME = 'Months' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning_transport_scene` DROP COLUMN `AreaId`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning_transport_scene' AND COLUMN_NAME = 'AreaId' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- 2) 表注释 +ALTER TABLE t_warning_transport_scene + COMMENT = '运输时效场景(产品+国家+考核总时效)'; + +-- 3) 现行字段注释(保留原 COLUMN_TYPE / NULLABLE) + +-- WarningId +SELECT CONCAT( + 'ALTER TABLE `t_warning_transport_scene` MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, + IF(IS_NULLABLE = 'YES', ' NULL', ' NOT NULL'), + ' COMMENT ''预警规则主体Id(t_warning.Id,运输时效为 AppKey 级方案)''' + ) +INTO @sql +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = @schema + AND TABLE_NAME = 't_warning_transport_scene' + AND COLUMN_NAME = 'WarningId'; +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- ProductCode +SELECT CONCAT( + 'ALTER TABLE `t_warning_transport_scene` MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, + IF(IS_NULLABLE = 'YES', ' NULL', ' NOT NULL'), + ' COMMENT ''销售产品编码(单一,命中订单产品)''' + ) +INTO @sql +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = @schema + AND TABLE_NAME = 't_warning_transport_scene' + AND COLUMN_NAME = 'ProductCode'; +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- CountryCode +SELECT CONCAT( + 'ALTER TABLE `t_warning_transport_scene` MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, + IF(IS_NULLABLE = 'YES', ' NULL', ' NOT NULL'), + ' COMMENT ''到达国家二字码(单一,命中订单到达国家)''' + ) +INTO @sql +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = @schema + AND TABLE_NAME = 't_warning_transport_scene' + AND COLUMN_NAME = 'CountryCode'; +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- AssessmentTotalTimeSpan +SELECT CONCAT( + 'ALTER TABLE `t_warning_transport_scene` MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, + IF(IS_NULLABLE = 'YES', ' NULL', ' NOT NULL'), + ' COMMENT ''考核总时效(小时;前端按天录入后×24入库)''' + ) +INTO @sql +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = @schema + AND TABLE_NAME = 't_warning_transport_scene' + AND COLUMN_NAME = 'AssessmentTotalTimeSpan'; +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +ALTER TABLE t_warning_transport_scene_rule_item + COMMENT = '运输时效场景分段规则项'; + +-- WarningId / TransportWarningSceneId 注释 +SELECT CONCAT( + 'ALTER TABLE `t_warning_transport_scene_rule_item` MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, + IF(IS_NULLABLE = 'YES', ' NULL', ' NOT NULL'), + ' COMMENT ''预警规则主体Id(t_warning.Id)''' + ) +INTO @sql +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = @schema + AND TABLE_NAME = 't_warning_transport_scene_rule_item' + AND COLUMN_NAME = 'WarningId'; +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SELECT CONCAT( + 'ALTER TABLE `t_warning_transport_scene_rule_item` MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, + IF(IS_NULLABLE = 'YES', ' NULL', ' NOT NULL'), + ' COMMENT ''运输时效场景Id(t_warning_transport_scene.Id)''' + ) +INTO @sql +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = @schema + AND TABLE_NAME = 't_warning_transport_scene_rule_item' + AND COLUMN_NAME = 'TransportWarningSceneId'; +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- 4) t_warning.Customer:运输时效 AppKey 级方案(固定空串);回传/完整预警仍按客户匹配 +SELECT CONCAT( + 'ALTER TABLE `t_warning` MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, + IF(IS_NULLABLE = 'YES', ' NULL', ' NOT NULL'), + ' COMMENT ''客户(运输时效固定空串;回传/完整预警按客户匹配)''' + ) +INTO @sql +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = @schema + AND TABLE_NAME = 't_warning' + AND COLUMN_NAME = 'Customer'; +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- 5) t_warning 上若仍残留旧匹配列 / CustomName(实体已不映射),按列存在则删 +-- drop helper: 仅当列存在时生成 DROP,否则 SELECT 1 +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning` DROP COLUMN `IsTransit`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning' AND COLUMN_NAME = 'IsTransit' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning` DROP COLUMN `CargoType`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning' AND COLUMN_NAME = 'CargoType' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning` DROP COLUMN `LeavePort`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning' AND COLUMN_NAME = 'LeavePort' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning` DROP COLUMN `Months`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning' AND COLUMN_NAME = 'Months' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning` DROP COLUMN `AreaId`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning' AND COLUMN_NAME = 'AreaId' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) > 0, 'ALTER TABLE `t_warning` DROP COLUMN `CustomName`', 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = 't_warning' AND COLUMN_NAME = 'CustomName' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- 6) 废表清理(代码已无映射;未上线可直接删) +-- 现行预警相关表(勿删): +-- t_warning +-- t_warning_transport_scene +-- t_warning_transport_scene_rule_item +-- t_warning_transport_generate_task +-- t_warning_notify_task +-- t_warning_return_rule_item +-- t_warning_return_retry_task +-- t_warning_complete_rule_item +-- +-- 执行前可先核对: +-- SHOW TABLES LIKE 't_warning%'; +-- SHOW TABLES LIKE 't_area%'; +-- SHOW TABLES LIKE 't_rule_area%'; + +-- 6.1 WarningRuleEntity 映射为 t_warning,无 t_warning_rule +DROP TABLE IF EXISTS t_warning_rule; + +-- 6.2 预警分区已下线(原 KPIAreaAggregate:RuleAreaEntity / RuleAreaInfoEntity) +DROP TABLE IF EXISTS t_area_details; +DROP TABLE IF EXISTS t_area; +-- 注释里曾写 t_rule_area,若库中存在且无代码引用也可删 +DROP TABLE IF EXISTS t_rule_area; +DROP TABLE IF EXISTS t_rule_area_details; diff --git a/scripts/sql/20260801_transport_warning_simplify.sql b/scripts/sql/20260801_transport_warning_simplify.sql index 3868b618..a68121ed 100644 --- a/scripts/sql/20260801_transport_warning_simplify.sql +++ b/scripts/sql/20260801_transport_warning_simplify.sql @@ -3,11 +3,11 @@ -- 1) 国家列(若已存在可跳过) ALTER TABLE t_warning_transport_scene - ADD COLUMN CountryCode VARCHAR(16) NULL COMMENT '国家二字码(单一)' AFTER ProductCode; + ADD COLUMN CountryCode VARCHAR(16) NULL COMMENT '到达国家二字码(单一,命中订单到达国家)' AFTER ProductCode; -- 2) 考核总时效(小时) ALTER TABLE t_warning_transport_scene - ADD COLUMN AssessmentTotalTimeSpan FLOAT NULL COMMENT '考核总时效(小时)' AFTER CountryCode; + ADD COLUMN AssessmentTotalTimeSpan FLOAT NULL COMMENT '考核总时效(小时;前端按天录入后×24入库)' AFTER CountryCode; -- 3) 运输时效规则主体改为方案级:客户清空 UPDATE t_warning diff --git a/src/TrackCenter.Application/AutoMapper/WarningMapperProfile.cs b/src/TrackCenter.Application/AutoMapper/WarningMapperProfile.cs index 43f9043c..8026706d 100644 --- a/src/TrackCenter.Application/AutoMapper/WarningMapperProfile.cs +++ b/src/TrackCenter.Application/AutoMapper/WarningMapperProfile.cs @@ -2,8 +2,6 @@ using AutoMapper; using TrackCenter.Application.Dtos.Warning.Complete; using TrackCenter.Application.Dtos.Warning.Return; using TrackCenter.Application.Dtos.Warning.Transport; -using TrackCenter.Domain.Aggregates.KPIAreaAggregate; -using TrackCenter.Domain.Dtos.Forewarning; using TrackCenter.Domain.Dtos.Warning; namespace TrackCenter.Application.AutoMapper; @@ -15,27 +13,5 @@ public class WarningMapperProfile : Profile CreateMap(MemberList.None); CreateMap(MemberList.None); CreateMap(MemberList.None); - // kpi区域 - CreateMap(MemberList.None); - CreateMap(MemberList.None) - .ForMember(dest => dest.CountryCode, opt => opt.MapFrom(src => src.CountryCode)) - .ForMember(dest => dest.CountryName, opt => opt.MapFrom(src => src.CountryName)) - .ForMember(dest => dest.Province, opt => opt.MapFrom(src => src.Province)) - .ForMember(dest => dest.City, opt => opt.MapFrom(src => src.City)) - .ForMember(dest => dest.LeftPostcode, opt => opt.MapFrom(src => src.LeftPostCode)) - .ForMember(dest => dest.RightPostcode, opt => opt.MapFrom(src => src.RightPostCode)) - .ForMember(dest => dest.AreaId, opt => opt.MapFrom(src => src.AreaId)); - - CreateMap(MemberList.None) - .ForMember(dest => dest.AppKey, opt => opt.MapFrom(src => src.AppKey)) - .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)); - - CreateMap(MemberList.None) - .ForMember(dest => dest.CountryCode, opt => opt.MapFrom(src => src.CountryCode)) - .ForMember(dest => dest.CountryName, opt => opt.MapFrom(src => src.CountryName)) - .ForMember(dest => dest.Province, opt => opt.MapFrom(src => src.Province)) - .ForMember(dest => dest.City, opt => opt.MapFrom(src => src.City)) - .ForMember(dest => dest.LeftPostcode, opt => opt.MapFrom(src => src.LeftPostCode)) - .ForMember(dest => dest.RightPostcode, opt => opt.MapFrom(src => src.RightPostCode)); } } diff --git a/src/TrackCenter.Application/Dtos/Forewarning/AreaCacheEntry.cs b/src/TrackCenter.Application/Dtos/Forewarning/AreaCacheEntry.cs deleted file mode 100644 index 10c2582e..00000000 --- a/src/TrackCenter.Application/Dtos/Forewarning/AreaCacheEntry.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace TrackCenter.Application.Dtos.Forewarning; - -public class AreaCacheEntry -{ - /// - /// 国家或地区 - /// - public string CountryCode { get; set; } = null!; - - /// - /// 省份 - /// - public string? Province { get; set; } - - /// - /// 城市 - /// - public string? City { get; set; } - - /// - /// 开始邮编 - /// - public string? LeftPostcode { get; set; } - - /// - /// 截止邮编 - /// - public string? RightPostcode { get; set; } -} diff --git a/src/TrackCenter.Application/Dtos/Forewarning/RuleAreaBaseInfo.cs b/src/TrackCenter.Application/Dtos/Forewarning/RuleAreaBaseInfo.cs deleted file mode 100644 index a11fa3f2..00000000 --- a/src/TrackCenter.Application/Dtos/Forewarning/RuleAreaBaseInfo.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace TrackCenter.Application.Dtos.Forewarning; - -public class RuleAreaBaseInfo -{ - public RuleAreaBaseInfo() - { - } - - public RuleAreaBaseInfo(string appKey, string customer) - { - AppKey = appKey; - Customer = customer; - } - - public string AppKey { get; set; } - public string Customer { get; set; } -} diff --git a/src/TrackCenter.Application/Dtos/Warning/Transport/TransportWarningSceneDto.cs b/src/TrackCenter.Application/Dtos/Warning/Transport/TransportWarningSceneDto.cs index 3473b45e..64b4ef28 100644 --- a/src/TrackCenter.Application/Dtos/Warning/Transport/TransportWarningSceneDto.cs +++ b/src/TrackCenter.Application/Dtos/Warning/Transport/TransportWarningSceneDto.cs @@ -1,7 +1,7 @@ namespace TrackCenter.Application.Dtos.Warning.Transport; /// -/// 预警规则场景 +/// 运输时效场景(一产品 + 一国家 + 考核总时效) /// public class TransportWarningSceneDto { @@ -11,57 +11,27 @@ public class TransportWarningSceneDto public int Id { get; set; } /// - /// 预警规则主体id + /// 预警规则主体id(AppKey 级方案) /// public int WarningId { get; set; } /// - /// 场景摘要(用于展示场景tabs) + /// 场景摘要(产品 / 国家 / 考核总时效) /// public string Summary { get; set; } /// - /// 是否中转(单一) - /// - public bool? IsTransit { get; set; } - - /// - /// 货物类型(多个,分割) - /// - public string? CargoType { get; set; } - - /// - /// 起运港口(多个,分割) - /// - public string? LeavePort { get; set; } - - /// - /// 产品编码(单一) + /// 销售产品编码(单一) /// public string? ProductCode { get; set; } /// - /// 国家二字码(单一) + /// 到达国家二字码(单一) /// public string? CountryCode { get; set; } /// - /// 考核总时效(小时) + /// 考核总时效(小时;前端按天展示) /// public float? AssessmentTotalTimeSpan { get; set; } - - /// - /// 月份(多个/分割,历史字段) - /// - public string? Months { get; set; } - - /// - /// 区域Id(单一,历史字段) - /// - public int? AreaId { get; set; } - - /// - /// 区域id对应的名称(历史字段) - /// - public string? AreaName { get; set; } } diff --git a/src/TrackCenter.Application/Dtos/Warning/Transport/UpsertTransportWarningSceneInput.cs b/src/TrackCenter.Application/Dtos/Warning/Transport/UpsertTransportWarningSceneInput.cs index a117ba01..0c6f818b 100644 --- a/src/TrackCenter.Application/Dtos/Warning/Transport/UpsertTransportWarningSceneInput.cs +++ b/src/TrackCenter.Application/Dtos/Warning/Transport/UpsertTransportWarningSceneInput.cs @@ -11,36 +11,21 @@ public sealed class UpsertTransportWarningSceneInput public int Id { get; set; } /// - /// 预警规则主体id + /// 预警规则主体id(AppKey 级方案) /// [IdRequired] public int WarningId { get; set; } - /// 历史字段,忽略 - public bool? IsTransit { get; set; } - - /// 历史字段,忽略 - public string? CargoType { get; set; } - - /// 历史字段,忽略 - public string? LeavePort { get; set; } - - /// 产品编码(单一销售产品) + /// 销售产品编码(单一) [Required(ErrorMessage = "请配置销售产品")] public string? ProductCode { get; set; } - /// 国家二字码(单一) + /// 到达国家二字码(单一) [Required(ErrorMessage = "请配置国家")] public string? CountryCode { get; set; } - /// 考核总时效(小时) + /// 考核总时效(小时;前端按天录入后×24) [Required(ErrorMessage = "请配置考核总时效")] [Range(0.1, 99999, ErrorMessage = "考核总时效须大于0")] public float? AssessmentTotalTimeSpan { get; set; } - - /// 历史字段,忽略 - public string? Months { get; set; } - - /// 历史字段,忽略 - public int? AreaId { get; set; } } diff --git a/src/TrackCenter.Application/Events/ClearRulCacheEvent.cs b/src/TrackCenter.Application/Events/ClearRulCacheEvent.cs index 54cb8ac9..d5043eeb 100644 --- a/src/TrackCenter.Application/Events/ClearRulCacheEvent.cs +++ b/src/TrackCenter.Application/Events/ClearRulCacheEvent.cs @@ -1,8 +1,9 @@ -using TrackCenter.Application.Dtos.Forewarning; - namespace TrackCenter.Application.Events; +/// +/// 历史区域缓存清理事件(预警分区已下线,保留空壳兼容 Redis 订阅反序列化) +/// public class ClearRulCacheEvent { - public List Items { get; set; } + public List AreaIds { get; set; } = new(); } diff --git a/src/TrackCenter.Application/Hangfire/WarningNotifyAggregator.cs b/src/TrackCenter.Application/Hangfire/WarningNotifyAggregator.cs index 55afb6d8..28097c09 100644 --- a/src/TrackCenter.Application/Hangfire/WarningNotifyAggregator.cs +++ b/src/TrackCenter.Application/Hangfire/WarningNotifyAggregator.cs @@ -2,11 +2,9 @@ using Microsoft.Extensions.Options; using TrackCenter.Application.Dtos.Warning; using TrackCenter.Application.Options; using TrackCenter.Application.Services.Warning.Model; -using TrackCenter.Domain.Aggregates.KPIAreaAggregate; using TrackCenter.Domain.Aggregates.OrderAggregate; using TrackCenter.Domain.Aggregates.TrackDetailsAggregate; using TrackCenter.Domain.Aggregates.WarningAggregate; -using TrackCenter.Domain.Dtos.Forewarning; using TrackCenter.Domain.Dtos.Warning; namespace TrackCenter.Application.Hangfire; @@ -17,21 +15,25 @@ namespace TrackCenter.Application.Hangfire; public sealed class WarningNotifyAggregator : ITransientDependency { private readonly IOrderRepository _orderRepository; - private readonly IKpiAreaRepository _kpiAreaRepository; private readonly ITrackDetailsEsRepository _trackDetailsEsRepository; private readonly IWarningTaskRepository _warningTaskRepository; private readonly IWarningRuleRepository _warningRuleRepository; private readonly IWarningDetailsEsRepository _warningDetailsEsRepository; private readonly IOptionsMonitor _optionsMonitor; - public WarningNotifyAggregator(IWarningTaskRepository warningTaskRepository, IWarningRuleRepository warningRuleRepository, IOrderRepository orderRepository, ITrackDetailsEsRepository trackDetailsEsRepository, IWarningDetailsEsRepository warningDetailsEsRepository, IKpiAreaRepository kpiAreaRepository, IOptionsMonitor optionsMonitor) + public WarningNotifyAggregator( + IWarningTaskRepository warningTaskRepository, + IWarningRuleRepository warningRuleRepository, + IOrderRepository orderRepository, + ITrackDetailsEsRepository trackDetailsEsRepository, + IWarningDetailsEsRepository warningDetailsEsRepository, + IOptionsMonitor optionsMonitor) { _warningTaskRepository = warningTaskRepository; _warningRuleRepository = warningRuleRepository; _orderRepository = orderRepository; _trackDetailsEsRepository = trackDetailsEsRepository; _warningDetailsEsRepository = warningDetailsEsRepository; - _kpiAreaRepository = kpiAreaRepository; _optionsMonitor = optionsMonitor; } @@ -140,19 +142,13 @@ public sealed class WarningNotifyAggregator : ITransientDependency // 2.场景验证 var sceneDict = scenes.ToDictionary(x => x.Id.ToString(), TransportWarningSceneBO.From); - // 2.1查找场景关联的区域信息 - var areaIds = scenes.Select(x => x.AreaId ?? 0).Where(id => id != 0).ToHashSet(); - var ruleAreaInfosDict = areaIds.Count > 0 - ? await _kpiAreaRepository.GetAreaInfosDictByAreaId(areaIds) - : new Dictionary>(0); - - // 2.2场景验证 + // 2.1场景验证(产品+国家) var validTasks = new List(filtered.Count); foreach (var task in filtered) { if (sceneDict.TryGetValue(task.AuxiliaryId!, out var scene) && orderDict.TryGetValue(task.OrderId, out var order) - && scene.CanHitScene(order, ruleAreaInfosDict.GetValueOrDefault(scene.AreaId ?? 0))) + && scene.CanHitScene(order)) { validTasks.Add(task); } diff --git a/src/TrackCenter.Application/Services/ForewarningServices/KpiAreaCacheService.cs b/src/TrackCenter.Application/Services/ForewarningServices/KpiAreaCacheService.cs deleted file mode 100644 index 04290200..00000000 --- a/src/TrackCenter.Application/Services/ForewarningServices/KpiAreaCacheService.cs +++ /dev/null @@ -1,24 +0,0 @@ -using TrackCenter.Domain.Aggregates.KPIAreaAggregate; - -namespace TrackCenter.Application.Services.ForewarningServices; - -public class KpiAreaCacheService : ITransientDependency -{ - const string GlobalKpiAreaLockKey = "KpiAreaCacheService_GlobalLock"; - IKpiAreaRepository _kpiAreaRepository; - - public KpiAreaCacheService(IKpiAreaRepository kpiAreaRepository) - { - _kpiAreaRepository = kpiAreaRepository; - } - - private string GetKey(string appKey, string country) - { - return $"{GlobalConst.KpiAreaKeyPrefix}:{appKey}:{country}"; - } - - public Task GetKpiArea(string appKey, string country) - { - throw new NotImplementedException(); - } -} diff --git a/src/TrackCenter.Application/Services/ForewarningServices/KpiAreaService.cs b/src/TrackCenter.Application/Services/ForewarningServices/KpiAreaService.cs deleted file mode 100644 index 6b5dee6a..00000000 --- a/src/TrackCenter.Application/Services/ForewarningServices/KpiAreaService.cs +++ /dev/null @@ -1,147 +0,0 @@ -using Fake.Application.Dtos; -using TrackCenter.Domain.Aggregates.KPIAreaAggregate; -using TrackCenter.Domain.Dtos.Forewarning; - -namespace TrackCenter.Application.Services.ForewarningServices; - -[ApiExplorerSettings(GroupName = "预警服务")] -[Route("/ForewarningService")] -public class KpiAreaService : ApplicationServiceBase -{ - private readonly IKpiAreaRepository _ruleAreaRepository; - private readonly KpiAreaCacheService _kpiAreaCacheService; - - public KpiAreaService(IKpiAreaRepository ruleAreaRepository, KpiAreaCacheService kpiAreaCacheService) - { - _ruleAreaRepository = ruleAreaRepository; - _kpiAreaCacheService = kpiAreaCacheService; - } - - /// - /// 创建分区 - /// - /// - /// 分区id - [HttpPost("KpiArea/CreateKpiArea")] - public async ValueTask CreateKpiArea(CreateRuleAreaRequest input) - { - var ruleAreaEntity = ObjectMapper.Map(input); - var hasSameName = - await _ruleAreaRepository.IsAnyAsync(val => val.AppKey == input.AppKey && val.Name == input.Name); - if (hasSameName) - { - throw new BusinessException("分区名称重复,请重新修改提交"); - } - - var areaId = await _ruleAreaRepository.CreateAreaAsync(ruleAreaEntity); - return new IdBaseDto - { - Id = areaId, - }; - } - - /// - /// 添加区域信息 - /// - /// - /// 区域id - [HttpPost("KpiArea/AddAreaInfo")] - public async ValueTask AddAreaInfoAsync(AddRuleAreaInfoRequest input) - { - var ruleAreaEntity = ObjectMapper.Map(input); - var ruleInfoId = await _ruleAreaRepository.AddAreaInfoAsync(ruleAreaEntity); - // todo: 删除 kpi区域缓存 - return new IdBaseDto - { - Id = ruleInfoId, - }; - } - - /// - /// 删除分区 - /// - /// 分区id - /// - [HttpDelete("KpiArea/DeleteKpiArea")] - public async ValueTask DeleteKpiArea(int id) - { - await _ruleAreaRepository.DeleteArea(id); - // todo: 删除 kpi区域缓存 - } - - /// - /// 删除分区信息 - /// - /// 分区信息id - /// - [HttpDelete("KpiArea/DeleteKpiAreaInfo")] - public async ValueTask DeleteKpiAreaInfo(int id) - { - var info = await _ruleAreaRepository.GetAreaInfoById(id); - if (info == null) throw new BusinessException("未找到该区域信息"); - await _ruleAreaRepository.DeleteAreaInfo(id); - // todo: 删除 kpi区域缓存 - } - - /// - /// 更新区域信息 - /// - /// - /// - [HttpPost("KpiArea/ModifyKpiArea")] - public async Task ModifyKpiArea(UpdateRuleAreaRequest input) - { - if (input.Id <= 0) - throw new BusinessException("id不能为空"); - - var ruleArea = await _ruleAreaRepository.GetFirstAsync(val => val.Id == input.Id); - if (ruleArea == null) - throw new BusinessException("未找到该区域"); - - ruleArea.Name = input.Name; - await _ruleAreaRepository.UpdateAsync(ruleArea); - } - - /// - /// 更新区域信息 - /// - /// - /// - [HttpPost("KpiArea/ModifyKpiAreaInfo")] - public async Task ModifyKpiAreaInfo(UpdateRuleAreaInfoRequest input) - { - if (input.Id <= 0) - throw new BusinessException("id不能为空"); - - var areaInfo = await _ruleAreaRepository.GetAreaInfoById(input.Id); - if (areaInfo == null) - throw new BusinessException("未找到该区域信息"); - - var ruleAreaEntity = ObjectMapper.Map(input, areaInfo); - await _ruleAreaRepository.UpdateAreaInfoAsync(ruleAreaEntity); - - // todo: 删除 kpi区域缓存 - } - - /// - /// 查询分区列表 - /// - /// - /// - [HttpPost("KpiArea/GetKpiAreas")] - public async Task> GetKpiAreas(QueryAreaRequest input) - { - return await _ruleAreaRepository.GetAreas(input); - } - - /// - /// 查询分区列表 - /// - /// - /// - [HttpPost("KpiArea/GetKpiAreaInfos")] - public async Task> GetKpiAreaInfos(QueryAreaInfoRequest query) - { - return await _ruleAreaRepository.GetAreaInfos(query); - } -} diff --git a/src/TrackCenter.Application/Services/Warning/Handlers/TransportWarningHandler.cs b/src/TrackCenter.Application/Services/Warning/Handlers/TransportWarningHandler.cs index 3fd374fb..2fec38d4 100644 --- a/src/TrackCenter.Application/Services/Warning/Handlers/TransportWarningHandler.cs +++ b/src/TrackCenter.Application/Services/Warning/Handlers/TransportWarningHandler.cs @@ -1,11 +1,9 @@ using System.Linq.Expressions; -using TrackCenter.Domain.Aggregates.KPIAreaAggregate; using TrackCenter.Domain.Aggregates.OrderAggregate; using TrackCenter.Domain.Aggregates.TrackDetailsAggregate; using TrackCenter.Domain.Aggregates.TrackStatusAggregate; using TrackCenter.Domain.Aggregates.WarningAggregate; using TrackCenter.Domain.Aggregates.WarningAggregate.Transport; -using TrackCenter.Domain.Dtos.Forewarning; using TrackCenter.Domain.Dtos.TrackDetails; using TrackCenter.Domain.Dtos.Warning; using SqlSugar; @@ -16,7 +14,6 @@ namespace TrackCenter.Application.Services.Warning.Handlers; public class TransportWarningHandler : ITransportWarningHandler, ITransientDependency { - private readonly IKpiAreaRepository _kpiAreaRepository; private readonly IOrderRepository _orderRepository; private readonly ITrackDetailsEsRepository _trackDetailsEsRepository; private readonly IWarningRuleRepository _warningRuleRepository; @@ -24,14 +21,19 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen private readonly IWarningDetailsEsRepository _warningDetailsEsRepository; private readonly ITrackStatusRepository _trackStatusRepository; - public TransportWarningHandler(IWarningTaskRepository warningTaskRepository, IWarningDetailsEsRepository warningDetailsEsRepository, IWarningRuleRepository warningRuleRepository, IOrderRepository orderRepository, ITrackDetailsEsRepository trackDetailsEsRepository, IKpiAreaRepository kpiAreaRepository, ITrackStatusRepository trackStatusRepository) + public TransportWarningHandler( + IWarningTaskRepository warningTaskRepository, + IWarningDetailsEsRepository warningDetailsEsRepository, + IWarningRuleRepository warningRuleRepository, + IOrderRepository orderRepository, + ITrackDetailsEsRepository trackDetailsEsRepository, + ITrackStatusRepository trackStatusRepository) { _warningTaskRepository = warningTaskRepository; _warningDetailsEsRepository = warningDetailsEsRepository; _warningRuleRepository = warningRuleRepository; _orderRepository = orderRepository; _trackDetailsEsRepository = trackDetailsEsRepository; - _kpiAreaRepository = kpiAreaRepository; _trackStatusRepository = trackStatusRepository; } @@ -599,7 +601,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen { var ruleItem = ruleItemDict[detail.WarningSceneRuleItemId]; detail.WarningName = rule.Name; - detail.WarningRuleDescription = detail.GetWarningRuleDescription(postScene.ToEntity(), ruleItem, null); + detail.WarningRuleDescription = detail.GetWarningRuleDescription(postScene.ToEntity(), ruleItem); needUpdateDetails.Add(detail); } } @@ -835,9 +837,6 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen .ToDictionary(x => x.Key, y => y.ToList()); // 3.检查是否重新命中规则 - var ruleArea = scene.AreaId.HasValue - ? await _kpiAreaRepository.GetFirstAsync(x => x.Id == scene.AreaId.Value) - : null; var updateFollowRuleItemIdDict = updateFollowRuleItems.ToDictionary(x => x.Id); foreach (var group in handleBlocks.GroupBy(x => (x.OrderId, x.RuleItemId))) { @@ -865,7 +864,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen { // 配置相关信息 block.Detail.WarningName = rule.Name; - block.Detail.WarningRuleDescription = block.Detail.GetWarningRuleDescription(scene.ToEntity(), ruleItem.ToEntity(), ruleArea); + block.Detail.WarningRuleDescription = block.Detail.GetWarningRuleDescription(scene.ToEntity(), ruleItem.ToEntity()); block.Detail.TransportTimeSpan = ruleItem.TransportTimeSpan; block.Detail.StartTrackWarningTimeSpan = ruleItem.StartTrackWarningTimeSpan; // 起始轨迹相关信息 @@ -1173,15 +1172,6 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen ); var sceneDict = scenes.ToDictionary(x => x.Id); - // 获取区域字典 - Dictionary areaDict = null; - var areaIds = scenes.Where(x => x.AreaId.HasValue).Select(x => x.AreaId.Value!).ToHashSet(); - if (areaIds.Count > 0) - { - var areas = await _kpiAreaRepository.GetListAsync(x => areaIds.Contains(x.Id)); - areaDict = areas.ToDictionary(x => x.Id); - } - // 6.生成预警明细,手动赋予EsId,规则版本号,截止轨迹状态名称 addDetails.ForEach(x => { @@ -1193,7 +1183,7 @@ public class TransportWarningHandler : ITransportWarningHandler, ITransientDepen var scene = sceneDict[x.WarningSceneId]; //一定存在 x.Version = rule.Version; x.WarningName = rule.Name; - x.WarningRuleDescription = x.GetWarningRuleDescription(scene, ruleItemDict[x.WarningSceneRuleItemId], areaDict?.GetValueOrDefault(scene.AreaId ?? 0)); + x.WarningRuleDescription = x.GetWarningRuleDescription(scene, ruleItemDict[x.WarningSceneRuleItemId]); }); await _warningDetailsEsRepository.BulkInsertTransportWarningDetailsAsync(addDetails); diff --git a/src/TrackCenter.Application/Services/Warning/Model/TransportWarningSceneBO.cs b/src/TrackCenter.Application/Services/Warning/Model/TransportWarningSceneBO.cs index fb43cf61..4e2e0586 100644 --- a/src/TrackCenter.Application/Services/Warning/Model/TransportWarningSceneBO.cs +++ b/src/TrackCenter.Application/Services/Warning/Model/TransportWarningSceneBO.cs @@ -1,7 +1,6 @@ using TrackCenter.Application.Dtos.Warning.Transport; using TrackCenter.Domain.Aggregates.OrderAggregate; using TrackCenter.Domain.Aggregates.WarningAggregate.Transport; -using TrackCenter.Domain.Dtos.Forewarning; namespace TrackCenter.Application.Services.Warning.Model; @@ -9,16 +8,11 @@ public sealed class TransportWarningSceneBO { public int Id { get; } public int WarningId { get; } - public string? CargoType { get; } - public string? Months { get; } - public int? AreaId { get; } - public bool? IsTransit { get; } - public string? LeavePort { get; } - /// 产品编码(单一) + /// 销售产品编码(单一) public string? ProductCode { get; } - /// 国家二字码(单一) + /// 到达国家二字码(单一) public string? CountryCode { get; } /// 考核总时效(小时) @@ -27,22 +21,12 @@ public sealed class TransportWarningSceneBO public TransportWarningSceneBO( int id, int warningId, - string? cargoType, - string? months, - int? areaId, - bool? isTransit, - string? leavePort, string? productCode, string? countryCode = null, float? assessmentTotalTimeSpan = null) { Id = id; WarningId = warningId; - CargoType = cargoType; - Months = months; - AreaId = areaId; - IsTransit = isTransit; - LeavePort = leavePort; ProductCode = string.IsNullOrWhiteSpace(productCode) ? null : productCode.Trim(); CountryCode = NormalizeSingleCountryCode(countryCode); AssessmentTotalTimeSpan = assessmentTotalTimeSpan; @@ -51,10 +35,8 @@ public sealed class TransportWarningSceneBO /// /// 命中:订单产品 = 配置产品;到达国家 = 配置国家(一对一)。 /// - public bool CanHitScene(OrderEntity order, List? ruleAreas = null) + public bool CanHitScene(OrderEntity order) { - _ = ruleAreas; - if (string.IsNullOrWhiteSpace(ProductCode) || string.IsNullOrWhiteSpace(order.ProductCode)) return false; @@ -72,11 +54,6 @@ public sealed class TransportWarningSceneBO return new TransportWarningSceneEntity( bo.Id, bo.WarningId, - bo.CargoType, - bo.Months, - bo.AreaId, - bo.IsTransit, - bo.LeavePort, bo.ProductCode, bo.CountryCode, bo.AssessmentTotalTimeSpan @@ -90,11 +67,6 @@ public sealed class TransportWarningSceneBO return new TransportWarningSceneBO( entity.Id, entity.WarningId, - entity.CargoType, - entity.Months, - entity.AreaId, - entity.IsTransit, - entity.LeavePort, entity.ProductCode, entity.CountryCode, entity.AssessmentTotalTimeSpan @@ -109,11 +81,6 @@ public sealed class TransportWarningSceneBO return new TransportWarningSceneBO( input.Id, input.WarningId, - null, - null, - null, - null, - null, input.ProductCode, input.CountryCode, input.AssessmentTotalTimeSpan diff --git a/src/TrackCenter.Application/Services/Warning/TransportWarningService.cs b/src/TrackCenter.Application/Services/Warning/TransportWarningService.cs index b24cb8d7..db556d91 100644 --- a/src/TrackCenter.Application/Services/Warning/TransportWarningService.cs +++ b/src/TrackCenter.Application/Services/Warning/TransportWarningService.cs @@ -6,7 +6,6 @@ using TrackCenter.Application.Caching; using TrackCenter.Application.Helpers; using TrackCenter.Application.Services.Warning.Handlers; using TrackCenter.Application.Services.Warning.Model; -using TrackCenter.Domain.Aggregates.KPIAreaAggregate; using TrackCenter.Domain.Aggregates.OrderAggregate; using TrackCenter.Domain.Aggregates.TrackDetailsAggregate; using TrackCenter.Domain.Aggregates.WarningAggregate; @@ -23,7 +22,6 @@ namespace TrackCenter.Application.Services.Warning; public class TransportWarningService : ApplicationServiceBase { private readonly IOrderRepository _orderRepository; - private readonly IKpiAreaRepository _kpiAreaRepository; private readonly IWarningRuleRepository _warningRuleRepository; private readonly IWarningDetailsEsRepository _warningDetailsEsRepository; private readonly ITrackDetailsEsRepository _trackDetailsEsRepository; @@ -33,7 +31,6 @@ public class TransportWarningService : ApplicationServiceBase public TransportWarningService( IOrderRepository orderRepository, - IKpiAreaRepository kpiAreaRepository, IWarningRuleRepository warningRuleRepository, IWarningDetailsEsRepository warningDetailsEsRepository, ITrackDetailsEsRepository trackDetailsEsRepository, @@ -43,7 +40,6 @@ public class TransportWarningService : ApplicationServiceBase ) { _orderRepository = orderRepository; - _kpiAreaRepository = kpiAreaRepository; _warningRuleRepository = warningRuleRepository; _warningDetailsEsRepository = warningDetailsEsRepository; _trackDetailsEsRepository = trackDetailsEsRepository; @@ -63,37 +59,14 @@ public class TransportWarningService : ApplicationServiceBase var entities = await _warningRuleRepository.GetTransportSceneAsync(input.WarningId); if (entities.Count == 0) return Empty.List; - var areaIds = entities - .Select(x => x.AreaId) - .Where(x => x > 0) - .Select(x => x!.Value) - .ToHashSet(); - - Dictionary? areaNameDict = null; - if (areaIds.Count > 0) - { - var areas = await _kpiAreaRepository.GetListAsync(x => areaIds.Contains(x.Id), y => new - { - y.Id, - y.Name - }); - areaNameDict = areas.ToDictionary(x => x.Id, y => y.Name); - } - var map = entities.Select(x => new TransportWarningSceneDto { Id = x.Id, WarningId = x.WarningId, Summary = BuildSummary(x), - IsTransit = x.IsTransit, - CargoType = x.CargoType, - LeavePort = x.LeavePort, ProductCode = x.ProductCode, CountryCode = x.CountryCode, - AssessmentTotalTimeSpan = x.AssessmentTotalTimeSpan, - Months = x.Months, - AreaId = x.AreaId, - AreaName = x.AreaId.HasValue ? areaNameDict?.GetValueOrDefault(x.AreaId.Value) : null + AssessmentTotalTimeSpan = x.AssessmentTotalTimeSpan }); return map.ToList(); diff --git a/src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/IKpiAreaRepository.cs b/src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/IKpiAreaRepository.cs deleted file mode 100644 index 21f29a0d..00000000 --- a/src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/IKpiAreaRepository.cs +++ /dev/null @@ -1,75 +0,0 @@ -using Fake.Application.Dtos; -using TrackCenter.Domain.Dtos.Forewarning; - -namespace TrackCenter.Domain.Aggregates.KPIAreaAggregate; - -public interface IKpiAreaRepository : IBasicRepository -{ - /// - /// 创建分区 - /// - /// - /// - ValueTask CreateAreaAsync(RuleAreaEntity entity); - - /// - /// 添加分区信息 - /// - /// - /// - ValueTask AddAreaInfoAsync(RuleAreaInfoEntity entity); - - /// - /// 删除分区信息 - /// - /// 分区信息id - /// - Task DeleteAreaInfo(int areaInfoId); - - /// - /// 删除分区 - /// - /// 分区id - /// - ValueTask DeleteArea(int areaId); - - /// - /// 更新区域信息 - /// - /// - /// - Task UpdateAreaInfoAsync(RuleAreaInfoEntity entity); - - /// - /// 获得分区 - /// - /// - /// - Task> GetAreas(QueryAreaRequest query); - - /// - /// 获取分区信息 - /// - /// - /// - Task> GetAreaInfos(QueryAreaInfoRequest query); - - /// - /// 获取分区信息通过id - /// - /// - /// - Task GetAreaInfoById(int id); - - /// - /// 获取所有区域信息 - /// - /// - List? GetAreaInfosByAreaId(int areaId); - - /// - /// 获取所有区域信息 - /// - /// - Task>> GetAreaInfosDictByAreaId(HashSet areaIds); -} diff --git a/src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/RuleAreaEntity.cs b/src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/RuleAreaEntity.cs deleted file mode 100644 index e1d520dd..00000000 --- a/src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/RuleAreaEntity.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Fake.Domain.Entities; -using Fake.Domain.Entities.Auditing; - -namespace TrackCenter.Domain.Aggregates.KPIAreaAggregate; - -[SugarTable("t_area", TableDescription = "KPI分区主表")] -public class RuleAreaEntity : AggregateRoot, IHasCreateUserId, IHasCreateTime, IHasUpdateUserId, IHasUpdateTime -{ - /// - /// 自增主键 - /// - [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "自增主键")] - public int Id { get; set; } - - /// - /// 应用 - /// - [SugarColumn(ColumnName = "AppKey", ColumnDescription = "应用")] - public string AppKey { get; set; } - - /// - /// 分区名称KPI名称 - /// - [SugarColumn(ColumnName = "Name", Length = 64, ColumnDescription = "分区名称KPI名称")] - public string Name { get; set; } - - /// - /// 创建人 - /// - [SugarColumn(ColumnName = "CreateUserId", ColumnDescription = "创建人")] - public int CreateUserId { get; set; } - - /// - /// 创建时间 - /// - [SugarColumn(ColumnName = "CreateTime", ColumnDescription = "创建时间")] - public DateTime CreateTime { get; set; } - - /// - /// 更新人 - /// - [SugarColumn(ColumnName = "UpdateUserId", ColumnDescription = "更新人")] - public int UpdateUserId { get; set; } - - /// - /// 更新时间 - /// - [SugarColumn(ColumnName = "UpdateTime", ColumnDescription = "更新时间")] - public DateTime UpdateTime { get; set; } - - [SugarColumn(IsIgnore = true)] public List AreaInfos { get; set; } -} diff --git a/src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/RuleAreaInfoEntity.cs b/src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/RuleAreaInfoEntity.cs deleted file mode 100644 index 24798f45..00000000 --- a/src/TrackCenter.Domain/Aggregates/KPIAreaAggregate/RuleAreaInfoEntity.cs +++ /dev/null @@ -1,80 +0,0 @@ -using Fake.Domain.Entities; -using Fake.Domain.Entities.Auditing; - -namespace TrackCenter.Domain.Aggregates.KPIAreaAggregate; - -[SugarTable("t_area_details", TableDescription = "kpi 区域子表")] -public class RuleAreaInfoEntity : Entity, IHasCreateUserId, IHasCreateTime, IHasUpdateUserId, IHasUpdateTime -{ - /// - /// 自增主键 - /// - [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "自增主键")] - public int Id { get; set; } - - /// - /// t_rule_area 表id - /// - [SugarColumn(ColumnName = "AreaId", ColumnDescription = "t_rule_area 表id")] - public int AreaId { get; set; } - - /// - /// 国家或地区二字码 - /// - [SugarColumn(ColumnName = "CountryCode", Length = 128, ColumnDescription = "国家或地区二字码")] - public string CountryCode { get; set; } - - /// - /// 国家或地区名称 - /// - [SugarColumn(ColumnName = "CountryName", Length = 128, ColumnDescription = "国家或地区名称")] - public string CountryName { get; set; } - - /// - /// 州或者省份 - /// - [SugarColumn(ColumnName = "Province", Length = 128, IsNullable = true, ColumnDescription = "州或者省份")] - public string Province { get; set; } - - /// - /// 城市 - /// - [SugarColumn(ColumnName = "City", Length = 128, IsNullable = true, ColumnDescription = "城市")] - public string City { get; set; } - - /// - /// 起始邮编 - /// - [SugarColumn(ColumnName = "LeftPostcode", Length = 10, IsNullable = true, ColumnDescription = "起始邮编")] - public string LeftPostcode { get; set; } - - /// - /// 截止邮编 - /// - [SugarColumn(ColumnName = "RightPostcode", Length = 10, IsNullable = true, ColumnDescription = "截止邮编")] - public string RightPostcode { get; set; } - - /// - /// 创建人 - /// - [SugarColumn(ColumnName = "CreateUserId", ColumnDescription = "创建人")] - public int CreateUserId { get; set; } - - /// - /// 创建时间 - /// - [SugarColumn(ColumnName = "CreateTime", ColumnDescription = "创建时间")] - public DateTime CreateTime { get; set; } - - /// - /// 更新人 - /// - [SugarColumn(ColumnName = "UpdateUserId", IsNullable = false, ColumnDescription = "更新人")] - public int UpdateUserId { get; set; } - - /// - /// 更新时间 - /// - [SugarColumn(ColumnName = "UpdateTime", IsNullable = false, ColumnDescription = "更新时间")] - public DateTime UpdateTime { get; set; } -} diff --git a/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs b/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs index bdcb1f3c..6e1ea408 100644 --- a/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs +++ b/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningDetailsIndex.cs @@ -1,6 +1,5 @@ using System.Text; using Nest; -using TrackCenter.Domain.Aggregates.KPIAreaAggregate; using TrackCenter.Domain.Aggregates.TrackDetailsAggregate; using TrackCenter.Domain.Consts; using TrackCenter.Domain.SeedWork; @@ -129,33 +128,17 @@ public sealed class TransportWarningDetailsIndex : IdBaseIndex return Status; } - // 预警规则描述,创建预警明细,更新场景(需要重新匹配),更新规则项目(需要重新匹配),更新规则区域名称 - // todo:如果更新了规则区域名称不会同步到预警明细的描述中,出现预警明细和对于的规则区域名称不一致,考虑规则存缓存动态生成预警描述 - public string GetWarningRuleDescription(TransportWarningSceneEntity scene, TransportWarningSceneRuleItemEntity ruleItem, RuleAreaEntity? ruleArea) + // 预警规则描述,创建预警明细,更新场景(需要重新匹配),更新规则项目(需要重新匹配) + public string GetWarningRuleDescription(TransportWarningSceneEntity scene, TransportWarningSceneRuleItemEntity ruleItem) { var res = new StringBuilder("{"); // 起始轨迹状态-截止轨迹状态 res.Append($"{StartTrackStatus}-{EndTrackStatus}"); - // 货物类型 (普货/危险品/...) - if (!string.IsNullOrWhiteSpace(scene.CargoType)) - res.Append($",{scene.CargoType}"); - // 月份 (1/3/5/...) - if (!string.IsNullOrWhiteSpace(scene.Months)) - res.Append($",{scene.Months}月份"); - // 区域名称 (美国xxx区域) - if (ruleArea != null) - res.Append($",{ruleArea.Name}"); - // 是否中转(中转/直飞) - if (scene.IsTransit != null) - res.Append($",{(scene.IsTransit ?? false ? "中转" : "直飞")}"); - // 出发港(xxx港) - if (!string.IsNullOrWhiteSpace(scene.LeavePort)) - res.Append($",{scene.LeavePort}"); // 产品代码(xxx) if (!string.IsNullOrWhiteSpace(scene.ProductCode)) res.Append($",{scene.ProductCode}"); - // 国家(US) + // 到达国家(US) if (!string.IsNullOrWhiteSpace(scene.CountryCode)) res.Append($",{scene.CountryCode}"); // 考核总时效 diff --git a/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningSceneEntity.cs b/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningSceneEntity.cs index c4330c38..bc422780 100644 --- a/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningSceneEntity.cs +++ b/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningSceneEntity.cs @@ -3,39 +3,26 @@ using TrackCenter.Domain.SeedWork; namespace TrackCenter.Domain.Aggregates.WarningAggregate.Transport; -// 运输时效场景 -[SugarTable("t_warning_transport_scene", TableDescription = "运输时效规则场景")] +/// +/// 运输时效场景:一销售产品 + 一到达国家 + 考核总时效。 +/// +[SugarTable("t_warning_transport_scene", TableDescription = "运输时效场景(产品+国家+考核总时效)")] public sealed class TransportWarningSceneEntity : FullAuditedEntity { [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } - [SugarColumn(ColumnName = "WarningId", ColumnDescription = "预警规则id")] + [SugarColumn(ColumnName = "WarningId", ColumnDescription = "预警规则主体Id(t_warning.Id,运输时效为 AppKey 级方案)")] public int WarningId { get; set; } - [SugarColumn(ColumnName = "IsTransit", ColumnDescription = "是否中转", IsNullable = true)] - public bool? IsTransit { get; set; } //历史字段 + [SugarColumn(ColumnName = "ProductCode", ColumnDescription = "销售产品编码(单一,命中订单产品)", IsNullable = true)] + public string? ProductCode { get; set; } - [SugarColumn(ColumnName = "CargoType", ColumnDescription = "货物类型", IsNullable = true)] - public string? CargoType { get; set; } //历史字段 + [SugarColumn(ColumnName = "CountryCode", ColumnDescription = "到达国家二字码(单一,命中订单到达国家)", IsNullable = true, Length = 16)] + public string? CountryCode { get; set; } - [SugarColumn(ColumnName = "LeavePort", ColumnDescription = "起运港口", IsNullable = true)] - public string? LeavePort { get; set; } //历史字段 - - [SugarColumn(ColumnName = "ProductCode", ColumnDescription = "产品编码", IsNullable = true)] - public string? ProductCode { get; set; } //单一销售产品 - - [SugarColumn(ColumnName = "CountryCode", ColumnDescription = "国家二字码(单一)", IsNullable = true, Length = 16)] - public string? CountryCode { get; set; } //单一国家二字码 - - [SugarColumn(ColumnName = "AssessmentTotalTimeSpan", ColumnDescription = "考核总时效(小时)", IsNullable = true)] - public float? AssessmentTotalTimeSpan { get; set; } //考核总时效 - - [SugarColumn(ColumnName = "Months", ColumnDescription = "月份", IsNullable = true)] - public string? Months { get; set; } //历史字段 - - [SugarColumn(ColumnName = "AreaId", ColumnDescription = "区域id", IsNullable = true)] - public int? AreaId { get; set; } //历史字段 + [SugarColumn(ColumnName = "AssessmentTotalTimeSpan", ColumnDescription = "考核总时效(小时;前端按天录入后×24入库)", IsNullable = true)] + public float? AssessmentTotalTimeSpan { get; set; } public TransportWarningSceneEntity() { @@ -44,22 +31,12 @@ public sealed class TransportWarningSceneEntity : FullAuditedEntity public TransportWarningSceneEntity( int id, int warningId, - string? cargoType, - string? months, - int? areaId, - bool? isTransit, - string? leavePort, string? productCode, string? countryCode = null, float? assessmentTotalTimeSpan = null) { Id = id; WarningId = warningId; - CargoType = cargoType; - Months = months; - AreaId = areaId; - IsTransit = isTransit; - LeavePort = leavePort; ProductCode = productCode; CountryCode = countryCode; AssessmentTotalTimeSpan = assessmentTotalTimeSpan; diff --git a/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningSceneRuleItemEntity.cs b/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningSceneRuleItemEntity.cs index 896c59e4..e1fe8730 100644 --- a/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningSceneRuleItemEntity.cs +++ b/src/TrackCenter.Domain/Aggregates/WarningAggregate/Transport/TransportWarningSceneRuleItemEntity.cs @@ -4,16 +4,16 @@ using TrackCenter.Domain.SeedWork; namespace TrackCenter.Domain.Aggregates.WarningAggregate.Transport; // 运输时效场景规则项 -[SugarTable("t_warning_transport_scene_rule_item", TableDescription = "运输时效规则场景规则项")] +[SugarTable("t_warning_transport_scene_rule_item", TableDescription = "运输时效场景分段规则项")] public sealed class TransportWarningSceneRuleItemEntity : FullAuditedEntity { [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } - [SugarColumn(ColumnName = "WarningId", ColumnDescription = "预警规则id")] + [SugarColumn(ColumnName = "WarningId", ColumnDescription = "预警规则主体Id(t_warning.Id)")] public int WarningId { get; set; } - [SugarColumn(ColumnName = "TransportWarningSceneId", ColumnDescription = "运输场景id")] + [SugarColumn(ColumnName = "TransportWarningSceneId", ColumnDescription = "运输时效场景Id(t_warning_transport_scene.Id)")] public int TransportWarningSceneId { get; set; } [SugarColumn(ColumnName = "StartTrackStatusId", ColumnDescription = "起始轨迹状态Id")] diff --git a/src/TrackCenter.Domain/Aggregates/WarningAggregate/WarningRuleEntity.cs b/src/TrackCenter.Domain/Aggregates/WarningAggregate/WarningRuleEntity.cs index b01a9193..ab70bd1d 100644 --- a/src/TrackCenter.Domain/Aggregates/WarningAggregate/WarningRuleEntity.cs +++ b/src/TrackCenter.Domain/Aggregates/WarningAggregate/WarningRuleEntity.cs @@ -14,8 +14,8 @@ public sealed class WarningRuleEntity : FullAuditedAggregateRoot [SugarColumn(ColumnName = "AppKey", ColumnDescription = "应用")] public string AppKey { get; set; } //应用 - [SugarColumn(ColumnName = "Customer", ColumnDescription = "客户")] - public string Customer { get; set; } //客户 + [SugarColumn(ColumnName = "Customer", ColumnDescription = "客户(运输时效固定空串;回传/完整预警按客户匹配)")] + public string Customer { get; set; } //客户(运输时效固定空串;回传/完整预警按客户匹配) // [SugarColumn(ColumnName = "CustomName", ColumnDescription = "客户名称")] // public string CustomName { get; set; } //冗余客户简称,用于查询 diff --git a/src/TrackCenter.Domain/Consts/GlobalConst.Redis.cs b/src/TrackCenter.Domain/Consts/GlobalConst.Redis.cs index c1f688e6..82d58e30 100644 --- a/src/TrackCenter.Domain/Consts/GlobalConst.Redis.cs +++ b/src/TrackCenter.Domain/Consts/GlobalConst.Redis.cs @@ -32,11 +32,6 @@ public partial class GlobalConst /// public const string OrderPullStatusScanCheckKey = "OrderPullStatusScanCheck"; - /// - /// kpi区域redis key前缀 - /// - public const string KpiAreaKeyPrefix = "KpiArea"; - /// /// 城市时区redis key前缀 /// diff --git a/src/TrackCenter.Domain/Dtos/Forewarning/AddRuleAreaInfoRequest.cs b/src/TrackCenter.Domain/Dtos/Forewarning/AddRuleAreaInfoRequest.cs deleted file mode 100644 index 29c655c0..00000000 --- a/src/TrackCenter.Domain/Dtos/Forewarning/AddRuleAreaInfoRequest.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace TrackCenter.Domain.Dtos.Forewarning; - -public class AddRuleAreaInfoRequest -{ - /// - /// 国家二字码,必填项。 - /// - [Required] - public string CountryCode { get; set; } - - /// - /// 国家名称 - /// - [Required] - public string CountryName { get; set; } - - /// - /// 省份名称,可为空。 - /// - public string? Province { get; set; } - - /// - /// 城市名称,可为空。 - /// - public string? City { get; set; } - - /// - /// 左侧邮政编码,可为空。 - /// - public string? LeftPostCode { get; set; } - - /// - /// 右侧邮政编码,可为空。 - /// - public string? RightPostCode { get; set; } - - /// - /// 区域ID,必填项。 - /// - [Required] - public int AreaId { get; set; } -} diff --git a/src/TrackCenter.Domain/Dtos/Forewarning/AreaDto.cs b/src/TrackCenter.Domain/Dtos/Forewarning/AreaDto.cs deleted file mode 100644 index 09f14ccd..00000000 --- a/src/TrackCenter.Domain/Dtos/Forewarning/AreaDto.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace TrackCenter.Domain.Dtos.Forewarning; - -public class AreaDto -{ - /// - /// 区域id - /// - public int Id { get; set; } - - /// - /// 应用 - /// - public string AppKey { get; set; } - - /// - /// 系统名称 - /// - public string SystemName { get; set; } - - /// - /// 区域名称 - /// - public string Name { get; set; } - - /// - /// 更新时间 - /// - public DateTime UpdateTime { get; set; } -} diff --git a/src/TrackCenter.Domain/Dtos/Forewarning/AreaInfoDto.cs b/src/TrackCenter.Domain/Dtos/Forewarning/AreaInfoDto.cs deleted file mode 100644 index f6fc8dbf..00000000 --- a/src/TrackCenter.Domain/Dtos/Forewarning/AreaInfoDto.cs +++ /dev/null @@ -1,46 +0,0 @@ -namespace TrackCenter.Domain.Dtos.Forewarning; - -public class RuleAreaInfoDto -{ - /// - /// 分区信息id - /// - public int Id { get; set; } - - /// - /// 分区id - /// - public int AreaId { get; set; } - - /// - /// 国家或地区 二字码 - /// - public string CountryCode { get; set; } - - /// - /// 国家名称 - /// - public string CountryName { get; set; } - - /// - /// 国家id - /// - public int CountryId { get; set; } - - /// - /// 省份 - /// - public string Province { get; set; } - - /// - /// 城市 - /// - public string City { get; set; } - - /// - /// 开始邮编 - /// - public string LeftPostcode { get; set; } - - public string RightPostcode { get; set; } -} diff --git a/src/TrackCenter.Domain/Dtos/Forewarning/CreateRuleAreaRequest.cs b/src/TrackCenter.Domain/Dtos/Forewarning/CreateRuleAreaRequest.cs deleted file mode 100644 index da540b15..00000000 --- a/src/TrackCenter.Domain/Dtos/Forewarning/CreateRuleAreaRequest.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace TrackCenter.Domain.Dtos.Forewarning; - -public class CreateRuleAreaRequest -{ - /// - /// 系统id - /// - [Required] - public string AppKey { get; set; } - - /// - /// 名称 - /// - [Required] - public string Name { get; set; } -} diff --git a/src/TrackCenter.Domain/Dtos/Forewarning/KpiAreaInfo.cs b/src/TrackCenter.Domain/Dtos/Forewarning/KpiAreaInfo.cs deleted file mode 100644 index ddb313e4..00000000 --- a/src/TrackCenter.Domain/Dtos/Forewarning/KpiAreaInfo.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace TrackCenter.Domain.Dtos.Forewarning; - -public class KpiAreaInfo -{ - public int AreaId { get; set; } - - /// - /// 国家或地区 - /// - public string CountryCode { get; set; } = null!; - - /// - /// 省份 - /// - public string? Province { get; set; } - - /// - /// 城市 - /// - public string? City { get; set; } - - /// - /// 开始邮编 - /// - public string? LeftPostcode { get; set; } - - /// - /// 截止邮编 - /// - public string? RightPostcode { get; set; } -} diff --git a/src/TrackCenter.Domain/Dtos/Forewarning/QueryAreaInfoRequest.cs b/src/TrackCenter.Domain/Dtos/Forewarning/QueryAreaInfoRequest.cs deleted file mode 100644 index e8b4c553..00000000 --- a/src/TrackCenter.Domain/Dtos/Forewarning/QueryAreaInfoRequest.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace TrackCenter.Domain.Dtos.Forewarning; - -public class QueryAreaInfoRequest : PageInfoInput -{ - /// - /// 区域id - /// - public int AreaId { get; set; } -} diff --git a/src/TrackCenter.Domain/Dtos/Forewarning/QueryAreaRequest.cs b/src/TrackCenter.Domain/Dtos/Forewarning/QueryAreaRequest.cs deleted file mode 100644 index c921b4c4..00000000 --- a/src/TrackCenter.Domain/Dtos/Forewarning/QueryAreaRequest.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace TrackCenter.Domain.Dtos.Forewarning; - -public class QueryAreaRequest : PageInfoInput -{ - /// - /// 分区名称 - /// - public string? Name { get; set; } - - /// - /// 应用 - /// - public string? AppKey { get; set; } -} diff --git a/src/TrackCenter.Domain/Dtos/Forewarning/UpdateRuleAreaInfoRequest.cs b/src/TrackCenter.Domain/Dtos/Forewarning/UpdateRuleAreaInfoRequest.cs deleted file mode 100644 index 42497fa1..00000000 --- a/src/TrackCenter.Domain/Dtos/Forewarning/UpdateRuleAreaInfoRequest.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace TrackCenter.Domain.Dtos.Forewarning; - -/// -/// 更新规则区域信息请求 -/// -public class UpdateRuleAreaInfoRequest -{ - /// - /// 区域信息ID - /// - public int Id { get; set; } - - /// - /// 国家二字码,必填项。 - /// - [Required] - public string CountryCode { get; set; } - - /// - /// 国家名称,必填项。 - /// - [Required] - public string CountryName { get; set; } - - /// - /// 省份名称,可为空。 - /// - public string? Province { get; set; } - - /// - /// 城市名称,可为空。 - /// - public string? City { get; set; } - - /// - /// 左侧邮政编码,可为空。 - /// - public string? LeftPostCode { get; set; } - - /// - /// 右侧邮政编码,可为空。 - /// - public string? RightPostCode { get; set; } -} diff --git a/src/TrackCenter.Domain/Dtos/Forewarning/UpdateRuleAreaRequest.cs b/src/TrackCenter.Domain/Dtos/Forewarning/UpdateRuleAreaRequest.cs deleted file mode 100644 index 14e8b8bc..00000000 --- a/src/TrackCenter.Domain/Dtos/Forewarning/UpdateRuleAreaRequest.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace TrackCenter.Domain.Dtos.Forewarning; - -public class UpdateRuleAreaRequest -{ - /// - /// 名称 - /// - [Required] - public string Name { get; set; } - - /// - /// 区域id - /// - public int Id { get; set; } -} diff --git a/src/TrackCenter.Repository/Repositories/KpiAreaInfoRepository.cs b/src/TrackCenter.Repository/Repositories/KpiAreaInfoRepository.cs deleted file mode 100644 index 329c1ace..00000000 --- a/src/TrackCenter.Repository/Repositories/KpiAreaInfoRepository.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace TrackCenter.Repository.Repositories; - -public class KpiAreaInfoRepository -{ -} diff --git a/src/TrackCenter.Repository/Repositories/KpiAreaRepository.cs b/src/TrackCenter.Repository/Repositories/KpiAreaRepository.cs deleted file mode 100644 index 07206f46..00000000 --- a/src/TrackCenter.Repository/Repositories/KpiAreaRepository.cs +++ /dev/null @@ -1,130 +0,0 @@ -using TrackCenter.Domain; -using TrackCenter.Domain.Aggregates.KPIAreaAggregate; -using TrackCenter.Domain.Dtos.Forewarning; -using TrackCenter.Domain.VEntities; - -namespace TrackCenter.Repository.Repositories; - -public class KpiAreaRepository : BasicRepository, IKpiAreaRepository, ITransientDependency -{ - public async ValueTask CreateAreaAsync(RuleAreaEntity entity) - { - return await InsertReturnIdentityAsync(entity); - } - - public async ValueTask AddAreaInfoAsync(RuleAreaInfoEntity entity) - { - return await Context.Insertable(entity).ExecuteReturnIdentityAsync(); - } - - public async ValueTask DeleteArea(int areaId) - { - using var transaction = TransactionHelper.GetReadCommitted(); - await DeleteAsync(x => x.Id == areaId); - await Context.Deleteable().Where(x => x.AreaId == areaId).ExecuteCommandAsync(); - transaction.Complete(); - } - - public Task DeleteAreaInfo(int areaInfoId) - { - return Context.Deleteable().Where(val => val.Id == areaInfoId).ExecuteCommandAsync(); - } - - public Task UpdateAreaInfoAsync(RuleAreaInfoEntity entity) - { - return Context.Updateable(entity).ExecuteCommandAsync(); - } - - /// - /// 获取分区 - /// - /// - /// - public async Task> GetAreas(QueryAreaRequest query) - { - return await Context.Queryable() - .WhereIF(!string.IsNullOrEmpty(query.Name), area => area.Name.Contains(query.Name!)) - .OrderBy(area => area.UpdateTime, OrderByType.Desc) - .Select(area => new AreaDto() - { - Id = area.Id, - Name = area.Name, - AppKey = area.AppKey, - UpdateTime = area.CreateTime - }) - .ToPagedListAsync(query.PageIndex, query.PageSize); - } - - /// - /// 获得分区信息 - /// - /// - /// - public async Task> GetAreaInfos(QueryAreaInfoRequest query) - { - return await Context.Queryable() - //.InnerJoin((x, c) => x.CountryCode == c.Digit2Code) - .Where(x => x.AreaId == query.AreaId) - .OrderBy(x => x.UpdateTime, OrderByType.Desc) - .Select((x) => new RuleAreaInfoDto() - { - Id = x.Id, - AreaId = x.AreaId, - City = x.City, - //CountryId = c.Id, - CountryCode = x.CountryCode, - CountryName = x.CountryName, - LeftPostcode = x.LeftPostcode, - RightPostcode = x.RightPostcode, - Province = x.Province - }) - .ToPagedListAsync(query.PageIndex, query.PageSize); - } - - public Task GetAreaInfoById(int id) - { - return Context.Queryable() - .FirstAsync(val => val.Id == id)!; - } - - /// - /// 获取所有区域信息 - /// - /// - public List GetAreaInfosByAreaId(int areaId) - { - return Context.Queryable() - .InnerJoin((r, i) => r.AreaId == i.Id) - .Where((r, i) => r.AreaId == areaId) - .Select((r, i) => new KpiAreaInfo - { - AreaId = r.AreaId, - CountryCode = r.CountryCode, - LeftPostcode = r.LeftPostcode, - City = r.City, - Province = r.Province, - RightPostcode = r.RightPostcode - }) - .ToList(); - } - - public async Task>> GetAreaInfosDictByAreaId(HashSet areaIds) - { - var list = await Context.Queryable() - .InnerJoin((r, i) => r.AreaId == i.Id) - .Where((r, i) => areaIds.Contains(i.Id)) - .Select((r, i) => new KpiAreaInfo - { - AreaId = r.AreaId, - CountryCode = r.CountryCode, - LeftPostcode = r.LeftPostcode, - City = r.City, - Province = r.Province, - RightPostcode = r.RightPostcode - }) - .ToListAsync(); - - return list.GroupBy(x => x.AreaId) - .ToDictionary(x => x.Key, y => y.ToList()); - } -}