public override void UpdateFacilityTrans(FacilityTrans facilityTrans)
        {
            if (facilityTrans.TransType == FacilityConstants.CODE_MASTER_FACILITY_TRANSTYPE_MAINTAIN_START || facilityTrans.TransType == FacilityConstants.CODE_MASTER_FACILITY_TRANSTYPE_MAINTAIN_FINISH)
            {
                if (!string.IsNullOrEmpty(facilityTrans.BatchNo))
                {
                    DetachedCriteria criteria = DetachedCriteria.For<FacilityTrans>();
                    criteria.Add(Expression.Eq("BatchNo", facilityTrans.BatchNo));
                    criteria.Add(Expression.Not(Expression.Eq("Id", facilityTrans.Id)));

                    IList<FacilityTrans> facilityTransList = criteriaMgrE.FindAll<FacilityTrans>(criteria);
                    if (facilityTransList != null && facilityTransList.Count > 0)
                    {
                        foreach (FacilityTrans trans in facilityTransList)
                        {

                            trans.StartDate = facilityTrans.StartDate;
                            trans.EndDate = facilityTrans.EndDate;
                            trans.Remark = facilityTrans.Remark;
                            base.UpdateFacilityTrans(trans);

                        }
                    }
                }
            }
            base.UpdateFacilityTrans(facilityTrans);


        }
        public void UpdateFacilityMasterAndCreateFacilityTrans(FacilityMaster facilityMaster, FacilityTrans facilityTrans, string status, string userCode)
        {

            #region 记事务
            facilityTrans.FacilityCategory = facilityMaster.Category;
            facilityTrans.AssetNo = facilityMaster.AssetNo;
            facilityTrans.FacilityName = facilityMaster.Name;
            facilityTransMgrE.CreateFacilityTrans(facilityTrans);
            #endregion

            #region 更新状态
            facilityMaster.Status = status;
            facilityMaster.LastModifyDate = DateTime.Now;
            facilityMaster.LastModifyUser = userCode;
            UpdateFacilityMaster(facilityMaster);
            #endregion

            #region 保养和检测的需要自动关闭对应的ISI任务
            if (facilityTrans.TransType == FacilityConstants.CODE_MASTER_FACILITY_TRANSTYPE_MAINTAIN_FINISH
                || facilityTrans.TransType == FacilityConstants.CODE_MASTER_FACILITY_TRANSTYPE_INSPECT_FINISH)
            {
                DetachedCriteria criteria = DetachedCriteria.For(typeof(TaskMstr));
                criteria.CreateAlias("TaskSubType", "t");
                criteria.Add(Expression.In("Status", new string[] { ISIConstants.CODE_MASTER_ISI_STATUS_VALUE_ASSIGN, ISIConstants.CODE_MASTER_ISI_STATUS_VALUE_INPROCESS }));
                criteria.Add(Expression.Eq("t.Code", "SSGL"));
                criteria.Add(Expression.Eq("Desc2", facilityMaster.FCID));
                //  criteria.Add(Expression.Eq("f.Status", FacilityConstants.CODE_MASTER_FACILITY_STATUS_AVAILABLE));
                IList<TaskMstr> facilityTaskList = criteriaMgrE.FindAll<TaskMstr>(criteria);
                if (facilityTaskList != null && facilityTaskList.Count > 0)
                {
                    User user = userMgrE.LoadUser(userCode);
                    TaskMstr t = facilityTaskList.First(); //只关第一条
                    if (t.Status == ISIConstants.CODE_MASTER_ISI_STATUS_VALUE_ASSIGN)
                    {
                        taskMgrE.ConfirmTask(t.Code, user);
                    }
                    taskMgrE.CompleteTask(t.Code, user);
                    taskMgrE.CloseTask(t.Code, user);
                }
            }
            #endregion
        }
        public override void CreateFacilityMaster(FacilityMaster facilityMaster)
        {
            base.CreateFacilityMaster(facilityMaster);

            #region 记事务

            FacilityTrans facilityTrans = new FacilityTrans();
            facilityTrans.CreateDate = DateTime.Now;
            facilityTrans.CreateUser = facilityMaster.CreateUser;
            facilityTrans.EffDate = DateTime.Now.Date;
            facilityTrans.FCID = facilityMaster.FCID;
            facilityTrans.FromChargePerson = facilityMaster.CurrChargePerson;
            facilityTrans.FromChargePersonName = facilityMaster.CurrChargePersonName;
            facilityTrans.FromOrganization = facilityMaster.ChargeOrganization;
            facilityTrans.FromChargeSite = facilityMaster.ChargeSite;
            facilityTrans.ToChargePerson = facilityMaster.CurrChargePerson;
            facilityTrans.ToChargePersonName = facilityMaster.CurrChargePersonName;
            facilityTrans.ToOrganization = facilityMaster.ChargeOrganization;
            facilityTrans.ToChargeSite = facilityMaster.ChargeSite;
            facilityTrans.TransType = FacilityConstants.CODE_MASTER_FACILITY_TRANSTYPE_CREATE;

            facilityTrans.AssetNo = facilityMaster.AssetNo;
            facilityTrans.FacilityName = facilityMaster.Name;
            facilityTrans.FacilityCategory = facilityMaster.Category;
            facilityTransMgrE.CreateFacilityTrans(facilityTrans);
            #endregion


        }
        public int BatchMaintainFinish(IList<string> fcIdList, string startDate, string endDate, string remark, User user)
        {

            int transId = 0;
            
            if (fcIdList != null && fcIdList.Count > 0)
            {
                DateTime dateTimeNow = DateTime.Now;
                foreach (string fcId in fcIdList)
                {

                    FacilityMaster facilityMaster = this.LoadFacilityMaster(fcId);

                    FacilityTrans facilityTrans = new FacilityTrans();
                    FacilityTrans oldFacilityTrans = this.LoadFacilityMaintain(fcId);
                    CloneHelper.CopyProperty(oldFacilityTrans, facilityTrans);

                    if (!string.IsNullOrEmpty(startDate))
                    {
                        facilityTrans.StartDate = Convert.ToDateTime(startDate);
                    }
                    if (!string.IsNullOrEmpty(endDate))
                    {
                        facilityTrans.EndDate = Convert.ToDateTime(endDate);
                    }

                    facilityTrans.CreateDate = DateTime.Now;
                    facilityTrans.CreateUser = user.Code;
                    facilityTrans.EffDate = DateTime.Now.Date;
                    facilityTrans.Remark = remark;
                    facilityTrans.TransType = FacilityConstants.CODE_MASTER_FACILITY_TRANSTYPE_MAINTAIN_FINISH;

                    facilityTrans.BatchNo = "MF" + dateTimeNow.ToString("yyyyMMddhhmmss");

                    this.UpdateFacilityMasterAndCreateFacilityTrans(facilityMaster, facilityTrans, FacilityConstants.CODE_MASTER_FACILITY_STATUS_AVAILABLE, user.Code);
                    if (transId == 0)
                    {
                        transId = facilityTrans.Id;
                    }
                }
            }
            return transId;
        }
        public void BatchMaintainStart(IList<string> fcidList, User user)
        {
            if (fcidList != null && fcidList.Count > 0)
            {
                DateTime dateTimeNow = DateTime.Now;
                foreach (string fcid in fcidList)
                {
                    FacilityMaster facilityMaster = this.LoadFacilityMaster(fcid);

                    FacilityTrans facilityTrans = new FacilityTrans();
                    facilityTrans.CreateDate = DateTime.Now;
                    facilityTrans.CreateUser = user.Code;
                    facilityTrans.EffDate = DateTime.Now.Date;
                    facilityTrans.FCID = facilityMaster.FCID;
                    facilityTrans.FromChargePerson = facilityMaster.CurrChargePerson;
                    facilityTrans.FromChargePersonName = facilityMaster.CurrChargePersonName;
                    facilityTrans.FromOrganization = facilityMaster.ChargeOrganization;
                    facilityTrans.FromChargeSite = facilityMaster.ChargeSite;
                    facilityTrans.ToChargePerson = facilityMaster.CurrChargePerson;
                    facilityTrans.ToChargePersonName = facilityMaster.CurrChargePersonName;
                    facilityTrans.ToOrganization = facilityMaster.ChargeOrganization;
                    facilityTrans.ToChargeSite = facilityMaster.ChargeSite;
                    facilityTrans.TransType = FacilityConstants.CODE_MASTER_FACILITY_TRANSTYPE_MAINTAIN_START;
                    facilityTrans.BatchNo = "MS" + dateTimeNow.ToString("yyyyMMddhhmmss");
                    //facilityTrans.Remark = remark;

                    this.UpdateFacilityMasterAndCreateFacilityTrans(facilityMaster, facilityTrans, FacilityConstants.CODE_MASTER_FACILITY_STATUS_MAINTAIN, user.Code);
                }
            }
        }