Przeglądaj źródła

绩效部分添加

yuanrf 7 miesięcy temu
rodzic
commit
3fed9ef4b5

+ 111 - 1
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -12,6 +12,7 @@ using OASystem.Domain.Entities.PersonnelModule;
 using OASystem.Domain.ViewModels.PersonnelModule;
 using OASystem.Domain.ViewModels.QiYeWeChat;
 using OASystem.Infrastructure.Repositories.PersonnelModule;
+using System.Collections;
 using System.Data;
 using System.Diagnostics;
 using System.Globalization;
@@ -32,6 +33,7 @@ namespace OASystem.API.Controllers
         private readonly WageSheetRepository _wageSheetRep;
         private readonly UsersRepository _usersRep;
         private readonly TaskAllocationRepository _taskAllocationRep;
+        private readonly SqlSugarClient _sqlSugar;
 
         private readonly IHubContext<ChatHub, IChatClient> _hubContext;
         private readonly GoodsRepository _goodsRep;
@@ -48,13 +50,15 @@ namespace OASystem.API.Controllers
         /// <param name="taskAllocationRep"></param>
         /// <param name="hubContext"></param>
         /// <param name="goodsRep"></param>
+        /// <param name="sqlSugar"></param>
         public PersonnelModuleController(IQiYeWeChatApiService qiYeWeChatApiService,
                                          WageSheetRepository wageSheetRep,
                                          UsersRepository usersRep,
                                          IMapper mapper,
                                          TaskAllocationRepository taskAllocationRep,
                                          IHubContext<ChatHub, IChatClient> hubContext,
-                                         GoodsRepository goodsRep
+                                         GoodsRepository goodsRep,
+                                         SqlSugarClient sqlSugar
             )
         {
             _mapper = mapper;
@@ -63,6 +67,8 @@ namespace OASystem.API.Controllers
             _wageSheetRep = wageSheetRep;
             _result = new Result();
 
+            _sqlSugar = sqlSugar;
+
             url = AppSettingsHelper.Get("ExcelBaseUrl");
             path = AppSettingsHelper.Get("ExcelBasePath");
             if (!System.IO.Directory.Exists(path))
@@ -2038,5 +2044,109 @@ namespace OASystem.API.Controllers
             return Ok(await _goodsRep.GoodsReceiveDel(id, currUserInfo.UserId));
         }
         #endregion
+
+        #region 员工绩效
+
+        /// <summary>
+        /// 员工绩效组成结构获取
+        /// </summary>
+        /// <param name="userid"></param>
+        /// <returns></returns>
+        [HttpGet]
+        public IActionResult GetPerformanceList(int userid)
+        {
+            var jw = JsonView(false);
+
+            string sql_CTE = @"-- 定义递归查询的CTE
+WITH PerAssessmentSettingsCTE AS (
+    -- 选择指定ID的记录作为起点
+    SELECT
+        pac.Id,
+        pac.Name,
+        pac.AssessmentProportion,
+        pac.AssessmentStandard,
+        pac.ParentId,
+        1 AS Depth
+
+        
+    FROM
+        Per_AssessmentSetting pac 
+    INNER JOIN
+    	Per_AssessmentContentSetting pacs 
+    ON 
+    	pac.id = pacs.assessmentSettingid AND  pacs.isdel = 0
+    	
+    WHERE
+        pacs.userid = 302
+	AND  
+		pac.isdel = 0
+        
+    UNION ALL
+
+    -- 递归部分,选择所有子级记录
+    SELECT
+        ps.Id,
+        ps.Name,
+        ps.AssessmentProportion,
+        ps.AssessmentStandard,
+        ps.ParentId,
+        CAST(caste.Depth as int) + 1
+    FROM
+        Per_AssessmentSetting ps 
+    	
+    INNER JOIN PerAssessmentSettingsCTE caste ON ps.Id  = caste.ParentId)
+                                             
+                                             
+-- 从CTE中选择最终结果
+SELECT * FROM PerAssessmentSettingsCTE
+OPTION (MAXRECURSION 0); -- 允许无限递归      ";
+
+            var result_CTE =  _sqlSugar.Ado.SqlQuery<Per_AssessmentSetting>(sql_CTE);
+
+            var ids = result_CTE.Select(x => x.Id);
+
+            var List = _sqlSugar.Queryable<Per_AssessmentSetting>()
+                        .LeftJoin<Per_AssessmentContentSetting>((a, b) => a.Id == b.AssessmentSettingId && b.IsDel == 0)
+                        .Where((a, b) => a.IsDel == 0 && ids.Contains(a.Id))
+                        .Select((a, b) => new TreeNode
+                        {
+                            Id = a.Id,
+                            Name = a.Name,
+                            ParentId = a.ParentId,
+                            AssessmentProportion = a.AssessmentProportion, //占比
+                            AssessmentStandard = a.AssessmentStandard, //描述
+                            AssessmentProportionChi = b.AssessmentProportionChi, //占比
+                            UserId = b.UserId,
+                            JobId = b.JobId,
+                            AssessmentSettingId = b.AssessmentSettingId,
+                            Fixed = b.Fixed,
+                            TargetValue = b.TargetValue,
+                            AssessmentProportion_Percentage = a.AssessmentProportion * 100
+                        })
+                        .ToList();
+
+
+            var rootNodeList = List.Where(x => x.ParentId == 0);
+            var rootResult = rootNodeList.Select(x => BuildSubTree(x, List));
+
+            jw.Data = rootResult;
+            jw.Code = 200;
+            jw.Msg = "成功";
+
+            return Ok(jw);
+        }
+
+        private TreeNode BuildSubTree(TreeNode parent, List<TreeNode> nodes)
+        {
+            var children = nodes
+                .Where(n => n.ParentId == parent.Id)
+                .Select(n => BuildSubTree(n, nodes))
+                .ToList();
+
+            parent.Children = children;
+            return parent;
+        }
+
+        #endregion
     }
 }

+ 6 - 0
OASystem/OASystem.Api/Controllers/ResourceController.cs

@@ -1527,6 +1527,7 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
         {
 
             var ExcludedKeyStr = new string[] { "快递费" };
+            var ClientKeyStr = new string[] { "邀请函翻译" };
 
             try
             {
@@ -1557,6 +1558,11 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
                     sqlWhere += $" And i.UnitName not like '%{item}%' ";
                 }
 
+                foreach (var item in ClientKeyStr)
+                {
+                    sqlWhere += $" And i.Contact not like '%{item}%' ";
+                }
+
                 if (!string.IsNullOrEmpty(sqlWhere.Trim()))
                 {
                     Regex r = new Regex("And");

+ 62 - 0
OASystem/OASystem.Domain/Dtos/PersonnelModule/TreeNode.cs

@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.PersonnelModule
+{
+    public class TreeNode
+    {
+        public int Id { get; set; }
+        public string Name { get; set; }
+        /// <summary>
+        /// 考核占比
+        /// </summary>
+        public decimal AssessmentProportion { get; set; }
+
+        /// <summary>
+        /// 评分标准
+        /// </summary>
+        public string AssessmentStandard { get; set; }
+
+        /// <summary>
+        /// 父编号
+        /// </summary>
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 项目设置表id
+        /// </summary>
+        public int AssessmentSettingId { get; set; }
+
+        /// <summary>
+        /// 占比
+        /// </summary>
+        public decimal AssessmentProportionChi { get; set; }
+
+        /// <summary>
+        /// 目标值
+        /// </summary>
+        public string TargetValue { get; set; }
+
+        /// <summary>
+        /// 岗位id
+        /// </summary>
+        public int JobId { get; set; }
+
+        /// <summary>
+        /// 员工id
+        /// </summary>
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 固定标识 (1 是固定 2 是灵活)
+        /// </summary>
+        public int Fixed { get; set; }
+
+        public List<TreeNode> Children { get; set; }
+
+        public decimal AssessmentProportion_Percentage { get; set; }
+    }
+}

+ 127 - 0
OASystem/OASystem.Domain/Entities/PersonnelModule/Per_PerformanceSetting.cs

@@ -0,0 +1,127 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.PersonnelModule
+{
+    /// <summary>
+    /// 绩效项目设置表
+    /// </summary>
+    public class Per_AssessmentSetting : EntityBase
+    {
+        /// <summary>
+        /// 名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 考核占比
+        /// </summary>
+        public decimal AssessmentProportion { get; set; }
+
+        /// <summary>
+        /// 评分标准
+        /// </summary>
+        public string AssessmentStandard { get; set; }
+
+        /// <summary>
+        /// 父编号
+        /// </summary>
+        public int ParentId { get; set; }
+    }
+
+    /// <summary>
+    /// 考核内容设置表
+    /// </summary>
+    public class Per_AssessmentContentSetting : EntityBase
+    {
+        /// <summary>
+        /// 项目设置表id
+        /// </summary>
+        public int AssessmentSettingId { get; set; }
+
+        /// <summary>
+        /// 占比
+        /// </summary>
+        public decimal AssessmentProportionChi { get; set; }
+
+        /// <summary>
+        /// 目标值
+        /// </summary>
+        public string TargetValue { get; set; }
+
+        /// <summary>
+        /// 岗位id
+        /// </summary>
+        public int JobId { get; set; }
+
+        /// <summary>
+        /// 员工id
+        /// </summary>
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 固定标识 (1 是固定 2 是灵活)
+        /// </summary>
+        public int Fixed { get; set; }
+    }
+
+    /// <summary>
+    /// 考核内容评分表
+    /// </summary>
+    public class Per_AssessmentScore : EntityBase
+    {
+        /// <summary>
+        /// 年月份
+        /// </summary>
+        public DateTime YearMonth { get; set; }
+
+        /// <summary>
+        /// 考核内容设置表id
+        /// </summary>
+        public int AssessmentContentSettingId { get; set; }
+
+        /// <summary>
+        /// 达成情况
+        /// </summary>
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 自评
+        /// </summary>
+        public decimal SelfAssessment { get; set; }
+
+        /// <summary>
+        /// 上级评分
+        /// </summary>
+        public decimal HigherUpAssessment { get; set; }
+
+        /// <summary>
+        /// 该项得分
+        /// </summary>
+        public decimal Score { get; set; }
+
+        /// <summary>
+        /// 绩效分
+        /// </summary>
+        public decimal ScoreTotal { get; set; }
+
+        /// <summary>
+        /// 上级确认
+        /// </summary>
+        public int HigherUpConfig { get; set; }
+
+        /// <summary>
+        /// 上级员工id
+        /// </summary>
+        public int HigherUpUserId { get; set; }
+
+        /// <summary>
+        /// 详细信息
+        /// </summary>
+        public string Details { get; set; }
+    }
+
+}