Commit bb81ee33 authored by liudong1993's avatar liudong1993

okr关注事项

parent ca412231
......@@ -345,6 +345,16 @@ namespace Edu.Common
}
}
/// <summary>
/// okr关注事项配置
/// </summary>
public static string OKRMatterValue {
get
{
return ReadConfigKey("OKRMatterValue");
}
}
/// <summary>
/// 分区校长岗位编号
/// </summary>
......
......@@ -13,19 +13,19 @@ namespace Edu.Common.Enum.OKR
/// <summary>
/// 未填写OKR
/// </summary>
[EnumField("未填写OKR")]
[EnumField("请提醒 Ta 们尽快填写,避免重点工作实施受到影响")]
NotFilled = 1,
/// <summary>
/// 有OKR未更新进度
/// </summary>
[EnumField("有OKR未更新进度")]
[EnumField("请提醒 Ta 及时更新,对 OKR 结果进行复盘")]
NotUpdated = 2,
/// <summary>
/// 有OKR未打分
/// </summary>
[EnumField("有OKR未打分")]
[EnumField("请提醒 Ta 及时打分,对 OKR 结果进行复盘")]
NotScore = 3
}
}
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.OKR;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.OKR
{
/// <summary>
/// okr关注事项实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_OKR_Matter
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 周期id
/// </summary>
public int PeriodId { get; set; }
/// <summary>
/// 类型 枚举列表
/// </summary>
public MatterTypeEnum Type { get; set; }
/// <summary>
/// 用户id
/// </summary>
public int UserId { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团id
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 学校id
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
}
}
......@@ -102,6 +102,10 @@ namespace Edu.Module.OKR
/// 周期默认所有人可见权限
/// </summary>
private readonly RB_OKR_PeriodPermissionRepository oKR_PeriodPermissionRepository = new RB_OKR_PeriodPermissionRepository();
/// <summary>
/// 关注事项
/// </summary>
private readonly RB_OKR_MatterRepository oKR_MatterRepository = new RB_OKR_MatterRepository();
#region 基础配置
......@@ -7879,6 +7883,164 @@ and {ruleModel.Time} >='{dmodel.RuleSTime.Value.ToString("yyyy-MM-dd")}' and {ru
}
return Rlist;
}
/// <summary>
/// 获取关注事项统计
/// </summary>
/// <param name="periodId"></param>
/// <param name="departId"></param>
/// <param name="postId"></param>
/// <param name="leaveStatus"></param>
/// <param name="userInfo"></param>
/// <param name="v"></param>
/// <returns></returns>
public object GetOKRMatterList(int periodId, int departId, int postId, int leaveStatus, UserInfo userInfo, bool IsAdmin)
{
List<object> RList = new List<object>();
var pmodel = oKR_PeriodRepository.GetEntity(periodId);
if (pmodel == null) { return RList; }
int SDays = 0, EDays = 0;
if (DateTime.Now > pmodel.StartDate) {
SDays = (DateTime.Now - pmodel.StartDate).Days;
}
if (DateTime.Now < pmodel.EndDate) {
EDays = (pmodel.EndDate - DateTime.Now).Days;
}
int Num = 1;
var list = oKR_MatterRepository.GetList(new Model.Entity.OKR.RB_OKR_Matter() { Group_Id = userInfo.Group_Id, PeriodId = periodId, UserId = userInfo.Id });
if (IsAdmin == false)
{
var userIdList = GetMyUnderlingUserIdList(userInfo, departId, postId, leaveStatus);
if (userIdList.Any()) {
userIdList = userIdList.Distinct().ToList();
int TotalNum = userIdList.Count();
string userIds = string.Join(",", userIdList);
string OKRMatterValue = Common.Config.OKRMatterValue;
int SValue = 0, EValue = 0;
if (!string.IsNullOrEmpty(OKRMatterValue)) {
var matterArr = OKRMatterValue.Split(',');
SValue = Convert.ToInt32(matterArr[0]);
EValue = Convert.ToInt32(matterArr[1]);
}
if (!list.Where(x => x.Type == Common.Enum.OKR.MatterTypeEnum.NotFilled).Any() && (SValue == 0 || (SValue > 0 && SDays >= SValue)))
{
//查询未填写
int Number = oKR_ObjectiveRepository.GetNotFilledList(userInfo.Group_Id, periodId, userIds);
RList.Add(new
{
Id = Num,
Days = SDays,
PeopleNum = TotalNum - Number,
Type = Common.Enum.OKR.MatterTypeEnum.NotFilled,
TypeName = Common.Enum.OKR.MatterTypeEnum.NotFilled.ToName()
});
Num++;
}
if (!list.Where(x => x.Type == Common.Enum.OKR.MatterTypeEnum.NotUpdated).Any() && (EValue == 0 || (EValue > 0 && EDays <= EValue)))
{
//查询未更新
int Number = oKR_ObjectiveRepository.GetNotUpdatedList(userInfo.Group_Id, periodId, userIds);
RList.Add(new
{
Id = Num,
Days = EDays,
PeopleNum = Number,
Type = Common.Enum.OKR.MatterTypeEnum.NotUpdated,
TypeName = Common.Enum.OKR.MatterTypeEnum.NotUpdated.ToName()
});
Num++;
}
if (!list.Where(x => x.Type == Common.Enum.OKR.MatterTypeEnum.NotScore).Any() && (EValue == 0 || (EValue > 0 && EDays <= EValue)))
{
//查询未打分
int Number = oKR_ObjectiveRepository.GetNotScoreList(userInfo.Group_Id, periodId, userIds);
RList.Add(new
{
Id = Num,
Days = EDays,
PeopleNum = Number,
Type = Common.Enum.OKR.MatterTypeEnum.NotScore,
TypeName = Common.Enum.OKR.MatterTypeEnum.NotScore.ToName()
});
Num++;
}
}
}
else {
//管理端 主查询对齐率这些
}
return RList;
}
/// <summary>
/// 设置关注事项忽略
/// </summary>
/// <param name="periodId"></param>
/// <param name="type"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public bool SetOKRMatterIgnore(int periodId, int type, UserInfo userInfo)
{
var list = oKR_MatterRepository.GetList(new Model.Entity.OKR.RB_OKR_Matter() { Group_Id = userInfo.Group_Id, PeriodId = periodId, Type = (Common.Enum.OKR.MatterTypeEnum)type });
if (list.Any()) {
return true;
}
return oKR_MatterRepository.Insert(new Model.Entity.OKR.RB_OKR_Matter()
{
Id = 0,
PeriodId = periodId,
UserId = userInfo.Id,
Type = (Common.Enum.OKR.MatterTypeEnum)type,
Status = 0,
School_Id = userInfo.School_Id,
Group_Id = userInfo.Group_Id,
CreateTime = DateTime.Now
}) > 0;
}
/// <summary>
/// 获取关注事项详情
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="periodId"></param>
/// <param name="type"></param>
/// <param name="departId"></param>
/// <param name="postId"></param>
/// <param name="leaveStatus"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public List<RB_OKR_Objective_ViewModel> GetOKRMatterDetailPageList(int pageIndex, int pageSize, out long count, int periodId, int type, int departId, int postId, int leaveStatus, UserInfo userInfo)
{
count = 0;
List<RB_OKR_Objective_ViewModel> Rlist = new List<RB_OKR_Objective_ViewModel>();
var userIdList = GetMyUnderlingUserIdList(userInfo, departId, postId, leaveStatus);
if (userIdList.Any())
{
userIdList = userIdList.Distinct().ToList();
string userIds = string.Join(",", userIdList);
if (type == (int)Common.Enum.OKR.MatterTypeEnum.NotFilled)
{
//查询未填写
Rlist = oKR_ObjectiveRepository.GetNotFilledPageList(pageIndex, pageSize, out count, userInfo.Group_Id, periodId, userIds);
}
else if (type == (int)Common.Enum.OKR.MatterTypeEnum.NotUpdated)
{
//查询未更新
Rlist = oKR_ObjectiveRepository.GetNotpdatedPageList(pageIndex, pageSize, out count, userInfo.Group_Id, periodId, userIds);
}
if (type == (int)Common.Enum.OKR.MatterTypeEnum.NotScore)
{
//查询未打分
Rlist = oKR_ObjectiveRepository.GetNotScorePageList(pageIndex, pageSize, out count, userInfo.Group_Id, periodId, userIds);
}
}
return Rlist;
}
#endregion
#region 春姐 统计
......
using Edu.Common.Enum;
using Edu.Model.Entity.OKR;
using Edu.Model.ViewModel.OKR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.OKR
{
/// <summary>
/// OKR关注事项仓储层
/// </summary>
public class RB_OKR_MatterRepository : BaseRepository<RB_OKR_Matter>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_OKR_Matter> GetList(RB_OKR_Matter demodel)
{
string where = $@" 1=1 and Status =0";
if (demodel.Group_Id > 0)
{
where += $@" and {nameof(RB_OKR_Matter.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.PeriodId > 0)
{
where += $@" and {nameof(RB_OKR_Matter.PeriodId)} ={demodel.PeriodId}";
}
if (demodel.UserId > 0)
{
where += $@" and {nameof(RB_OKR_Matter.UserId)} ={demodel.UserId}";
}
if (demodel.Type > 0)
{
where += $@" and {nameof(RB_OKR_Matter.Type)} ={(int)demodel.Type}";
}
string sql = $@" select * from RB_OKR_Matter where {where} order by Id desc";
return Get<RB_OKR_Matter>(sql).ToList();
}
}
}
......@@ -684,5 +684,120 @@ where e.RB_Group_id ={group_Id} and e.IsLeave =0 and e.RB_Department_Id in ({dep
}
#endregion
#region 注意事项
/// <summary>
/// 未填写人数
/// </summary>
/// <param name="groupId"></param>
/// <param name="periodId"></param>
/// <param name="userIds"></param>
/// <returns></returns>
public int GetNotFilledList(int groupId,int periodId, string userIds)
{
string sql = $@"SELECT COUNT(0) FROM(
SELECT CreateBy FROM rb_okr_objective WHERE Group_Id={groupId} and Status <>5 and PeriodId={periodId} and CreateBy in({userIds}) GROUP BY CreateBy
)t ";
var obj = ExecuteScalar(sql);
return obj == null ? 0 : Convert.ToInt32(obj);
}
/// <summary>
/// 未更新人数
/// </summary>
/// <param name="groupId"></param>
/// <param name="periodId"></param>
/// <param name="userIds"></param>
/// <returns></returns>
public int GetNotUpdatedList(int groupId, int periodId, string userIds)
{
string sql = $@"SELECT COUNT(0) FROM(
SELECT CreateBy FROM rb_okr_objective WHERE Group_Id={groupId} and Status <>5 and Progress =0 and PeriodId={periodId} and CreateBy in({userIds}) GROUP BY CreateBy
)t ";
var obj = ExecuteScalar(sql);
return obj == null ? 0 : Convert.ToInt32(obj);
}
/// <summary>
/// 未打分人数
/// </summary>
/// <param name="groupId"></param>
/// <param name="periodId"></param>
/// <param name="userIds"></param>
/// <returns></returns>
public int GetNotScoreList(int groupId, int periodId, string userIds)
{
string sql = $@"SELECT COUNT(0) FROM(
SELECT CreateBy FROM rb_okr_objective WHERE Group_Id={groupId} and Status <>5 and Score =0 and PeriodId={periodId} and CreateBy in({userIds}) GROUP BY CreateBy
)t ";
var obj = ExecuteScalar(sql);
return obj == null ? 0 : Convert.ToInt32(obj);
}
/// <summary>
/// 获取未填写人分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="group_Id"></param>
/// <param name="periodId"></param>
/// <param name="userIds"></param>
/// <returns></returns>
public List<RB_OKR_Objective_ViewModel> GetNotFilledPageList(int pageIndex, int pageSize, out long count, int groupId, int periodId, string userIds)
{
string sql = $@"
SELECT e.EmployeeId as CreateBy,e.EmName,e.EmPhoto,e.DeptName,e.PostName FROM
rb_employee e
left join rb_okr_objective o on e.EmployeeId = o.CreateBy and o.Status <>5 and o.PeriodId={periodId}
WHERE e.RB_Group_id={groupId} and e.EmployeeId in({userIds}) and o.Id is null
";
return GetPage<RB_OKR_Objective_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
/// <summary>
/// 获取未更新人分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="groupId"></param>
/// <param name="periodId"></param>
/// <param name="userIds"></param>
/// <returns></returns>
public List<RB_OKR_Objective_ViewModel> GetNotpdatedPageList(int pageIndex, int pageSize, out long count, int groupId, int periodId, string userIds)
{
string sql = $@"
SELECT e.EmployeeId as CreateBy,e.EmName,e.EmPhoto,e.DeptName,e.PostName FROM
rb_employee e
left join rb_okr_objective o on e.EmployeeId = o.CreateBy
WHERE e.RB_Group_id={groupId} and e.EmployeeId in({userIds}) and o.Status <>5 and o.PeriodId ={periodId} and o.Progress =0 group by e.EmployeeId
";
return GetPage<RB_OKR_Objective_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
/// <summary>
/// 获取未打分人分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="group_Id"></param>
/// <param name="periodId"></param>
/// <param name="userIds"></param>
/// <returns></returns>
public List<RB_OKR_Objective_ViewModel> GetNotScorePageList(int pageIndex, int pageSize, out long count, int groupId, int periodId, string userIds)
{
string sql = $@"
SELECT e.EmployeeId as CreateBy,e.EmName,e.EmPhoto,e.DeptName,e.PostName FROM
rb_employee e
left join rb_okr_objective o on e.EmployeeId = o.CreateBy
WHERE e.RB_Group_id={groupId} and e.EmployeeId in({userIds}) and o.Status <>5 and o.PeriodId ={periodId} and o.Score =0 group by e.EmployeeId
";
return GetPage<RB_OKR_Objective_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
#endregion
}
}
......@@ -2015,6 +2015,83 @@ namespace Edu.WebApi.Controllers.OKR
return ApiResult.Success("", list);
}
/// <summary>
/// 获取事项统计
/// </summary>
/// <returns></returns>
[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否
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();
}
var list = okrPeriodModule.GetOKRMatterList(PeriodId, DepartId, PostId, LeaveStatus, userInfo, IsAdmin == 1 ? true : false);
return ApiResult.Success("", list);
}
/// <summary>
/// 获取事项明细列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetOKRMatterDetailPageList()
{
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(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);
}
/// <summary>
/// 忽略注意事项
/// </summary>
/// <returns></returns>
[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();
}
#endregion
#region 个人端数据看板
......
......@@ -37,6 +37,7 @@
"RedisPwd": "Viitto2018"
},
"VirtualDirectory": "WebFile",
"OKRMatterValue": "30,100",
//是否是线上环境
"IsOnline": false,
//退课流程编号
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment