Przeglądaj źródła

优化查询逻辑并添加计时功能

- 在 `GroupItemKeywordSearch` 方法中添加计时功能,返回结果时增加耗时信息。
- 修复 `_dto.PortType` 判断条件中的逻辑错误。
- 优化 SQL 查询条件拼接,删除重复条件。
- 将部分表连接方式从 `Inner Join` 修改为 `Left Join`,避免因缺失关联数据导致查询结果被过滤。
- 其他小调整:确保动态拼接的 SQL 条件一致性,提升代码可读性和健壮性。
Lyyyi 1 dzień temu
rodzic
commit
511deae43a

+ 12 - 8
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -1174,11 +1174,13 @@ namespace OASystem.API.Controllers
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> GroupItemKeywordSearch(string keyword)
         {
+            var stopwatch = Stopwatch.StartNew();
 
             if (string.IsNullOrWhiteSpace(keyword))
             {
                 var result = await GetDefaultResultsAsync();
-                return Ok(JsonView(result));
+                stopwatch.Stop();
+                return Ok(JsonView(true,$"操作成功!耗时:{stopwatch.ElapsedMilliseconds}ms", result, result.Count));
             }
 
             // 分析搜索模式
@@ -1187,13 +1189,15 @@ namespace OASystem.API.Controllers
             if (!searchAnalysis.HasSearchContent)
             {
                 var result = await GetDefaultResultsAsync();
-                return Ok(JsonView(result));
+                stopwatch.Stop();
+                return Ok(JsonView(true, $"操作成功!耗时:{stopwatch.ElapsedMilliseconds}ms", result, result.Count));
             }
 
             // 使用方法4:原生SQL查询(最稳定)
             var results = await SearchWithNativeSql(searchAnalysis);
             var results1 = CalculateUnifiedMatchScore(results, searchAnalysis);
-            return Ok(JsonView(true, $"搜索成功", results1, results1.Count));
+            stopwatch.Stop();
+            return Ok(JsonView(true, $"搜索成功!耗时:{stopwatch.ElapsedMilliseconds}ms", results1, results1.Count));
           
         }
 
@@ -6725,7 +6729,7 @@ FROM
             #endregion
 
             #endregion
-            if (_dto.PortType == 1 || _dto.PortType == 2 || _dto.PortType == 2) // web/Android/IOS
+            if (_dto.PortType == 1 || _dto.PortType == 2 || _dto.PortType == 3) // web/Android/IOS
             {
                 string sqlWhere = string.Empty;
                 if (_dto.IsSure == 0) //未完成
@@ -6740,8 +6744,8 @@ FROM
                 if (!string.IsNullOrEmpty(_dto.SearchCriteria))
                 {
                     string tj = _dto.SearchCriteria;
-                    sqlWhere += string.Format(@"And (ssd.Name Like '%{0}%' Or TeamName Like '%{1}%' Or ClientName Like '%{2}%' Or  ClientName Like '%{3}%' Or su.CnName  Like '%{4}%')",
-                       tj, tj, tj, tj, tj);
+                    sqlWhere += string.Format(@"And (ssd.Name Like '%{0}%' Or TeamName Like '%{1}%' Or ClientName Like '%{2}%' Or su.CnName  Like '%{3}%')",
+                       tj, tj, tj, tj);
                 }
 
                 string sql = string.Format(@"Select Row_Number,Id,SalesQuoteNo,TourCode,TeamTypeId, TeamType,
@@ -6753,8 +6757,8 @@ FROM
 										ClientName,ClientUnit,ssd.Id TeamTypeId, ssd.Name TeamType,VisitDate,
 										VisitDays,VisitPNumber,su.CnName JietuanOperator,IsSure,gdi.CreateTime
 					                    From  Grp_DelegationInfo gdi
-					                    Inner Join Sys_SetData ssd On gdi.TeamDid = ssd.Id 
-					                    Inner Join Sys_SetData ssd1 On gdi.TeamLevSId = ssd1.Id
+					                    Left Join Sys_SetData ssd On gdi.TeamDid = ssd.Id 
+					                    Left Join Sys_SetData ssd1 On gdi.TeamLevSId = ssd1.Id
 					                    Left Join Sys_Users su On gdi.JietuanOperator = su.Id
 					                    Where gdi.IsDel = 0 {0}
 				                    ) temp  ", sqlWhere);