Переглянути джерело

策划部日常绩效CURD代码编写及本地测试

Lyyyi 6 днів тому
батько
коміт
007ca5441c

+ 38 - 0
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -5364,7 +5364,45 @@ ORDER BY MonthNumber, CollectionDays";
 
         #endregion
 
+        #region 策划部日常绩效
+
+        /// <summary>
+        /// 策划部日常绩效 初始化数据
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet]
+        public async Task<IActionResult> PlanningDailyKpiInit()
+        {
+            return Ok(await _companyDailyKyiRep.PlanningInitAsync());
+        }
+
+        /// <summary>
+        /// 策划部日常绩效 详情
+        /// </summary>
+        /// <param name="month">月份(2025-12)</param>
+        /// <param name="evaluator">考核人</param>
+        /// <returns></returns>
+        [HttpGet]
+        public async Task<IActionResult> PlanningDailyKpiInfo(string month, int evaluator)
+        {
+            return Ok(await _companyDailyKyiRep.InfoAsync(month, evaluator));
+        }
+
+        /// <summary>
+        /// 策划部日常绩效 保存
+        /// </summary>
+        /// <param name="dto">请求类</param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> PlanningDailyKpiSave(CompanyDailyKpiSaveDto dto)
+        {
+            return Ok(await _companyDailyKyiRep.SaveAsync(dto));
+        }
+
         #endregion
 
+        #endregion
+
+
     }
 }

+ 45 - 0
OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/CompanyDailyKpiRepository.cs

@@ -205,6 +205,51 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
             return _jv;
         }
 
+        /// <summary>
+        /// 策划部基础数据
+        /// </summary>
+        /// <returns></returns>
+        public async Task<JsonView> PlanningInitAsync()
+        {
+            var result = await KpiDepartmentsAndJobs("策划部");
+            if (!result.Success)
+            {
+                _jv.Msg = result.Message;
+                return _jv;
+            }
+
+            var userInfos = await _sqlSugar.Queryable<Sys_Users>()
+                .LeftJoin<Sys_JobPost>((u, jp) => u.JobPostId == jp.Id)
+                .LeftJoin<Sys_Department>((u, jp, d) => u.DepId == d.Id)
+                .LeftJoin<Sys_Company>((u, jp, d, c) => u.CompanyId == c.Id)
+                .Where((u, jp, d, c) => u.IsDel == 0)
+                .Select((u, jp, d, c) => new
+                {
+                    UserId = u.Id,
+                    u.CompanyId,
+                    c.CompanyName,
+                    u.DepId,
+                    d.DepName,
+                    u.JobPostId,
+                    jp.JobName,
+                    UserName = u.CnName
+                })
+                .OrderBy(u => u.CompanyId)
+                .ToListAsync();
+
+            var jobNames = result.DepartmentsWithJobs
+                .SelectMany(x => x.JobNames)
+                .ToList();
+
+            var view = userInfos.Where(x => jobNames.Contains(x.JobName))
+                .Select(x => new KpiTempUserInfo() { Id = x.UserId, DepName = x.DepName, JobName = x.JobName, Name = x.UserName })
+                .ToList();
+            _jv.Code = StatusCodes.Status200OK;
+            _jv.Data = view;
+            _jv.Msg = $"操作成功";
+            return _jv;
+        }
+
         /// <summary>
         /// 考勤详情
         /// </summary>