This commit is contained in:
wyw 2026-07-27 15:49:26 +08:00
commit 96a452514c
3 changed files with 333 additions and 53 deletions

View File

@ -1,6 +1,7 @@

using APT.BaseData.Domain.Entities.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Enums;
using APT.MS.Domain.Enums.BI;
using System;
using System.Collections.Generic;
@ -142,5 +143,21 @@ namespace APT.MS.Domain.Entities.BI
/// </summary>
[Description("结束时间")]
public DateTime ENDTIME { get; set; }
/// <summary>
/// 表单名称
/// </summary>
[Description("表单名称")]
public string FORM_NAME { get; set; }
/// <summary>
/// 表单状态
/// </summary>
[Description("表单状态")]
public string FORM_STATUS { get; set; }
/// <summary>
/// 是否超时
/// </summary>
[Description("是否超时")]
public FOISOVERTIME OVERTIME { get; set; }
}
}

View File

@ -1519,7 +1519,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI
// }
// }
//}
var checkNotices = GetEntities<T_SK_SECURITY_INSPECTION_NOTICE>(e => e.APPLY_DEPARTMENT_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == dtNow.Year && e.Nav_CheckType!=null && !e.Nav_CheckType.NAME.Contains("岗位排查"), newFilter);
var checkNotices = GetEntities<T_SK_SECURITY_INSPECTION_RECORD_SUMMARY>(e => e.APPLY_DEPARTMENT_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Year == dtNow.Year && e.Nav_CheckType!=null && !e.Nav_CheckType.NAME.Contains("岗位排查"), newFilter);
var checkIds = checkNotices.Select(t => t.CHECK_TYPE_ID).Distinct().ToList();
//var loginDepart = this.GetEntity<T_FM_DEPARTMENT>(t => t.ID == APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID);
var listCheckType = GetEntities<MS.Domain.Entities.SK.T_SK_CHECK_TYPE>(e => checkIds.Contains(e.ID), null, "Nav_ProductionUnit").OrderBy(t => t.PRODUCTION_UNIT_ID).ToList();
@ -2349,8 +2349,9 @@ namespace APT.SC.WebApi.Controllers.Api.BI
newFilter.IgnoreDataRule = true;
var startTime = dtNow.AddMonths(-11);
var checkNotices = GetEntities<T_SK_SECURITY_INSPECTION_NOTICE>(e => e.APPLY_DEPARTMENT_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME >= startTime && e.Nav_CheckType!=null && !e.Nav_CheckType.NAME.Contains("岗位排查"), newFilter);
var noticeIds = checkNotices.Select(t => t.ID).ToList();
var checkRecords = GetEntities<T_SK_SECURITY_INSPECTION_RECORD_SUMMARY>(e => e.SECURITY_INSPECTION_NOTICE_ID.HasValue && noticeIds.Contains((Guid)e.SECURITY_INSPECTION_NOTICE_ID), newFilter);
//var noticeIds = checkNotices.Select(t => t.ID).ToList();
//var checkRecords = GetEntities<T_SK_SECURITY_INSPECTION_RECORD_SUMMARY>(e => e.SECURITY_INSPECTION_NOTICE_ID.HasValue && noticeIds.Contains((Guid)e.SECURITY_INSPECTION_NOTICE_ID), newFilter);
var checkRecords = GetEntities<T_SK_SECURITY_INSPECTION_RECORD_SUMMARY>(e => e.APPLY_DEPARTMENT_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME >= startTime && e.Nav_CheckType != null && !e.Nav_CheckType.NAME.Contains("岗位排查"), newFilter);
var currentTime = Convert.ToDateTime(startTime.Year + "-" + startTime.Month + "-01 00:00:00");
List<HomeSafeCheckCountMonth> ListSafeCheckYearMonth = new List<HomeSafeCheckCountMonth>();
//int befoMonth = 11;//计算 12 个月 就是提前 11个月
@ -2427,7 +2428,7 @@ namespace APT.SC.WebApi.Controllers.Api.BI
{
monthEnd = dtNow;
}
var listPerChearch = checkNotices.Where(t => t.CREATE_TIME >= monthStart && t.CREATE_TIME <= monthEnd);
var listPerChearch = checkRecords.Where(t => t.CREATE_TIME >= monthStart && t.CREATE_TIME <= monthEnd);
HomeSafeCheckCountMonth modelper = new HomeSafeCheckCountMonth();
modelper.Total = listPerChearch.Count();
modelper.listSOURCENAME = listCheckTypeNAME;

View File

@ -52,6 +52,7 @@ using System.Net.NetworkInformation;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using static APT.SC.WebApi.Controllers.Api.BI.BIKanBanController;
using static NPOI.HSSF.Util.HSSFColor;
namespace APT.SC.WebApi.Controllers.Api.BIController
{
@ -8982,25 +8983,32 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
#endregion
[HttpPost, Route("GetTotalCount")]
public JsonActionResult<dynamic> GetTotalCount([FromBody] KeywordPageFilter pageFilter)
public JsonActionResult<dynamic> GetTotalCount([FromBody] KeywordFilter filter)
{
return SafeExecute<dynamic>(() =>
{
var newFilter = new KeywordFilter();
newFilter.OrgId = pageFilter.OrgId;
newFilter.IgnoreDataRule = true;
filter.IgnoreDataRule = true;
var startTime = DateTime.Now; var endTime = DateTime.Now;
if (!string.IsNullOrEmpty(filter.Parameter2))
{
startTime = Convert.ToDateTime(filter.Parameter2);
}
if (!string.IsNullOrEmpty(filter.Parameter3))
{
endTime = Convert.ToDateTime(filter.Parameter3);
}
//首页待办增加数量统计字段
dynamic ret = new System.Dynamic.ExpandoObject();
var ordinaryCount = GetCount<T_FO_JOB_EVENT_RECORD>(s => !s.IS_DELETED, newFilter);
var crucialCount = GetCount<T_FO_CRUCIAL_LICENSE_JOB>(s => !s.IS_DELETED, newFilter);
var activityCount = GetCount<T_FO_TEAM_ACTIVITY>(s => !s.IS_DELETED, newFilter);
var postCount = GetCount<T_FO_CURRENT_CLASS_RECORD>(s => !s.IS_DELETED, newFilter);
var postChangeCount = GetCount<T_FO_CHANGE_SHIFT_RECORD>(s => !s.IS_DELETED, newFilter);
var taskCount = GetCount<T_HM_OPERATION_LINK>(s => !s.IS_DELETED, newFilter);
var shiftMeetingCount = GetCount<T_FO_PRE_SHIFT_MEETING_RECORD>(s => !s.IS_DELETED, newFilter);
var shiftMeetingFinishCount = GetCount<T_FO_PRE_SHIFT_MEETING_RECORD>(s => !s.IS_DELETED && s.PRE_MEETING_STATUS == FOPreMeetingStatusEnum., newFilter);
var postChangeFinishCount = GetCount<T_FO_CHANGE_SHIFT_RECORD>(s => !s.IS_DELETED && s.SHIFT_STATUS == (int)FOChangeShiftStatusEnum., newFilter);
var postFinishCount = GetCount<T_FO_CURRENT_CLASS_RECORD>(s => !s.IS_DELETED && s.SHIFT_STATUS == (int)FOShiftStatusEnum., newFilter);
var ordinaryCount = GetCount<T_FO_JOB_EVENT_RECORD>(s => !s.IS_DELETED && s.CREATE_TIME>= startTime && s.CREATE_TIME<= endTime, filter);
var crucialCount = GetCount<T_FO_JOB_ACTIVITY_RECORD>(s => !s.IS_DELETED && s.CREATE_TIME >= startTime && s.CREATE_TIME <= endTime, filter);
var activityCount = GetCount<T_FO_TEAM_ACTIVITY>(s => !s.IS_DELETED && s.CREATE_TIME >= startTime && s.CREATE_TIME <= endTime, filter);
var postCount = GetCount<T_FO_CURRENT_CLASS_RECORD>(s => !s.IS_DELETED && s.CREATE_TIME >= startTime && s.CREATE_TIME <= endTime, filter);
var postChangeCount = GetCount<T_FO_CHANGE_SHIFT_RECORD>(s => !s.IS_DELETED && s.CREATE_TIME >= startTime && s.CREATE_TIME <= endTime, filter);
var taskCount = GetCount<T_HM_OPERATION_LINK>(s => !s.IS_DELETED && s.CREATE_TIME >= startTime && s.CREATE_TIME <= endTime, filter);
var shiftMeetingCount = GetCount<T_FO_PRE_SHIFT_MEETING_RECORD>(s => !s.IS_DELETED && s.CREATE_TIME >= startTime && s.CREATE_TIME <= endTime, filter);
var shiftMeetingFinishCount = GetCount<T_FO_PRE_SHIFT_MEETING_RECORD>(s => !s.IS_DELETED && s.CREATE_TIME >= startTime && s.CREATE_TIME <= endTime && s.PRE_MEETING_STATUS == FOPreMeetingStatusEnum., filter);
var postChangeFinishCount = GetCount<T_FO_CHANGE_SHIFT_RECORD>(s => !s.IS_DELETED && s.CREATE_TIME >= startTime && s.CREATE_TIME <= endTime && s.SHIFT_STATUS == (int)FOChangeShiftStatusEnum., filter);
var postFinishCount = GetCount<T_FO_CURRENT_CLASS_RECORD>(s => !s.IS_DELETED && s.CREATE_TIME >= startTime && s.CREATE_TIME <= endTime && s.SHIFT_STATUS == (int)FOShiftStatusEnum., filter);
ret.ordinaryCount = ordinaryCount;
ret.crucialCount = crucialCount;
ret.activityCount = activityCount;
@ -9090,7 +9098,16 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
{
List<T_FM_RISK_LEVEL_PROPORTION> completionSorts = new List<T_FM_RISK_LEVEL_PROPORTION>();
filter.IgnoreDataRule = true;
var completions = GetEntities<T_FO_CRUCIAL_LICENSE_JOB>(t => !t.IS_DELETED, filter);
var startTime = DateTime.Now; var endTime = DateTime.Now;
if (!string.IsNullOrEmpty(filter.Parameter2))
{
startTime = Convert.ToDateTime(filter.Parameter2);
}
if (!string.IsNullOrEmpty(filter.Parameter3))
{
endTime = Convert.ToDateTime(filter.Parameter3);
}
var completions = GetEntities<T_FO_CRUCIAL_LICENSE_JOB>(t => !t.IS_DELETED && t.CREATE_TIME >= startTime && t.CREATE_TIME <= endTime, filter);
var countTj = completions.Where(t => t.AUDIT_LEVEL == (int)HMOperationTaskAuditEnum.).Count();
T_FM_RISK_LEVEL_PROPORTION levelTj = new T_FM_RISK_LEVEL_PROPORTION();
levelTj.RISK_LEVEL = "特级审批";
@ -9740,28 +9757,21 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" };
//var teams = GetEntities<T_FM_TEAM>(t => !t.IS_DELETED && departmentIds.Contains(t.DEPARTMENT_ID.Value), baseFilter);
//var teamIds = teams.Select(t => t.ID);
var completions = GetClassCompletion(orgId);// GetEntities<T_FM_DEPARTMENT_COMPLETION>(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList();
//var teamIds = completions.Select(t => t.TEAM_ID);
var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-5).Year + "-" + DateTime.Now.AddMonths(-5).Month + "-01 00:00:00");
var endTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + " 23:59:59");
if (!string.IsNullOrEmpty(filter.Parameter2))
{
DateTime startTime = Convert.ToDateTime(filter.Parameter2);
completions = completions.Where(t => t.MONTH >= startTime).ToList();
}
else
{
var startTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.AddMonths(-5).Month + "-01 00:00:00");
completions = completions.Where(t => t.MONTH >= startTime).ToList();
startTime = Convert.ToDateTime(filter.Parameter2);
//completions = completions.Where(t => t.MONTH >= startTime).ToList();
}
if (!string.IsNullOrEmpty(filter.Parameter3))
{
DateTime endTime = Convert.ToDateTime(filter.Parameter3);
completions = completions.Where(t => t.MONTH <= endTime).ToList();
}
else
{
var endTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + " 23:59:59");
completions = completions.Where(t => t.MONTH <= endTime).ToList();
endTime = Convert.ToDateTime(filter.Parameter3);
//completions = completions.Where(t => t.MONTH <= endTime).ToList();
}
var completions = GetClassCompletion(orgId,startTime, endTime);// GetEntities<T_FM_DEPARTMENT_COMPLETION>(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList();
//var teamIds = completions.Select(t => t.TEAM_ID);
//if (teamIds != null && teamIds.Any())
{
completionLists = completions.Where(m => m.TEAM_ID != null).GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME }).Select(group => new GroupbyDepartmentId
@ -9800,11 +9810,39 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
item.CALC = tempCalc;
}
}
List<T_FM_DEPARTMENT_COMPLETION_SORT> completionSorts1 = completionSorts.OrderByDescending(t => t.CALC).Take(8).ToList();
if (!string.IsNullOrEmpty(filter.Keyword))
{
if (filter.Keyword == "10")
{
var departId = departmentInfo.FirstOrDefault(t => t.NAME == "选矿部")?.ID;
if (departId != null)
{
List<Guid> parentIds = new List<Guid>();
parentIds.Add((Guid)departId);
List<Guid> allIds = new List<Guid>();
GetDepartmentIds(orgId, parentIds, ref allIds);
completionSorts = completionSorts.Where(t => t.TEAM_ID != null && allIds.Contains((Guid)t.TEAM_ID)).ToList();
}
}
if (filter.Keyword == "30")
{
var departId = departmentInfo.FirstOrDefault(t => t.NAME == "矿山部")?.ID;
if (departId != null)
{
List<Guid> parentIds = new List<Guid>();
parentIds.Add((Guid)departId);
List<Guid> allIds = new List<Guid>();
GetDepartmentIds(orgId, parentIds, ref allIds);
completionSorts = completionSorts.Where(t => t.TEAM_ID != null && allIds.Contains((Guid)t.TEAM_ID)).ToList();
}
}
}
//List<T_FM_DEPARTMENT_COMPLETION_SORT> completionSorts1 = completionSorts.OrderByDescending(t => t.CALC).Take(8).ToList();
List<T_FM_DEPARTMENT_COMPLETION_SORT> completionSorts1 = completionSorts.Where(m=>m.CALC!=0).OrderByDescending(t => t.CALC).ToList();
if (!string.IsNullOrEmpty(filter.Parameter1))
{
var param = int.Parse(filter.Parameter1.ToString());
completionSorts1 = completionSorts.OrderByDescending(t => t.CALC).Take(param).ToList();
completionSorts1 = completionSorts1.OrderByDescending(t => t.CALC).Take(param).ToList();
}
int i = 1;
foreach (var item in completionSorts1)
@ -9855,7 +9893,19 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
//if (string.IsNullOrEmpty(filter.Keyword))
// return ret;
//var departmentInfo = this.GetEntities<T_FM_DEPARTMENT>(t => t.PRODUCTION_UNIT_ID == Guid.Parse(filter.Keyword.ToString()), new BaseFilter(orgId));
var completions = GetClassCompletion(orgId);//GetEntities<T_FM_DEPARTMENT_COMPLETION>(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList();
var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-5).Year + "-" + DateTime.Now.AddMonths(-5).Month + "-01 00:00:00");
var endTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + " 23:59:59");
if (!string.IsNullOrEmpty(filter.Parameter2))
{
startTime = Convert.ToDateTime(filter.Parameter2);
//completions = completions.Where(t => t.MONTH >= startTime).ToList();
}
if (!string.IsNullOrEmpty(filter.Parameter3))
{
endTime = Convert.ToDateTime(filter.Parameter3);
//completions = completions.Where(t => t.MONTH <= endTime).ToList();
}
var completions = GetClassCompletion(orgId, startTime, endTime);//GetEntities<T_FM_DEPARTMENT_COMPLETION>(t => !t.IS_DELETED, new BaseFilter(orgId)).ToList();
var departmentInfos = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(orgId), "Nav_Parent");
//List<T_FM_DEPARTMENT> listDepBM = new List<T_FM_DEPARTMENT>();
@ -10013,29 +10063,28 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
}
/// <summary>
/// 返回所有下级部门节点
/// 返回班前会议、班组活动记录
/// </summary>
/// <param name="orgId"></param>
/// <param name="listDepIDInt"></param>
/// <param name="departmentIdPs"></param>
public List<T_FM_DEPARTMENT_COMPLETION> GetClassCompletion(Guid orgId)
public List<T_FM_DEPARTMENT_COMPLETION> GetClassCompletion(Guid orgId,DateTime startTime, DateTime endTime)
{
List<T_FM_DEPARTMENT_COMPLETION> completions = new List<T_FM_DEPARTMENT_COMPLETION>();
BaseFilter baseFilter = new BaseFilter(orgId);
var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-5).Year + "-" + DateTime.Now.AddMonths(-5).Month + "-01 00:00:00");
var endTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + " 23:59:59");
baseFilter.SelectField = new string[] { "ID", "NAME", "DEPARTMENT_TYPE", "Nav_Parent.NAME", "PARENT_ID" };
var departments = GetEntities<T_FM_DEPARTMENT>(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, baseFilter);
baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" };
var teams = GetEntities<T_FM_TEAM>(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, baseFilter);
baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "PRE_MEETING_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_User.DEPARTMENT_ID" }; //指定字段,包括导航属性
var preShiftMeetingTemp = GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD>(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false, baseFilter).ToList();
var preShiftMeetingTemp = GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD>(i => i.CREATE_TIME >= startTime && i.CREATE_TIME<= endTime && i.IS_DELETED == false, baseFilter).ToList();
//baseFilter.SelectField = new string[] { "CLASS_TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_Editor.DEPARTMENT_ID" }; //指定字段,包括导航属性
//var currentShiftTemp = GetEntities<T_FO_CURRENT_CLASS_RECORD>(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false, baseFilter).ToList();
//baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME" }; //指定字段,包括导航属性
//var changeShiftTemp = GetEntities<T_FO_CHANGE_SHIFT_RECORD>(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false, baseFilter).ToList();
baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Taem.NAME", "TA_STATUS", "Nav_Taem.DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_MainUser.DEPARTMENT_ID" }; //指定字段,包括导航属性
var teamActivityTemp = GetEntities<T_FO_TEAM_ACTIVITY>(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false, baseFilter).ToList();
var teamActivityTemp = GetEntities<T_FO_TEAM_ACTIVITY>(i => i.CREATE_TIME >= startTime && i.CREATE_TIME <= endTime && i.IS_DELETED == false, baseFilter).ToList();
for (DateTime i = startTime; i <= endTime; i = i.AddMonths(i.Month - i.Month + 1).AddDays(1 - i.Day))
{
var monthEnd = Convert.ToDateTime(i.AddMonths(i.Month - i.Month + 1).AddDays(1 - i.Day - 1).ToString().Replace("0:00:00", "23:59:59"));
@ -11668,7 +11717,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value;
var filter = new BaseFilter(orgId);
filter.SelectField = new List<string> { "ID", "NAME", "DEPARTMENT_TYPE", "Nav_User.NAME", "Nav_ChargeUser.NAME" };
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => !t.IS_DELETED, filter);
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => !t.IS_DELETED && t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, filter);
if (departs != null && departs.Any())
{
foreach (var depart in departs)
@ -12298,7 +12347,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
run.FINISH_RATE = temp.ToString("0.0");
var temp2 = total == 0 ? 0 : (double)finish / total * 100;
run.NORMAL_FINISH_RATE = temp2.ToString("0.0");
run.TOTAL_QTY = total;
run.TOTAL_QTY = finish + overFinish;
monthRuns.Add(run);
}
else
@ -12314,7 +12363,7 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
run.FINISH_RATE = temp.ToString("0");
var temp2 = total == 0 ? 0 : (double)finish / total * 100;
run.NORMAL_FINISH_RATE = temp2.ToString("0");
run.TOTAL_QTY = total;
run.TOTAL_QTY = finish + overFinish;
monthRuns.Add(run);
}
}
@ -12617,6 +12666,219 @@ namespace APT.SC.WebApi.Controllers.Api.BIController
}
return result;
}
/// <summary>
/// 查询所有数据
/// </summary>
/// <param name="filter">过滤实体</param>
/// <returns></returns>
[HttpPost, Route("GetSafeEntities")]
public JsonActionResult<List<T_BI_SAFETASK_FINISH>> GetSafeEntities([FromBody] KeywordFilter filter)
{
return SafeExecute<List<T_BI_SAFETASK_FINISH>>(() =>
{
List<T_BI_SAFETASK_FINISH> completions = new List<T_BI_SAFETASK_FINISH>();
var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-1).Year + "-" + DateTime.Now.AddMonths(-1).Month + "-01 00:00:00");
var endTime = Convert.ToDateTime(DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + " 23:59:59");
if (!string.IsNullOrEmpty(filter.Parameter2))
{
startTime = Convert.ToDateTime(filter.Parameter2);
//completions = completions.Where(t => t.MONTH >= startTime).ToList();
}
if (!string.IsNullOrEmpty(filter.Parameter3))
{
endTime = Convert.ToDateTime(filter.Parameter3);
//completions = completions.Where(t => t.MONTH <= endTime).ToList();
}
BaseFilter baseFilter = new BaseFilter(filter.OrgId);
baseFilter.SelectField = new string[] { "ID", "NAME", "DEPARTMENT_TYPE", "Nav_Parent.NAME", "PARENT_ID" };
var departments = GetEntities<T_FM_DEPARTMENT>(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, baseFilter);
var allInfos = GetSafeTaskFinish(filter.OrgId.Value, startTime, endTime);
var teamIds = allInfos.Select(t => t.TEAM_ID).Distinct().ToList();
if (teamIds != null && teamIds.Any())
{
foreach (var item in teamIds)
{
var first = departments.FirstOrDefault(t => t.ID == item);
if (first != null)
{
var biSafeFinish = new T_BI_SAFETASK_FINISH();
biSafeFinish.ORG_ID = filter.OrgId.Value;
biSafeFinish.TEAM_ID = item;
biSafeFinish.TEAM_NAME = first?.NAME;
var parentInfo = departments.FirstOrDefault(t => t.ID == first?.PARENT_ID);
if (parentInfo != null)
{
if (parentInfo.DEPARTMENT_TYPE == 15)
{
var parentUp = departments.FirstOrDefault(t => t.ID == parentInfo.PARENT_ID);
if (parentUp != null)
{
//biSafeFinish.shopId = parentUp.ID;
biSafeFinish.DEPARTMENT_NAME = parentUp.NAME;
}
}
else
{
//biSafeFinish.shopId = parentInfo.ID;
biSafeFinish.DEPARTMENT_NAME = parentInfo.NAME;
}
}
biSafeFinish.FO01_TOTAL = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "班前会议");
biSafeFinish.FO01_FINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "班前会议" && t.FORM_STATUS == "归档" && t.OVERTIME != FOISOVERTIME.);
biSafeFinish.FO01_UNFINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "班前会议" && t.FORM_STATUS != "归档");
biSafeFinish.FO01_OVERTIME = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "班前会议" && t.FORM_STATUS == "归档" && t.OVERTIME == FOISOVERTIME.);
biSafeFinish.FO02_TOTAL = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位当班记录");
biSafeFinish.FO02_FINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位当班记录" && t.FORM_STATUS == "归档" && t.OVERTIME != FOISOVERTIME.);
biSafeFinish.FO02_UNFINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位当班记录" && t.FORM_STATUS != "归档");
biSafeFinish.FO02_OVERTIME = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位当班记录" && t.FORM_STATUS == "归档" && t.OVERTIME == FOISOVERTIME.);
biSafeFinish.FO03_TOTAL = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位交接班");
biSafeFinish.FO03_FINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位交接班" && t.FORM_STATUS == "归档" && t.OVERTIME != FOISOVERTIME.);
biSafeFinish.FO03_UNFINISH = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位交接班" && t.FORM_STATUS != "归档");
biSafeFinish.FO03_OVERTIME = allInfos.Count(t => t.TEAM_ID == item && t.FORM_NAME == "岗位交接班" && t.FORM_STATUS == "归档" && t.OVERTIME == FOISOVERTIME.);
completions.Add(biSafeFinish);
}
}
}
completions = completions.OrderBy(t => t.DEPARTMENT_NAME).ThenBy(m => m.TEAM_NAME).ToList();
return completions;
});
}
/// <summary>
/// 返回班前会议、班组活动记录
/// </summary>
/// <param name="orgId"></param>
/// <param name="listDepIDInt"></param>
/// <param name="departmentIdPs"></param>
public List<T_BI_SAFETASK_FINISH> GetSafeTaskFinish(Guid orgId,DateTime startTime, DateTime endTime)
{
List<T_BI_SAFETASK_FINISH> completions = new List<T_BI_SAFETASK_FINISH>();
BaseFilter baseFilter = new BaseFilter(orgId);
baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" };
var teams = GetEntities<T_FM_TEAM>(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, baseFilter);
baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "PRE_MEETING_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_User.DEPARTMENT_ID" }; //指定字段,包括导航属性
var preShiftMeetingTemp = GetEntities<T_FO_PRE_SHIFT_MEETING_RECORD>(i => i.CREATE_TIME >= startTime && i.CREATE_TIME<= endTime && i.IS_DELETED == false, baseFilter).ToList();
baseFilter.SelectField = new string[] { "CLASS_TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_Editor.DEPARTMENT_ID" }; //指定字段,包括导航属性
var currentShiftTemp = GetEntities<T_FO_CURRENT_CLASS_RECORD>(i => i.CREATE_TIME >= startTime && i.CREATE_TIME <= endTime && i.IS_DELETED == false, baseFilter).ToList();
baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_Editor.DEPARTMENT_ID" }; //指定字段,包括导航属性
var changeShiftTemp = GetEntities<T_FO_CHANGE_SHIFT_RECORD>(i => i.CREATE_TIME >= startTime && i.CREATE_TIME <= endTime && i.IS_DELETED == false, baseFilter).ToList();
//baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Taem.NAME", "TA_STATUS", "Nav_Taem.DEPARTMENT_ID", "OVERTIME", "CREATE_TIME", "Nav_MainUser.DEPARTMENT_ID" }; //指定字段,包括导航属性
//var teamActivityTemp = GetEntities<T_FO_TEAM_ACTIVITY>(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false, baseFilter).ToList();
var sourceIds = preShiftMeetingTemp.Select(t => t.ID).ToList();
var curIds = currentShiftTemp.Select(t => t.ID).ToList();
sourceIds.AddRange(curIds);
var changeIds = changeShiftTemp.Select(t => t.ID).ToList();
sourceIds.AddRange(changeIds);
baseFilter.SelectField = new string[] { "SOURCE_DATA_ID" };
var allnoticeTask = GetEntities<T_FM_NOTIFICATION_TASK>(t => t.NOTICE_STATUS == 2 && t.CREATE_TIME >= startTime && t.SOURCE_DATA_ID !=null&& sourceIds.Contains((Guid)t.SOURCE_DATA_ID), baseFilter);
foreach (var item in preShiftMeetingTemp)
{
if (item.TEAM_ID == null)
{
item.TEAM_ID = item.Nav_User?.DEPARTMENT_ID;
}
else
{
var deparId = teams.FirstOrDefault(t => t.ID == item.TEAM_ID)?.DEPARTMENT_ID;
if (deparId == null)
{
item.TEAM_ID = item.Nav_User?.DEPARTMENT_ID;
}
else
{
item.TEAM_ID = deparId;
}
}
var isOver = allnoticeTask.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID);
if (isOver!=null)
{
item.OVERTIME = FOISOVERTIME.;
}
else
{
item.OVERTIME = FOISOVERTIME.;
}
var biSafeFinish = new T_BI_SAFETASK_FINISH();
biSafeFinish.ORG_ID = orgId;
biSafeFinish.TEAM_ID = (Guid)item.TEAM_ID;
biSafeFinish.FORM_NAME = "班前会议";
biSafeFinish.OVERTIME = item.OVERTIME;
biSafeFinish.FORM_STATUS = item.PRE_MEETING_STATUS.GetDescription();
completions.Add(biSafeFinish);
}
foreach (var item in currentShiftTemp)
{
if (item.CLASS_TEAM_ID == null)
{
item.CLASS_TEAM_ID = item.Nav_Editor?.DEPARTMENT_ID;
}
else
{
var deparId = teams.FirstOrDefault(t => t.ID == item.CLASS_TEAM_ID)?.DEPARTMENT_ID;
if (deparId == null)
{
item.CLASS_TEAM_ID = item.Nav_Editor?.DEPARTMENT_ID;
}
else
{
item.CLASS_TEAM_ID = deparId;
}
}
var isOver = allnoticeTask.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID);
if (isOver!=null)
{
item.OVERTIME = FOISOVERTIME.;
}
else
{
item.OVERTIME = FOISOVERTIME.;
}
var biSafeFinish = new T_BI_SAFETASK_FINISH();
biSafeFinish.ORG_ID = orgId;
biSafeFinish.TEAM_ID = (Guid)item.CLASS_TEAM_ID;
biSafeFinish.FORM_NAME = "岗位当班记录";
biSafeFinish.OVERTIME = item.OVERTIME;
biSafeFinish.FORM_STATUS = Enum.GetName(typeof(FOShiftStatusEnum), item.SHIFT_STATUS);
completions.Add(biSafeFinish);
}
foreach (var item in changeShiftTemp)
{
if (item.TEAM_ID == null)
{
item.TEAM_ID = item.Nav_Editor?.DEPARTMENT_ID;
}
else
{
var deparId = teams.FirstOrDefault(t => t.ID == item.TEAM_ID)?.DEPARTMENT_ID;
if (deparId == null)
{
item.TEAM_ID = item.Nav_Editor?.DEPARTMENT_ID;
}
else
{
item.TEAM_ID = deparId;
}
}
var isOver = allnoticeTask.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID);
if (isOver!=null)
{
item.OVERTIME = FOISOVERTIME.;
}
else
{
item.OVERTIME = FOISOVERTIME.;
}
var biSafeFinish = new T_BI_SAFETASK_FINISH();
biSafeFinish.ORG_ID = orgId;
biSafeFinish.TEAM_ID = (Guid)item.TEAM_ID;
biSafeFinish.FORM_NAME = "岗位交接班";
biSafeFinish.OVERTIME = item.OVERTIME;
biSafeFinish.FORM_STATUS = Enum.GetName(typeof(FOChangeShiftStatusEnum), item.SHIFT_STATUS);
completions.Add(biSafeFinish);
}
return completions;
}
public class JobInfo
{
public Guid? DEPARTMENT_ID { get; set; }