日报表
This commit is contained in:
		
							parent
							
								
									07ca088399
								
							
						
					
					
						commit
						f89f320def
					
				@ -92,6 +92,9 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        public string DEPARTMENT_NAME { get; set; }
 | 
					        public string DEPARTMENT_NAME { get; set; }
 | 
				
			||||||
        public DateTime? CREATE_TIME { get; set; }
 | 
					        public DateTime? CREATE_TIME { get; set; }
 | 
				
			||||||
 | 
					        public DateTime? TASK_STARTDT { get; set; }
 | 
				
			||||||
 | 
					        public DateTime? TASK_ENDDT { get; set; }
 | 
				
			||||||
 | 
					        public DateTime? TASK_DT { get; set; }
 | 
				
			||||||
        public string STATUS_NAME { get; set; }
 | 
					        public string STATUS_NAME { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public class GroupbyDepartmentCompletion
 | 
					    public class GroupbyDepartmentCompletion
 | 
				
			||||||
@ -330,6 +333,138 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
 | 
				
			|||||||
                GetDepartmentIds(orgId, listDepIDInt, ref departmentIdPs);
 | 
					                GetDepartmentIds(orgId, listDepIDInt, ref departmentIdPs);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [HttpPost, Route("GetFormRunDay")]
 | 
				
			||||||
 | 
					        public JsonActionResult<List<T_BI_FORM_RUN_ANALYSIS>> GetFormRunDay([FromBody] KeywordFilter filter)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return SafeExecute<List<T_BI_FORM_RUN_ANALYSIS>>(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //首页待办增加数量统计字段
 | 
				
			||||||
 | 
					                if (string.IsNullOrEmpty(filter.Parameter1))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    throw new Exception("请先选择开始时间");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (string.IsNullOrEmpty(filter.Parameter2))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    throw new Exception("请先选择结束时间");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                DateTime startTime = Convert.ToDateTime(filter.Parameter1);
 | 
				
			||||||
 | 
					                DateTime endTime = Convert.ToDateTime(filter.Parameter2);
 | 
				
			||||||
 | 
					                var diffTime = startTime.AddDays(32).Date;
 | 
				
			||||||
 | 
					                if (diffTime < endTime.Date)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    throw new Exception("查询时间不能超过32天!");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                List<T_BI_FORM_RUN_ANALYSIS> formAnalysis = new List<T_BI_FORM_RUN_ANALYSIS>();
 | 
				
			||||||
 | 
					                var newFilter = new BaseFilter(filter.OrgId);
 | 
				
			||||||
 | 
					                newFilter.IgnoreDataRule = true;
 | 
				
			||||||
 | 
					                newFilter.SelectField = new List<string> { "USER_ID", "NOTICE_STATUS" };
 | 
				
			||||||
 | 
					                var tasks = this.GetEntities<T_FM_NOTIFICATION_TASK>(t => !t.IS_DELETED && t.CREATE_TIME >= startTime && t.CREATE_TIME <= endTime && (t.NOTICE_STATUS == 0 || t.NOTICE_STATUS == 1 || t.NOTICE_STATUS == 2), newFilter).ToList();
 | 
				
			||||||
 | 
					                var userIds = tasks.Select(t => t.USER_ID).Distinct().ToList();
 | 
				
			||||||
 | 
					                var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Department");
 | 
				
			||||||
 | 
					                var departments = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Parent");
 | 
				
			||||||
 | 
					                if (tasks.Any())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var company = departments.FirstOrDefault(t => t.DEPARTMENT_TYPE == 3);
 | 
				
			||||||
 | 
					                    foreach (var item in tasks)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        var user = users.FirstOrDefault(t => t.ID == item.USER_ID);
 | 
				
			||||||
 | 
					                        if (user != null)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            if (company != null)
 | 
				
			||||||
 | 
					                                item.DEPARTMENT_ID = company.ID;
 | 
				
			||||||
 | 
					                            var department = departments.FirstOrDefault(t => t.ID == user.Nav_Department?.PARENT_ID);
 | 
				
			||||||
 | 
					                            var type = user.Nav_Department?.DEPARTMENT_TYPE;
 | 
				
			||||||
 | 
					                            switch (type)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                case 0:
 | 
				
			||||||
 | 
					                                    item.DEPT_DEPARTMENT_ID = user.DEPARTMENT_ID;
 | 
				
			||||||
 | 
					                                    item.SHOP_DEPARTMENT_ID = null;
 | 
				
			||||||
 | 
					                                    item.CLASS_DEPARTMENT_ID = null;
 | 
				
			||||||
 | 
					                                    break;
 | 
				
			||||||
 | 
					                                case 1:
 | 
				
			||||||
 | 
					                                    item.DEPT_DEPARTMENT_ID = department.ID;
 | 
				
			||||||
 | 
					                                    item.SHOP_DEPARTMENT_ID = user.DEPARTMENT_ID;
 | 
				
			||||||
 | 
					                                    item.CLASS_DEPARTMENT_ID = null;
 | 
				
			||||||
 | 
					                                    break;
 | 
				
			||||||
 | 
					                                case 2:
 | 
				
			||||||
 | 
					                                    item.DEPT_DEPARTMENT_ID = department.PARENT_ID;
 | 
				
			||||||
 | 
					                                    item.SHOP_DEPARTMENT_ID = department.ID;
 | 
				
			||||||
 | 
					                                    item.CLASS_DEPARTMENT_ID = user.DEPARTMENT_ID;
 | 
				
			||||||
 | 
					                                    break;
 | 
				
			||||||
 | 
					                                case 3:
 | 
				
			||||||
 | 
					                                    item.DEPT_DEPARTMENT_ID = null;
 | 
				
			||||||
 | 
					                                    item.SHOP_DEPARTMENT_ID = null;
 | 
				
			||||||
 | 
					                                    item.CLASS_DEPARTMENT_ID = null;
 | 
				
			||||||
 | 
					                                    break;
 | 
				
			||||||
 | 
					                                default:
 | 
				
			||||||
 | 
					                                    break;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    tasks = tasks.Where(t => t.DEPARTMENT_ID != null).ToList();
 | 
				
			||||||
 | 
					                    tasks.ForEach(m => { m.DEPARTMENT_NAME = company?.NAME; });
 | 
				
			||||||
 | 
					                    var departs = departments.Where(t => t.DEPARTMENT_TYPE == 2).OrderBy(m => m.PARENT_ID).ThenBy(k => k.NUM).ToList();
 | 
				
			||||||
 | 
					                    if (!string.IsNullOrEmpty(filter.Keyword))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        var type = filter.Keyword.ToString();
 | 
				
			||||||
 | 
					                        switch (type)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            case "0":
 | 
				
			||||||
 | 
					                                tasks = tasks.Where(t => t.DEPT_DEPARTMENT_ID != null).ToList();
 | 
				
			||||||
 | 
					                                tasks.ForEach(m => { m.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == m.DEPT_DEPARTMENT_ID)?.NAME; });
 | 
				
			||||||
 | 
					                                departs = departments.Where(t => t.DEPARTMENT_TYPE == 0).OrderBy(m => m.PARENT_ID).ThenBy(k => k.NUM).ToList();
 | 
				
			||||||
 | 
					                                break;
 | 
				
			||||||
 | 
					                            case "1":
 | 
				
			||||||
 | 
					                                tasks = tasks.Where(t => t.SHOP_DEPARTMENT_ID != null).ToList();
 | 
				
			||||||
 | 
					                                tasks.ForEach(m => { m.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == m.SHOP_DEPARTMENT_ID)?.NAME; });
 | 
				
			||||||
 | 
					                                departs = departments.Where(t => t.DEPARTMENT_TYPE == 1).OrderBy(m => m.PARENT_ID).ThenBy(k => k.NUM).ToList();
 | 
				
			||||||
 | 
					                                break;
 | 
				
			||||||
 | 
					                            case "2":
 | 
				
			||||||
 | 
					                                tasks = tasks.Where(t => t.CLASS_DEPARTMENT_ID != null).ToList();
 | 
				
			||||||
 | 
					                                tasks.ForEach(m => { m.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == m.CLASS_DEPARTMENT_ID)?.NAME; });
 | 
				
			||||||
 | 
					                                departs = departments.Where(t => t.DEPARTMENT_TYPE == 2).OrderBy(m => m.PARENT_ID).ThenBy(k => k.NUM).ToList();
 | 
				
			||||||
 | 
					                                break;
 | 
				
			||||||
 | 
					                            case "3":
 | 
				
			||||||
 | 
					                                departs = departments.Where(t => t.DEPARTMENT_TYPE == 0).OrderBy(m => m.PARENT_ID).ThenBy(k => k.NUM).ToList();
 | 
				
			||||||
 | 
					                                break;
 | 
				
			||||||
 | 
					                            default:
 | 
				
			||||||
 | 
					                                break;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        tasks = tasks.Where(t => t.CLASS_DEPARTMENT_ID != null).ToList();
 | 
				
			||||||
 | 
					                        tasks.ForEach(m => { m.DEPARTMENT_NAME = departments.FirstOrDefault(t => t.ID == m.CLASS_DEPARTMENT_ID)?.NAME; });
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    if (tasks.Any() && departs.Any())
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        //var temp = tasks.GroupBy(t => t.DEPARTMENT_NAME).ToList();
 | 
				
			||||||
 | 
					                        foreach (var item in departs)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            var count = tasks.Where(t => t.DEPARTMENT_NAME == item.NAME).Count();
 | 
				
			||||||
 | 
					                            var finish = tasks.Count(t => t.NOTICE_STATUS == 1 && t.DEPARTMENT_NAME == item.NAME);
 | 
				
			||||||
 | 
					                            var overfinish = tasks.Count(t => t.NOTICE_STATUS == 2 && t.DEPARTMENT_NAME == item.NAME);
 | 
				
			||||||
 | 
					                            var unfinish = count - finish - overfinish;
 | 
				
			||||||
 | 
					                            var temp1 = count == 0 ? 100 : (double)(finish + overfinish) / count * 100;
 | 
				
			||||||
 | 
					                            var finishRate = temp1.ToString("0") + "%";
 | 
				
			||||||
 | 
					                            var temp2 = count == 0 ? 100 : (double)finish / count * 100;
 | 
				
			||||||
 | 
					                            var normalFinishRate = temp2.ToString("0") + "%";
 | 
				
			||||||
 | 
					                            T_BI_FORM_RUN_ANALYSIS analysis = new T_BI_FORM_RUN_ANALYSIS();
 | 
				
			||||||
 | 
					                            analysis.MOUDLE_NAME = item.NAME;
 | 
				
			||||||
 | 
					                            analysis.ORG_ID = filter.OrgId;
 | 
				
			||||||
 | 
					                            analysis.TOTAL_QTY = count;
 | 
				
			||||||
 | 
					                            analysis.FINISH_QTY = finish;
 | 
				
			||||||
 | 
					                            analysis.OVER_FINISH_QTY = overfinish;
 | 
				
			||||||
 | 
					                            analysis.UNFINISH_QTY = unfinish;
 | 
				
			||||||
 | 
					                            analysis.FINISH_RATE = finishRate;
 | 
				
			||||||
 | 
					                            analysis.NORMAL_FINISH_RATE = normalFinishRate;
 | 
				
			||||||
 | 
					                            formAnalysis.Add(analysis);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return formAnalysis;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        [HttpPost, Route("GetFormRun")]
 | 
					        [HttpPost, Route("GetFormRun")]
 | 
				
			||||||
        public JsonActionResult<List<T_BI_FORM_RUN_ANALYSIS>> GetFormRun([FromBody] KeywordFilter filter)
 | 
					        public JsonActionResult<List<T_BI_FORM_RUN_ANALYSIS>> GetFormRun([FromBody] KeywordFilter filter)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@ -4295,6 +4430,64 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
 | 
				
			|||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [HttpPost, Route("GetFormRunAnalyzeDay")]
 | 
				
			||||||
 | 
					        public JsonActionResult<List<UnFinishInfo>> GetFormRunAnalyzeDay([FromBody] KeywordFilter filter)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return SafeExecute<List<UnFinishInfo>>(() =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //首页待办增加数量统计字段
 | 
				
			||||||
 | 
					                List<UnFinishInfo> formAnalysis = new List<UnFinishInfo>();
 | 
				
			||||||
 | 
					                if (string.IsNullOrEmpty(filter.Parameter1))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    throw new Exception("请先选择开始时间");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (string.IsNullOrEmpty(filter.Parameter2))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    throw new Exception("请先选择结束时间");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (string.IsNullOrEmpty(filter.Keyword))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    throw new Exception("未传入组织");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                var depart = this.GetEntity<T_FM_DEPARTMENT>(t => t.NAME == filter.Keyword && t.ENABLE_STATUS == 0);
 | 
				
			||||||
 | 
					                if (depart == null)
 | 
				
			||||||
 | 
					                    throw new Exception("组织" + filter.Keyword + "不存在,请确认!");
 | 
				
			||||||
 | 
					                DateTime startTime = Convert.ToDateTime(filter.Parameter1);
 | 
				
			||||||
 | 
					                DateTime endTime = Convert.ToDateTime(filter.Parameter2);
 | 
				
			||||||
 | 
					                var diffTime = startTime.AddDays(32).Date;
 | 
				
			||||||
 | 
					                if (diffTime < endTime.Date)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    throw new Exception("查询时间不能超过32天!");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                List<Guid> outPartmentIds = new List<Guid>();
 | 
				
			||||||
 | 
					                List<Guid> inputIds = new List<Guid>() { depart.ID };
 | 
				
			||||||
 | 
					                GetDepartmentIds(APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value, inputIds, ref outPartmentIds);
 | 
				
			||||||
 | 
					                outPartmentIds.Add(depart.ID);
 | 
				
			||||||
 | 
					                var userInfos = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && outPartmentIds.Contains((Guid)t.DEPARTMENT_ID), new BaseFilter(filter.OrgId), "Nav_Department");
 | 
				
			||||||
 | 
					                var userIds = userInfos.Select(m => m.ID).ToList();
 | 
				
			||||||
 | 
					                var tasks = this.GetEntities<T_FM_NOTIFICATION_TASK>(t => !t.IS_DELETED && t.CREATE_TIME >= startTime && t.CREATE_TIME <= endTime && userIds.Contains(t.USER_ID) && (t.NOTICE_STATUS == 0 || t.NOTICE_STATUS == 1 || t.NOTICE_STATUS == 2), new BaseFilter(filter.OrgId)).ToList();
 | 
				
			||||||
 | 
					                if (!string.IsNullOrEmpty(filter.Parameter3))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    tasks = tasks.Where(t => t.NOTICE_STATUS == int.Parse(filter.Parameter3)).ToList();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (tasks.Any())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    tasks.ForEach(t =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        UnFinishInfo analysis = new UnFinishInfo();
 | 
				
			||||||
 | 
					                        analysis.NAME = t.NOTICE_TITLE;
 | 
				
			||||||
 | 
					                        analysis.CREATE_NAME = userInfos.FirstOrDefault(m => m.ID == t.USER_ID)?.NAME;
 | 
				
			||||||
 | 
					                        analysis.DEPARTMENT_NAME = userInfos.FirstOrDefault(m => m.ID == t.USER_ID)?.Nav_Department?.NAME;
 | 
				
			||||||
 | 
					                        analysis.TASK_STARTDT = t.TASK_STARTDT;
 | 
				
			||||||
 | 
					                        analysis.TASK_ENDDT = t.TASK_ENDDT;
 | 
				
			||||||
 | 
					                        analysis.TASK_DT = t.TASK_DT;
 | 
				
			||||||
 | 
					                        analysis.STATUS_NAME = Enum.GetName(typeof(FMNoticeStatusEnum), t.NOTICE_STATUS);
 | 
				
			||||||
 | 
					                        formAnalysis.Add(analysis);
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return formAnalysis;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        [HttpPost, Route("GetFormRunAnalyze")]
 | 
					        [HttpPost, Route("GetFormRunAnalyze")]
 | 
				
			||||||
        public JsonActionResult<List<UnFinishInfo>> GetFormRunAnalyze([FromBody] KeywordFilter filter)
 | 
					        public JsonActionResult<List<UnFinishInfo>> GetFormRunAnalyze([FromBody] KeywordFilter filter)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user