using System; using System.Collections.Generic; using System.Linq; using Edu.Cache.User; using Edu.Common.API; using Edu.Common.Enum.Course; using Edu.Common.Enum.OKR; using Edu.Common.Plugin; using Edu.Model.ViewModel.OKR; using Edu.Module.OKR; using Edu.WebApi.Filter; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; namespace Edu.WebApi.Controllers.OKR { [Route("api/[controller]/[action]")] [ApiExceptionFilter] [ApiController] [EnableCors("AllowCors")] public class OKRPeriodController : BaseController { /// /// OKR周期处理类对象 /// private readonly OKRPeriodModule okrPeriodModule = new OKRPeriodModule(); private readonly Module.User.DepartmentModule departmentModule = new Module.User.DepartmentModule(); #region 基础配置 /// /// 获取OKR周期配置信息 /// /// [HttpPost] public ApiResult GetOKRPeriodConfigInfo() { var userInfo = base.UserInfo; var model = okrPeriodModule.GetOKRPeriodConfigInfo(userInfo.Group_Id); return ApiResult.Success("", new { model.Id, model.PeriodMonth, StartDate = model.StartDate.HasValue ? model.StartDate.Value.ToString("yyyy年MM月") : "", EndDate = model.EndDate.HasValue ? model.EndDate.Value.ToString("yyyy年MM月") : "", model.BeforeNum, model.BeforeType, model.YearOKR, model.DirectorAudit }); } /// /// 保存OKR周期配置 /// /// [HttpPost] public ApiResult SetOKRPeriodConfigInfo() { var userInfo = base.UserInfo; RB_OKR_PeriodConfig_ViewModel dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); if (dmodel.PeriodMonth <= 0) { return ApiResult.ParamIsNull("请选择周期长度"); } if (!dmodel.StartDate.HasValue) { return ApiResult.ParamIsNull("请选择新周期生效时间"); } if (!dmodel.EndDate.HasValue) { return ApiResult.ParamIsNull("请选择新周期生效时间"); } if (dmodel.BeforeNum <= 0) { return ApiResult.ParamIsNull("请选择新周期出现时间"); } if (dmodel.BeforeType <= 0) { return ApiResult.ParamIsNull("请选择类型"); } if (dmodel.YearOKR <= 0) { return ApiResult.ParamIsNull("请选择年度是否开启"); } if (dmodel.DirectorAudit <= 0) { return ApiResult.ParamIsNull("请选择主管审核是否开启"); } if (dmodel.StartDate.Value.AddMonths((int)dmodel.PeriodMonth - 1).ToString("yyyy-MM") != dmodel.EndDate.Value.ToString("yyyy-MM")) { return ApiResult.ParamIsNull("时间不正确"); } dmodel.StartDate = Convert.ToDateTime(dmodel.StartDate.Value.ToString("yyyy-MM") + "-01"); dmodel.EndDate = Convert.ToDateTime(dmodel.EndDate.Value.ToString("yyyy-MM") + "-01 23:59:59").AddMonths(1).AddDays(-1); dmodel.Group_Id = userInfo.Group_Id; dmodel.School_Id = userInfo.School_Id; dmodel.CreateBy = userInfo.Id; dmodel.CreateTime = DateTime.Now; dmodel.UpdateBy = userInfo.Id; dmodel.UpdateTime = DateTime.Now; string msg = okrPeriodModule.SetOKRPeriodConfigInfo(dmodel, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取OKR提醒列表 /// /// [HttpPost] public ApiResult GetOKRRemindList() { var userInfo = base.UserInfo; var list = okrPeriodModule.GetOKRRemindList(userInfo.Group_Id); return ApiResult.Success("", list.Select(x => new { x.Id, x.Days, x.Time, x.Enable, x.Type })); } /// /// 设置OKR提醒 /// /// [HttpPost] public ApiResult SetOKRRemindInfo() { var userInfo = base.UserInfo; RB_OKR_Remind_ViewModel dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); if (string.IsNullOrEmpty(dmodel.Days)) { return ApiResult.ParamIsNull("请选择工作日"); } if (string.IsNullOrEmpty(dmodel.Time)) { return ApiResult.ParamIsNull("请选择时间"); } if (dmodel.Type <= 0) { return ApiResult.ParamIsNull("请传递类型"); } dmodel.Group_Id = userInfo.Group_Id; dmodel.School_Id = userInfo.School_Id; dmodel.CreateBy = userInfo.Id; dmodel.CreateTime = DateTime.Now; dmodel.UpdateBy = userInfo.Id; dmodel.UpdateTime = DateTime.Now; dmodel.Enable = 1; string msg = okrPeriodModule.SetOKRRemindInfo(dmodel, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 谁知OKR提醒启用 /// /// [HttpPost] public ApiResult SetOKRRemindEnable() { var userInfo = base.UserInfo; JObject prams = JObject.Parse(RequestParm.Msg.ToString()); int Type = prams.GetInt("Type", 0); if (Type <= 0) { return ApiResult.ParamIsNull(); } bool flag = okrPeriodModule.SetOKRRemindEnable(Type, userInfo); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 获取分数配置分页列表 /// /// [HttpPost] public ApiResult GetOKRScoreConfigPageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); var dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); dmodel.Group_Id = userInfo.Group_Id; var list = okrPeriodModule.GetOKRScoreConfigPageList(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.Name, x.IsDefault, DetailList = x.DetailList.OrderBy(x => x.ScoreMin).Select(z => new { z.Name, z.ScoreMin, z.ScoreMax, z.Color }) }); return ApiResult.Success("", pageModel); } /// /// 设置分数规则 /// /// [HttpPost] public ApiResult SetOKRScoreConfigInfo() { var userInfo = base.UserInfo; RB_OKR_Score_ViewModel dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); if (string.IsNullOrEmpty(dmodel.Name)) { return ApiResult.ParamIsNull("请传递规则名称"); } if (dmodel.DetailList == null || !dmodel.DetailList.Any()) { return ApiResult.ParamIsNull("请传递分数明细"); } decimal min = 0; foreach (var item in dmodel.DetailList) { if (string.IsNullOrEmpty(item.Name)) { return ApiResult.ParamIsNull("请传递颜色名称"); } if (item.ScoreMin < 0 || item.ScoreMin >= 1) { return ApiResult.ParamIsNull("分数有误"); } if (item.ScoreMax <= 0 || item.ScoreMax > 1) { return ApiResult.ParamIsNull("分数有误"); } if (item.ScoreMax < item.ScoreMin) { return ApiResult.ParamIsNull("分数有误"); } if (min == 0) { if (item.ScoreMin < min) { return ApiResult.ParamIsNull("分数有交集"); } } else { if (item.ScoreMin <= min) { return ApiResult.ParamIsNull("分数有交集"); } } min = item.ScoreMax; } dmodel.IsDefault = 2; dmodel.Status = 0; dmodel.Group_Id = userInfo.Group_Id; dmodel.School_Id = userInfo.School_Id; dmodel.CreateBy = userInfo.Id; dmodel.CreateTime = DateTime.Now; dmodel.UpdateBy = userInfo.Id; dmodel.UpdateTime = DateTime.Now; string msg = okrPeriodModule.SetOKRScoreConfigInfo(dmodel, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 设置分数状态 /// /// [HttpPost] public ApiResult SetOKRScoreConfigState() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int ScoreId = parms.GetInt("ScoreId", 0); int Type = parms.GetInt("Type", 1);// 类型 1设置默认 2删除 if (ScoreId <= 0) { return ApiResult.ParamIsNull("请传递id"); } string msg = okrPeriodModule.SetOKRScoreConfigState(ScoreId, Type, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetPeriodMonthEnumList() { var list = EnumHelper.EnumToList(typeof(PeriodMonthEnum)); return ApiResult.Success("", list.Select(x => new { x.Name, x.Id })); } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetPermissionTypeEnumList() { var list = EnumHelper.EnumToList(typeof(PermissionTypeEnum)); return ApiResult.Success("", list.Select(x => new { x.Name, x.Id })); } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetProgressStateEnumList() { var list = EnumHelper.EnumToList(typeof(ProgressStateEnum)); return ApiResult.Success("", list.Select(x => new { x.Name, x.Id })); } #endregion #region 目标管理 #region 基础目标 /// /// 获取周期列表 /// /// public ApiResult GetOKRPeriodList() { var userInfo = base.UserInfo; var list = okrPeriodModule.GetOKRPeriodList(userInfo.Group_Id); return ApiResult.Success("", list.Select(x => new { x.Id, x.Name, StartDate = x.StartDate.ToString("yyyy-MM-dd HH:mm:ss"), EndDate = x.EndDate.ToString("yyyy-MM-dd HH:mm:ss"), x.IsCurrent, x.IsYear })); } /// /// 获取我的目标列表 /// /// [HttpPost] public ApiResult GetOKRMyObjectiveList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0); if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } var list = okrPeriodModule.GetOKRMyObjectiveList(PeriodId, userInfo); return ApiResult.Success("", list); } /// /// 获取单个我的目标 /// /// [HttpPost] public ApiResult GetOKRMyObjectiveInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int ObjectiveId = parms.GetInt("ObjectiveId", 0); if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递目标id"); } var obj = okrPeriodModule.GetOKRMyObjectiveInfo(ObjectiveId, userInfo); return ApiResult.Success("", obj); } /// /// 新增修改目标 /// /// [HttpPost] public ApiResult SgetOKRMyObjectiveInfo() { var userInfo = base.UserInfo; RB_OKR_Objective_ViewModel dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); if (string.IsNullOrEmpty(dmodel.Title)) { return ApiResult.ParamIsNull("请输入Objective"); } if (dmodel.PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } string msg = okrPeriodModule.SetOKRMyObjectiveInfo(dmodel, userInfo, out int ObjectiveId); if (msg == "") { return ApiResult.Success("", ObjectiveId); } else { return ApiResult.Failed(msg); } } /// /// 新增修改关键结果 /// /// [HttpPost] public ApiResult SgetOKRMyKeyResultInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int KeyResultId = parms.GetInt("KeyResultId", 0); int ObjectiveId = parms.GetInt("ObjectiveId", 0); string Name = parms.GetStringValue("Name"); if (string.IsNullOrEmpty(Name)) { return ApiResult.ParamIsNull("请传递结果值"); } if (KeyResultId <= 0 && ObjectiveId <= 0) { return ApiResult.ParamIsNull("结果id不正确"); } string msg = okrPeriodModule.SetOKRMyKeyResultInfo(KeyResultId, ObjectiveId, Name, userInfo, out int RKeyResultId); if (msg == "") { return ApiResult.Success("", RKeyResultId); } else { return ApiResult.Failed(msg); } } /// /// 设置目标排序 /// /// [HttpPost] public ApiResult SgetOKRMyObjectiveSort() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int ObjectiveId1 = parms.GetInt("ObjectiveId1", 0); int ObjectiveId2 = parms.GetInt("ObjectiveId2", 0);//目标的后面 if (ObjectiveId1 <= 0) { return ApiResult.ParamIsNull(); } if (ObjectiveId2 < 0) { return ApiResult.ParamIsNull(); } if (ObjectiveId1 == ObjectiveId2) { return ApiResult.Success(); } string msg = okrPeriodModule.SetOKRMyObjectiveSort(ObjectiveId1, ObjectiveId2, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 设置目标关键结果排序 /// /// [HttpPost] public ApiResult SgetOKRMyKeyResultSort() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int KeyResult1 = parms.GetInt("KeyResult1", 0); int KeyResult2 = parms.GetInt("KeyResult2", 0);//结果的后面 if (KeyResult1 <= 0) { return ApiResult.ParamIsNull(); } if (KeyResult2 < 0) { return ApiResult.ParamIsNull(); } if (KeyResult1 == KeyResult2) { return ApiResult.Success(); } string msg = okrPeriodModule.SetgetOKRMyKeyResultSort(KeyResult1, KeyResult2, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 设置目标状态 /// /// [HttpPost] public ApiResult SgetOKRMyObjectiveState() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int ObjectiveId = parms.GetInt("ObjectiveId", 0); int Type = parms.GetInt("Type", 1);// 类型 1设置默认状态 2设置自定义状态 3删除 int ProgressState = parms.GetInt("ProgressState", 0); if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递目标id"); } if (Type == 2 && ProgressState <= 0) { return ApiResult.ParamIsNull("请传递自定义状态"); } string msg = okrPeriodModule.SetOKRMyObjectiveState(ObjectiveId, Type, ProgressState, out int OutProgressState, userInfo); if (msg == "") { return ApiResult.Success("", OutProgressState); } else { return ApiResult.Failed(msg); } } /// /// 修改关键结果状态 /// /// [HttpPost] public ApiResult SgetOKRMyKeyResultState() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int KeyResultId = parms.GetInt("KeyResultId", 0); int Type = parms.GetInt("Type", 0);// 类型 1自定义状态 2删除(作废) 3切换为简单模式 4切换为高级模式 string ProgressState = parms.GetStringValue("ProgressState"); if (KeyResultId <= 0) { return ApiResult.ParamIsNull(); } string msg = okrPeriodModule.SgetOKRMyKeyResultState(KeyResultId, Type, ProgressState, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 修改目标关键结果进度 /// /// [HttpPost] public ApiResult SgetOKRMyKeyResultProgress() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int KeyResultId = parms.GetInt("KeyResultId", 0); int Type = parms.GetInt("Type", 0);// 类型 1简单模式 2高级模式 int Progress = parms.GetInt("Progress", 0); decimal StartValue = parms.GetDecimal("StartValue"); decimal EndValue = parms.GetDecimal("EndValue"); decimal CurrentValue = parms.GetDecimal("CurrentValue"); if (KeyResultId <= 0) { return ApiResult.ParamIsNull(); } if (Progress < 0 || StartValue < 0 || EndValue < 0 || CurrentValue < 0) { return ApiResult.ParamIsNull("不能小于0"); } return okrPeriodModule.SgetOKRMyKeyResultProgress(KeyResultId, Type, Progress, StartValue, EndValue, CurrentValue, userInfo); } /// /// 修改目标关键结果权重 /// /// [HttpPost] public ApiResult SgetOKRMyKeyResultWeight() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int KeyResultId = parms.GetInt("KeyResultId", 0); decimal Weight = parms.GetDecimal("Weight"); if (KeyResultId <= 0) { return ApiResult.ParamIsNull("请传递结果Id"); } if (Weight < 0 || Weight > 100) { return ApiResult.ParamIsNull("权重值有误"); } return okrPeriodModule.SgetOKRMyKeyResultWeight(KeyResultId, Weight, userInfo); } /// /// 修改目标关键结果分数 /// /// [HttpPost] public ApiResult SgetOKRMyKeyResultScore() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int KeyResultId = parms.GetInt("KeyResultId", 0); decimal Score = parms.GetDecimal("Score"); if (KeyResultId <= 0) { return ApiResult.ParamIsNull("请传递结果Id"); } if (Score < 0 || Score > 1) { return ApiResult.ParamIsNull("分值有误"); } return okrPeriodModule.SgetOKRMyKeyResultScore(KeyResultId, Score, userInfo); } /// /// 删除关键结果状态 /// /// [HttpPost] public ApiResult SgetOKRMyKeyResultDel() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int KeyResultId = parms.GetInt("KeyResultId", 0); if (KeyResultId <= 0) { return ApiResult.ParamIsNull(); } return okrPeriodModule.SgetOKRMyKeyResultDel(KeyResultId, userInfo); } /// /// 获取目标/关键结果 更新历史 /// /// [HttpPost] public ApiResult GetOKRObjectiveUpdateHistoryList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); var dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); dmodel.Group_Id = userInfo.Group_Id; var list = okrPeriodModule.GetOKRObjectiveUpdateHistoryList(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.Content, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }); return ApiResult.Success("", pageModel); } #endregion //权限 添加对齐 审核 评论 左边人员列表 对齐视图 数据看板 (管理员版 对齐视图 数据看板) #region 添加对齐 /// /// 添加对齐 /// /// [HttpPost] public ApiResult SgetOKRMyObjectiveParent() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int ObjectiveId = parms.GetInt("ObjectiveId", 0); int ParentId = parms.GetInt("ParentId", 0); if (ParentId <= 0) { return ApiResult.ParamIsNull("请传递对齐目标id"); } if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递当前目标id"); } if (ObjectiveId == ParentId) { return ApiResult.ParamIsNull(); } string msg = okrPeriodModule.SetOKRMyObjectiveParent(ObjectiveId, ParentId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 取消对齐 /// /// [HttpPost] public ApiResult SgetOKRMyObjectiveParentCancel() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int ObjectiveId = parms.GetInt("ObjectiveId", 0); int ParentId = parms.GetInt("ParentId", 0); if (ParentId <= 0) { return ApiResult.ParamIsNull("请传递对齐目标id"); } if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递当前目标id"); } string msg = okrPeriodModule.SgetOKRMyObjectiveParentCancel(ObjectiveId, ParentId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取他人的目标列表 /// /// [HttpPost] public ApiResult GetOKROthersObjectiveDropList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int UserId = parms.GetInt("UserId", 0);//他人id int ObjectiveId = parms.GetInt("ObjectiveId", 0);//当前目标 if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } if (UserId <= 0) { return ApiResult.ParamIsNull("请传递用户id"); } if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递当前目标id"); } if (UserId == userInfo.Id) { return ApiResult.Failed("只能对齐他人目标"); } var list = okrPeriodModule.GetOKROthersObjectiveDropList(PeriodId, ObjectiveId, UserId, userInfo); return ApiResult.Success("", list); } /// /// 获取他人的目标列表 /// /// [HttpPost] public ApiResult GetOKROthersObjectiveDropListByName() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id string UserName = parms.GetStringValue("UserName");//用户名称 int ObjectiveId = parms.GetInt("ObjectiveId", 0);//当前目标 if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } if (string.IsNullOrEmpty(UserName)) { return ApiResult.ParamIsNull("请传递用户名称"); } if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递当前目标id"); } var list = okrPeriodModule.GetOKROthersObjectiveDropListByName(PeriodId, ObjectiveId, UserName, userInfo); return ApiResult.Success("", list); } #endregion #region 权限控制 /// /// 获取权限控制列表 /// /// [HttpPost] public ApiResult GetOKRPermissionList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int TargetId = parms.GetInt("TargetId", 0); int Type = parms.GetInt("Type", 0);// 1周期 2目标 3关键结果 if (TargetId <= 0) { return ApiResult.ParamIsNull("请传递当前目标id"); } var list = okrPeriodModule.GetOKRPermissionList(TargetId, Type, userInfo); return ApiResult.Success("", list.Select(x => new { x.Id, x.PermissionType, x.TargetId, x.Type, TypeName = x.Type.ToName(), x.SourceId, x.SourceName, x.State })); } /// /// 设置权限 /// /// [HttpPost] public ApiResult SgetOKRPermissionInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PermissionType = parms.GetInt("PermissionType", 0); int TargetId = parms.GetInt("TargetId", 0); string List = parms.GetStringValue("List"); if (PermissionType <= 0) { return ApiResult.ParamIsNull("请传递权限类型"); } if (TargetId <= 0) { return ApiResult.ParamIsNull("请传递目标值"); } if (string.IsNullOrEmpty(List)) { return ApiResult.ParamIsNull("请传递列表数据"); } List dmodel = JsonHelper.DeserializeObject>(List); foreach (var item in dmodel) { item.PermissionType = PermissionType; item.TargetId = TargetId; if (item.Type <= 0) { return ApiResult.ParamIsNull("请传递类型"); } if (item.SourceId <= 0) { return ApiResult.ParamIsNull("请传递来源id"); } if (item.State <= 0) { return ApiResult.ParamIsNull("请传递查看状态"); } item.Group_Id = userInfo.Group_Id; item.School_Id = userInfo.School_Id; item.CreateBy = userInfo.Id; item.CreateTime = DateTime.Now; item.UpdateBy = userInfo.Id; item.UpdateTime = DateTime.Now; } string msg = okrPeriodModule.SgetOKRPermissionInfo(PermissionType, TargetId, dmodel, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取默认所有人可见权限 /// /// [HttpPost] public ApiResult GetOKRDefaultPermissionInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PermissionType = parms.GetInt("PermissionType", 0);// 权限类型 1周期 2目标 3结果 int TargetId = parms.GetInt("TargetId", 0);//周期/目标/结果 的id if (PermissionType <= 0 || TargetId <= 0) { return ApiResult.ParamIsNull(); } var obj = okrPeriodModule.GetOKRDefaultPermissionInfo(PermissionType, TargetId, userInfo); return ApiResult.Success("", obj); } /// /// 设置默认所有人可见权限 /// /// [HttpPost] public ApiResult SgetOKRDefaultPermissionInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PermissionType = parms.GetInt("PermissionType", 0);// 权限类型 1周期 2目标 3结果 int TargetId = parms.GetInt("TargetId", 0);//周期/目标/结果 的id int Permission = parms.GetInt("Permission", 1);// 权限 1包含所有人可见 2不包含所有人可见 if (PermissionType <= 0 || TargetId <= 0) { return ApiResult.ParamIsNull(); } bool flag = okrPeriodModule.SgetOKRDefaultPermissionInfo(PermissionType, TargetId, Permission, userInfo); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } #endregion #region 左边人员列表 /// /// 获取我的人员列表 /// /// [HttpPost] public ApiResult GetOKRMyEmployeeList() { var userInfo = base.UserInfo; var obj = okrPeriodModule.GetOKRMyEmployeeList(userInfo); return ApiResult.Success("", obj); } /// /// 获取我的对齐人员列表 /// /// [HttpPost] public ApiResult GetOKRMyEmployeeAlignList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0); if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } var obj = okrPeriodModule.GetOKRMyEmployeeAlignList(PeriodId, userInfo); return ApiResult.Success("", obj); } /// /// 获取我的审核人员列表 /// /// [HttpPost] public ApiResult GetOKRMyEmployeeAuditList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0); //if (PeriodId <= 0) //{ // return ApiResult.ParamIsNull(); //} var obj = okrPeriodModule.GetOKRMyEmployeeAuditList(PeriodId, userInfo); return ApiResult.Success("", obj); } #endregion #region 他人目标 /// /// 获取他人的目标列表 /// /// [HttpPost] public ApiResult GetOKROthersObjectiveList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0); int UserId = parms.GetInt("UserId", 0); if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } if (UserId <= 0) { return ApiResult.ParamIsNull("请传递用户id"); } if (UserId == userInfo.Id) { return ApiResult.Failed("只能查看他人目标"); } var list = okrPeriodModule.GetOKROthersObjectiveList(PeriodId, UserId, userInfo); return ApiResult.Success("", list); } /// /// 获取他人的单个目标 /// /// [HttpPost] public ApiResult GetOKROthersObjectiveInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int ObjectiveId = parms.GetInt("ObjectiveId", 0); int PeriodId = parms.GetInt("PeriodId", 0); int UserId = parms.GetInt("UserId", 0); if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递目标id"); } if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } if (UserId <= 0) { return ApiResult.ParamIsNull("请传递当前用户id"); } if (UserId == userInfo.Id) { return ApiResult.Failed("只能查看他人目标"); } var obj = okrPeriodModule.GetOKROthersObjectiveInfo(PeriodId, UserId, ObjectiveId, userInfo); return ApiResult.Success("", obj); } #endregion #region 关注 /// /// 获取该员工是否关注 /// /// [HttpPost] public ApiResult GetOKREmployeeAttention() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int UserId = parms.GetInt("UserId", 0); if (UserId <= 0) { return ApiResult.ParamIsNull("请传递用户id"); } return okrPeriodModule.GetOKREmployeeAttention(UserId, userInfo); } /// /// 设置关注 /// /// [HttpPost] public ApiResult SgetOKREmployeeAttention() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int UserId = parms.GetInt("UserId", 0); int Type = parms.GetInt("Type", 0);//类型 1关注 2取消关注 if (UserId <= 0) { return ApiResult.ParamIsNull("请传递用户id"); } string msg = okrPeriodModule.SgetOKREmployeeAttention(UserId, Type, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } #endregion #region 审核 /// /// 获取待我审核的列表 /// /// [HttpPost] public ApiResult GetOKRObjectiveAuditList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0); int UserId = parms.GetInt("UserId", 0); if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } if (UserId <= 0) { return ApiResult.ParamIsNull("请传递用户id"); } if (UserId == userInfo.Id) { return ApiResult.Failed("只能审核他人目标"); } return okrPeriodModule.GetOKRObjectiveAuditList(PeriodId, UserId, userInfo); } /// /// 审核目标 /// /// [HttpPost] public ApiResult SetOKRObjectiveAudit() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int ObjectiveId = parms.GetInt("ObjectiveId", 0); int Type = parms.GetInt("Type", 0);//类型 1通过 2不通过 string Remark = parms.GetStringValue("Remark"); if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递目标sid"); } if (Type <= 0) { return ApiResult.ParamIsNull("请传递类型"); } string msg = okrPeriodModule.SetOKRObjectiveAudit(ObjectiveId, Type, Remark, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 重新发起审核 /// /// [HttpPost] public ApiResult SetOKRObjectiveAuditAgain() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int ObjectiveId = parms.GetInt("ObjectiveId", 0); if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递目标sid"); } string msg = okrPeriodModule.SetOKRObjectiveAuditAgain(ObjectiveId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } #endregion #region 更新提示 /// /// 清除人员的更新提示 /// /// [HttpPost] public ApiResult ClearMyEmployeeUpdateNotification() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int UserId = parms.GetInt("UserId", 0); if (UserId <= 0) { return ApiResult.ParamIsNull("请传递用户id"); } string msg = okrPeriodModule.ClearMyEmployeeUpdateNotification(UserId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 前端调用更新用户提示 /// /// [HttpPost] public ApiResult SgetMyUserUpdateNotification() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); string UserIds = parms.GetStringValue("UserIds"); if (string.IsNullOrEmpty(UserIds)) { return ApiResult.ParamIsNull("请传递用户id"); } List UserIdList = JsonHelper.DeserializeObject>(UserIds); bool flag = okrPeriodModule.SetMyUserUpdateNotification(UserIdList, userInfo); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } #endregion #endregion #region 规则管理 /// /// 获取规则分页列表 /// /// [HttpPost] public ApiResult GetOKRRulePageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); var dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); dmodel.Group_Id = userInfo.Group_Id; var list = okrPeriodModule.GetOKRRulePageList(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.RuleName, x.DataBase, x.Table, x.Field, x.Way, WayName = x.Way.ToName(), x.State, x.Identity, x.Time, x.Remark, x.Enable, CreateTime = x.CreateTime.ToString("yyyy-MM-dd") }); return ApiResult.Success("", pageModel); } /// /// 获取规则列表 /// /// [HttpPost] public ApiResult GetOKRRuleDownLoadList() { var userInfo = base.UserInfo; var dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); dmodel.Group_Id = userInfo.Group_Id; dmodel.Enable = 1; var list = okrPeriodModule.GetOKRRuleDownLoadList(dmodel); return ApiResult.Success("", list.Select(x => new { x.Id, x.RuleName, x.Remark })); } /// /// 新增修改规则信息 /// /// [HttpPost] public ApiResult SetOKRRuleInfo() { var userInfo = base.UserInfo; RB_OKR_Rule_ViewModel dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); if (string.IsNullOrEmpty(dmodel.RuleName)) { return ApiResult.ParamIsNull("请输入规则名称"); } if (string.IsNullOrEmpty(dmodel.DataBase)) { return ApiResult.ParamIsNull("请输入数据库名称"); } if (string.IsNullOrEmpty(dmodel.Table)) { return ApiResult.ParamIsNull("请输入表名"); } if (string.IsNullOrEmpty(dmodel.Field)) { return ApiResult.ParamIsNull("请输入统计字段"); } if (string.IsNullOrEmpty(dmodel.State)) { return ApiResult.ParamIsNull("请输入状态字段"); } if (string.IsNullOrEmpty(dmodel.Identity)) { return ApiResult.ParamIsNull("请输入身份字段"); } if (string.IsNullOrEmpty(dmodel.Time)) { return ApiResult.ParamIsNull("请输入操作时间字段"); } dmodel.Status = 0; dmodel.Group_Id = userInfo.Group_Id; dmodel.School_Id = userInfo.School_Id; dmodel.CreateBy = userInfo.Id; dmodel.CreateTime = DateTime.Now; dmodel.UpdateBy = userInfo.Id; dmodel.UpdateTime = DateTime.Now; bool flag = okrPeriodModule.SetOKRRuleInfo(dmodel, userInfo); if (flag) { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 设置规则状态 /// /// [HttpPost] public ApiResult SetOKRRuleState() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int RuleId = parms.GetInt("RuleId", 0); int Type = parms.GetInt("Type", 0);//类型 1启用 2禁用 3删除 string msg = okrPeriodModule.SetOKRRuleState(RuleId, Type, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetRuleTypeEnumList() { var list = EnumHelper.EnumToList(typeof(RuleTypeEnum)); return ApiResult.Success("", list.Select(x => new { x.Name, x.Id })); } /// /// 设置关键结果使用规则 /// /// [HttpPost] public ApiResult SetOKRKeyResultUseRule() { var userInfo = base.UserInfo; RB_OKR_KeyResult_ViewModel dmodel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); if (dmodel.Id <= 0) { return ApiResult.ParamIsNull("请传递关键结果id"); } if (dmodel.RuleId <= 0) { return ApiResult.ParamIsNull("请传递规则Id"); } if (!dmodel.RuleSTime.HasValue) { return ApiResult.ParamIsNull("请选择规则适配开始时间"); } if (!dmodel.RuleETime.HasValue) { return ApiResult.ParamIsNull("请选择规则适配结束时间"); } if (dmodel.StartValue < 0) { return ApiResult.ParamIsNull("请输入结果的起始值"); } if (dmodel.EndValue <= 0) { return ApiResult.ParamIsNull("请输入结果的目标值"); } if (dmodel.RelationList == null || !dmodel.RelationList.Any()) { return ApiResult.ParamIsNull("请选择适配部门/直属人员"); } foreach (var item in dmodel.RelationList) { if (item.RelationId <= 0) { return ApiResult.ParamIsNull("关联部门/直属人员有误"); } } dmodel.RuleSTime = Convert.ToDateTime(dmodel.RuleSTime.Value.ToString("yyyy-MM-dd")); dmodel.RuleETime = Convert.ToDateTime(dmodel.RuleETime.Value.ToString("yyyy-MM-dd") + " 23:59:59"); string msg = okrPeriodModule.SetOKRKeyResultUseRule(dmodel, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 取消使用规则 /// /// [HttpPost] public ApiResult CancelOKRKeyResultUseRule() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int KeyResultId = parms.GetInt("KeyResultId", 0); string msg = okrPeriodModule.CancelOKRKeyResultUseRule(KeyResultId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取结果 规则关联人员/部门列表 /// /// [HttpPost] public ApiResult GetOKRKeyResultRuleReList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int KeyResultId = parms.GetInt("KeyResultId", 0); if (KeyResultId <= 0) { return ApiResult.ParamIsNull("请传递关键结果id"); } var list = okrPeriodModule.GetOKRKeyResultRuleReList(KeyResultId, userInfo); return ApiResult.Success("", list.Select(x => new { x.Id, x.Type, x.RelationId, x.RelationName, x.UserIcon, x.PostName, x.DeptName })); } /// /// 获取我负责的部门 /// /// [HttpPost] public ApiResult GetOKRMyManageDepartment() { var userInfo = base.UserInfo; var list = okrPeriodModule.GetOKRMyManageDepartment_V2(userInfo); return ApiResult.Success("", list); } /// /// 获取我的直属下级 /// /// [HttpPost] public ApiResult GetOKRMyChildEmployeeList() { var userInfo = base.UserInfo; var list = okrPeriodModule.GetOKRMyChildEmployeeList(userInfo); return ApiResult.Success("", list); } #endregion #region 统计模块 /// /// 获取我的对齐视图 /// /// [HttpPost] public ApiResult GetOKRMyAlignView() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0); if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } var obj = okrPeriodModule.GetOKRMyAlignView(PeriodId, userInfo); return ApiResult.Success("", obj); } /// /// 获取我的对齐视图 再下一级 /// /// [HttpPost] public ApiResult GetOKRMyAlignViewNext() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0); int ObjectiveId = parms.GetInt("ObjectiveId", 0);//目标id int Type = parms.GetInt("Type", 1);//类型 1向上 2向下 if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递关联目标id"); } var obj = okrPeriodModule.GetOKRMyAlignViewNext(PeriodId, ObjectiveId, Type, userInfo); return ApiResult.Success("", obj); } /// /// 获取管理员对齐视图 /// /// [HttpPost] public ApiResult GetOKRAdminAlignView() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0); int UserId = parms.GetInt("UserId", 0); if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } var obj = okrPeriodModule.GetOKRAdminAlignView(PeriodId, UserId, userInfo); return ApiResult.Success("", obj); } /// /// 获取管理员对齐视图 再下一级 /// /// [HttpPost] public ApiResult GetOKRAdminAlignViewNext() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0); int ObjectiveId = parms.GetInt("ObjectiveId", 0);//目标id int Type = parms.GetInt("Type", 1);//类型 1向上 2向下 if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递关联目标id"); } var obj = okrPeriodModule.GetOKRAdminAlignViewNext(PeriodId, ObjectiveId, Type, userInfo); return ApiResult.Success("", obj); } /// /// 获取管理员查看单个目标 /// /// [HttpPost] public ApiResult GetOKRAdminLookObjectiveInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int ObjectiveId = parms.GetInt("ObjectiveId", 0); if (ObjectiveId <= 0) { return ApiResult.ParamIsNull("请传递目标id"); } var obj = okrPeriodModule.GetOKRAdminLookObjectiveInfo(ObjectiveId, userInfo); return ApiResult.Success("", obj); } #endregion #region okr评论管理 /// /// 获取评论分页列表 /// /// [HttpPost] public ApiResult GetCommentPageList() { var pageModel = Common.Plugin.JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); var query = new RB_OKR_Comment_ViewModel() { School_Id = base.ParmJObj.GetInt("School_Id"), State = base.ParmJObj.GetInt("State", 0), PeriodId = base.ParmJObj.GetInt("PeriodId", 0), AccountId = base.ParmJObj.GetInt("AccountId", 0) }; if (query.PeriodId <= 0) { return ApiResult.ParamIsNull("请传递期数"); } if (query.AccountId <= 0) { return ApiResult.ParamIsNull("请传递用户id"); } query.Group_Id = base.UserInfo.Group_Id; query.Type = 4; var list = okrPeriodModule.GetCommentPageList(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query); foreach (var item in list) { if (item.CreateBy > 0) { item.CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? ""; item.CreateByIco = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.UserIcon ?? ""; } if (item.UpdateBy > 0) { item.UpdateByName = UserReidsCache.GetUserLoginInfo(item.UpdateBy)?.AccountName ?? ""; } item.CreateTimeStr = StringHelper.DateFormatToString(item.CreateTime); } pageModel.Count = rowsCount; pageModel.PageData = list.Select(x => new { x.CreateByName, x.Id, x.CreateByIco, x.UpdateByName, x.Content, x.CreateTimeStr }); return ApiResult.Success(data: pageModel); } /// /// 新增评论状态 /// /// public ApiResult SetComment() { var extModel = new RB_OKR_Comment_ViewModel() { School_Id = base.ParmJObj.GetInt("School_Id"), PeriodId = base.ParmJObj.GetInt("PeriodId"), Content = base.ParmJObj.GetStringValue("Content"), AccountId = base.ParmJObj.GetInt("AccountId", 0), Type = base.ParmJObj.GetInt("Type", 0), ParentId = base.ParmJObj.GetInt("ParentId", 0) }; if (extModel.PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } if (extModel.AccountId <= 0) { return ApiResult.ParamIsNull("请传递用户id"); } if (string.IsNullOrEmpty(extModel.Content)) { return ApiResult.ParamIsNull("请传递内容"); } extModel.CreateBy = base.UserInfo.Id; extModel.State = 1; extModel.CreateTime = System.DateTime.Now; extModel.UpdateTime = System.DateTime.Now; extModel.UpdateBy = base.UserInfo.Id; extModel.Group_Id = base.UserInfo.Group_Id; bool flag = okrPeriodModule.SetOKRComment(extModel); return flag ? ApiResult.Success() : ApiResult.Failed(); } /// /// 修改评论状态 /// /// public ApiResult SetCommentStatus() { var extModel = new RB_OKR_Comment_ViewModel() { Id = base.ParmJObj.GetInt("Id"), State = base.ParmJObj.GetInt("State"), }; if (extModel.Id <= 0) { return ApiResult.ParamIsNull(message: "未获取到评论编号,请刷新页面重试!"); } if (extModel.State <= 0) { return ApiResult.ParamIsNull(message: "请传递评论状态!"); } extModel.UpdateBy = base.UserInfo.Id; bool flag = okrPeriodModule.SetCommentStatus(extModel); return flag ? ApiResult.Success() : ApiResult.Failed(); } /// /// 新增评论状态 /// /// public ApiResult SetOKRCheckedComment() { var userInfo = base.UserInfo; var extModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); if (extModel.PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期id"); } if (extModel.AccountId <= 0) { return ApiResult.ParamIsNull("请传递用户id"); } if (string.IsNullOrEmpty(extModel.CheckedName)) { return ApiResult.ParamIsNull("请传递选中内容"); } if (string.IsNullOrEmpty(extModel.Content)) { return ApiResult.ParamIsNull("请传递内容"); } if (extModel.Type <= 0) { return ApiResult.ParamIsNull("请传递类型"); } if (extModel.TargetId <= 0) { return ApiResult.ParamIsNull("请传递目标/结果id"); } extModel.CreateBy = userInfo.Id; extModel.State = 1; extModel.CreateTime = System.DateTime.Now; extModel.UpdateTime = System.DateTime.Now; extModel.UpdateBy = userInfo.Id; extModel.Group_Id = userInfo.Group_Id; bool flag = okrPeriodModule.SetOKRCheckedComment(extModel, out int Id); return flag ? ApiResult.Success("", Id) : ApiResult.Failed(); } /// /// 获取评论分页列表 /// /// [HttpPost] public ApiResult GetCommentPageList_V2() { var pageModel = Common.Plugin.JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); var query = new RB_OKR_Comment_ViewModel() { School_Id = base.ParmJObj.GetInt("School_Id"), State = base.ParmJObj.GetInt("State", 0), PeriodId = base.ParmJObj.GetInt("PeriodId", 0), AccountId = base.ParmJObj.GetInt("AccountId", 0), SelectType = base.ParmJObj.GetInt("SelectType", 0) }; if (query.PeriodId <= 0) { return ApiResult.ParamIsNull("请传递期数"); } if (query.AccountId <= 0) { return ApiResult.ParamIsNull("请传递用户id"); } query.Group_Id = base.UserInfo.Group_Id; var list = okrPeriodModule.GetCommentPageList_V2(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query); pageModel.Count = rowsCount; pageModel.PageData = list.Select(x => new { x.Id, x.UpdateByName, x.Content, x.Type, x.TargetId, x.Identify, x.State, CreateTimeStr = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), ChildList = x.ChildList.Select(z => new { z.Id, z.CreateByName, z.CreateByIco, z.Content, z.Type, CreateTimeStr = z.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), }) }); return ApiResult.Success(data: pageModel); } #endregion #region 数据看板-上面统计 /// /// 获取个人端数据分布 /// /// [HttpPost] public ApiResult GetOKRGRDateDistribution() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int IsAdmin = parms.GetInt("IsAdmin", 2);//是否管理端查询 1是 2否 int RangeType = parms.GetInt("RangeType", 1);//范围类型 非管理端查询 1所有下级 2直属下级 string DepartId = parms.GetStringValue("DepartId");//部门ID 管理端可用查询 int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } if (IsAdmin == 1) { RangeType = 0; } var obj = okrPeriodModule.GetOKRGRDateDistribution(PeriodId, RangeType, DepartId, PostId, LeaveStatus, userInfo, IsAdmin == 1); return ApiResult.Success("", obj); } /// /// 获取个人端数据分布明细 /// /// [HttpPost] public ApiResult GetOKRGRDateDistributionDetail() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int IsAdmin = parms.GetInt("IsAdmin", 2);//是否管理端查询 1是 2否 int Type = parms.GetInt("Type", 1);//1234 对应4项统计 int StartValue = parms.GetInt("StartValue", 0);//开始值 int EndValue = parms.GetInt("EndValue", 0);//结束值 int OrderBy = parms.GetInt("OrderBy", 2);// 1升序 2降序 int RangeType = parms.GetInt("RangeType", 1);//范围类型 非管理端查询 1所有下级 2直属下级 int DepartId = parms.GetInt("DepartId", 0);//部门ID 管理端可用查询 int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } if (IsAdmin == 1) { RangeType = 0; } var list = okrPeriodModule.GetOKRGRDateDistributionDetail(pageModel.PageIndex, pageModel.PageSize, out long count, PeriodId, Type, StartValue, EndValue, OrderBy, RangeType, DepartId, PostId, LeaveStatus, userInfo, IsAdmin == 1); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.CreateBy, x.EmName, x.EmPhoto, x.DeptName, x.PostName, x.ObjectiveNum }); return ApiResult.Success("", pageModel); } /// /// 获取个人端数据分布明细 - 员工 /// /// [HttpPost] public ApiResult GetOKRGRDateDistributionDetail_V2() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int IsAdmin = parms.GetInt("IsAdmin", 2);//是否管理端查询 1是 2否 int Type = parms.GetInt("Type", 1);//1234 对应4项统计 string UserName = parms.GetStringValue("UserName");//用户名称 int OrderBy = parms.GetInt("OrderBy", 2);// 1升序 2降序 int OrderByNum = parms.GetInt("OrderByNum", 1);// 以第几个排序 int RangeType = parms.GetInt("RangeType", 1);//范围类型 非管理端查询 1所有下级 2直属下级 string DepartId = parms.GetStringValue("DepartId");//部门ID 管理端可用查询 int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } if (IsAdmin == 1) { RangeType = 0; } OrderByNum = OrderByNum == 0 ? 1 : OrderByNum; object list = okrPeriodModule.GetOKRGRDateDistributionDetail_V2(pageModel.PageIndex, pageModel.PageSize, out long count, PeriodId, UserName, Type, OrderBy, OrderByNum, RangeType, DepartId, PostId, LeaveStatus, userInfo, IsAdmin == 1); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list; return ApiResult.Success("", pageModel); } /// /// 获取个人端数据分布明细 - 部门 /// /// [HttpPost] public ApiResult GetOKRGRDateDistributionForDepartment() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int IsAdmin = parms.GetInt("IsAdmin", 2);//是否管理端查询 1是 2否 int Type = parms.GetInt("Type", 1);//1234 对应4项统计 int OrderBy = parms.GetInt("OrderBy", 2);// 1升序 2降序 int OrderByNum = parms.GetInt("OrderByNum", 1);// 以第几个排序 string DepartId = parms.GetStringValue("DepartId");//部门ID 管理端可用查询 int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } var list = okrPeriodModule.GetOKRGRDateDistributionForDepartment(PeriodId, Type, OrderBy, OrderByNum, DepartId, PostId, LeaveStatus, userInfo, IsAdmin == 1); return ApiResult.Success("", list); } /// /// 获取事项统计 /// /// [HttpPost] public ApiResult GetOKRMatterList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int IsAdmin = parms.GetInt("IsAdmin", 2);//是否管理端查询 1是 2否 string DepartId = parms.GetStringValue("DepartId");//部门ID 管理端可用查询 int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } object list = okrPeriodModule.GetOKRMatterList(PeriodId, DepartId, PostId, LeaveStatus, userInfo, IsAdmin == 1); return ApiResult.Success("", list); } /// /// 获取事项明细列表 /// /// [HttpPost] public ApiResult GetOKRMatterDetailPageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int Type = parms.GetInt("Type", 0);//类型 int DepartId = parms.GetInt("DepartId", 0);//部门ID int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull("请传递周期"); } if (Type <= 0) { return ApiResult.ParamIsNull("请传递类型"); } var list = okrPeriodModule.GetOKRMatterDetailPageList(pageModel.PageIndex, pageModel.PageSize, out long count, PeriodId, Type, DepartId, PostId, LeaveStatus, userInfo); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.CreateBy, x.EmName, x.EmPhoto, x.DeptName, x.PostName }); return ApiResult.Success("", pageModel); } /// /// 忽略注意事项 /// /// [HttpPost] public ApiResult SetOKRMatterIgnore() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int Type = parms.GetInt("Type", 0);//类型 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } if (Type <= 0) { return ApiResult.ParamIsNull(); } bool flag = okrPeriodModule.SetOKRMatterIgnore(PeriodId, Type, userInfo); return flag ? ApiResult.Success() : ApiResult.Failed(); } /// /// 获取概率查询 /// /// [HttpPost] public ApiResult GetOKRProbabilityStatistics() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int IsAdmin = parms.GetInt("IsAdmin", 2);//是否管理端查询 1是 2否 int RangeType = parms.GetInt("RangeType", 1);//范围类型 非管理端查询 1所有下级 2直属下级 string DepartId = parms.GetStringValue("DepartId");//部门ID 管理端可用查询 int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } if (IsAdmin == 1) { RangeType = 0; } var obj = okrPeriodModule.GetOKRProbabilityInfo(PeriodId, RangeType, DepartId, PostId, LeaveStatus, userInfo, IsAdmin == 1); return ApiResult.Success("", obj); } /// /// 获取概率明细 - 人员 /// /// [HttpPost] public ApiResult GetOKRProbabilityPageListForEmp() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int SelectType = parms.GetInt("SelectType", 0);//类型 1填写率 2对齐率 3更新率 4打分率 int OrderBy = parms.GetInt("OrderBy", 1);//排序 1已填写在前 2未填写在前 string UserName = parms.GetStringValue("UserName");//用户名称 int IsAdmin = parms.GetInt("IsAdmin", 2);//是否管理端查询 1是 2否 int RangeType = parms.GetInt("RangeType", 1);//范围类型 非管理端查询 1所有下级 2直属下级 string DepartId = parms.GetStringValue("DepartId");//部门ID 管理端可用查询 int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } if (IsAdmin == 1) { RangeType = 0; } var list = okrPeriodModule.GetOKRProbabilityPageListForEmp(pageModel.PageIndex, pageModel.PageSize, out long count, PeriodId, SelectType, OrderBy, UserName, RangeType, DepartId, PostId, LeaveStatus, userInfo, IsAdmin == 1); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { EmpId = x.CreateBy, x.EmName, x.EmPhoto, x.DeptName, x.PostName, x.Status }); return ApiResult.Success("", pageModel); } /// /// 获取概率明细 - 部门 /// /// [HttpPost] public ApiResult GetOKRProbabilityPageListForDept() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int SelectType = parms.GetInt("SelectType", 0);//类型 1填写率 2对齐率 3更新率 4打分率 int IsAdmin = parms.GetInt("IsAdmin", 2);//是否管理端查询 1是 2否 string DepartId = parms.GetStringValue("DepartId");//部门ID 管理端可用查询 int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } var list = okrPeriodModule.GetOKRProbabilityPageListForDept(PeriodId, SelectType, DepartId, PostId, LeaveStatus, userInfo, IsAdmin == 1); return ApiResult.Success("", list); } #endregion #region 数据看板 最新 /// /// 获取数据看板员工信息 /// /// [HttpPost] public ApiResult GetOKRGRDateDistributionPage() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int IsAdmin = parms.GetInt("IsAdmin", 2);//是否管理端查询 1是 2否 int Type = parms.GetInt("Type", 1);//1234 对应4项统计 int StartValue = parms.GetInt("StartValue", 0);//开始值 int EndValue = parms.GetInt("EndValue", 0);//结束值 int OrderBy = parms.GetInt("OrderBy", 2);// 1升序 2降序 int RangeType = parms.GetInt("RangeType", 1);//范围类型 非管理端查询 1所有下级 2直属下级 string DepartIds = parms.GetStringValue("DepartId");//部门ID 管理端可用查询 string EmployeeName = parms.GetStringValue("EmployeeName");//部门ID 管理端可用查询 int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } if (IsAdmin == 1) { RangeType = 0; } var list = okrPeriodModule.GetOKRGRDateDistributionPage(pageModel.PageIndex, pageModel.PageSize, out long count, EmployeeName, PeriodId, Type, StartValue, EndValue, OrderBy, RangeType, DepartIds, PostId, LeaveStatus, userInfo, IsAdmin == 1); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.DeptName, x.PostName, x.ObjectiveNCount, x.OBjectiveRelation, x.ScoreCount, x.DayNum, x.UserIcon, x.EmployeeName }); return ApiResult.Success("", pageModel); } /// /// 获取个人端数据分布明细 - 部门 /// /// [HttpPost] public ApiResult GetOKRGRDateDistributionForDept() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0);//周期id int IsAdmin = parms.GetInt("IsAdmin", 2);//是否管理端查询 1是 2否 int Type = parms.GetInt("Type", 1);//1234 对应4项统计 int OrderBy = parms.GetInt("OrderBy", 2);// 1升序 2降序 int OrderByNum = parms.GetInt("OrderByNum", 1);// 以第几个排序 string DepartId = parms.GetStringValue("DepartId");//部门ID 管理端可用查询 int PostId = parms.GetInt("PostId", 0);//岗位ID int LeaveStatus = parms.GetInt("LeaveStatus", 0);//在职状态 if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } object list = okrPeriodModule.GetOKRGRDateDistributionForDept(PeriodId, Type, OrderBy, OrderByNum, DepartId, PostId, LeaveStatus, userInfo, IsAdmin == 1); return ApiResult.Success("", list); } #endregion #region 个人端数据看板 作废 /// /// 获取个人维度 /// /// [HttpPost] public ApiResult GetOKRPersonalDimensionList() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(RequestParm.Msg.ToString()); int PeriodId = parms.GetInt("PeriodId", 0); int DeptId = parms.GetInt("DeptId", 0); if (PeriodId <= 0) { return ApiResult.ParamIsNull(); } List allList = okrPeriodModule.GetOKRPersonalDimensionList(userInfo.Group_Id, userInfo.Id, DeptId); if (allList == null || !allList.Any(x => x.Type == 2)) { return ApiResult.Failed("您没有下级"); } else { decimal objectiveRate = 0; decimal objectiveRelationRate = 0; decimal scoreRate = 0; string createBys = string.Join(",", allList.Where(x => x.Type == 2).Select(x => x.Id)); var obj = okrPeriodModule.GetOKRPersonalAlignList(userInfo.Group_Id, PeriodId, createBys); if (obj != null && obj.Any()) { var objRelation = okrPeriodModule.GetOKRPersonalRelationAlignList(userInfo.Group_Id, PeriodId, createBys, userInfo.Id); foreach (var item in allList.Where(x => x.Type == 2)) { item.ObjectiveNCount = obj.Where(x => x.CreateBy == item.Id).Sum(x => x.ChildNum); item.OBjectiveRelation = objRelation.Where(x => x.CreateBy == item.Id).Sum(x => x.ChildNum); item.ScoreCount = obj.Where(x => x.CreateBy == item.Id).Sum(x => x.Score); } int allChildrenCount = allList.Where(x => x.Type == 2).Count(); objectiveRate = decimal.Round(obj.GroupBy(x => x.CreateBy).Count() / allChildrenCount, 2); objectiveRelationRate = decimal.Round(objRelation.GroupBy(x => x.CreateBy).Count() / allChildrenCount, 2); scoreRate = decimal.Round(obj.Where(x => x.Score > 0).GroupBy(x => x.CreateBy).Count() / allChildrenCount, 2); } var resutl = new { MyChildrenList = allList.Where(x => x.Type == 2), objectiveRate, objectiveRelationRate, scoreRate }; return ApiResult.Success("", resutl); } } #endregion /// /// 获取当前人员下级列表 /// /// [HttpPost] public ApiResult GetPersonalDimension() { var userInfo = base.UserInfo; var allList = okrPeriodModule.GetOKRPersonalDimensionListModule(userInfo.Group_Id, userInfo.Id, userInfo.DeptId); return ApiResult.Success(data: allList); } #region 管理端数据看板 作废 /// /// 获取管理端数据看板员工分页列表 /// /// [HttpPost] public ApiResult GetAllEmployeeOKRPPageList() { var pageModel = Common.Plugin.JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); var query = new OKRPersonalDimension() { School_Id = base.ParmJObj.GetInt("School_Id"), PeriodId = base.ParmJObj.GetInt("PeriodId", 0), QDeptIds = base.ParmJObj.GetStringValue("QDeptIds"), Post_Id = base.ParmJObj.GetInt("PostId", 0),//岗位ID LeaveStatus = base.ParmJObj.GetInt("LeaveStatus", 0),//在职状态 }; query.Group_Id = base.UserInfo.Group_Id; var list = okrPeriodModule.GetAllEmployeeOKRPPageRepository(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query); if (list != null && list.Any()) { string ids = string.Join(",", list.Select(x => x.Id)); var objRelation = okrPeriodModule.GetOKRPersonalRelationAlignList_V2(base.UserInfo.Group_Id, query.PeriodId, ids); foreach (var item in list) { item.OBjectiveRelation = objRelation.Where(x => x.CreateBy == item.Id).Sum(x => x.ChildNum); } } pageModel.Count = rowsCount; pageModel.PageData = list; return ApiResult.Success(data: pageModel); } /// /// 获取部门树形列表 /// /// [HttpPost] public ApiResult GetDeptOKR() { int PeriodId = base.ParmJObj.GetInt("PeriodId", 0); var query = new Model.ViewModel.User.RB_Department_ViewModel() { Group_Id = base.UserInfo.Group_Id, School_Id = base.ParmJObj.GetInt("School_Id"), QDeptIds = base.ParmJObj.GetStringValue("QDeptIds"), }; var list = departmentModule.GetOrganizationOKRModule(query, true); var okrPersonalList = okrPeriodModule.GetAllEmployeeOKRPList(new OKRPersonalDimension { School_Id = query.School_Id, Group_Id = query.Group_Id, Dept_Ids = query.QDeptIds, PeriodId = PeriodId }); int ChildrenNum = 0; List listResult = new List(); foreach (var item in list.Where(x => x.DataType == 1)) { OKRPersonalDimension model = new OKRPersonalDimension { DeptName = item.DeptName, DeptPersonName = string.IsNullOrWhiteSpace(item.ManagerIds) ? "" : string.Join(",", okrPersonalList.Where(x => item.ManagerIds.Contains(x.AccountId.ToString())).Select(x => x.EmployeeName)), ChildrenNum = list.Where(x => x.DataType == 2 && x.DeptId == item.DeptId).Count() }; ChildrenNum += model.ChildrenNum; if (model.ChildrenNum > 0) { model.ObjectiveRate = decimal.Round((okrPersonalList.Where(x => x.Dept_Id == item.DeptId && x.ObjectiveNCount > 0).Count()) / model.ChildrenNum, 2); model.ScoreRate = decimal.Round((okrPersonalList.Where(x => x.Dept_Id == item.DeptId && x.ScoreCount > 0).Count()) / model.ChildrenNum, 2); model.OBjectiveRelation = 0; foreach (var okrItem in okrPersonalList.Where(x => x.Dept_Id == item.DeptId)) { model.OBjectiveRelation += okrPeriodModule.GetOKRPersonalRelationAlignList(query.Group_Id, PeriodId, okrItem.AccountId.ToString(), okrItem.AccountId).Where(x => x.ChildNum > 0).Count(); } model.ObjectiveRelationRate = decimal.Round(model.OBjectiveRelation / model.ChildrenNum, 2); } listResult.Add(model); } return ApiResult.Success(data: listResult.Select(x => new { x.DeptName, x.Dept_Id, x.ObjectiveRate, x.ObjectiveRelationRate, x.ScoreRate, x.ChildrenNum })); } /// /// 获取部门树形列表 /// /// [HttpPost] public ApiResult GetDeptOKR_V2() { int PeriodId = base.ParmJObj.GetInt("PeriodId", 0); var query = new Model.ViewModel.User.RB_Department_ViewModel() { Group_Id = base.UserInfo.Group_Id, // School_Id = base.ParmJObj.GetInt("School_Id"), QDeptIds = base.ParmJObj.GetStringValue("QDeptIds"), }; var list = departmentModule.GetOrganizationOKRModule(query, true); var okrPersonalList = okrPeriodModule.GetAllEmployeeOKRPList(new OKRPersonalDimension { School_Id = query.School_Id, Group_Id = query.Group_Id, Dept_Ids = query.QDeptIds, PeriodId = PeriodId }); List listResult = new List(); foreach (var item in list.Where(x => x.DataType == 1)) { OKRPersonalDimension model = new OKRPersonalDimension { DeptName = item.DeptName, DeptPersonName = string.IsNullOrWhiteSpace(item.ManagerIds) ? "" : string.Join(",", okrPersonalList.Where(x => item.ManagerIds.Contains(x.AccountId.ToString())).Select(x => x.EmployeeName)), ChildrenNum = list.Where(x => x.DataType == 2 && x.DeptId == item.DeptId).Count() }; if (model.ChildrenNum > 0) { string ids = string.Join(",", list.Where(x => x.DataType == 2 && x.DeptId == item.DeptId).Select(x => x.DeptId)); var objRelation = okrPeriodModule.GetOKRPersonalRelationAlignList_V2(base.UserInfo.Group_Id, PeriodId, ids); model.ObjectiveRate = decimal.Round((okrPersonalList.Where(x => x.Dept_Id == item.DeptId && x.ObjectiveNCount > 0).Count()) / model.ChildrenNum, 2); model.ScoreRate = decimal.Round((okrPersonalList.Where(x => x.Dept_Id == item.DeptId && x.ScoreCount > 0).Count()) / model.ChildrenNum, 2); model.ObjectiveRelationRate = decimal.Round((objRelation.Where(x => x.ChildNum > 0).Count()) / model.ChildrenNum, 2); } listResult.Add(model); // model.OKRPersonalDimensionList.AddRange(GetChildDeptOKR(item.ChildList, PeriodId, okrPersonalList, listResult)); } return ApiResult.Success(data: listResult.Select(x => new { x.DeptName, x.Dept_Id, x.ObjectiveRate, x.ObjectiveRelationRate, x.ScoreRate, x.ChildrenNum })); } #endregion } }