public void UpdateFacilityMaintainPlan(FacilityMaintainPlan facilityMaintainPlan, bool isCalc)
        {
            FacilityMaintainPlan oldFacilityMaintainPlan = this.LoadFacilityMaintainPlan(facilityMaintainPlan.Id);
            if (isCalc)
            {

                string type = oldFacilityMaintainPlan.MaintainPlan.Type;
                int interval = oldFacilityMaintainPlan.MaintainPlan.TypePeriod.HasValue ? oldFacilityMaintainPlan.MaintainPlan.TypePeriod.Value : 0;
                int leadTime = oldFacilityMaintainPlan.MaintainPlan.LeadTime.HasValue ? oldFacilityMaintainPlan.MaintainPlan.LeadTime.Value : 0;

                if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_FREQUENCY)
                {
                    oldFacilityMaintainPlan.StartQty = facilityMaintainPlan.StartQty;
                    oldFacilityMaintainPlan.NextMaintainQty = oldFacilityMaintainPlan.StartQty + interval;
                    oldFacilityMaintainPlan.NextWarnQty = oldFacilityMaintainPlan.NextMaintainQty - leadTime;
                }
                else
                {
                    #region 计算下次保养时间和下次提醒时间
                    oldFacilityMaintainPlan.StartDate = facilityMaintainPlan.StartDate;
                    DateTime startDate = oldFacilityMaintainPlan.StartDate.Value;
                    if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_MINUTE)
                    {
                        oldFacilityMaintainPlan.NextMaintainDate = startDate.AddMinutes(interval);
                    }
                    else if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_HOUR)
                    {
                        oldFacilityMaintainPlan.NextMaintainDate = startDate.AddHours(interval);
                    }
                    else if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_DAY)
                    {
                        oldFacilityMaintainPlan.NextMaintainDate = startDate.AddDays(interval);
                    }
                    else if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_WEEK)
                    {
                        oldFacilityMaintainPlan.NextMaintainDate = startDate.AddDays(7 * interval);
                    }
                    else if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_MONTH)
                    {
                        oldFacilityMaintainPlan.NextMaintainDate = startDate.AddMonths(interval);
                    }
                    else if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_YEAR)
                    {
                        oldFacilityMaintainPlan.NextMaintainDate = startDate.AddYears(interval);
                    }
                    else
                    {
                        oldFacilityMaintainPlan.NextMaintainDate = startDate;
                    }
                    oldFacilityMaintainPlan.NextWarnDate = oldFacilityMaintainPlan.NextMaintainDate.Value.AddDays(-leadTime);
                    #endregion
                }
            }
            base.UpdateFacilityMaintainPlan(oldFacilityMaintainPlan);
        }
        public override void CreateFacilityMaintainPlan(FacilityMaintainPlan facilityMaintainPlan)
        {
            string type = facilityMaintainPlan.MaintainPlan.Type;
            int interval = facilityMaintainPlan.MaintainPlan.TypePeriod.HasValue ? facilityMaintainPlan.MaintainPlan.TypePeriod.Value : 0;
            int leadTime = facilityMaintainPlan.MaintainPlan.LeadTime.HasValue ? facilityMaintainPlan.MaintainPlan.LeadTime.Value : 0;

            if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_FREQUENCY)
            {
                facilityMaintainPlan.NextMaintainQty = facilityMaintainPlan.StartQty + interval;
                facilityMaintainPlan.NextWarnQty = facilityMaintainPlan.NextMaintainQty - leadTime;
            }
            else
            {
                #region 按周期的计算下次保养时间和下次提醒时间

                DateTime startDate = facilityMaintainPlan.StartDate.Value;
                if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_MINUTE)
                {
                    facilityMaintainPlan.NextMaintainDate = startDate.AddMinutes(interval);
                }
                else if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_HOUR)
                {
                    facilityMaintainPlan.NextMaintainDate = startDate.AddHours(interval);
                }
                else if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_DAY)
                {
                    facilityMaintainPlan.NextMaintainDate = startDate.AddDays(interval);
                }
                else if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_WEEK)
                {
                    facilityMaintainPlan.NextMaintainDate = startDate.AddDays(7 * interval);
                }
                else if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_MONTH)
                {
                    facilityMaintainPlan.NextMaintainDate = startDate.AddMonths(interval);
                }
                else if (type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_YEAR)
                {
                    facilityMaintainPlan.NextMaintainDate = startDate.AddYears(interval);
                }
                else
                {
                    facilityMaintainPlan.NextMaintainDate = startDate;
                }
                facilityMaintainPlan.NextWarnDate = facilityMaintainPlan.NextMaintainDate.Value.AddDays(-leadTime);
                #endregion
            }
            base.CreateFacilityMaintainPlan(facilityMaintainPlan);
        }
 public override void UpdateFacilityMaintainPlan(FacilityMaintainPlan facilityMaintainPlan)
 {
     UpdateFacilityMaintainPlan(facilityMaintainPlan, true);
 }
Example #4
0
        public IList<FacilityMaintainPlan> ReadFacilityMaintainPlanFromxls(Stream inputStream, User user)
        {
            if (inputStream.Length == 0)
            {
                throw new BusinessErrorException("Import.Stream.Empty");
            }
            IWorkbook workbook = new HSSFWorkbook(inputStream);

            ISheet sheet = workbook.GetSheetAt(0);
            IEnumerator rows = sheet.GetRowEnumerator();

            ImportHelper.JumpRows(rows, 11);

            #region 列定义
            int colFCID = 1;//设施代码
            int colAssetNo = 3; //固定资产代码
            int colMaintainPlanCode = 4;//预防策略代码
            int colStartDate = 5;//日期
            #endregion

            #region 把数据都查出来
            IList<FacilityMaster> facilityMasterList = criteriaMgrE.FindAll<FacilityMaster>();
            IList<MaintainPlan> maintainPlanList = criteriaMgrE.FindAll<MaintainPlan>();
            IList<FacilityMaintainPlan> facilityMaintainPlanList = new List<FacilityMaintainPlan>();
            #endregion


            DateTime dateTimeNow = DateTime.Now;
            while (rows.MoveNext())
            {
                IRow row = (HSSFRow)rows.Current;
                if (!this.CheckValidDataRow(row, 1, 4))
                {
                    break;//边界
                }

                #region 读取数据
                #region 读取设施代码
                string fcId = GetCellStringValue(row.GetCell(colFCID)) == null ? string.Empty : GetCellStringValue(row.GetCell(colFCID));
                #endregion

                #region 读取资产编号
                string assetNo = GetCellStringValue(row.GetCell(colAssetNo)) == null ? string.Empty : GetCellStringValue(row.GetCell(colAssetNo));
                #endregion

                #region 判断
                if (string.IsNullOrEmpty(fcId) && string.IsNullOrEmpty(assetNo))
                {
                    throw new BusinessErrorException("Facility.Import.FCIDOrAssetNoEmpty", (row.RowNum + 1).ToString());
                }
                FacilityMaster facilityMaster = null;

                if (!string.IsNullOrEmpty(assetNo))
                {
                    facilityMaster = facilityMasterList.Where(p => p.AssetNo == assetNo).FirstOrDefault();
                }
                if (facilityMaster == null)
                {
                    facilityMaster = facilityMasterList.Where(p => p.FCID == fcId).FirstOrDefault();
                }
                if (facilityMaster == null)
                {
                    throw new BusinessErrorException("Facility.Import.FacilityMasterNotExists", (row.RowNum + 1).ToString(), fcId.ToString(), assetNo.ToString());
                }

                #endregion


                #region 读取预防策略代码
                string maintainPlanCode = row.GetCell(colMaintainPlanCode) != null ? row.GetCell(colMaintainPlanCode).StringCellValue : string.Empty;
                if (string.IsNullOrEmpty(maintainPlanCode))
                {
                    throw new BusinessErrorException("Import.Read.Error.Empty", (row.RowNum + 1).ToString(), colMaintainPlanCode.ToString());
                }
                #endregion

                #region 判断
                MaintainPlan maintainPlan = maintainPlanList.Where(p => p.Code == maintainPlanCode && p.Type == FacilityConstants.CODE_MASTER_FACILITY_MAINTAIN_TYPE_ONCE).FirstOrDefault();
                if (maintainPlan == null)
                {
                    throw new BusinessErrorException("Facility.Import.MaintainPlanNotExists", (row.RowNum + 1).ToString(), fcId.ToString(), assetNo.ToString());
                }
                #endregion

                #region 读取开始日期
                DateTime startDate = row.GetCell(colStartDate) != null ? row.GetCell(colStartDate).DateCellValue : DateTime.Now.Date;
                #endregion
                #endregion

                #region 填充数据
                FacilityMaintainPlan facilityMaintainPlan = new FacilityMaintainPlan();
                facilityMaintainPlan.FacilityMaster = facilityMaster;
                facilityMaintainPlan.MaintainPlan = maintainPlan;
                facilityMaintainPlan.StartDate = startDate;
                facilityMaintainPlanList.Add(facilityMaintainPlan);
                #endregion

            }

            return facilityMaintainPlanList;
        }