Selaa lähdekoodia

团组费用查询Sql构建

Lyyyi 1 viikko sitten
vanhempi
commit
357b8836e1

+ 0 - 1
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -7201,7 +7201,6 @@ Group by PriceType ", dto.diId);
             _DailyFeePaymentResult.gz = _paymentDatas.Where(it => it.OrbitalPrivateTransfer == 0).Sum(it => ((it.PayMoney * it.DayRate) / 100) * it.PayPercentage); //公转
             _DailyFeePaymentResult.sz = _paymentDatas.Where(it => it.OrbitalPrivateTransfer == 1).Sum(it => ((it.PayMoney * it.DayRate) / 100) * it.PayPercentage); ; //私转
 
-
             #region 相关基础数据源
             var userDatas = _sqlSugar.Queryable<Sys_Users>().ToList();
             var setDatas = _sqlSugar.Queryable<Sys_SetData>().Where(it => it.IsDel == 0).ToList();

+ 71 - 34
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -6518,65 +6518,102 @@ FROM
         ///  费用审核
         ///  团组列表 Page
         /// </summary>
-        /// <param name="_dto">团组列表请求dto</param>
+        /// <param name="dto">团组列表请求dto</param>
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> PostExpenseAuditGroupPageItems(ExpenseAuditGroupPageItemsDto _dto)
+        public async Task<IActionResult> PostExpenseAuditGroupPageItems(ExpenseAuditGroupPageItemsDto dto)
         {
             #region  参数验证
-            if (_dto.UserId < 1) return Ok(JsonView(false, "员工Id为空"));
-            if (_dto.PageId < 1) return Ok(JsonView(false, "页面Id为空"));
+            if (dto.UserId < 1) return Ok(JsonView(false, "员工Id为空"));
+            if (dto.PageId < 1) return Ok(JsonView(false, "页面Id为空"));
 
             #region 页面操作权限验证
-            var pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
+            var pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(dto.UserId, dto.PageId);
 
             if (pageFunAuthView.CheckAuth == 0) return Ok(JsonView(false, "您没有查看权限"));
             #endregion
 
             #endregion
-            if (_dto.PortType == 1 || _dto.PortType == 2 || _dto.PortType == 3) // web/Android/IOS
+
+            if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3) // web/Android/IOS
             {
-                string sqlWhere = string.Empty;
-                if (_dto.IsSure == 0) //未完成
+                string sqlWhere = "WHERE gdi.IsDel = 0";
+                var parameters = new List<SugarParameter>();
+
+                // 状态条件(保持不变)
+                if (dto.IsSure >= 0)
                 {
-                    sqlWhere += string.Format(@" And IsSure = 0");
+                    sqlWhere += $" AND IsSure = {dto.IsSure}";
                 }
-                else if (_dto.IsSure == 1) //已完成
+                
+                // 搜索条件
+                if (!string.IsNullOrEmpty(dto.SearchCriteria))
                 {
-                    sqlWhere += string.Format(@" And IsSure = 1");
-                }
+                    var searchFields = new List<string>
+                    {
+                        "ssd.Name",
+                        "TeamName",
+                        "ClientName",
+                        "su.CnName"
+                    };
 
-                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 su.CnName  Like '%{3}%')",
-                       tj, tj, tj, tj);
-                }
+                    // 使用更宽松的配置
+                    var config = new SearchConfig
+                    {
+                        EnableSmartSplitting = true,
+                        RequireAllWordsForSplit = false,
+                        MinSplitLength = 4
+                    };
 
-                string sql = string.Format(@"Select Row_Number,Id,SalesQuoteNo,TourCode,TeamTypeId, TeamType,
-					                       TeamName,ClientName,ClientUnit, TeamLevId,TeamLev,VisitDate,
-										   VisitDays,VisitPNumber,JietuanOperator,IsSure,CreateTime
-					                From (
-					                    Select row_number() over(order by gdi.VisitDate Desc) as Row_Number,
-					                    gdi.Id,SalesQuoteNo,TourCode,ssd1.Id TeamLevId,ssd1.Name TeamLev,TeamName,
-										ClientName,ClientUnit,ssd.Id TeamTypeId, ssd.Name TeamType,VisitDate,
-										VisitDays,VisitPNumber,su.CnName JietuanOperator,IsSure,gdi.CreateTime
-					                    From  Grp_DelegationInfo gdi
-					                    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);
+                    // 使用智能混合模式
+                    var (searchCondition, searchParams) = AdvancedSearchHelper.BuildEnhancedSearchCondition(
+                        dto.SearchCriteria,
+                        searchFields,
+                        "search_groupFee_",
+                        SearchMode.AutoDetect,
+                        CombinationMode.SmartMix,
+                        config  // 传入配置
+                    );
 
-                RefAsync<int> total = 0;//REF和OUT不支持异步,想要真的异步这是最优解
-                var _DelegationList = await _sqlSugar.SqlQueryable<DelegationListView>(sql).ToPageListAsync(_dto.PageIndex, _dto.PageSize, total);//ToPageAsync
+                    if (!string.IsNullOrEmpty(searchCondition))
+                    {
+                        sqlWhere += $" AND ({searchCondition})";
+                        parameters.AddRange(searchParams);
+                    }
+                }
+
+                // 基础查询sql
+                string sql = $@"
+                SELECT Row_Number, Id, SalesQuoteNo, TourCode, TeamTypeId, TeamType,
+                       TeamName, ClientName, ClientUnit, TeamLevId, TeamLev, VisitDate,
+                       VisitDays, VisitPNumber, JietuanOperator, IsSure, CreateTime
+                FROM (
+                    SELECT ROW_NUMBER() OVER (ORDER BY gdi.VisitDate DESC) AS Row_Number,
+                           gdi.Id, gdi.SalesQuoteNo, gdi.TourCode, 
+                           ssd1.Id AS TeamLevId, ssd1.Name AS TeamLev,
+                           gdi.TeamName, gdi.ClientName, gdi.ClientUnit,
+                           ssd.Id AS TeamTypeId, ssd.Name AS TeamType,
+                           gdi.VisitDate, gdi.VisitDays, gdi.VisitPNumber,
+                           su.CnName AS JietuanOperator, gdi.IsSure, gdi.CreateTime
+                    FROM Grp_DelegationInfo gdi
+                    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
+                    {sqlWhere}
+                ) AS temp";
+
+                RefAsync<int> total = 0;
+                var _DelegationList = await _sqlSugar.SqlQueryable<DelegationListView>(sql)
+                    .AddParameters(parameters.ToArray())
+                    .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
 
                 var _view = new
                 {
                     PageFuncAuth = pageFunAuthView,
                     Data = _DelegationList
                 };
+
                 return Ok(JsonView(true, "查询成功!", _view, total));
 
             }

+ 46 - 0
OASystem/OASystem.Domain/Entities/PersonnelModule/FinanceKpi.cs

@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.PersonnelModule
+{
+    /// <summary>
+    /// 财务部绩效考核
+    /// </summary>
+    [SugarTable("FinanceKpi", "财务部绩效考核")]
+    public class FinanceKpi : EntityBase
+    {
+        /// <summary>
+        /// 月份(yyyy-MM)
+        /// </summary>
+        [SugarColumn(ColumnName = "Month", ColumnDescription = "月份(yyyy-MM)", IsNullable = true, ColumnDataType = "varchar(30)")]
+        public string Month { get; set; }
+
+        /// <summary>
+        /// 考核人
+        /// </summary>
+        [SugarColumn(ColumnName = "Evaluator", ColumnDescription = "考核人", IsNullable = true, ColumnDataType = "int")]
+        public int Evaluator { get; set; }
+
+        /// <summary>
+        /// 考核内容
+        /// </summary>
+        [SugarColumn(ColumnName = "EvalContent", ColumnDescription = "考核内容", IsNullable = true, ColumnDataType = "int")]
+        public int EvalContent { get; set; }
+
+        /// <summary>
+        /// 是否失误
+        /// </summary>
+        [SugarColumn(ColumnName = "EvalContent", ColumnDescription = "是否失误", IsNullable = true, ColumnDataType = "bit")]
+        public bool IsMistake { get; set; }
+        
+        /// <summary>
+        /// 失误原因
+        /// </summary>
+        [SugarColumn(ColumnName = "EvalContent", ColumnDescription = "考核内容", IsNullable = true, ColumnDataType = "varchar(300)")]
+        public string MistakeReason { get; set; }
+
+    }
+}

+ 2 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs

@@ -7,6 +7,8 @@ using OASystem.Domain.Entities.Customer;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Infrastructure.Repositories.System;
+using OASystem.Infrastructure.Tools;
+using System.Diagnostics;
 
 namespace OASystem.Infrastructure.Repositories.Groups
 {

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 2471 - 0
OASystem/OASystem.Infrastructure/Tools/AdvancedSearchHelper.cs