public void GenerateMouldISITasks() { #region 取所有到时间的预防计划的设施 DetachedCriteria criteria = DetachedCriteria.For(typeof(FacilityAllocate)); criteria.CreateAlias("FacilityMaster", "f"); criteria.Add(Expression.GeProperty("AllocatedQty", "NextWarnQty")); criteria.Add(Expression.In("f.Status", new string[] { FacilityConstants.CODE_MASTER_FACILITY_STATUS_AVAILABLE, FacilityConstants.CODE_MASTER_FACILITY_STATUS_FIX, FacilityConstants.CODE_MASTER_FACILITY_STATUS_INSPECT, FacilityConstants.CODE_MASTER_FACILITY_STATUS_MAINTAIN })); IList<FacilityAllocate> facilityAllocateList = criteriaMgrE.FindAll<FacilityAllocate>(criteria); #endregion #region 生成ISI任务 User monitorUser = userMgrE.LoadUser(BusinessConstants.SYSTEM_USER_MONITOR); if (facilityAllocateList != null && facilityAllocateList.Count > 0) { foreach (FacilityAllocate facilityAllocate in facilityAllocateList) { #region 生成ISI任务 DateTime maintainDate = DateTime.Now; TaskMstr task = new TaskMstr(); task.Subject = "设施代码:" + facilityAllocate.FacilityMaster.FCID + ",资产编号:" + facilityAllocate.FacilityMaster.AssetNo + ",参考号:" + facilityAllocate.FacilityMaster.RefenceCode + ",需要进行保养"; task.Priority = BusinessConstants.CODE_MASTER_ORDER_PRIORITY_VALUE_NORMAL; task.Desc1 = "设施代码:" + facilityAllocate.FacilityMaster.FCID + ",资产编号:" + facilityAllocate.FacilityMaster.AssetNo + ",设施名称:" + facilityAllocate.FacilityMaster.Name + ",参考号:" + facilityAllocate.FacilityMaster.RefenceCode + ",开模数已达" + facilityAllocate.AllocatedQty.ToString("0.##") + ",需要进行保养"; task.IsAutoRelease = true; task.Desc2 = facilityAllocate.FacilityMaster.FCID; //设施代码,给保养关闭任务用 // task.ExtNo = facilityAllocate.MaintainPlan.Code; //策略代码,给附件用的 task.RefNo = facilityAllocate.FacilityMaster.FCID; //设施代码,后面修改后给保养关闭用的 #region 写死的 task.TaskSubType = taskSubTypeMgrE.LoadTaskSubType("SSGL"); task.UserName = monitorUser.Name; task.Email = monitorUser.Email; task.MobilePhone = monitorUser.MobliePhone; task.TaskAddress = monitorUser.Address; task.Type = ISIConstants.ISI_TASK_TYPE_PLAN; task.PlanStartDate = DateTime.Now; task.PlanCompleteDate = DateTime.Now.AddDays(1); #endregion #region 需要分配人的话 task.AssignStartUser = facilityAllocate.StartUpUser; task.AssignStartUserNm = userSubscriptionMgrE.GetUserName(task.StartedUser); task.TaskAddress = facilityAllocate.FacilityMaster.ChargeSite; #endregion taskMgrE.CreateTask(task, monitorUser); taskMgrE.AssignTask(task.Code, task.BackYards, task.TaskSubTypeCode, new string[] { task.AssignStartUser }, task.PlanStartDate.Value, task.PlanCompleteDate.Value, task.Desc2, task.ExpectedResults, monitorUser); // taskMgrE.ConfirmTask(task.Code, monitorUser); #endregion #region 更新下次时间、数量 facilityAllocate.NextWarnQty = facilityAllocate.NextWarnQty + facilityAllocate.WarnQty; base.Update(facilityAllocate); #endregion } } #endregion }
public void GenerateISITasks() { #region 取所有到时间的预防计划的设施 DetachedCriteria criteria = DetachedCriteria.For(typeof(FacilityMaintainPlan)); criteria.CreateAlias("FacilityMaster", "f"); criteria.CreateAlias("MaintainPlan", "m"); criteria.Add(Expression.Or(Expression.And(Expression.IsNotNull("NextWarnDate"), Expression.Le("NextWarnDate", DateTime.Now)), Expression.And(Expression.Eq("m.Type",FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_FREQUENCY), Expression.And(Expression.IsNotNull("f.MaintainTypePeriod"), Expression.LeProperty("NextWarnQty", "f.MaintainTypePeriod"))))); criteria.Add(Expression.In("f.Status", new string[] { FacilityConstants.CODE_MASTER_FACILITY_STATUS_AVAILABLE, FacilityConstants.CODE_MASTER_FACILITY_STATUS_FIX, FacilityConstants.CODE_MASTER_FACILITY_STATUS_INSPECT, FacilityConstants.CODE_MASTER_FACILITY_STATUS_MAINTAIN })); IList<FacilityMaintainPlan> facilityMaintainPlanList = criteriaMgrE.FindAll<FacilityMaintainPlan>(criteria); #endregion #region 生成ISI任务 User monitorUser = userMgrE.LoadUser(BusinessConstants.SYSTEM_USER_MONITOR); if (facilityMaintainPlanList != null && facilityMaintainPlanList.Count > 0) { foreach (FacilityMaintainPlan facilityPlan in facilityMaintainPlanList) { #region 生成ISI任务 DateTime maintainDate = DateTime.Now; if (facilityPlan.MaintainPlan.Type != FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_FREQUENCY) { maintainDate = facilityPlan.NextMaintainDate.Value; } TaskMstr task = new TaskMstr(); task.Subject = "设施代码:" + facilityPlan.FacilityMaster.FCID + ",资产编号:" + facilityPlan.FacilityMaster.AssetNo + ",参考号:" + facilityPlan.FacilityMaster.RefenceCode + ",需要进行:" + facilityPlan.MaintainPlan.Description; task.Priority = BusinessConstants.CODE_MASTER_ORDER_PRIORITY_VALUE_NORMAL; task.Desc1 = "设施代码:" + facilityPlan.FacilityMaster.FCID + ",资产编号:" + facilityPlan.FacilityMaster.AssetNo + ",设施名称:" + facilityPlan.FacilityMaster.Name + ",参考号:" + facilityPlan.FacilityMaster.RefenceCode + ",需要进行:" + facilityPlan.MaintainPlan.Description + ",日期:" + maintainDate.ToShortDateString(); task.IsAutoRelease = true; task.Desc2 = facilityPlan.FacilityMaster.FCID; //设施代码,给保养关闭任务用 task.ExtNo = facilityPlan.MaintainPlan.Code; //策略代码,给附件用的 task.RefNo = facilityPlan.FacilityMaster.FCID; //设施代码,后面修改后给保养关闭用的 #region 写死的 task.TaskSubType = taskSubTypeMgrE.LoadTaskSubType("SSGL"); task.UserName = monitorUser.Name; task.Email = monitorUser.Email; task.MobilePhone = monitorUser.MobliePhone; task.TaskAddress = monitorUser.Address; task.Type = ISIConstants.ISI_TASK_TYPE_PLAN; #endregion #region 跟踪信息 if (facilityPlan.MaintainPlan.Type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_FREQUENCY) { task.PlanStartDate = DateTime.Now; task.PlanCompleteDate = DateTime.Now.AddDays(1); } else { task.PlanStartDate = facilityPlan.NextMaintainDate.Value; task.PlanCompleteDate = facilityPlan.NextMaintainDate.Value.AddHours(facilityPlan.MaintainPlan.Period.HasValue ? facilityPlan.MaintainPlan.Period.Value : 0); } #endregion #region 需要分配人的话 task.AssignStartUser = facilityPlan.MaintainPlan.StartUpUser; task.AssignStartUserNm = userSubscriptionMgrE.GetUserName(task.StartedUser); task.TaskAddress = facilityPlan.FacilityMaster.ChargeSite; #endregion taskMgrE.CreateTask(task, monitorUser); taskMgrE.AssignTask(task.Code, task.BackYards, task.TaskSubTypeCode, new string[] { task.AssignStartUser }, task.PlanStartDate.Value, task.PlanCompleteDate.Value, task.Desc2, task.ExpectedResults, monitorUser); // taskMgrE.ConfirmTask(task.Code, monitorUser); #endregion #region 更新下次时间、数量 if (facilityPlan.MaintainPlan.Type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_FREQUENCY) { facilityPlan.NextMaintainQty = facilityPlan.NextMaintainQty + facilityPlan.MaintainPlan.TypePeriod.Value; facilityPlan.NextWarnQty = facilityPlan.NextWarnQty + facilityPlan.MaintainPlan.TypePeriod.Value; } else if (facilityPlan.MaintainPlan.Type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_ONCE) { facilityPlan.NextMaintainDate = null; facilityPlan.NextWarnDate = null; } else { #region 现在周期都维护 if (facilityPlan.MaintainPlan.Type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_MINUTE) { facilityPlan.NextMaintainDate = facilityPlan.NextMaintainDate.Value.AddMinutes(facilityPlan.MaintainPlan.TypePeriod.Value); facilityPlan.NextWarnDate = facilityPlan.NextWarnDate.Value.AddMinutes(facilityPlan.MaintainPlan.TypePeriod.Value); } else if (facilityPlan.MaintainPlan.Type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_HOUR) { facilityPlan.NextMaintainDate = facilityPlan.NextMaintainDate.Value.AddHours(facilityPlan.MaintainPlan.TypePeriod.Value); facilityPlan.NextWarnDate = facilityPlan.NextWarnDate.Value.AddHours(facilityPlan.MaintainPlan.TypePeriod.Value); } else if (facilityPlan.MaintainPlan.Type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_DAY) { facilityPlan.NextMaintainDate = facilityPlan.NextMaintainDate.Value.AddDays(facilityPlan.MaintainPlan.TypePeriod.Value); facilityPlan.NextWarnDate = facilityPlan.NextWarnDate.Value.AddDays(facilityPlan.MaintainPlan.TypePeriod.Value); } else if (facilityPlan.MaintainPlan.Type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_WEEK) { facilityPlan.NextMaintainDate = facilityPlan.NextMaintainDate.Value.AddDays(7 * facilityPlan.MaintainPlan.TypePeriod.Value); facilityPlan.NextWarnDate = facilityPlan.NextWarnDate.Value.AddDays(7 * facilityPlan.MaintainPlan.TypePeriod.Value); } else if (facilityPlan.MaintainPlan.Type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_MONTH) { facilityPlan.NextMaintainDate = facilityPlan.NextMaintainDate.Value.AddMonths(facilityPlan.MaintainPlan.TypePeriod.Value); facilityPlan.NextWarnDate = facilityPlan.NextWarnDate.Value.AddMonths(facilityPlan.MaintainPlan.TypePeriod.Value); } else if (facilityPlan.MaintainPlan.Type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_YEAR) { facilityPlan.NextMaintainDate = facilityPlan.NextMaintainDate.Value.AddYears(facilityPlan.MaintainPlan.TypePeriod.Value); facilityPlan.NextWarnDate = facilityPlan.NextWarnDate.Value.AddYears(facilityPlan.MaintainPlan.TypePeriod.Value); } #endregion } facilityMaintainPlanMgrE.UpdateFacilityMaintainPlan(facilityPlan, false); #endregion } } #endregion }