示例#1
0
        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
        }
示例#2
0
        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
        }