diff --git a/APT.BaseData.Services/Services/FM/FMFlowPermitService.cs b/APT.BaseData.Services/Services/FM/FMFlowPermitService.cs index 169d254..35ee093 100644 --- a/APT.BaseData.Services/Services/FM/FMFlowPermitService.cs +++ b/APT.BaseData.Services/Services/FM/FMFlowPermitService.cs @@ -21,6 +21,7 @@ namespace APT.BaseData.Services.Services.FM { /// /// 送审后,单据特殊处理 + /// wyw:此文件如果引入别的service 可能导致整个服务 都要依赖注入(引用依赖) /// public class FMFlowPermitService : CommonService, IFMFlowPermitService { @@ -28,16 +29,13 @@ namespace APT.BaseData.Services.Services.FM IFMNotificationTaskService NotificationTaskService { get; set; } IPFSysLogService SysLogService { get; set; } IPFApproveCallBackService ApproveCallBackService { get; set; } - IBSOperateLogService BSOperateLogService { get; set; } - - public FMFlowPermitService(IRepository repository, IPFCodeRuleService codeRuleService, IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IPFApproveCallBackService approveCallBackService, IBSOperateLogService bsOperateLogService) + public FMFlowPermitService(IRepository repository, IPFCodeRuleService codeRuleService, IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IPFApproveCallBackService approveCallBackService) : base(repository) { CodeRuleService = codeRuleService; NotificationTaskService = notificationTaskService; SysLogService = sysLogService; ApproveCallBackService = approveCallBackService; - BSOperateLogService = bsOperateLogService; } /// @@ -590,7 +588,7 @@ namespace APT.BaseData.Services.Services.FM } } - listBSLog = BSOperateLogService.GetListOperateLog(OPERATEPOINT, id, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, ListUserID, ListUserName, approve.ORG_ID, null, null); + listBSLog = GetListOperateLog(OPERATEPOINT, id, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, ListUserID, ListUserName, approve.ORG_ID, null, null); } catch { } } @@ -1954,5 +1952,155 @@ namespace APT.BaseData.Services.Services.FM //#endregion //#endregion + + + #region 方法重复写 如有修改 需同步修改 BSOperateLogService 对应方法 + + public List GetListOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserIDLogin, List ListDATA_ID, List ListUserID, List ListUserName, Guid? ORG_ID, Guid? DATA_ID_SUB = null, List ListUserIDDone = null, bool isEnd = true) + { + List listResult = new List(); + T_BS_OPERATE_LOG modelLogUpdate = null; + switch (OPERATEPOINT) + { + case OPERATEPOINT_Enums.GotCheck: + //系统触发 只是新增 + if (ListUserID != null && ListUserName != null) + for (int i = 0; i < ListUserID.Count; i++) + listResult.Add(AddModel(OPERATEPOINT, ListDATA_ID[i], ListUserID[i], ListUserName[i], ORG_ID, i)); + break; + case OPERATEPOINT_Enums.CheckForm: + //BS032保存并发送 到审批流 + modelLogUpdate = GetUpdateDeal(OPERATEPOINT_Enums.GotCheck, DATA_ID, UserIDLogin); + if (modelLogUpdate != null) + listResult.Add(modelLogUpdate); + if (ListUserID != null && ListUserName != null) + for (int i = 0; i < ListUserID.Count; i++) + listResult.Add(AddModel(OPERATEPOINT, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i)); + break; + case OPERATEPOINT_Enums.CheckAudit: + modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的待办日志 + if (modelLogUpdate != null) + listResult.Add(modelLogUpdate); + if (ListUserID != null && ListUserName != null) + for (int i = 0; i < ListUserID.Count; i++)//最后一个审批人 添加 通知 + listResult.Add(AddModel(OPERATEPOINT_Enums.CheckerCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i)); + break; + case OPERATEPOINT_Enums.CheckerCheck: + modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的 + if (modelLogUpdate != null) + listResult.Add(modelLogUpdate); + break; + case OPERATEPOINT_Enums.CheckRegister: + //检查登记 + modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的 + if (modelLogUpdate != null) + listResult.Add(modelLogUpdate); + if (ListUserID != null && ListUserName != null) + for (int i = 0; i < ListUserID.Count; i++) //发起检查结果确认 + listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAgree, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i)); + break; + case OPERATEPOINT_Enums.CheckAgree: + modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的 + if (modelLogUpdate != null) + listResult.Add(modelLogUpdate); + if (ListUserID != null && ListUserName != null) + for (int i = 0; i < ListUserID.Count; i++) //检查结果确认完 直接到审批 + listResult.Add(AddModel(OPERATEPOINT_Enums.CheckResultAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i)); + break; + case OPERATEPOINT_Enums.CheckResultAudit: + modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的 + if (modelLogUpdate != null) + listResult.Add(modelLogUpdate); + if (isEnd) //最后一个审批就归档 + { + listResult.Add(AddModel(OPERATEPOINT_Enums.CheckEnd, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID)); + } + break; + case OPERATEPOINT_Enums.CheckEnd: + //此处没操作 + break; + case OPERATEPOINT_Enums.RiskNoticeSD: + break; + case OPERATEPOINT_Enums.RiskUpSD: + break; + case OPERATEPOINT_Enums.RiskInfoCompleteSD: + break; + case OPERATEPOINT_Enums.RiskGet: + //审批结束后 如果有隐患 + if (ListUserID != null && ListUserName != null) + for (int i = 0; i < ListUserID.Count; i++) + listResult.Add(AddModel(OPERATEPOINT, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i)); + break; + case OPERATEPOINT_Enums.RiskSend: + break; + default: + break; + } + if (ListUserIDDone != null && ListUserIDDone.Count > 0) + { + //除了登陆者 需要默认操作的 + listResult.ForEach(e => + { + if (ListUserIDDone.Contains(e.USER_ID)) + e.OPERTETIME = DateTime.Now; + }); + } + return listResult; + } + + + /// + /// 获取新记录 + /// + /// + /// + /// + /// + /// + /// + private T_BS_OPERATE_LOG AddModel(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, string UserName, Guid? ORG_ID, int ORDERNO = 0) + { + T_BS_OPERATE_LOG ModelAdd = new T_BS_OPERATE_LOG() + { + ID = Guid.NewGuid(), + ORG_ID = ORG_ID, + LOGTYPE = ((int)OPERATEPOINT) > 80 ? LOGTYPE_Enums.RiskSubmit : LOGTYPE_Enums.SafeCheck, + DATA_ID = DATA_ID, + //DATA_ID_SUB = null, + OPERATEPOINT = OPERATEPOINT, + USER_ID = UserID, + USRTNAME = UserName, + ORDERNO = ORDERNO, + //OPERTETIME = null, + ISINTTIME = false, + CREATE_TIME = DateTime.Now, + CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID + }; + if (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue && APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value == UserID) + { + ModelAdd.OPERTETIME = DateTime.Now;//默认通过 + } + return ModelAdd; + } + + /// + /// 获取需要修改的Model + /// + /// 操作节点 + /// + /// + /// + /// + private T_BS_OPERATE_LOG GetUpdateDeal(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, Guid? DATA_ID_SUB = null) + { + Expression> expression = e => e.DATA_ID == DATA_ID && e.OPERATEPOINT == OPERATEPOINT && e.USER_ID == UserID; + if (DATA_ID_SUB.HasValue) + expression = expression.And(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB == DATA_ID_SUB); + var model = GetEntity(expression); + if (model != null) + model.OPERTETIME = DateTime.Now; + return model; + } + #endregion } } diff --git a/APT.MS.Data/Mapping/T4/T4Map.cs b/APT.MS.Data/Mapping/T4/T4Map.cs index 772f2cf..21ad25e 100644 --- a/APT.MS.Data/Mapping/T4/T4Map.cs +++ b/APT.MS.Data/Mapping/T4/T4Map.cs @@ -352,6 +352,7 @@ builder.HasOne(t => t.Nav_Department).WithMany().HasForeignKey(t => t.DEPARTMENT builder.HasOne(t => t.Nav_ApproveCheckAudit).WithMany().HasForeignKey(t => t.APPROVE_ID).OnDelete(DeleteBehavior.Restrict); builder.Ignore(t => t.FORM_CODE); builder.Ignore(t => t.IS_OVERTIME); +builder.Ignore(t => t.CREATE_NAME); } } #endregion diff --git a/APT.MS.Domain/Entities/BS/T_BS_RISK_SUBMIT.cs b/APT.MS.Domain/Entities/BS/T_BS_RISK_SUBMIT.cs index d1b4c48..6ee8281 100644 --- a/APT.MS.Domain/Entities/BS/T_BS_RISK_SUBMIT.cs +++ b/APT.MS.Domain/Entities/BS/T_BS_RISK_SUBMIT.cs @@ -207,5 +207,18 @@ namespace APT.MS.Domain.Entities.BS public bool? ISFINISHINTTIME { get; set; } [DataFieldIngore] public int IS_OVERTIME { get; set; } + + + /// + /// 外界ID(TPM) + /// + public Guid? DATAID { get; set; } + + /// + /// 完善人 + /// + [Description("完善人")] + [DataFieldIngore] + public string CREATE_NAME { get; set; } } } \ No newline at end of file diff --git a/APT.MS.Domain/Entities/BS/T_BS_RISK_SUBMIT_CONTENT.cs b/APT.MS.Domain/Entities/BS/T_BS_RISK_SUBMIT_CONTENT.cs index 54fc21c..4cd936e 100644 --- a/APT.MS.Domain/Entities/BS/T_BS_RISK_SUBMIT_CONTENT.cs +++ b/APT.MS.Domain/Entities/BS/T_BS_RISK_SUBMIT_CONTENT.cs @@ -13,6 +13,7 @@ namespace APT.MS.Domain.Entities.BS /// 隐患上报明细 隐患上报子表(关联检查内容) /// [Description("隐患上报明细")] + [DataRuleField("DEPARTMENT_ID")] public class T_BS_RISK_SUBMIT_CONTENT : MesEntityBase { /// diff --git a/APT.MS.Domain/IServices/BS/IBSOperateLogService.cs b/APT.MS.Domain/IServices/BS/IBSOperateLogService.cs index 6167bcd..e25767e 100644 --- a/APT.MS.Domain/IServices/BS/IBSOperateLogService.cs +++ b/APT.MS.Domain/IServices/BS/IBSOperateLogService.cs @@ -1,11 +1,12 @@ -using APT.MS.Domain.Entities.BS; +using APT.Infrastructure.Api; +using APT.MS.Domain.Entities.BS; using APT.MS.Domain.Enums; using System; using System.Collections.Generic; -namespace APT.BaseData.Domain.IServices.BS +namespace APT.BaseData.Domain.IServices { - public interface IBSOperateLogService + public interface IBSOperateLogService { /// /// 直接添加多个操作 diff --git a/APT.MS.Domain/IServices/SC/MEETING/IPFApproveCallBackService.cs b/APT.MS.Domain/IServices/SC/MEETING/IPFApproveCallBackService.cs index 0ab435b..6115e99 100644 --- a/APT.MS.Domain/IServices/SC/MEETING/IPFApproveCallBackService.cs +++ b/APT.MS.Domain/IServices/SC/MEETING/IPFApproveCallBackService.cs @@ -25,6 +25,6 @@ namespace APT.BaseData.Domain.IServices /// /// /// - void GetEntityInfo(Guid MEETINGID, string NAME, string THEME, string CODE, Guid? ORG_ID, Guid DEPARTMENT_ID, int? DEPARTMENT_TYPE, Guid USER_ID_ORIGINATOR, CREACTTYPEEnum CREACTTYPE, SCMEETINGTYPE MEETINGTYPE, IEnumerable listUserID, out T_SC_MT_MEETING entity, out List listAllUser); + List GetEntityInfo(Guid MEETINGID, string NAME, string THEME, string CODE, Guid? ORG_ID, Guid DEPARTMENT_ID, int? DEPARTMENT_TYPE, Guid USER_ID_ORIGINATOR, CREACTTYPEEnum CREACTTYPE, SCMEETINGTYPE MEETINGTYPE, IEnumerable listUserID, out T_SC_MT_MEETING entity); } } diff --git a/APT.MS.Services/Services/BS/BSOperateLogService.cs b/APT.MS.Services/Services/BS/BSOperateLogService.cs index b667b24..2ca3dea 100644 --- a/APT.MS.Services/Services/BS/BSOperateLogService.cs +++ b/APT.MS.Services/Services/BS/BSOperateLogService.cs @@ -16,7 +16,7 @@ using APT.BaseData.Domain.IServices.BS; using APT.MS.Domain.Entities.BS; -namespace APT.BaseData.Services.Services.BS +namespace APT.BaseData.Services.DomainServices { /// /// 安全检查 @@ -185,9 +185,7 @@ namespace APT.BaseData.Services.Services.BS expression = expression.And(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB == DATA_ID_SUB); var model = GetEntity(expression); if (model != null) - { model.OPERTETIME = DateTime.Now; - } return model; } diff --git a/APT.MS.Services/Services/SC/MEETING/SCMTMeetingService.cs b/APT.MS.Services/Services/SC/MEETING/SCMTMeetingService.cs index bc70e8b..8d56010 100644 --- a/APT.MS.Services/Services/SC/MEETING/SCMTMeetingService.cs +++ b/APT.MS.Services/Services/SC/MEETING/SCMTMeetingService.cs @@ -48,13 +48,13 @@ namespace APT.BaseData.Services.DomainServices /// /// /// - public void GetEntityInfo(Guid MEETINGID, string NAME, string THEME, string CODE, Guid? ORG_ID, Guid DEPARTMENT_ID, int? DEPARTMENT_TYPE, Guid USER_ID_ORIGINATOR, CREACTTYPEEnum CREACTTYPE, SCMEETINGTYPE MEETINGTYPE, IEnumerable listUserID, out T_SC_MT_MEETING entity, out List listAllUser) + public List GetEntityInfo(Guid MEETINGID, string NAME, string THEME, string CODE, Guid? ORG_ID, Guid DEPARTMENT_ID, int? DEPARTMENT_TYPE, Guid USER_ID_ORIGINATOR, CREACTTYPEEnum CREACTTYPE, SCMEETINGTYPE MEETINGTYPE, IEnumerable listUserID, out T_SC_MT_MEETING entity) { - listAllUser = new List(); + var listAllUser = new List(); entity = new T_SC_MT_MEETING(); if (listUserID == null || !listUserID.Any()) { - return; + return listAllUser; } if (listUserID != null && listUserID.Any()) { @@ -119,6 +119,7 @@ namespace APT.BaseData.Services.DomainServices modelUser.PERSONNATURE = PersonNature.JOIN; listAllUser.Add(modelUser); } + return listAllUser; } } } diff --git a/APT.MicroApi/APT.BD.WebApi/Models/APIAttributeActionFilter.cs b/APT.MicroApi/APT.BD.WebApi/Models/APIAttributeActionFilter.cs index efc0869..816c04e 100644 --- a/APT.MicroApi/APT.BD.WebApi/Models/APIAttributeActionFilter.cs +++ b/APT.MicroApi/APT.BD.WebApi/Models/APIAttributeActionFilter.cs @@ -65,58 +65,59 @@ namespace APT.WebApi.Models } } - var TalSeconds = (DateTime.Now - START_TIME).TotalSeconds; - //if (TalSeconds > 1) - //{ - T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() + double TalSeconds = (DateTime.Now - START_TIME).TotalSeconds; + if (TalSeconds > 0.8) { - ID = Guid.NewGuid(), - START_TIME = START_TIME, - END_TIME = DateTime.Now, - API_NAME = context.HttpContext.Request.Path, - DATA_COUNT = 0, - IS_SUCCESS = true, - IS_DELETED = false, - ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, - ENTITY_ORG_TPYE = 0, - FLOW_STATUS = 0, - FLOW_SEND_STATUS = 0, - //CREATE_TIME = DateTime.Now, - //MODIFY_TIME = DateTime.Now, - TRACEIDENTIFIER = TRACEIDENTIFIER, - TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, - ISINSERT = false, - LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, - //FLOW_ID = ID, - //FORM_ID = ID, - CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, - //MODIFIER_ID = ID, - //SYNC_PARAM = SYNC_PARAM, - //LOGTYPE = ID, - SYNC_PARAM = TalSeconds.ToString() - }; - - - Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); - Type TUnitOfWork = UnitOfWork.GetType(); - PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - List listInfo = new List(); - TenantInfo tenantInfo = null; - foreach (var prop in props) - { - if (prop.Name == "TenantInfo") + T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() { - var fdsafd = prop.GetValue(UnitOfWork); - tenantInfo = (TenantInfo)fdsafd; - break; + ID = Guid.NewGuid(), + START_TIME = START_TIME, + END_TIME = DateTime.Now, + API_NAME = context.HttpContext.Request.Path, + DATA_COUNT = 0, + IS_SUCCESS = true, + IS_DELETED = false, + ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, + ENTITY_ORG_TPYE = 0, + FLOW_STATUS = 0, + FLOW_SEND_STATUS = 0, + //CREATE_TIME = DateTime.Now, + //MODIFY_TIME = DateTime.Now, + TRACEIDENTIFIER = TRACEIDENTIFIER, + TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, + ISINSERT = false, + LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, + //FLOW_ID = ID, + //FORM_ID = ID, + CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, + //MODIFIER_ID = ID, + //SYNC_PARAM = SYNC_PARAM, + //LOGTYPE = ID, + SYNC_PARAM = TalSeconds.ToString() + }; + + + Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); + Type TUnitOfWork = UnitOfWork.GetType(); + PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + List listInfo = new List(); + TenantInfo tenantInfo = null; + foreach (var prop in props) + { + if (prop.Name == "TenantInfo") + { + var fdsafd = prop.GetValue(UnitOfWork); + tenantInfo = (TenantInfo)fdsafd; + break; + } } - } - if (!string.IsNullOrEmpty(tenantInfo.Conn)) - { - using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + if (!string.IsNullOrEmpty(tenantInfo.Conn)) { - contextCnn.AddEntity(log); - contextCnn.SaveChanges(); + using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + { + contextCnn.AddEntity(log); + contextCnn.SaveChanges(); + } } } } diff --git a/APT.MicroApi/APT.BD.WebApi/log4net.config b/APT.MicroApi/APT.BD.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.BD.WebApi/log4net.config +++ b/APT.MicroApi/APT.BD.WebApi/log4net.config @@ -19,7 +19,7 @@ - + diff --git a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitContentDealController.cs b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitContentDealController.cs index 683d7d5..57abc8d 100644 --- a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitContentDealController.cs +++ b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitContentDealController.cs @@ -56,11 +56,11 @@ namespace APT.BS.WebApi.Controllers.Api } } filter.Include = Include; - - List filterRules = filter.FilterGroup.Rules.ToList(); - var guid = new Guid(filterRules[0].Value.ToString()); - var modelSubConDel = GetEntity(e => e.ID == guid, filter); - + var modelSubConDel = GetEntity(null, filter); + if (modelSubConDel == null) + { + throw new Exception("获取整改单信息失败!"); + } List listUserID = new List(); if (modelSubConDel.DEAL_USER_ID.HasValue) listUserID.Add(modelSubConDel.DEAL_USER_ID.Value); diff --git a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs index e750d25..2ac93ec 100644 --- a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs +++ b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs @@ -4099,6 +4099,21 @@ namespace APT.BS.WebApi.Controllers.Api //Expression> expression = e => !e.IS_DELETED && e.DEPARTMENT_ID.HasValue && departmentIds.Contains(e.DEPARTMENT_ID.Value); PagedActionResult orderPageEntities = GetOrderPageEntities(expression, pageFilter, null); + if (orderPageEntities.TotalCount > 0) + { + var listCreateID = orderPageEntities.Data.Where(e => e.CREATER_ID.HasValue).Select(e => e.CREATER_ID.Value).Distinct(); + if (listCreateID != null && listCreateID.Any()) + { + var listUser = GetEntities(e => listCreateID.Contains(e.ID), null, null); + foreach (var item in orderPageEntities.Data) + { + if (!item.CREATER_ID.HasValue) + continue; + item.CREATE_NAME = listUser.FirstOrDefault(e => e.ID == item.CREATER_ID.Value)?.NAME; + } + } + } + result.Data = orderPageEntities.Data; result.TotalCount = orderPageEntities.TotalCount; }); @@ -4854,8 +4869,9 @@ namespace APT.BS.WebApi.Controllers.Api } } - BaseFilter filterRiskContent = new BaseFilter(); + BaseFilter filterRiskContent = new BaseFilter(pageFilter.OrgId); filterRiskContent.SelectField = new List { "ID", "QUESTION_LEVEL", "RISK_AREA_ID", "CHECKCONTENT", "DESCREPTION" }; + filterRiskContent.IgnoreDataRule = true; var IlistRiskContent = GetEntities(expressionSC, filterRiskContent); BaseFilter filterArea = new BaseFilter(); @@ -5579,6 +5595,7 @@ namespace APT.BS.WebApi.Controllers.Api #endregion + #region 隐患上报 新版 @@ -6131,6 +6148,9 @@ namespace APT.BS.WebApi.Controllers.Api entity.STARTTIME = task.CREATE_TIME; } + //记录完善人信息 + entity.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; + entity.CREATE_TIME = DateTime.Now; if (entity.SUBMIT_STATUS == (int)BSSubmitStatusEnum.Temp) { this.UnifiedCommit(() => diff --git a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSSafeCheckController.cs b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSSafeCheckController.cs index e76b7c4..4a79776 100644 --- a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSSafeCheckController.cs +++ b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSSafeCheckController.cs @@ -1879,23 +1879,26 @@ namespace APT.BS.WebApi.Controllers.Api item.Nav_Standard = null; } } - if (DataHelper.GetRequestType(HttpContext.Response.Headers) == 2) + //var requestType = DataHelper.GetRequestType(HttpContext.Response.Headers); + //if (DataHelper.GetRequestType(HttpContext.Response.Headers) == 2) + //{ + if (listDetail != null && listDetail.Count > 0) { foreach (var item in listDetail) { if (item.Nav_SafeCheck != null) - { item.Nav_SafeCheck = null; - } - } - if (listDetailLaw != null && listDetailLaw.Count > 0) - { - foreach (var item in listDetailLaw) - { - item.Nav_Standard = null; - } } } + if (listDetailLaw != null && listDetailLaw.Count > 0) + { + foreach (var item in listDetailLaw) + { + if (item.Nav_Standard != null) + item.Nav_Standard = null; + } + } + //} if (entity.STATUSPLAN == 0) { @@ -7285,6 +7288,7 @@ namespace APT.BS.WebApi.Controllers.Api break; } + //var iListCheck = GetEntities(expressionCheck, null, "Nav_Department", "Nav_CheckType", "Nav_CheckTypeLevel.Nav_Enums").Select(e => new T_BS_SAFE_CHECK_SUM() //{ // ID = e.ID.ToString() + "_", diff --git a/APT.MicroApi/APT.BS.WebApi/Models/APIAttributeActionFilter.cs b/APT.MicroApi/APT.BS.WebApi/Models/APIAttributeActionFilter.cs index 866a8fd..b7db671 100644 --- a/APT.MicroApi/APT.BS.WebApi/Models/APIAttributeActionFilter.cs +++ b/APT.MicroApi/APT.BS.WebApi/Models/APIAttributeActionFilter.cs @@ -45,6 +45,53 @@ namespace APT.WebApi.Models//APT.BS.WebApi.Models { try { + #region 操作记录 + + //var API_NAME = context.HttpContext.Request.Path; + //bool isRecord = false; + ////switch (API_NAME) + ////{ + //// case "": + //// isRecord = true; + //// break; + //// default: + //// break; + ////} + ////isRecord = true; + //if (isRecord) + //{ + // //避免不需要的反射 + + // //bool? IsSuccessful = null; + // //try + // //{ + // // IsSuccessful = ((APT.Infrastructure.Core.JsonActionResult`1[System.Boolean])((Microsoft.AspNetCore.Mvc.ObjectResult)context.Result).Value).IsSuccessful; + // //} + // //catch { } + // var ResultValue = ((Microsoft.AspNetCore.Mvc.ObjectResult)context.Result).Value; + // Type TResultValue = ResultValue.GetType(); + // bool? IsSuccessful = null; + // PropertyInfo[] propsVal = TResultValue.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + // foreach (var prop in propsVal) + // { + // if (prop.Name == "IsSuccessful") + // { + // var fdsafd = prop.GetValue(ResultValue); + // IsSuccessful = (bool)fdsafd; + // break; + // } + // } + // if (IsSuccessful.HasValue && IsSuccessful.Value) + // { + // //执行成功记录操作结果 + + // } + //} + + #endregion + #region T_FM_SYNC_LOG 获取 + + T_FM_SYNC_LOG log = null; if (context.HttpContext.Items != null && context.HttpContext.Items.ContainsKey("1")) { DateTime START_TIME = DateTime.Now; @@ -64,37 +111,47 @@ namespace APT.WebApi.Models//APT.BS.WebApi.Models } } double SYNC_PARAM = (DateTime.Now - START_TIME).TotalSeconds; - T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() + if (SYNC_PARAM > 0.8) { - ID = Guid.NewGuid(), - START_TIME = START_TIME, - END_TIME = DateTime.Now, - API_NAME = context.HttpContext.Request.Path, - DATA_COUNT = 0, - IS_SUCCESS = true, - IS_DELETED = false, - ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, - ENTITY_ORG_TPYE = 0, - FLOW_STATUS = 0, - FLOW_SEND_STATUS = 0, - //CREATE_TIME = DateTime.Now, - //MODIFY_TIME = DateTime.Now, - TRACEIDENTIFIER = TRACEIDENTIFIER, - TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, - ISINSERT = false, - LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, - //FLOW_ID = ID, - //FORM_ID = ID, - CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, - //MODIFIER_ID = ID, - //SYNC_PARAM = SYNC_PARAM, - //LOGTYPE = ID, - SYNC_PARAM = SYNC_PARAM.ToString() - }; + log = new T_FM_SYNC_LOG() + { + ID = Guid.NewGuid(), + START_TIME = START_TIME, + END_TIME = DateTime.Now, + API_NAME = context.HttpContext.Request.Path, + DATA_COUNT = 0, + IS_SUCCESS = true, + IS_DELETED = false, + ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, + ENTITY_ORG_TPYE = 0, + FLOW_STATUS = 0, + FLOW_SEND_STATUS = 0, + //CREATE_TIME = DateTime.Now, + //MODIFY_TIME = DateTime.Now, + TRACEIDENTIFIER = TRACEIDENTIFIER, + TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, + ISINSERT = false, + LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, + //FLOW_ID = ID, + //FORM_ID = ID, + CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, + //MODIFIER_ID = ID, + //SYNC_PARAM = SYNC_PARAM, + //LOGTYPE = ID, + SYNC_PARAM = SYNC_PARAM.ToString() + }; - //var commonService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); - //commonService.AddEntity(log); + //var commonService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); + //commonService.AddEntity(log); + } + } + + #endregion + #region 数据库操作 + + if (log != null)//增加别的判断 (log != null||(isRecord&& !=null )) + { Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); Type TUnitOfWork = UnitOfWork.GetType(); PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); @@ -118,6 +175,8 @@ namespace APT.WebApi.Models//APT.BS.WebApi.Models } } } + + #endregion } catch { diff --git a/APT.MicroApi/APT.BS.WebApi/Startup.cs b/APT.MicroApi/APT.BS.WebApi/Startup.cs index 5d3a004..ae47b47 100644 --- a/APT.MicroApi/APT.BS.WebApi/Startup.cs +++ b/APT.MicroApi/APT.BS.WebApi/Startup.cs @@ -99,6 +99,7 @@ namespace APT.BS.WebApi services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All)); //UpdateDatabase(); services.RegisterBearAuth(); + services.AddControllers(o => o.Filters.Add(typeof(APIAttributeActionFilter))); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/APT.MicroApi/APT.BS.WebApi/log4net.config b/APT.MicroApi/APT.BS.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.BS.WebApi/log4net.config +++ b/APT.MicroApi/APT.BS.WebApi/log4net.config @@ -19,7 +19,7 @@ - + diff --git a/APT.MicroApi/APT.FM.WebApi/Models/APIAttributeActionFilter.cs b/APT.MicroApi/APT.FM.WebApi/Models/APIAttributeActionFilter.cs index efc0869..59c1096 100644 --- a/APT.MicroApi/APT.FM.WebApi/Models/APIAttributeActionFilter.cs +++ b/APT.MicroApi/APT.FM.WebApi/Models/APIAttributeActionFilter.cs @@ -66,57 +66,58 @@ namespace APT.WebApi.Models } var TalSeconds = (DateTime.Now - START_TIME).TotalSeconds; - //if (TalSeconds > 1) - //{ - T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() + if (TalSeconds > 0.8) { - ID = Guid.NewGuid(), - START_TIME = START_TIME, - END_TIME = DateTime.Now, - API_NAME = context.HttpContext.Request.Path, - DATA_COUNT = 0, - IS_SUCCESS = true, - IS_DELETED = false, - ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, - ENTITY_ORG_TPYE = 0, - FLOW_STATUS = 0, - FLOW_SEND_STATUS = 0, - //CREATE_TIME = DateTime.Now, - //MODIFY_TIME = DateTime.Now, - TRACEIDENTIFIER = TRACEIDENTIFIER, - TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, - ISINSERT = false, - LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, - //FLOW_ID = ID, - //FORM_ID = ID, - CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, - //MODIFIER_ID = ID, - //SYNC_PARAM = SYNC_PARAM, - //LOGTYPE = ID, - SYNC_PARAM = TalSeconds.ToString() - }; - - - Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); - Type TUnitOfWork = UnitOfWork.GetType(); - PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - List listInfo = new List(); - TenantInfo tenantInfo = null; - foreach (var prop in props) - { - if (prop.Name == "TenantInfo") + T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() { - var fdsafd = prop.GetValue(UnitOfWork); - tenantInfo = (TenantInfo)fdsafd; - break; + ID = Guid.NewGuid(), + START_TIME = START_TIME, + END_TIME = DateTime.Now, + API_NAME = context.HttpContext.Request.Path, + DATA_COUNT = 0, + IS_SUCCESS = true, + IS_DELETED = false, + ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, + ENTITY_ORG_TPYE = 0, + FLOW_STATUS = 0, + FLOW_SEND_STATUS = 0, + //CREATE_TIME = DateTime.Now, + //MODIFY_TIME = DateTime.Now, + TRACEIDENTIFIER = TRACEIDENTIFIER, + TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, + ISINSERT = false, + LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, + //FLOW_ID = ID, + //FORM_ID = ID, + CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, + //MODIFIER_ID = ID, + //SYNC_PARAM = SYNC_PARAM, + //LOGTYPE = ID, + SYNC_PARAM = TalSeconds.ToString() + }; + + + Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); + Type TUnitOfWork = UnitOfWork.GetType(); + PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + List listInfo = new List(); + TenantInfo tenantInfo = null; + foreach (var prop in props) + { + if (prop.Name == "TenantInfo") + { + var fdsafd = prop.GetValue(UnitOfWork); + tenantInfo = (TenantInfo)fdsafd; + break; + } } - } - if (!string.IsNullOrEmpty(tenantInfo.Conn)) - { - using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + if (!string.IsNullOrEmpty(tenantInfo.Conn)) { - contextCnn.AddEntity(log); - contextCnn.SaveChanges(); + using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + { + contextCnn.AddEntity(log); + contextCnn.SaveChanges(); + } } } } diff --git a/APT.MicroApi/APT.FM.WebApi/log4net.config b/APT.MicroApi/APT.FM.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.FM.WebApi/log4net.config +++ b/APT.MicroApi/APT.FM.WebApi/log4net.config @@ -19,7 +19,7 @@ - + diff --git a/APT.MicroApi/APT.FO.WebApi/Models/APIAttributeActionFilter.cs b/APT.MicroApi/APT.FO.WebApi/Models/APIAttributeActionFilter.cs index efc0869..59c1096 100644 --- a/APT.MicroApi/APT.FO.WebApi/Models/APIAttributeActionFilter.cs +++ b/APT.MicroApi/APT.FO.WebApi/Models/APIAttributeActionFilter.cs @@ -66,57 +66,58 @@ namespace APT.WebApi.Models } var TalSeconds = (DateTime.Now - START_TIME).TotalSeconds; - //if (TalSeconds > 1) - //{ - T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() + if (TalSeconds > 0.8) { - ID = Guid.NewGuid(), - START_TIME = START_TIME, - END_TIME = DateTime.Now, - API_NAME = context.HttpContext.Request.Path, - DATA_COUNT = 0, - IS_SUCCESS = true, - IS_DELETED = false, - ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, - ENTITY_ORG_TPYE = 0, - FLOW_STATUS = 0, - FLOW_SEND_STATUS = 0, - //CREATE_TIME = DateTime.Now, - //MODIFY_TIME = DateTime.Now, - TRACEIDENTIFIER = TRACEIDENTIFIER, - TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, - ISINSERT = false, - LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, - //FLOW_ID = ID, - //FORM_ID = ID, - CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, - //MODIFIER_ID = ID, - //SYNC_PARAM = SYNC_PARAM, - //LOGTYPE = ID, - SYNC_PARAM = TalSeconds.ToString() - }; - - - Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); - Type TUnitOfWork = UnitOfWork.GetType(); - PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - List listInfo = new List(); - TenantInfo tenantInfo = null; - foreach (var prop in props) - { - if (prop.Name == "TenantInfo") + T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() { - var fdsafd = prop.GetValue(UnitOfWork); - tenantInfo = (TenantInfo)fdsafd; - break; + ID = Guid.NewGuid(), + START_TIME = START_TIME, + END_TIME = DateTime.Now, + API_NAME = context.HttpContext.Request.Path, + DATA_COUNT = 0, + IS_SUCCESS = true, + IS_DELETED = false, + ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, + ENTITY_ORG_TPYE = 0, + FLOW_STATUS = 0, + FLOW_SEND_STATUS = 0, + //CREATE_TIME = DateTime.Now, + //MODIFY_TIME = DateTime.Now, + TRACEIDENTIFIER = TRACEIDENTIFIER, + TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, + ISINSERT = false, + LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, + //FLOW_ID = ID, + //FORM_ID = ID, + CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, + //MODIFIER_ID = ID, + //SYNC_PARAM = SYNC_PARAM, + //LOGTYPE = ID, + SYNC_PARAM = TalSeconds.ToString() + }; + + + Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); + Type TUnitOfWork = UnitOfWork.GetType(); + PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + List listInfo = new List(); + TenantInfo tenantInfo = null; + foreach (var prop in props) + { + if (prop.Name == "TenantInfo") + { + var fdsafd = prop.GetValue(UnitOfWork); + tenantInfo = (TenantInfo)fdsafd; + break; + } } - } - if (!string.IsNullOrEmpty(tenantInfo.Conn)) - { - using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + if (!string.IsNullOrEmpty(tenantInfo.Conn)) { - contextCnn.AddEntity(log); - contextCnn.SaveChanges(); + using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + { + contextCnn.AddEntity(log); + contextCnn.SaveChanges(); + } } } } diff --git a/APT.MicroApi/APT.FO.WebApi/log4net.config b/APT.MicroApi/APT.FO.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.FO.WebApi/log4net.config +++ b/APT.MicroApi/APT.FO.WebApi/log4net.config @@ -19,7 +19,7 @@ - + diff --git a/APT.MicroApi/APT.HM.WebApi/Models/APIAttributeActionFilter.cs b/APT.MicroApi/APT.HM.WebApi/Models/APIAttributeActionFilter.cs index efc0869..59c1096 100644 --- a/APT.MicroApi/APT.HM.WebApi/Models/APIAttributeActionFilter.cs +++ b/APT.MicroApi/APT.HM.WebApi/Models/APIAttributeActionFilter.cs @@ -66,57 +66,58 @@ namespace APT.WebApi.Models } var TalSeconds = (DateTime.Now - START_TIME).TotalSeconds; - //if (TalSeconds > 1) - //{ - T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() + if (TalSeconds > 0.8) { - ID = Guid.NewGuid(), - START_TIME = START_TIME, - END_TIME = DateTime.Now, - API_NAME = context.HttpContext.Request.Path, - DATA_COUNT = 0, - IS_SUCCESS = true, - IS_DELETED = false, - ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, - ENTITY_ORG_TPYE = 0, - FLOW_STATUS = 0, - FLOW_SEND_STATUS = 0, - //CREATE_TIME = DateTime.Now, - //MODIFY_TIME = DateTime.Now, - TRACEIDENTIFIER = TRACEIDENTIFIER, - TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, - ISINSERT = false, - LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, - //FLOW_ID = ID, - //FORM_ID = ID, - CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, - //MODIFIER_ID = ID, - //SYNC_PARAM = SYNC_PARAM, - //LOGTYPE = ID, - SYNC_PARAM = TalSeconds.ToString() - }; - - - Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); - Type TUnitOfWork = UnitOfWork.GetType(); - PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - List listInfo = new List(); - TenantInfo tenantInfo = null; - foreach (var prop in props) - { - if (prop.Name == "TenantInfo") + T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() { - var fdsafd = prop.GetValue(UnitOfWork); - tenantInfo = (TenantInfo)fdsafd; - break; + ID = Guid.NewGuid(), + START_TIME = START_TIME, + END_TIME = DateTime.Now, + API_NAME = context.HttpContext.Request.Path, + DATA_COUNT = 0, + IS_SUCCESS = true, + IS_DELETED = false, + ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, + ENTITY_ORG_TPYE = 0, + FLOW_STATUS = 0, + FLOW_SEND_STATUS = 0, + //CREATE_TIME = DateTime.Now, + //MODIFY_TIME = DateTime.Now, + TRACEIDENTIFIER = TRACEIDENTIFIER, + TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, + ISINSERT = false, + LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, + //FLOW_ID = ID, + //FORM_ID = ID, + CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, + //MODIFIER_ID = ID, + //SYNC_PARAM = SYNC_PARAM, + //LOGTYPE = ID, + SYNC_PARAM = TalSeconds.ToString() + }; + + + Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); + Type TUnitOfWork = UnitOfWork.GetType(); + PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + List listInfo = new List(); + TenantInfo tenantInfo = null; + foreach (var prop in props) + { + if (prop.Name == "TenantInfo") + { + var fdsafd = prop.GetValue(UnitOfWork); + tenantInfo = (TenantInfo)fdsafd; + break; + } } - } - if (!string.IsNullOrEmpty(tenantInfo.Conn)) - { - using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + if (!string.IsNullOrEmpty(tenantInfo.Conn)) { - contextCnn.AddEntity(log); - contextCnn.SaveChanges(); + using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + { + contextCnn.AddEntity(log); + contextCnn.SaveChanges(); + } } } } diff --git a/APT.MicroApi/APT.HM.WebApi/log4net.config b/APT.MicroApi/APT.HM.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.HM.WebApi/log4net.config +++ b/APT.MicroApi/APT.HM.WebApi/log4net.config @@ -19,7 +19,7 @@ - + diff --git a/APT.MicroApi/APT.LG.WebApi/Models/APIAttributeActionFilter.cs b/APT.MicroApi/APT.LG.WebApi/Models/APIAttributeActionFilter.cs index efc0869..59c1096 100644 --- a/APT.MicroApi/APT.LG.WebApi/Models/APIAttributeActionFilter.cs +++ b/APT.MicroApi/APT.LG.WebApi/Models/APIAttributeActionFilter.cs @@ -66,57 +66,58 @@ namespace APT.WebApi.Models } var TalSeconds = (DateTime.Now - START_TIME).TotalSeconds; - //if (TalSeconds > 1) - //{ - T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() + if (TalSeconds > 0.8) { - ID = Guid.NewGuid(), - START_TIME = START_TIME, - END_TIME = DateTime.Now, - API_NAME = context.HttpContext.Request.Path, - DATA_COUNT = 0, - IS_SUCCESS = true, - IS_DELETED = false, - ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, - ENTITY_ORG_TPYE = 0, - FLOW_STATUS = 0, - FLOW_SEND_STATUS = 0, - //CREATE_TIME = DateTime.Now, - //MODIFY_TIME = DateTime.Now, - TRACEIDENTIFIER = TRACEIDENTIFIER, - TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, - ISINSERT = false, - LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, - //FLOW_ID = ID, - //FORM_ID = ID, - CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, - //MODIFIER_ID = ID, - //SYNC_PARAM = SYNC_PARAM, - //LOGTYPE = ID, - SYNC_PARAM = TalSeconds.ToString() - }; - - - Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); - Type TUnitOfWork = UnitOfWork.GetType(); - PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - List listInfo = new List(); - TenantInfo tenantInfo = null; - foreach (var prop in props) - { - if (prop.Name == "TenantInfo") + T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() { - var fdsafd = prop.GetValue(UnitOfWork); - tenantInfo = (TenantInfo)fdsafd; - break; + ID = Guid.NewGuid(), + START_TIME = START_TIME, + END_TIME = DateTime.Now, + API_NAME = context.HttpContext.Request.Path, + DATA_COUNT = 0, + IS_SUCCESS = true, + IS_DELETED = false, + ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, + ENTITY_ORG_TPYE = 0, + FLOW_STATUS = 0, + FLOW_SEND_STATUS = 0, + //CREATE_TIME = DateTime.Now, + //MODIFY_TIME = DateTime.Now, + TRACEIDENTIFIER = TRACEIDENTIFIER, + TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, + ISINSERT = false, + LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, + //FLOW_ID = ID, + //FORM_ID = ID, + CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, + //MODIFIER_ID = ID, + //SYNC_PARAM = SYNC_PARAM, + //LOGTYPE = ID, + SYNC_PARAM = TalSeconds.ToString() + }; + + + Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); + Type TUnitOfWork = UnitOfWork.GetType(); + PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + List listInfo = new List(); + TenantInfo tenantInfo = null; + foreach (var prop in props) + { + if (prop.Name == "TenantInfo") + { + var fdsafd = prop.GetValue(UnitOfWork); + tenantInfo = (TenantInfo)fdsafd; + break; + } } - } - if (!string.IsNullOrEmpty(tenantInfo.Conn)) - { - using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + if (!string.IsNullOrEmpty(tenantInfo.Conn)) { - contextCnn.AddEntity(log); - contextCnn.SaveChanges(); + using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + { + contextCnn.AddEntity(log); + contextCnn.SaveChanges(); + } } } } diff --git a/APT.MicroApi/APT.LG.WebApi/log4net.config b/APT.MicroApi/APT.LG.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.LG.WebApi/log4net.config +++ b/APT.MicroApi/APT.LG.WebApi/log4net.config @@ -19,7 +19,7 @@ - + diff --git a/APT.MicroApi/APT.NW.WebApi/Models/APIAttributeActionFilter.cs b/APT.MicroApi/APT.NW.WebApi/Models/APIAttributeActionFilter.cs index efc0869..59c1096 100644 --- a/APT.MicroApi/APT.NW.WebApi/Models/APIAttributeActionFilter.cs +++ b/APT.MicroApi/APT.NW.WebApi/Models/APIAttributeActionFilter.cs @@ -66,57 +66,58 @@ namespace APT.WebApi.Models } var TalSeconds = (DateTime.Now - START_TIME).TotalSeconds; - //if (TalSeconds > 1) - //{ - T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() + if (TalSeconds > 0.8) { - ID = Guid.NewGuid(), - START_TIME = START_TIME, - END_TIME = DateTime.Now, - API_NAME = context.HttpContext.Request.Path, - DATA_COUNT = 0, - IS_SUCCESS = true, - IS_DELETED = false, - ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, - ENTITY_ORG_TPYE = 0, - FLOW_STATUS = 0, - FLOW_SEND_STATUS = 0, - //CREATE_TIME = DateTime.Now, - //MODIFY_TIME = DateTime.Now, - TRACEIDENTIFIER = TRACEIDENTIFIER, - TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, - ISINSERT = false, - LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, - //FLOW_ID = ID, - //FORM_ID = ID, - CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, - //MODIFIER_ID = ID, - //SYNC_PARAM = SYNC_PARAM, - //LOGTYPE = ID, - SYNC_PARAM = TalSeconds.ToString() - }; - - - Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); - Type TUnitOfWork = UnitOfWork.GetType(); - PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - List listInfo = new List(); - TenantInfo tenantInfo = null; - foreach (var prop in props) - { - if (prop.Name == "TenantInfo") + T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() { - var fdsafd = prop.GetValue(UnitOfWork); - tenantInfo = (TenantInfo)fdsafd; - break; + ID = Guid.NewGuid(), + START_TIME = START_TIME, + END_TIME = DateTime.Now, + API_NAME = context.HttpContext.Request.Path, + DATA_COUNT = 0, + IS_SUCCESS = true, + IS_DELETED = false, + ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, + ENTITY_ORG_TPYE = 0, + FLOW_STATUS = 0, + FLOW_SEND_STATUS = 0, + //CREATE_TIME = DateTime.Now, + //MODIFY_TIME = DateTime.Now, + TRACEIDENTIFIER = TRACEIDENTIFIER, + TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, + ISINSERT = false, + LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, + //FLOW_ID = ID, + //FORM_ID = ID, + CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, + //MODIFIER_ID = ID, + //SYNC_PARAM = SYNC_PARAM, + //LOGTYPE = ID, + SYNC_PARAM = TalSeconds.ToString() + }; + + + Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); + Type TUnitOfWork = UnitOfWork.GetType(); + PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + List listInfo = new List(); + TenantInfo tenantInfo = null; + foreach (var prop in props) + { + if (prop.Name == "TenantInfo") + { + var fdsafd = prop.GetValue(UnitOfWork); + tenantInfo = (TenantInfo)fdsafd; + break; + } } - } - if (!string.IsNullOrEmpty(tenantInfo.Conn)) - { - using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + if (!string.IsNullOrEmpty(tenantInfo.Conn)) { - contextCnn.AddEntity(log); - contextCnn.SaveChanges(); + using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + { + contextCnn.AddEntity(log); + contextCnn.SaveChanges(); + } } } } diff --git a/APT.MicroApi/APT.NW.WebApi/log4net.config b/APT.MicroApi/APT.NW.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.NW.WebApi/log4net.config +++ b/APT.MicroApi/APT.NW.WebApi/log4net.config @@ -19,7 +19,7 @@ - + diff --git a/APT.MicroApi/APT.PF.WebApi/Models/APIAttributeActionFilter.cs b/APT.MicroApi/APT.PF.WebApi/Models/APIAttributeActionFilter.cs index efc0869..59c1096 100644 --- a/APT.MicroApi/APT.PF.WebApi/Models/APIAttributeActionFilter.cs +++ b/APT.MicroApi/APT.PF.WebApi/Models/APIAttributeActionFilter.cs @@ -66,57 +66,58 @@ namespace APT.WebApi.Models } var TalSeconds = (DateTime.Now - START_TIME).TotalSeconds; - //if (TalSeconds > 1) - //{ - T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() + if (TalSeconds > 0.8) { - ID = Guid.NewGuid(), - START_TIME = START_TIME, - END_TIME = DateTime.Now, - API_NAME = context.HttpContext.Request.Path, - DATA_COUNT = 0, - IS_SUCCESS = true, - IS_DELETED = false, - ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, - ENTITY_ORG_TPYE = 0, - FLOW_STATUS = 0, - FLOW_SEND_STATUS = 0, - //CREATE_TIME = DateTime.Now, - //MODIFY_TIME = DateTime.Now, - TRACEIDENTIFIER = TRACEIDENTIFIER, - TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, - ISINSERT = false, - LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, - //FLOW_ID = ID, - //FORM_ID = ID, - CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, - //MODIFIER_ID = ID, - //SYNC_PARAM = SYNC_PARAM, - //LOGTYPE = ID, - SYNC_PARAM = TalSeconds.ToString() - }; - - - Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); - Type TUnitOfWork = UnitOfWork.GetType(); - PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - List listInfo = new List(); - TenantInfo tenantInfo = null; - foreach (var prop in props) - { - if (prop.Name == "TenantInfo") + T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() { - var fdsafd = prop.GetValue(UnitOfWork); - tenantInfo = (TenantInfo)fdsafd; - break; + ID = Guid.NewGuid(), + START_TIME = START_TIME, + END_TIME = DateTime.Now, + API_NAME = context.HttpContext.Request.Path, + DATA_COUNT = 0, + IS_SUCCESS = true, + IS_DELETED = false, + ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, + ENTITY_ORG_TPYE = 0, + FLOW_STATUS = 0, + FLOW_SEND_STATUS = 0, + //CREATE_TIME = DateTime.Now, + //MODIFY_TIME = DateTime.Now, + TRACEIDENTIFIER = TRACEIDENTIFIER, + TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, + ISINSERT = false, + LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, + //FLOW_ID = ID, + //FORM_ID = ID, + CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, + //MODIFIER_ID = ID, + //SYNC_PARAM = SYNC_PARAM, + //LOGTYPE = ID, + SYNC_PARAM = TalSeconds.ToString() + }; + + + Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); + Type TUnitOfWork = UnitOfWork.GetType(); + PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + List listInfo = new List(); + TenantInfo tenantInfo = null; + foreach (var prop in props) + { + if (prop.Name == "TenantInfo") + { + var fdsafd = prop.GetValue(UnitOfWork); + tenantInfo = (TenantInfo)fdsafd; + break; + } } - } - if (!string.IsNullOrEmpty(tenantInfo.Conn)) - { - using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + if (!string.IsNullOrEmpty(tenantInfo.Conn)) { - contextCnn.AddEntity(log); - contextCnn.SaveChanges(); + using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + { + contextCnn.AddEntity(log); + contextCnn.SaveChanges(); + } } } } diff --git a/APT.MicroApi/APT.PF.WebApi/log4net.config b/APT.MicroApi/APT.PF.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.PF.WebApi/log4net.config +++ b/APT.MicroApi/APT.PF.WebApi/log4net.config @@ -19,7 +19,7 @@ - + diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BIAnalysisController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BIAnalysisController.cs index 898f215..4e1b6e1 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BIAnalysisController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BIAnalysisController.cs @@ -32,818 +32,828 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - var sourceIds = new List(); - List formAnalysis=new List(); - var newFilter = new BaseFilter(filter.OrgId); - newFilter.SelectField = new List { "ID", "STATUS" }; - //风险评价计划审核表 - var evalPlan= this.GetEntities(t => true, newFilter); - var evalPlanIds = evalPlan.Select(t => t.ID).ToList(); - sourceIds.AddRange(evalPlanIds); - //风险评价计划发布 - newFilter.SelectField = new List { "ID", "RELEASE_STATUS" }; - var noticeRelease = this.GetEntities(t => true, newFilter); - var noticeReleaseIds = noticeRelease.Select(t => t.ID).ToList(); - sourceIds.AddRange(noticeReleaseIds); - //危险源/风险辨识任务 - newFilter.SelectField = new List { "ID", "STATUS" }; - var riskTask = this.GetEntities(t => true, newFilter); - var riskTaskIds = riskTask.Select(t => t.ID).ToList(); - sourceIds.AddRange(riskTaskIds); - //危险源/风险辨识记录表 - var riskRecord = this.GetEntities(t => true, newFilter); - var riskRecordIds = riskRecord.Select(t => t.ID).ToList(); - sourceIds.AddRange(riskRecordIds); - //职业危害辨识任务 - var hazardTask = this.GetEntities(t => true, newFilter); - var hazardTaskIds = hazardTask.Select(t => t.ID).ToList(); - sourceIds.AddRange(hazardTaskIds); - //职业危害辨识记录表 - var hazardRecord = this.GetEntities(t => true, newFilter); - var hazardRecordIds = hazardRecord.Select(t => t.ID).ToList(); - sourceIds.AddRange(hazardRecordIds); - //评价结果表 - var evalResult = this.GetEntities(t => true, newFilter); - var evalResultIds = evalResult.Select(t => t.ID).ToList(); - sourceIds.AddRange(evalResultIds); - //作业任务识别 - newFilter.SelectField = new List { "ID", "IS_PUBLISH" }; - var taskIdentify = this.GetEntities(t => true, newFilter); - var taskIdentifyIds = taskIdentify.Select(t => t.ID).ToList(); - sourceIds.AddRange(taskIdentifyIds); - //作业任务识别分析 - var taskAnalysis = this.GetEntities(t => true, newFilter); - var taskAnalysisIds = taskAnalysis.Select(t => t.ID).ToList(); - sourceIds.AddRange(taskAnalysisIds); - //一般任务分析 - var taskOrdinary = this.GetEntities(t => true, newFilter); - var taskOrdinaryIds = taskOrdinary.Select(t => t.ID).ToList(); - sourceIds.AddRange(taskOrdinaryIds); - //关键任务分析 - var taskCrucial = this.GetEntities(t => true, newFilter); - var taskCrucialIds = taskCrucial.Select(t => t.ID).ToList(); - sourceIds.AddRange(taskCrucialIds); - //许可任务分析 - var taskLicense = this.GetEntities(t => true, newFilter); - var taskLicenseIds = taskLicense.Select(t => t.ID).ToList(); - sourceIds.AddRange(taskLicenseIds); - //作业任务分析文件发布 - newFilter.SelectField = new List { "ID" }; - var filePublish = this.GetEntities(t => true, newFilter); - var filePublishIds = filePublish.Select(t => t.ID).ToList(); - sourceIds.AddRange(filePublishIds); - //只取待办超期的 - newFilter.SelectField = new List { "SOURCE_DATA_ID" }; - var tasks = this.GetEntities(t => t.NOTICE_STATUS == 2, newFilter); - tasks = tasks.Where(t => sourceIds.Contains(t.SOURCE_DATA_ID.Value)).ToList(); - //表单运行情况分析表 - var allAnalysis = this.GetEntities(t => true, new BaseFilter(filter.OrgId)); - #region 风险评价计划审核表 - if (evalPlan.Any()) + try { - foreach (var item in evalPlan) + var sourceIds = new List(); + List formAnalysis = new List(); + var newFilter = new BaseFilter(filter.OrgId); + newFilter.SelectField = new List { "ID", "STATUS" }; + //风险评价计划审核表 + var evalPlan = this.GetEntities(t => true, newFilter); + var evalPlanIds = evalPlan.Select(t => t.ID).ToList(); + sourceIds.AddRange(evalPlanIds); + //风险评价计划发布 + newFilter.SelectField = new List { "ID", "RELEASE_STATUS" }; + var noticeRelease = this.GetEntities(t => true, newFilter); + var noticeReleaseIds = noticeRelease.Select(t => t.ID).ToList(); + sourceIds.AddRange(noticeReleaseIds); + //危险源/风险辨识任务 + newFilter.SelectField = new List { "ID", "STATUS" }; + var riskTask = this.GetEntities(t => true, newFilter); + var riskTaskIds = riskTask.Select(t => t.ID).ToList(); + sourceIds.AddRange(riskTaskIds); + //危险源/风险辨识记录表 + var riskRecord = this.GetEntities(t => true, newFilter); + var riskRecordIds = riskRecord.Select(t => t.ID).ToList(); + sourceIds.AddRange(riskRecordIds); + //职业危害辨识任务 + var hazardTask = this.GetEntities(t => true, newFilter); + var hazardTaskIds = hazardTask.Select(t => t.ID).ToList(); + sourceIds.AddRange(hazardTaskIds); + //职业危害辨识记录表 + var hazardRecord = this.GetEntities(t => true, newFilter); + var hazardRecordIds = hazardRecord.Select(t => t.ID).ToList(); + sourceIds.AddRange(hazardRecordIds); + //评价结果表 + var evalResult = this.GetEntities(t => true, newFilter); + var evalResultIds = evalResult.Select(t => t.ID).ToList(); + sourceIds.AddRange(evalResultIds); + //作业任务识别 + newFilter.SelectField = new List { "ID", "IS_PUBLISH" }; + var taskIdentify = this.GetEntities(t => true, newFilter); + var taskIdentifyIds = taskIdentify.Select(t => t.ID).ToList(); + sourceIds.AddRange(taskIdentifyIds); + //作业任务识别分析 + var taskAnalysis = this.GetEntities(t => true, newFilter); + var taskAnalysisIds = taskAnalysis.Select(t => t.ID).ToList(); + sourceIds.AddRange(taskAnalysisIds); + //一般任务分析 + var taskOrdinary = this.GetEntities(t => true, newFilter); + var taskOrdinaryIds = taskOrdinary.Select(t => t.ID).ToList(); + sourceIds.AddRange(taskOrdinaryIds); + //关键任务分析 + var taskCrucial = this.GetEntities(t => true, newFilter); + var taskCrucialIds = taskCrucial.Select(t => t.ID).ToList(); + sourceIds.AddRange(taskCrucialIds); + //许可任务分析 + var taskLicense = this.GetEntities(t => true, newFilter); + var taskLicenseIds = taskLicense.Select(t => t.ID).ToList(); + sourceIds.AddRange(taskLicenseIds); + //作业任务分析文件发布 + newFilter.SelectField = new List { "ID" }; + var filePublish = this.GetEntities(t => true, newFilter); + var filePublishIds = filePublish.Select(t => t.ID).ToList(); + sourceIds.AddRange(filePublishIds); + //只取待办超期的 + newFilter.SelectField = new List { "SOURCE_DATA_ID" }; + var tasks = this.GetEntities(t => t.NOTICE_STATUS == 2, newFilter); + tasks = tasks.Where(t => sourceIds.Contains(t.SOURCE_DATA_ID.Value)).ToList(); + //表单运行情况分析表 + var allAnalysis = this.GetEntities(t => true, new BaseFilter(filter.OrgId)); + #region 风险评价计划审核表 + if (evalPlan.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in evalPlan) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = evalPlan.Count(); + var finish = evalPlan.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = evalPlan.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "年度风险评价计划审核表"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "年度风险评价计划审核表"; + analysis.NUM = 1; + 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); } - var count = evalPlan.Count(); - var finish = evalPlan.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = evalPlan.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "年度风险评价计划审核表"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "年度风险评价计划审核表"; - analysis.NUM = 1; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "年度风险评价计划审核表"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "年度风险评价计划审核表"; + analysis.NUM = 1; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "年度风险评价计划审核表"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "年度风险评价计划审核表"; - analysis.NUM = 1; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 风险评价计划发布 - if (noticeRelease.Any()) - { - foreach (var item in noticeRelease) + #region 风险评价计划发布 + if (noticeRelease.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in noticeRelease) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = noticeRelease.Count(); + var finish = noticeRelease.Count(t => t.IS_OVERTIME == 0 && t.RELEASE_STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = noticeRelease.Count(t => t.IS_OVERTIME == 1 && t.RELEASE_STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "风险评价计划发布"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "风险评价计划发布"; + analysis.NUM = 2; + 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); } - var count = noticeRelease.Count(); - var finish = noticeRelease.Count(t => t.IS_OVERTIME == 0 && t.RELEASE_STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = noticeRelease.Count(t => t.IS_OVERTIME == 1 && t.RELEASE_STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "风险评价计划发布"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "风险评价计划发布"; - analysis.NUM = 2; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "风险评价计划发布"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "风险评价计划发布"; + analysis.NUM = 2; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "风险评价计划发布"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "风险评价计划发布"; - analysis.NUM = 2; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 危险源/风险辨识任务 - if (riskTask.Any()) - { - foreach (var item in riskTask) + #region 危险源/风险辨识任务 + if (riskTask.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in riskTask) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = riskTask.Count(); + var finish = riskTask.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = riskTask.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "危险源/风险辨识任务"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "危险源/风险辨识任务"; + analysis.NUM = 3; + 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); } - var count = riskTask.Count(); - var finish = riskTask.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = riskTask.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "危险源/风险辨识任务"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "危险源/风险辨识任务"; - analysis.NUM = 3; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "危险源/风险辨识任务"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "危险源/风险辨识任务"; + analysis.NUM = 3; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "危险源/风险辨识任务"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "危险源/风险辨识任务"; - analysis.NUM = 3; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 危险源/风险辨识记录表 - if (riskRecord.Any()) - { - foreach (var item in riskRecord) + #region 危险源/风险辨识记录表 + if (riskRecord.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in riskRecord) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = riskRecord.Count(); + var finish = riskRecord.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = riskRecord.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "危险源/风险辨识记录表"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "危险源/风险辨识记录表"; + analysis.NUM = 4; + 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); } - var count = riskRecord.Count(); - var finish = riskRecord.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = riskRecord.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "危险源/风险辨识记录表"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "危险源/风险辨识记录表"; - analysis.NUM = 4; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "危险源/风险辨识记录表"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "危险源/风险辨识记录表"; + analysis.NUM = 4; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "危险源/风险辨识记录表"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "危险源/风险辨识记录表"; - analysis.NUM = 4; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 职业危害辨识任务 - if (hazardTask.Any()) - { - foreach (var item in hazardTask) + #region 职业危害辨识任务 + if (hazardTask.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in hazardTask) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = hazardTask.Count(); + var finish = hazardTask.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = hazardTask.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "职业危害辨识任务"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "职业危害辨识任务"; + analysis.NUM = 5; + 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); } - var count = hazardTask.Count(); - var finish = hazardTask.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = hazardTask.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "职业危害辨识任务"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "职业危害辨识任务"; - analysis.NUM = 5; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "职业危害辨识任务"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "职业危害辨识任务"; + analysis.NUM = 5; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "职业危害辨识任务"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "职业危害辨识任务"; - analysis.NUM = 5; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 职业危害辨识记录表 - if (hazardRecord.Any()) - { - foreach (var item in hazardRecord) + #region 职业危害辨识记录表 + if (hazardRecord.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in hazardRecord) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = hazardRecord.Count(); + var finish = hazardRecord.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = hazardRecord.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "职业危害辨识记录表"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "职业危害辨识记录表"; + analysis.NUM = 6; + 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); } - var count = hazardRecord.Count(); - var finish = hazardRecord.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = hazardRecord.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "职业危害辨识记录表"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "职业危害辨识记录表"; - analysis.NUM = 6; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "职业危害辨识记录表"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "职业危害辨识记录表"; + analysis.NUM = 6; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "职业危害辨识记录表"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "职业危害辨识记录表"; - analysis.NUM = 6; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 评价结果表 - if (evalResult.Any()) - { - foreach (var item in evalResult) + #region 评价结果表 + if (evalResult.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in evalResult) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = evalResult.Count(); + var finish = evalResult.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = evalResult.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "评价结果表"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "评价结果表"; + analysis.NUM = 7; + 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); } - var count = evalResult.Count(); - var finish = evalResult.Count(t => t.IS_OVERTIME == 0 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = evalResult.Count(t => t.IS_OVERTIME == 1 && t.STATUS == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "评价结果表"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "评价结果表"; - analysis.NUM = 7; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "评价结果表"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "评价结果表"; + analysis.NUM = 7; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "评价结果表"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "评价结果表"; - analysis.NUM = 7; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 作业任务识别 - if (taskIdentify.Any()) - { - foreach (var item in taskIdentify) + #region 作业任务识别 + if (taskIdentify.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in taskIdentify) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = taskIdentify.Count(); + var finish = taskIdentify.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = taskIdentify.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务识别"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "作业任务识别"; + analysis.NUM = 8; + 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); } - var count = taskIdentify.Count(); - var finish = taskIdentify.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = taskIdentify.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务识别"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "作业任务识别"; - analysis.NUM = 8; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务识别"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "作业任务识别"; + analysis.NUM = 8; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务识别"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "作业任务识别"; - analysis.NUM = 8; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 作业任务识别分析 - if (taskAnalysis.Any()) - { - foreach (var item in taskAnalysis) + #region 作业任务识别分析 + if (taskAnalysis.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in taskAnalysis) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = taskAnalysis.Count(); + var finish = taskAnalysis.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = taskAnalysis.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务识别分析"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "作业任务识别分析"; + analysis.NUM = 9; + 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); } - var count = taskAnalysis.Count(); - var finish = taskAnalysis.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = taskAnalysis.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务识别分析"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "作业任务识别分析"; - analysis.NUM = 9; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务识别分析"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "作业任务识别分析"; + analysis.NUM = 9; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务识别分析"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "作业任务识别分析"; - analysis.NUM = 9; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 一般任务分析 - if (taskOrdinary.Any()) - { - foreach (var item in taskOrdinary) + #region 一般任务分析 + if (taskOrdinary.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in taskOrdinary) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = taskOrdinary.Count(); + var finish = taskOrdinary.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = taskOrdinary.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "一般任务分析"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "一般任务分析"; + analysis.NUM = 10; + 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); } - var count = taskOrdinary.Count(); - var finish = taskOrdinary.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = taskOrdinary.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "一般任务分析"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "一般任务分析"; - analysis.NUM = 10; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "一般任务分析"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "一般任务分析"; + analysis.NUM = 10; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "一般任务分析"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "一般任务分析"; - analysis.NUM = 10; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 关键任务分析 - if (taskCrucial.Any()) - { - foreach (var item in taskCrucial) + #region 关键任务分析 + if (taskCrucial.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in taskCrucial) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = taskCrucial.Count(); + var finish = taskCrucial.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = taskCrucial.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "关键任务分析"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "关键任务分析"; + analysis.NUM = 11; + 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); } - var count = taskCrucial.Count(); - var finish = taskCrucial.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = taskCrucial.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "关键任务分析"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "关键任务分析"; - analysis.NUM = 11; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "关键任务分析"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "关键任务分析"; + analysis.NUM = 11; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "关键任务分析"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "关键任务分析"; - analysis.NUM = 11; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 许可任务分析 - if (taskLicense.Any()) - { - foreach (var item in taskLicense) + #region 许可任务分析 + if (taskLicense.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in taskLicense) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = taskLicense.Count(); + var finish = taskLicense.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var overfinish = taskLicense.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "许可任务分析"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "许可任务分析"; + analysis.NUM = 12; + 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); } - var count = taskLicense.Count(); - var finish = taskLicense.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var overfinish = taskLicense.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == MS.Domain.Enums.FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "许可任务分析"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "许可任务分析"; - analysis.NUM = 12; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "许可任务分析"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "许可任务分析"; + analysis.NUM = 12; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "许可任务分析"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "许可任务分析"; - analysis.NUM = 12; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 作业任务分析文件发布 - if (filePublish.Any()) - { - foreach (var item in filePublish) + #region 作业任务分析文件发布 + if (filePublish.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in filePublish) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = filePublish.Count(); + var finish = filePublish.Count(t => t.IS_OVERTIME == 0); + var overfinish = filePublish.Count(t => t.IS_OVERTIME == 1); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务分析文件发布"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "作业任务分析文件发布"; + analysis.NUM = 13; + 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); } - var count = filePublish.Count(); - var finish = filePublish.Count(t => t.IS_OVERTIME == 0); - var overfinish = filePublish.Count(t => t.IS_OVERTIME == 1); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务分析文件发布"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "作业任务分析文件发布"; - analysis.NUM = 13; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务分析文件发布"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "风险管理"; + analysis.FORM_NAME = "作业任务分析文件发布"; + analysis.NUM = 13; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "风险管理" && t.FORM_NAME == "作业任务分析文件发布"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "风险管理"; - analysis.FORM_NAME = "作业任务分析文件发布"; - analysis.NUM = 13; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - this.UnifiedCommit(() => + this.UnifiedCommit(() => + { + if (formAnalysis != null && formAnalysis.Any()) + BantchSaveEntityNoCommit(formAnalysis); + }); + } + catch (Exception ex) { - if(formAnalysis != null && formAnalysis.Any()) - BantchSaveEntityNoCommit(formAnalysis); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -853,329 +863,339 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - var sourceIds = new List(); - List formAnalysis = new List(); - var newFilter = new BaseFilter(filter.OrgId); - newFilter.SelectField = new List { "ID", "STATUSPLAN", "STATUCHECK" }; - //检查任务制定 - var evalPlan = this.GetEntities(t => true, newFilter); - var evalPlanIds = evalPlan.Select(t => t.ID).ToList(); - sourceIds.AddRange(evalPlanIds); - //检查记录 - var noticeRelease = evalPlan.Where(t => t.STATUSPLAN == (int)HMAuditStatusEnmu.归档).ToList(); - var noticeReleaseIds = noticeRelease.Select(t => t.ID).ToList(); - sourceIds.AddRange(noticeReleaseIds); - //隐患上报 - newFilter.SelectField = new List { "ID", "SUBMIT_STATUS" }; - var riskTask = this.GetEntities(t => true, newFilter); - var riskTaskIds = riskTask.Select(t => t.ID).ToList(); - sourceIds.AddRange(riskTaskIds); - //隐患整改记录 - newFilter.SelectField = new List { "ID", "DEALSITUATION" }; - var riskRecord = this.GetEntities(t => true, newFilter); - var riskRecordIds = riskRecord.Select(t => t.ID).ToList(); - sourceIds.AddRange(riskRecordIds); - //延期整改申请 - newFilter.SelectField = new List { "ID" }; - var hazardTask = this.GetEntities(t => true, newFilter); - var hazardTaskIds = hazardTask.Select(t => t.ID).ToList(); - sourceIds.AddRange(hazardTaskIds); - //只取待办超期的 - newFilter.SelectField = new List { "SOURCE_DATA_ID" }; - var tasks = this.GetEntities(t => t.NOTICE_STATUS == 2, newFilter); - tasks = tasks.Where(t => sourceIds.Contains(t.SOURCE_DATA_ID.Value)).ToList(); - //表单运行情况分析表 - var allAnalysis = this.GetEntities(t => true, new BaseFilter(filter.OrgId)); - #region 检查任务制定 - if (evalPlan.Any()) + try { - foreach (var item in evalPlan) + var sourceIds = new List(); + List formAnalysis = new List(); + var newFilter = new BaseFilter(filter.OrgId); + newFilter.SelectField = new List { "ID", "STATUSPLAN", "STATUCHECK" }; + //检查任务制定 + var evalPlan = this.GetEntities(t => true, newFilter); + var evalPlanIds = evalPlan.Select(t => t.ID).ToList(); + sourceIds.AddRange(evalPlanIds); + //检查记录 + var noticeRelease = evalPlan.Where(t => t.STATUSPLAN == (int)HMAuditStatusEnmu.归档).ToList(); + var noticeReleaseIds = noticeRelease.Select(t => t.ID).ToList(); + sourceIds.AddRange(noticeReleaseIds); + //隐患上报 + newFilter.SelectField = new List { "ID", "SUBMIT_STATUS" }; + var riskTask = this.GetEntities(t => true, newFilter); + var riskTaskIds = riskTask.Select(t => t.ID).ToList(); + sourceIds.AddRange(riskTaskIds); + //隐患整改记录 + newFilter.SelectField = new List { "ID", "DEALSITUATION" }; + var riskRecord = this.GetEntities(t => true, newFilter); + var riskRecordIds = riskRecord.Select(t => t.ID).ToList(); + sourceIds.AddRange(riskRecordIds); + //延期整改申请 + newFilter.SelectField = new List { "ID" }; + var hazardTask = this.GetEntities(t => true, newFilter); + var hazardTaskIds = hazardTask.Select(t => t.ID).ToList(); + sourceIds.AddRange(hazardTaskIds); + //只取待办超期的 + newFilter.SelectField = new List { "SOURCE_DATA_ID" }; + var tasks = this.GetEntities(t => t.NOTICE_STATUS == 2, newFilter); + tasks = tasks.Where(t => sourceIds.Contains(t.SOURCE_DATA_ID.Value)).ToList(); + //表单运行情况分析表 + var allAnalysis = this.GetEntities(t => true, new BaseFilter(filter.OrgId)); + #region 检查任务制定 + if (evalPlan.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in evalPlan) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = evalPlan.Count(); + var finish = evalPlan.Count(t => t.IS_OVERTIME == 0 && t.STATUSPLAN == (int)HMAuditStatusEnmu.归档); + var overfinish = evalPlan.Count(t => t.IS_OVERTIME == 1 && t.STATUSPLAN == (int)HMAuditStatusEnmu.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "检查任务制定"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "安全检查"; + analysis.FORM_NAME = "检查任务制定"; + analysis.NUM = 20; + 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); } - var count = evalPlan.Count(); - var finish = evalPlan.Count(t => t.IS_OVERTIME == 0 && t.STATUSPLAN == (int)HMAuditStatusEnmu.归档); - var overfinish = evalPlan.Count(t => t.IS_OVERTIME == 1 && t.STATUSPLAN == (int)HMAuditStatusEnmu.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "检查任务制定"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "安全检查"; - analysis.FORM_NAME = "检查任务制定"; - analysis.NUM = 20; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "检查任务制定"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "安全检查"; + analysis.FORM_NAME = "检查任务制定"; + analysis.NUM = 20; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "检查任务制定"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "安全检查"; - analysis.FORM_NAME = "检查任务制定"; - analysis.NUM = 20; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 检查记录 - if (noticeRelease.Any()) - { - foreach (var item in noticeRelease) + #region 检查记录 + if (noticeRelease.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in noticeRelease) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = noticeRelease.Count(); + var finish = noticeRelease.Count(t => t.IS_OVERTIME == 0 && t.STATUCHECK == (int)HMAuditStatusEnmu.归档); + var overfinish = noticeRelease.Count(t => t.IS_OVERTIME == 1 && t.STATUCHECK == (int)HMAuditStatusEnmu.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "检查记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "安全检查"; + analysis.FORM_NAME = "检查记录"; + analysis.NUM = 21; + 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); } - var count = noticeRelease.Count(); - var finish = noticeRelease.Count(t => t.IS_OVERTIME == 0 && t.STATUCHECK == (int)HMAuditStatusEnmu.归档); - var overfinish = noticeRelease.Count(t => t.IS_OVERTIME == 1 && t.STATUCHECK == (int)HMAuditStatusEnmu.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "检查记录"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "安全检查"; - analysis.FORM_NAME = "检查记录"; - analysis.NUM = 21; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "检查记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "安全检查"; + analysis.FORM_NAME = "检查记录"; + analysis.NUM = 21; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "检查记录"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "安全检查"; - analysis.FORM_NAME = "检查记录"; - analysis.NUM = 21; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 隐患上报 - if (riskTask.Any()) - { - foreach (var item in riskTask) + #region 隐患上报 + if (riskTask.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in riskTask) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = riskTask.Count(); + var finish = riskTask.Count(t => t.IS_OVERTIME == 0 && t.SUBMIT_STATUS == (int)BSSubmitStatusEnum.AuditOK); + var overfinish = riskTask.Count(t => t.IS_OVERTIME == 1 && t.SUBMIT_STATUS == (int)BSSubmitStatusEnum.AuditOK); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "隐患上报"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "安全检查"; + analysis.FORM_NAME = "隐患上报"; + analysis.NUM = 22; + 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); } - var count = riskTask.Count(); - var finish = riskTask.Count(t => t.IS_OVERTIME == 0 && t.SUBMIT_STATUS == (int)BSSubmitStatusEnum.AuditOK); - var overfinish = riskTask.Count(t => t.IS_OVERTIME == 1 && t.SUBMIT_STATUS == (int)BSSubmitStatusEnum.AuditOK); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "隐患上报"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "安全检查"; - analysis.FORM_NAME = "隐患上报"; - analysis.NUM = 22; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "隐患上报"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "安全检查"; + analysis.FORM_NAME = "隐患上报"; + analysis.NUM = 22; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "隐患上报"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "安全检查"; - analysis.FORM_NAME = "隐患上报"; - analysis.NUM = 22; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 隐患整改记录 - if (riskRecord.Any()) - { - foreach (var item in riskRecord) + #region 隐患整改记录 + if (riskRecord.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in riskRecord) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = riskRecord.Count(); + var finish = riskRecord.Count(t => t.IS_OVERTIME == 0 && t.DEALSITUATION == (int)DealSituation.OK); + var overfinish = riskRecord.Count(t => t.IS_OVERTIME == 1 && t.DEALSITUATION == (int)DealSituation.OK); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "隐患整改记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "安全检查"; + analysis.FORM_NAME = "隐患整改记录"; + analysis.NUM = 23; + 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); } - var count = riskRecord.Count(); - var finish = riskRecord.Count(t => t.IS_OVERTIME == 0 && t.DEALSITUATION == (int)DealSituation.OK); - var overfinish = riskRecord.Count(t => t.IS_OVERTIME == 1 && t.DEALSITUATION == (int)DealSituation.OK); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "隐患整改记录"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "安全检查"; - analysis.FORM_NAME = "隐患整改记录"; - analysis.NUM = 23; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "隐患整改记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "安全检查"; + analysis.FORM_NAME = "隐患整改记录"; + analysis.NUM = 23; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "隐患整改记录"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "安全检查"; - analysis.FORM_NAME = "隐患整改记录"; - analysis.NUM = 23; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 延期整改申请 - if (hazardTask.Any()) - { - foreach (var item in hazardTask) + #region 延期整改申请 + if (hazardTask.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in hazardTask) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = hazardTask.Count(); + var finish = hazardTask.Count(t => t.IS_OVERTIME == 0); + var overfinish = hazardTask.Count(t => t.IS_OVERTIME == 1); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "延期整改申请"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "安全检查"; + analysis.FORM_NAME = "延期整改申请"; + analysis.NUM = 24; + 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); } - var count = hazardTask.Count(); - var finish = hazardTask.Count(t => t.IS_OVERTIME == 0); - var overfinish = hazardTask.Count(t => t.IS_OVERTIME == 1); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "延期整改申请"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "安全检查"; - analysis.FORM_NAME = "延期整改申请"; - analysis.NUM = 24; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "延期整改申请"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "安全检查"; + analysis.FORM_NAME = "延期整改申请"; + analysis.NUM = 24; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "安全检查" && t.FORM_NAME == "延期整改申请"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "安全检查"; - analysis.FORM_NAME = "延期整改申请"; - analysis.NUM = 24; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - this.UnifiedCommit(() => + this.UnifiedCommit(() => + { + if (formAnalysis != null && formAnalysis.Any()) + BantchSaveEntityNoCommit(formAnalysis); + }); + } + catch (Exception ex) { - if (formAnalysis != null && formAnalysis.Any()) - BantchSaveEntityNoCommit(formAnalysis); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -1184,575 +1204,585 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - var sourceIds = new List(); - List formAnalysis = new List(); - var newFilter = new BaseFilter(filter.OrgId); - newFilter.SelectField = new List { "ID", "SHIFT_STATUS", "OVERTIME" }; - //岗位当班工作记录 - var evalPlan = this.GetEntities(t => true, newFilter); - //var evalPlanIds = evalPlan.Select(t => t.ID).ToList(); - //sourceIds.AddRange(evalPlanIds); - //岗位交接班记录 - var noticeRelease = this.GetEntities(t => true, newFilter); - //var noticeReleaseIds = noticeRelease.Select(t => t.ID).ToList(); - //sourceIds.AddRange(noticeReleaseIds); - //班组安全活动 - newFilter.SelectField = new List { "ID", "TA_STATUS", "OVERTIME" }; - var riskTask = this.GetEntities(t => true, newFilter); - //var riskTaskIds = riskTask.Select(t => t.ID).ToList(); - //sourceIds.AddRange(riskTaskIds); - //班前会议记录 - newFilter.SelectField = new List { "ID", "PRE_MEETING_STATUS", "OVERTIME" }; - var riskRecord = this.GetEntities(t => true, newFilter); - //var riskRecordIds = riskRecord.Select(t => t.ID).ToList(); - //sourceIds.AddRange(riskRecordIds); - //作业活动记录(一般作业) - newFilter.SelectField = new List { "ID", "FORM_STATUS" }; - var hazardTask = this.GetEntities(t => true, newFilter); - var hazardTaskIds = hazardTask.Select(t => t.ID).ToList(); - sourceIds.AddRange(hazardTaskIds); - //作业方案讨论记录 - var hazardRecord = this.GetEntities(t => true, newFilter); - var hazardRecordIds = hazardRecord.Select(t => t.ID).ToList(); - sourceIds.AddRange(hazardRecordIds); - //关键作业/许可作业工作票 - newFilter.SelectField = new List { "ID", "IS_PUBLISH" }; - var evalResult = this.GetEntities(t => true, newFilter); - var evalResultIds = evalResult.Select(t => t.ID).ToList(); - sourceIds.AddRange(evalResultIds); - //技术交底表 - newFilter.SelectField = new List { "ID", "FORM_STATUS" }; - var taskIdentify = this.GetEntities(t => true, newFilter); - var taskIdentifyIds = taskIdentify.Select(t => t.ID).ToList(); - sourceIds.AddRange(taskIdentifyIds); - //作业活动记录(关键和许可作业) - var taskAnalysis = this.GetEntities(t => true, newFilter); - var taskAnalysisIds = taskAnalysis.Select(t => t.ID).ToList(); - sourceIds.AddRange(taskAnalysisIds); - //只取待办超期的 - newFilter.SelectField = new List { "SOURCE_DATA_ID" }; - var tasks = this.GetEntities(t => t.NOTICE_STATUS == 2, newFilter); - tasks = tasks.Where(t => sourceIds.Contains(t.SOURCE_DATA_ID.Value)).ToList(); - //表单运行情况分析表 - var allAnalysis = this.GetEntities(t => true, new BaseFilter(filter.OrgId)); - #region 岗位当班工作记录 - if (evalPlan.Any()) + try { - //foreach (var item in evalPlan) - //{ - // var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - // if (task == null) - // item.IS_OVERTIME = 0;//不存在为正常已办 - // else - // item.IS_OVERTIME = 1;//只要存在就超期 - //} - var count = evalPlan.Count(); - var finish = evalPlan.Count(t => t.OVERTIME == FOISOVERTIME.未超时 && t.SHIFT_STATUS == (int)FOShiftStatusEnum.归档); - var overfinish = evalPlan.Count(t => t.OVERTIME == FOISOVERTIME.超时 && t.SHIFT_STATUS == (int)FOShiftStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "岗位当班工作记录"); - if (analysis == null) + var sourceIds = new List(); + List formAnalysis = new List(); + var newFilter = new BaseFilter(filter.OrgId); + newFilter.SelectField = new List { "ID", "SHIFT_STATUS", "OVERTIME" }; + //岗位当班工作记录 + var evalPlan = this.GetEntities(t => true, newFilter); + //var evalPlanIds = evalPlan.Select(t => t.ID).ToList(); + //sourceIds.AddRange(evalPlanIds); + //岗位交接班记录 + var noticeRelease = this.GetEntities(t => true, newFilter); + //var noticeReleaseIds = noticeRelease.Select(t => t.ID).ToList(); + //sourceIds.AddRange(noticeReleaseIds); + //班组安全活动 + newFilter.SelectField = new List { "ID", "TA_STATUS", "OVERTIME" }; + var riskTask = this.GetEntities(t => true, newFilter); + //var riskTaskIds = riskTask.Select(t => t.ID).ToList(); + //sourceIds.AddRange(riskTaskIds); + //班前会议记录 + newFilter.SelectField = new List { "ID", "PRE_MEETING_STATUS", "OVERTIME" }; + var riskRecord = this.GetEntities(t => true, newFilter); + //var riskRecordIds = riskRecord.Select(t => t.ID).ToList(); + //sourceIds.AddRange(riskRecordIds); + //作业活动记录(一般作业) + newFilter.SelectField = new List { "ID", "FORM_STATUS" }; + var hazardTask = this.GetEntities(t => true, newFilter); + var hazardTaskIds = hazardTask.Select(t => t.ID).ToList(); + sourceIds.AddRange(hazardTaskIds); + //作业方案讨论记录 + var hazardRecord = this.GetEntities(t => true, newFilter); + var hazardRecordIds = hazardRecord.Select(t => t.ID).ToList(); + sourceIds.AddRange(hazardRecordIds); + //关键作业/许可作业工作票 + newFilter.SelectField = new List { "ID", "IS_PUBLISH" }; + var evalResult = this.GetEntities(t => true, newFilter); + var evalResultIds = evalResult.Select(t => t.ID).ToList(); + sourceIds.AddRange(evalResultIds); + //技术交底表 + newFilter.SelectField = new List { "ID", "FORM_STATUS" }; + var taskIdentify = this.GetEntities(t => true, newFilter); + var taskIdentifyIds = taskIdentify.Select(t => t.ID).ToList(); + sourceIds.AddRange(taskIdentifyIds); + //作业活动记录(关键和许可作业) + var taskAnalysis = this.GetEntities(t => true, newFilter); + var taskAnalysisIds = taskAnalysis.Select(t => t.ID).ToList(); + sourceIds.AddRange(taskAnalysisIds); + //只取待办超期的 + newFilter.SelectField = new List { "SOURCE_DATA_ID" }; + var tasks = this.GetEntities(t => t.NOTICE_STATUS == 2, newFilter); + tasks = tasks.Where(t => sourceIds.Contains(t.SOURCE_DATA_ID.Value)).ToList(); + //表单运行情况分析表 + var allAnalysis = this.GetEntities(t => true, new BaseFilter(filter.OrgId)); + #region 岗位当班工作记录 + if (evalPlan.Any()) { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "岗位当班工作记录"; - analysis.NUM = 30; - analysis.ORG_ID = filter.OrgId; + //foreach (var item in evalPlan) + //{ + // var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + // if (task == null) + // item.IS_OVERTIME = 0;//不存在为正常已办 + // else + // item.IS_OVERTIME = 1;//只要存在就超期 + //} + var count = evalPlan.Count(); + var finish = evalPlan.Count(t => t.OVERTIME == FOISOVERTIME.未超时 && t.SHIFT_STATUS == (int)FOShiftStatusEnum.归档); + var overfinish = evalPlan.Count(t => t.OVERTIME == FOISOVERTIME.超时 && t.SHIFT_STATUS == (int)FOShiftStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "岗位当班工作记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "岗位当班工作记录"; + analysis.NUM = 30; + 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); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "岗位当班工作记录"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "岗位当班工作记录"; - analysis.NUM = 30; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "岗位当班工作记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "岗位当班工作记录"; + analysis.NUM = 30; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 岗位交接班记录 - if (noticeRelease.Any()) - { - //foreach (var item in noticeRelease) - //{ - // var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID && t.NOTICE_STATUS == 2); - // if (task == null) - // item.IS_OVERTIME = 0; - // else - // item.IS_OVERTIME = 1; - //} - var count = noticeRelease.Count(); - var finish = evalPlan.Count(t => t.OVERTIME == FOISOVERTIME.未超时 && t.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档); - var overfinish = evalPlan.Count(t => t.OVERTIME == FOISOVERTIME.超时 && t.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "岗位交接班记录"); - if (analysis == null) + #region 岗位交接班记录 + if (noticeRelease.Any()) { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "岗位交接班记录"; - analysis.NUM = 31; - analysis.ORG_ID = filter.OrgId; + //foreach (var item in noticeRelease) + //{ + // var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID && t.NOTICE_STATUS == 2); + // if (task == null) + // item.IS_OVERTIME = 0; + // else + // item.IS_OVERTIME = 1; + //} + var count = noticeRelease.Count(); + var finish = evalPlan.Count(t => t.OVERTIME == FOISOVERTIME.未超时 && t.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档); + var overfinish = evalPlan.Count(t => t.OVERTIME == FOISOVERTIME.超时 && t.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "岗位交接班记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "岗位交接班记录"; + analysis.NUM = 31; + 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); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "岗位交接班记录"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "岗位交接班记录"; - analysis.NUM = 31; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "岗位交接班记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "岗位交接班记录"; + analysis.NUM = 31; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 班组安全活动 - if (riskTask.Any()) - { - //foreach (var item in riskTask) - //{ - // var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID && t.NOTICE_STATUS == 2); - // if (task == null) - // item.IS_OVERTIME = 0; - // else - // item.IS_OVERTIME = 1; - //} - var count = riskTask.Count(); - var finish = riskTask.Count(t => t.OVERTIME == FOISOVERTIME.未超时 && t.TA_STATUS == (int)FOTeamActivityState.已归档); - var overfinish = riskTask.Count(t => t.OVERTIME == FOISOVERTIME.超时 && t.TA_STATUS == (int)FOTeamActivityState.已归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "班组安全活动"); - if (analysis == null) + #region 班组安全活动 + if (riskTask.Any()) { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "班组安全活动"; - analysis.NUM = 32; - analysis.ORG_ID = filter.OrgId; + //foreach (var item in riskTask) + //{ + // var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID && t.NOTICE_STATUS == 2); + // if (task == null) + // item.IS_OVERTIME = 0; + // else + // item.IS_OVERTIME = 1; + //} + var count = riskTask.Count(); + var finish = riskTask.Count(t => t.OVERTIME == FOISOVERTIME.未超时 && t.TA_STATUS == (int)FOTeamActivityState.已归档); + var overfinish = riskTask.Count(t => t.OVERTIME == FOISOVERTIME.超时 && t.TA_STATUS == (int)FOTeamActivityState.已归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "班组安全活动"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "班组安全活动"; + analysis.NUM = 32; + 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); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "班组安全活动"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "班组安全活动"; - analysis.NUM = 32; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "班组安全活动"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "班组安全活动"; + analysis.NUM = 32; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 班前会议记录 - if (riskRecord.Any()) - { - //foreach (var item in riskRecord) - //{ - // var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID && t.NOTICE_STATUS == 2); - // if (task == null) - // item.IS_OVERTIME = 0; - // else - // item.IS_OVERTIME = 1; - //} - var count = riskRecord.Count(); - var finish = riskRecord.Count(t => t.OVERTIME == FOISOVERTIME.未超时 && t.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档); - var overfinish = riskRecord.Count(t => t.OVERTIME == FOISOVERTIME.超时 && t.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "班前会议记录"); - if (analysis == null) + #region 班前会议记录 + if (riskRecord.Any()) { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "班前会议记录"; - analysis.NUM = 33; - analysis.ORG_ID = filter.OrgId; + //foreach (var item in riskRecord) + //{ + // var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID && t.NOTICE_STATUS == 2); + // if (task == null) + // item.IS_OVERTIME = 0; + // else + // item.IS_OVERTIME = 1; + //} + var count = riskRecord.Count(); + var finish = riskRecord.Count(t => t.OVERTIME == FOISOVERTIME.未超时 && t.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档); + var overfinish = riskRecord.Count(t => t.OVERTIME == FOISOVERTIME.超时 && t.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "班前会议记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "班前会议记录"; + analysis.NUM = 33; + 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); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "班前会议记录"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "班前会议记录"; - analysis.NUM = 33; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "班前会议记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "班前会议记录"; + analysis.NUM = 33; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 作业活动记录(一般作业) - if (hazardTask.Any()) - { - foreach (var item in hazardTask) + #region 作业活动记录(一般作业) + if (hazardTask.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in hazardTask) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = hazardTask.Count(); + var finish = hazardTask.Count(t => t.IS_OVERTIME == 0 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); + var overfinish = hazardTask.Count(t => t.IS_OVERTIME == 1 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业活动记录(一般作业)"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "作业活动记录(一般作业)"; + analysis.NUM = 34; + 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); } - var count = hazardTask.Count(); - var finish = hazardTask.Count(t => t.IS_OVERTIME == 0 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); - var overfinish = hazardTask.Count(t => t.IS_OVERTIME == 1 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业活动记录(一般作业)"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "作业活动记录(一般作业)"; - analysis.NUM = 34; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业活动记录(一般作业)"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "作业活动记录(一般作业)"; + analysis.NUM = 34; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业活动记录(一般作业)"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "作业活动记录(一般作业)"; - analysis.NUM = 34; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 作业方案讨论记录 - if (hazardRecord.Any()) - { - foreach (var item in hazardRecord) + #region 作业方案讨论记录 + if (hazardRecord.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in hazardRecord) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = hazardRecord.Count(); + var finish = hazardRecord.Count(t => t.IS_OVERTIME == 0 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); + var overfinish = hazardRecord.Count(t => t.IS_OVERTIME == 1 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业方案讨论记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "作业方案讨论记录"; + analysis.NUM = 35; + 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); } - var count = hazardRecord.Count(); - var finish = hazardRecord.Count(t => t.IS_OVERTIME == 0 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); - var overfinish = hazardRecord.Count(t => t.IS_OVERTIME == 1 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业方案讨论记录"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "作业方案讨论记录"; - analysis.NUM = 35; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业方案讨论记录"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "作业方案讨论记录"; + analysis.NUM = 35; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业方案讨论记录"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "作业方案讨论记录"; - analysis.NUM = 35; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 关键作业/许可作业工作票 - if (evalResult.Any()) - { - foreach (var item in evalResult) + #region 关键作业/许可作业工作票 + if (evalResult.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in evalResult) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = evalResult.Count(); + var finish = evalResult.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH == (int)FOPreMeetingStatusEnum.归档); + var overfinish = evalResult.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == (int)FOPreMeetingStatusEnum.归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "关键作业/许可作业工作票"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "关键作业/许可作业工作票"; + analysis.NUM = 36; + 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); } - var count = evalResult.Count(); - var finish = evalResult.Count(t => t.IS_OVERTIME == 0 && t.IS_PUBLISH ==(int)FOPreMeetingStatusEnum.归档); - var overfinish = evalResult.Count(t => t.IS_OVERTIME == 1 && t.IS_PUBLISH == (int)FOPreMeetingStatusEnum.归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "关键作业/许可作业工作票"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "关键作业/许可作业工作票"; - analysis.NUM = 36; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "关键作业/许可作业工作票"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "关键作业/许可作业工作票"; + analysis.NUM = 36; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "关键作业/许可作业工作票"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "关键作业/许可作业工作票"; - analysis.NUM = 36; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 技术交底表 - if (taskIdentify.Any()) - { - foreach (var item in taskIdentify) + #region 技术交底表 + if (taskIdentify.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in taskIdentify) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = taskIdentify.Count(); + var finish = taskIdentify.Count(t => t.IS_OVERTIME == 0 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); + var overfinish = taskIdentify.Count(t => t.IS_OVERTIME == 1 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "技术交底表"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "技术交底表"; + analysis.NUM = 37; + 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); } - var count = taskIdentify.Count(); - var finish = taskIdentify.Count(t => t.IS_OVERTIME == 0 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); - var overfinish = taskIdentify.Count(t => t.IS_OVERTIME == 1 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "技术交底表"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "技术交底表"; - analysis.NUM = 37; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "技术交底表"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "技术交底表"; + analysis.NUM = 37; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "技术交底表"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "技术交底表"; - analysis.NUM = 37; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - #region 作业活动记录(关键和许可作业) - if (taskAnalysis.Any()) - { - foreach (var item in taskAnalysis) + #region 作业活动记录(关键和许可作业) + if (taskAnalysis.Any()) { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; + foreach (var item in taskAnalysis) + { + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + var count = taskAnalysis.Count(); + var finish = taskAnalysis.Count(t => t.IS_OVERTIME == 0 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); + var overfinish = taskAnalysis.Count(t => t.IS_OVERTIME == 1 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); + var unfinish = count - finish - overfinish; + var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; + var finishRate = temp.ToString("0") + "%"; + var temp2 = count == 0 ? 0 : (double)finish / count * 100; + var normalFinishRate = temp2.ToString("0") + "%"; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业活动记录(关键和许可作业)"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "作业活动记录(关键和许可作业)"; + analysis.NUM = 38; + 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); } - var count = taskAnalysis.Count(); - var finish = taskAnalysis.Count(t => t.IS_OVERTIME == 0 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); - var overfinish = taskAnalysis.Count(t => t.IS_OVERTIME == 1 && t.FORM_STATUS == (int)FOTeamActivityState.已归档); - var unfinish = count - finish - overfinish; - var temp = count == 0 ? 0 : (double)(finish + overfinish) / count * 100; - var finishRate = temp.ToString("0") + "%"; - var temp2 = count == 0 ? 0 : (double)finish / count * 100; - var normalFinishRate = temp2.ToString("0") + "%"; - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业活动记录(关键和许可作业)"); - if (analysis == null) + else { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "作业活动记录(关键和许可作业)"; - analysis.NUM = 38; - analysis.ORG_ID = filter.OrgId; + var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业活动记录(关键和许可作业)"); + if (analysis == null) + { + analysis = new T_BI_FORM_RUN_ANALYSIS(); + analysis.MOUDLE_NAME = "作业现场管理"; + analysis.FORM_NAME = "作业活动记录(关键和许可作业)"; + analysis.NUM = 38; + analysis.ORG_ID = filter.OrgId; + } + analysis.TOTAL_QTY = 0; + analysis.FINISH_QTY = 0; + analysis.OVER_FINISH_QTY = 0; + analysis.UNFINISH_QTY = 0; + analysis.FINISH_RATE = "0%"; + analysis.NORMAL_FINISH_RATE = "0%"; + formAnalysis.Add(analysis); } - 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); - } - else - { - var analysis = allAnalysis.FirstOrDefault(t => t.MOUDLE_NAME == "作业现场管理" && t.FORM_NAME == "作业活动记录(关键和许可作业)"); - if (analysis == null) - { - analysis = new T_BI_FORM_RUN_ANALYSIS(); - analysis.MOUDLE_NAME = "作业现场管理"; - analysis.FORM_NAME = "作业活动记录(关键和许可作业)"; - analysis.NUM = 38; - analysis.ORG_ID = filter.OrgId; - } - analysis.TOTAL_QTY = 0; - analysis.FINISH_QTY = 0; - analysis.OVER_FINISH_QTY = 0; - analysis.UNFINISH_QTY = 0; - analysis.FINISH_RATE = "0%"; - analysis.NORMAL_FINISH_RATE = "0%"; - formAnalysis.Add(analysis); - } - #endregion + #endregion - this.UnifiedCommit(() => + this.UnifiedCommit(() => + { + if (formAnalysis != null && formAnalysis.Any()) + BantchSaveEntityNoCommit(formAnalysis); + }); + } + catch (Exception ex) { - if (formAnalysis != null && formAnalysis.Any()) - BantchSaveEntityNoCommit(formAnalysis); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -2631,593 +2661,609 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - List departSummary = new List(); - List mouldSummary = new List(); - var dt = DateTime.Now; - //最近一周 - DateTime week = dt.AddDays(-7).Date; - //最近一月 - DateTime month = dt.AddMonths(-1).Date; - //最近三月 - DateTime threeMonth = dt.AddMonths(-3).Date; - //最近半年 - DateTime sixMonth = dt.AddMonths(-6).Date; - //最近一年 - DateTime year = dt.AddYears(-1).Date; - var newFilter = new BaseFilter(pageFilter.OrgId); - var taskYear = this.GetEntities(t => t.CREATE_DATE >= year, new BaseFilter(pageFilter.OrgId)).ToList(); - newFilter.SelectField = new List { "ID", "PARENT_ID", "NAME", "Nav_Parent", "DEPARTMENT_TYPE" }; - var departmentInfos = this.GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, newFilter).ToList(); - //部门级 - var departGroupYear = taskYear.Where(t => t.DEPT_DEPARTMENT_ID != null && t.MOUDLE_NAME != null).ToList(); - var taskSixMonth = departGroupYear.Where(t => t.CREATE_DATE >= sixMonth).ToList(); - var taskThreeMonth = departGroupYear.Where(t => t.CREATE_DATE >= threeMonth).ToList(); - var taskMonth = departGroupYear.Where(t => t.CREATE_DATE >= month).ToList(); - var taskWeek = departGroupYear.Where(t => t.CREATE_DATE >= week).ToList(); - //车间级 - var shopGroupYear = taskYear.Where(t => t.SHOP_DEPARTMENT_ID != null && t.MOUDLE_NAME != null).ToList(); - var taskSixMonthShop = shopGroupYear.Where(t => t.CREATE_DATE >= sixMonth).ToList(); - var taskThreeMonthShop = shopGroupYear.Where(t => t.CREATE_DATE >= threeMonth).ToList(); - var taskMonthShop = shopGroupYear.Where(t => t.CREATE_DATE >= month).ToList(); - var taskWeekShop = shopGroupYear.Where(t => t.CREATE_DATE >= week).ToList(); - //班组级 - var classGroupYear = taskYear.Where(t => t.CLASS_DEPARTMENT_ID != null).ToList(); - var taskSixMonthClass = classGroupYear.Where(t => t.CREATE_DATE >= sixMonth).ToList(); - var taskThreeMonthClass = classGroupYear.Where(t => t.CREATE_DATE >= threeMonth).ToList(); - var taskMonthClass = classGroupYear.Where(t => t.CREATE_DATE >= month).ToList(); - var taskWeekClass = classGroupYear.Where(t => t.CREATE_DATE >= week).ToList(); - //年度 - if (departGroupYear.Any()) + try { - var groupYearDepart = departGroupYear.GroupBy(t => t.DEPT_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + List departSummary = new List(); + List mouldSummary = new List(); + var dt = DateTime.Now.Date; + //最近一周 + DateTime week = dt.AddDays(-7).Date; + //最近一月 + DateTime month = dt.AddMonths(-1).Date; + //最近三月 + DateTime threeMonth = dt.AddMonths(-3).Date; + //最近半年 + DateTime sixMonth = dt.AddMonths(-6).Date; + //最近一年 + DateTime year = dt.AddYears(-1).Date; + dt = Convert.ToDateTime(dt.ToString().Replace("0:00:00", "23:59:59")); + var newFilter = new BaseFilter(pageFilter.OrgId); + var taskYear = this.GetEntities(t => t.CREATE_DATE >= year && t.CREATE_DATE <= dt, new BaseFilter(pageFilter.OrgId)).ToList(); + newFilter.SelectField = new List { "ID", "PARENT_ID", "NAME", "Nav_Parent", "DEPARTMENT_TYPE" }; + var departmentInfos = this.GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, newFilter).ToList(); + //部门级 + var departGroupYear = taskYear.Where(t => t.DEPT_DEPARTMENT_ID != null && t.MOUDLE_NAME != null).ToList(); + var taskSixMonth = departGroupYear.Where(t => t.CREATE_DATE >= sixMonth).ToList(); + var taskThreeMonth = departGroupYear.Where(t => t.CREATE_DATE >= threeMonth).ToList(); + var taskMonth = departGroupYear.Where(t => t.CREATE_DATE >= month).ToList(); + var taskWeek = departGroupYear.Where(t => t.CREATE_DATE >= week).ToList(); + //车间级 + var shopGroupYear = taskYear.Where(t => t.SHOP_DEPARTMENT_ID != null && t.MOUDLE_NAME != null).ToList(); + var taskSixMonthShop = shopGroupYear.Where(t => t.CREATE_DATE >= sixMonth).ToList(); + var taskThreeMonthShop = shopGroupYear.Where(t => t.CREATE_DATE >= threeMonth).ToList(); + var taskMonthShop = shopGroupYear.Where(t => t.CREATE_DATE >= month).ToList(); + var taskWeekShop = shopGroupYear.Where(t => t.CREATE_DATE >= week).ToList(); + //班组级 + var classGroupYear = taskYear.Where(t => t.CLASS_DEPARTMENT_ID != null).ToList(); + var taskSixMonthClass = classGroupYear.Where(t => t.CREATE_DATE >= sixMonth).ToList(); + var taskThreeMonthClass = classGroupYear.Where(t => t.CREATE_DATE >= threeMonth).ToList(); + var taskMonthClass = classGroupYear.Where(t => t.CREATE_DATE >= month).ToList(); + var taskWeekClass = classGroupYear.Where(t => t.CREATE_DATE >= week).ToList(); + //年度 + if (departGroupYear.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastYear; - sum.TOTAL_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.部门; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - var groupYearMould = departGroupYear.GroupBy(t => t.MOUDLE_NAME).ToList(); - groupYearMould.ForEach(t => { - T_BI_MOULD_RUN_SUMMARY sum = new T_BI_MOULD_RUN_SUMMARY(); - sum.MOUDLE_NAME = t.Key; - sum.ORG_ID = pageFilter.OrgId; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastYear; - sum.TOTAL_QTY = t.Where(m => m.MOUDLE_NAME == t.Key).Count(); - sum.FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - mouldSummary.Add(sum); - }); - } - if (shopGroupYear.Any()) - { - var groupYearDepart = shopGroupYear.GroupBy(t => t.SHOP_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = departGroupYear.GroupBy(t => t.DEPT_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastYear; + sum.TOTAL_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.部门; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + var groupYearMould = departGroupYear.GroupBy(t => t.MOUDLE_NAME).ToList(); + groupYearMould.ForEach(t => + { + T_BI_MOULD_RUN_SUMMARY sum = new T_BI_MOULD_RUN_SUMMARY(); + sum.MOUDLE_NAME = t.Key; + sum.ORG_ID = pageFilter.OrgId; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastYear; + sum.TOTAL_QTY = t.Where(m => m.MOUDLE_NAME == t.Key).Count(); + sum.FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + mouldSummary.Add(sum); + }); + } + if (shopGroupYear.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastYear; - sum.TOTAL_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.车间; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - } - if (classGroupYear.Any()) - { - var groupYearDepart = classGroupYear.GroupBy(t => t.CLASS_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = shopGroupYear.GroupBy(t => t.SHOP_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastYear; + sum.TOTAL_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.车间; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + } + if (classGroupYear.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastYear; - sum.TOTAL_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.班组; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - } - //半年度 - if (taskSixMonth.Any()) - { - var groupYearDepart = taskSixMonth.GroupBy(t => t.DEPT_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = classGroupYear.GroupBy(t => t.CLASS_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastYear; + sum.TOTAL_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.班组; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + } + //半年度 + if (taskSixMonth.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastHalfYear; - sum.TOTAL_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.部门; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - var groupYearMould = taskSixMonth.GroupBy(t => t.MOUDLE_NAME).ToList(); - groupYearMould.ForEach(t => { - T_BI_MOULD_RUN_SUMMARY sum = new T_BI_MOULD_RUN_SUMMARY(); - sum.MOUDLE_NAME = t.Key; - sum.ORG_ID = pageFilter.OrgId; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastHalfYear; - sum.TOTAL_QTY = t.Where(m => m.MOUDLE_NAME == t.Key).Count(); - sum.FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - mouldSummary.Add(sum); - }); - } - if (taskSixMonthShop.Any()) - { - var groupYearDepart = taskSixMonthShop.GroupBy(t => t.SHOP_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskSixMonth.GroupBy(t => t.DEPT_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastHalfYear; + sum.TOTAL_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.部门; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + var groupYearMould = taskSixMonth.GroupBy(t => t.MOUDLE_NAME).ToList(); + groupYearMould.ForEach(t => + { + T_BI_MOULD_RUN_SUMMARY sum = new T_BI_MOULD_RUN_SUMMARY(); + sum.MOUDLE_NAME = t.Key; + sum.ORG_ID = pageFilter.OrgId; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastHalfYear; + sum.TOTAL_QTY = t.Where(m => m.MOUDLE_NAME == t.Key).Count(); + sum.FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + mouldSummary.Add(sum); + }); + } + if (taskSixMonthShop.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastHalfYear; - sum.TOTAL_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.车间; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - } - if (taskSixMonthClass.Any()) - { - var groupYearDepart = taskSixMonthClass.GroupBy(t => t.CLASS_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskSixMonthShop.GroupBy(t => t.SHOP_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastHalfYear; + sum.TOTAL_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.车间; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + } + if (taskSixMonthClass.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastHalfYear; - sum.TOTAL_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.班组; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - } - //三个月 - if (taskThreeMonth.Any()) - { - var groupYearDepart = taskThreeMonth.GroupBy(t => t.DEPT_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskSixMonthClass.GroupBy(t => t.CLASS_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastHalfYear; + sum.TOTAL_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.班组; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + } + //三个月 + if (taskThreeMonth.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastThreeMonth; - sum.TOTAL_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.部门; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - var groupYearMould = taskThreeMonth.GroupBy(t => t.MOUDLE_NAME).ToList(); - groupYearMould.ForEach(t => { - T_BI_MOULD_RUN_SUMMARY sum = new T_BI_MOULD_RUN_SUMMARY(); - sum.MOUDLE_NAME = t.Key; - sum.ORG_ID = pageFilter.OrgId; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastThreeMonth; - sum.TOTAL_QTY = t.Where(m => m.MOUDLE_NAME == t.Key).Count(); - sum.FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - mouldSummary.Add(sum); - }); - } - if (taskThreeMonthShop.Any()) - { - var groupYearDepart = taskThreeMonthShop.GroupBy(t => t.SHOP_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskThreeMonth.GroupBy(t => t.DEPT_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastThreeMonth; + sum.TOTAL_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.部门; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + var groupYearMould = taskThreeMonth.GroupBy(t => t.MOUDLE_NAME).ToList(); + groupYearMould.ForEach(t => + { + T_BI_MOULD_RUN_SUMMARY sum = new T_BI_MOULD_RUN_SUMMARY(); + sum.MOUDLE_NAME = t.Key; + sum.ORG_ID = pageFilter.OrgId; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastThreeMonth; + sum.TOTAL_QTY = t.Where(m => m.MOUDLE_NAME == t.Key).Count(); + sum.FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + mouldSummary.Add(sum); + }); + } + if (taskThreeMonthShop.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastThreeMonth; - sum.TOTAL_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.车间; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - } - if (taskThreeMonthClass.Any()) - { - var groupYearDepart = taskThreeMonthClass.GroupBy(t => t.CLASS_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskThreeMonthShop.GroupBy(t => t.SHOP_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastThreeMonth; + sum.TOTAL_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.车间; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + } + if (taskThreeMonthClass.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastThreeMonth; - sum.TOTAL_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.班组; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - } - //一个月 - if (taskMonth.Any()) - { - var groupYearDepart = taskMonth.GroupBy(t => t.DEPT_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskThreeMonthClass.GroupBy(t => t.CLASS_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastThreeMonth; + sum.TOTAL_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.班组; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + } + //一个月 + if (taskMonth.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastMonth; - sum.TOTAL_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.部门; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - var groupYearMould = taskMonth.GroupBy(t => t.MOUDLE_NAME).ToList(); - groupYearMould.ForEach(t => { - T_BI_MOULD_RUN_SUMMARY sum = new T_BI_MOULD_RUN_SUMMARY(); - sum.MOUDLE_NAME = t.Key; - sum.ORG_ID = pageFilter.OrgId; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastMonth; - sum.TOTAL_QTY = t.Where(m => m.MOUDLE_NAME == t.Key).Count(); - sum.FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - mouldSummary.Add(sum); - }); - } - if (taskMonthShop.Any()) - { - var groupYearDepart = taskMonthShop.GroupBy(t => t.SHOP_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskMonth.GroupBy(t => t.DEPT_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastMonth; + sum.TOTAL_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.部门; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + var groupYearMould = taskMonth.GroupBy(t => t.MOUDLE_NAME).ToList(); + groupYearMould.ForEach(t => + { + T_BI_MOULD_RUN_SUMMARY sum = new T_BI_MOULD_RUN_SUMMARY(); + sum.MOUDLE_NAME = t.Key; + sum.ORG_ID = pageFilter.OrgId; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastMonth; + sum.TOTAL_QTY = t.Where(m => m.MOUDLE_NAME == t.Key).Count(); + sum.FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + mouldSummary.Add(sum); + }); + } + if (taskMonthShop.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastMonth; - sum.TOTAL_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.车间; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - } - if (taskMonthClass.Any()) - { - var groupYearDepart = taskMonthClass.GroupBy(t => t.CLASS_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskMonthShop.GroupBy(t => t.SHOP_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastMonth; + sum.TOTAL_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.车间; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + } + if (taskMonthClass.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastMonth; - sum.TOTAL_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.班组; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - } - //一周 - if (taskWeek.Any()) - { - var groupYearDepart = taskWeek.GroupBy(t => t.DEPT_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskMonthClass.GroupBy(t => t.CLASS_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastMonth; + sum.TOTAL_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.班组; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + } + //一周 + if (taskWeek.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastWeek; - sum.TOTAL_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.部门; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - var groupYearMould = taskWeek.GroupBy(t => t.MOUDLE_NAME).ToList(); - groupYearMould.ForEach(t => { - T_BI_MOULD_RUN_SUMMARY sum = new T_BI_MOULD_RUN_SUMMARY(); - sum.MOUDLE_NAME = t.Key; - sum.ORG_ID = pageFilter.OrgId; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastWeek; - sum.TOTAL_QTY = t.Where(m => m.MOUDLE_NAME == t.Key).Count(); - sum.FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - mouldSummary.Add(sum); - }); - } - if (taskWeekShop.Any()) - { - var groupYearDepart = taskWeekShop.GroupBy(t => t.SHOP_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskWeek.GroupBy(t => t.DEPT_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastWeek; + sum.TOTAL_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.DEPT_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.部门; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + var groupYearMould = taskWeek.GroupBy(t => t.MOUDLE_NAME).ToList(); + groupYearMould.ForEach(t => + { + T_BI_MOULD_RUN_SUMMARY sum = new T_BI_MOULD_RUN_SUMMARY(); + sum.MOUDLE_NAME = t.Key; + sum.ORG_ID = pageFilter.OrgId; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastWeek; + sum.TOTAL_QTY = t.Where(m => m.MOUDLE_NAME == t.Key).Count(); + sum.FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.MOUDLE_NAME == t.Key && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + mouldSummary.Add(sum); + }); + } + if (taskWeekShop.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastWeek; - sum.TOTAL_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.车间; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - } - if (taskWeekClass.Any()) - { - var groupYearDepart = taskWeekClass.GroupBy(t => t.CLASS_DEPARTMENT_ID).ToList(); - groupYearDepart.ForEach(t => + var groupYearDepart = taskWeekShop.GroupBy(t => t.SHOP_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastWeek; + sum.TOTAL_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.SHOP_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.车间; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + } + if (taskWeekClass.Any()) { - T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); - sum.DEPARTMENT_ID = t.Key.Value; - sum.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); - sum.DEPARTMENT_NAME = depart?.NAME; - sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; - sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastWeek; - sum.TOTAL_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value).Count(); - sum.FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); - sum.OVER_FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); - sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; - sum.DEPARTMENT_TYPE = FMDepartmentType.班组; - var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; - sum.FINISH_RATE = temp.ToString("0"); - var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; - sum.NORMAL_FINISH_RATE = temp2.ToString("0"); - departSummary.Add(sum); - }); - } - //折线图 - List monthRuns = new List(); - var ksDepartId = departmentInfos.FirstOrDefault(t => t.NAME == "矿山部")?.ID; - var xkDepartId = departmentInfos.FirstOrDefault(t => t.NAME == "选矿部")?.ID; - var currentMonth = DateTime.Now.Month; //获取当月 - var currentDay = DateTime.Now.Day; //...........天 + var groupYearDepart = taskWeekClass.GroupBy(t => t.CLASS_DEPARTMENT_ID).ToList(); + groupYearDepart.ForEach(t => + { + T_BI_SYSTEM_RUN_SUMMARY sum = new T_BI_SYSTEM_RUN_SUMMARY(); + sum.DEPARTMENT_ID = t.Key.Value; + sum.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == t.Key.Value); + sum.DEPARTMENT_NAME = depart?.NAME; + sum.PARENT_DEPARTMENT_ID = depart?.PARENT_ID; + sum.TYPE = MS.Domain.Enums.BI.BIEnums.FilterTimeType.LastWeek; + sum.TOTAL_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value).Count(); + sum.FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 1).Count(); + sum.OVER_FINISH_QTY = t.Where(m => m.CLASS_DEPARTMENT_ID == t.Key.Value && m.NOTICE_STATUS == 2).Count(); + sum.UNFINISH_QTY = sum.TOTAL_QTY - sum.FINISH_QTY - sum.OVER_FINISH_QTY; + sum.DEPARTMENT_TYPE = FMDepartmentType.班组; + var temp = sum.TOTAL_QTY == 0 ? 0 : (double)(sum.FINISH_QTY + sum.OVER_FINISH_QTY) / sum.TOTAL_QTY * 100; + sum.FINISH_RATE = temp.ToString("0"); + var temp2 = sum.TOTAL_QTY == 0 ? 0 : (double)sum.FINISH_QTY / sum.TOTAL_QTY * 100; + sum.NORMAL_FINISH_RATE = temp2.ToString("0"); + departSummary.Add(sum); + }); + } + //折线图 + List monthRuns = new List(); + var ksDepartId = departmentInfos.FirstOrDefault(t => t.NAME == "矿山部")?.ID; + var xkDepartId = departmentInfos.FirstOrDefault(t => t.NAME == "选矿部")?.ID; + var currentMonth = DateTime.Now.Month; //获取当月 + var currentDay = DateTime.Now.Day; //...........天 - for (int i = 1; i <= 12; i++) - { - var monthStart = DateTime.Now.AddMonths(i - currentMonth).AddDays(1 - currentDay); - var monthEnd = DateTime.Now.AddMonths(i - currentMonth + 1).AddDays(1 - currentDay - 1); - var ksJantask = taskYear.Where(t => t.CREATE_DATE >= monthStart && t.CREATE_DATE <= monthEnd && t.DEPT_DEPARTMENT_ID == ksDepartId).ToList(); - if (ksJantask.Any()) + for (int i = 1; i <= 12; i++) { - T_BI_DEPARTMENT_MONTH_RUN run = new T_BI_DEPARTMENT_MONTH_RUN(); - run.DEPARTMENT_ID = ksDepartId.Value; - run.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == ksDepartId.Value); - run.DEPARTMENT_NAME = depart?.NAME; - run.MONTH = monthStart; - run.MONTHStr = monthStart.Year + "年" + monthStart.Month + "月"; - var total = ksJantask.Count(); - var finish = ksJantask.Where(t => t.NOTICE_STATUS == 1).Count(); - var overFinish = ksJantask.Where(t => t.NOTICE_STATUS == 2).Count(); - var temp = total == 0 ? 0 : (double)(finish + overFinish) / total * 100; - run.FINISH_RATE = temp.ToString("0"); - var temp2 = total == 0 ? 0 : (double)finish / total * 100; - run.NORMAL_FINISH_RATE = temp2.ToString("0"); - monthRuns.Add(run); - } - else - { - T_BI_DEPARTMENT_MONTH_RUN run = new T_BI_DEPARTMENT_MONTH_RUN(); - run.DEPARTMENT_ID = ksDepartId.Value; - run.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == ksDepartId.Value); - run.DEPARTMENT_NAME = depart?.NAME; - run.MONTH = monthStart; - run.MONTHStr = monthStart.Year + "年" + monthStart.Month + "月"; - run.FINISH_RATE = "0"; - run.NORMAL_FINISH_RATE = "0"; - if (i == 12) + var monthStart = DateTime.Now.AddMonths(i - currentMonth).AddDays(1 - currentDay); + var monthEnd = DateTime.Now.AddMonths(i - currentMonth + 1).AddDays(1 - currentDay - 1); + var ksJantask = taskYear.Where(t => t.CREATE_DATE >= monthStart && t.CREATE_DATE <= monthEnd && t.DEPT_DEPARTMENT_ID == ksDepartId).ToList(); + if (ksJantask.Any()) { - var lastInfo = monthRuns.FirstOrDefault(t => t.DEPARTMENT_ID == ksDepartId.Value && t.MONTHStr == monthStart.Year + "年" + monthStart.AddMonths(-1).Month + "月"); - if (lastInfo != null) - { - run.FINISH_RATE = lastInfo.FINISH_RATE; - run.NORMAL_FINISH_RATE = lastInfo.NORMAL_FINISH_RATE; - } + T_BI_DEPARTMENT_MONTH_RUN run = new T_BI_DEPARTMENT_MONTH_RUN(); + run.DEPARTMENT_ID = ksDepartId.Value; + run.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == ksDepartId.Value); + run.DEPARTMENT_NAME = depart?.NAME; + run.MONTH = monthStart; + run.MONTHStr = monthStart.Year + "年" + monthStart.Month + "月"; + var total = ksJantask.Count(); + var finish = ksJantask.Where(t => t.NOTICE_STATUS == 1).Count(); + var overFinish = ksJantask.Where(t => t.NOTICE_STATUS == 2).Count(); + var temp = total == 0 ? 0 : (double)(finish + overFinish) / total * 100; + run.FINISH_RATE = temp.ToString("0"); + var temp2 = total == 0 ? 0 : (double)finish / total * 100; + run.NORMAL_FINISH_RATE = temp2.ToString("0"); + monthRuns.Add(run); } - monthRuns.Add(run); - } - var xkJantask = taskYear.Where(t => t.CREATE_DATE >= monthStart && t.CREATE_DATE <= monthEnd && t.DEPT_DEPARTMENT_ID == xkDepartId).ToList(); - if (xkJantask.Any()) - { - T_BI_DEPARTMENT_MONTH_RUN run = new T_BI_DEPARTMENT_MONTH_RUN(); - run.DEPARTMENT_ID = xkDepartId.Value; - run.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == xkDepartId.Value); - run.DEPARTMENT_NAME = depart?.NAME; - run.MONTH = monthStart; - run.MONTHStr = monthStart.Year + "年" + monthStart.Month + "月"; - var total = xkJantask.Count(); - var finish = xkJantask.Where(t => t.NOTICE_STATUS == 1).Count(); - var overFinish = xkJantask.Where(t => t.NOTICE_STATUS == 2).Count(); - var temp = total == 0 ? 0 : (double)(finish + overFinish) / total * 100; - run.FINISH_RATE = temp.ToString("0"); - var temp2 = total == 0 ? 0 : (double)finish / total * 100; - run.NORMAL_FINISH_RATE = temp2.ToString("0"); - monthRuns.Add(run); - } - else - { - T_BI_DEPARTMENT_MONTH_RUN run = new T_BI_DEPARTMENT_MONTH_RUN(); - run.DEPARTMENT_ID = xkDepartId.Value; - run.ORG_ID = pageFilter.OrgId; - var depart = departmentInfos.FirstOrDefault(m => m.ID == xkDepartId.Value); - run.DEPARTMENT_NAME = depart?.NAME; - run.MONTH = monthStart; - run.MONTHStr = monthStart.Year + "年" + monthStart.Month + "月"; - run.FINISH_RATE = "0"; - run.NORMAL_FINISH_RATE = "0"; - if (i == 12) + else { - var lastInfo = monthRuns.FirstOrDefault(t => t.DEPARTMENT_ID == xkDepartId.Value && t.MONTHStr == monthStart.Year + "年" + monthStart.AddMonths(-1).Month + "月"); - if (lastInfo != null) + T_BI_DEPARTMENT_MONTH_RUN run = new T_BI_DEPARTMENT_MONTH_RUN(); + run.DEPARTMENT_ID = ksDepartId.Value; + run.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == ksDepartId.Value); + run.DEPARTMENT_NAME = depart?.NAME; + run.MONTH = monthStart; + run.MONTHStr = monthStart.Year + "年" + monthStart.Month + "月"; + run.FINISH_RATE = "0"; + run.NORMAL_FINISH_RATE = "0"; + if (i == 12) { - run.FINISH_RATE = lastInfo.FINISH_RATE; - run.NORMAL_FINISH_RATE = lastInfo.NORMAL_FINISH_RATE; + var lastInfo = monthRuns.FirstOrDefault(t => t.DEPARTMENT_ID == ksDepartId.Value && t.MONTHStr == monthStart.Year + "年" + monthStart.AddMonths(-1).Month + "月"); + if (lastInfo != null) + { + run.FINISH_RATE = lastInfo.FINISH_RATE; + run.NORMAL_FINISH_RATE = lastInfo.NORMAL_FINISH_RATE; + } } + monthRuns.Add(run); + } + var xkJantask = taskYear.Where(t => t.CREATE_DATE >= monthStart && t.CREATE_DATE <= monthEnd && t.DEPT_DEPARTMENT_ID == xkDepartId).ToList(); + if (xkJantask.Any()) + { + T_BI_DEPARTMENT_MONTH_RUN run = new T_BI_DEPARTMENT_MONTH_RUN(); + run.DEPARTMENT_ID = xkDepartId.Value; + run.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == xkDepartId.Value); + run.DEPARTMENT_NAME = depart?.NAME; + run.MONTH = monthStart; + run.MONTHStr = monthStart.Year + "年" + monthStart.Month + "月"; + var total = xkJantask.Count(); + var finish = xkJantask.Where(t => t.NOTICE_STATUS == 1).Count(); + var overFinish = xkJantask.Where(t => t.NOTICE_STATUS == 2).Count(); + var temp = total == 0 ? 0 : (double)(finish + overFinish) / total * 100; + run.FINISH_RATE = temp.ToString("0"); + var temp2 = total == 0 ? 0 : (double)finish / total * 100; + run.NORMAL_FINISH_RATE = temp2.ToString("0"); + monthRuns.Add(run); + } + else + { + T_BI_DEPARTMENT_MONTH_RUN run = new T_BI_DEPARTMENT_MONTH_RUN(); + run.DEPARTMENT_ID = xkDepartId.Value; + run.ORG_ID = pageFilter.OrgId; + var depart = departmentInfos.FirstOrDefault(m => m.ID == xkDepartId.Value); + run.DEPARTMENT_NAME = depart?.NAME; + run.MONTH = monthStart; + run.MONTHStr = monthStart.Year + "年" + monthStart.Month + "月"; + run.FINISH_RATE = "0"; + run.NORMAL_FINISH_RATE = "0"; + if (i == 12) + { + var lastInfo = monthRuns.FirstOrDefault(t => t.DEPARTMENT_ID == xkDepartId.Value && t.MONTHStr == monthStart.Year + "年" + monthStart.AddMonths(-1).Month + "月"); + if (lastInfo != null) + { + run.FINISH_RATE = lastInfo.FINISH_RATE; + run.NORMAL_FINISH_RATE = lastInfo.NORMAL_FINISH_RATE; + } + } + monthRuns.Add(run); } - monthRuns.Add(run); } + var deleteIds = this.GetEntities(t => true, new BaseFilter(pageFilter.OrgId)).Select(m => m.ID).ToList(); + var deletemouIds = this.GetEntities(t => true, new BaseFilter(pageFilter.OrgId)).Select(m => m.ID).ToList(); + var deletemonthIds = this.GetEntities(t => true, new BaseFilter(pageFilter.OrgId)).Select(m => m.ID).ToList(); + this.UnifiedCommit(() => + { + if (deleteIds != null && deleteIds.Any()) + BantchDeleteEntityNoCommit(deleteIds); + if (deleteIds != null && deleteIds.Any()) + BantchDeleteEntityNoCommit(deletemouIds); + if (deleteIds != null && deleteIds.Any()) + BantchDeleteEntityNoCommit(deletemonthIds); + if (departSummary != null && departSummary.Any()) + BantchSaveEntityNoCommit(departSummary); + if (mouldSummary != null && mouldSummary.Any()) + BantchSaveEntityNoCommit(mouldSummary); + if (monthRuns != null && monthRuns.Any()) + BantchSaveEntityNoCommit(monthRuns); + }); } - var deleteIds = this.GetEntities(t => true, new BaseFilter(pageFilter.OrgId)).Select(m => m.ID).ToList(); - var deletemouIds = this.GetEntities(t => true, new BaseFilter(pageFilter.OrgId)).Select(m => m.ID).ToList(); - var deletemonthIds = this.GetEntities(t => true, new BaseFilter(pageFilter.OrgId)).Select(m => m.ID).ToList(); - this.UnifiedCommit(() => + catch (Exception ex) { - if (deleteIds != null && deleteIds.Any()) - BantchDeleteEntityNoCommit(deleteIds); - if (deleteIds != null && deleteIds.Any()) - BantchDeleteEntityNoCommit(deletemouIds); - if (deleteIds != null && deleteIds.Any()) - BantchDeleteEntityNoCommit(deletemonthIds); - if (departSummary != null && departSummary.Any()) - BantchSaveEntityNoCommit(departSummary); - if (mouldSummary != null && mouldSummary.Any()) - BantchSaveEntityNoCommit(mouldSummary); - if (monthRuns != null && monthRuns.Any()) - BantchSaveEntityNoCommit(monthRuns); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -3234,42 +3280,52 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - var dt = DateTime.Now; - //最近一天 - DateTime week = dt.AddDays(-1).Date; - if (!string.IsNullOrEmpty(pageFilter.Parameter1)) + try { - if (!pageFilter.Parameter1.Contains("|")) - throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); - var temp = pageFilter.Parameter1.Split("|"); - if (temp[1].Length == 0) - throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); - week = DateTime.Parse(temp[0]); - dt = DateTime.Parse(temp[1]); + var dt = DateTime.Now; + //最近一天 + DateTime week = dt.AddDays(-1).Date; + if (!string.IsNullOrEmpty(pageFilter.Parameter1)) + { + if (!pageFilter.Parameter1.Contains("|")) + throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); + var temp = pageFilter.Parameter1.Split("|"); + if (temp[1].Length == 0) + throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); + week = DateTime.Parse(temp[0]); + dt = DateTime.Parse(temp[1]); + } + var formInfos = this.GetEntities(t => t.TABLE_NAME != null, new BaseFilter(pageFilter.OrgId)).ToList(); + var formCodes = formInfos.Select(t => t.CODE).Distinct().ToList(); + var taskInfos = this.GetEntities(t => t.CREATE_TIME >= week && t.CREATE_TIME <= dt && t.SOURCE_FORMCODE != "PF135" && t.SOURCE_FORMCODE != "PF119" && t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.NOTICE_TYPE != 2 && t.SOURCE_FORMCODE != null && t.TABLE_NAME == null, new BaseFilter(pageFilter.OrgId)).ToList(); + taskInfos.ForEach(t => + { + if (t.SOURCE_FORMCODE.Contains("_SHOWPRINT")) + { + var table = formInfos.FirstOrDefault(m => m.CODE == t.SOURCE_FORMCODE.Split('_')[0]); + if (table != null) + t.TABLE_NAME = table.TABLE_NAME; + } + else + { + var table = formInfos.FirstOrDefault(m => m.CODE == t.SOURCE_FORMCODE); + if (table != null) + t.TABLE_NAME = table.TABLE_NAME; + } + }); + this.UnifiedCommit(() => + { + if (taskInfos != null && taskInfos.Any()) + BantchSaveEntityNoCommit(taskInfos); + }); } - var formInfos = this.GetEntities(t => t.TABLE_NAME != null, new BaseFilter(pageFilter.OrgId)).ToList(); - var formCodes = formInfos.Select(t => t.CODE).Distinct().ToList(); - var taskInfos = this.GetEntities(t => t.CREATE_TIME >= week && t.CREATE_TIME <= dt && t.SOURCE_FORMCODE != "PF135" && t.SOURCE_FORMCODE != "PF119" && t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.NOTICE_TYPE != 2 && t.SOURCE_FORMCODE != null && t.TABLE_NAME == null, new BaseFilter(pageFilter.OrgId)).ToList(); - taskInfos.ForEach(t => + catch (Exception ex) { - if (t.SOURCE_FORMCODE.Contains("_SHOWPRINT")) - { - var table = formInfos.FirstOrDefault(m => m.CODE == t.SOURCE_FORMCODE.Split('_')[0]); - if (table != null) - t.TABLE_NAME = table.TABLE_NAME; - } + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); else - { - var table = formInfos.FirstOrDefault(m => m.CODE == t.SOURCE_FORMCODE); - if (table != null) - t.TABLE_NAME = table.TABLE_NAME; - } - }); - this.UnifiedCommit(() => - { - if (taskInfos != null && taskInfos.Any()) - BantchSaveEntityNoCommit(taskInfos); - }); + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -3286,27 +3342,38 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - var dt = DateTime.Now; - //最近一周 - DateTime week = dt.AddDays(-7).Date; - var taskInfos = this.GetEntities(t => t.CREATE_TIME >= week && (t.SOURCE_FORMCODE == "PF135" || t.SOURCE_FORMCODE == "PF119" || t.NOTICE_TITLE.Contains("审核")), new BaseFilter(pageFilter.OrgId)).ToList(); - if (taskInfos.Any()) + try { - taskInfos.ForEach(t => + var dt = DateTime.Now; + //最近一周 + DateTime week = dt.AddDays(-7).Date; + var taskInfos = this.GetEntities(t => t.CREATE_TIME >= week && (t.SOURCE_FORMCODE == "PF135" || t.SOURCE_FORMCODE == "PF119" || t.NOTICE_TITLE.Contains("审核")), new BaseFilter(pageFilter.OrgId)).ToList(); + if (taskInfos.Any()) { - if (t.SOURCE_FORMCODE == "PF135") - t.NOTICE_TYPE = 7; - if (t.SOURCE_FORMCODE == "PF119") - t.NOTICE_TYPE = 8; - if (t.SOURCE_FORMCODE != "PF119" && t.NOTICE_TITLE.Contains("审核")) - t.NOTICE_TYPE = 8; + taskInfos.ForEach(t => + { + if (t.SOURCE_FORMCODE == "PF135") + t.NOTICE_TYPE = 7; + if (t.SOURCE_FORMCODE == "PF119") + t.NOTICE_TYPE = 8; + if (t.SOURCE_FORMCODE != "PF119" && t.NOTICE_TITLE.Contains("审核")) + t.NOTICE_TYPE = 8; + }); + } + this.UnifiedCommit(() => + { + if (taskInfos != null && taskInfos.Any()) + BantchSaveEntityNoCommit(taskInfos); }); + } - this.UnifiedCommit(() => + catch (Exception ex) { - if (taskInfos != null && taskInfos.Any()) - BantchSaveEntityNoCommit(taskInfos); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -3323,164 +3390,174 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - var dt = DateTime.Now; - //最近一周 - DateTime week = dt.AddDays(-7).Date; - //最近一年 - var taskInfos = new List(); - var biTaskInfos = new List(); - var addTaskInfos = new List(); - var newFilter = new BaseFilter(pageFilter.OrgId); - if (!string.IsNullOrEmpty(pageFilter.Parameter1)) + try { - if (!pageFilter.Parameter1.Contains("|")) - throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); - var temp = pageFilter.Parameter1.Split("|"); - if (temp[1].Length == 0) - throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); - DateTime year = DateTime.Parse(temp[0]); - DateTime yearEnd = DateTime.Parse(temp[1]); - newFilter.SelectField = new List { "SOURCE_DATA_ID" }; - biTaskInfos = this.GetEntities(t => t.CREATE_DATE >= year && t.CREATE_DATE < yearEnd, newFilter).ToList(); - var dataIds = biTaskInfos.Select(t => t.SOURCE_DATA_ID).Distinct().ToList(); - newFilter.SelectField = new List { "NOTICE_TITLE", "NOTICE_STATUS", "USER_ID", "SOURCE_FORMCODE", "SOURCE_DATA_ID", "CREATE_TIME", "CREATER_ID" }; - taskInfos = this.GetEntities(t => t.CREATE_TIME >= year && t.CREATE_TIME < yearEnd && t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.USER_ID != null, newFilter).ToList(); - taskInfos = taskInfos.Where(t => !dataIds.Contains(t.SOURCE_DATA_ID) && !t.NOTICE_TITLE.Contains("审核") && t.SOURCE_FORMCODE != "PF135" && t.SOURCE_FORMCODE != "PF119").ToList(); - } - else - { - newFilter.SelectField = new List { "SOURCE_DATA_ID" }; - biTaskInfos = this.GetEntities(t => t.CREATE_DATE >= week, newFilter).ToList(); - var dataIds = biTaskInfos.Select(t => t.SOURCE_DATA_ID).Distinct().ToList(); - newFilter.SelectField = new List { "NOTICE_TITLE", "NOTICE_STATUS", "USER_ID", "SOURCE_FORMCODE", "SOURCE_DATA_ID", "CREATE_TIME", "CREATER_ID" }; - taskInfos = this.GetEntities(t => t.CREATE_TIME >= week && t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.USER_ID != null, newFilter).ToList(); - taskInfos = taskInfos.Where(t => !dataIds.Contains(t.SOURCE_DATA_ID) && !t.NOTICE_TITLE.Contains("审核") && t.SOURCE_FORMCODE != "PF135" && t.SOURCE_FORMCODE != "PF119").ToList(); - } - //按sourcedataid分类 - var groupTasks = taskInfos.GroupBy(t => t.SOURCE_DATA_ID).Select(p => new T_FM_NOTIFICATION_TASK - { - SOURCE_DATA_ID = p.Key, - NOTICE_TITLE = p.Where(q => q.SOURCE_DATA_ID == p.Key).OrderBy(g => g.CREATE_TIME).FirstOrDefault().NOTICE_TITLE, - USER_ID = p.Where(q => q.SOURCE_DATA_ID == p.Key).OrderBy(g => g.CREATE_TIME).FirstOrDefault().USER_ID, - CREATER_ID = p.Where(q => q.SOURCE_DATA_ID == p.Key).OrderBy(g => g.CREATE_TIME).FirstOrDefault().CREATER_ID, - CREATE_TIME = p.Where(q => q.SOURCE_DATA_ID == p.Key).OrderBy(g => g.CREATE_TIME).FirstOrDefault().CREATE_TIME, - SOURCE_FORMCODE = p.Where(q => q.SOURCE_DATA_ID == p.Key).OrderBy(g => g.CREATE_TIME).FirstOrDefault().SOURCE_FORMCODE, - NOTICE_STATUS = p.Where(q => q.SOURCE_DATA_ID == p.Key && q.NOTICE_STATUS == 0).FirstOrDefault() != null ? 0 : (p.Where(q => q.SOURCE_DATA_ID == p.Key && q.NOTICE_STATUS == 2).FirstOrDefault() != null ? 2 : 1), - }).ToList(); - //人员表 - newFilter.SelectField = new List { "ID", "DEPARTMENT_ID" }; - var userIds = groupTasks.Select(t => t.USER_ID).Distinct().ToList(); - var userInfos = this.GetEntities(t => userIds.Contains(t.ID) && t.ENABLE_STATUS == 0, newFilter).ToList(); - //部门表 - newFilter.SelectField = new List { "ID", "PARENT_ID", "DEPARTMENT_TYPE", "Nav_Parent" }; - var departmentInfos = this.GetEntities(t => t.ENABLE_STATUS == 0, newFilter).ToList(); - if (groupTasks.Any()) - { - groupTasks.ForEach(t => + var dt = DateTime.Now; + //最近一周 + DateTime week = dt.AddDays(-7).Date; + //最近一年 + var taskInfos = new List(); + var biTaskInfos = new List(); + var addTaskInfos = new List(); + var newFilter = new BaseFilter(pageFilter.OrgId); + if (!string.IsNullOrEmpty(pageFilter.Parameter1)) { - T_BI_NOTIFICATION_TASK task = new T_BI_NOTIFICATION_TASK(); - task.ORG_ID = pageFilter.OrgId; - task.SOURCE_DATA_ID = t.SOURCE_DATA_ID; - task.CREATE_USER_ID = t.CREATER_ID; - task.NOTICE_STATUS = t.NOTICE_STATUS; - task.NOTICE_TITLE = t.NOTICE_TITLE; - task.SOURCE_FORMCODE = t.SOURCE_FORMCODE; - task.CREATE_DATE = t.CREATE_TIME; - var user = userInfos.FirstOrDefault(m => m.ID == t.USER_ID); - if (user != null) + if (!pageFilter.Parameter1.Contains("|")) + throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); + var temp = pageFilter.Parameter1.Split("|"); + if (temp[1].Length == 0) + throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); + DateTime year = DateTime.Parse(temp[0]); + DateTime yearEnd = DateTime.Parse(temp[1]); + newFilter.SelectField = new List { "SOURCE_DATA_ID" }; + biTaskInfos = this.GetEntities(t => t.CREATE_DATE >= year && t.CREATE_DATE < yearEnd, newFilter).ToList(); + var dataIds = biTaskInfos.Select(t => t.SOURCE_DATA_ID).Distinct().ToList(); + newFilter.SelectField = new List { "NOTICE_TITLE", "NOTICE_STATUS", "USER_ID", "SOURCE_FORMCODE", "SOURCE_DATA_ID", "CREATE_TIME", "CREATER_ID" }; + taskInfos = this.GetEntities(t => t.CREATE_TIME >= year && t.CREATE_TIME < yearEnd && t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.USER_ID != null, newFilter).ToList(); + taskInfos = taskInfos.Where(t => !dataIds.Contains(t.SOURCE_DATA_ID) && !t.NOTICE_TITLE.Contains("审核") && t.SOURCE_FORMCODE != "PF135" && t.SOURCE_FORMCODE != "PF119").ToList(); + } + else + { + newFilter.SelectField = new List { "SOURCE_DATA_ID" }; + biTaskInfos = this.GetEntities(t => t.CREATE_DATE >= week, newFilter).ToList(); + var dataIds = biTaskInfos.Select(t => t.SOURCE_DATA_ID).Distinct().ToList(); + newFilter.SelectField = new List { "NOTICE_TITLE", "NOTICE_STATUS", "USER_ID", "SOURCE_FORMCODE", "SOURCE_DATA_ID", "CREATE_TIME", "CREATER_ID" }; + taskInfos = this.GetEntities(t => t.CREATE_TIME >= week && t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.USER_ID != null, newFilter).ToList(); + taskInfos = taskInfos.Where(t => !dataIds.Contains(t.SOURCE_DATA_ID) && !t.NOTICE_TITLE.Contains("审核") && t.SOURCE_FORMCODE != "PF135" && t.SOURCE_FORMCODE != "PF119").ToList(); + } + //按sourcedataid分类 + var groupTasks = taskInfos.GroupBy(t => t.SOURCE_DATA_ID).Select(p => new T_FM_NOTIFICATION_TASK + { + SOURCE_DATA_ID = p.Key, + NOTICE_TITLE = p.Where(q => q.SOURCE_DATA_ID == p.Key).OrderBy(g => g.CREATE_TIME).FirstOrDefault().NOTICE_TITLE, + USER_ID = p.Where(q => q.SOURCE_DATA_ID == p.Key).OrderBy(g => g.CREATE_TIME).FirstOrDefault().USER_ID, + CREATER_ID = p.Where(q => q.SOURCE_DATA_ID == p.Key).OrderBy(g => g.CREATE_TIME).FirstOrDefault().CREATER_ID, + CREATE_TIME = p.Where(q => q.SOURCE_DATA_ID == p.Key).OrderBy(g => g.CREATE_TIME).FirstOrDefault().CREATE_TIME, + SOURCE_FORMCODE = p.Where(q => q.SOURCE_DATA_ID == p.Key).OrderBy(g => g.CREATE_TIME).FirstOrDefault().SOURCE_FORMCODE, + NOTICE_STATUS = p.Where(q => q.SOURCE_DATA_ID == p.Key && q.NOTICE_STATUS == 0).FirstOrDefault() != null ? 0 : (p.Where(q => q.SOURCE_DATA_ID == p.Key && q.NOTICE_STATUS == 2).FirstOrDefault() != null ? 2 : 1), + }).ToList(); + //人员表 + newFilter.SelectField = new List { "ID", "DEPARTMENT_ID" }; + var userIds = groupTasks.Select(t => t.USER_ID).Distinct().ToList(); + var userInfos = this.GetEntities(t => userIds.Contains(t.ID) && t.ENABLE_STATUS == 0, newFilter).ToList(); + //部门表 + newFilter.SelectField = new List { "ID", "PARENT_ID", "DEPARTMENT_TYPE", "Nav_Parent" }; + var departmentInfos = this.GetEntities(t => t.ENABLE_STATUS == 0, newFilter).ToList(); + if (groupTasks.Any()) + { + groupTasks.ForEach(t => { - var depart = departmentInfos.FirstOrDefault(m => m.ID == user.DEPARTMENT_ID); - if (depart != null) + T_BI_NOTIFICATION_TASK task = new T_BI_NOTIFICATION_TASK(); + task.ORG_ID = pageFilter.OrgId; + task.SOURCE_DATA_ID = t.SOURCE_DATA_ID; + task.CREATE_USER_ID = t.CREATER_ID; + task.NOTICE_STATUS = t.NOTICE_STATUS; + task.NOTICE_TITLE = t.NOTICE_TITLE; + task.SOURCE_FORMCODE = t.SOURCE_FORMCODE; + task.CREATE_DATE = t.CREATE_TIME; + var user = userInfos.FirstOrDefault(m => m.ID == t.USER_ID); + if (user != null) { - task.DEPARTMENT_ID = depart.ID; - if (depart.DEPARTMENT_TYPE == 2) + var depart = departmentInfos.FirstOrDefault(m => m.ID == user.DEPARTMENT_ID); + if (depart != null) { - task.CLASS_DEPARTMENT_ID = depart.ID; - task.SHOP_DEPARTMENT_ID = depart.PARENT_ID; - task.DEPT_DEPARTMENT_ID = depart.Nav_Parent?.PARENT_ID; - } - else if (depart.DEPARTMENT_TYPE == 1) - { - task.SHOP_DEPARTMENT_ID = depart.ID; - task.DEPT_DEPARTMENT_ID = depart.PARENT_ID; - } - else if (depart.DEPARTMENT_TYPE == 0) - { - task.DEPT_DEPARTMENT_ID = depart.ID; + task.DEPARTMENT_ID = depart.ID; + if (depart.DEPARTMENT_TYPE == 2) + { + task.CLASS_DEPARTMENT_ID = depart.ID; + task.SHOP_DEPARTMENT_ID = depart.PARENT_ID; + task.DEPT_DEPARTMENT_ID = depart.Nav_Parent?.PARENT_ID; + } + else if (depart.DEPARTMENT_TYPE == 1) + { + task.SHOP_DEPARTMENT_ID = depart.ID; + task.DEPT_DEPARTMENT_ID = depart.PARENT_ID; + } + else if (depart.DEPARTMENT_TYPE == 0) + { + task.DEPT_DEPARTMENT_ID = depart.ID; + } } } - } - if (t.SOURCE_FORMCODE.StartsWith("HM") || t.SOURCE_FORMCODE.StartsWith("hm")) - { - task.MOUDLE_NAME = "风险管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("FO") || t.SOURCE_FORMCODE.StartsWith("fo")) - { - task.MOUDLE_NAME = "作业现场管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("BS") || t.SOURCE_FORMCODE.StartsWith("bs")) - { - task.MOUDLE_NAME = "安全检查"; - } - if (t.SOURCE_FORMCODE.StartsWith("LR") || t.SOURCE_FORMCODE.StartsWith("lr")) - { - task.MOUDLE_NAME = "法律法规与其他要求"; - } - if (t.SOURCE_FORMCODE.StartsWith("SE") || t.SOURCE_FORMCODE.StartsWith("se")) - { - task.MOUDLE_NAME = "安全教育培训"; - } - if (t.SOURCE_FORMCODE.StartsWith("PT") || t.SOURCE_FORMCODE.StartsWith("pt")) - { - task.MOUDLE_NAME = "方针与目标管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("PE") || t.SOURCE_FORMCODE.StartsWith("pe")) - { - task.MOUDLE_NAME = "绩效测量与评价"; - } - if (t.SOURCE_FORMCODE.StartsWith("PR") || t.SOURCE_FORMCODE.StartsWith("pr")) - { - task.MOUDLE_NAME = "生产工艺管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("AE") || t.SOURCE_FORMCODE.StartsWith("ae")) - { - task.MOUDLE_NAME = "事故事件"; - } - if (t.SOURCE_FORMCODE.StartsWith("OG") || t.SOURCE_FORMCODE.StartsWith("og")) - { - task.MOUDLE_NAME = "安全生产组织保障"; - } - if (t.SOURCE_FORMCODE.StartsWith("TI") || t.SOURCE_FORMCODE.StartsWith("ti")) - { - task.MOUDLE_NAME = "安全投入、科技与工伤"; - } - if (t.SOURCE_FORMCODE.StartsWith("OH") || t.SOURCE_FORMCODE.StartsWith("oh")) - { - task.MOUDLE_NAME = "职业卫生"; - } - if (t.SOURCE_FORMCODE.StartsWith("CM") || t.SOURCE_FORMCODE.StartsWith("cm")) - { - task.MOUDLE_NAME = "应急管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("DM") || t.SOURCE_FORMCODE.StartsWith("dm")) - { - task.MOUDLE_NAME = "机电安全管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("SC") || t.SOURCE_FORMCODE.StartsWith("sc")) - { - if (t.TABLE_NAME != null && t.TABLE_NAME.StartsWith("T_SC_MT")) - task.MOUDLE_NAME = "会议管理"; - else - task.MOUDLE_NAME = "标准化创建"; - } - addTaskInfos.Add(task); + if (t.SOURCE_FORMCODE.StartsWith("HM") || t.SOURCE_FORMCODE.StartsWith("hm")) + { + task.MOUDLE_NAME = "风险管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("FO") || t.SOURCE_FORMCODE.StartsWith("fo")) + { + task.MOUDLE_NAME = "作业现场管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("BS") || t.SOURCE_FORMCODE.StartsWith("bs")) + { + task.MOUDLE_NAME = "安全检查"; + } + if (t.SOURCE_FORMCODE.StartsWith("LR") || t.SOURCE_FORMCODE.StartsWith("lr")) + { + task.MOUDLE_NAME = "法律法规与其他要求"; + } + if (t.SOURCE_FORMCODE.StartsWith("SE") || t.SOURCE_FORMCODE.StartsWith("se")) + { + task.MOUDLE_NAME = "安全教育培训"; + } + if (t.SOURCE_FORMCODE.StartsWith("PT") || t.SOURCE_FORMCODE.StartsWith("pt")) + { + task.MOUDLE_NAME = "方针与目标管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("PE") || t.SOURCE_FORMCODE.StartsWith("pe")) + { + task.MOUDLE_NAME = "绩效测量与评价"; + } + if (t.SOURCE_FORMCODE.StartsWith("PR") || t.SOURCE_FORMCODE.StartsWith("pr")) + { + task.MOUDLE_NAME = "生产工艺管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("AE") || t.SOURCE_FORMCODE.StartsWith("ae")) + { + task.MOUDLE_NAME = "事故事件"; + } + if (t.SOURCE_FORMCODE.StartsWith("OG") || t.SOURCE_FORMCODE.StartsWith("og")) + { + task.MOUDLE_NAME = "安全生产组织保障"; + } + if (t.SOURCE_FORMCODE.StartsWith("TI") || t.SOURCE_FORMCODE.StartsWith("ti")) + { + task.MOUDLE_NAME = "安全投入、科技与工伤"; + } + if (t.SOURCE_FORMCODE.StartsWith("OH") || t.SOURCE_FORMCODE.StartsWith("oh")) + { + task.MOUDLE_NAME = "职业卫生"; + } + if (t.SOURCE_FORMCODE.StartsWith("CM") || t.SOURCE_FORMCODE.StartsWith("cm")) + { + task.MOUDLE_NAME = "应急管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("DM") || t.SOURCE_FORMCODE.StartsWith("dm")) + { + task.MOUDLE_NAME = "机电安全管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("SC") || t.SOURCE_FORMCODE.StartsWith("sc")) + { + if (t.TABLE_NAME != null && t.TABLE_NAME.StartsWith("T_SC_MT")) + task.MOUDLE_NAME = "会议管理"; + else + task.MOUDLE_NAME = "标准化创建"; + } + addTaskInfos.Add(task); + }); + } + this.UnifiedCommit(() => + { + if (addTaskInfos != null && addTaskInfos.Any()) + BantchAddEntityNoCommit(addTaskInfos); }); } - this.UnifiedCommit(() => + catch (Exception ex) { - if (addTaskInfos != null && addTaskInfos.Any()) - BantchAddEntityNoCommit(addTaskInfos); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -3533,22 +3610,22 @@ namespace APT.PP.WebApi.Controllers.Api.PP var personIds = this.GetEntities(t => deleteIds.Contains(t.JOB_EVENT_RECORD_ID), new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList(); var flowIds = this.GetEntities(t => deleteIds.Contains(t.JOB_EVENT_RECORD_ID), new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList(); var meaIds = this.GetEntities(t => deleteIds.Contains(t.JOB_EVENT_RECORD_ID), new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList(); - var taskIds= this.GetEntities(t => deleteIds.Contains((Guid)t.SOURCE_DATA_ID), new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList(); - UnifiedCommit(() => - { - if (deleteIds != null && deleteIds.Any()) - this.BantchDeleteEntityNoCommit(deleteIds); - if (detailIds != null && detailIds.Any()) - this.BantchDeleteEntityNoCommit(detailIds); - if (personIds != null && personIds.Any()) - this.BantchDeleteEntityNoCommit(personIds); - if (flowIds != null && flowIds.Any()) - this.BantchDeleteEntityNoCommit(flowIds); - if (meaIds != null && meaIds.Any()) - this.BantchDeleteEntityNoCommit(meaIds); - if (taskIds != null && taskIds.Any()) - this.BantchDeleteEntityNoCommit(taskIds); - }); + var taskIds = this.GetEntities(t => deleteIds.Contains((Guid)t.SOURCE_DATA_ID), new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList(); + UnifiedCommit(() => + { + if (deleteIds != null && deleteIds.Any()) + this.BantchDeleteEntityNoCommit(deleteIds); + if (detailIds != null && detailIds.Any()) + this.BantchDeleteEntityNoCommit(detailIds); + if (personIds != null && personIds.Any()) + this.BantchDeleteEntityNoCommit(personIds); + if (flowIds != null && flowIds.Any()) + this.BantchDeleteEntityNoCommit(flowIds); + if (meaIds != null && meaIds.Any()) + this.BantchDeleteEntityNoCommit(meaIds); + if (taskIds != null && taskIds.Any()) + this.BantchDeleteEntityNoCommit(taskIds); + }); return true; }); } @@ -3564,39 +3641,49 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - //八大作业 - var jobProfiles = new List(); - var enumList = Enum.GetValues(typeof(StepTypeEnum)); - var unitList = Enum.GetValues(typeof(FMProductionUnit)); - var stepList = this.GetEntities(t => t.IS_SPECIAL==true, new BaseFilter(pageFilter.OrgId)); - var stepIds = stepList.Select(t => t.ID).ToList(); - var linkList = this.GetEntities(t => stepIds.Contains(t.OPERATION_STEP_ID.Value), new BaseFilter(pageFilter.OrgId)); - var jobList = this.GetEntities(t => stepIds.Contains(t.OPERATION_STEP_ID.Value), new BaseFilter(pageFilter.OrgId)).Select(m =>new { m.ID,m.OPERATION_STEP_ID }).ToList(); - var stepTyes= stepList.Select(t => t.STEP_TYPE).Distinct().ToList(); - foreach (FMProductionUnit unit in unitList) + try { - foreach (StepTypeEnum level in enumList) + //八大作业 + var jobProfiles = new List(); + var enumList = Enum.GetValues(typeof(StepTypeEnum)); + var unitList = Enum.GetValues(typeof(FMProductionUnit)); + var stepList = this.GetEntities(t => t.IS_SPECIAL == true, new BaseFilter(pageFilter.OrgId)); + var stepIds = stepList.Select(t => t.ID).ToList(); + var linkList = this.GetEntities(t => stepIds.Contains(t.OPERATION_STEP_ID.Value), new BaseFilter(pageFilter.OrgId)); + var jobList = this.GetEntities(t => stepIds.Contains(t.OPERATION_STEP_ID.Value), new BaseFilter(pageFilter.OrgId)).Select(m => new { m.ID, m.OPERATION_STEP_ID }).ToList(); + var stepTyes = stepList.Select(t => t.STEP_TYPE).Distinct().ToList(); + foreach (FMProductionUnit unit in unitList) { - var fitstStep = stepList.Where(m => m.STEP_TYPE == level); - var stepItems = fitstStep.Select(m => m.ID).ToList(); - var firstLink = linkList.FirstOrDefault(m => stepItems.Contains(m.OPERATION_STEP_ID.Value) && m.MineType.Value == unit.GetInt()); - var jobCount = jobList.Where(m => stepItems.Contains(m.OPERATION_STEP_ID.Value)).Count(); - T_BI_JOB_PROFILE job = new T_BI_JOB_PROFILE(); - job.ORG_ID = pageFilter.OrgId; - job.MineType = unit; - job.JobName = level.GetDescription(); - job.RiskCount = jobCount; - jobProfiles.Add(job); - }; + foreach (StepTypeEnum level in enumList) + { + var fitstStep = stepList.Where(m => m.STEP_TYPE == level); + var stepItems = fitstStep.Select(m => m.ID).ToList(); + var firstLink = linkList.FirstOrDefault(m => stepItems.Contains(m.OPERATION_STEP_ID.Value) && m.MineType.Value == unit.GetInt()); + var jobCount = jobList.Where(m => stepItems.Contains(m.OPERATION_STEP_ID.Value)).Count(); + T_BI_JOB_PROFILE job = new T_BI_JOB_PROFILE(); + job.ORG_ID = pageFilter.OrgId; + job.MineType = unit; + job.JobName = level.GetDescription(); + job.RiskCount = jobCount; + jobProfiles.Add(job); + }; + } + var profilesIds = this.GetEntities(t => true, new BaseFilter(pageFilter.OrgId)).Select(m => m.ID).ToList(); + this.UnifiedCommit(() => + { + if (profilesIds != null && profilesIds.Any()) + this.BantchDeleteEntityNoCommit(profilesIds); + if (jobProfiles != null && jobProfiles.Any()) + BantchSaveEntityNoCommit(jobProfiles); + }); } - var profilesIds = this.GetEntities(t => true, new BaseFilter(pageFilter.OrgId)).Select(m => m.ID).ToList(); - this.UnifiedCommit(() => + catch (Exception ex) { - if (profilesIds != null && profilesIds.Any()) - this.BantchDeleteEntityNoCommit(profilesIds); - if (jobProfiles != null && jobProfiles.Any()) - BantchSaveEntityNoCommit(jobProfiles); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -3613,211 +3700,221 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - var dt = DateTime.Now; - //最近一天 - DateTime week = dt.AddDays(-1).Date; - var taskInfos = new List(); - var biTaskInfos = new List(); - var addTaskInfos = new List(); - var updateTaskInfos = new List(); - var deleteIds = new List(); - var newFilter = new BaseFilter(pageFilter.OrgId); - if (!string.IsNullOrEmpty(pageFilter.Parameter1)) + try { - if (!pageFilter.Parameter1.Contains("|")) - throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); - var temp = pageFilter.Parameter1.Split("|"); - if (temp[1].Length == 0) - throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); - DateTime year = DateTime.Parse(temp[0] + " 00:00:00"); - DateTime yearEnd = DateTime.Parse(temp[1] + " 23:59:59"); - newFilter.SelectField = new List {"ID", "NOTICE_TITLE", "NOTICE_STATUS", "USER_ID", "SOURCE_FORMCODE", "SOURCE_DATA_ID", "CREATE_TIME", + var dt = DateTime.Now; + //最近一天 + DateTime week = dt.AddDays(-1).Date; + var taskInfos = new List(); + var biTaskInfos = new List(); + var addTaskInfos = new List(); + var updateTaskInfos = new List(); + var deleteIds = new List(); + var newFilter = new BaseFilter(pageFilter.OrgId); + if (!string.IsNullOrEmpty(pageFilter.Parameter1)) + { + if (!pageFilter.Parameter1.Contains("|")) + throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); + var temp = pageFilter.Parameter1.Split("|"); + if (temp[1].Length == 0) + throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); + DateTime year = DateTime.Parse(temp[0] + " 00:00:00"); + DateTime yearEnd = DateTime.Parse(temp[1] + " 23:59:59"); + newFilter.SelectField = new List {"ID", "NOTICE_TITLE", "NOTICE_STATUS", "USER_ID", "SOURCE_FORMCODE", "SOURCE_DATA_ID", "CREATE_TIME", "CREATER_ID", "CODE","NOTICE_TYPE","TASK_DT","USER_NAME","TASK_STARTDT","TASK_ENDDT","FORM_TYPE","TABLE_NAME","IS_DELETED","ISCANCEL","SENDTIME" }; - var taskInfoTemps = this.GetEntities(t => !t.IS_DELETED && t.MODIFY_TIME >= year && t.MODIFY_TIME < yearEnd && t.USER_ID != null && t.SOURCE_FORMCODE != null, newFilter).ToList(); - //&& t.SOURCE_FORMCODE != "PF119" && t.SOURCE_FORMCODE != "PF135"&& t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.NOTICE_TYPE != 2 - var taskInfoIds = taskInfoTemps.Select(t => t.ID).ToList(); - biTaskInfos = this.GetEntities(t=> taskInfoIds.Contains((Guid)t.TASK_ID), new BaseFilter(pageFilter.OrgId)).ToList(); - var dataIds = biTaskInfos.Select(t => t.TASK_ID).Distinct(); - taskInfos = taskInfoTemps.Where(t => !dataIds.Contains(t.ID)).ToList();//&& !t.NOTICE_TITLE.Contains("审核") - updateTaskInfos = biTaskInfos.Where(t => t.NOTICE_STATUS == 0).ToList(); - updateTaskInfos.ForEach(t => - { - var item = taskInfoTemps.FirstOrDefault(m => m.ID == t.TASK_ID); - if (item != null) - { - t.NOTICE_STATUS = item.NOTICE_STATUS; - t.TABLE_NAME = item.TABLE_NAME; - t.IS_DELETED = item.IS_DELETED; - t.ISCANCEL = item.ISCANCEL; - t.SENDTIME = item.SENDTIME; - } - }); - } - else - { - newFilter.SelectField = new List {"ID", "NOTICE_TITLE", "NOTICE_STATUS", "USER_ID", "SOURCE_FORMCODE", "SOURCE_DATA_ID", "CREATE_TIME", - "CREATER_ID", "CODE","NOTICE_TYPE","TASK_DT","USER_NAME","TASK_STARTDT","TASK_ENDDT","FORM_TYPE","TABLE_NAME","IS_DELETED","ISCANCEL","SENDTIME" }; - var taskInfoTemps = this.GetEntities(t => !t.IS_DELETED && t.MODIFY_TIME >= week && t.USER_ID != null && t.SOURCE_FORMCODE != null, newFilter).ToList(); - //&& t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.NOTICE_TYPE != 2 && t.SOURCE_FORMCODE != "PF135" && t.SOURCE_FORMCODE != "PF119" - var taskInfoIds = taskInfoTemps.Select(t => t.ID).ToList(); - biTaskInfos = this.GetEntities(t => taskInfoIds.Contains((Guid)t.TASK_ID), new BaseFilter(pageFilter.OrgId)).ToList(); - var dataIds = biTaskInfos.Select(t => t.TASK_ID).Distinct().ToList(); - taskInfos = taskInfoTemps.Where(t => !dataIds.Contains(t.ID)).ToList();//&& !t.NOTICE_TITLE.Contains("审核") - updateTaskInfos = biTaskInfos.Where(t => t.NOTICE_STATUS == 0).ToList(); - updateTaskInfos.ForEach(t => - { - var item = taskInfoTemps.FirstOrDefault(m => m.ID == t.TASK_ID); - if (item != null) - { - t.NOTICE_STATUS = item.NOTICE_STATUS; - t.TABLE_NAME = item.TABLE_NAME; - t.IS_DELETED = item.IS_DELETED; - t.ISCANCEL = item.ISCANCEL; - t.SENDTIME = item.SENDTIME; - } - }); - } - //人员表 - newFilter.SelectField = new List { "ID", "DEPARTMENT_ID" }; - var userIds = taskInfos.Select(t => t.USER_ID).Distinct().ToList(); - var userInfos = this.GetEntities(t => userIds.Contains(t.ID), newFilter).ToList(); - //部门表 - newFilter.SelectField = new List { "ID", "PARENT_ID", "DEPARTMENT_TYPE", "Nav_Parent" }; - var departmentInfos = this.GetEntities(t => t.ENABLE_STATUS == 0, newFilter).ToList(); - if (taskInfos.Any()) - { - taskInfos.ForEach(t => - { - T_BI_NOTIFICATION_TASK_NEW task = new T_BI_NOTIFICATION_TASK_NEW(); - task.ORG_ID = pageFilter.OrgId; - task.TASK_ID = t.ID; - task.SOURCE_DATA_ID = t.SOURCE_DATA_ID; - task.CREATER_ID = t.CREATER_ID; - task.NOTICE_STATUS = t.NOTICE_STATUS; - task.NOTICE_TITLE = t.NOTICE_TITLE; - task.SOURCE_FORMCODE = t.SOURCE_FORMCODE; - task.CREATE_DATE = t.CREATE_TIME; - task.USER_ID = t.USER_ID; - task.CODE = t.CODE; - task.NOTICE_TYPE = t.NOTICE_TYPE; - task.TASK_DT = t.TASK_DT; - task.USER_NAME = t.USER_NAME; - task.TASK_STARTDT = t.TASK_STARTDT; - task.TASK_ENDDT = t.TASK_ENDDT; - task.FORM_TYPE = t.FORM_TYPE; - task.TABLE_NAME = t.TABLE_NAME; - task.IS_DELETED = t.IS_DELETED; - task.ISCANCEL = t.ISCANCEL; - task.SENDTIME = t.SENDTIME; - var user = userInfos.FirstOrDefault(m => m.ID == t.USER_ID); - if (user != null) - { - var depart = departmentInfos.FirstOrDefault(m => m.ID == user.DEPARTMENT_ID); - if (depart != null) + var taskInfoTemps = this.GetEntities(t => !t.IS_DELETED && t.MODIFY_TIME >= year && t.MODIFY_TIME < yearEnd && t.USER_ID != null && t.SOURCE_FORMCODE != null, newFilter).ToList(); + //&& t.SOURCE_FORMCODE != "PF119" && t.SOURCE_FORMCODE != "PF135"&& t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.NOTICE_TYPE != 2 + var taskInfoIds = taskInfoTemps.Select(t => t.ID).ToList(); + biTaskInfos = this.GetEntities(t => taskInfoIds.Contains((Guid)t.TASK_ID), new BaseFilter(pageFilter.OrgId)).ToList(); + var dataIds = biTaskInfos.Select(t => t.TASK_ID).Distinct(); + taskInfos = taskInfoTemps.Where(t => !dataIds.Contains(t.ID)).ToList();//&& !t.NOTICE_TITLE.Contains("审核") + updateTaskInfos = biTaskInfos.Where(t => t.NOTICE_STATUS == 0).ToList(); + updateTaskInfos.ForEach(t => { - if (depart.DEPARTMENT_TYPE == 2) + var item = taskInfoTemps.FirstOrDefault(m => m.ID == t.TASK_ID); + if (item != null) { - task.CLASS_DEPARTMENT_ID = depart.ID; - task.SHOP_DEPARTMENT_ID = depart.PARENT_ID; - task.DEPT_DEPARTMENT_ID = depart.Nav_Parent?.PARENT_ID; + t.NOTICE_STATUS = item.NOTICE_STATUS; + t.TABLE_NAME = item.TABLE_NAME; + t.IS_DELETED = item.IS_DELETED; + t.ISCANCEL = item.ISCANCEL; + t.SENDTIME = item.SENDTIME; } - else if (depart.DEPARTMENT_TYPE == 1) + }); + } + else + { + newFilter.SelectField = new List {"ID", "NOTICE_TITLE", "NOTICE_STATUS", "USER_ID", "SOURCE_FORMCODE", "SOURCE_DATA_ID", "CREATE_TIME", + "CREATER_ID", "CODE","NOTICE_TYPE","TASK_DT","USER_NAME","TASK_STARTDT","TASK_ENDDT","FORM_TYPE","TABLE_NAME","IS_DELETED","ISCANCEL","SENDTIME" }; + var taskInfoTemps = this.GetEntities(t => !t.IS_DELETED && t.MODIFY_TIME >= week && t.USER_ID != null && t.SOURCE_FORMCODE != null, newFilter).ToList(); + //&& t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.NOTICE_TYPE != 2 && t.SOURCE_FORMCODE != "PF135" && t.SOURCE_FORMCODE != "PF119" + var taskInfoIds = taskInfoTemps.Select(t => t.ID).ToList(); + biTaskInfos = this.GetEntities(t => taskInfoIds.Contains((Guid)t.TASK_ID), new BaseFilter(pageFilter.OrgId)).ToList(); + var dataIds = biTaskInfos.Select(t => t.TASK_ID).Distinct().ToList(); + taskInfos = taskInfoTemps.Where(t => !dataIds.Contains(t.ID)).ToList();//&& !t.NOTICE_TITLE.Contains("审核") + updateTaskInfos = biTaskInfos.Where(t => t.NOTICE_STATUS == 0).ToList(); + updateTaskInfos.ForEach(t => + { + var item = taskInfoTemps.FirstOrDefault(m => m.ID == t.TASK_ID); + if (item != null) { - task.CLASS_DEPARTMENT_ID = null; - task.SHOP_DEPARTMENT_ID = depart.ID; - task.DEPT_DEPARTMENT_ID = depart.PARENT_ID; + t.NOTICE_STATUS = item.NOTICE_STATUS; + t.TABLE_NAME = item.TABLE_NAME; + t.IS_DELETED = item.IS_DELETED; + t.ISCANCEL = item.ISCANCEL; + t.SENDTIME = item.SENDTIME; } - else if (depart.DEPARTMENT_TYPE == 0) + }); + } + //人员表 + newFilter.SelectField = new List { "ID", "DEPARTMENT_ID" }; + var userIds = taskInfos.Select(t => t.USER_ID).Distinct().ToList(); + var userInfos = this.GetEntities(t => userIds.Contains(t.ID), newFilter).ToList(); + //部门表 + newFilter.SelectField = new List { "ID", "PARENT_ID", "DEPARTMENT_TYPE", "Nav_Parent" }; + var departmentInfos = this.GetEntities(t => t.ENABLE_STATUS == 0, newFilter).ToList(); + if (taskInfos.Any()) + { + taskInfos.ForEach(t => + { + T_BI_NOTIFICATION_TASK_NEW task = new T_BI_NOTIFICATION_TASK_NEW(); + task.ORG_ID = pageFilter.OrgId; + task.TASK_ID = t.ID; + task.SOURCE_DATA_ID = t.SOURCE_DATA_ID; + task.CREATER_ID = t.CREATER_ID; + task.NOTICE_STATUS = t.NOTICE_STATUS; + task.NOTICE_TITLE = t.NOTICE_TITLE; + task.SOURCE_FORMCODE = t.SOURCE_FORMCODE; + task.CREATE_DATE = t.CREATE_TIME; + task.USER_ID = t.USER_ID; + task.CODE = t.CODE; + task.NOTICE_TYPE = t.NOTICE_TYPE; + task.TASK_DT = t.TASK_DT; + task.USER_NAME = t.USER_NAME; + task.TASK_STARTDT = t.TASK_STARTDT; + task.TASK_ENDDT = t.TASK_ENDDT; + task.FORM_TYPE = t.FORM_TYPE; + task.TABLE_NAME = t.TABLE_NAME; + task.IS_DELETED = t.IS_DELETED; + task.ISCANCEL = t.ISCANCEL; + task.SENDTIME = t.SENDTIME; + var user = userInfos.FirstOrDefault(m => m.ID == t.USER_ID); + if (user != null) { - task.CLASS_DEPARTMENT_ID = null; - task.SHOP_DEPARTMENT_ID = null; - task.DEPT_DEPARTMENT_ID = depart.ID; + var depart = departmentInfos.FirstOrDefault(m => m.ID == user.DEPARTMENT_ID); + if (depart != null) + { + if (depart.DEPARTMENT_TYPE == 2) + { + task.CLASS_DEPARTMENT_ID = depart.ID; + task.SHOP_DEPARTMENT_ID = depart.PARENT_ID; + task.DEPT_DEPARTMENT_ID = depart.Nav_Parent?.PARENT_ID; + } + else if (depart.DEPARTMENT_TYPE == 1) + { + task.CLASS_DEPARTMENT_ID = null; + task.SHOP_DEPARTMENT_ID = depart.ID; + task.DEPT_DEPARTMENT_ID = depart.PARENT_ID; + } + else if (depart.DEPARTMENT_TYPE == 0) + { + task.CLASS_DEPARTMENT_ID = null; + task.SHOP_DEPARTMENT_ID = null; + task.DEPT_DEPARTMENT_ID = depart.ID; + } + } } - } - } - if (t.SOURCE_FORMCODE == "PF119") + if (t.SOURCE_FORMCODE == "PF119") + { + task.MOUDLE_NAME = "审批管理"; + } + if (t.SOURCE_FORMCODE == "PF135") + { + task.MOUDLE_NAME = "今日提醒"; + } + if (t.SOURCE_FORMCODE.StartsWith("HM") || t.SOURCE_FORMCODE.StartsWith("hm")) + { + task.MOUDLE_NAME = "风险管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("FO") || t.SOURCE_FORMCODE.StartsWith("fo")) + { + task.MOUDLE_NAME = "作业现场管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("BS") || t.SOURCE_FORMCODE.StartsWith("bs")) + { + task.MOUDLE_NAME = "安全检查"; + } + if (t.SOURCE_FORMCODE.StartsWith("LR") || t.SOURCE_FORMCODE.StartsWith("lr")) + { + task.MOUDLE_NAME = "法律法规与其他要求"; + } + if (t.SOURCE_FORMCODE.StartsWith("SE") || t.SOURCE_FORMCODE.StartsWith("se")) + { + task.MOUDLE_NAME = "安全教育培训"; + } + if (t.SOURCE_FORMCODE.StartsWith("PT") || t.SOURCE_FORMCODE.StartsWith("pt")) + { + task.MOUDLE_NAME = "方针与目标管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("PE") || t.SOURCE_FORMCODE.StartsWith("pe")) + { + task.MOUDLE_NAME = "绩效测量与评价"; + } + if (t.SOURCE_FORMCODE.StartsWith("PR") || t.SOURCE_FORMCODE.StartsWith("pr")) + { + task.MOUDLE_NAME = "生产工艺管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("AE") || t.SOURCE_FORMCODE.StartsWith("ae")) + { + task.MOUDLE_NAME = "事故事件"; + } + if (t.SOURCE_FORMCODE.StartsWith("OG") || t.SOURCE_FORMCODE.StartsWith("og")) + { + task.MOUDLE_NAME = "安全生产组织保障"; + } + if (t.SOURCE_FORMCODE.StartsWith("TI") || t.SOURCE_FORMCODE.StartsWith("ti")) + { + task.MOUDLE_NAME = "安全投入、科技与工伤"; + } + if (t.SOURCE_FORMCODE.StartsWith("OH") || t.SOURCE_FORMCODE.StartsWith("oh")) + { + task.MOUDLE_NAME = "职业卫生"; + } + if (t.SOURCE_FORMCODE.StartsWith("CM") || t.SOURCE_FORMCODE.StartsWith("cm")) + { + task.MOUDLE_NAME = "应急管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("DM") || t.SOURCE_FORMCODE.StartsWith("dm")) + { + task.MOUDLE_NAME = "机电安全管理"; + } + if (t.SOURCE_FORMCODE.StartsWith("SC") || t.SOURCE_FORMCODE.StartsWith("sc")) + { + if (t.TABLE_NAME != null && t.TABLE_NAME.StartsWith("T_SC_MT")) + task.MOUDLE_NAME = "会议管理"; + else + task.MOUDLE_NAME = "标准化创建"; + } + addTaskInfos.Add(task); + }); + } + this.UnifiedCommit(() => { - task.MOUDLE_NAME = "审批管理"; - } - if (t.SOURCE_FORMCODE == "PF135") - { - task.MOUDLE_NAME = "今日提醒"; - } - if (t.SOURCE_FORMCODE.StartsWith("HM") || t.SOURCE_FORMCODE.StartsWith("hm")) - { - task.MOUDLE_NAME = "风险管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("FO") || t.SOURCE_FORMCODE.StartsWith("fo")) - { - task.MOUDLE_NAME = "作业现场管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("BS") || t.SOURCE_FORMCODE.StartsWith("bs")) - { - task.MOUDLE_NAME = "安全检查"; - } - if (t.SOURCE_FORMCODE.StartsWith("LR") || t.SOURCE_FORMCODE.StartsWith("lr")) - { - task.MOUDLE_NAME = "法律法规与其他要求"; - } - if (t.SOURCE_FORMCODE.StartsWith("SE") || t.SOURCE_FORMCODE.StartsWith("se")) - { - task.MOUDLE_NAME = "安全教育培训"; - } - if (t.SOURCE_FORMCODE.StartsWith("PT") || t.SOURCE_FORMCODE.StartsWith("pt")) - { - task.MOUDLE_NAME = "方针与目标管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("PE") || t.SOURCE_FORMCODE.StartsWith("pe")) - { - task.MOUDLE_NAME = "绩效测量与评价"; - } - if (t.SOURCE_FORMCODE.StartsWith("PR") || t.SOURCE_FORMCODE.StartsWith("pr")) - { - task.MOUDLE_NAME = "生产工艺管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("AE") || t.SOURCE_FORMCODE.StartsWith("ae")) - { - task.MOUDLE_NAME = "事故事件"; - } - if (t.SOURCE_FORMCODE.StartsWith("OG") || t.SOURCE_FORMCODE.StartsWith("og")) - { - task.MOUDLE_NAME = "安全生产组织保障"; - } - if (t.SOURCE_FORMCODE.StartsWith("TI") || t.SOURCE_FORMCODE.StartsWith("ti")) - { - task.MOUDLE_NAME = "安全投入、科技与工伤"; - } - if (t.SOURCE_FORMCODE.StartsWith("OH") || t.SOURCE_FORMCODE.StartsWith("oh")) - { - task.MOUDLE_NAME = "职业卫生"; - } - if (t.SOURCE_FORMCODE.StartsWith("CM") || t.SOURCE_FORMCODE.StartsWith("cm")) - { - task.MOUDLE_NAME = "应急管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("DM") || t.SOURCE_FORMCODE.StartsWith("dm")) - { - task.MOUDLE_NAME = "机电安全管理"; - } - if (t.SOURCE_FORMCODE.StartsWith("SC") || t.SOURCE_FORMCODE.StartsWith("sc")) - { - if (t.TABLE_NAME != null && t.TABLE_NAME.StartsWith("T_SC_MT")) - task.MOUDLE_NAME = "会议管理"; - else - task.MOUDLE_NAME = "标准化创建"; - } - addTaskInfos.Add(task); - }); + if (addTaskInfos != null && addTaskInfos.Any()) + BantchAddEntityNoCommit(addTaskInfos); + if (updateTaskInfos != null && updateTaskInfos.Any()) + BantchUpdateEntityNoCommit(updateTaskInfos); + //if (deleteIds != null && deleteIds.Any()) + // BantchDeleteEntityNoCommit(deleteIds); + }); } - this.UnifiedCommit(() => + catch (Exception ex) { - if (addTaskInfos != null && addTaskInfos.Any()) - BantchAddEntityNoCommit(addTaskInfos); - if (updateTaskInfos != null && updateTaskInfos.Any()) - BantchUpdateEntityNoCommit(updateTaskInfos); - //if (deleteIds != null && deleteIds.Any()) - // BantchDeleteEntityNoCommit(deleteIds); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -3834,105 +3931,115 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - var dt = DateTime.Now; - //最近一周 - DateTime week = dt.AddDays(-1).Date; - if (!string.IsNullOrEmpty(pageFilter.Parameter1)) + try { - if (!pageFilter.Parameter1.Contains("|")) - throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); - var temp = pageFilter.Parameter1.Split("|"); - if (temp[1].Length == 0) - throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); - week = DateTime.Parse(temp[0]); - dt = DateTime.Parse(temp[1]); - } - var formInfos = this.GetEntities(t => t.TABLE_NAME != null, new BaseFilter(pageFilter.OrgId)).ToList(); - var formCodes = formInfos.Select(t => t.CODE).Distinct().ToList(); - var taskInfos = this.GetEntities(t => t.CREATE_TIME >= week && t.CREATE_TIME <= dt && t.SOURCE_FORMCODE != "PF135" && t.SOURCE_FORMCODE != "PF119" && t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.NOTICE_TYPE != 2 && t.SOURCE_FORMCODE != null && t.TABLE_NAME != null, new BaseFilter(pageFilter.OrgId)).ToList(); - var taskIds = taskInfos.Select(t => t.ID).ToList(); - var biTaskInfos = this.GetEntities(t => t.CREATE_DATE >= week && t.CREATE_DATE <= dt, new BaseFilter(pageFilter.OrgId)).ToList(); - biTaskInfos = biTaskInfos.Where(t => t.TASK_ID != null && taskIds.Contains((Guid)t.TASK_ID)).ToList(); - if (biTaskInfos != null && biTaskInfos.Any()) - { - foreach (var item in biTaskInfos) + var dt = DateTime.Now; + //最近一周 + DateTime week = dt.AddDays(-1).Date; + if (!string.IsNullOrEmpty(pageFilter.Parameter1)) { - var taskFirst = taskInfos.FirstOrDefault(t=>t.ID == item.TASK_ID); - if (taskFirst != null) + if (!pageFilter.Parameter1.Contains("|")) + throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); + var temp = pageFilter.Parameter1.Split("|"); + if (temp[1].Length == 0) + throw new Exception("必须传入开始日期和结束日期,以|符号分隔"); + week = DateTime.Parse(temp[0]); + dt = DateTime.Parse(temp[1]); + } + var formInfos = this.GetEntities(t => t.TABLE_NAME != null, new BaseFilter(pageFilter.OrgId)).ToList(); + var formCodes = formInfos.Select(t => t.CODE).Distinct().ToList(); + var taskInfos = this.GetEntities(t => t.CREATE_TIME >= week && t.CREATE_TIME <= dt && t.SOURCE_FORMCODE != "PF135" && t.SOURCE_FORMCODE != "PF119" && t.NOTICE_TYPE != 7 && t.NOTICE_TYPE != 8 && t.NOTICE_TYPE != 2 && t.SOURCE_FORMCODE != null && t.TABLE_NAME != null, new BaseFilter(pageFilter.OrgId)).ToList(); + var taskIds = taskInfos.Select(t => t.ID).ToList(); + var biTaskInfos = this.GetEntities(t => t.CREATE_DATE >= week && t.CREATE_DATE <= dt, new BaseFilter(pageFilter.OrgId)).ToList(); + biTaskInfos = biTaskInfos.Where(t => t.TASK_ID != null && taskIds.Contains((Guid)t.TASK_ID)).ToList(); + if (biTaskInfos != null && biTaskInfos.Any()) + { + foreach (var item in biTaskInfos) { - item.TABLE_NAME = taskFirst.TABLE_NAME; - item.SOURCE_FORMCODE = taskFirst.SOURCE_FORMCODE; - if (item.SOURCE_FORMCODE.StartsWith("HM") || item.SOURCE_FORMCODE.StartsWith("hm")) + var taskFirst = taskInfos.FirstOrDefault(t => t.ID == item.TASK_ID); + if (taskFirst != null) { - item.MOUDLE_NAME = "风险管理"; - } - if (item.SOURCE_FORMCODE.StartsWith("FO") || item.SOURCE_FORMCODE.StartsWith("fo")) - { - item.MOUDLE_NAME = "作业现场管理"; - } - if (item.SOURCE_FORMCODE.StartsWith("BS") || item.SOURCE_FORMCODE.StartsWith("bs")) - { - item.MOUDLE_NAME = "安全检查"; - } - if (item.SOURCE_FORMCODE.StartsWith("LR") || item.SOURCE_FORMCODE.StartsWith("lr")) - { - item.MOUDLE_NAME = "法律法规与其他要求"; - } - if (item.SOURCE_FORMCODE.StartsWith("SE") || item.SOURCE_FORMCODE.StartsWith("se")) - { - item.MOUDLE_NAME = "安全教育培训"; - } - if (item.SOURCE_FORMCODE.StartsWith("PT") || item.SOURCE_FORMCODE.StartsWith("pt")) - { - item.MOUDLE_NAME = "方针与目标管理"; - } - if (item.SOURCE_FORMCODE.StartsWith("PE") || item.SOURCE_FORMCODE.StartsWith("pe")) - { - item.MOUDLE_NAME = "绩效测量与评价"; - } - if (item.SOURCE_FORMCODE.StartsWith("PR") || item.SOURCE_FORMCODE.StartsWith("pr")) - { - item.MOUDLE_NAME = "生产工艺管理"; - } - if (item.SOURCE_FORMCODE.StartsWith("AE") || item.SOURCE_FORMCODE.StartsWith("ae")) - { - item.MOUDLE_NAME = "事故事件"; - } - if (item.SOURCE_FORMCODE.StartsWith("OG") || item.SOURCE_FORMCODE.StartsWith("og")) - { - item.MOUDLE_NAME = "安全生产组织保障"; - } - if (item.SOURCE_FORMCODE.StartsWith("TI") || item.SOURCE_FORMCODE.StartsWith("ti")) - { - item.MOUDLE_NAME = "安全投入、科技与工伤"; - } - if (item.SOURCE_FORMCODE.StartsWith("OH") || item.SOURCE_FORMCODE.StartsWith("oh")) - { - item.MOUDLE_NAME = "职业卫生"; - } - if (item.SOURCE_FORMCODE.StartsWith("CM") || item.SOURCE_FORMCODE.StartsWith("cm")) - { - item.MOUDLE_NAME = "应急管理"; - } - if (item.SOURCE_FORMCODE.StartsWith("DM") || item.SOURCE_FORMCODE.StartsWith("dm")) - { - item.MOUDLE_NAME = "机电安全管理"; - } - if (item.SOURCE_FORMCODE.StartsWith("SC") || item.SOURCE_FORMCODE.StartsWith("sc")) - { - if (item.TABLE_NAME != null && item.TABLE_NAME.StartsWith("T_SC_MT")) - item.MOUDLE_NAME = "会议管理"; - else - item.MOUDLE_NAME = "标准化创建"; + item.TABLE_NAME = taskFirst.TABLE_NAME; + item.SOURCE_FORMCODE = taskFirst.SOURCE_FORMCODE; + if (item.SOURCE_FORMCODE.StartsWith("HM") || item.SOURCE_FORMCODE.StartsWith("hm")) + { + item.MOUDLE_NAME = "风险管理"; + } + if (item.SOURCE_FORMCODE.StartsWith("FO") || item.SOURCE_FORMCODE.StartsWith("fo")) + { + item.MOUDLE_NAME = "作业现场管理"; + } + if (item.SOURCE_FORMCODE.StartsWith("BS") || item.SOURCE_FORMCODE.StartsWith("bs")) + { + item.MOUDLE_NAME = "安全检查"; + } + if (item.SOURCE_FORMCODE.StartsWith("LR") || item.SOURCE_FORMCODE.StartsWith("lr")) + { + item.MOUDLE_NAME = "法律法规与其他要求"; + } + if (item.SOURCE_FORMCODE.StartsWith("SE") || item.SOURCE_FORMCODE.StartsWith("se")) + { + item.MOUDLE_NAME = "安全教育培训"; + } + if (item.SOURCE_FORMCODE.StartsWith("PT") || item.SOURCE_FORMCODE.StartsWith("pt")) + { + item.MOUDLE_NAME = "方针与目标管理"; + } + if (item.SOURCE_FORMCODE.StartsWith("PE") || item.SOURCE_FORMCODE.StartsWith("pe")) + { + item.MOUDLE_NAME = "绩效测量与评价"; + } + if (item.SOURCE_FORMCODE.StartsWith("PR") || item.SOURCE_FORMCODE.StartsWith("pr")) + { + item.MOUDLE_NAME = "生产工艺管理"; + } + if (item.SOURCE_FORMCODE.StartsWith("AE") || item.SOURCE_FORMCODE.StartsWith("ae")) + { + item.MOUDLE_NAME = "事故事件"; + } + if (item.SOURCE_FORMCODE.StartsWith("OG") || item.SOURCE_FORMCODE.StartsWith("og")) + { + item.MOUDLE_NAME = "安全生产组织保障"; + } + if (item.SOURCE_FORMCODE.StartsWith("TI") || item.SOURCE_FORMCODE.StartsWith("ti")) + { + item.MOUDLE_NAME = "安全投入、科技与工伤"; + } + if (item.SOURCE_FORMCODE.StartsWith("OH") || item.SOURCE_FORMCODE.StartsWith("oh")) + { + item.MOUDLE_NAME = "职业卫生"; + } + if (item.SOURCE_FORMCODE.StartsWith("CM") || item.SOURCE_FORMCODE.StartsWith("cm")) + { + item.MOUDLE_NAME = "应急管理"; + } + if (item.SOURCE_FORMCODE.StartsWith("DM") || item.SOURCE_FORMCODE.StartsWith("dm")) + { + item.MOUDLE_NAME = "机电安全管理"; + } + if (item.SOURCE_FORMCODE.StartsWith("SC") || item.SOURCE_FORMCODE.StartsWith("sc")) + { + if (item.TABLE_NAME != null && item.TABLE_NAME.StartsWith("T_SC_MT")) + item.MOUDLE_NAME = "会议管理"; + else + item.MOUDLE_NAME = "标准化创建"; + } } } } + this.UnifiedCommit(() => + { + if (biTaskInfos != null && biTaskInfos.Any()) + BantchSaveEntityNoCommit(biTaskInfos); + }); } - this.UnifiedCommit(() => + catch (Exception ex) { - if (biTaskInfos != null && biTaskInfos.Any()) - BantchSaveEntityNoCommit(biTaskInfos); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BSController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BSController.cs index 295f88c..4e01783 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BSController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/BSController.cs @@ -30,14 +30,16 @@ namespace APT.PP.WebApi.Controllers.Api.PP IFMSyncLogDetailService SyncLogDetailService { get; set; } //IBSSafeCheckService SafeCheckService { get; set; }, IBSSafeCheckService safeCheckService IPFSysLogService SysLogService { get; set; } + IBSOperateLogService BSOperateLogService { get; set; } //private readonly ILogger _logger = null; - public BSController(IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IFMSyncLogDetailService syncLogDetailService)//, ILogger logger + public BSController(IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IFMSyncLogDetailService syncLogDetailService, IBSOperateLogService bsOperateLogService)//, ILogger logger { - NotificationTaskService = notificationTaskService; //SafeCheckService = safeCheckService; + //_logger = logger; + NotificationTaskService = notificationTaskService; SysLogService = sysLogService; SyncLogDetailService = syncLogDetailService; - //_logger = logger; + BSOperateLogService = bsOperateLogService; } /// @@ -105,193 +107,890 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - DateTime CURR_TASK_START_TIME = DateTime.Now; - DateTime dtNow = DateTime.Now; - var Parameter1 = filter.Parameter1; - - if (!string.IsNullOrEmpty(filter.Parameter1)) + try { - try + DateTime CURR_TASK_START_TIME = DateTime.Now; + DateTime dtNow = DateTime.Now; + var Parameter1 = filter.Parameter1; + + if (!string.IsNullOrEmpty(filter.Parameter1)) { - //接收来自页面的参数 - DateTime deParm = Convert.ToDateTime(filter.Parameter1); - dtNow = deParm; + try + { + //接收来自页面的参数 + DateTime deParm = Convert.ToDateTime(filter.Parameter1); + dtNow = deParm; + } + catch { } } - catch { } - } - filter.Parameter1 = " ENABLE_STATUS = false "; - Expression> expression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0; + filter.Parameter1 = " ENABLE_STATUS = false "; + Expression> expression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0; - List listPlanSet = this.GetOrderEntities(expression, filter, new string[] { "Nav_CheckType", "Nav_CheckTypeLevel.Nav_Enums", "Nav_ListSetObject", "Nav_ListSetDepObject" }).ToList(); + List listPlanSet = this.GetOrderEntities(expression, filter, new string[] { "Nav_CheckType", "Nav_CheckTypeLevel.Nav_Enums", "Nav_ListSetObject", "Nav_ListSetDepObject" }).ToList(); - List listPlanSetRund = new List(); + List listPlanSetRund = new List(); - if (listPlanSet.Count < 1) - { - return true;//没找到审批信息 - } - - T_FM_USER User = GetEntity(e => e.CODE.StartsWith("admin") && e.ENABLE_STATUS == 0); - if (User == null) - { - User = GetEntity(e => e.ID == listPlanSet[0].CREATER_ID.Value);//随便取一个不影响信息 - } - - int min = 5;//按设置时间 可以提前5分钟执行跑批生成代办任务 - - #region 获取时间符合的设置 - - //5 单次 每天10, 每周20, 每月30, 每季40, - for (int i = 0; i < listPlanSet.Count; i++) - { - //if (listPlanSet[i].CHECKTIME != null) - //{ - if (ISTimeOK(listPlanSet[i].RUNSETTIME, dtNow, min, min))//设置时间往前后各偏移 5 分钟 判断跑批 + if (listPlanSet.Count < 1) { + return true;//没找到审批信息 + } + + T_FM_USER User = GetEntity(e => e.CODE.StartsWith("admin") && e.ENABLE_STATUS == 0); + if (User == null) + { + User = GetEntity(e => e.ID == listPlanSet[0].CREATER_ID.Value);//随便取一个不影响信息 + } + + int min = 5;//按设置时间 可以提前5分钟执行跑批生成代办任务 + + #region 获取时间符合的设置 + + //5 单次 每天10, 每周20, 每月30, 每季40, + for (int i = 0; i < listPlanSet.Count; i++) + { + //if (listPlanSet[i].CHECKTIME != null) + //{ + if (ISTimeOK(listPlanSet[i].RUNSETTIME, dtNow, min, min))//设置时间往前后各偏移 5 分钟 判断跑批 + { + switch (listPlanSet[i].PLANCHECKFREQUENCY) + { + case 5: + #region 单次检查 时间对 月 日对才加入 + + if (!string.IsNullOrEmpty(listPlanSet[i].RUNDATA))//05-01,10-01 + { + List listMMdd = listPlanSet[i].RUNDATA.Split(",").ToList(); + if (listPlanSet[i].RUNDATA.Contains("-")) + { + for (int j = 0; j < listMMdd.Count; j++) + { + try + { + if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(dtNow.Year.ToString() + ("-") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd")) || Convert.ToDateTime(dtNow.Year.ToString() + "-" + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy-M-d")))) + { + listPlanSetRund.Add(listPlanSet[i]); + break; + } + } + catch { } + } + } + else if (listPlanSet[i].RUNDATA.Contains("/")) + { + for (int j = 0; j < listMMdd.Count; j++) + { + try + { + if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(dtNow.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy/MM/dd")) || Convert.ToDateTime(dtNow.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy/M/d")))) + { + listPlanSetRund.Add(listPlanSet[i]); + break; + } + } + catch { } + } + } + } + #endregion + break; + case 10: + //每日天执行 时间匹配就添加 + if (listPlanSet[i].Nav_CheckTypeLevel.Nav_Enums.NAME != "班组级") + { + listPlanSetRund.Add(listPlanSet[i]);//如果是班组级 跳过(另外一个跑批) + } + break; + case 20: + if (listPlanSet[i].WEEKDATA != null && (int)dtNow.DayOfWeek == listPlanSet[i].WEEKDATA.Value) + { + //星期匹配 DateTime.Now.DayOfWeek Thursday (int)DateTime.Now.DayOfWeek 4 + listPlanSetRund.Add(listPlanSet[i]); + } + break; + case 30: + if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day) + { + //日匹配 (季度是季度第一月的某日 刚好也符合) + listPlanSetRund.Add(listPlanSet[i]); + } + break; + case 40: + if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day && (dtNow.Month == 1 || dtNow.Month == 4 || dtNow.Month == 7 || dtNow.Month == 10)) + { + //日匹配 (季度是季度第一月的某日 刚好也符合) + listPlanSetRund.Add(listPlanSet[i]); + } + break; + case 50: + if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day && (dtNow.Month == 1 || dtNow.Month == 7)) + { + //日匹配 (季度是季度第一月的某日 刚好也符合) + listPlanSetRund.Add(listPlanSet[i]); + } + break; + case 60: + if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day && dtNow.Month == 1) + { + //日匹配 (季度是季度第一月的某日 刚好也符合) + listPlanSetRund.Add(listPlanSet[i]); + } + break; + default: + break; + } + } + //} + //else + //{ + // //只有每个季度执行的没有明确时间 + // if (listPlanSet[i].PLANCHECKFREQUENCY == 40 && listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day) + // { + // listPlanSetRund.Add(listPlanSet[i]); + // } + //} + } + + #endregion + + if (listPlanSetRund.Count > 0) + { + T_PF_APPROVAL_ROLE modelRoleHead = null; + T_PF_APPROVAL_ROLE modelRoleSafe = null; + + #region 审批角色判断是否完善 + + List listCheckObj = listPlanSetRund.Select(e => e.PLANCHECKOBJECT).Distinct().ToList(); + if (listCheckObj.Contains(5)) + { + modelRoleHead = GetEntity(e => e.NAME.Contains("负责人")); + if (modelRoleHead == null || modelRoleHead.ID == Guid.Empty) + { + try + { + //没有找到安全员 //没有找到安全员 没用往下继续执行的必要 // 班组给班长发送待办 需要继续执行 + SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "未找到审批角色【安全员】", null, null); + } + catch { } + } + } + + if (listCheckObj.Contains(10)) + { + modelRoleSafe = GetEntity(e => e.NAME.Contains("安全员")); + if (modelRoleSafe == null || modelRoleSafe.ID == Guid.Empty) + { + try + { + //没有找到安全员 //没有找到安全员 没用往下继续执行的必要 // 班组给班长发送待办 需要继续执行 + SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "未找到审批角色【安全员】", null, null); + } + catch { } + } + } + #endregion + + #region 跑批添加数据 + + DateTime dtFirst = Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd 00:00:00")); + // 系统生成10 用户主动创建20 今天 生成的 + List listSafeCheck = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.CREACTTYPE == CREACTTYPEEnum.System && e.CREATE_TIME >= dtFirst, filter).ToList(); + + Guid CHECK_PLAN_SETL_ID = Guid.Empty; + T_BS_SAFE_CHECK modelCheck = null; + + List listSafeCheckAdd = new List(); //需要插入数据库的安检记录 + List listFMUserNotice = null;//每项设置的通知人员(中间表) + List listDepartment = null; + + //KeywordFilter filterDepart = new KeywordFilter(); + int DEPARTMENT_TYPE = 0;//部门类型 用于linq相接时存放 (中间值:防错) + DateTime ChcekDateTime = dtFirst; + DateTime dtTimeOut = DateTime.Now; + string CHECK_TYPENAME_CODE = string.Empty;//拼音首字母 + + T_FM_SYNC_TASK task = null; + bool isUpdate = false; + T_FM_PERSON chargePerson = null; + List listAreObject = null; + + //检查区域 + var listAreObjectT = GetEntities(e => e.ORG_ID == listPlanSetRund[0].ORG_ID, null, null); + if (listAreObjectT != null) + { + listAreObject = listAreObjectT.ToList(); + } + int CHECKOBJECT = 0; + List listCheckObject = new List(); + T_BS_PLAN_SET_OBJECT checkObject = null; + T_BS_PLAN_SET_DEP_OBJECT checkDetObject = null; + + for (int i = 0; i < listPlanSetRund.Count; i++) + { + if (i == 0) + { + task = GetEntity(filter.Keyword); + if (task != null) + { + task.CURR_TASK_START_TIME = CURR_TASK_START_TIME;//上次同步结束时间 + task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间 + task.SYNC_PARAM = "";//清空参数 + } + } + + listSafeCheckAdd = new List(); + var noticeTitles = new List(); + var noticeDataIds = new List(); + var noticeUserIds = new List(); + var noticeUserNames = new List(); + + + CHECK_PLAN_SETL_ID = listPlanSetRund[i].ID; + modelCheck = listSafeCheck.FirstOrDefault(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID); + if (modelCheck != null) + { + //有添加检查信息 + continue; + } + + listDepartment = new List(); + + listFMUserNotice = new List(); + List listEndTime = new List(); + #region 获取通知人员 + + if (listPlanSetRund[i].PLANCHECKOBJECT == 5)//负责人 + { + + //T_FM_DEPARTMENT 部门表 + //导航属性:安全员":ICollection Nav_SafeUser + //部门类型: [EnumName("HMLevleEnum")] int DEPARTMENT_TYPE + //找到 公司 部门 车间 班组 级别 对应安全员 + DEPARTMENT_TYPE = listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE;//检查等级 和部门等级匹配 + + //公司级 检查 给安环部发送通知 + //其余等级的安全检查 针对生产部门 + + //需要做全检查的所有部门 + List listDepartMent = null; + Expression> expressionDepartMent = e => !e.IS_DELETED && e.ENABLE_STATUS == 0; + + if (listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE == 3)//公司级 + { + //安环部 部门负责人 + expressionDepartMent = expressionDepartMent.And(e => e.DEPARTMENT_STATUS == (int)FMDepartmentStatus.安全部门); + listDepartMent = GetEntities(expressionDepartMent, null, "Nav_ProdutionUnit.Nav_Enums").ToList(); + } + else + { + //生产部门 + expressionDepartMent = expressionDepartMent.And(e => e.DEPARTMENT_TYPE == DEPARTMENT_TYPE && e.DEPARTMENT_STATUS == (int)FMDepartmentStatus.生产部门); + listDepartMent = GetEntities(expressionDepartMent, null, "Nav_ProdutionUnit.Nav_Enums").ToList(); + + } + + List ListDepartMentID = new List(); + if (listDepartMent.Count > 0) + { + ListDepartMentID = listDepartMent.Select(e => e.ID).ToList(); + } + if (ListDepartMentID.Count < 1) + { + //没有找到部门 + + } + + //modelRoleSafe 公司级 公司级安全员 部门级 安全员 车间级安全员 车间级 安全员 + //modelRoleSafe.DEPARTMENT_TYPE + modelRoleHead = GetEntity(e => e.NAME.Contains("负责人") && e.DEPARTMENT_TYPE == DEPARTMENT_TYPE); + if (modelRoleHead == null) + { + try + { + //部门未找到安全员 + SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "部门未找到到审批角色【负责人】", "DEPARTMENT_TYPE:【" + DEPARTMENT_TYPE.ToString() + "】", " T_BS_PLAN_SETID:【" + listPlanSetRund[i].ID + "】"); + } + catch { } + continue; + } + + //部门中审批角色:安全员 + List listUSER = GetEntities(e => e.DEPARTMENT_ID.HasValue && ListDepartMentID.Contains(e.DEPARTMENT_ID.Value) && e.Nav_ApproveRole != null && e.Nav_ApproveRole.ID == modelRoleHead.ID, null, new string[] { "Nav_ApproveRole" }).ToList(); + //&& e.Nav_ApproveRole.DEPARTMENT_TYPE == DEPARTMENT_TYPE 公司级的时候 安环部负责 + + + //查找对应设置的部门/车间/班组 + //List listDepartMent = this.GetOrderEntities(e => !e.IS_DELETED && e.DEPARTMENT_TYPE == DEPARTMENT_TYPE && e.ENABLE_STATUS == 0, null, new string[] { "Nav_SafeUser", "Nav_SafeUser.Nav_User" }).ToList(); + + + + #region 旧方法 + + //DateTime dtPlanSetEndTime = dtNow; + //#region 获取 检查设置 最后时间 + //switch (listPlanSetRund[i].PLANCHECKFREQUENCY) + //{ + // case 20: //每周 + // //周一 1 周二 2 周日 0 + // int weekDay = (int)dtNow.DayOfWeek; + // //周一开始时间 + // DateTime dtWeekDayStart = dtNow.Date.AddDays(-1 * (weekDay == 0 ? 6 : (weekDay - 1))); + // //本周最后时间点 + // dtPlanSetEndTime = dtWeekDayStart.AddDays(8).AddSeconds(-1); + // break; + // case 30: + // //本月 最后一天 + // dtPlanSetEndTime = Convert.ToDateTime(dtNow.Year + "-" + dtNow.Month + "-01 00:00:00").AddMonths(1).AddSeconds(-1);//本月最后时间 本月初一 加一月 减 减 1秒 + // break; + // case 40://每季度 本季度最后一天 + // int month = dtNow.Month < 4 ? 4 : (dtNow.Month < 7 ? 7 : (dtNow.Month < 10 ? 10 : 1)); + // if (month == 4 || month == 7 || month == 10) + // { + // dtPlanSetEndTime = Convert.ToDateTime(dtNow.Year + "-" + month + "-01 00:00:00").AddSeconds(-1); + // } + // else + // { + // dtPlanSetEndTime = Convert.ToDateTime((dtNow.Year + 1) + "-12-31 23:59:59"); + // } + // break; + // default: + // case 5: + // case 10: + // dtPlanSetEndTime = dtNow.Date.AddDays(1).AddSeconds(-1);//当天 + // break; + //} + //#endregion + + #endregion + + DateTime dtPlanSetEndTime = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_SafeCheck_Make, filter.OrgId.Value, dtNow, listPlanSetRund[i].PLANCHECKFREQUENCY, null); + + + for (int j = 0; j < listDepartMent.Count; j++) + { + T_FM_USER noticeModel = listUSER.Find(e => e.DEPARTMENT_ID == listDepartMent[j].ID);//如果部门有多个安全员 随机获取一个 + if (noticeModel == null) + { + try + { + //部门未找到安全员 + SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "部门未找到到审批角色【负责人】", "T_FM_DEPARTMENTID:【" + listDepartMent[j].ID.ToString() + "】", " T_BS_PLAN_SETID:【" + listPlanSetRund[i].ID + "】"); + } + catch { } + + continue; //未设置安全员信息 + } + listFMUserNotice.Add(noticeModel); + listDepartment.Add(listDepartMent[j]); + listEndTime.Add(dtPlanSetEndTime);//添加结束时间 + + } + } + //找到对应的 添加代办 安全员 10 班长 20, + else if (listPlanSetRund[i].PLANCHECKOBJECT == 10)//安全员(负责人) + { + if (listPlanSetRund == null) + { + //没有安全员 循环执行前已写日志 + continue; + } + //T_FM_DEPARTMENT 部门表 + //导航属性:安全员":ICollection Nav_SafeUser + //部门类型: [EnumName("HMLevleEnum")] int DEPARTMENT_TYPE + //找到 公司 部门 车间 班组 级别 对应安全员 + DEPARTMENT_TYPE = listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE;//检查等级 和部门等级匹配 + + //公司级 检查 给安环部发送通知 + //其余等级的安全检查 针对生产部门 + + //需要做全检查的所有部门 + List listDepartMent = null; + Expression> expressionDepartMent = e => !e.IS_DELETED && e.ENABLE_STATUS == 0; + + if (listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE == 3)//公司级 + { + //安环部 部门负责人 + expressionDepartMent = expressionDepartMent.And(e => e.DEPARTMENT_STATUS == (int)FMDepartmentStatus.安全部门); + listDepartMent = GetEntities(expressionDepartMent, null, "Nav_ProdutionUnit.Nav_Enums").ToList(); + } + else + { + //生产部门 + expressionDepartMent = expressionDepartMent.And(e => e.DEPARTMENT_TYPE == DEPARTMENT_TYPE && e.DEPARTMENT_STATUS == (int)FMDepartmentStatus.生产部门); + listDepartMent = GetEntities(expressionDepartMent, null, "Nav_ProdutionUnit.Nav_Enums").ToList(); + + } + + List ListDepartMentID = new List(); + if (listDepartMent.Count > 0) + { + ListDepartMentID = listDepartMent.Select(e => e.ID).ToList(); + } + if (ListDepartMentID.Count < 1) + { + //没有找到部门 + + } + //modelRoleSafe 公司级 公司级安全员 部门级 安全员 车间级安全员 车间级 安全员 + + //modelRoleSafe.DEPARTMENT_TYPE + modelRoleSafe = GetEntity(e => e.NAME.Contains("安全员") && e.DEPARTMENT_TYPE == DEPARTMENT_TYPE); + if (modelRoleSafe == null) + { + try + { + //部门未找到安全员 + SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "部门未找到到审批角色【安全员】", "DEPARTMENT_TYPE:【" + DEPARTMENT_TYPE.ToString() + "】", " T_BS_PLAN_SETID:【" + listPlanSetRund[i].ID + "】"); + } + catch { } + continue; + } + + //部门中审批角色:安全员 + List listUSER = GetEntities(e => e.DEPARTMENT_ID.HasValue && ListDepartMentID.Contains(e.DEPARTMENT_ID.Value) && e.Nav_ApproveRole != null && e.Nav_ApproveRole.ID == modelRoleSafe.ID, null, new string[] { "Nav_ApproveRole" }).ToList(); + //&& e.Nav_ApproveRole.DEPARTMENT_TYPE == DEPARTMENT_TYPE 公司级的时候 安环部负责 + + + //查找对应设置的部门/车间/班组 + //List listDepartMent = this.GetOrderEntities(e => !e.IS_DELETED && e.DEPARTMENT_TYPE == DEPARTMENT_TYPE && e.ENABLE_STATUS == 0, null, new string[] { "Nav_SafeUser", "Nav_SafeUser.Nav_User" }).ToList(); + #region 旧方法 + + //DateTime dtPlanSetEndTime = dtNow; + + //#region 获取 检查设置 最后时间 + //// BSPLANCHECKFREQUENCYEnum + //switch (listPlanSetRund[i].PLANCHECKFREQUENCY) + //{ + // case 20: //每周 + // //周一 1 周二 2 周日 0 + // int weekDay = (int)dtNow.DayOfWeek; + // //周一开始时间 + // DateTime dtWeekDayStart = dtNow.Date.AddDays(-1 * (weekDay == 0 ? 6 : (weekDay - 1))); + // //本周最后时间点 + // dtPlanSetEndTime = dtWeekDayStart.AddDays(8).AddSeconds(-1); + // break; + // case 30: + // //本月 最后一天 + // dtPlanSetEndTime = Convert.ToDateTime(dtNow.Year + "-" + dtNow.Month + "-01 00:00:00").AddMonths(1).AddSeconds(-1);//本月最后时间 本月初一 加一月 减 减 1秒 + // break; + // case 40://每季度 本季度最后一天 + // int month = dtNow.Month < 4 ? 4 : (dtNow.Month < 7 ? 7 : (dtNow.Month < 10 ? 10 : 1)); + // if (month == 4 || month == 7 || month == 10) + // { + // dtPlanSetEndTime = Convert.ToDateTime(dtNow.Year + "-" + month + "-01 00:00:00").AddSeconds(-1); + // } + // else + // { + // dtPlanSetEndTime = Convert.ToDateTime((dtNow.Year + 1) + "-12-31 23:59:59"); + // } + // break; + // default: + // case 5: + // case 10: + // dtPlanSetEndTime = dtNow.Date.AddDays(1).AddSeconds(-1);//当天 + // break; + //} + //#endregion + + #endregion + + DateTime dtPlanSetEndTime = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_SafeCheck_Make, filter.OrgId.Value, dtNow, listPlanSetRund[i].PLANCHECKFREQUENCY, null); + + for (int j = 0; j < listDepartMent.Count; j++) + { + T_FM_USER noticeModel = listUSER.Find(e => e.DEPARTMENT_ID == listDepartMent[j].ID);//如果部门有多个安全员 随机获取一个 + if (noticeModel == null) + { + try + { + //部门未找到安全员 + SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "部门未找到到审批角色【安全员】", "T_FM_DEPARTMENTID:【" + listDepartMent[j].ID.ToString() + "】", " T_BS_PLAN_SETID:【" + listPlanSetRund[i].ID + "】"); + } + catch { } + + continue; //未设置安全员信息 + } + listFMUserNotice.Add(noticeModel); + listDepartment.Add(listDepartMent[j]); + listEndTime.Add(dtPlanSetEndTime);//添加结束时间 + + } + } + else if (listPlanSetRund[i].PLANCHECKOBJECT == 20)//班长 + { + //找到今天有上班的 班组 对应 班长 + //排班 T_FM_DEPARTMENT_SCHEDULING 班组T_FM_TEAM 班长CHARGE_PERSON_ID 人员Nav_ChargePerson 用户Nav_User + + //listPlanSetRund[i].CHECKTIME "Nav_ProdutionUnit.Nav_Enums" + List listTeamScheduling = null; + string[] pathScheduling = { "Nav_DepartMent", "Nav_Team.Nav_ChargePerson.Nav_User.Nav_Department.Nav_Enums" };//, "Nav_Team.Nav_ChargePerson.Nav_DepartMent" + if (listPlanSetRund[i].CHECKTIME == null) + { + //没有检查时间 就当天 有排班 + listTeamScheduling = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME == dtFirst && e.START_TIME != e.END_TIME, null, pathScheduling).ToList(); + } + else + { + //有检查时间 就检查时间有排班 + ChcekDateTime = Convert.ToDateTime(dtFirst.ToString("yyyy-MM-dd") + listPlanSetRund[i].CHECKTIME.Value.ToString(" HH:mm:ss")); + //e.Nav_DepartMent.DEPARTMENT_TYPE == 2 + listTeamScheduling = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME == dtFirst && e.START_TIME <= ChcekDateTime && e.END_TIME >= ChcekDateTime, null, pathScheduling).ToList(); + //listTeamScheduling = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME == dtFirst && e.START_TIME != e.END_TIME && e.START_TIME.Date == dtFirst.Date, null, pathScheduling).ToList(); + + } + + if (listTeamScheduling != null && listTeamScheduling.Count > 0) + { + for (int j = 0; j < listTeamScheduling.Count; j++) + { + chargePerson = listTeamScheduling[j].Nav_Team.Nav_ChargePerson;//班长 + //listDepartment.Add(listTeamScheduling[j].Nav_DepartMent); + + listDepartment.Add(chargePerson.Nav_User.Nav_Department != null ? chargePerson.Nav_User.Nav_Department : listTeamScheduling[j].Nav_DepartMent); //班长所在部门 不然审批流不好找 BS034 + //listDepartment.Add(listTeamScheduling[j].Nav_DepartMent != null ? listTeamScheduling[j].Nav_DepartMent : chargePerson.Nav_DepartMent); //班长所在部门 + + listFMUserNotice.Add(chargePerson.Nav_User);//班长 + listEndTime.Add(listTeamScheduling[j].END_TIME);//默认当班结束时间 + } + } + } + //else {//未找到通知对象 跳过 continue; } + if (listFMUserNotice.Count < 1) + { + //没有找到通知人员信息 + continue; + } + + #endregion + + //CHECK_TYPENAME_CODE = MkPinyinString(listPlanSetRund[i].Nav_CheckType.NAME) + listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE.ToString(); + CHECK_TYPENAME_CODE = GetCheckCode(listPlanSetRund[i].Nav_CheckType.NAME, listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE); + for (int j = 0; j < listFMUserNotice.Count; j++) + { + + #region 新版 + + listCheckObject.Clear(); + CHECKOBJECT = 0; + foreach (var itemUnit in listDepartment[j].Nav_ProdutionUnit) + { + listCheckObject.Add(itemUnit.Nav_Enums.VALUE); + } + + if (listCheckObject.Count < 1 && (listPlanSetRund[i].Nav_ListSetObject != null && listPlanSetRund[i].Nav_ListSetObject.Any())) + { + continue; + } + + if (listPlanSetRund[i].Nav_ListSetObject != null && listPlanSetRund[i].Nav_ListSetObject.Any()) + { + checkObject = listPlanSetRund[i].Nav_ListSetObject.FirstOrDefault(e => listCheckObject.Contains((int)e.CHECKOBJECT)); + if (checkObject == null) + { + //范围不符合 + continue; + } + else + { + CHECKOBJECT = (int)checkObject.CHECKOBJECT; + } + } + + #endregion + + + + + #region 旧版 + + //CHECKOBJECT = GetCHECKOBJECT(listDepartment[j], listFMUserNotice[j].ORG_ID.Value, listAreObject); + //if (listPlanSetRund[i].Nav_ListSetObject != null && listPlanSetRund[i].Nav_ListSetObject.Any()) + //{ + // checkObject = listPlanSetRund[i].Nav_ListSetObject.FirstOrDefault(e => (int)e.CHECKOBJECT == CHECKOBJECT); + // if (checkObject == null) + // { + // //有限制 不满足 + // if (listPlanSetRund[i].Nav_ListSetDepObject == null || !listPlanSetRund[i].Nav_ListSetDepObject.Any()) + // { + // continue; + // } + // } + //} + + #endregion + + if (listPlanSetRund[i].Nav_ListSetDepObject != null && listPlanSetRund[i].Nav_ListSetDepObject.Any()) + { + checkDetObject = listPlanSetRund[i].Nav_ListSetDepObject.FirstOrDefault(e => e.DEPARTMENT_ID.Value == listDepartment[j].ID); + if (checkDetObject == null) + continue; //有限制 不满足 + else if (CHECKOBJECT == 0 && checkDetObject.CHECKOBJECT != BSMineTypeEnum.All) + CHECKOBJECT = (int)checkDetObject.CHECKOBJECT; + } + + + if (CHECKOBJECT == 0 && listDepartment[j].MineType.HasValue) + { + CHECKOBJECT = listDepartment[j].MineType.Value; + } + + if (listSafeCheckAdd.FirstOrDefault(e => e.PLAN_SET_ID.HasValue && e.PLAN_SET_ID == listPlanSetRund[i].ID && e.CHECKOBJECT.HasValue && e.CHECKOBJECT == CHECKOBJECT && e.USERID_DOPLAN == listFMUserNotice[j].ID) != null) + { + continue; + } + + //添加代办 + T_BS_SAFE_CHECK modelRun = new T_BS_SAFE_CHECK(); + modelRun.ID = Guid.NewGuid(); + modelRun.ORG_ID = filter.GetOrgId(); + modelRun.NAME = listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.NAME + listPlanSetRund[i].Nav_CheckType.NAME + "任务表" + (listPlanSetRund[i].PLANCHECKFREQUENCY == 10 ? dtNow.ToString("MMdd") : ""); + + //+ ((BSPLANCHECKFREQUENCYEnum)listPlanSetRund[i].PLANCHECKFREQUENCY).GetDescription() + ((listPlanSetRund[i].WEEKDATA != null && listPlanSetRund[i].WEEKDATA != 0) ? (((WEEKDATAEnum)listPlanSetRund[i].WEEKDATA).GetDescription()) : "") + ((listPlanSetRund[i].DATA.HasValue && listPlanSetRund[i].DATA != 0) ? listPlanSetRund[i].DATA.ToString() : "") + (listPlanSetRund[i].CHECKTIME.HasValue ? (listPlanSetRund[i].CHECKTIME.Value.ToString("HH:mm")) : "");//代办标题 公司级专业检查每季1日/每周星期一 10点 + + modelRun.CHECK_TYPE_ID = listPlanSetRund[i].CHECK_TYPE_ID.Value; + modelRun.CHECK_TYPE_LEVEL_ID = listPlanSetRund[i].CHECK_TYPE_LEVEL_ID; + + //当天 + //modelRun.CHECKTIME = listPlanSetRund[i].CHECKTIME.HasValue ? Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd ") + listPlanSetRund[i].CHECKTIME.Value.ToString("HH:mm:ss")) : DateTime.Now; + + modelRun.CREATER_ID = listFMUserNotice[j].ID;//安全检查的创建人 就是通知人 + modelRun.CHECKOBJECT = CHECKOBJECT; + + modelRun.PLAN_SET_ID = listPlanSetRund[i].ID; + modelRun.CREACTTYPE = CREACTTYPEEnum.System;// 10;//系统生成 + modelRun.CODE = CHECK_TYPENAME_CODE + j.ToString();//mmss 因为审批流 CODE 长度20 减少长度 CHECK_TYPENAME_CODE 包含年月日 DateTime.Now.ToString("yyyyMMddHH") + + + //modelRun.STATUCHECK = (int)HMAuditStatusEnmu.已保存; + modelRun.STATUCHECK = (int)HMAuditStatusEnmu.草稿; + + + modelRun.USERID_DOPLAN = listFMUserNotice[j].ID;//制表人 + modelRun.DEPARTMENTID = listDepartment[j].ID;//检查部门(公司/部门/车间/班组 ID) + + modelRun.LIMITDATETIME = listEndTime[0]; + //[EnumName("HMAuditStatusEnmu")] + //public int STATUCHECK { get; set; } + + if (modelRun.CODE.Length > 25) + { + modelRun.CODE = modelRun.CODE.Substring(0, 25); + } + listSafeCheckAdd.Add(modelRun); + noticeDataIds.Add(modelRun.ID); + noticeUserIds.Add(listFMUserNotice[j].ID); + noticeUserNames.Add(listFMUserNotice[j].NAME); + + noticeTitles.Add(modelRun.NAME + "-制定");//每天的 加上日期 + } + ////超时时间设置 + //if (listPlanSetRund[i].CHECKTIME.HasValue) + //{ + // dtTimeOut = Convert.ToDateTime(dtFirst.ToString("yyyy-MM-dd") + listPlanSetRund[i].CHECKTIME.Value.ToString(" HH:mm:ss")); + //} + //else + //{ + dtTimeOut = dtFirst.AddHours(12); + //} + //每次单独添加 因为超时时间不对 + + if (noticeTitles.Count > 0) + { + if (task != null) + { + task.UPDATE_SUCCES_TIME = DateTime.Now; + } + + //给 T_FM_NOTIFICATION_TASK 添加实体 + NotificationTaskService.SendNotificationTask(noticeTitles, noticeDataIds, filter.GetOrgId(), noticeUserIds, noticeUserNames, DateTime.Now, listEndTime, 0, "BS032", () => + { + if (listSafeCheckAdd.Any()) + { + this.BantchAddEntityNoCommit(listSafeCheckAdd); + if (task != null && !isUpdate) + { + UpdateEntityNoCommit(task); + isUpdate = true; + } + } + }); + + if (HttpContext.Items.ContainsKey("Count")) + { + try + { + HttpContext.Items["Count"] = int.Parse(HttpContext.Items["Count"].ToString()) + listSafeCheckAdd.Count; + } + catch { } + } + else + HttpContext.Items.Add("Count", listSafeCheckAdd.Count); + + SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, listSafeCheckAdd.Count, Parameter1, SyncLogType.BSCreateCheckPlanSet); + //NotificationTaskService.SendNotificationTask(noticeTitles, noticeDataIds, filter.GetOrgId(), noticeUserIds, noticeUserNames, DateTime.Now, dtTimeOut, 0, "BS032", () => + //{ + // if (listSafeCheckAdd.Any()) + // { + // this.BantchAddEntityNoCommit(listSafeCheckAdd); + // } + //}); + } + } + #endregion + } + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 班组级每天检查 + /// 班组 提前一个小时发送安全检查 + /// + /// + /// + [HttpPost, Route("CreateCheckPlanSetClass")] + public JsonActionResult CreateCheckPlanSetClass([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + DateTime CURR_TASK_START_TIME = DateTime.Now; + DateTime dtNow = DateTime.Now; + + var Parameter1 = filter.Parameter1; + //SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, 0, Parameter1, SyncLogType.BSCreateCheckPlanSet); + + if (!string.IsNullOrEmpty(filter.Parameter1)) + { + try + { + //接收来自页面的参数 + DateTime deParm = Convert.ToDateTime(filter.Parameter1); + dtNow = deParm; + } + catch { } + } + + filter.Parameter1 = " ENABLE_STATUS = false "; + Expression> expression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0 && e.PLANCHECKFREQUENCY == 10 && e.Nav_CheckTypeLevel.Nav_Enums.NAME == "班组级";//&&e.PLANCHECKFREQUENCY==10 每天 班组级 + + List listPlanSet = this.GetOrderEntities(expression, filter, new string[] { "Nav_CheckType", "Nav_CheckTypeLevel.Nav_Enums", "Nav_ListSetObject", "Nav_ListSetDepObject" }).ToList(); + List listPlanSetRund = new List(); + if (listPlanSet.Count < 1) + { + return true;//没找跑批信息 + } + + //T_FM_USER User = GetEntity(e => e.CODE == "admin"); + //if (User == null) + //{ + // User = GetEntity(e => e.ID == listPlanSet[0].CREATER_ID.Value);//随便取一个不影响信息 + //} + //int min = 15;//班组级检查 提前一个小时做跑批 + + #region 获取时间符合的设置 + + //5 单次 每天10, 每周20, 每月30, 每季40, + for (int i = 0; i < listPlanSet.Count; i++) + { + //if (ISTimeOK(listPlanSet[i].RUNSETTIME, dtNow, min, min))//设置时间往前后各偏移 5 分钟 判断跑批 switch (listPlanSet[i].PLANCHECKFREQUENCY) { - case 5: - #region 单次检查 时间对 月 日对才加入 - - if (!string.IsNullOrEmpty(listPlanSet[i].RUNDATA))//05-01,10-01 - { - List listMMdd = listPlanSet[i].RUNDATA.Split(",").ToList(); - if (listPlanSet[i].RUNDATA.Contains("-")) - { - for (int j = 0; j < listMMdd.Count; j++) - { - try - { - if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(dtNow.Year.ToString() + ("-") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd")) || Convert.ToDateTime(dtNow.Year.ToString() + "-" + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy-M-d")))) - { - listPlanSetRund.Add(listPlanSet[i]); - break; - } - } - catch { } - } - } - else if (listPlanSet[i].RUNDATA.Contains("/")) - { - for (int j = 0; j < listMMdd.Count; j++) - { - try - { - if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(dtNow.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy/MM/dd")) || Convert.ToDateTime(dtNow.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(dtNow.ToString("yyyy/M/d")))) - { - listPlanSetRund.Add(listPlanSet[i]); - break; - } - } - catch { } - } - } - } - #endregion - break; case 10: //每日天执行 时间匹配就添加 - if (listPlanSet[i].Nav_CheckTypeLevel.Nav_Enums.NAME != "班组级") - { - listPlanSetRund.Add(listPlanSet[i]);//如果是班组级 跳过(另外一个跑批) - } - break; - case 20: - if (listPlanSet[i].WEEKDATA != null && (int)dtNow.DayOfWeek == listPlanSet[i].WEEKDATA.Value) - { - //星期匹配 DateTime.Now.DayOfWeek Thursday (int)DateTime.Now.DayOfWeek 4 - listPlanSetRund.Add(listPlanSet[i]); - } - break; - case 30: - if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day) - { - //日匹配 (季度是季度第一月的某日 刚好也符合) - listPlanSetRund.Add(listPlanSet[i]); - } - break; - case 40: - if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day && (dtNow.Month == 1 || dtNow.Month == 4 || dtNow.Month == 7 || dtNow.Month == 10)) - { - //日匹配 (季度是季度第一月的某日 刚好也符合) - listPlanSetRund.Add(listPlanSet[i]); - } - break; - case 50: - if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day && (dtNow.Month == 1 || dtNow.Month == 7)) - { - //日匹配 (季度是季度第一月的某日 刚好也符合) - listPlanSetRund.Add(listPlanSet[i]); - } - break; - case 60: - if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day && dtNow.Month == 1) - { - //日匹配 (季度是季度第一月的某日 刚好也符合) - listPlanSetRund.Add(listPlanSet[i]); - } + listPlanSetRund.Add(listPlanSet[i]); break; default: break; } } - //} - //else - //{ - // //只有每个季度执行的没有明确时间 - // if (listPlanSet[i].PLANCHECKFREQUENCY == 40 && listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day) - // { - // listPlanSetRund.Add(listPlanSet[i]); - // } - //} - } - #endregion + #endregion - if (listPlanSetRund.Count > 0) - { - T_PF_APPROVAL_ROLE modelRoleHead = null; - T_PF_APPROVAL_ROLE modelRoleSafe = null; - - #region 审批角色判断是否完善 - - List listCheckObj = listPlanSetRund.Select(e => e.PLANCHECKOBJECT).Distinct().ToList(); - if (listCheckObj.Contains(5)) + //时间不合适 过 + if (listPlanSetRund.Count < 1) { - modelRoleHead = GetEntity(e => e.NAME.Contains("负责人")); - if (modelRoleHead == null || modelRoleHead.ID == Guid.Empty) - { - try - { - //没有找到安全员 //没有找到安全员 没用往下继续执行的必要 // 班组给班长发送待办 需要继续执行 - SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "未找到审批角色【安全员】", null, null); - } - catch { } - } + return true; } - if (listCheckObj.Contains(10)) + DateTime dtNowDate = dtNow.Date; + DateTime ChcekEndTime = dtNow.AddHours(1);//1个小时以内上班的 + + ////1个小时内要上班的排班 + //string[] pathScheduling = { "Nav_Team.Nav_ChargePerson.Nav_User", "Nav_Team.Nav_Department" }; + //listTeamScheduling = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME.Date == e.START_TIME.Date && e.START_TIME != e.END_TIME && dtNow <= e.START_TIME && e.START_TIME <= ChcekEndTime, null, pathScheduling).ToList();//一个小时以内上班的排班 && e.DATE_TIME == dtNowDate 零点时 + + #region 隔离排班经常出现重复排班 + + //1个小时内要上班的排班 + //string[] pathScheduling = { "Nav_ChargePerson.Nav_User.ID", "Nav_ChargePerson.Nav_User.NAME" };//报错 + string[] pathScheduling = { "Nav_ChargePerson.Nav_User", "Nav_Department.Nav_ProdutionUnit.Nav_Enums" }; + + //var listDyTeamScheduling2 = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME.Date == e.START_TIME.Date && e.START_TIME != e.END_TIME && dtNow <= e.START_TIME && e.START_TIME <= ChcekEndTime && e.TEAM_ID.HasValue, null).GroupBy(e => new { e.ENABLE_STATUS, e.DATE_TIME, e.START_TIME, e.END_TIME, e.TEAM_ID, e.ORG_ID }).ToList(); + + var listDyTeamScheduling = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME.Date == e.START_TIME.Date && e.START_TIME != e.END_TIME && dtNow <= e.START_TIME && e.START_TIME <= ChcekEndTime && e.TEAM_ID.HasValue, null) + .Select(e => new DEPARTMENT_SCHEDULING_TEMP + { + ENABLE_STATUS = e.ENABLE_STATUS, + DATE_TIME = e.DATE_TIME, + START_TIME = e.START_TIME, + END_TIME = e.END_TIME, + TEAM_ID = e.TEAM_ID, + ORG_ID = e.ORG_ID, + }). + GroupBy(e => new { e.ENABLE_STATUS, e.DATE_TIME, e.START_TIME, e.END_TIME, e.TEAM_ID, e.ORG_ID }) + .ToList();//一个小时以内上班的排班 && e.DATE_TIME == dtNowDate 零点时 + + //1小时内 没有排班开始 过 + if (listDyTeamScheduling == null || !listDyTeamScheduling.Any()) { - modelRoleSafe = GetEntity(e => e.NAME.Contains("安全员")); - if (modelRoleSafe == null || modelRoleSafe.ID == Guid.Empty) - { - try - { - //没有找到安全员 //没有找到安全员 没用往下继续执行的必要 // 班组给班长发送待办 需要继续执行 - SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "未找到审批角色【安全员】", null, null); - } - catch { } - } + return true; } + List listTeamScheduling = new List(); + foreach (var item in listDyTeamScheduling) + { + listTeamScheduling.Add(new T_FM_DEPARTMENT_SCHEDULING() + { + ENABLE_STATUS = item.Key.ENABLE_STATUS, + DATE_TIME = item.Key.DATE_TIME, + START_TIME = item.Key.START_TIME, + END_TIME = item.Key.END_TIME, + TEAM_ID = item.Key.TEAM_ID, + ORG_ID = item.Key.ORG_ID, + }); + } + List listTeamID = listTeamScheduling.Select(e => e.TEAM_ID.Value).ToList(); + var listTeam = GetEntities(e => listTeamID.Contains(e.ID), null, pathScheduling); + //var listDepID = listTeamScheduling.Select(e => e.DEPARTMENT_ID); + //var listDep = GetEntities(e => listDepID.Contains(e.ID),null); + foreach (var item in listTeamScheduling) + { + item.Nav_Team = listTeam.FirstOrDefault(e => e.ID == item.TEAM_ID.Value); + //item.Nav_DepartMent = listDep.FirstOrDefault(e => e.ID == item.DEPARTMENT_ID); + } + + #endregion + + #region 数据校验 今天添加对应的跑批 + + List listPlanSetID = listPlanSetRund.Select(e => e.ID).ToList(); + // 系统生成10 用户主动创建20 今天 生成的 + //最小时间 + + List listSafeCheck = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.CREACTTYPE == CREACTTYPEEnum.System && e.CREATE_TIME >= dtNowDate && e.PLAN_SET_ID.HasValue && listPlanSetID.Contains(e.PLAN_SET_ID.Value), filter).OrderByDescending(e => e.CREATE_TIME).ToList(); + #endregion #region 跑批添加数据 - DateTime dtFirst = Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd 00:00:00")); - // 系统生成10 用户主动创建20 今天 生成的 - List listSafeCheck = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.CREACTTYPE == CREACTTYPEEnum.System && e.CREATE_TIME >= dtFirst, filter).ToList(); - Guid CHECK_PLAN_SETL_ID = Guid.Empty; T_BS_SAFE_CHECK modelCheck = null; @@ -299,370 +998,128 @@ namespace APT.PP.WebApi.Controllers.Api.PP List listFMUserNotice = null;//每项设置的通知人员(中间表) List listDepartment = null; - //KeywordFilter filterDepart = new KeywordFilter(); - int DEPARTMENT_TYPE = 0;//部门类型 用于linq相接时存放 (中间值:防错) - DateTime ChcekDateTime = dtFirst; DateTime dtTimeOut = DateTime.Now; string CHECK_TYPENAME_CODE = string.Empty;//拼音首字母 T_FM_SYNC_TASK task = null; - bool isUpdate = false; - T_FM_PERSON chargePerson = null; - List listAreObject = null; + T_FM_USER chargeUser = null; - //检查区域 + List listAreObject = null; + //检查区域 部门 范围 var listAreObjectT = GetEntities(e => e.ORG_ID == listPlanSetRund[0].ORG_ID, null, null); if (listAreObjectT != null) { listAreObject = listAreObjectT.ToList(); } + + task = GetEntity(filter.Keyword); + if (task != null) + { + //不能新增去年的 + task.CURR_TASK_START_TIME = CURR_TASK_START_TIME;//上次同步结束时间 + task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间 + task.SYNC_PARAM = "";//清空参数 + } + int CHECKOBJECT = 0; List listCheckObject = new List(); T_BS_PLAN_SET_OBJECT checkObject = null; - T_BS_PLAN_SET_DEP_OBJECT checkDetObject = null; - + T_BS_PLAN_SET_DEP_OBJECT checkDepObject = null; for (int i = 0; i < listPlanSetRund.Count; i++) { - if (i == 0) - { - task = GetEntity(filter.Keyword); - if (task != null) - { - task.CURR_TASK_START_TIME = CURR_TASK_START_TIME;//上次同步结束时间 - task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间 - task.SYNC_PARAM = "";//清空参数 - } - } - listSafeCheckAdd = new List(); var noticeTitles = new List(); var noticeDataIds = new List(); var noticeUserIds = new List(); var noticeUserNames = new List(); - CHECK_PLAN_SETL_ID = listPlanSetRund[i].ID; - modelCheck = listSafeCheck.FirstOrDefault(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID); - if (modelCheck != null) - { - //有添加检查信息 - continue; - } + //modelCheck = listSafeCheck.FirstOrDefault(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID); + //if (modelCheck != null) + //{ + // //有添加检查信息 + // continue; + //} listDepartment = new List(); - listFMUserNotice = new List(); List listEndTime = new List(); - #region 获取通知人员 + List listStartTime = new List(); - if (listPlanSetRund[i].PLANCHECKOBJECT == 5)//负责人 + //班组级 只有 班长 + if (listTeamScheduling != null && listTeamScheduling.Count > 0) { - - //T_FM_DEPARTMENT 部门表 - //导航属性:安全员":ICollection Nav_SafeUser - //部门类型: [EnumName("HMLevleEnum")] int DEPARTMENT_TYPE - //找到 公司 部门 车间 班组 级别 对应安全员 - DEPARTMENT_TYPE = listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE;//检查等级 和部门等级匹配 - - //公司级 检查 给安环部发送通知 - //其余等级的安全检查 针对生产部门 - - //需要做全检查的所有部门 - List listDepartMent = null; - Expression> expressionDepartMent = e => !e.IS_DELETED && e.ENABLE_STATUS == 0; - - if (listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE == 3)//公司级 + for (int j = 0; j < listTeamScheduling.Count; j++) { - //安环部 部门负责人 - expressionDepartMent = expressionDepartMent.And(e => e.DEPARTMENT_STATUS == (int)FMDepartmentStatus.安全部门); - listDepartMent = GetEntities(expressionDepartMent, null, "Nav_ProdutionUnit.Nav_Enums").ToList(); - } - else - { - //生产部门 - expressionDepartMent = expressionDepartMent.And(e => e.DEPARTMENT_TYPE == DEPARTMENT_TYPE && e.DEPARTMENT_STATUS == (int)FMDepartmentStatus.生产部门); - listDepartMent = GetEntities(expressionDepartMent, null, "Nav_ProdutionUnit.Nav_Enums").ToList(); - - } - - List ListDepartMentID = new List(); - if (listDepartMent.Count > 0) - { - ListDepartMentID = listDepartMent.Select(e => e.ID).ToList(); - } - if (ListDepartMentID.Count < 1) - { - //没有找到部门 - - } - - //modelRoleSafe 公司级 公司级安全员 部门级 安全员 车间级安全员 车间级 安全员 - //modelRoleSafe.DEPARTMENT_TYPE - modelRoleHead = GetEntity(e => e.NAME.Contains("负责人") && e.DEPARTMENT_TYPE == DEPARTMENT_TYPE); - if (modelRoleHead == null) - { - try + chargeUser = listTeamScheduling[j].Nav_Team.Nav_ChargePerson.Nav_User; + if (listFMUserNotice.Contains(chargeUser)) { - //部门未找到安全员 - SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "部门未找到到审批角色【负责人】", "DEPARTMENT_TYPE:【" + DEPARTMENT_TYPE.ToString() + "】", " T_BS_PLAN_SETID:【" + listPlanSetRund[i].ID + "】"); + //如果一个人 任多个班 班长 + //不重复发送 检查 + continue; } - catch { } - continue; - } - //部门中审批角色:安全员 - List listUSER = GetEntities(e => e.DEPARTMENT_ID.HasValue && ListDepartMentID.Contains(e.DEPARTMENT_ID.Value) && e.Nav_ApproveRole != null && e.Nav_ApproveRole.ID == modelRoleHead.ID, null, new string[] { "Nav_ApproveRole" }).ToList(); - //&& e.Nav_ApproveRole.DEPARTMENT_TYPE == DEPARTMENT_TYPE 公司级的时候 安环部负责 - - - //查找对应设置的部门/车间/班组 - //List listDepartMent = this.GetOrderEntities(e => !e.IS_DELETED && e.DEPARTMENT_TYPE == DEPARTMENT_TYPE && e.ENABLE_STATUS == 0, null, new string[] { "Nav_SafeUser", "Nav_SafeUser.Nav_User" }).ToList(); - - - - #region 旧方法 - - //DateTime dtPlanSetEndTime = dtNow; - //#region 获取 检查设置 最后时间 - //switch (listPlanSetRund[i].PLANCHECKFREQUENCY) - //{ - // case 20: //每周 - // //周一 1 周二 2 周日 0 - // int weekDay = (int)dtNow.DayOfWeek; - // //周一开始时间 - // DateTime dtWeekDayStart = dtNow.Date.AddDays(-1 * (weekDay == 0 ? 6 : (weekDay - 1))); - // //本周最后时间点 - // dtPlanSetEndTime = dtWeekDayStart.AddDays(8).AddSeconds(-1); - // break; - // case 30: - // //本月 最后一天 - // dtPlanSetEndTime = Convert.ToDateTime(dtNow.Year + "-" + dtNow.Month + "-01 00:00:00").AddMonths(1).AddSeconds(-1);//本月最后时间 本月初一 加一月 减 减 1秒 - // break; - // case 40://每季度 本季度最后一天 - // int month = dtNow.Month < 4 ? 4 : (dtNow.Month < 7 ? 7 : (dtNow.Month < 10 ? 10 : 1)); - // if (month == 4 || month == 7 || month == 10) - // { - // dtPlanSetEndTime = Convert.ToDateTime(dtNow.Year + "-" + month + "-01 00:00:00").AddSeconds(-1); - // } - // else - // { - // dtPlanSetEndTime = Convert.ToDateTime((dtNow.Year + 1) + "-12-31 23:59:59"); - // } - // break; - // default: - // case 5: - // case 10: - // dtPlanSetEndTime = dtNow.Date.AddDays(1).AddSeconds(-1);//当天 - // break; - //} - //#endregion - - #endregion - - DateTime dtPlanSetEndTime = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_SafeCheck_Make, filter.OrgId.Value, dtNow, listPlanSetRund[i].PLANCHECKFREQUENCY, null); - - - for (int j = 0; j < listDepartMent.Count; j++) - { - T_FM_USER noticeModel = listUSER.Find(e => e.DEPARTMENT_ID == listDepartMent[j].ID);//如果部门有多个安全员 随机获取一个 - if (noticeModel == null) + listFMUserNotice.Add(chargeUser);//班长 + listDepartment.Add(listTeamScheduling[j].Nav_Team.Nav_Department);//排班所在组织 (不然不好匹配检查库) + listStartTime.Add(listTeamScheduling[j].START_TIME);//当班开始时间 + if (listTeamScheduling[j].END_TIME < listTeamScheduling[j].START_TIME) { - try - { - //部门未找到安全员 - SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "部门未找到到审批角色【负责人】", "T_FM_DEPARTMENTID:【" + listDepartMent[j].ID.ToString() + "】", " T_BS_PLAN_SETID:【" + listPlanSetRund[i].ID + "】"); - } - catch { } - - continue; //未设置安全员信息 + //处理 如果傍晚上班 凌晨下班 排班结束时间有误 + listEndTime.Add(listTeamScheduling[j].END_TIME.AddDays(1));//默认当班结束时间 } - listFMUserNotice.Add(noticeModel); - listDepartment.Add(listDepartMent[j]); - listEndTime.Add(dtPlanSetEndTime);//添加结束时间 - - } - } - //找到对应的 添加代办 安全员 10 班长 20, - else if (listPlanSetRund[i].PLANCHECKOBJECT == 10)//安全员(负责人) - { - if (listPlanSetRund == null) - { - //没有安全员 循环执行前已写日志 - continue; - } - //T_FM_DEPARTMENT 部门表 - //导航属性:安全员":ICollection Nav_SafeUser - //部门类型: [EnumName("HMLevleEnum")] int DEPARTMENT_TYPE - //找到 公司 部门 车间 班组 级别 对应安全员 - DEPARTMENT_TYPE = listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE;//检查等级 和部门等级匹配 - - //公司级 检查 给安环部发送通知 - //其余等级的安全检查 针对生产部门 - - //需要做全检查的所有部门 - List listDepartMent = null; - Expression> expressionDepartMent = e => !e.IS_DELETED && e.ENABLE_STATUS == 0; - - if (listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE == 3)//公司级 - { - //安环部 部门负责人 - expressionDepartMent = expressionDepartMent.And(e => e.DEPARTMENT_STATUS == (int)FMDepartmentStatus.安全部门); - listDepartMent = GetEntities(expressionDepartMent, null, "Nav_ProdutionUnit.Nav_Enums").ToList(); - } - else - { - //生产部门 - expressionDepartMent = expressionDepartMent.And(e => e.DEPARTMENT_TYPE == DEPARTMENT_TYPE && e.DEPARTMENT_STATUS == (int)FMDepartmentStatus.生产部门); - listDepartMent = GetEntities(expressionDepartMent, null, "Nav_ProdutionUnit.Nav_Enums").ToList(); - - } - - List ListDepartMentID = new List(); - if (listDepartMent.Count > 0) - { - ListDepartMentID = listDepartMent.Select(e => e.ID).ToList(); - } - if (ListDepartMentID.Count < 1) - { - //没有找到部门 - - } - //modelRoleSafe 公司级 公司级安全员 部门级 安全员 车间级安全员 车间级 安全员 - - //modelRoleSafe.DEPARTMENT_TYPE - modelRoleSafe = GetEntity(e => e.NAME.Contains("安全员") && e.DEPARTMENT_TYPE == DEPARTMENT_TYPE); - if (modelRoleSafe == null) - { - try + else { - //部门未找到安全员 - SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "部门未找到到审批角色【安全员】", "DEPARTMENT_TYPE:【" + DEPARTMENT_TYPE.ToString() + "】", " T_BS_PLAN_SETID:【" + listPlanSetRund[i].ID + "】"); - } - catch { } - continue; - } - - //部门中审批角色:安全员 - List listUSER = GetEntities(e => e.DEPARTMENT_ID.HasValue && ListDepartMentID.Contains(e.DEPARTMENT_ID.Value) && e.Nav_ApproveRole != null && e.Nav_ApproveRole.ID == modelRoleSafe.ID, null, new string[] { "Nav_ApproveRole" }).ToList(); - //&& e.Nav_ApproveRole.DEPARTMENT_TYPE == DEPARTMENT_TYPE 公司级的时候 安环部负责 - - - //查找对应设置的部门/车间/班组 - //List listDepartMent = this.GetOrderEntities(e => !e.IS_DELETED && e.DEPARTMENT_TYPE == DEPARTMENT_TYPE && e.ENABLE_STATUS == 0, null, new string[] { "Nav_SafeUser", "Nav_SafeUser.Nav_User" }).ToList(); - #region 旧方法 - - //DateTime dtPlanSetEndTime = dtNow; - - //#region 获取 检查设置 最后时间 - //// BSPLANCHECKFREQUENCYEnum - //switch (listPlanSetRund[i].PLANCHECKFREQUENCY) - //{ - // case 20: //每周 - // //周一 1 周二 2 周日 0 - // int weekDay = (int)dtNow.DayOfWeek; - // //周一开始时间 - // DateTime dtWeekDayStart = dtNow.Date.AddDays(-1 * (weekDay == 0 ? 6 : (weekDay - 1))); - // //本周最后时间点 - // dtPlanSetEndTime = dtWeekDayStart.AddDays(8).AddSeconds(-1); - // break; - // case 30: - // //本月 最后一天 - // dtPlanSetEndTime = Convert.ToDateTime(dtNow.Year + "-" + dtNow.Month + "-01 00:00:00").AddMonths(1).AddSeconds(-1);//本月最后时间 本月初一 加一月 减 减 1秒 - // break; - // case 40://每季度 本季度最后一天 - // int month = dtNow.Month < 4 ? 4 : (dtNow.Month < 7 ? 7 : (dtNow.Month < 10 ? 10 : 1)); - // if (month == 4 || month == 7 || month == 10) - // { - // dtPlanSetEndTime = Convert.ToDateTime(dtNow.Year + "-" + month + "-01 00:00:00").AddSeconds(-1); - // } - // else - // { - // dtPlanSetEndTime = Convert.ToDateTime((dtNow.Year + 1) + "-12-31 23:59:59"); - // } - // break; - // default: - // case 5: - // case 10: - // dtPlanSetEndTime = dtNow.Date.AddDays(1).AddSeconds(-1);//当天 - // break; - //} - //#endregion - - #endregion - - DateTime dtPlanSetEndTime = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_SafeCheck_Make, filter.OrgId.Value, dtNow, listPlanSetRund[i].PLANCHECKFREQUENCY, null); - - for (int j = 0; j < listDepartMent.Count; j++) - { - T_FM_USER noticeModel = listUSER.Find(e => e.DEPARTMENT_ID == listDepartMent[j].ID);//如果部门有多个安全员 随机获取一个 - if (noticeModel == null) - { - try - { - //部门未找到安全员 - SysLogService.AddLog(listPlanSetRund[0].ORG_ID.Value, User.ID, PFSysLogTypeEnum.SafeChecker, "BS002", "部门未找到到审批角色【安全员】", "T_FM_DEPARTMENTID:【" + listDepartMent[j].ID.ToString() + "】", " T_BS_PLAN_SETID:【" + listPlanSetRund[i].ID + "】"); - } - catch { } - - continue; //未设置安全员信息 - } - listFMUserNotice.Add(noticeModel); - listDepartment.Add(listDepartMent[j]); - listEndTime.Add(dtPlanSetEndTime);//添加结束时间 - - } - } - else if (listPlanSetRund[i].PLANCHECKOBJECT == 20)//班长 - { - //找到今天有上班的 班组 对应 班长 - //排班 T_FM_DEPARTMENT_SCHEDULING 班组T_FM_TEAM 班长CHARGE_PERSON_ID 人员Nav_ChargePerson 用户Nav_User - - //listPlanSetRund[i].CHECKTIME "Nav_ProdutionUnit.Nav_Enums" - List listTeamScheduling = null; - string[] pathScheduling = { "Nav_DepartMent", "Nav_Team.Nav_ChargePerson.Nav_User.Nav_Department.Nav_Enums" };//, "Nav_Team.Nav_ChargePerson.Nav_DepartMent" - if (listPlanSetRund[i].CHECKTIME == null) - { - //没有检查时间 就当天 有排班 - listTeamScheduling = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME == dtFirst && e.START_TIME != e.END_TIME, null, pathScheduling).ToList(); - } - else - { - //有检查时间 就检查时间有排班 - ChcekDateTime = Convert.ToDateTime(dtFirst.ToString("yyyy-MM-dd") + listPlanSetRund[i].CHECKTIME.Value.ToString(" HH:mm:ss")); - //e.Nav_DepartMent.DEPARTMENT_TYPE == 2 - listTeamScheduling = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME == dtFirst && e.START_TIME <= ChcekDateTime && e.END_TIME >= ChcekDateTime, null, pathScheduling).ToList(); - //listTeamScheduling = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME == dtFirst && e.START_TIME != e.END_TIME && e.START_TIME.Date == dtFirst.Date, null, pathScheduling).ToList(); - - } - - if (listTeamScheduling != null && listTeamScheduling.Count > 0) - { - for (int j = 0; j < listTeamScheduling.Count; j++) - { - chargePerson = listTeamScheduling[j].Nav_Team.Nav_ChargePerson;//班长 - //listDepartment.Add(listTeamScheduling[j].Nav_DepartMent); - - listDepartment.Add(chargePerson.Nav_User.Nav_Department != null ? chargePerson.Nav_User.Nav_Department : listTeamScheduling[j].Nav_DepartMent); //班长所在部门 不然审批流不好找 BS034 - //listDepartment.Add(listTeamScheduling[j].Nav_DepartMent != null ? listTeamScheduling[j].Nav_DepartMent : chargePerson.Nav_DepartMent); //班长所在部门 - - listFMUserNotice.Add(chargePerson.Nav_User);//班长 listEndTime.Add(listTeamScheduling[j].END_TIME);//默认当班结束时间 } + + //chargePerson = listTeamScheduling[j].Nav_Team.Nav_ChargePerson;//班长 + //listDepartment.Add(listTeamScheduling[j].Nav_DepartMent); + //listDepartment.Add(chargePerson.Nav_User.Nav_Department != null ? chargePerson.Nav_User.Nav_Department : listTeamScheduling[j].Nav_DepartMent); //班长所在部门 不然审批流不好找 BS034 + //listDepartment.Add(listTeamScheduling[j].Nav_DepartMent != null ? listTeamScheduling[j].Nav_DepartMent : chargePerson.Nav_DepartMent); //班长所在部门 + } } + //else {//未找到通知对象 跳过 continue; } if (listFMUserNotice.Count < 1) { + //listPlanSetRund[i] //没有找到通知人员信息 continue; } - #endregion - - //CHECK_TYPENAME_CODE = MkPinyinString(listPlanSetRund[i].Nav_CheckType.NAME) + listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE.ToString(); + //CHECK_TYPENAME_CODE = MkPinyinString(listPlanSetRund[i].Nav_CheckType.NAME) + listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE.ToString() + DateTime.Now.ToString("yyyyMMddHH"); CHECK_TYPENAME_CODE = GetCheckCode(listPlanSetRund[i].Nav_CheckType.NAME, listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE); + + string CheckName = string.Empty; for (int j = 0; j < listFMUserNotice.Count; j++) { + CheckName = listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.NAME + listPlanSetRund[i].Nav_CheckType.NAME + "任务表" + (listPlanSetRund[i].PLANCHECKFREQUENCY == 10 ? listStartTime[j].ToString("MMdd") : ""); + modelCheck = listSafeCheck.FirstOrDefault(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID && e.USERID_DOPLAN == listFMUserNotice[j].ID && e.NAME == CheckName);//e.CREATE_TIME.HasValue && listStartTime[j].Date != e.CREATE_TIME.Value.Date 今天白班有上班 又 0点开始上班 + if (modelCheck != null) + { + if (listStartTime[j].Date != dtNow.Date) + { + if (modelCheck.CREATE_TIME.HasValue && (dtNow - modelCheck.CREATE_TIME.Value).TotalHours < 2) + continue; //如果时间差小于2个小时 也是 判断为重复(实际是1个班组工作时长 8 小时) + else + { + DateTime dtCheck = dtNow.AddHours(-2); + var listCheck = listSafeCheck.Where(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID && e.USERID_DOPLAN == listFMUserNotice[j].ID && (e.CREATE_TIME.Value.Date == dtNow.Date || e.CREATE_TIME.Value >= dtCheck || e.NAME == CheckName)); + if (listCheck != null && listCheck.Any()) + { + continue; + } + } + } + else + { + continue; //这个人 这个检查项目有添加过 + } + } + + + #region 检查区域 获取 #region 新版 @@ -695,36 +1152,40 @@ namespace APT.PP.WebApi.Controllers.Api.PP #endregion + #region 旧版 - - #region 旧版 - - //CHECKOBJECT = GetCHECKOBJECT(listDepartment[j], listFMUserNotice[j].ORG_ID.Value, listAreObject); + //CHECKOBJECT = GetCHECKOBJECT(listDepartment[j], filter.OrgId.Value, listAreObject);// listFMUserNotice[j].ORG_ID.Value + ////判断检查范围 如果不符合 就跳过 //if (listPlanSetRund[i].Nav_ListSetObject != null && listPlanSetRund[i].Nav_ListSetObject.Any()) //{ // checkObject = listPlanSetRund[i].Nav_ListSetObject.FirstOrDefault(e => (int)e.CHECKOBJECT == CHECKOBJECT); // if (checkObject == null) // { - // //有限制 不满足 - // if (listPlanSetRund[i].Nav_ListSetDepObject == null || !listPlanSetRund[i].Nav_ListSetDepObject.Any()) - // { - // continue; - // } + // //范围不符合 + // continue; // } //} #endregion + + #endregion + + if (listPlanSetRund[i].Nav_ListSetDepObject != null && listPlanSetRund[i].Nav_ListSetDepObject.Any()) { - checkDetObject = listPlanSetRund[i].Nav_ListSetDepObject.FirstOrDefault(e => e.DEPARTMENT_ID.Value == listDepartment[j].ID); - if (checkDetObject == null) - continue; //有限制 不满足 - else if (CHECKOBJECT == 0 && checkDetObject.CHECKOBJECT != BSMineTypeEnum.All) - CHECKOBJECT = (int)checkDetObject.CHECKOBJECT; + checkDepObject = listPlanSetRund[i].Nav_ListSetDepObject.FirstOrDefault(e => e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == listDepartment[j].ID); + if (checkDepObject == null) + { + //范围不符合 + continue; + } + //else + //{ + // CHECKOBJECT = (int)checkDepObject.CHECKOBJECT; + //} } - if (CHECKOBJECT == 0 && listDepartment[j].MineType.HasValue) { CHECKOBJECT = listDepartment[j].MineType.Value; @@ -734,12 +1195,11 @@ namespace APT.PP.WebApi.Controllers.Api.PP { continue; } - //添加代办 T_BS_SAFE_CHECK modelRun = new T_BS_SAFE_CHECK(); modelRun.ID = Guid.NewGuid(); modelRun.ORG_ID = filter.GetOrgId(); - modelRun.NAME = listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.NAME + listPlanSetRund[i].Nav_CheckType.NAME + "任务表" + (listPlanSetRund[i].PLANCHECKFREQUENCY == 10 ? dtNow.ToString("MMdd") : ""); + modelRun.NAME = CheckName;// listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.NAME + listPlanSetRund[i].Nav_CheckType.NAME + "任务表" + (listPlanSetRund[i].PLANCHECKFREQUENCY == 10 ? listStartTime[j].ToString("MMdd") : ""); //23 点时 添加了零点的记录 //+ ((BSPLANCHECKFREQUENCYEnum)listPlanSetRund[i].PLANCHECKFREQUENCY).GetDescription() + ((listPlanSetRund[i].WEEKDATA != null && listPlanSetRund[i].WEEKDATA != 0) ? (((WEEKDATAEnum)listPlanSetRund[i].WEEKDATA).GetDescription()) : "") + ((listPlanSetRund[i].DATA.HasValue && listPlanSetRund[i].DATA != 0) ? listPlanSetRund[i].DATA.ToString() : "") + (listPlanSetRund[i].CHECKTIME.HasValue ? (listPlanSetRund[i].CHECKTIME.Value.ToString("HH:mm")) : "");//代办标题 公司级专业检查每季1日/每周星期一 10点 @@ -751,19 +1211,17 @@ namespace APT.PP.WebApi.Controllers.Api.PP modelRun.CREATER_ID = listFMUserNotice[j].ID;//安全检查的创建人 就是通知人 modelRun.CHECKOBJECT = CHECKOBJECT; - modelRun.PLAN_SET_ID = listPlanSetRund[i].ID; modelRun.CREACTTYPE = CREACTTYPEEnum.System;// 10;//系统生成 - modelRun.CODE = CHECK_TYPENAME_CODE + j.ToString();//mmss 因为审批流 CODE 长度20 减少长度 CHECK_TYPENAME_CODE 包含年月日 DateTime.Now.ToString("yyyyMMddHH") + + modelRun.CODE = CHECK_TYPENAME_CODE + i.ToString() + j.ToString();//mmss 因为审批流 CODE 长度20 减少长度 + modelRun.CREATE_TIME = dtNow;//添加时间 //modelRun.STATUCHECK = (int)HMAuditStatusEnmu.已保存; modelRun.STATUCHECK = (int)HMAuditStatusEnmu.草稿; - modelRun.USERID_DOPLAN = listFMUserNotice[j].ID;//制表人 modelRun.DEPARTMENTID = listDepartment[j].ID;//检查部门(公司/部门/车间/班组 ID) - - modelRun.LIMITDATETIME = listEndTime[0]; + modelRun.LIMITDATETIME = listEndTime[j]; //[EnumName("HMAuditStatusEnmu")] //public int STATUCHECK { get; set; } @@ -771,6 +1229,8 @@ namespace APT.PP.WebApi.Controllers.Api.PP { modelRun.CODE = modelRun.CODE.Substring(0, 25); } + + //人 部门ID 名称 listSafeCheckAdd.Add(modelRun); noticeDataIds.Add(modelRun.ID); noticeUserIds.Add(listFMUserNotice[j].ID); @@ -785,7 +1245,7 @@ namespace APT.PP.WebApi.Controllers.Api.PP //} //else //{ - dtTimeOut = dtFirst.AddHours(12); + //dtTimeOut = dtNowDate.AddHours(12); //} //每次单独添加 因为超时时间不对 @@ -796,17 +1256,18 @@ namespace APT.PP.WebApi.Controllers.Api.PP task.UPDATE_SUCCES_TIME = DateTime.Now; } + var listOperateLog = BSOperateLogService.GetListOperateLog(OPERATEPOINT_Enums.GotCheck, Guid.Empty, Guid.Empty, noticeDataIds, noticeUserIds, noticeUserNames, filter.OrgId, null, null); + //给 T_FM_NOTIFICATION_TASK 添加实体 - NotificationTaskService.SendNotificationTask(noticeTitles, noticeDataIds, filter.GetOrgId(), noticeUserIds, noticeUserNames, DateTime.Now, listEndTime, 0, "BS032", () => + NotificationTaskService.SendNotificationTask(noticeTitles, noticeDataIds, filter.GetOrgId(), noticeUserIds, noticeUserNames, listStartTime, listEndTime, 0, "BS032", () => { if (listSafeCheckAdd.Any()) { this.BantchAddEntityNoCommit(listSafeCheckAdd); - if (task != null && !isUpdate) - { + if (listOperateLog != null && listOperateLog.Any()) + BantchSaveEntityNoCommit(listOperateLog); + if (task != null) UpdateEntityNoCommit(task); - isUpdate = true; - } } }); @@ -820,456 +1281,19 @@ namespace APT.PP.WebApi.Controllers.Api.PP } else HttpContext.Items.Add("Count", listSafeCheckAdd.Count); - - SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, listSafeCheckAdd.Count, Parameter1, SyncLogType.BSCreateCheckPlanSet); - //NotificationTaskService.SendNotificationTask(noticeTitles, noticeDataIds, filter.GetOrgId(), noticeUserIds, noticeUserNames, DateTime.Now, dtTimeOut, 0, "BS032", () => - //{ - // if (listSafeCheckAdd.Any()) - // { - // this.BantchAddEntityNoCommit(listSafeCheckAdd); - // } - //}); + SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, listSafeCheckAdd.Count, Parameter1, SyncLogType.BSCreateCheckPlanSetClass, null); } } #endregion + } - return true; - }); - } - - /// - /// 班组级每天检查 - /// 班组 提前一个小时发送安全检查 - /// - /// - /// - [HttpPost, Route("CreateCheckPlanSetClass")] - public JsonActionResult CreateCheckPlanSetClass([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - DateTime CURR_TASK_START_TIME = DateTime.Now; - DateTime dtNow = DateTime.Now; - - var Parameter1 = filter.Parameter1; - //SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, 0, Parameter1, SyncLogType.BSCreateCheckPlanSet); - - if (!string.IsNullOrEmpty(filter.Parameter1)) + catch (Exception ex) { - try - { - //接收来自页面的参数 - DateTime deParm = Convert.ToDateTime(filter.Parameter1); - dtNow = deParm; - } - catch { } + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } - - filter.Parameter1 = " ENABLE_STATUS = false "; - Expression> expression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0 && e.PLANCHECKFREQUENCY == 10 && e.Nav_CheckTypeLevel.Nav_Enums.NAME == "班组级";//&&e.PLANCHECKFREQUENCY==10 每天 班组级 - - List listPlanSet = this.GetOrderEntities(expression, filter, new string[] { "Nav_CheckType", "Nav_CheckTypeLevel.Nav_Enums", "Nav_ListSetObject", "Nav_ListSetDepObject" }).ToList(); - List listPlanSetRund = new List(); - if (listPlanSet.Count < 1) - { - return true;//没找跑批信息 - } - - //T_FM_USER User = GetEntity(e => e.CODE == "admin"); - //if (User == null) - //{ - // User = GetEntity(e => e.ID == listPlanSet[0].CREATER_ID.Value);//随便取一个不影响信息 - //} - //int min = 15;//班组级检查 提前一个小时做跑批 - - #region 获取时间符合的设置 - - //5 单次 每天10, 每周20, 每月30, 每季40, - for (int i = 0; i < listPlanSet.Count; i++) - { - //if (ISTimeOK(listPlanSet[i].RUNSETTIME, dtNow, min, min))//设置时间往前后各偏移 5 分钟 判断跑批 - switch (listPlanSet[i].PLANCHECKFREQUENCY) - { - case 10: - //每日天执行 时间匹配就添加 - listPlanSetRund.Add(listPlanSet[i]); - break; - default: - break; - } - } - - #endregion - - //时间不合适 过 - if (listPlanSetRund.Count < 1) - { - return true; - } - - DateTime dtNowDate = dtNow.Date; - DateTime ChcekEndTime = dtNow.AddHours(1);//1个小时以内上班的 - - ////1个小时内要上班的排班 - //string[] pathScheduling = { "Nav_Team.Nav_ChargePerson.Nav_User", "Nav_Team.Nav_Department" }; - //listTeamScheduling = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME.Date == e.START_TIME.Date && e.START_TIME != e.END_TIME && dtNow <= e.START_TIME && e.START_TIME <= ChcekEndTime, null, pathScheduling).ToList();//一个小时以内上班的排班 && e.DATE_TIME == dtNowDate 零点时 - - #region 隔离排班经常出现重复排班 - - //1个小时内要上班的排班 - //string[] pathScheduling = { "Nav_ChargePerson.Nav_User.ID", "Nav_ChargePerson.Nav_User.NAME" };//报错 - string[] pathScheduling = { "Nav_ChargePerson.Nav_User", "Nav_Department.Nav_ProdutionUnit.Nav_Enums" }; - - //var listDyTeamScheduling2 = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME.Date == e.START_TIME.Date && e.START_TIME != e.END_TIME && dtNow <= e.START_TIME && e.START_TIME <= ChcekEndTime && e.TEAM_ID.HasValue, null).GroupBy(e => new { e.ENABLE_STATUS, e.DATE_TIME, e.START_TIME, e.END_TIME, e.TEAM_ID, e.ORG_ID }).ToList(); - - var listDyTeamScheduling = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.DATE_TIME.Date == e.START_TIME.Date && e.START_TIME != e.END_TIME && dtNow <= e.START_TIME && e.START_TIME <= ChcekEndTime && e.TEAM_ID.HasValue, null) - .Select(e => new DEPARTMENT_SCHEDULING_TEMP - { - ENABLE_STATUS = e.ENABLE_STATUS, - DATE_TIME = e.DATE_TIME, - START_TIME = e.START_TIME, - END_TIME = e.END_TIME, - TEAM_ID = e.TEAM_ID, - ORG_ID = e.ORG_ID, - }). - GroupBy(e => new { e.ENABLE_STATUS, e.DATE_TIME, e.START_TIME, e.END_TIME, e.TEAM_ID, e.ORG_ID }) - .ToList();//一个小时以内上班的排班 && e.DATE_TIME == dtNowDate 零点时 - - //1小时内 没有排班开始 过 - if (listDyTeamScheduling == null || !listDyTeamScheduling.Any()) - { - return true; - } - List listTeamScheduling = new List(); - foreach (var item in listDyTeamScheduling) - { - listTeamScheduling.Add(new T_FM_DEPARTMENT_SCHEDULING() - { - ENABLE_STATUS = item.Key.ENABLE_STATUS, - DATE_TIME = item.Key.DATE_TIME, - START_TIME = item.Key.START_TIME, - END_TIME = item.Key.END_TIME, - TEAM_ID = item.Key.TEAM_ID, - ORG_ID = item.Key.ORG_ID, - }); - } - List listTeamID = listTeamScheduling.Select(e => e.TEAM_ID.Value).ToList(); - var listTeam = GetEntities(e => listTeamID.Contains(e.ID), null, pathScheduling); - //var listDepID = listTeamScheduling.Select(e => e.DEPARTMENT_ID); - //var listDep = GetEntities(e => listDepID.Contains(e.ID),null); - foreach (var item in listTeamScheduling) - { - item.Nav_Team = listTeam.FirstOrDefault(e => e.ID == item.TEAM_ID.Value); - //item.Nav_DepartMent = listDep.FirstOrDefault(e => e.ID == item.DEPARTMENT_ID); - } - - #endregion - - #region 数据校验 今天添加对应的跑批 - - List listPlanSetID = listPlanSetRund.Select(e => e.ID).ToList(); - // 系统生成10 用户主动创建20 今天 生成的 - //最小时间 - - List listSafeCheck = this.GetOrderEntities(e => e.ENABLE_STATUS == 0 && e.CREACTTYPE == CREACTTYPEEnum.System && e.CREATE_TIME >= dtNowDate && e.PLAN_SET_ID.HasValue && listPlanSetID.Contains(e.PLAN_SET_ID.Value), filter).OrderByDescending(e => e.CREATE_TIME).ToList(); - - #endregion - - #region 跑批添加数据 - - Guid CHECK_PLAN_SETL_ID = Guid.Empty; - T_BS_SAFE_CHECK modelCheck = null; - - List listSafeCheckAdd = new List(); //需要插入数据库的安检记录 - List listFMUserNotice = null;//每项设置的通知人员(中间表) - List listDepartment = null; - - DateTime dtTimeOut = DateTime.Now; - string CHECK_TYPENAME_CODE = string.Empty;//拼音首字母 - - T_FM_SYNC_TASK task = null; - T_FM_USER chargeUser = null; - - List listAreObject = null; - //检查区域 部门 范围 - var listAreObjectT = GetEntities(e => e.ORG_ID == listPlanSetRund[0].ORG_ID, null, null); - if (listAreObjectT != null) - { - listAreObject = listAreObjectT.ToList(); - } - - task = GetEntity(filter.Keyword); - if (task != null) - { - //不能新增去年的 - task.CURR_TASK_START_TIME = CURR_TASK_START_TIME;//上次同步结束时间 - task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间 - task.SYNC_PARAM = "";//清空参数 - } - - int CHECKOBJECT = 0; - List listCheckObject = new List(); - T_BS_PLAN_SET_OBJECT checkObject = null; - T_BS_PLAN_SET_DEP_OBJECT checkDepObject = null; - for (int i = 0; i < listPlanSetRund.Count; i++) - { - listSafeCheckAdd = new List(); - var noticeTitles = new List(); - var noticeDataIds = new List(); - var noticeUserIds = new List(); - var noticeUserNames = new List(); - - CHECK_PLAN_SETL_ID = listPlanSetRund[i].ID; - //modelCheck = listSafeCheck.FirstOrDefault(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID); - //if (modelCheck != null) - //{ - // //有添加检查信息 - // continue; - //} - - listDepartment = new List(); - listFMUserNotice = new List(); - List listEndTime = new List(); - List listStartTime = new List(); - - //班组级 只有 班长 - if (listTeamScheduling != null && listTeamScheduling.Count > 0) - { - for (int j = 0; j < listTeamScheduling.Count; j++) - { - chargeUser = listTeamScheduling[j].Nav_Team.Nav_ChargePerson.Nav_User; - if (listFMUserNotice.Contains(chargeUser)) - { - //如果一个人 任多个班 班长 - //不重复发送 检查 - continue; - } - - listFMUserNotice.Add(chargeUser);//班长 - listDepartment.Add(listTeamScheduling[j].Nav_Team.Nav_Department);//排班所在组织 (不然不好匹配检查库) - listStartTime.Add(listTeamScheduling[j].START_TIME);//当班开始时间 - if (listTeamScheduling[j].END_TIME < listTeamScheduling[j].START_TIME) - { - //处理 如果傍晚上班 凌晨下班 排班结束时间有误 - listEndTime.Add(listTeamScheduling[j].END_TIME.AddDays(1));//默认当班结束时间 - } - else - { - listEndTime.Add(listTeamScheduling[j].END_TIME);//默认当班结束时间 - } - - //chargePerson = listTeamScheduling[j].Nav_Team.Nav_ChargePerson;//班长 - //listDepartment.Add(listTeamScheduling[j].Nav_DepartMent); - //listDepartment.Add(chargePerson.Nav_User.Nav_Department != null ? chargePerson.Nav_User.Nav_Department : listTeamScheduling[j].Nav_DepartMent); //班长所在部门 不然审批流不好找 BS034 - //listDepartment.Add(listTeamScheduling[j].Nav_DepartMent != null ? listTeamScheduling[j].Nav_DepartMent : chargePerson.Nav_DepartMent); //班长所在部门 - - } - } - - //else {//未找到通知对象 跳过 continue; } - if (listFMUserNotice.Count < 1) - { - //listPlanSetRund[i] - //没有找到通知人员信息 - continue; - } - - //CHECK_TYPENAME_CODE = MkPinyinString(listPlanSetRund[i].Nav_CheckType.NAME) + listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE.ToString() + DateTime.Now.ToString("yyyyMMddHH"); - CHECK_TYPENAME_CODE = GetCheckCode(listPlanSetRund[i].Nav_CheckType.NAME, listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.VALUE); - - string CheckName = string.Empty; - for (int j = 0; j < listFMUserNotice.Count; j++) - { - CheckName = listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.NAME + listPlanSetRund[i].Nav_CheckType.NAME + "任务表" + (listPlanSetRund[i].PLANCHECKFREQUENCY == 10 ? listStartTime[j].ToString("MMdd") : ""); - modelCheck = listSafeCheck.FirstOrDefault(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID && e.USERID_DOPLAN == listFMUserNotice[j].ID && e.NAME == CheckName);//e.CREATE_TIME.HasValue && listStartTime[j].Date != e.CREATE_TIME.Value.Date 今天白班有上班 又 0点开始上班 - if (modelCheck != null) - { - if (listStartTime[j].Date != dtNow.Date) - { - if (modelCheck.CREATE_TIME.HasValue && (dtNow - modelCheck.CREATE_TIME.Value).TotalHours < 2) - continue; //如果时间差小于2个小时 也是 判断为重复(实际是1个班组工作时长 8 小时) - else - { - DateTime dtCheck = dtNow.AddHours(-2); - var listCheck = listSafeCheck.Where(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID && e.USERID_DOPLAN == listFMUserNotice[j].ID && (e.CREATE_TIME.Value.Date == dtNow.Date || e.CREATE_TIME.Value >= dtCheck || e.NAME == CheckName)); - if (listCheck != null && listCheck.Any()) - { - continue; - } - } - } - else - { - continue; //这个人 这个检查项目有添加过 - } - } - - - #region 检查区域 获取 - - #region 新版 - - listCheckObject.Clear(); - CHECKOBJECT = 0; - foreach (var itemUnit in listDepartment[j].Nav_ProdutionUnit) - { - listCheckObject.Add(itemUnit.Nav_Enums.VALUE); - } - - if (listCheckObject.Count < 1 && (listPlanSetRund[i].Nav_ListSetObject != null && listPlanSetRund[i].Nav_ListSetObject.Any())) - { - continue; - } - - if (listPlanSetRund[i].Nav_ListSetObject != null && listPlanSetRund[i].Nav_ListSetObject.Any()) - { - checkObject = listPlanSetRund[i].Nav_ListSetObject.FirstOrDefault(e => listCheckObject.Contains((int)e.CHECKOBJECT)); - if (checkObject == null) - { - //范围不符合 - continue; - } - else - { - CHECKOBJECT = (int)checkObject.CHECKOBJECT; - } - } - - #endregion - - - #region 旧版 - - //CHECKOBJECT = GetCHECKOBJECT(listDepartment[j], filter.OrgId.Value, listAreObject);// listFMUserNotice[j].ORG_ID.Value - ////判断检查范围 如果不符合 就跳过 - //if (listPlanSetRund[i].Nav_ListSetObject != null && listPlanSetRund[i].Nav_ListSetObject.Any()) - //{ - // checkObject = listPlanSetRund[i].Nav_ListSetObject.FirstOrDefault(e => (int)e.CHECKOBJECT == CHECKOBJECT); - // if (checkObject == null) - // { - // //范围不符合 - // continue; - // } - //} - - #endregion - - - #endregion - - - if (listPlanSetRund[i].Nav_ListSetDepObject != null && listPlanSetRund[i].Nav_ListSetDepObject.Any()) - { - checkDepObject = listPlanSetRund[i].Nav_ListSetDepObject.FirstOrDefault(e => e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == listDepartment[j].ID); - if (checkDepObject == null) - { - //范围不符合 - continue; - } - //else - //{ - // CHECKOBJECT = (int)checkDepObject.CHECKOBJECT; - //} - } - - if (CHECKOBJECT == 0 && listDepartment[j].MineType.HasValue) - { - CHECKOBJECT = listDepartment[j].MineType.Value; - } - - if (listSafeCheckAdd.FirstOrDefault(e => e.PLAN_SET_ID.HasValue && e.PLAN_SET_ID == listPlanSetRund[i].ID && e.CHECKOBJECT.HasValue && e.CHECKOBJECT == CHECKOBJECT && e.USERID_DOPLAN == listFMUserNotice[j].ID) != null) - { - continue; - } - //添加代办 - T_BS_SAFE_CHECK modelRun = new T_BS_SAFE_CHECK(); - modelRun.ID = Guid.NewGuid(); - modelRun.ORG_ID = filter.GetOrgId(); - modelRun.NAME = CheckName;// listPlanSetRund[i].Nav_CheckTypeLevel.Nav_Enums.NAME + listPlanSetRund[i].Nav_CheckType.NAME + "任务表" + (listPlanSetRund[i].PLANCHECKFREQUENCY == 10 ? listStartTime[j].ToString("MMdd") : ""); //23 点时 添加了零点的记录 - - //+ ((BSPLANCHECKFREQUENCYEnum)listPlanSetRund[i].PLANCHECKFREQUENCY).GetDescription() + ((listPlanSetRund[i].WEEKDATA != null && listPlanSetRund[i].WEEKDATA != 0) ? (((WEEKDATAEnum)listPlanSetRund[i].WEEKDATA).GetDescription()) : "") + ((listPlanSetRund[i].DATA.HasValue && listPlanSetRund[i].DATA != 0) ? listPlanSetRund[i].DATA.ToString() : "") + (listPlanSetRund[i].CHECKTIME.HasValue ? (listPlanSetRund[i].CHECKTIME.Value.ToString("HH:mm")) : "");//代办标题 公司级专业检查每季1日/每周星期一 10点 - - modelRun.CHECK_TYPE_ID = listPlanSetRund[i].CHECK_TYPE_ID.Value; - modelRun.CHECK_TYPE_LEVEL_ID = listPlanSetRund[i].CHECK_TYPE_LEVEL_ID; - - //当天 - //modelRun.CHECKTIME = listPlanSetRund[i].CHECKTIME.HasValue ? Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd ") + listPlanSetRund[i].CHECKTIME.Value.ToString("HH:mm:ss")) : DateTime.Now; - - modelRun.CREATER_ID = listFMUserNotice[j].ID;//安全检查的创建人 就是通知人 - modelRun.CHECKOBJECT = CHECKOBJECT; - modelRun.PLAN_SET_ID = listPlanSetRund[i].ID; - modelRun.CREACTTYPE = CREACTTYPEEnum.System;// 10;//系统生成 - modelRun.CODE = CHECK_TYPENAME_CODE + i.ToString() + j.ToString();//mmss 因为审批流 CODE 长度20 减少长度 - modelRun.CREATE_TIME = dtNow;//添加时间 - - //modelRun.STATUCHECK = (int)HMAuditStatusEnmu.已保存; - modelRun.STATUCHECK = (int)HMAuditStatusEnmu.草稿; - - modelRun.USERID_DOPLAN = listFMUserNotice[j].ID;//制表人 - modelRun.DEPARTMENTID = listDepartment[j].ID;//检查部门(公司/部门/车间/班组 ID) - modelRun.LIMITDATETIME = listEndTime[j]; - //[EnumName("HMAuditStatusEnmu")] - //public int STATUCHECK { get; set; } - - if (modelRun.CODE.Length > 25) - { - modelRun.CODE = modelRun.CODE.Substring(0, 25); - } - - //人 部门ID 名称 - listSafeCheckAdd.Add(modelRun); - noticeDataIds.Add(modelRun.ID); - noticeUserIds.Add(listFMUserNotice[j].ID); - noticeUserNames.Add(listFMUserNotice[j].NAME); - - noticeTitles.Add(modelRun.NAME + "-制定");//每天的 加上日期 - } - ////超时时间设置 - //if (listPlanSetRund[i].CHECKTIME.HasValue) - //{ - // dtTimeOut = Convert.ToDateTime(dtFirst.ToString("yyyy-MM-dd") + listPlanSetRund[i].CHECKTIME.Value.ToString(" HH:mm:ss")); - //} - //else - //{ - //dtTimeOut = dtNowDate.AddHours(12); - //} - //每次单独添加 因为超时时间不对 - - if (noticeTitles.Count > 0) - { - if (task != null) - { - task.UPDATE_SUCCES_TIME = DateTime.Now; - } - - //给 T_FM_NOTIFICATION_TASK 添加实体 - NotificationTaskService.SendNotificationTask(noticeTitles, noticeDataIds, filter.GetOrgId(), noticeUserIds, noticeUserNames, listStartTime, listEndTime, 0, "BS032", () => - { - if (listSafeCheckAdd.Any()) - { - this.BantchAddEntityNoCommit(listSafeCheckAdd); - if (task != null) - { - UpdateEntityNoCommit(task); - } - } - }); - - if (HttpContext.Items.ContainsKey("Count")) - { - try - { - HttpContext.Items["Count"] = int.Parse(HttpContext.Items["Count"].ToString()) + listSafeCheckAdd.Count; - } - catch { } - } - else - HttpContext.Items.Add("Count", listSafeCheckAdd.Count); - SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, listSafeCheckAdd.Count, Parameter1, SyncLogType.BSCreateCheckPlanSetClass, null); - } - } - #endregion - return true; }); } @@ -1302,122 +1326,132 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - DateTime dtNow = DateTime.Now; - if (!string.IsNullOrEmpty(filter.Parameter1)) + try { - try + DateTime dtNow = DateTime.Now; + if (!string.IsNullOrEmpty(filter.Parameter1)) { - //接收来自页面的参数 - DateTime deParm = Convert.ToDateTime(filter.Parameter1); - dtNow = deParm; + try + { + //接收来自页面的参数 + DateTime deParm = Convert.ToDateTime(filter.Parameter1); + dtNow = deParm; + } + catch { } } - catch { } - } - T_FM_SYNC_TASK task = GetEntity(filter.Keyword); + T_FM_SYNC_TASK task = GetEntity(filter.Keyword); - DateTime dtMax = dtNow;//按设置时间 可以提前5分钟执行跑批生成代办任务 - //秒 = 0,分 = 1,时 = 2,天 = 3, + DateTime dtMax = dtNow;//按设置时间 可以提前5分钟执行跑批生成代办任务 + //秒 = 0,分 = 1,时 = 2,天 = 3, - //DateTime dtMin = dtNow; - switch (task.SYNC_UNIT) - { - case 0: - dtMax = dtMax.AddSeconds(task.PERIODIC_TIME); - //if (string.IsNullOrEmpty(filter.Parameter1)) - // dtMin = dtNow.AddSeconds(-1 * task.PERIODIC_TIME); - break; - case 1: - dtMax = dtMax.AddMinutes(task.PERIODIC_TIME); - //if (string.IsNullOrEmpty(filter.Parameter1)) - // dtMin = dtNow.AddMinutes(-1 * task.PERIODIC_TIME); - break; - case 2: - dtMax = dtMax.AddHours(task.PERIODIC_TIME); - //if (string.IsNullOrEmpty(filter.Parameter1)) - // dtMin = dtNow.AddHours(-1 * task.PERIODIC_TIME); - break; - case 3: - dtMax = dtMax.AddDays(task.PERIODIC_TIME); - //if (string.IsNullOrEmpty(filter.Parameter1)) - // dtMin = dtNow.AddDays(-1 * task.PERIODIC_TIME); - break; - default: - break; - } - var checks = GetEntities(e => e.STATUSPLAN >= 5 && e.STATUSPLAN != 30 && e.STATUCHECK <= 10 && e.CHECKTIME.HasValue && e.CHECKTIME.Value < dtMax && e.STATECHECK == STATECHECK.WaitForCheck, null, null);//检查时间在检查范围内、并且未保存过 检查信息(后续再判断是否有发送过检查登记) - //有设置 检查时间 只是保存 STATUCHECK 还是 0 别的操作也是 0 删除 - if (checks == null || !checks.Any()) - { - //如果时间段内没有 - return true; - } - - List listCheckID = checks.Select(e => e.ID).ToList(); - //var listDetail = GetEntities(e => listCheckID.Contains(e.SAFE_CHECK_ID), null, null); - var listDetailUser = GetEntities(e => listCheckID.Contains(e.SAFE_CHECK_ID) && e.ISMAINCHECK, null, "Nav_User"); - List listTaskBS057 = new List(); - - //DateTime dtTimeOut = DateTime.Now.Date.AddDays(1).AddSeconds(-1); - DateTime? dtTimeOut = null; - - //每个条检查记录的人员信息 - List listUserIDSend = new List(); - List listUpdateDetailUser = new List();//检查人员是制表人 修改信息 - - //给发送【检查登记】表 - foreach (var item in checks) - { - item.STATUCHECK = (int)HMAuditStatusEnmu.审批中; - item.STATECHECK = STATECHECK.Draft; - - var listCheckUser = listDetailUser.Where(e => e.SAFE_CHECK_ID == item.ID); - listUserIDSend.Clear();//清空 下次再好判断 - string taskName = item.NAME.Replace("任务表", "记录表") + "-检查登记"; - - foreach (var itemU in listCheckUser) + //DateTime dtMin = dtNow; + switch (task.SYNC_UNIT) { - if (itemU.USER_ID == item.USERID_DOPLAN) - { - //主要检查人 是制表人 - //如果 主要检查人是制表人 检查明细信息修改 - itemU.ISCHECK = true;//检查结果确认 - itemU.CHECKTIME = DateTime.Now; - listUpdateDetailUser.Add(itemU); - } + case 0: + dtMax = dtMax.AddSeconds(task.PERIODIC_TIME); + //if (string.IsNullOrEmpty(filter.Parameter1)) + // dtMin = dtNow.AddSeconds(-1 * task.PERIODIC_TIME); + break; + case 1: + dtMax = dtMax.AddMinutes(task.PERIODIC_TIME); + //if (string.IsNullOrEmpty(filter.Parameter1)) + // dtMin = dtNow.AddMinutes(-1 * task.PERIODIC_TIME); + break; + case 2: + dtMax = dtMax.AddHours(task.PERIODIC_TIME); + //if (string.IsNullOrEmpty(filter.Parameter1)) + // dtMin = dtNow.AddHours(-1 * task.PERIODIC_TIME); + break; + case 3: + dtMax = dtMax.AddDays(task.PERIODIC_TIME); + //if (string.IsNullOrEmpty(filter.Parameter1)) + // dtMin = dtNow.AddDays(-1 * task.PERIODIC_TIME); + break; + default: + break; + } + var checks = GetEntities(e => e.STATUSPLAN >= 5 && e.STATUSPLAN != 30 && e.STATUCHECK <= 10 && e.CHECKTIME.HasValue && e.CHECKTIME.Value < dtMax && e.STATECHECK == STATECHECK.WaitForCheck, null, null);//检查时间在检查范围内、并且未保存过 检查信息(后续再判断是否有发送过检查登记) + //有设置 检查时间 只是保存 STATUCHECK 还是 0 别的操作也是 0 删除 + if (checks == null || !checks.Any()) + { + //如果时间段内没有 + return true; + } - //发送待办 记录表-检查登记 - if (listUserIDSend.Contains(itemU.USER_ID)) + List listCheckID = checks.Select(e => e.ID).ToList(); + //var listDetail = GetEntities(e => listCheckID.Contains(e.SAFE_CHECK_ID), null, null); + var listDetailUser = GetEntities(e => listCheckID.Contains(e.SAFE_CHECK_ID) && e.ISMAINCHECK, null, "Nav_User"); + List listTaskBS057 = new List(); + + //DateTime dtTimeOut = DateTime.Now.Date.AddDays(1).AddSeconds(-1); + DateTime? dtTimeOut = null; + + //每个条检查记录的人员信息 + List listUserIDSend = new List(); + List listUpdateDetailUser = new List();//检查人员是制表人 修改信息 + + //给发送【检查登记】表 + foreach (var item in checks) + { + item.STATUCHECK = (int)HMAuditStatusEnmu.审批中; + item.STATECHECK = STATECHECK.Draft; + + var listCheckUser = listDetailUser.Where(e => e.SAFE_CHECK_ID == item.ID); + listUserIDSend.Clear();//清空 下次再好判断 + string taskName = item.NAME.Replace("任务表", "记录表") + "-检查登记"; + + foreach (var itemU in listCheckUser) { - continue; - } - else - { - dtTimeOut = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_SafeCheck, filter.OrgId.Value, dtNow, null, item.LIMITDATETIME); - listUserIDSend.Add(itemU.USER_ID); - listTaskBS057.Add(NotificationTaskService.InsertUserNoticeTaskModel(taskName, item.ID, item.ORG_ID, itemU.USER_ID, itemU.Nav_User.NAME, DateTime.Now, dtTimeOut.Value, 0, "BS057")); + if (itemU.USER_ID == item.USERID_DOPLAN) + { + //主要检查人 是制表人 + //如果 主要检查人是制表人 检查明细信息修改 + itemU.ISCHECK = true;//检查结果确认 + itemU.CHECKTIME = DateTime.Now; + listUpdateDetailUser.Add(itemU); + } + + //发送待办 记录表-检查登记 + if (listUserIDSend.Contains(itemU.USER_ID)) + { + continue; + } + else + { + dtTimeOut = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_SafeCheck, filter.OrgId.Value, dtNow, null, item.LIMITDATETIME); + listUserIDSend.Add(itemU.USER_ID); + listTaskBS057.Add(NotificationTaskService.InsertUserNoticeTaskModel(taskName, item.ID, item.ORG_ID, itemU.USER_ID, itemU.Nav_User.NAME, DateTime.Now, dtTimeOut.Value, 0, "BS057")); + } } } - } - if (task != null) - { - task.CURR_TASK_START_TIME = dtNow;//上次同步结束时间 - task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间 - task.SYNC_PARAM = "";//清空参数 - } + if (task != null) + { + task.CURR_TASK_START_TIME = dtNow;//上次同步结束时间 + task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间 + task.SYNC_PARAM = "";//清空参数 + } - this.UnifiedCommit(() => - { - if (task != null)//跑批更新 + this.UnifiedCommit(() => + { + if (task != null)//跑批更新 UpdateEntityNoCommit(task); - if (listTaskBS057.Count > 0)//检查登记 + if (listTaskBS057.Count > 0)//检查登记 BantchSaveEntityNoCommit(listTaskBS057); - if (listUpdateDetailUser.Count > 0)//检查人是主要负责人 + if (listUpdateDetailUser.Count > 0)//检查人是主要负责人 BantchSaveEntityNoCommit(listUpdateDetailUser); - BantchSaveEntityNoCommit(checks);//检查记录表单 STATUCHECK (int)HMAuditStatusEnmu.审批中; + BantchSaveEntityNoCommit(checks);//检查记录表单 STATUCHECK (int)HMAuditStatusEnmu.审批中; }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -1490,113 +1524,124 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - DateTime dtNow = DateTime.Now; - var run = this.GetEntity(filter.Keyword); - //一开始 或者下次执行日期为今天 - if ((run.CREATE_TIME.Value.Date <= dtNow.Date && run.EXECUTE_NUM == 0) || run.NEXT_START_TIME.Date <= dtNow.Date) + try { - //执行跑批 - run.NEXT_START_TIME = dtNow.AddDays(1); - if (run.CREATE_TIME.Value.Date == dtNow.Date) + DateTime dtNow = DateTime.Now; + var run = this.GetEntity(filter.Keyword); + //一开始 或者下次执行日期为今天 + if ((run.CREATE_TIME.Value.Date <= dtNow.Date && run.EXECUTE_NUM == 0) || run.NEXT_START_TIME.Date <= dtNow.Date) { - run.EXECUTE_NUM++; - } - - //超期 每天提示整改落实人 - - //整改单 有整改落实人 但是整改责任人未签字 状态 小于 保存并通知或者延期申请,最后时间小于应该完成的时间 - var listNotice = this.GetEntities(e => e.ACTUAL_DEAL_USER_ID.HasValue && e.Nav_SubmitContent != null && e.Nav_ListUserSign == null && (e.DEALSITUATION < (int)DealSituation.Notice || (e.DEALSITUATION == (int)DealSituation.Delay && e.Nav_SubmitContent.LastDateUser >= dtNow)), null, new string[] { "Nav_UserActualDeal", "Nav_ListUserSign", "Nav_SubmitContent" }); - //var listNotice = this.GetEntities(e => e.ACTUAL_DEAL_USER_ID.HasValue && e.Nav_SubmitContent != null, null, new string[] { "Nav_UserActualDeal", "Nav_ListUserSign", "Nav_SubmitContent" }); - - Dictionary dicUserMaster = new Dictionary(); - - DateTime dtNowDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")); - T_FM_USER modelMaster = null; - List listPersonNotice = new List(); - if (listNotice != null && listNotice.Count() > 0) - { - double totalDays = 0; - int maxDays = 0; - foreach (var item in listNotice) + //执行跑批 + run.NEXT_START_TIME = dtNow.AddDays(1); + if (run.CREATE_TIME.Value.Date == dtNow.Date) { - totalDays = (item.Nav_SubmitContent.LastDateUser.Value - dtNow).TotalDays; - switch (item.QUESTION_LEVEL) - { - case 10: - maxDays = (int)BSDelayDaysNoticeEnum.重大; - break; - case 20: - maxDays = (int)BSDelayDaysNoticeEnum.A; - break; - case 30: - maxDays = (int)BSDelayDaysNoticeEnum.B; - break; - case 40: - maxDays = (int)BSDelayDaysNoticeEnum.C; - break; - case 50: - maxDays = (int)BSDelayDaysNoticeEnum.D; - break; - default: - break; - } - if (totalDays > maxDays) - { + run.EXECUTE_NUM++; + } - //通知整改责任人的领导 - if (dicUserMaster.ContainsKey(item.ACTUAL_DEAL_USER_ID.Value)) + //超期 每天提示整改落实人 + + //整改单 有整改落实人 但是整改责任人未签字 状态 小于 保存并通知或者延期申请,最后时间小于应该完成的时间 + var listNotice = this.GetEntities(e => e.ACTUAL_DEAL_USER_ID.HasValue && e.Nav_SubmitContent != null && e.Nav_ListUserSign == null && (e.DEALSITUATION < (int)DealSituation.Notice || (e.DEALSITUATION == (int)DealSituation.Delay && e.Nav_SubmitContent.LastDateUser >= dtNow)), null, new string[] { "Nav_UserActualDeal", "Nav_ListUserSign", "Nav_SubmitContent" }); + //var listNotice = this.GetEntities(e => e.ACTUAL_DEAL_USER_ID.HasValue && e.Nav_SubmitContent != null, null, new string[] { "Nav_UserActualDeal", "Nav_ListUserSign", "Nav_SubmitContent" }); + + Dictionary dicUserMaster = new Dictionary(); + + DateTime dtNowDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")); + T_FM_USER modelMaster = null; + List listPersonNotice = new List(); + if (listNotice != null && listNotice.Count() > 0) + { + double totalDays = 0; + int maxDays = 0; + foreach (var item in listNotice) + { + totalDays = (item.Nav_SubmitContent.LastDateUser.Value - dtNow).TotalDays; + switch (item.QUESTION_LEVEL) { - modelMaster = dicUserMaster[item.ACTUAL_DEAL_USER_ID.Value]; + case 10: + maxDays = (int)BSDelayDaysNoticeEnum.重大; + break; + case 20: + maxDays = (int)BSDelayDaysNoticeEnum.A; + break; + case 30: + maxDays = (int)BSDelayDaysNoticeEnum.B; + break; + case 40: + maxDays = (int)BSDelayDaysNoticeEnum.C; + break; + case 50: + maxDays = (int)BSDelayDaysNoticeEnum.D; + break; + default: + break; + } + if (totalDays > maxDays) + { + + //通知整改责任人的领导 + if (dicUserMaster.ContainsKey(item.ACTUAL_DEAL_USER_ID.Value)) + { + modelMaster = dicUserMaster[item.ACTUAL_DEAL_USER_ID.Value]; + } + else + { + //查找领导 + if (item.Nav_UserActualDeal.DEPARTMENT_ID.HasValue) + { + //获取组织结构部门负责人 + modelMaster = GetPersonMaster(item.Nav_UserActualDeal.DEPARTMENT_ID.Value); + } + + if (modelMaster != null) + { + dicUserMaster.Add(item.ACTUAL_DEAL_USER_ID.Value, modelMaster); + } + } + if (modelMaster == null) + { + //找不到领导 + var notice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改超期单:【未找到上级】" + item.NAME, item.ID, item.ORG_ID, item.ACTUAL_DEAL_USER_ID.Value, item.Nav_UserActualDeal.NAME, dtNowDate, dtNowDate.AddDays(1).AddSeconds(-1), (int)FMNoticeTypeEnum.消息, "BS044_SHOWPRINTDOUT"); + listPersonNotice.Add(notice); + } + else + { + //超期 给落实整改人的领导发送待办 + var notice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改超期单【下属:" + item.Nav_UserActualDeal.NAME + "】:" + item.NAME, item.ID, item.ORG_ID, modelMaster.ID, modelMaster.NAME, dtNowDate, dtNowDate.AddDays(1).AddSeconds(-1), (int)FMNoticeTypeEnum.消息, "BS044_SHOWPRINTDOUT"); + listPersonNotice.Add(notice); + } } else { - //查找领导 - if (item.Nav_UserActualDeal.DEPARTMENT_ID.HasValue) - { - //获取组织结构部门负责人 - modelMaster = GetPersonMaster(item.Nav_UserActualDeal.DEPARTMENT_ID.Value); - } - - if (modelMaster != null) - { - dicUserMaster.Add(item.ACTUAL_DEAL_USER_ID.Value, modelMaster); - } - } - if (modelMaster == null) - { - //找不到领导 - var notice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改超期单:【未找到上级】" + item.NAME, item.ID, item.ORG_ID, item.ACTUAL_DEAL_USER_ID.Value, item.Nav_UserActualDeal.NAME, dtNowDate, dtNowDate.AddDays(1).AddSeconds(-1), (int)FMNoticeTypeEnum.消息, "BS044_SHOWPRINTDOUT"); + //通知 + var notice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改超期单:" + item.NAME, item.ID, item.ORG_ID, item.ACTUAL_DEAL_USER_ID.Value, item.Nav_UserActualDeal.NAME, item.CREATE_TIME.Value, item.Nav_SubmitContent.LastDateUser.Value, (int)FMNoticeTypeEnum.消息, "BS044"); listPersonNotice.Add(notice); } - else - { - //超期 给落实整改人的领导发送待办 - var notice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改超期单【下属:" + item.Nav_UserActualDeal.NAME + "】:" + item.NAME, item.ID, item.ORG_ID, modelMaster.ID, modelMaster.NAME, dtNowDate, dtNowDate.AddDays(1).AddSeconds(-1), (int)FMNoticeTypeEnum.消息, "BS044_SHOWPRINTDOUT"); - listPersonNotice.Add(notice); - } - } - else - { - //通知 - var notice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改超期单:" + item.NAME, item.ID, item.ORG_ID, item.ACTUAL_DEAL_USER_ID.Value, item.Nav_UserActualDeal.NAME, item.CREATE_TIME.Value, item.Nav_SubmitContent.LastDateUser.Value, (int)FMNoticeTypeEnum.消息, "BS044"); - listPersonNotice.Add(notice); } } + + this.UnifiedCommit(() => + { + UpdateEntityNoCommit(run); + if (listPersonNotice.Count > 0) + BantchSaveEntityNoCommit(listPersonNotice);//NoCommit + }); } - this.UnifiedCommit(() => - { - UpdateEntityNoCommit(run); - if (listPersonNotice.Count > 0) - BantchSaveEntityNoCommit(listPersonNotice);//NoCommit - }); } - + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } + /// /// 获取部门负责人(根据组织结构) /// diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs index 4df67e4..3569a6e 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs @@ -65,197 +65,31 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - List completions = new List(); - BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); - var startTime = DateTime.Now.AddMonths(-3); - var timeSet = this.GetEntity(t => t.SET_TYPE == PTSetTypeEnum.HomeTimeSet && t.ENABLE_STATUS == 0); - if (timeSet != null) - startTime = (DateTime)timeSet.RUNSETTIME; - baseFilter.SelectField = new string[] { "ID", "NAME", "Nav_Parent.NAME", "Nav_Parent.Nav_Parent", "PARENT_ID" }; - var departments = GetEntities(t => !t.IS_DELETED, baseFilter); - baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; - var teams = GetEntities(t => !t.IS_DELETED, baseFilter); - //baseFilter.SelectField = new string[] { "SOURCE_DATA_ID", "NOTICE_STATUS" }; - //var tasks = GetEntities(t => !t.IS_DELETED && t.CREATE_TIME >= startTime && t.NOTICE_STATUS == 2, baseFilter); - baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "PRE_MEETING_STATUS", "DEPARTMENT_ID", "OVERTIME" }; //指定字段,包括导航属性 - var preShiftMeetingTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Team.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); - //foreach (var item in preShiftMeetingTemp) - //{ - // var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - // if (task == null) - // item.IS_OVERTIME = 0; - // else - // item.IS_OVERTIME = 1; - //} - var preShiftMeeting = preShiftMeetingTemp. - GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). - Select(group => new + try { - group.Key, - totalCount = group.Count(), - finishCount = group.Where(i => i.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档).Count(), - waitingCount = group.Where(i => i.PRE_MEETING_STATUS != FOPreMeetingStatusEnum.归档).Count(), - onTimeCount = group.Where(i => i.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), - overTimeCount = group.Where(i => i.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() - }).ToList(); - foreach (var item in preShiftMeeting) - { - var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; - var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); - T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.Key.TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - completion.TOTAL_COUNT = item.totalCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.FINISH_COUNT = item.finishCount; - completion.ONTIME_COUNT = item.onTimeCount; - completion.OVERTIME_COUNT = item.overTimeCount; - completion.FORM_NAME = "班前会议"; - completion.ORG_ID = filter.GetOrgId(); - completions.Add(completion); - } - baseFilter.SelectField = new string[] { "CLASS_TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME" }; //指定字段,包括导航属性 - var currentShift = GetEntities(i => i.CREATE_TIME >= startTime && i.Nav_Team.IS_DELETED == false && i.CLASS_TEAM_ID != null && i.DEPARTMENT_ID != null, baseFilter). - GroupBy(m => new { m.CLASS_TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). - Select(group => new - { - group.Key, - totalCount = group.Count(), - finishCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档).Count(), - waitingCount = group.Where(i => i.SHIFT_STATUS != (int)FOShiftStatusEnum.归档).Count(), - onTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), - overTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() - }).ToList(); - foreach (var item in currentShift) - { - var deparId = teams.FirstOrDefault(t => t.ID == item.Key.CLASS_TEAM_ID)?.DEPARTMENT_ID; - var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); - T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.Key.CLASS_TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - completion.TOTAL_COUNT = item.totalCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.FINISH_COUNT = item.finishCount; - completion.ONTIME_COUNT = item.onTimeCount; - completion.OVERTIME_COUNT = item.overTimeCount; - completion.FORM_NAME = "岗位当班"; - completion.ORG_ID = filter.GetOrgId(); - completions.Add(completion); - } - baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME" }; //指定字段,包括导航属性 - var changeShift = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Team.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter). - GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). - Select(group => new - { - group.Key, - totalCount = group.Count(), - finishCount = group.Where(i => i.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档).Count(), - waitingCount = group.Where(i => i.SHIFT_STATUS != (int)FOChangeShiftStatusEnum.归档).Count(), - onTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), - overTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() - }).ToList(); - foreach (var item in changeShift) - { - var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; - var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); - T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.Key.TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - completion.TOTAL_COUNT = item.totalCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.FINISH_COUNT = item.finishCount; - completion.ONTIME_COUNT = item.onTimeCount; - completion.OVERTIME_COUNT = item.overTimeCount; - completion.FORM_NAME = "岗位交接班"; - completion.ORG_ID = filter.GetOrgId(); - completions.Add(completion); - } - baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Taem.NAME", "TA_STATUS", "Nav_Taem.DEPARTMENT_ID", "OVERTIME" }; //指定字段,包括导航属性 - var teamActivity = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Taem.IS_DELETED == false && i.Nav_Taem.DEPARTMENT_ID != null, baseFilter). - GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Taem.NAME, m.Nav_Taem.DEPARTMENT_ID }). - Select(group => new - { - group.Key, - totalCount = group.Count(), - finishCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档).Count(), - waitingCount = group.Where(i => i.TA_STATUS != (int)FOTeamActivityState.已归档).Count(), - onTimeCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), - overTimeCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档 && i.OVERTIME == FOISOVERTIME.超时).Count() - }).ToList(); - foreach (var item in teamActivity) - { - var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; - var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); - T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.Key.TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - completion.TOTAL_COUNT = item.totalCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.FINISH_COUNT = item.finishCount; - completion.ONTIME_COUNT = item.onTimeCount; - completion.OVERTIME_COUNT = item.overTimeCount; - completion.FORM_NAME = "班组安全活动记录"; - completion.ORG_ID = filter.GetOrgId(); - completions.Add(completion); - } - this.UnifiedCommit(() => - { - DeleteEntityNoCommit(t => true); - if (completions.Any() && completions.Count > 0) - BantchAddEntityNoCommit(completions); - }); - - return true; - }); - } - - /// - /// 完成情况统计(按月) - /// - /// - /// - [HttpPost, Route("CreateDepartmentCompletionNew")] - public JsonActionResult CreateDepartmentCompletionNew([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - List completions = new List(); - BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); - var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-11).Year + "-" + DateTime.Now.AddMonths(-11).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", "Nav_Parent.Nav_Parent", "PARENT_ID" }; - var departments = GetEntities(t => !t.IS_DELETED, baseFilter); - baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; - var teams = GetEntities(t => !t.IS_DELETED, baseFilter); - baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "PRE_MEETING_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME" }; //指定字段,包括导航属性 - var preShiftMeetingTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Team.IS_DELETED == false && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); - baseFilter.SelectField = new string[] { "CLASS_TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME" }; //指定字段,包括导航属性 - var currentShiftTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.Nav_Team.IS_DELETED == false && i.CLASS_TEAM_ID != null && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); - baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME" }; //指定字段,包括导航属性 - var changeShiftTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Team.IS_DELETED == false && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); - baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Taem.NAME", "TA_STATUS", "Nav_Taem.DEPARTMENT_ID", "OVERTIME", "CREATE_TIME" }; //指定字段,包括导航属性 - var teamActivityTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Taem.IS_DELETED == false && i.IS_DELETED == false && i.Nav_Taem.DEPARTMENT_ID != null, 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")); - var preTemp = preShiftMeetingTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); - var preShiftMeeting = preTemp. + List completions = new List(); + BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); + var startTime = DateTime.Now.AddMonths(-3); + var timeSet = this.GetEntity(t => t.SET_TYPE == PTSetTypeEnum.HomeTimeSet && t.ENABLE_STATUS == 0); + if (timeSet != null) + startTime = (DateTime)timeSet.RUNSETTIME; + baseFilter.SelectField = new string[] { "ID", "NAME", "Nav_Parent.NAME", "Nav_Parent.Nav_Parent", "PARENT_ID" }; + var departments = GetEntities(t => !t.IS_DELETED, baseFilter); + baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; + var teams = GetEntities(t => !t.IS_DELETED, baseFilter); + //baseFilter.SelectField = new string[] { "SOURCE_DATA_ID", "NOTICE_STATUS" }; + //var tasks = GetEntities(t => !t.IS_DELETED && t.CREATE_TIME >= startTime && t.NOTICE_STATUS == 2, baseFilter); + baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "PRE_MEETING_STATUS", "DEPARTMENT_ID", "OVERTIME" }; //指定字段,包括导航属性 + var preShiftMeetingTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Team.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); + //foreach (var item in preShiftMeetingTemp) + //{ + // var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + // if (task == null) + // item.IS_OVERTIME = 0; + // else + // item.IS_OVERTIME = 1; + //} + var preShiftMeeting = preShiftMeetingTemp. GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). Select(group => new { @@ -271,8 +105,12 @@ namespace APT.PP.WebApi.Controllers.Api.PP var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = item.Key.TEAM_ID; + completion.TEAM_NAME = item.Key.TeamName; completion.TOTAL_COUNT = item.totalCount; completion.WAITTING_COUNT = item.waitingCount; completion.FINISH_COUNT = item.finishCount; @@ -280,59 +118,31 @@ namespace APT.PP.WebApi.Controllers.Api.PP completion.OVERTIME_COUNT = item.overTimeCount; completion.FORM_NAME = "班前会议"; completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; - if (departInfo != null) - { - if (departInfo.DEPARTMENT_TYPE == 0) - { - completion.DEPARTMENT_ID = item.Key.TEAM_ID; - completion.DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 1) - { - completion.DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = item.Key.TEAM_ID; - completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 2) - { - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.Key.TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - } - } completions.Add(completion); } - var currentTemp = currentShiftTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); - var currentShift = currentTemp. + baseFilter.SelectField = new string[] { "CLASS_TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME" }; //指定字段,包括导航属性 + var currentShift = GetEntities(i => i.CREATE_TIME >= startTime && i.Nav_Team.IS_DELETED == false && i.CLASS_TEAM_ID != null && i.DEPARTMENT_ID != null, baseFilter). GroupBy(m => new { m.CLASS_TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). - Select(group => new - { - group.Key, - totalCount = group.Count(), - finishCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档).Count(), - waitingCount = group.Where(i => i.SHIFT_STATUS != (int)FOShiftStatusEnum.归档).Count(), - onTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), - overTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() - }).ToList(); + Select(group => new + { + group.Key, + totalCount = group.Count(), + finishCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档).Count(), + waitingCount = group.Where(i => i.SHIFT_STATUS != (int)FOShiftStatusEnum.归档).Count(), + onTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), + overTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() + }).ToList(); foreach (var item in currentShift) { var deparId = teams.FirstOrDefault(t => t.ID == item.Key.CLASS_TEAM_ID)?.DEPARTMENT_ID; var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - //completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - //completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - //completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - //completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; - //completion.TEAM_ID = item.Key.CLASS_TEAM_ID; - //completion.TEAM_NAME = item.Key.TeamName; + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = item.Key.CLASS_TEAM_ID; + completion.TEAM_NAME = item.Key.TeamName; completion.TOTAL_COUNT = item.totalCount; completion.WAITTING_COUNT = item.waitingCount; completion.FINISH_COUNT = item.finishCount; @@ -340,36 +150,10 @@ namespace APT.PP.WebApi.Controllers.Api.PP completion.OVERTIME_COUNT = item.overTimeCount; completion.FORM_NAME = "岗位当班"; completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; - if (departInfo != null) - { - if (departInfo.DEPARTMENT_TYPE == 0) - { - completion.DEPARTMENT_ID = item.Key.CLASS_TEAM_ID; - completion.DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 1) - { - completion.DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = item.Key.CLASS_TEAM_ID; - completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 2) - { - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.Key.CLASS_TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - } - } completions.Add(completion); } - var changeTemp = changeShiftTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); - var changeShift = changeTemp. + baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME" }; //指定字段,包括导航属性 + var changeShift = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Team.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter). GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). Select(group => new { @@ -385,14 +169,12 @@ namespace APT.PP.WebApi.Controllers.Api.PP var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); - //completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - //completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - //completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - //completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; - //completion.TEAM_ID = item.Key.TEAM_ID; - //completion.TEAM_NAME = item.Key.TeamName; + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = item.Key.TEAM_ID; + completion.TEAM_NAME = item.Key.TeamName; completion.TOTAL_COUNT = item.totalCount; completion.WAITTING_COUNT = item.waitingCount; completion.FINISH_COUNT = item.finishCount; @@ -400,46 +182,20 @@ namespace APT.PP.WebApi.Controllers.Api.PP completion.OVERTIME_COUNT = item.overTimeCount; completion.FORM_NAME = "岗位交接班"; completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; - if (departInfo != null) - { - if (departInfo.DEPARTMENT_TYPE == 0) - { - completion.DEPARTMENT_ID = item.Key.TEAM_ID; - completion.DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 1) - { - completion.DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = item.Key.TEAM_ID; - completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; - } - if (departInfo.DEPARTMENT_TYPE == 2) - { - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.Key.TEAM_ID; - completion.TEAM_NAME = item.Key.TeamName; - } - } completions.Add(completion); } - var teamTemp = teamActivityTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); - var teamActivity = teamTemp. + baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Taem.NAME", "TA_STATUS", "Nav_Taem.DEPARTMENT_ID", "OVERTIME" }; //指定字段,包括导航属性 + var teamActivity = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Taem.IS_DELETED == false && i.Nav_Taem.DEPARTMENT_ID != null, baseFilter). GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Taem.NAME, m.Nav_Taem.DEPARTMENT_ID }). - Select(group => new - { - group.Key, - totalCount = group.Count(), - finishCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档).Count(), - waitingCount = group.Where(i => i.TA_STATUS != (int)FOTeamActivityState.已归档).Count(), - onTimeCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), - overTimeCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档 && i.OVERTIME == FOISOVERTIME.超时).Count() - }).ToList(); + Select(group => new + { + group.Key, + totalCount = group.Count(), + finishCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档).Count(), + waitingCount = group.Where(i => i.TA_STATUS != (int)FOTeamActivityState.已归档).Count(), + onTimeCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), + overTimeCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档 && i.OVERTIME == FOISOVERTIME.超时).Count() + }).ToList(); foreach (var item in teamActivity) { var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; @@ -449,8 +205,6 @@ namespace APT.PP.WebApi.Controllers.Api.PP completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; completion.TEAM_ID = item.Key.TEAM_ID; completion.TEAM_NAME = item.Key.TeamName; completion.TOTAL_COUNT = item.totalCount; @@ -460,20 +214,288 @@ namespace APT.PP.WebApi.Controllers.Api.PP completion.OVERTIME_COUNT = item.overTimeCount; completion.FORM_NAME = "班组安全活动记录"; completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; completions.Add(completion); } - } - this.UnifiedCommit(() => - { - if (completions.Any() && completions.Count > 0) + this.UnifiedCommit(() => { DeleteEntityNoCommit(t => true); - BantchAddEntityNoCommit(completions); - } - }); + if (completions.Any() && completions.Count > 0) + BantchAddEntityNoCommit(completions); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + + return true; + }); + } + + /// + /// 完成情况统计(按月) + /// + /// + /// + [HttpPost, Route("CreateDepartmentCompletionNew")] + public JsonActionResult CreateDepartmentCompletionNew([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List completions = new List(); + BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); + var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-11).Year + "-" + DateTime.Now.AddMonths(-11).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", "Nav_Parent.Nav_Parent", "PARENT_ID" }; + var departments = GetEntities(t => !t.IS_DELETED, baseFilter); + baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; + var teams = GetEntities(t => !t.IS_DELETED, baseFilter); + baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "PRE_MEETING_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME" }; //指定字段,包括导航属性 + var preShiftMeetingTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Team.IS_DELETED == false && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); + baseFilter.SelectField = new string[] { "CLASS_TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME" }; //指定字段,包括导航属性 + var currentShiftTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.Nav_Team.IS_DELETED == false && i.CLASS_TEAM_ID != null && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); + baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Team.NAME", "SHIFT_STATUS", "DEPARTMENT_ID", "OVERTIME", "CREATE_TIME" }; //指定字段,包括导航属性 + var changeShiftTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Team.IS_DELETED == false && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); + baseFilter.SelectField = new string[] { "TEAM_ID", "Nav_Taem.NAME", "TA_STATUS", "Nav_Taem.DEPARTMENT_ID", "OVERTIME", "CREATE_TIME" }; //指定字段,包括导航属性 + var teamActivityTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.TEAM_ID != null && i.Nav_Taem.IS_DELETED == false && i.IS_DELETED == false && i.Nav_Taem.DEPARTMENT_ID != null, 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")); + var preTemp = preShiftMeetingTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); + var preShiftMeeting = preTemp. + GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). + Select(group => new + { + group.Key, + totalCount = group.Count(), + finishCount = group.Where(i => i.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档).Count(), + waitingCount = group.Where(i => i.PRE_MEETING_STATUS != FOPreMeetingStatusEnum.归档).Count(), + onTimeCount = group.Where(i => i.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), + overTimeCount = group.Where(i => i.PRE_MEETING_STATUS == FOPreMeetingStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() + }).ToList(); + foreach (var item in preShiftMeeting) + { + var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; + var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TOTAL_COUNT = item.totalCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.FINISH_COUNT = item.finishCount; + completion.ONTIME_COUNT = item.onTimeCount; + completion.OVERTIME_COUNT = item.overTimeCount; + completion.FORM_NAME = "班前会议"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + if (departInfo != null) + { + if (departInfo.DEPARTMENT_TYPE == 0) + { + completion.DEPARTMENT_ID = item.Key.TEAM_ID; + completion.DEPARTMENT_NAME = item.Key.TeamName; + } + if (departInfo.DEPARTMENT_TYPE == 1) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.Key.TEAM_ID; + completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; + } + if (departInfo.DEPARTMENT_TYPE == 2) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = item.Key.TEAM_ID; + completion.TEAM_NAME = item.Key.TeamName; + } + } + completions.Add(completion); + } + var currentTemp = currentShiftTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); + var currentShift = currentTemp. + GroupBy(m => new { m.CLASS_TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). + Select(group => new + { + group.Key, + totalCount = group.Count(), + finishCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档).Count(), + waitingCount = group.Where(i => i.SHIFT_STATUS != (int)FOShiftStatusEnum.归档).Count(), + onTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), + overTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() + }).ToList(); + foreach (var item in currentShift) + { + var deparId = teams.FirstOrDefault(t => t.ID == item.Key.CLASS_TEAM_ID)?.DEPARTMENT_ID; + var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + //completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + //completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + //completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + //completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + //completion.TEAM_ID = item.Key.CLASS_TEAM_ID; + //completion.TEAM_NAME = item.Key.TeamName; + completion.TOTAL_COUNT = item.totalCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.FINISH_COUNT = item.finishCount; + completion.ONTIME_COUNT = item.onTimeCount; + completion.OVERTIME_COUNT = item.overTimeCount; + completion.FORM_NAME = "岗位当班"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + if (departInfo != null) + { + if (departInfo.DEPARTMENT_TYPE == 0) + { + completion.DEPARTMENT_ID = item.Key.CLASS_TEAM_ID; + completion.DEPARTMENT_NAME = item.Key.TeamName; + } + if (departInfo.DEPARTMENT_TYPE == 1) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.Key.CLASS_TEAM_ID; + completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; + } + if (departInfo.DEPARTMENT_TYPE == 2) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = item.Key.CLASS_TEAM_ID; + completion.TEAM_NAME = item.Key.TeamName; + } + } + completions.Add(completion); + } + var changeTemp = changeShiftTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); + var changeShift = changeTemp. + GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Team.NAME, m.DEPARTMENT_ID }). + Select(group => new + { + group.Key, + totalCount = group.Count(), + finishCount = group.Where(i => i.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档).Count(), + waitingCount = group.Where(i => i.SHIFT_STATUS != (int)FOChangeShiftStatusEnum.归档).Count(), + onTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), + overTimeCount = group.Where(i => i.SHIFT_STATUS == (int)FOChangeShiftStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() + }).ToList(); + foreach (var item in changeShift) + { + var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; + var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + //completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + //completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + //completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + //completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + //completion.TEAM_ID = item.Key.TEAM_ID; + //completion.TEAM_NAME = item.Key.TeamName; + completion.TOTAL_COUNT = item.totalCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.FINISH_COUNT = item.finishCount; + completion.ONTIME_COUNT = item.onTimeCount; + completion.OVERTIME_COUNT = item.overTimeCount; + completion.FORM_NAME = "岗位交接班"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + if (departInfo != null) + { + if (departInfo.DEPARTMENT_TYPE == 0) + { + completion.DEPARTMENT_ID = item.Key.TEAM_ID; + completion.DEPARTMENT_NAME = item.Key.TeamName; + } + if (departInfo.DEPARTMENT_TYPE == 1) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.Key.TEAM_ID; + completion.SHOP_DEPARTMENT_NAME = item.Key.TeamName; + } + if (departInfo.DEPARTMENT_TYPE == 2) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = item.Key.TEAM_ID; + completion.TEAM_NAME = item.Key.TeamName; + } + } + completions.Add(completion); + } + var teamTemp = teamActivityTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); + var teamActivity = teamTemp. + GroupBy(m => new { m.TEAM_ID, TeamName = m.Nav_Taem.NAME, m.Nav_Taem.DEPARTMENT_ID }). + Select(group => new + { + group.Key, + totalCount = group.Count(), + finishCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档).Count(), + waitingCount = group.Where(i => i.TA_STATUS != (int)FOTeamActivityState.已归档).Count(), + onTimeCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), + overTimeCount = group.Where(i => i.TA_STATUS == (int)FOTeamActivityState.已归档 && i.OVERTIME == FOISOVERTIME.超时).Count() + }).ToList(); + foreach (var item in teamActivity) + { + var deparId = teams.FirstOrDefault(t => t.ID == item.Key.TEAM_ID)?.DEPARTMENT_ID; + var departInfo = departments.FirstOrDefault(t => t.ID == deparId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); + T_FM_DEPARTMENT_COMPLETION completion = new T_FM_DEPARTMENT_COMPLETION(); + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TEAM_ID = item.Key.TEAM_ID; + completion.TEAM_NAME = item.Key.TeamName; + completion.TOTAL_COUNT = item.totalCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.FINISH_COUNT = item.finishCount; + completion.ONTIME_COUNT = item.onTimeCount; + completion.OVERTIME_COUNT = item.overTimeCount; + completion.FORM_NAME = "班组安全活动记录"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + completions.Add(completion); + } + } + this.UnifiedCommit(() => + { + if (completions.Any() && completions.Count > 0) + { + DeleteEntityNoCommit(t => true); + BantchAddEntityNoCommit(completions); + } + }); + + + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -506,73 +528,82 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - - BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); - var riskLevelProportions = new List(); - var riskTypeProportions = new List(); - baseFilter.SelectField = new string[] { "EVALUATE_LEVEL", "Nav_Type.NAME", "MineType" }; - var evaluateRisks = GetEntities(t => t.TYPE_ID != null && t.EVALUATE_LEVEL != 0 && t.MineType != 0, baseFilter).Select(i => new { i.EVALUATE_LEVEL, i.Nav_Type.NAME, i.MineType }).OrderBy(i => i.EVALUATE_LEVEL).ToList(); - var distinctLevelTypes = evaluateRisks.GroupBy(m => new { m.EVALUATE_LEVEL, m.MineType }).Select(group => new { group.Key.EVALUATE_LEVEL, group.Key.MineType, count = group.Count() }).ToList(); - var levels = new int[] { 10, 20, 30, 40 }; - var mineTypes = new int[] { 10, 20, 30 }; - - - foreach (var level in levels) + try { - foreach (var mineType in mineTypes) + BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); + var riskLevelProportions = new List(); + var riskTypeProportions = new List(); + baseFilter.SelectField = new string[] { "EVALUATE_LEVEL", "Nav_Type.NAME", "MineType" }; + var evaluateRisks = GetEntities(t => t.TYPE_ID != null && t.EVALUATE_LEVEL != 0 && t.MineType != 0, baseFilter).Select(i => new { i.EVALUATE_LEVEL, i.Nav_Type.NAME, i.MineType }).OrderBy(i => i.EVALUATE_LEVEL).ToList(); + var distinctLevelTypes = evaluateRisks.GroupBy(m => new { m.EVALUATE_LEVEL, m.MineType }).Select(group => new { group.Key.EVALUATE_LEVEL, group.Key.MineType, count = group.Count() }).ToList(); + var levels = new int[] { 10, 20, 30, 40 }; + var mineTypes = new int[] { 10, 20, 30 }; + + + foreach (var level in levels) { - var item = distinctLevelTypes.FirstOrDefault(t => (int)t.MineType.Value == mineType && (int)t.EVALUATE_LEVEL == level); - T_FM_RISK_LEVEL_PROPORTION riskLevelProportion = new T_FM_RISK_LEVEL_PROPORTION(); - riskLevelProportion.COLOR = mineType.ToString(); - if (item != null) + foreach (var mineType in mineTypes) { - riskLevelProportion.COUNT = item.count; + var item = distinctLevelTypes.FirstOrDefault(t => (int)t.MineType.Value == mineType && (int)t.EVALUATE_LEVEL == level); + T_FM_RISK_LEVEL_PROPORTION riskLevelProportion = new T_FM_RISK_LEVEL_PROPORTION(); + riskLevelProportion.COLOR = mineType.ToString(); + if (item != null) + { + riskLevelProportion.COUNT = item.count; + } + else + { + riskLevelProportion.COUNT = 0; + } + var label = ""; + if (level == 10) + { + label = "一级"; + } + else if (level == 20) + { + label = "二级"; + } + else if (level == 30) + { + label = "三级"; + } + else if (level == 40) + { + label = "四级"; + } + riskLevelProportion.RISK_LEVEL = label; + riskLevelProportion.ORG_ID = filter.GetOrgId(); + riskLevelProportions.Add(riskLevelProportion); } - else - { - riskLevelProportion.COUNT = 0; - } - var label = ""; - if (level == 10) - { - label = "一级"; - } - else if (level == 20) - { - label = "二级"; - } - else if (level == 30) - { - label = "三级"; - } - else if (level == 40) - { - label = "四级"; - } - riskLevelProportion.RISK_LEVEL = label; - riskLevelProportion.ORG_ID = filter.GetOrgId(); - riskLevelProportions.Add(riskLevelProportion); } + var distinctTypes = evaluateRisks.GroupBy(m => m.NAME).Select(group => new { group.Key, count = group.Count() }).ToList(); + foreach (var item in distinctTypes) + { + T_FM_RISK_TYPE_PROPORTION riskTypeProportion = new T_FM_RISK_TYPE_PROPORTION(); + riskTypeProportion.RISK_TYPE = item.Key; + riskTypeProportion.COUNT = item.count; + riskTypeProportion.COLOR = GetRandomColor(); + riskTypeProportion.ORG_ID = filter.GetOrgId(); + riskTypeProportions.Add(riskTypeProportion); + } + this.UnifiedCommit(() => + { + DeleteEntityNoCommit(t => true); + DeleteEntityNoCommit(t => true); + if (riskLevelProportions.Any() && riskLevelProportions.Count > 0) + BantchAddEntityNoCommit(riskLevelProportions); + if (riskTypeProportions.Any() && riskTypeProportions.Count > 0) + BantchAddEntityNoCommit(riskTypeProportions); + }); } - var distinctTypes = evaluateRisks.GroupBy(m => m.NAME).Select(group => new { group.Key, count = group.Count() }).ToList(); - foreach (var item in distinctTypes) + catch (Exception ex) { - T_FM_RISK_TYPE_PROPORTION riskTypeProportion = new T_FM_RISK_TYPE_PROPORTION(); - riskTypeProportion.RISK_TYPE = item.Key; - riskTypeProportion.COUNT = item.count; - riskTypeProportion.COLOR = GetRandomColor(); - riskTypeProportion.ORG_ID = filter.GetOrgId(); - riskTypeProportions.Add(riskTypeProportion); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } - this.UnifiedCommit(() => - { - DeleteEntityNoCommit(t => true); - DeleteEntityNoCommit(t => true); - if (riskLevelProportions.Any() && riskLevelProportions.Count > 0) - BantchAddEntityNoCommit(riskLevelProportions); - if (riskTypeProportions.Any() && riskTypeProportions.Count > 0) - BantchAddEntityNoCommit(riskTypeProportions); - }); return true; }); @@ -587,47 +618,56 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - List completionSortTemps = new List(); - List completionSorts = new List(); - BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); - var completions = GetEntities(null, baseFilter); - completionSortTemps = completions.GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME, t.DEPARTMENT_ID, t.DEPARTMENT_NAME }).Select(group => new T_FM_DEPARTMENT_COMPLETION_SORT + try { - TEAM_ID = group.Key.TEAM_ID, - TEAM_NAME = group.Key.TEAM_NAME, - DEPARTMENT_ID = group.Key.DEPARTMENT_ID, - DEPARTMENT_NAME = group.Key.DEPARTMENT_NAME, - TEAM_FINISH_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "班前会议").Sum(m => m.FINISH_COUNT), - POST_FINISH_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "岗位当班").Sum(m => m.FINISH_COUNT), - HANDOVER_FINISH_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "岗位交接班").Sum(m => m.FINISH_COUNT), - TEAM_TOTAL_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "班前会议").Sum(m => m.TOTAL_COUNT), - POST_TOTAL_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "岗位当班").Sum(m => m.TOTAL_COUNT), - HANDOVER_TOTAL_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "岗位交接班").Sum(m => m.TOTAL_COUNT), - ACTIVITY_FINISH_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "班组安全活动记录").Sum(m => m.FINISH_COUNT), - ACTIVITY_TOTAL_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "班组安全活动记录").Sum(m => m.TOTAL_COUNT), - }).ToList(); - foreach (var item in completionSortTemps) - { - var temp1 = item.TEAM_FINISH_COUNT + item.POST_FINISH_COUNT + item.HANDOVER_FINISH_COUNT + item.ACTIVITY_FINISH_COUNT; - var temp2 = item.TEAM_TOTAL_COUNT + item.POST_TOTAL_COUNT + item.HANDOVER_TOTAL_COUNT + item.ACTIVITY_TOTAL_COUNT; - var tempCalc = temp2 == 0 ? 0 : (double)temp1 / (double)temp2; - item.CALC = tempCalc; + List completionSortTemps = new List(); + List completionSorts = new List(); + BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); + var completions = GetEntities(null, baseFilter); + completionSortTemps = completions.GroupBy(t => new { t.TEAM_ID, t.TEAM_NAME, t.DEPARTMENT_ID, t.DEPARTMENT_NAME }).Select(group => new T_FM_DEPARTMENT_COMPLETION_SORT + { + TEAM_ID = group.Key.TEAM_ID, + TEAM_NAME = group.Key.TEAM_NAME, + DEPARTMENT_ID = group.Key.DEPARTMENT_ID, + DEPARTMENT_NAME = group.Key.DEPARTMENT_NAME, + TEAM_FINISH_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "班前会议").Sum(m => m.FINISH_COUNT), + POST_FINISH_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "岗位当班").Sum(m => m.FINISH_COUNT), + HANDOVER_FINISH_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "岗位交接班").Sum(m => m.FINISH_COUNT), + TEAM_TOTAL_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "班前会议").Sum(m => m.TOTAL_COUNT), + POST_TOTAL_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "岗位当班").Sum(m => m.TOTAL_COUNT), + HANDOVER_TOTAL_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "岗位交接班").Sum(m => m.TOTAL_COUNT), + ACTIVITY_FINISH_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "班组安全活动记录").Sum(m => m.FINISH_COUNT), + ACTIVITY_TOTAL_COUNT = group.Where(x => x.TEAM_ID == group.Key.TEAM_ID && x.DEPARTMENT_ID == group.Key.DEPARTMENT_ID && x.FORM_NAME == "班组安全活动记录").Sum(m => m.TOTAL_COUNT), + }).ToList(); + foreach (var item in completionSortTemps) + { + var temp1 = item.TEAM_FINISH_COUNT + item.POST_FINISH_COUNT + item.HANDOVER_FINISH_COUNT + item.ACTIVITY_FINISH_COUNT; + var temp2 = item.TEAM_TOTAL_COUNT + item.POST_TOTAL_COUNT + item.HANDOVER_TOTAL_COUNT + item.ACTIVITY_TOTAL_COUNT; + var tempCalc = temp2 == 0 ? 0 : (double)temp1 / (double)temp2; + item.CALC = tempCalc; + } + List completionSorts1 = completionSortTemps.OrderByDescending(t => t.CALC).Take(8).ToList(); + int i = 1; + foreach (var item in completionSorts1) + { + item.ORG_ID = filter.OrgId; + item.NUM = i; + i++; + } + this.UnifiedCommit(() => + { + DeleteEntityNoCommit(t => true); + if (completionSorts1.Any() && completionSorts1.Count > 0) + BantchAddEntityNoCommit(completionSorts1); + }); } - List completionSorts1 = completionSortTemps.OrderByDescending(t => t.CALC).Take(8).ToList(); - int i = 1; - foreach (var item in completionSorts1) + catch (Exception ex) { - item.ORG_ID = filter.OrgId; - item.NUM = i; - i++; + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } - this.UnifiedCommit(() => - { - DeleteEntityNoCommit(t => true); - if (completionSorts1.Any() && completionSorts1.Count > 0) - BantchAddEntityNoCommit(completionSorts1); - }); - return true; }); } @@ -671,68 +711,79 @@ namespace APT.PP.WebApi.Controllers.Api.PP //隐患总数 //var listCheckDetail = this.GetEntities(e => e.CHECKRESULT.HasValue && (e.CHECKRESULT == (int)CHECKRESULTEnum.Same || e.CHECKRESULT == (int)CHECKRESULTEnum.Other) && e.Nav_SafeCheck.APPROVE_ID.HasValue && e.Nav_SafeCheck.STATUCHECK == (int)FOPreMeetingStatusEnum.归档, null, new string[] { "Nav_SafeCheck" }); - - //隐患上报总数 - var listAll = this.GetEntities(e => e.ISBACK.HasValue && !e.ISBACK.Value && e.RiskContentState.HasValue && e.Nav_Department != null, null, new string[] { "Nav_Department" }) - .Select(e => new RiskInfo { DEPARTMENT_ID = e.DEPARTMENT_ID.Value, DEPARTMENT_NAME = e.Nav_Department.NAME, ContentID = e.ID }) - .ToList(); - - //按时完成 非自动生成的退回单 有完成 时间 完成时间小于 设置的最后完成时间 状态 为完成 - var listIntTime = this.GetEntities(e => e.CHECKDATE.HasValue && e.LastDateUser.HasValue && e.CHECKDATE <= e.LastDateUser && e.ISBACK.HasValue && !e.ISBACK.Value && e.RiskContentState.HasValue && (e.RiskContentState.Value == (int)RiskContentState.OK || e.RiskContentState.Value == (int)RiskContentState.BackOK) && e.Nav_Department != null, null, new string[] { "Nav_Department" }) - .Select(e => new RiskInfo { DEPARTMENT_ID = e.DEPARTMENT_ID.Value, DEPARTMENT_NAME = e.Nav_Department.NAME, ContentID = e.ID }) - .ToList(); - - //超时完成 完成 时间 大于设置完成时间 - var listOutTime = this.GetEntities(e => e.CHECKDATE.HasValue && e.LastDateUser.HasValue && e.CHECKDATE > e.LastDateUser && e.ISBACK.HasValue && !e.ISBACK.Value && e.RiskContentState.HasValue && (e.RiskContentState.Value == (int)RiskContentState.OK || e.RiskContentState.Value == (int)RiskContentState.BackOK) && e.Nav_Department != null, null, new string[] { "Nav_Department" }) - .Select(e => new RiskInfo { DEPARTMENT_ID = e.DEPARTMENT_ID.Value, DEPARTMENT_NAME = e.Nav_Department.NAME, ContentID = e.ID }) - .ToList(); - - //未完成 - var listWithOutEnd = this.GetEntities(e => e.ISBACK.HasValue && !e.ISBACK.Value && (!e.RiskContentState.HasValue || (e.RiskContentState != (int)RiskContentState.OK && e.RiskContentState != (int)RiskContentState.BackOK)) && e.Nav_Department != null, null, new string[] { "Nav_Department" }) - .Select(e => new RiskInfo { DEPARTMENT_ID = e.DEPARTMENT_ID.Value, DEPARTMENT_NAME = e.Nav_Department.NAME, ContentID = e.ID }) - .ToList(); - - List listDepartMent = new List(); - if (listAll != null && listAll.Count > 0) - listDepartMent = listAll.Distinct(e => e.DEPARTMENT_ID).ToList(); - - List listResult = new List(); - - for (int i = 0; i < listDepartMent.Count; i++) + try { - T_FM_HIDDEN_DANGER_RECTIFICATION model = new T_FM_HIDDEN_DANGER_RECTIFICATION(); - model.ID = Guid.NewGuid(); - //保证每个班组 只有一条数据 - model.TEAM_ID = listDepartMent[i].DEPARTMENT_ID; - model.TEAM_NAME = listDepartMent[i].DEPARTMENT_NAME; - model.NUM = 0;//先设置为0 后续修改 - //总数 - model.TOTAL_COUNT = listAll.FindAll(e => e.DEPARTMENT_ID == model.TEAM_ID).Count(); - //按时完成数 - model.FINISH_COUNT = listIntTime.FindAll(e => e.DEPARTMENT_ID == model.TEAM_ID).Count(); - // 超时完成数 - model.OVER_FINISH_COUNT = listOutTime.FindAll(e => e.DEPARTMENT_ID == model.TEAM_ID).Count(); - //未完成数 - model.WAITTING_COUNT = listWithOutEnd.FindAll(e => e.DEPARTMENT_ID == model.TEAM_ID).Count(); - model.ORG_ID = filter.GetOrgId(); - listResult.Add(model); - } - foreach (var item in listResult) - { - int More = listResult.FindAll(e => e.FINISH_COUNT > item.FINISH_COUNT).Count(); - item.NUM = More + 1; - } + //隐患上报总数 + var listAll = this.GetEntities(e => e.ISBACK.HasValue && !e.ISBACK.Value && e.RiskContentState.HasValue && e.Nav_Department != null, null, new string[] { "Nav_Department" }) + .Select(e => new RiskInfo { DEPARTMENT_ID = e.DEPARTMENT_ID.Value, DEPARTMENT_NAME = e.Nav_Department.NAME, ContentID = e.ID }) + .ToList(); - listResult = listResult.OrderBy(e => e.NUM).Take(2).ToList(); - this.UnifiedCommit(() => - { - DeleteEntityNoCommit(t => true);//删除表数据 + //按时完成 非自动生成的退回单 有完成 时间 完成时间小于 设置的最后完成时间 状态 为完成 + var listIntTime = this.GetEntities(e => e.CHECKDATE.HasValue && e.LastDateUser.HasValue && e.CHECKDATE <= e.LastDateUser && e.ISBACK.HasValue && !e.ISBACK.Value && e.RiskContentState.HasValue && (e.RiskContentState.Value == (int)RiskContentState.OK || e.RiskContentState.Value == (int)RiskContentState.BackOK) && e.Nav_Department != null, null, new string[] { "Nav_Department" }) + .Select(e => new RiskInfo { DEPARTMENT_ID = e.DEPARTMENT_ID.Value, DEPARTMENT_NAME = e.Nav_Department.NAME, ContentID = e.ID }) + .ToList(); + + //超时完成 完成 时间 大于设置完成时间 + var listOutTime = this.GetEntities(e => e.CHECKDATE.HasValue && e.LastDateUser.HasValue && e.CHECKDATE > e.LastDateUser && e.ISBACK.HasValue && !e.ISBACK.Value && e.RiskContentState.HasValue && (e.RiskContentState.Value == (int)RiskContentState.OK || e.RiskContentState.Value == (int)RiskContentState.BackOK) && e.Nav_Department != null, null, new string[] { "Nav_Department" }) + .Select(e => new RiskInfo { DEPARTMENT_ID = e.DEPARTMENT_ID.Value, DEPARTMENT_NAME = e.Nav_Department.NAME, ContentID = e.ID }) + .ToList(); + + //未完成 + var listWithOutEnd = this.GetEntities(e => e.ISBACK.HasValue && !e.ISBACK.Value && (!e.RiskContentState.HasValue || (e.RiskContentState != (int)RiskContentState.OK && e.RiskContentState != (int)RiskContentState.BackOK)) && e.Nav_Department != null, null, new string[] { "Nav_Department" }) + .Select(e => new RiskInfo { DEPARTMENT_ID = e.DEPARTMENT_ID.Value, DEPARTMENT_NAME = e.Nav_Department.NAME, ContentID = e.ID }) + .ToList(); + + List listDepartMent = new List(); + if (listAll != null && listAll.Count > 0) + listDepartMent = listAll.Distinct(e => e.DEPARTMENT_ID).ToList(); + + List listResult = new List(); + + for (int i = 0; i < listDepartMent.Count; i++) + { + T_FM_HIDDEN_DANGER_RECTIFICATION model = new T_FM_HIDDEN_DANGER_RECTIFICATION(); + model.ID = Guid.NewGuid(); + //保证每个班组 只有一条数据 + model.TEAM_ID = listDepartMent[i].DEPARTMENT_ID; + model.TEAM_NAME = listDepartMent[i].DEPARTMENT_NAME; + model.NUM = 0;//先设置为0 后续修改 + //总数 + model.TOTAL_COUNT = listAll.FindAll(e => e.DEPARTMENT_ID == model.TEAM_ID).Count(); + //按时完成数 + model.FINISH_COUNT = listIntTime.FindAll(e => e.DEPARTMENT_ID == model.TEAM_ID).Count(); + // 超时完成数 + model.OVER_FINISH_COUNT = listOutTime.FindAll(e => e.DEPARTMENT_ID == model.TEAM_ID).Count(); + //未完成数 + model.WAITTING_COUNT = listWithOutEnd.FindAll(e => e.DEPARTMENT_ID == model.TEAM_ID).Count(); + model.ORG_ID = filter.GetOrgId(); + listResult.Add(model); + } + + foreach (var item in listResult) + { + int More = listResult.FindAll(e => e.FINISH_COUNT > item.FINISH_COUNT).Count(); + item.NUM = More + 1; + } + + listResult = listResult.OrderBy(e => e.NUM).Take(2).ToList(); + this.UnifiedCommit(() => + { + DeleteEntityNoCommit(t => true);//删除表数据 //添加信息 if (listResult.Any() && listResult.Count > 0) - BantchAddEntityNoCommit(listResult); - }); + BantchAddEntityNoCommit(listResult); + }); + + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); @@ -749,57 +800,67 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - List completions = new List(); - var jobIds = GetEntities(i => true, new BaseFilter(filter.GetOrgId())).Select(t => t.ID).ToList(); - var tasks = this.GetEntities(t => jobIds.Contains((Guid)t.SOURCE_DATA_ID), new BaseFilter(filter.GetOrgId())) - .Select(m => new { m.NOTICE_STATUS, m.USER_ID }).ToList(); - var userIds = tasks.Select(t => t.USER_ID).Distinct().ToList(); - var user = this.GetEntities(t => userIds.Contains(t.ID) && t.ENABLE_STATUS == 0, new BaseFilter(filter.GetOrgId()), new string[] { "Nav_Department" }).Select(t => new { t.ID, t.DEPARTMENT_ID, t.Nav_Department.NAME }).ToList(); - var datas = from a in tasks - join b in user on a.USER_ID equals b.ID - //into temp2 from tt2 in temp2.DefaultIfEmpty() - select new - { - //IsPublish = a.IS_PUBLISH, - TeamId = b.DEPARTMENT_ID, - TeamName = b.NAME, - NoticeStatus = a.NOTICE_STATUS, - //TeamId = tt == null ? Guid.NewGuid() : tt.TEAM_ID, - //TeamName = tt == null ? "" : tt.TameName, - //NoticeStatus = tt2 == null ? 0:tt2.NOTICE_STATUS, - }; - var results = datas.GroupBy(m => new { m.TeamId, m.TeamName }). - Select(group => new + try { - group.Key, - totalCount = group.Count(), - finishCount = group.Where(i => i.NoticeStatus == (int)FMNoticeStatusEnum.正常已办).Count(), - overFinishCount = group.Where(i => i.NoticeStatus == (int)FMNoticeStatusEnum.超期办理).Count(), - waitingCount = group.Where(i => i.NoticeStatus != (int)FMNoticeStatusEnum.未处理).Count() - }).OrderByDescending(t => t.finishCount + t.overFinishCount).Take(10).ToList(); - int index = 1; - foreach (var item in results) - { - T_FM_WORK_TICKET_COMPLETION completion = new T_FM_WORK_TICKET_COMPLETION(); - //completion.DEPARTMENT_ID =item.Key.DEPARTMENT_ID ; - //completion.DEPARTMENT_NAME = item.Key.DepartName; - completion.TEAM_ID = item.Key.TeamId; - completion.TEAM_NAME = item.Key.TeamName; - completion.TOTAL_COUNT = item.totalCount; - completion.FINISH_COUNT = item.finishCount; - completion.OVER_FINISH_COUNT = item.overFinishCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.ORG_ID = filter.GetOrgId(); - completion.NUM = index; - completions.Add(completion); - index++; + List completions = new List(); + var jobIds = GetEntities(i => true, new BaseFilter(filter.GetOrgId())).Select(t => t.ID).ToList(); + var tasks = this.GetEntities(t => jobIds.Contains((Guid)t.SOURCE_DATA_ID), new BaseFilter(filter.GetOrgId())) + .Select(m => new { m.NOTICE_STATUS, m.USER_ID }).ToList(); + var userIds = tasks.Select(t => t.USER_ID).Distinct().ToList(); + var user = this.GetEntities(t => userIds.Contains(t.ID) && t.ENABLE_STATUS == 0, new BaseFilter(filter.GetOrgId()), new string[] { "Nav_Department" }).Select(t => new { t.ID, t.DEPARTMENT_ID, t.Nav_Department.NAME }).ToList(); + var datas = from a in tasks + join b in user on a.USER_ID equals b.ID + //into temp2 from tt2 in temp2.DefaultIfEmpty() + select new + { + //IsPublish = a.IS_PUBLISH, + TeamId = b.DEPARTMENT_ID, + TeamName = b.NAME, + NoticeStatus = a.NOTICE_STATUS, + //TeamId = tt == null ? Guid.NewGuid() : tt.TEAM_ID, + //TeamName = tt == null ? "" : tt.TameName, + //NoticeStatus = tt2 == null ? 0:tt2.NOTICE_STATUS, + }; + var results = datas.GroupBy(m => new { m.TeamId, m.TeamName }). + Select(group => new + { + group.Key, + totalCount = group.Count(), + finishCount = group.Where(i => i.NoticeStatus == (int)FMNoticeStatusEnum.正常已办).Count(), + overFinishCount = group.Where(i => i.NoticeStatus == (int)FMNoticeStatusEnum.超期办理).Count(), + waitingCount = group.Where(i => i.NoticeStatus != (int)FMNoticeStatusEnum.未处理).Count() + }).OrderByDescending(t => t.finishCount + t.overFinishCount).Take(10).ToList(); + int index = 1; + foreach (var item in results) + { + T_FM_WORK_TICKET_COMPLETION completion = new T_FM_WORK_TICKET_COMPLETION(); + //completion.DEPARTMENT_ID =item.Key.DEPARTMENT_ID ; + //completion.DEPARTMENT_NAME = item.Key.DepartName; + completion.TEAM_ID = item.Key.TeamId; + completion.TEAM_NAME = item.Key.TeamName; + completion.TOTAL_COUNT = item.totalCount; + completion.FINISH_COUNT = item.finishCount; + completion.OVER_FINISH_COUNT = item.overFinishCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.ORG_ID = filter.GetOrgId(); + completion.NUM = index; + completions.Add(completion); + index++; + } + this.UnifiedCommit(() => + { + DeleteEntityNoCommit(t => true); + if (completions.Any() && completions.Count > 0) + BantchAddEntityNoCommit(completions); + }); } - this.UnifiedCommit(() => + catch (Exception ex) { - DeleteEntityNoCommit(t => true); - if (completions.Any() && completions.Count > 0) - BantchAddEntityNoCommit(completions); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -814,88 +875,99 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - List completions = new List(); - BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); - var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-11).Year + "-" + DateTime.Now.AddMonths(-11).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", "Nav_Parent.Nav_Parent", "PARENT_ID" }; - var departments = GetEntities(t => !t.IS_DELETED, baseFilter); - baseFilter.SelectField = new string[] { "ID", "IS_PUBLISH", "DEPARTMENT_ID", "CREATE_TIME", "IS_OVERTIME" }; //指定字段,包括导航属性 - var jobInfos = GetEntities(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); - var jobIds = jobInfos.Select(t => t.ID).ToList(); - baseFilter.SelectField = new string[] { "ID", "NOTICE_STATUS", "CREATE_TIME", "SOURCE_DATA_ID" }; //指定字段,包括导航属性 - var tasks = this.GetEntities(t => t.IS_DELETED == false && t.CREATE_TIME >= startTime && t.NOTICE_STATUS == 2 && jobIds.Contains((Guid)t.SOURCE_DATA_ID), baseFilter).ToList(); - foreach (var item in jobInfos) + try { - var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); - if (task == null) - item.IS_OVERTIME = 0; - else - item.IS_OVERTIME = 1; - } - 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")); - var preTemp = jobInfos.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); - var results = preTemp.GroupBy(m => m.DEPARTMENT_ID). - Select(group => new + + List completions = new List(); + BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); + var startTime = Convert.ToDateTime(DateTime.Now.AddMonths(-11).Year + "-" + DateTime.Now.AddMonths(-11).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", "Nav_Parent.Nav_Parent", "PARENT_ID" }; + var departments = GetEntities(t => !t.IS_DELETED, baseFilter); + baseFilter.SelectField = new string[] { "ID", "IS_PUBLISH", "DEPARTMENT_ID", "CREATE_TIME", "IS_OVERTIME" }; //指定字段,包括导航属性 + var jobInfos = GetEntities(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); + var jobIds = jobInfos.Select(t => t.ID).ToList(); + baseFilter.SelectField = new string[] { "ID", "NOTICE_STATUS", "CREATE_TIME", "SOURCE_DATA_ID" }; //指定字段,包括导航属性 + var tasks = this.GetEntities(t => t.IS_DELETED == false && t.CREATE_TIME >= startTime && t.NOTICE_STATUS == 2 && jobIds.Contains((Guid)t.SOURCE_DATA_ID), baseFilter).ToList(); + foreach (var item in jobInfos) { - departmetId = group.Key, - totalCount = group.Count(), - finishCount = group.Where(i => i.IS_PUBLISH == 5).Count(), - waitingCount = group.Where(i => i.IS_PUBLISH != 5).Count(), - onTimeCount = group.Where(i => i.IS_OVERTIME == 0 && i.IS_PUBLISH == 5).Count(), - overFinishCount = group.Where(i => i.IS_OVERTIME == 1 && i.IS_PUBLISH == 5).Count() - }).ToList(); - foreach (var item in results) + var task = tasks.FirstOrDefault(t => t.SOURCE_DATA_ID == item.ID); + if (task == null) + item.IS_OVERTIME = 0; + else + item.IS_OVERTIME = 1; + } + for (DateTime i = startTime; i <= endTime; i = i.AddMonths(i.Month - i.Month + 1).AddDays(1 - i.Day)) { - var departInfo = departments.FirstOrDefault(t => t.ID == item.departmetId); - T_FM_WORK_TICKET_COMPLETION completion = new T_FM_WORK_TICKET_COMPLETION(); - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; - completion.TOTAL_COUNT = item.totalCount; - completion.FINISH_COUNT = item.finishCount; - completion.OVER_FINISH_COUNT = item.overFinishCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.ONTIME_COUNT = item.onTimeCount; - completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; - if (departInfo != null) + var monthEnd = Convert.ToDateTime(i.AddMonths(i.Month - i.Month + 1).AddDays(1 - i.Day - 1).ToString().Replace("0:00:00", "23:59:59")); + var preTemp = jobInfos.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); + var results = preTemp.GroupBy(m => m.DEPARTMENT_ID). + Select(group => new { - if (departInfo.DEPARTMENT_TYPE == 0) + departmetId = group.Key, + totalCount = group.Count(), + finishCount = group.Where(i => i.IS_PUBLISH == 5).Count(), + waitingCount = group.Where(i => i.IS_PUBLISH != 5).Count(), + onTimeCount = group.Where(i => i.IS_OVERTIME == 0 && i.IS_PUBLISH == 5).Count(), + overFinishCount = group.Where(i => i.IS_OVERTIME == 1 && i.IS_PUBLISH == 5).Count() + }).ToList(); + foreach (var item in results) + { + var departInfo = departments.FirstOrDefault(t => t.ID == item.departmetId); + T_FM_WORK_TICKET_COMPLETION completion = new T_FM_WORK_TICKET_COMPLETION(); + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TOTAL_COUNT = item.totalCount; + completion.FINISH_COUNT = item.finishCount; + completion.OVER_FINISH_COUNT = item.overFinishCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.ONTIME_COUNT = item.onTimeCount; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + if (departInfo != null) { - completion.DEPARTMENT_ID = item.departmetId; - completion.DEPARTMENT_NAME = departInfo?.NAME; - } - if (departInfo.DEPARTMENT_TYPE == 1) - { - completion.DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = item.departmetId; - completion.SHOP_DEPARTMENT_NAME = departInfo?.NAME; - } - if (departInfo.DEPARTMENT_TYPE == 2) - { - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.departmetId; - completion.TEAM_NAME = departInfo?.NAME; + if (departInfo.DEPARTMENT_TYPE == 0) + { + completion.DEPARTMENT_ID = item.departmetId; + completion.DEPARTMENT_NAME = departInfo?.NAME; + } + if (departInfo.DEPARTMENT_TYPE == 1) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.departmetId; + completion.SHOP_DEPARTMENT_NAME = departInfo?.NAME; + } + if (departInfo.DEPARTMENT_TYPE == 2) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = item.departmetId; + completion.TEAM_NAME = departInfo?.NAME; + } } + completions.Add(completion); } - completions.Add(completion); } - } - this.UnifiedCommit(() => - { - if (completions.Any() && completions.Count > 0) + this.UnifiedCommit(() => { - DeleteEntityNoCommit(t => true); - BantchAddEntityNoCommit(completions); - } - }); + if (completions.Any() && completions.Count > 0) + { + DeleteEntityNoCommit(t => true); + BantchAddEntityNoCommit(completions); + } + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -909,10 +981,20 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - //风险模块数据 - getRiskType(filter); - //培训模块数据 - getTrainPlan(filter); + try + { + //风险模块数据 + getRiskType(filter); + //培训模块数据 + getTrainPlan(filter); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -927,78 +1009,88 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - DeleteEntity(t => true); - DeleteEntity(t => true); + try + { + DeleteEntity(t => true); + DeleteEntity(t => true); - List risk1s = new List(); - List risk2s = new List(); + List risk1s = new List(); + List risk2s = new List(); - BaseFilter baseFilter1 = new BaseFilter(filter.GetOrgId()); - baseFilter1.SelectField = new string[] { "MineType", "EVALUATE_LEVEL", "DEPARTMENT_LIABLE_ID" }; - baseFilter1.Include = new string[] { "Nav_DepartmentLiable" }; - var evaluateRisks = GetEntities(t => t.MineType != 0, baseFilter1); - var riskTypes1 = evaluateRisks.GroupBy(risk => new { risk.MineType, risk.EVALUATE_LEVEL }).Select(g => new - { - MineType = g.Key.MineType, - EVALUATE_LEVEL = g.Key.EVALUATE_LEVEL, - Count = g.Count(r => r.EVALUATE_LEVEL != null) - }); - - foreach (var riskType in riskTypes1) - { - T_BI_RISK_LEVEL1 risk1 = new T_BI_RISK_LEVEL1(); - risk1.MineType = (int)riskType.MineType; - risk1.RiskType = riskType.EVALUATE_LEVEL; - risk1.RiskCount = riskType.Count; - risk1.ORG_ID = filter.GetOrgId(); - risk1s.Add(risk1); - } - - var riskTypes2 = evaluateRisks.GroupBy(risk => new { risk.MineType, risk.DEPARTMENT_LIABLE_ID, risk.EVALUATE_LEVEL }).Select(g => new - { - MineType = g.Key.MineType, - EVALUATE_LEVEL = g.Key.EVALUATE_LEVEL, - DepName = g.Key.DEPARTMENT_LIABLE_ID, - Count = g.Count(r => r.EVALUATE_LEVEL != null) - }); - var alldep = GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); - foreach (var riskType in riskTypes2) - { - var currDep = alldep.FirstOrDefault(t => t.ID == riskType.DepName); - T_BI_RISK_LEVEL2 risk2 = new T_BI_RISK_LEVEL2(); - risk2.MineType = (int)riskType.MineType; - risk2.DepName = currDep.NAME; - risk2.DEPARTMENT_ID = riskType.DepName; - risk2.DEPARTMENT_TYPE = (FMDepartmentType)currDep.DEPARTMENT_TYPE; - risk2.RiskType = riskType.EVALUATE_LEVEL; - risk2.RiskCount = riskType.Count; - risk2.ORG_ID = filter.GetOrgId(); - risk2s.Add(risk2); - } - var chejians = risk2s.Where(t => t.DEPARTMENT_TYPE == FMDepartmentType.车间); - foreach (EvaluateLevelEnum level in Enum.GetValues(typeof(EvaluateLevelEnum))) - { - foreach (int unit in Enum.GetValues(typeof(FMProductionUnit))) + BaseFilter baseFilter1 = new BaseFilter(filter.GetOrgId()); + baseFilter1.SelectField = new string[] { "MineType", "EVALUATE_LEVEL", "DEPARTMENT_LIABLE_ID" }; + baseFilter1.Include = new string[] { "Nav_DepartmentLiable" }; + var evaluateRisks = GetEntities(t => t.MineType != 0, baseFilter1); + var riskTypes1 = evaluateRisks.GroupBy(risk => new { risk.MineType, risk.EVALUATE_LEVEL }).Select(g => new { - var isHaveCount1 = riskTypes1.Where(t => t.EVALUATE_LEVEL == level && t.MineType == unit); - if (!isHaveCount1.Any()) + MineType = g.Key.MineType, + EVALUATE_LEVEL = g.Key.EVALUATE_LEVEL, + Count = g.Count(r => r.EVALUATE_LEVEL != null) + }); + + foreach (var riskType in riskTypes1) + { + T_BI_RISK_LEVEL1 risk1 = new T_BI_RISK_LEVEL1(); + risk1.MineType = (int)riskType.MineType; + risk1.RiskType = riskType.EVALUATE_LEVEL; + risk1.RiskCount = riskType.Count; + risk1.ORG_ID = filter.GetOrgId(); + risk1s.Add(risk1); + } + + var riskTypes2 = evaluateRisks.GroupBy(risk => new { risk.MineType, risk.DEPARTMENT_LIABLE_ID, risk.EVALUATE_LEVEL }).Select(g => new + { + MineType = g.Key.MineType, + EVALUATE_LEVEL = g.Key.EVALUATE_LEVEL, + DepName = g.Key.DEPARTMENT_LIABLE_ID, + Count = g.Count(r => r.EVALUATE_LEVEL != null) + }); + var alldep = GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); + foreach (var riskType in riskTypes2) + { + var currDep = alldep.FirstOrDefault(t => t.ID == riskType.DepName); + T_BI_RISK_LEVEL2 risk2 = new T_BI_RISK_LEVEL2(); + risk2.MineType = (int)riskType.MineType; + risk2.DepName = currDep.NAME; + risk2.DEPARTMENT_ID = riskType.DepName; + risk2.DEPARTMENT_TYPE = (FMDepartmentType)currDep.DEPARTMENT_TYPE; + risk2.RiskType = riskType.EVALUATE_LEVEL; + risk2.RiskCount = riskType.Count; + risk2.ORG_ID = filter.GetOrgId(); + risk2s.Add(risk2); + } + var chejians = risk2s.Where(t => t.DEPARTMENT_TYPE == FMDepartmentType.车间); + foreach (EvaluateLevelEnum level in Enum.GetValues(typeof(EvaluateLevelEnum))) + { + foreach (int unit in Enum.GetValues(typeof(FMProductionUnit))) { - T_BI_RISK_LEVEL1 risk1 = new T_BI_RISK_LEVEL1(); - risk1.MineType = unit; - risk1.RiskType = level; - risk1.RiskCount = 0; - risk1.ORG_ID = filter.GetOrgId(); - risk1s.Add(risk1); + var isHaveCount1 = riskTypes1.Where(t => t.EVALUATE_LEVEL == level && t.MineType == unit); + if (!isHaveCount1.Any()) + { + T_BI_RISK_LEVEL1 risk1 = new T_BI_RISK_LEVEL1(); + risk1.MineType = unit; + risk1.RiskType = level; + risk1.RiskCount = 0; + risk1.ORG_ID = filter.GetOrgId(); + risk1s.Add(risk1); + } } } + + + UnifiedCommit(() => + { + BantchAddEntityNoCommit(risk1s); + BantchAddEntityNoCommit(risk2s); + }); } - - - UnifiedCommit(() => + catch (Exception ex) { - BantchAddEntityNoCommit(risk1s); - BantchAddEntityNoCommit(risk2s); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -1012,30 +1104,40 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - DeleteEntity(t => true); - List items = new List(); - BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); - baseFilter.SelectField = new string[] { "ID", "MOON", "RESPONSIBILITY_DEP_ID" }; - var planDetails = GetEntities(t => t.Nav_YearTrainPlan.PLAN_YEAR == DateTime.Now.Year && t.Nav_YearTrainPlan.STATUS == PFStandardStatus.Archived, baseFilter); - var trainNotifys = GetEntities(t => t.TRAIN_PLAN_DETAIL_ID != null && t.STATUS == SETrainNotifyStatus.归档, new BaseFilter(filter.GetOrgId())); - var planDeps = planDetails.Select(t => t.RESPONSIBILITY_DEP_ID).ToList(); - var alldeps = GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); - foreach (var dep in planDeps) + try { - var planDetailIds = planDetails.Where(t => t.RESPONSIBILITY_DEP_ID == dep).Select(t => t.ID).ToList(); - var depTrainNotifys = trainNotifys.Where(t => planDetailIds.Contains((Guid)t.TRAIN_PLAN_DETAIL_ID)); - T_BI_TRAIN_PLAN_COUNT item = new T_BI_TRAIN_PLAN_COUNT(); - item.DepName = alldeps.FirstOrDefault(t => t.ID == dep).NAME; - item.planCount = planDetailIds.Count(); - item.activeCount = depTrainNotifys.Count(); - item.finishPrecent = item.activeCount / item.planCount; - item.ORG_ID = filter.GetOrgId(); - items.Add(item); + DeleteEntity(t => true); + List items = new List(); + BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); + baseFilter.SelectField = new string[] { "ID", "MOON", "RESPONSIBILITY_DEP_ID" }; + var planDetails = GetEntities(t => t.Nav_YearTrainPlan.PLAN_YEAR == DateTime.Now.Year && t.Nav_YearTrainPlan.STATUS == PFStandardStatus.Archived, baseFilter); + var trainNotifys = GetEntities(t => t.TRAIN_PLAN_DETAIL_ID != null && t.STATUS == SETrainNotifyStatus.归档, new BaseFilter(filter.GetOrgId())); + var planDeps = planDetails.Select(t => t.RESPONSIBILITY_DEP_ID).ToList(); + var alldeps = GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); + foreach (var dep in planDeps) + { + var planDetailIds = planDetails.Where(t => t.RESPONSIBILITY_DEP_ID == dep).Select(t => t.ID).ToList(); + var depTrainNotifys = trainNotifys.Where(t => planDetailIds.Contains((Guid)t.TRAIN_PLAN_DETAIL_ID)); + T_BI_TRAIN_PLAN_COUNT item = new T_BI_TRAIN_PLAN_COUNT(); + item.DepName = alldeps.FirstOrDefault(t => t.ID == dep).NAME; + item.planCount = planDetailIds.Count(); + item.activeCount = depTrainNotifys.Count(); + item.finishPrecent = item.activeCount / item.planCount; + item.ORG_ID = filter.GetOrgId(); + items.Add(item); + } + UnifiedCommit(() => + { + BantchAddEntityNoCommit(items); + }); } - UnifiedCommit(() => + catch (Exception ex) { - BantchAddEntityNoCommit(items); - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -1050,142 +1152,152 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - List completions = new List(); - BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); - var startTime = Convert.ToDateTime(DateTime.Now.Year + "-01-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", "Nav_Parent.Nav_Parent", "PARENT_ID" }; - var departments = GetEntities(t => !t.IS_DELETED, baseFilter); - baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; - var users = GetEntities(t => !t.IS_DELETED, baseFilter); - baseFilter.SelectField = new string[] { "ID", "FORM_STATUS", "CREATER_ID", "Nav_CreateUser", "CREATE_TIME" }; //指定字段,包括导航属性 - var preShiftMeetingTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false && i.CREATER_ID != null, baseFilter).ToList(); - baseFilter.SelectField = new string[] { "ID", "IS_PUBLISH", "DEPARTMENT_ID", "CREATE_TIME" }; //指定字段,包括导航属性 - var currentShiftTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); - foreach (var item in preShiftMeetingTemp) + try { - var userInfo = users.FirstOrDefault(t => t.ID == item.CREATER_ID); - item.DEPARTMENT_ID = userInfo?.DEPARTMENT_ID; - } - 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")); - var preTemp = preShiftMeetingTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); - var preShiftMeeting = preTemp. - GroupBy(m => m.DEPARTMENT_ID). - Select(group => new + List completions = new List(); + BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); + var startTime = Convert.ToDateTime(DateTime.Now.Year + "-01-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", "Nav_Parent.Nav_Parent", "PARENT_ID" }; + var departments = GetEntities(t => !t.IS_DELETED, baseFilter); + baseFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; + var users = GetEntities(t => !t.IS_DELETED, baseFilter); + baseFilter.SelectField = new string[] { "ID", "FORM_STATUS", "CREATER_ID", "Nav_CreateUser", "CREATE_TIME" }; //指定字段,包括导航属性 + var preShiftMeetingTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false && i.CREATER_ID != null, baseFilter).ToList(); + baseFilter.SelectField = new string[] { "ID", "IS_PUBLISH", "DEPARTMENT_ID", "CREATE_TIME" }; //指定字段,包括导航属性 + var currentShiftTemp = GetEntities(i => i.CREATE_TIME >= startTime && i.IS_DELETED == false && i.DEPARTMENT_ID != null, baseFilter).ToList(); + foreach (var item in preShiftMeetingTemp) { - departmentId = group.Key, - totalCount = group.Count(), - finishCount = group.Where(i => i.FORM_STATUS == 2).Count(), - waitingCount = group.Where(i => i.FORM_STATUS != 2).Count(), - //onTimeCount = group.Where(i => i.FORM_STATUS == 2).Count(), - //overTimeCount = group.Where(i => i.FORM_STATUS == 2 ).Count() - }).ToList(); - foreach (var item in preShiftMeeting) + var userInfo = users.FirstOrDefault(t => t.ID == item.CREATER_ID); + item.DEPARTMENT_ID = userInfo?.DEPARTMENT_ID; + } + for (DateTime i = startTime; i <= endTime; i = i.AddMonths(i.Month - i.Month + 1).AddDays(1 - i.Day)) { - var departInfo = departments.FirstOrDefault(t => t.ID == item.departmentId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); - T_FM_JOB_ACTIVITY_COMPLETION completion = new T_FM_JOB_ACTIVITY_COMPLETION(); - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; - completion.TOTAL_COUNT = item.totalCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.FINISH_COUNT = item.finishCount; - //completion.ONTIME_COUNT = item.onTimeCount; - //completion.OVERTIME_COUNT = item.overTimeCount; - completion.FORM_NAME = "一般作业活动记录"; - completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; - if (departInfo != null) + var monthEnd = Convert.ToDateTime(i.AddMonths(i.Month - i.Month + 1).AddDays(1 - i.Day - 1).ToString().Replace("0:00:00", "23:59:59")); + var preTemp = preShiftMeetingTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); + var preShiftMeeting = preTemp. + GroupBy(m => m.DEPARTMENT_ID). + Select(group => new { - if (departInfo.DEPARTMENT_TYPE == 0) - { - completion.DEPARTMENT_ID = item.departmentId; - completion.DEPARTMENT_NAME = departInfo?.NAME; - } - if (departInfo.DEPARTMENT_TYPE == 1) - { - completion.DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = item.departmentId; - completion.SHOP_DEPARTMENT_NAME = departInfo?.NAME; - } - if (departInfo.DEPARTMENT_TYPE == 2) - { - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.departmentId; - completion.TEAM_NAME = departInfo?.NAME; - } - } - completions.Add(completion); - } - var currentTemp = currentShiftTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); - var currentShift = currentTemp. - GroupBy(m => m.DEPARTMENT_ID). - Select(group => new - { - departmentId = group.Key, - totalCount = group.Count(), - finishCount = group.Where(i => i.IS_PUBLISH == (int)FOPreMeetingStatusEnum.归档).Count(), - waitingCount = group.Where(i => i.IS_PUBLISH != (int)FOPreMeetingStatusEnum.归档).Count(), - //onTimeCount = group.Where(i => i.IS_PUBLISH == (int)FOPreMeetingStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), - //overTimeCount = group.Where(i => i.IS_PUBLISH == (int)FOPreMeetingStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() - }).ToList(); - foreach (var item in currentShift) - { - var departInfo = departments.FirstOrDefault(t => t.ID == item.departmentId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); - T_FM_JOB_ACTIVITY_COMPLETION completion = new T_FM_JOB_ACTIVITY_COMPLETION(); - completion.MONTH = i; - completion.MONTHStr = i.Year + "年" + i.Month + "月"; - completion.TOTAL_COUNT = item.totalCount; - completion.WAITTING_COUNT = item.waitingCount; - completion.FINISH_COUNT = item.finishCount; - //completion.ONTIME_COUNT = item.onTimeCount; - //completion.OVERTIME_COUNT = item.overTimeCount; - completion.FORM_NAME = "关键/许可作业活动记录"; - completion.ORG_ID = filter.GetOrgId(); - completion.START_TIME = i; - completion.END_TIME = monthEnd; - if (departInfo != null) + departmentId = group.Key, + totalCount = group.Count(), + finishCount = group.Where(i => i.FORM_STATUS == 2).Count(), + waitingCount = group.Where(i => i.FORM_STATUS != 2).Count(), + //onTimeCount = group.Where(i => i.FORM_STATUS == 2).Count(), + //overTimeCount = group.Where(i => i.FORM_STATUS == 2 ).Count() + }).ToList(); + foreach (var item in preShiftMeeting) { - if (departInfo.DEPARTMENT_TYPE == 0) + var departInfo = departments.FirstOrDefault(t => t.ID == item.departmentId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); + T_FM_JOB_ACTIVITY_COMPLETION completion = new T_FM_JOB_ACTIVITY_COMPLETION(); + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TOTAL_COUNT = item.totalCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.FINISH_COUNT = item.finishCount; + //completion.ONTIME_COUNT = item.onTimeCount; + //completion.OVERTIME_COUNT = item.overTimeCount; + completion.FORM_NAME = "一般作业活动记录"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + if (departInfo != null) { - completion.DEPARTMENT_ID = item.departmentId; - completion.DEPARTMENT_NAME = departInfo?.NAME; - } - if (departInfo.DEPARTMENT_TYPE == 1) - { - completion.DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = item.departmentId; - completion.SHOP_DEPARTMENT_NAME = departInfo?.NAME; - } - if (departInfo.DEPARTMENT_TYPE == 2) - { - completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; - completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; - completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; - completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; - completion.TEAM_ID = item.departmentId; - completion.TEAM_NAME = departInfo?.NAME; + if (departInfo.DEPARTMENT_TYPE == 0) + { + completion.DEPARTMENT_ID = item.departmentId; + completion.DEPARTMENT_NAME = departInfo?.NAME; + } + if (departInfo.DEPARTMENT_TYPE == 1) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.departmentId; + completion.SHOP_DEPARTMENT_NAME = departInfo?.NAME; + } + if (departInfo.DEPARTMENT_TYPE == 2) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = item.departmentId; + completion.TEAM_NAME = departInfo?.NAME; + } } + completions.Add(completion); + } + var currentTemp = currentShiftTemp.Where(t => t.CREATE_TIME >= i && t.CREATE_TIME <= monthEnd).ToList(); + var currentShift = currentTemp. + GroupBy(m => m.DEPARTMENT_ID). + Select(group => new + { + departmentId = group.Key, + totalCount = group.Count(), + finishCount = group.Where(i => i.IS_PUBLISH == (int)FOPreMeetingStatusEnum.归档).Count(), + waitingCount = group.Where(i => i.IS_PUBLISH != (int)FOPreMeetingStatusEnum.归档).Count(), + //onTimeCount = group.Where(i => i.IS_PUBLISH == (int)FOPreMeetingStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.未超时).Count(), + //overTimeCount = group.Where(i => i.IS_PUBLISH == (int)FOPreMeetingStatusEnum.归档 && i.OVERTIME == FOISOVERTIME.超时).Count() + }).ToList(); + foreach (var item in currentShift) + { + var departInfo = departments.FirstOrDefault(t => t.ID == item.departmentId); //GetDepartmentId((Guid)item.Key.DEPARTMENT_ID); + T_FM_JOB_ACTIVITY_COMPLETION completion = new T_FM_JOB_ACTIVITY_COMPLETION(); + completion.MONTH = i; + completion.MONTHStr = i.Year + "年" + i.Month + "月"; + completion.TOTAL_COUNT = item.totalCount; + completion.WAITTING_COUNT = item.waitingCount; + completion.FINISH_COUNT = item.finishCount; + //completion.ONTIME_COUNT = item.onTimeCount; + //completion.OVERTIME_COUNT = item.overTimeCount; + completion.FORM_NAME = "关键/许可作业活动记录"; + completion.ORG_ID = filter.GetOrgId(); + completion.START_TIME = i; + completion.END_TIME = monthEnd; + if (departInfo != null) + { + if (departInfo.DEPARTMENT_TYPE == 0) + { + completion.DEPARTMENT_ID = item.departmentId; + completion.DEPARTMENT_NAME = departInfo?.NAME; + } + if (departInfo.DEPARTMENT_TYPE == 1) + { + completion.DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = item.departmentId; + completion.SHOP_DEPARTMENT_NAME = departInfo?.NAME; + } + if (departInfo.DEPARTMENT_TYPE == 2) + { + completion.DEPARTMENT_ID = departInfo?.Nav_Parent?.PARENT_ID; + completion.DEPARTMENT_NAME = departInfo?.Nav_Parent?.Nav_Parent?.NAME; + completion.SHOP_DEPARTMENT_ID = departInfo?.PARENT_ID; + completion.SHOP_DEPARTMENT_NAME = departInfo?.Nav_Parent?.NAME; + completion.TEAM_ID = item.departmentId; + completion.TEAM_NAME = departInfo?.NAME; + } + } + completions.Add(completion); } - completions.Add(completion); } - } - this.UnifiedCommit(() => - { - if (completions.Any() && completions.Count > 0) + this.UnifiedCommit(() => { - DeleteEntityNoCommit(t => true); - BantchAddEntityNoCommit(completions); - } - }); + if (completions.Any() && completions.Count > 0) + { + DeleteEntityNoCommit(t => true); + BantchAddEntityNoCommit(completions); + } + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -1200,78 +1312,88 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value; - BaseFilter baseFilter = new BaseFilter(orgId); - baseFilter.SelectField = new string[] { "ID", "OPERATION_STEP_ID", "ORG_ID", "JOB_LOCATION", "APPLY_USER_ID", "MONITOR_USER_ID", "CREATER_ID", "Nav_CrucialLicensePerson" }; - var jobs = this.GetEntities(t => !t.IS_DELETED && t.IS_PUBLISH == 5, baseFilter).ToList(); - var jobIds = jobs.Select(t => t.ID).ToList(); - baseFilter.SelectField = new string[] { "ID", "JOB_NAME_ID" }; - var techs = this.GetEntities(t => !t.IS_DELETED && jobIds.Contains((Guid)t.JOB_NAME_ID), baseFilter).ToList(); - var techJobIds = techs.Select(t => t.JOB_NAME_ID).Distinct().ToList(); - var temps = jobs.Where(t => !techJobIds.Contains(t.ID)).ToList(); - var techLists = new List(); - var techUserLists = new List(); - if (temps != null && temps.Any()) + try { - foreach (var item in temps) + var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value; + BaseFilter baseFilter = new BaseFilter(orgId); + baseFilter.SelectField = new string[] { "ID", "OPERATION_STEP_ID", "ORG_ID", "JOB_LOCATION", "APPLY_USER_ID", "MONITOR_USER_ID", "CREATER_ID", "Nav_CrucialLicensePerson" }; + var jobs = this.GetEntities(t => !t.IS_DELETED && t.IS_PUBLISH == 5, baseFilter).ToList(); + var jobIds = jobs.Select(t => t.ID).ToList(); + baseFilter.SelectField = new string[] { "ID", "JOB_NAME_ID" }; + var techs = this.GetEntities(t => !t.IS_DELETED && jobIds.Contains((Guid)t.JOB_NAME_ID), baseFilter).ToList(); + var techJobIds = techs.Select(t => t.JOB_NAME_ID).Distinct().ToList(); + var temps = jobs.Where(t => !techJobIds.Contains(t.ID)).ToList(); + var techLists = new List(); + var techUserLists = new List(); + if (temps != null && temps.Any()) { - T_FO_TECH_DISCLOSURE_FROM tech = new T_FO_TECH_DISCLOSURE_FROM(); - var entity = jobs.FirstOrDefault(t => t.ID == item.ID); - //取审批流水码 - var sysFilter = new SystemCodeFilter(); - sysFilter.CodeType = (int)PFCodeRuleType.技术交底表编号; - sysFilter.Count = 1; - sysFilter.OrgId = orgId; - var codes = CodeRuleService.NewGenSerial(sysFilter); - var codeList = codes.Split(new char[] { ',' }); - //主表 - tech.CODE = codeList[0]; - tech.ORG_ID = entity.ORG_ID; - tech.OPERATION_STEP_ID = entity.OPERATION_STEP_ID; - tech.JOB_NAME_ID = entity.ID; - tech.JOB_LOCATION = entity.JOB_LOCATION; - tech.DISCLOSURE_PERSON_ID = entity.APPLY_USER_ID; - tech.IS_AUTO = (int)ISImportantEnum.是; - tech.IS_OUTSOURCE = false; - tech.RELATED_ID = null; - tech.FORM_STATUS = (int)FOTeamActivityState.已归档; - techLists.Add(tech); - if (entity.MONITOR_USER_ID != null) + foreach (var item in temps) { - T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); - person.ORG_ID = entity.ORG_ID; - person.USER_ID = entity.MONITOR_USER_ID; - person.TECH_DISCLOSURE_FROM_ID = tech.ID; - person.CREATER_ID = entity.CREATER_ID; - person.DEAL_STATUS = FOUserShiftStatusEnum.已处理; - techUserLists.Add(person); - } - if (entity.Nav_CrucialLicensePerson != null && entity.Nav_CrucialLicensePerson.Any()) - { - entity.Nav_CrucialLicensePerson.ForEach(t => + T_FO_TECH_DISCLOSURE_FROM tech = new T_FO_TECH_DISCLOSURE_FROM(); + var entity = jobs.FirstOrDefault(t => t.ID == item.ID); + //取审批流水码 + var sysFilter = new SystemCodeFilter(); + sysFilter.CodeType = (int)PFCodeRuleType.技术交底表编号; + sysFilter.Count = 1; + sysFilter.OrgId = orgId; + var codes = CodeRuleService.NewGenSerial(sysFilter); + var codeList = codes.Split(new char[] { ',' }); + //主表 + tech.CODE = codeList[0]; + tech.ORG_ID = entity.ORG_ID; + tech.OPERATION_STEP_ID = entity.OPERATION_STEP_ID; + tech.JOB_NAME_ID = entity.ID; + tech.JOB_LOCATION = entity.JOB_LOCATION; + tech.DISCLOSURE_PERSON_ID = entity.APPLY_USER_ID; + tech.IS_AUTO = (int)ISImportantEnum.是; + tech.IS_OUTSOURCE = false; + tech.RELATED_ID = null; + tech.FORM_STATUS = (int)FOTeamActivityState.已归档; + techLists.Add(tech); + if (entity.MONITOR_USER_ID != null) { T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); - person.ORG_ID = t.ORG_ID; - person.USER_ID = t.USER_ID; + person.ORG_ID = entity.ORG_ID; + person.USER_ID = entity.MONITOR_USER_ID; person.TECH_DISCLOSURE_FROM_ID = tech.ID; - person.CREATER_ID = t.CREATER_ID; + person.CREATER_ID = entity.CREATER_ID; person.DEAL_STATUS = FOUserShiftStatusEnum.已处理; techUserLists.Add(person); - }); + } + if (entity.Nav_CrucialLicensePerson != null && entity.Nav_CrucialLicensePerson.Any()) + { + entity.Nav_CrucialLicensePerson.ForEach(t => + { + T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); + person.ORG_ID = t.ORG_ID; + person.USER_ID = t.USER_ID; + person.TECH_DISCLOSURE_FROM_ID = tech.ID; + person.CREATER_ID = t.CREATER_ID; + person.DEAL_STATUS = FOUserShiftStatusEnum.已处理; + techUserLists.Add(person); + }); + } } } + this.UnifiedCommit(() => + { + if (techLists.Any() && techLists.Count > 0) + { + BantchAddEntityNoCommit(techLists); + } + if (techUserLists.Any() && techUserLists.Count > 0) + { + BantchAddEntityNoCommit(techUserLists); + } + }); } - this.UnifiedCommit(() => + catch (Exception ex) { - if (techLists.Any() && techLists.Count > 0) - { - BantchAddEntityNoCommit(techLists); - } - if (techUserLists.Any() && techUserLists.Count > 0) - { - BantchAddEntityNoCommit(techUserLists); - } - }); + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } return true; }); } @@ -1295,198 +1417,211 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - DateTime dtMin = Convert.ToDateTime(DateTime.Now.ToString("yyyy-01-01 00:00:00")); - if (!string.IsNullOrEmpty(filter.Parameter1)) + try { - try + DateTime dtMin = Convert.ToDateTime(DateTime.Now.ToString("yyyy-01-01 00:00:00")); + if (!string.IsNullOrEmpty(filter.Parameter1)) { - //接收来自页面的参数 - DateTime deParm = Convert.ToDateTime(filter.Parameter1); - dtMin = Convert.ToDateTime(deParm.ToString("yyyy-01-01 00:00:00")); - } - catch { } - } - - BaseFilter filterR = new BaseFilter(); - filterR.SelectField = new List { "ID", "NAME" }; - var listRiskReasons = GetEntities(e => !e.IS_DELETED, filterR, null).OrderBy(e => e.NAME).ToList(); - string CODE = DateTime.Now.ToString("yyyyMMddHHmm"); - //DEPARTMENT_TYPE { get; set; }"FMDepartmentType"部门=0, 车间=1, 班组=2, 公司=3 - BaseFilter filterD = new BaseFilter(filter.OrgId); - filterD.SelectField = new List { "ID", "NAME", "DEPARTMENT_TYPE", "PARENT_ID" }; - var listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, filterD, null); - - BaseFilter filterCR = new BaseFilter(); - filterCR.SelectField = new List { "ID", "RISK_SUBMIT_CONTENT_ID", "RISK_REASON_ID", "Nav_RiskSubmitContent.DEPARTMENT_ID", "Nav_RiskSubmitContent.ID" }; - var listContentReason = GetEntities(e => e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtMin && e.Nav_RiskSubmitContent.DEPARTMENT_ID.HasValue, filterCR, "Nav_RiskSubmitContent"); - var year = dtMin.Year; - - var listReason = GetEntities(e => e.YEAR == year && e.TYPE == BSCaculateType.RiskReason, null, null).ToList(); - - if ((listDep == null || !listDep.Any()) || (listRiskReasons == null || !listRiskReasons.Any())) - { - //如果 没有部门 或者 为设置隐患原因 一般不会这样 - return true; - } - - var taskSync = GetEntity(filter.Keyword);//跑批待办 - if (taskSync.SYNC_PARAM != null) - { - taskSync.SYNC_PARAM = ""; - } - taskSync.UPDATE_SUCCES_TIME = DateTime.Now; - - //组织 各隐患原因 数量 - - int reasonCount = listRiskReasons.Count; - Guid perReasonID = Guid.Empty; - int perCount = 0;//组织对应数量 - int perSubCount = 0;//组织对应下级数量 - int depNum = 0; - // 子班组 + 本组织 - List listSubDepID = new List(); - DateTime MODIFY_TIME = DateTime.Now.AddMinutes(1); - - //班组 - depNum = 0; - var depB = listDep.Where(e => e.DEPARTMENT_TYPE == 2).OrderBy(e => e.NUM); - foreach (var itemD in depB) - { - depNum++; - for (int i = 0; i < reasonCount; i++) - { - perReasonID = listRiskReasons[i].ID; - var reason = listReason.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perReasonID); - if (reason == null) + try { - reason = GetRiskReason(2, dtMin.Year, itemD.ID, perReasonID, i + 1, filter.OrgId);//如果没有 就新建对象 - listReason.Add(reason);//地址引用 应该是支持 + //接收来自页面的参数 + DateTime deParm = Convert.ToDateTime(filter.Parameter1); + dtMin = Convert.ToDateTime(deParm.ToString("yyyy-01-01 00:00:00")); } - - perCount = listContentReason.Where(e => e.Nav_RiskSubmitContent.DEPARTMENT_ID.Value == itemD.ID && e.RISK_REASON_ID == perReasonID).Count(); - reason.DEPARTMENT_TYPE = FMDepartmentType.班组; - reason.NUMD = depNum; - reason.COUNT = perCount; - reason.CODE = CODE; + catch { } } - } - //车间 - depNum = 0; - var depC = listDep.Where(e => e.DEPARTMENT_TYPE == 1).OrderBy(e => e.NUM); - foreach (var itemD in depC) - { - depNum++; - listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); + BaseFilter filterR = new BaseFilter(filter.OrgId); + filterR.SelectField = new List { "ID", "NAME" }; + var listRiskReasons = GetEntities(e => !e.IS_DELETED, filterR, null).OrderBy(e => e.NAME).ToList(); + string CODE = DateTime.Now.ToString("yyyyMMddHHmm"); + //DEPARTMENT_TYPE { get; set; }"FMDepartmentType"部门=0, 车间=1, 班组=2, 公司=3 + BaseFilter filterD = new BaseFilter(filter.OrgId); + filterD.SelectField = new List { "ID", "NAME", "DEPARTMENT_TYPE", "PARENT_ID" }; + var listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, filterD, null); - for (int i = 0; i < reasonCount; i++) + BaseFilter filterCR = new BaseFilter(filter.OrgId); + filterCR.SelectField = new List { "ID", "RISK_SUBMIT_CONTENT_ID", "RISK_REASON_ID", "Nav_RiskSubmitContent.DEPARTMENT_ID", "Nav_RiskSubmitContent.ID" }; + var listContentReason = GetEntities(e => e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtMin && e.Nav_RiskSubmitContent.DEPARTMENT_ID.HasValue, filterCR, "Nav_RiskSubmitContent"); + var year = dtMin.Year; + + var listReason = GetEntities(e => e.YEAR == year && e.TYPE == BSCaculateType.RiskReason, null, null).ToList(); + + if ((listDep == null || !listDep.Any()) || (listRiskReasons == null || !listRiskReasons.Any())) { - perReasonID = listRiskReasons[i].ID; - var reason = listReason.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perReasonID); - if (reason == null) - { - reason = GetRiskReason(1, dtMin.Year, itemD.ID, perReasonID, i + 1, filter.OrgId);//如果没有 就新建对象 - listReason.Add(reason);//地址引用 应该是支持 - } + //如果 没有部门 或者 为设置隐患原因 一般不会这样 + return true; + } - perCount = listContentReason.Where(e => e.Nav_RiskSubmitContent.DEPARTMENT_ID.Value == itemD.ID && e.RISK_REASON_ID == perReasonID).Count(); + var taskSync = GetEntity(filter.Keyword);//跑批待办 + if (taskSync.SYNC_PARAM != null) + { + taskSync.SYNC_PARAM = ""; + } + taskSync.UPDATE_SUCCES_TIME = DateTime.Now; - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) + //组织 各隐患原因 数量 + + int reasonCount = listRiskReasons.Count; + Guid perReasonID = Guid.Empty; + int perCount = 0;//组织对应数量 + int perSubCount = 0;//组织对应下级数量 + int depNum = 0; + // 子班组 + 本组织 + List listSubDepID = new List(); + DateTime MODIFY_TIME = DateTime.Now.AddMinutes(1); + + //班组 + depNum = 0; + var depB = listDep.Where(e => e.DEPARTMENT_TYPE == 2).OrderBy(e => e.NUM); + foreach (var itemD in depB) + { + depNum++; + for (int i = 0; i < reasonCount; i++) { - //子项数据求和 - var listThisChange = listReason.Where(e => e.CODE == CODE && e.SOURCEID == perReasonID && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) + perReasonID = listRiskReasons[i].ID; + var reason = listReason.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perReasonID); + if (reason == null) { - foreach (var item in listThisChange) + reason = GetRiskReason(2, dtMin.Year, itemD.ID, perReasonID, i + 1, filter.OrgId);//如果没有 就新建对象 + listReason.Add(reason);//地址引用 应该是支持 + } + + perCount = listContentReason.Where(e => e.RISK_REASON_ID == perReasonID && e.Nav_RiskSubmitContent != null && e.Nav_RiskSubmitContent.DEPARTMENT_ID.HasValue && e.Nav_RiskSubmitContent.DEPARTMENT_ID.Value == itemD.ID).Count(); + reason.DEPARTMENT_TYPE = FMDepartmentType.班组; + reason.NUMD = depNum; + reason.COUNT = perCount; + reason.CODE = CODE; + } + } + + //车间 + depNum = 0; + var depC = listDep.Where(e => e.DEPARTMENT_TYPE == 1).OrderBy(e => e.NUM); + foreach (var itemD in depC) + { + depNum++; + listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); + + for (int i = 0; i < reasonCount; i++) + { + perReasonID = listRiskReasons[i].ID; + var reason = listReason.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perReasonID); + if (reason == null) + { + reason = GetRiskReason(1, dtMin.Year, itemD.ID, perReasonID, i + 1, filter.OrgId);//如果没有 就新建对象 + listReason.Add(reason);//地址引用 应该是支持 + } + + //perCount = listContentReason.Where(e => e.Nav_RiskSubmitContent.DEPARTMENT_ID.Value == itemD.ID && e.RISK_REASON_ID == perReasonID).Count(); + perCount = listContentReason.Where(e => e.RISK_REASON_ID == perReasonID && e.Nav_RiskSubmitContent != null && e.Nav_RiskSubmitContent.DEPARTMENT_ID.HasValue && e.Nav_RiskSubmitContent.DEPARTMENT_ID.Value == itemD.ID).Count(); + + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listReason.Where(e => e.CODE == CODE && e.SOURCEID == perReasonID && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) { - perSubCount += item.COUNT; + foreach (var item in listThisChange) + { + perSubCount += item.COUNT; + } } } + reason.DEPARTMENT_TYPE = FMDepartmentType.车间; + reason.NUMD = depNum; + reason.COUNT = perCount + perSubCount; + reason.CODE = CODE; } - reason.DEPARTMENT_TYPE = FMDepartmentType.车间; - reason.NUMD = depNum; - reason.COUNT = perCount + perSubCount; - reason.CODE = CODE; } - } - //部门 - depNum = 0; - var depBM = listDep.Where(e => e.DEPARTMENT_TYPE == 0).OrderBy(e => e.NUM); - foreach (var itemD in depBM) - { - depNum++; - listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); - - for (int i = 0; i < reasonCount; i++) + //部门 + depNum = 0; + var depBM = listDep.Where(e => e.DEPARTMENT_TYPE == 0).OrderBy(e => e.NUM); + foreach (var itemD in depBM) { - perReasonID = listRiskReasons[i].ID; - var reason = listReason.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perReasonID); - if (reason == null) - { - reason = GetRiskReason(0, dtMin.Year, itemD.ID, perReasonID, i + 1, filter.OrgId);//如果没有 就新建对象 - listReason.Add(reason);//地址引用 应该是支持 - } + depNum++; + listSubDepID = listDep.Where(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == itemD.ID).Select(e => e.ID).ToList(); - perCount = listContentReason.Where(e => e.Nav_RiskSubmitContent.DEPARTMENT_ID.Value == itemD.ID && e.RISK_REASON_ID == perReasonID).Count(); - - perSubCount = 0;//每次清零 后相加 - if (listSubDepID != null && listSubDepID.Any()) + for (int i = 0; i < reasonCount; i++) { - //子项数据求和 - var listThisChange = listReason.Where(e => e.CODE == CODE && e.SOURCEID == perReasonID && listSubDepID.Contains(e.DEPARTMENT_ID)); - if (listThisChange != null && listThisChange.Any()) + perReasonID = listRiskReasons[i].ID; + var reason = listReason.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perReasonID); + if (reason == null) { - foreach (var item in listThisChange) + reason = GetRiskReason(0, dtMin.Year, itemD.ID, perReasonID, i + 1, filter.OrgId);//如果没有 就新建对象 + listReason.Add(reason);//地址引用 应该是支持 + } + + //perCount = listContentReason.Where(e => e.Nav_RiskSubmitContent.DEPARTMENT_ID.Value == itemD.ID && e.RISK_REASON_ID == perReasonID).Count(); + perCount = listContentReason.Where(e => e.RISK_REASON_ID == perReasonID && e.Nav_RiskSubmitContent != null && e.Nav_RiskSubmitContent.DEPARTMENT_ID.HasValue && e.Nav_RiskSubmitContent.DEPARTMENT_ID.Value == itemD.ID).Count(); + + perSubCount = 0;//每次清零 后相加 + if (listSubDepID != null && listSubDepID.Any()) + { + //子项数据求和 + var listThisChange = listReason.Where(e => e.CODE == CODE && e.SOURCEID == perReasonID && listSubDepID.Contains(e.DEPARTMENT_ID)); + if (listThisChange != null && listThisChange.Any()) { - perSubCount += item.COUNT; + foreach (var item in listThisChange) + { + perSubCount += item.COUNT; + } } } + reason.DEPARTMENT_TYPE = FMDepartmentType.部门; + reason.NUMD = depNum; + reason.COUNT = perCount + perSubCount; + reason.CODE = CODE; } - reason.DEPARTMENT_TYPE = FMDepartmentType.部门; - reason.NUMD = depNum; - reason.COUNT = perCount + perSubCount; - reason.CODE = CODE; } - } - depNum = 0; - //公司 为了 格式 懒得改 统计所有 - var depG = listDep.Where(e => e.DEPARTMENT_TYPE == 3 && !e.PARENT_ID.HasValue); - foreach (var itemD in depG) - { - depNum++; - for (int i = 0; i < reasonCount; i++) + depNum = 0; + //公司 为了 格式 懒得改 统计所有 + var depG = listDep.Where(e => e.DEPARTMENT_TYPE == 3 && !e.PARENT_ID.HasValue); + foreach (var itemD in depG) { - perReasonID = listRiskReasons[i].ID; - var reason = listReason.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perReasonID); - if (reason == null) + depNum++; + for (int i = 0; i < reasonCount; i++) { - reason = GetRiskReason(3, dtMin.Year, itemD.ID, perReasonID, i + 1, filter.OrgId);//如果没有 就新建对象 - listReason.Add(reason);//地址引用 应该是支持 + perReasonID = listRiskReasons[i].ID; + var reason = listReason.FirstOrDefault(e => e.DEPARTMENT_ID == itemD.ID && e.SOURCEID == perReasonID); + if (reason == null) + { + reason = GetRiskReason(3, dtMin.Year, itemD.ID, perReasonID, i + 1, filter.OrgId);//如果没有 就新建对象 + listReason.Add(reason);//地址引用 应该是支持 + } + + perCount = listContentReason.Where(e => e.RISK_REASON_ID == perReasonID).Count();//e.Nav_RiskSubmitContent.DEPARTMENT_ID.Value == itemD.ID && + + reason.DEPARTMENT_TYPE = FMDepartmentType.公司; + reason.NUMD = depNum; + reason.COUNT = perCount; + reason.CODE = CODE; } - - perCount = listContentReason.Where(e => e.RISK_REASON_ID == perReasonID).Count();//e.Nav_RiskSubmitContent.DEPARTMENT_ID.Value == itemD.ID && - - reason.DEPARTMENT_TYPE = FMDepartmentType.公司; - reason.NUMD = depNum; - reason.COUNT = perCount; - reason.CODE = CODE; } + + //找本次有修改的 + var UpdateResult = listReason.Where(e => e.CODE == CODE); + taskSync.TASK_END_TIME = DateTime.Now; + + this.UnifiedCommit(() => + { + if (taskSync != null) //跑批信息 + UpdateEntityNoCommit(taskSync); + if (UpdateResult != null && UpdateResult.Any()) + BantchSaveEntityNoCommit(UpdateResult); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } - //找本次有修改的 - var UpdateResult = listReason.Where(e => e.CODE == CODE); - taskSync.TASK_END_TIME = DateTime.Now; - - this.UnifiedCommit(() => - { - if (taskSync != null) //跑批信息 - UpdateEntityNoCommit(taskSync); - if (UpdateResult != null && UpdateResult.Any()) - BantchSaveEntityNoCommit(UpdateResult); - }); return true; }); } @@ -1520,13 +1655,17 @@ namespace APT.PP.WebApi.Controllers.Api.PP BaseFilter filterD = new BaseFilter(filter.OrgId); filterD.SelectField = new List { "ID", "NAME", "DEPARTMENT_TYPE", "PARENT_ID" }; + filterD.IgnoreDataRule = true; IEnumerable listDep = null; try { //可能会报错 - listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, filterD, null); + listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, filterD, null);//这句代码在跑批的时候 listDep 获取不到数据 + //listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, null, null); + } + catch + { } - catch { } if ((listDep == null || !listDep.Any())) { @@ -2024,7 +2163,7 @@ namespace APT.PP.WebApi.Controllers.Api.PP this.UnifiedCommit(() => { if (taskSync != null) //跑批信息 - UpdateEntityNoCommit(taskSync); + UpdateEntityNoCommit(taskSync); if (UpdateResult != null && UpdateResult.Any()) BantchSaveEntityNoCommit(UpdateResult); }); @@ -2035,7 +2174,6 @@ namespace APT.PP.WebApi.Controllers.Api.PP Logger.LogError("错误日志:[StackTrace]" + ex.StackTrace); else Logger.LogError("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - Logger.LogError("filter:" + filter.ToJson()); } return true; }); @@ -2106,30 +2244,41 @@ namespace APT.PP.WebApi.Controllers.Api.PP BaseFilter filterD = new BaseFilter(filter.OrgId); filterD.SelectField = new List { "ID", "NAME", "DEPARTMENT_TYPE", "PARENT_ID" }; - var listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, filterD, null); + IEnumerable listDep = null; + try + { + listDep = GetEntities(e => !e.IS_DELETED && e.ENABLE_STATUS == 0, filterD, null); + } + catch { } if ((listDep == null || !listDep.Any())) { return true; //如果 没有部门 或者 为设置隐患原因 一般不会这样 } - BaseFilter filterC = new BaseFilter(); + BaseFilter filterC = new BaseFilter(filter.OrgId); filterC.SelectField = new List { "ID", "DEPARTMENTID", "CREATE_TIME", "ENABLE_STATUS", "STATUSPLAN", "CHECK_TYPE_ID" }; filterC.IgnoreDataRule = true; //隐患已上报 统计 有没有处理 处理的及时性 - var dtSafeCheck = GetEntities(e => e.CHECK_TYPE_ID.HasValue && e.DEPARTMENTID.HasValue && e.CREATE_TIME.HasValue && e.ENABLE_STATUS == 0 && e.CREATE_TIME.Value >= dtMin, filterC, null); //&& e.STATUSPLAN > 0 - + IEnumerable dtSafeCheck = null; + try + { + dtSafeCheck = GetEntities(e => e.CHECK_TYPE_ID.HasValue && e.DEPARTMENTID.HasValue && e.CREATE_TIME.HasValue && e.ENABLE_STATUS == 0 && e.CREATE_TIME.Value >= dtMin, filterC, null); //&& e.STATUSPLAN > 0 + } + catch { } if ((dtSafeCheck == null || !dtSafeCheck.Any())) { return true; //如果没有检查信息 } - - - BaseFilter filterCT = new BaseFilter(); + BaseFilter filterCT = new BaseFilter(filter.OrgId); filterCT.SelectField = new List { "ID", "NAME", "IS_DELETED", "ENABLE_STATUS" }; - var listCheckTypeAll = GetEntities(null, filterCT, null);// - + IEnumerable listCheckTypeAll = null; + try + { + listCheckTypeAll = GetEntities(null, filterCT, null);// + } + catch { } if ((listCheckTypeAll == null || !listCheckTypeAll.Any())) { return true; //如果没有检查信息 @@ -2428,59 +2577,71 @@ namespace APT.PP.WebApi.Controllers.Api.PP { return SafeExecute(() => { - Guid? DataID = null; - Guid? KEY = null; - if (!string.IsNullOrEmpty(filter.Parameter1)) + try { - try + + Guid? DataID = null; + Guid? KEY = null; + if (!string.IsNullOrEmpty(filter.Parameter1)) { - if (filter.Parameter1.Contains("DATA_ID") || filter.Parameter1.Contains("KEY")) + try { - if (filter.Parameter1.Contains(",")) + if (filter.Parameter1.Contains("DATA_ID") || filter.Parameter1.Contains("KEY")) { - var parm = filter.Parameter1.Split(","); - foreach (var item in parm) + if (filter.Parameter1.Contains(",")) { - if (item.Contains("DATA_ID")) + var parm = filter.Parameter1.Split(","); + foreach (var item in parm) { - DataID = new Guid(item); + if (item.Contains("DATA_ID")) + { + DataID = new Guid(item); + } + else + { + KEY = new Guid(item); + } } - else + } + else + { + var parm = filter.Parameter1.Split("=")[1]; + if (filter.Parameter1.Contains("DATA_ID")) { - KEY = new Guid(item); + DataID = new Guid(parm); + } + else// if (filter.Parameter1.Contains("KEY")) + { + KEY = new Guid(parm); } } } else { - var parm = filter.Parameter1.Split("=")[1]; - if (filter.Parameter1.Contains("DATA_ID")) - { - DataID = new Guid(parm); - } - else// if (filter.Parameter1.Contains("KEY")) - { - KEY = new Guid(parm); - } + DataID = new Guid(filter.Parameter1); } } - else - { - DataID = new Guid(filter.Parameter1); - } + catch { } } - catch { } - } - T_FM_SYNC_TASK task = GetEntity(filter.Keyword); - task.CURR_TASK_START_TIME = DateTime.Now;//上次同步结束时间 - task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间 - if (DataID != null) + T_FM_SYNC_TASK task = GetEntity(filter.Keyword); + task.CURR_TASK_START_TIME = DateTime.Now;//上次同步结束时间 + task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间 + if (DataID != null) + { + task.SYNC_PARAM = "";//清空参数 + } + + FMNoticeService.SendMsg(NOTICETYPE.Meeting, DataID, KEY, task); + } + catch (Exception ex) { - task.SYNC_PARAM = "";//清空参数 + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } - FMNoticeService.SendMsg(NOTICETYPE.Meeting, DataID, KEY, task); return true; }); } diff --git a/APT.MicroApi/APT.PP.WebApi/Models/SimpleAsyncActionFilter.cs b/APT.MicroApi/APT.PP.WebApi/Models/SimpleAsyncActionFilter.cs index 126a224..e0f9966 100644 --- a/APT.MicroApi/APT.PP.WebApi/Models/SimpleAsyncActionFilter.cs +++ b/APT.MicroApi/APT.PP.WebApi/Models/SimpleAsyncActionFilter.cs @@ -93,9 +93,11 @@ namespace APT.WebApi.Models } } } - - context.HttpContext.Items.Add("syncLog", log); - context.HttpContext.Items.Add("syncID", log.ID); + if (!context.HttpContext.Items.ContainsKey("syncLog")) + { + context.HttpContext.Items.Add("syncLog", log); + context.HttpContext.Items.Add("syncID", log.ID); + } } /// diff --git a/APT.MicroApi/APT.PP.WebApi/log4net.config b/APT.MicroApi/APT.PP.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.PP.WebApi/log4net.config +++ b/APT.MicroApi/APT.PP.WebApi/log4net.config @@ -19,7 +19,7 @@ - + diff --git a/APT.MicroApi/APT.SC.WebApi/App_Start/DIConfig.cs b/APT.MicroApi/APT.SC.WebApi/App_Start/DIConfig.cs index 8c3e15f..b0869f9 100644 --- a/APT.MicroApi/APT.SC.WebApi/App_Start/DIConfig.cs +++ b/APT.MicroApi/APT.SC.WebApi/App_Start/DIConfig.cs @@ -62,7 +62,6 @@ namespace APT.HM.WebApi.App_Start builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); - builder.RegisterType().As().InstancePerLifetimeScope(); } } } diff --git a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMAbilityEvaluateController.cs b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMAbilityEvaluateController.cs index c4e9e6c..08eb2cf 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMAbilityEvaluateController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMAbilityEvaluateController.cs @@ -103,6 +103,7 @@ namespace APT.SC.WebApi.Controllers.Api.CM entity.Nav_ListProject = null; List listTask = null; + T_FM_NOTIFICATION_TASK taskEnd = null; #region 值判断 if (listUsers == null || !listUsers.Any()) @@ -146,6 +147,15 @@ namespace APT.SC.WebApi.Controllers.Api.CM { throw new Exception("未获取到评估明细,操作失败!"); } + + if (entity.TaskID != Guid.Empty) + { + taskEnd = NotificationTaskService.GetEntityTask(entity.TaskID, "CM026_SHOWPRINT"); + if (!taskEnd.SOURCE_DATA_ID.HasValue) + { + taskEnd.SOURCE_DATA_ID = entity.ID; + } + } } #endregion @@ -155,6 +165,8 @@ namespace APT.SC.WebApi.Controllers.Api.CM { if (entity != null) UpdateEntityNoCommit(entity); + if (taskEnd != null) + UpdateEntityNoCommit(taskEnd); if (listUsers != null && listUsers.Any())//明细 BantchSaveEntityNoCommit(listUsers); if (listListProject != null && listListProject.Any())//关联应急预案 diff --git a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMDrillPlanController.cs b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMDrillPlanController.cs index ae226a8..a5359a9 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMDrillPlanController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMDrillPlanController.cs @@ -126,15 +126,24 @@ namespace APT.SC.WebApi.Controllers.Api.CM entity.APPROVE_ID = Guid.NewGuid(); var serialCode = DateTime.Now.ToString("yyyyMMddHHmmss"); - MFlowPermitService.InsertApprove("CM" + serialCode, "CM002", null, entity.ID, "CM002_SHOWPRINT", entity.TaskID, true, () => - { - if (entity != null) - UpdateEntityNoCommit(entity); - if (listPlanDetail != null && listPlanDetail.Any())//明细 - BantchSaveEntityNoCommit(listPlanDetail); - if (listFiles != null && listFiles.Any())//关联应急预案 - BantchSaveEntityNoCommit(listFiles); - }, entity.APPROVE_ID, null, null, null, null, "CM002_SHOWPRINT", null, "年度应急演练计划审批"); + T_FM_NOTIFICATION_TASK taskEnd = null; + if (entity.TaskID != Guid.Empty) + { + taskEnd = NotificationTaskService.GetEntityTask(entity.TaskID, "CM002_SHOWPRINT"); + if (!taskEnd.SOURCE_DATA_ID.HasValue) + taskEnd.SOURCE_DATA_ID = entity.ID; + } + MFlowPermitService.InsertApprove("CM" + serialCode, "CM002", null, entity.ID, "CM002_SHOWPRINT", null, true, () => + { + if (entity != null) + UpdateEntityNoCommit(entity); + if (taskEnd != null)//明细 + UpdateEntityNoCommit(taskEnd); + if (listPlanDetail != null && listPlanDetail.Any())//明细 + BantchSaveEntityNoCommit(listPlanDetail); + if (listFiles != null && listFiles.Any())//关联应急预案 + BantchSaveEntityNoCommit(listFiles); + }, entity.APPROVE_ID, null, null, null, null, "CM002_SHOWPRINT", null, "年度应急演练计划审批"); } return true; diff --git a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMUrgentEventController.cs b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMUrgentEventController.cs index 7ed0910..3a1465e 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMUrgentEventController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMUrgentEventController.cs @@ -112,7 +112,11 @@ namespace APT.SC.WebApi.Controllers.Api.CM } T_FM_NOTIFICATION_TASK taskEnd = null; if (entity.TaskID != Guid.Empty) + { taskEnd = NotificationTaskService.GetEntityTask(entity.TaskID, "CM018_SHOWPRINT"); + if (!taskEnd.SOURCE_DATA_ID.HasValue) + taskEnd.SOURCE_DATA_ID = entity.ID; + } if (entity.ENABLE_STATUS == FMEnableStatusEnum.禁用) { diff --git a/APT.MicroApi/APT.SC.WebApi/Models/APIAttributeActionFilter.cs b/APT.MicroApi/APT.SC.WebApi/Models/APIAttributeActionFilter.cs index efc0869..59c1096 100644 --- a/APT.MicroApi/APT.SC.WebApi/Models/APIAttributeActionFilter.cs +++ b/APT.MicroApi/APT.SC.WebApi/Models/APIAttributeActionFilter.cs @@ -66,57 +66,58 @@ namespace APT.WebApi.Models } var TalSeconds = (DateTime.Now - START_TIME).TotalSeconds; - //if (TalSeconds > 1) - //{ - T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() + if (TalSeconds > 0.8) { - ID = Guid.NewGuid(), - START_TIME = START_TIME, - END_TIME = DateTime.Now, - API_NAME = context.HttpContext.Request.Path, - DATA_COUNT = 0, - IS_SUCCESS = true, - IS_DELETED = false, - ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, - ENTITY_ORG_TPYE = 0, - FLOW_STATUS = 0, - FLOW_SEND_STATUS = 0, - //CREATE_TIME = DateTime.Now, - //MODIFY_TIME = DateTime.Now, - TRACEIDENTIFIER = TRACEIDENTIFIER, - TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, - ISINSERT = false, - LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, - //FLOW_ID = ID, - //FORM_ID = ID, - CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, - //MODIFIER_ID = ID, - //SYNC_PARAM = SYNC_PARAM, - //LOGTYPE = ID, - SYNC_PARAM = TalSeconds.ToString() - }; - - - Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); - Type TUnitOfWork = UnitOfWork.GetType(); - PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - List listInfo = new List(); - TenantInfo tenantInfo = null; - foreach (var prop in props) - { - if (prop.Name == "TenantInfo") + T_FM_SYNC_LOG log = new T_FM_SYNC_LOG() { - var fdsafd = prop.GetValue(UnitOfWork); - tenantInfo = (TenantInfo)fdsafd; - break; + ID = Guid.NewGuid(), + START_TIME = START_TIME, + END_TIME = DateTime.Now, + API_NAME = context.HttpContext.Request.Path, + DATA_COUNT = 0, + IS_SUCCESS = true, + IS_DELETED = false, + ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, + ENTITY_ORG_TPYE = 0, + FLOW_STATUS = 0, + FLOW_SEND_STATUS = 0, + //CREATE_TIME = DateTime.Now, + //MODIFY_TIME = DateTime.Now, + TRACEIDENTIFIER = TRACEIDENTIFIER, + TRACEIDENTIFIERED = context.HttpContext.TraceIdentifier, + ISINSERT = false, + LOGTYPE = DataHelper.GetRequestType(context.HttpContext.Request.Headers) == 2 ? SyncLogType.APITimeResponsenAPP : SyncLogType.APITimeResponsen, + //FLOW_ID = ID, + //FORM_ID = ID, + CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID, + //MODIFIER_ID = ID, + //SYNC_PARAM = SYNC_PARAM, + //LOGTYPE = ID, + SYNC_PARAM = TalSeconds.ToString() + }; + + + Infrastructure.Core.IUnitOfWork UnitOfWork = UserService.UnitWork(); + Type TUnitOfWork = UnitOfWork.GetType(); + PropertyInfo[] props = TUnitOfWork.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + List listInfo = new List(); + TenantInfo tenantInfo = null; + foreach (var prop in props) + { + if (prop.Name == "TenantInfo") + { + var fdsafd = prop.GetValue(UnitOfWork); + tenantInfo = (TenantInfo)fdsafd; + break; + } } - } - if (!string.IsNullOrEmpty(tenantInfo.Conn)) - { - using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + if (!string.IsNullOrEmpty(tenantInfo.Conn)) { - contextCnn.AddEntity(log); - contextCnn.SaveChanges(); + using (var contextCnn = new MigrationContext(tenantInfo.Conn)) + { + contextCnn.AddEntity(log); + contextCnn.SaveChanges(); + } } } } diff --git a/APT.MicroApi/APT.SC.WebApi/log4net.config b/APT.MicroApi/APT.SC.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.SC.WebApi/log4net.config +++ b/APT.MicroApi/APT.SC.WebApi/log4net.config @@ -19,7 +19,7 @@ - + diff --git a/APT.MicroApi/APT.UT.WebApi/log4net.config b/APT.MicroApi/APT.UT.WebApi/log4net.config index 3164cc4..b3f1a07 100644 --- a/APT.MicroApi/APT.UT.WebApi/log4net.config +++ b/APT.MicroApi/APT.UT.WebApi/log4net.config @@ -19,7 +19,7 @@ - +