From d76e7c29a167482badc9d075f2645d969345af60 Mon Sep 17 00:00:00 2001
From: moyongzhen <2534173414@qq.com>
Date: Tue, 5 Mar 2024 20:06:09 +0800
Subject: [PATCH] =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E6=98=8E=E7=BB=86=E8=B0=83?=
=?UTF-8?q?=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/SJZY.Track.Api/appsettings.json | 2 +-
.../ProvideServices/GetOrderDetailsInput.cs | 20 +++++++
.../Services/TrackOrders/TrackOrderService.cs | 39 +++++++++++-
.../ITrackContentRepository.cs | 2 +
...GetTemplateContentAttributeValueInputVO.cs | 59 +++++++++++++++++++
.../Repositories/TrackContentRepository.cs | 28 +++++++++
.../Repositories/TrackDetailsRepository.cs | 6 +-
.../Repositories/TrackTemplateRepository.cs | 11 ++++
8 files changed, 161 insertions(+), 6 deletions(-)
create mode 100644 src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs
diff --git a/src/SJZY.Track.Api/appsettings.json b/src/SJZY.Track.Api/appsettings.json
index d69cb0c1..676973d6 100644
--- a/src/SJZY.Track.Api/appsettings.json
+++ b/src/SJZY.Track.Api/appsettings.json
@@ -5,7 +5,7 @@
"Apollo": {
"AppId": "SJZY.Track.Configuration",
"Env": "DEV",
- "Namespace": "Test",
+ "Namespace": "Dev",
"MetaServer": "http://apollo-service-test-apollo-configservice.apollo.svc.cluster.local:8080",
"ConfigServer": [ "http://apollo-service-test-apollo-configservice.apollo.svc.cluster.local:8080" ]
}
diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs
index 50572e48..ca1e5ee8 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs
@@ -6,6 +6,11 @@
/// 轨迹订单id
///
public int OrderId { get; set; }
+
+ ///
+ /// 子系统id
+ ///
+ public int SubSystemId { get; set; }
}
public class TrackOrderDetailDto
@@ -49,5 +54,20 @@
/// 轨迹发生时区
///
public string? TrackTimeZone { get; set; }
+
+ ///
+ /// 时区的值
+ ///
+ public float TrackTimeZoneValue { get; set; }
+
+ ///
+ /// 是否可删
+ ///
+ public bool IsCanDelete { get; set; }
+
+ ///
+ /// 是否对外
+ ///
+ public bool IsExternal { get; set; }
}
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
index b0c86ec2..9c6457fe 100644
--- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
+++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
@@ -1,7 +1,9 @@
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
+using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Dtos.Order;
+using SJZY.Track.Domain.Dtos.TrackTemplate;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -17,19 +19,20 @@ namespace SJZY.Track.Application.Services.TrackOrders
{
private readonly IOrderRepository _orderRepository;
private readonly ITrackDetailsRepository _trackDetailsRepository;
+ private readonly ITrackContentRepository _trackContentRepository;
public TrackOrderService(
IOrderRepository orderRepository,
- ITrackDetailsRepository trackDetailsRepository
+ ITrackDetailsRepository trackDetailsRepository,
+ ITrackContentRepository trackContentRepository
)
{
this._orderRepository=orderRepository;
this._trackDetailsRepository=trackDetailsRepository;
-
+ this._trackContentRepository=trackContentRepository;
}
#region 轨迹订单明细
-
///
/// 根据轨迹订单id获取轨迹订单明细列表
///
@@ -42,10 +45,40 @@ namespace SJZY.Track.Application.Services.TrackOrders
if (!trackDetails.IsNullOrEmpty())
{
var list = ObjectMapper.Map, List>(trackDetails);
+ var trackCodes = list.Where(a => !a.Code.IsNullOrWhiteSpace()).Select(a => a.Code).ToList();
+
+ var trackContents = await _trackContentRepository.GetTrackContentAttributeValue(new GetTemplateContentAttributeValueInputVO
+ {
+ SubSystemId =input.SubSystemId,
+ TrackCodes=trackCodes
+ });
+
int id = 1;
list.ForEach(a =>
{
a.Id = id++;
+ var trackContent = trackContents.FirstOrDefault(a => a.SubSystemId==input.SubSystemId&& a.TrackCode==a.TrackCode);
+ if (trackContent!=null)
+ {
+ a.IsCanDelete=trackContent.IsCanDelete;
+ a.IsExternal = trackContent.IsExternal;
+ }
+ a.TrackTimeZoneValue=8f;
+ if (a.TrackTimeZoneValue==0)
+ {
+ a.TrackTimeZone=$"GTM{" "}+00:00";
+ }
+ else
+ {
+
+ // 将小数形式的小时转换为时区偏移量
+ int hours = (int)a.TrackTimeZoneValue; // 提取整数部分作为小时
+ int minutes = (int)((a.TrackTimeZoneValue - hours) * 60); // 将小数部分乘以 60 转换为分钟
+ TimeSpan offset = new TimeSpan(hours, minutes, 0);
+ string timeZoneStr = offset.ToString();
+ string flag = a.TrackTimeZoneValue>0f ? "+" : "";
+ a.TrackTimeZone = $"GTM{" "}{flag}{timeZoneStr.RemovePostFix(":00")}";
+ }
});
return list;
}
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs
index 511d4feb..400b7363 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs
@@ -1,4 +1,5 @@
using SJZY.Track.Domain.Dtos.TrackContents;
+using SJZY.Track.Domain.Dtos.TrackTemplate;
namespace SJZY.Track.Domain.Aggregates.TrackContentAggregate;
@@ -24,4 +25,5 @@ public interface ITrackContentRepository : IBasicRepository
Task UpdateMapAsync(Expression> columns, Expression> whereExpression);
Task GetTemplateIsExist(int trackContentId);
+ Task> GetTrackContentAttributeValue(GetTemplateContentAttributeValueInputVO input);
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs b/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs
new file mode 100644
index 00000000..1ba46bf4
--- /dev/null
+++ b/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SJZY.Track.Domain.Dtos.TrackTemplate
+{
+ public class GetTemplateContentAttributeValueInputVO
+ {
+ ///
+ /// 子系统id
+ ///
+ public int SubSystemId { get; set; }
+
+ ///
+ /// 轨迹代码
+ ///
+ public List? TrackCodes { get; set; }
+
+ /////
+ ///// 订单id
+ /////
+ //public int OrderId { get; set; }
+ }
+
+ public class GetTemplateContentAttributeValueVO
+ {
+ ///
+ /// 轨迹内容id
+ ///
+ public int TrackContenId { get; set; }
+
+ ///
+ /// 模版id
+ ///
+ public int TrackTemplateId { get; set; }
+
+ ///
+ /// 轨迹内容代码
+ ///
+ public string TrackCode { get; set; }
+
+ ///
+ /// 子系统id
+ ///
+ public int SubSystemId { get; set; }
+
+ ///
+ /// 是否可删
+ ///
+ public bool IsCanDelete { get; set; }
+
+ ///
+ /// 是否对外
+ ///
+ public bool IsExternal { get; set; }
+ }
+}
diff --git a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs
index b1a0cda0..5d4db71f 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs
@@ -3,6 +3,7 @@ using SJZY.Track.Domain.Aggregates.TrackFlagAggregate;
using SJZY.Track.Domain.Aggregates.TrackStatusAggregate;
using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate;
using SJZY.Track.Domain.Dtos.TrackContents;
+using SJZY.Track.Domain.Dtos.TrackTemplate;
using SJZY.Track.Domain.VEntities;
using System.Linq;
using System.Linq.Expressions;
@@ -89,6 +90,31 @@ public class TrackContentRepository : BasicRepository, ITrac
return pagedList;
}
+ ///
+ /// 获取轨迹内容属性值
+ ///
+ ///
+ public async Task> GetTrackContentAttributeValue(GetTemplateContentAttributeValueInputVO input)
+ {
+ var list = await Context.Queryable()
+ .LeftJoin((a, b) => a.Id==b.TrackContentId&& b.TrackTemplateId>0 && b.IsDeleted==false)
+ .LeftJoin((a, b, c) => b.TrackTemplateId==c.Id&& c.IsDeleted==false)
+ .WhereIF(!input.TrackCodes.IsNullOrEmpty(), (a, b, c) => input.TrackCodes.Contains(a.Code))
+ .WhereIF(input.SubSystemId>0, (a, b, c) => a.SubSystemId==input.SubSystemId)
+ .Where((a, b, c) => c.Id>0)
+ .Select((a, b, c) => new GetTemplateContentAttributeValueVO
+ {
+ IsCanDelete=b.IsCanDelete,
+ IsExternal=b.IsExternal,
+ SubSystemId= a.SubSystemId,
+ TrackCode= a.Code,
+ TrackContenId= a.Id,
+ TrackTemplateId=c.Id
+ }).ToListAsync();
+
+ return list;
+ }
+
///
/// 获取轨迹模版是否存在
///
@@ -115,6 +141,8 @@ public class TrackContentRepository : BasicRepository, ITrac
return false;
}
+
+
public async Task> GetMapPageAsync(GetTrackContentMapPageInputVO input)
{
return await Context.Queryable()
diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
index cf78c66f..31d9fc36 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
@@ -52,7 +52,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract(index.Id, u => u
.Index(index.IndexName)
.Doc(index)
- //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见
+ //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见
);
if (!r.IsValid)
@@ -90,7 +90,9 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract?> GetListAsync(int orderId)
{
- var data = await Context.SearchAsync(x => x.Query(q => q.Term(t => t.OrderId, orderId))
+ var data = await Context.SearchAsync(x => x.Query(q => q.Term(t => t.OrderId, orderId)
+ && q.Term(a => a.Field(g => g.IsDeleted).Value(false))
+ )
.Size(1000)
.Sort(s => s.Field(f => f.TrackTime, SortOrder.Descending)));
diff --git a/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs
index 3bb1cfd9..21b72d53 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs
@@ -65,6 +65,17 @@ public class TrackTemplateRepository : BasicRepository, ITr
return pagedList;
}
+ ///
+ /// 获取轨迹内容属性值
+ ///
+ ///
+ public async Task GetTrackContentAttributeValue(GetTemplateContentAttributeValueInputVO input)
+ {
+
+
+ return null;
+ }
+
///
public async Task> GetContentPageAsync(
GetTrackTemplateContentPageInputVO input)