yuanrf 3 months ago
parent
commit
394f57ecbe

+ 77 - 31
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -2325,38 +2325,84 @@ OPTION (MAXRECURSION 0); -- 允许无限递归      ";
             var jw = JsonView(false,"请传入正确的数据!");
             if (dto.Data.Any()) {
 
-                var ids = dto.Data.Select(x => x.AssessmentContentSettingId).ToList();
-                var QueryContent_DB = _sqlSugar.Queryable<Per_AssessmentContentSetting>()
-                                               .InnerJoin<Per_AssessmentSetting>((a, b) => b.IsDel == 0 && a.AssessmentSettingId == b.Id)
-                                               .Where((a, b) => a.IsDel == 0 && ids.Contains(a.Id))
-                                               .Select((a, b) => new
-                                               {
-                                                   ContentSettingId = a.Id,
-                                                   SettingId = b.Id,
-                                                   a.TargetValue,
-                                                   b.AssessmentStandard,
-                                                   MergeStr =  $"【项名称:{b.Name}/目标值:{a.TargetValue}/评估标准:{b.AssessmentStandard}】"
-                                               })
-                                               .ToList()
-                                               .ToDictionary(x=> x.ContentSettingId);
-
-                //删除上级未确认数据
-                //添加新数据
-
-                var entityList =  dto.Data.Select(x => new Per_AssessmentScore
+                if (!DateTime.TryParse(dto.AssessmenData, out DateTime yearMonth_Dt))
                 {
-                    Id = x.ScoreId,
-                    AssessmentContentSettingId = x.AssessmentContentSettingId,
-                    CreateTime = DateTime.Now,
-                    CreateUserId = dto.CreateUserId,
-                    Details = QueryContent_DB[x.AssessmentContentSettingId].MergeStr,
-                    HigherUpAssessment = x.HigherUpAssessment,
-                    HigherUpUserId = x.LeadersId,
-                    HigherUpConfig = 0,
-                    SelfAssessment = x.SelfAssessment,
-                    IsDel = 0,
-                })
-                .ToList();
+                    jw.Data = "月份参数有误!";
+                    return Ok(jw);
+                }
+
+                try
+                {
+                    var ids = dto.Data.Select(x => x.AssessmentContentSettingId).ToList();
+                    var QueryContent_DB = _sqlSugar.Queryable<Per_AssessmentContentSetting>()
+                                                   .InnerJoin<Per_AssessmentSetting>((a, b) => b.IsDel == 0 && a.AssessmentSettingId == b.Id)
+                                                   .Where((a, b) => a.IsDel == 0 && ids.Contains(a.Id))
+                                                   .Select((a, b) => new
+                                                   {
+                                                       ContentSettingId = a.Id,
+                                                       SettingId = b.Id,
+                                                       a.TargetValue,
+                                                       b.AssessmentStandard,
+                                                       MergeStr = $"【项名称:{b.Name}/目标值:{a.TargetValue}/评估标准:{b.AssessmentStandard}】",
+                                                       a.AssessmentProportionChi,
+                                                        b.Name
+                                                   })
+                                                   .ToList()
+                                                   .ToDictionary(x => x.ContentSettingId);
+
+                    //删除上级未确认数据
+                    var expressionWhere = Expressionable
+                            .Create<Per_AssessmentScore>()
+                            .And(x => x.YearMonth.Year == yearMonth_Dt.Year && x.YearMonth.Month == yearMonth_Dt.Month)
+                            .And(x => ids.Contains(x.AssessmentContentSettingId))
+                            .And(x => x.HigherUpConfig == 0)
+                            .ToExpression();
+                    _sqlSugar.BeginTran();
+                    _sqlSugar.Updateable<Per_AssessmentScore>()
+                             .Where(expressionWhere)
+                             .SetColumns(x => new Per_AssessmentScore { IsDel = 1, DeleteUserId = dto.CreateUserId, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") })
+                             .ExecuteCommand();
+
+                    var entityList = new List<Per_AssessmentScore>();
+                    foreach (var x in dto.Data)
+                    {
+                        if (x.HigherUpAssessment > 100 || x.SelfAssessment > 100)
+                        {
+                            jw.Msg = QueryContent_DB[x.AssessmentContentSettingId].Name + "项分数不能超过100。";
+                            return Ok(jw);
+                        }
+
+                        Per_AssessmentScore item = new Per_AssessmentScore
+                        {
+                            AssessmentContentSettingId = x.AssessmentContentSettingId,
+                            CreateTime = DateTime.Now,
+                            CreateUserId = dto.CreateUserId,
+                            Details = QueryContent_DB[x.AssessmentContentSettingId].MergeStr,
+                            HigherUpAssessment = x.HigherUpAssessment,
+                            HigherUpUserId = x.LeadersId,
+                            HigherUpConfig = x.HigherUpAssessment > 0 ? 1 : 0,
+                            SelfAssessment = x.SelfAssessment,
+                            IsDel = 0,
+                            Status = x.Status,
+                            YearMonth = yearMonth_Dt,
+                            Score = x.SelfAssessment * 0.3M + x.HigherUpAssessment * 0.7M,
+                            ScoreTotal = (x.SelfAssessment * 0.3M + x.HigherUpAssessment * 0.7M) * QueryContent_DB[x.AssessmentContentSettingId].AssessmentProportionChi,
+                        };
+                        entityList.Add(item);
+                    }
+
+                    var influenceRow =  _sqlSugar.Insertable(entityList).ExecuteCommand();
+                    _sqlSugar.CommitTran();
+                    jw.Code = 200;
+                    jw.Data = $"{influenceRow}条数据操作成功!";
+
+                }
+                catch (Exception ex)
+                {
+                    _sqlSugar.RollbackTran();
+                    jw.Code = 500;
+                    jw.Data = $"API ERROR ({ex.Message})";
+                }
             }
             return Ok(jw);
         }

+ 33 - 1
OASystem/OASystem.Domain/Dtos/PersonnelModule/TreeNode.cs

@@ -182,20 +182,52 @@ namespace OASystem.Domain.Dtos.PersonnelModule
 
     public class SaveUserAssessmenDto
     {
+        /// <summary>
+        /// 创建人id
+        /// </summary>
         public int CreateUserId { get; set; }
+
+        /// <summary>
+        /// 绩效日期
+        /// </summary>
+        public string AssessmenData { get; set; }
+
+        /// <summary>
+        /// 绩效数据
+        /// </summary>
         public List<itemScore> Data { get; set; }
     }
 
     public class itemScore
     {
-        public int ScoreId { get; set; }
+        //public int ScoreId { get; set; }
+        /// <summary>
+        /// 内容项id
+        /// </summary>
         public int AssessmentContentSettingId {  get; set; }
 
+        /// <summary>
+        /// 自评分
+        /// </summary>
         public decimal SelfAssessment { get; set; }
 
+        /// <summary>
+        /// 上级评分
+        /// </summary>
+
         public decimal HigherUpAssessment { get; set; }
 
+        /// <summary>
+        /// 上级领导id
+        /// </summary>
+
         public int LeadersId { get; set; }
+        
+        /// <summary>
+        /// 评估标准
+        /// </summary>
+
+        public string Status { get; set; }
 
     }
 }