Pārlūkot izejas kodu

更新团组前期信息处理逻辑

在 `GroupsController.cs` 中添加 `Google.Protobuf.WellKnownTypes` 引用,修改 `GroupOrderPreInfoList` 方法为 POST,返回 `JsonView` 对象并实现查询逻辑以处理团组前期信息。
在 `OrderPreInfoView.cs` 中调整 `VisitDays` 和 `VisiPpNum` 类型为 `string`,并添加 `VersionDetails` 属性,同时将 `OperationTime` 类型更改为 `DateTime`。
在 `GroupOrderPreInfoRepository.cs` 中优化 `item.NewValue` 的处理逻辑,确保在不为 null 时调用 `ToString()` 方法。
LEIYI 3 mēneši atpakaļ
vecāks
revīzija
d2e2b3ae3a

+ 46 - 7
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -4,6 +4,7 @@ using Aspose.Words.Drawing;
 using Aspose.Words.Tables;
 using DiffMatchPatch;
 using EyeSoft.Runtime.InteropServices;
+using Google.Protobuf.WellKnownTypes;
 using Microsoft.AspNetCore.SignalR;
 using Microsoft.IdentityModel.Tokens;
 using Microsoft.VisualBasic;
@@ -161,6 +162,7 @@ namespace OASystem.API.Controllers
         /// <param name="enterExitCostDraftRep"></param>
         /// <param name="restaurantRep"></param>
         /// <param name="enterExitCostQuoteRep"></param>
+        /// <param name="grpOrderPreInfoRep"></param>
         public GroupsController(
             ILogger<GroupsController> logger,
             IMapper mapper,
@@ -401,17 +403,56 @@ namespace OASystem.API.Controllers
         ///  团组前期信息 List
         /// </summary>
         /// <returns></returns>
-        [HttpGet("{userId}")]
+        [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> GroupOrderPreInfoList(GroupOrderPreInfoListDto dto)
         {
 
-            //var list = await _sqlSugar.Queryable<Grp_OrderPreInfo, Sys_Users>((opi, u) => new JoinQueryInfos() { JoinType.Left, opi.CreateUserId == u.Id })
-            //    .Select(x => new GroupOrderPreInfoListView() { })
-            //    .ToPageListAsync(dto.PageIndex,dto.PageSize);
+            
+
+            RefAsync<int> total = 0;
+            var list = await _sqlSugar.Queryable<Grp_OrderPreInfo>()
+                .LeftJoin<Sys_Users>((opi, u) => opi.CreateUserId == u.Id)
+                .Where((opi, u) => opi.IsDel == 0)
+                .OrderByDescending((opi, u) => opi.CreateTime)
+                .Select((opi, u) => new GroupOrderPreInfoListView()
+                {
+                    Id = opi.Id,
+                    Name = opi.Name,
+                    UnitName = SqlFunc.Subqueryable<Grp_OrderPreItem>().Where(x => x.ParentId == opi.Id && x.FormTempId == 1).Select(x => x.Value),
+                    VisitDays = SqlFunc.Subqueryable<Grp_OrderPreItem>().Where(x => x.ParentId == opi.Id && x.FormTempId == 4).Select(x => x.Value),
+                    VisiPpNum = SqlFunc.Subqueryable<Grp_OrderPreItem>().Where(x => x.ParentId == opi.Id && x.FormTempId == 6).Select(x => x.Value),
+                    Operator = u.CnName,
+                    OperationTime = opi.CreateTime
+                })
+                .WhereIF(!string.IsNullOrEmpty(dto.Search), x => x.Name.Contains(dto.Search) || x.UnitName.Contains(dto.Search))
+                .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
+
+            var infoIds = list.Select(x => x.Id).ToList();
 
+            var typeDatas = await _sqlSugar.Queryable<Sys_SetData>()
+                .Where(x => x.IsDel == 0 && x.STid == 109)
+                .ToArrayAsync();
 
-            return Ok(await _grpOrderPreInfoRep.DataInit(0));
+            var items = await _sqlSugar.Queryable<Grp_OrderPreItem>()
+                .LeftJoin<Sys_FormTemp>((opi, ft) => opi.FormTempId == ft.Id)
+                .Where((opi, ft) => opi.IsDel == 0 && infoIds.Contains(opi.ParentId))
+                .Select((opi, ft) => new { opi.ParentId, opi.FormTempId, ft.TempId })
+                .ToListAsync();
+
+            foreach (var item in list)
+            {
+                var typeDatas1 = typeDatas.Select(x => new
+                {
+                    Id = x.Id,
+                    Name = x.Name,
+                    IsNull = !items.Any(x1 => item.Id == x1.ParentId && x.Id == x1.TempId)
+                }).ToArray();
+                item.VersionDetails = typeDatas1;
+            }
+
+
+            return Ok(JsonView(list, total));
         }
 
         /// <summary>
@@ -422,8 +463,6 @@ namespace OASystem.API.Controllers
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> GroupOrderPreInfo(int userId)
         {
-
-
             return Ok(await _grpOrderPreInfoRep.DataInit(userId));
         }
 

+ 5 - 3
OASystem/OASystem.Domain/ViewModels/Groups/OrderPreInfoView.cs

@@ -26,12 +26,14 @@ namespace OASystem.Domain.ViewModels.Groups
 
         public string UnitName { get; set; }
 
-        public int VisitDays { get; set; }
+        public string VisitDays { get; set; }
 
-        public int VisiPpNum { get; set; }
+        public string VisiPpNum { get; set; }
+
+        public object[] VersionDetails { get; set; }
 
         public string Operator { get; set; }
-        public string OperationTime { get; set; }
+        public DateTime OperationTime { get; set; }
     }
 
     public class GrpOrderPreInfoView

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/Groups/GroupOrderPreInfoRepository.cs

@@ -183,7 +183,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 {
                     val =  JsonConvert.SerializeObject( (string[])item.NewValue);
                 }
-                else val = item.NewValue.ToString();
+                else if(item.NewValue != null) val = item.NewValue.ToString();
 
                 items.Add(new Grp_OrderPreItem()
                 {