Exemplo n.º 1
0
        public int SaveComponent(ComponentInfo info, UserInfo userInfo)
        {
            if (info.ID == 0)
            {
                info.ID = this.componentDao.AddComponent(info);
                if (info.FaultRates.Count == 0)
                {
                    info.FaultRates = FaultRateInfo.GetInitList(info.ID, FaultRateInfo.ObjectType.Component);
                }
                else
                {
                    info.FaultRates.ForEach(faultRate => faultRate.ObjectID = info.ID);
                }
                this.faultRateDao.AddFaultRates(FaultRateInfo.ConvertFaultRateDataTable(info.FaultRates));
            }
            else
            {
                ComponentInfo existingInfo = this.componentDao.GetComponentByID(info.ID);
                existingInfo.FaultRates = this.faultRateDao.GetFaultRateByObject(existingInfo.ID, FaultRateInfo.ObjectType.Component);
                info.FujiClass2.Name    = this.fujiClassDao.GetFujiClass2ByID(info.FujiClass2.ID).Name;
                DataTable dtField = existingInfo.GetChangedFields(info);

                if (dtField.Rows.Count > 0)
                {
                    this.componentDao.UpdateComponent(info);

                    this.faultRateDao.UpdateFaultRates(FaultRateInfo.ConvertFaultRateDataTable(info.FaultRates));
                    // 转换故障率信息
                    if (info.FaultRates.Count != 0 && existingInfo.FaultRates.Count != 0)
                    {
                        dtField.Merge(FaultRateInfo.ConvertAuditDetail(existingInfo.FaultRates, info.FaultRates).ConvertAuditDetailDT(0));
                    }
                    this.auditManager.AddAuditLog(userInfo.ID, ObjectTypes.Component, info.ID, dtField);
                }
            }

            return(info.ID);
        }