private void GetRateList(int objectID, FaultRateInfo.ObjectType objectType, Dictionary <int, int> eqptContractCount, Dictionary <int, int> eqptRepairCount, int months, out List <FaultRateInfo> RateList, out List <FaultRateInfo> RateList1) { RateList = new List <FaultRateInfo>(); RateList1 = new List <FaultRateInfo>(); for (int i = 0; i < 120; i++) { int eqptCount = (from eqpt in eqptContractCount where eqpt.Value >= i select eqpt).Count(); int repairCount = (from repair in eqptRepairCount where repair.Value == i select repair).Count(); if (eqptCount > 0 && repairCount > 0) { double rate = Math.Round(repairCount * 100.0 / eqptCount, 2); FaultRateInfo item = new FaultRateInfo(); item.Year = SQLUtil.ConvertInt(i / 12 + 1); item.Month = SQLUtil.ConvertEnum <FaultRateInfo.DateTimeMonth>(i % 12 + 1); item.ObjectID = objectID; item.ObjectTypeID = objectType; item.Rate = rate; if (i < months) { RateList.Add(item); } else { RateList1.Add(item); } } } }
public List <FaultRateInfo> GetForecastRate(int objectID, FaultRateInfo.ObjectType objectType, double slope, double intercept, double slope1, double intercept1, int month = 0) { List <FaultRateInfo> ForecastRate = new List <FaultRateInfo>(); for (int i = 0; i < 120; i++) { FaultRateInfo item = new FaultRateInfo(); item.Year = SQLUtil.ConvertInt(i / 12 + 1); item.Month = SQLUtil.ConvertEnum <FaultRateInfo.DateTimeMonth>(i % 12 + 1); item.ObjectID = objectID; item.ObjectTypeID = objectType; if (i > month) { double rate = Math.Round((((i + 1) * slope1 + intercept1) * 100.0), 2); item.Rate = rate; ForecastRate.Add(item); } else { double rate = Math.Round((((i + 1) * slope + intercept) * 100.0), 2); item.Rate = rate; ForecastRate.Add(item); } } return(ForecastRate); }
public void SaveFujiClass2s(List <FujiClass2Info> infos, FujiClass2Info.SectionType type, UserInfo userInfo) { List <FujiClass2Info> existsInfos = this.QueryFujiClass2sByIDs(infos.Select(info => info.ID).ToList()); DataTable dt = FujiClass2Info.ConvertFujiClass2DataTable(infos); switch (type) { case FujiClass2Info.SectionType.Labour: this.fujiClassDao.UpdateFujiClass2Labour(dt); break; case FujiClass2Info.SectionType.Contract: this.fujiClassDao.UpdateFujiClass2Contract(dt); break; case FujiClass2Info.SectionType.Spare: this.fujiClassDao.UpdateFujiClass2Spare(dt); break; case FujiClass2Info.SectionType.Repair: this.fujiClassDao.UpdateFujiClass2Repair(dt); this.UpdateFaultRates(infos.SelectMany(info => info.Repairs).ToList()); break; } //转换日志信息 infos.Sort(); existsInfos.Sort(); List <AuditHdrInfo> audits = new List <AuditHdrInfo>(); int len = existsInfos.Count; for (int i = 0; i < len; i++) { AuditHdrInfo audit = existsInfos[i].ConvertAudit(infos[i], userInfo); audit.DetailInfo = audit.DetailInfo.Concat(FaultRateInfo.ConvertAuditDetail(existsInfos[i].Repairs, infos[i].Repairs)).ToList(); audits.Add(audit); } DataTable auditDT = audits.ConvertAuditDT(); DataTable auditDetailDT = null; this.auditDao.AddAuditHdr(auditDT); for (int i = 0; i < len; i++) { if (auditDetailDT == null) { auditDetailDT = audits[i].DetailInfo.ConvertAuditDetailDT(SQLUtil.ConvertInt(auditDT.Rows[i]["ID"])); } else { auditDetailDT.Merge(audits[i].DetailInfo.ConvertAuditDetailDT(SQLUtil.ConvertInt(auditDT.Rows[i]["ID"]))); } } this.auditDao.AddAuditDetail(auditDetailDT); }
/// <summary> /// 添加故障率 /// </summary> /// <param name="faultRateInfo">故障率信息</param> public void AddFaultRate(FaultRateInfo faultRateInfo) { sqlStr = "INSERT INTO tblFaultRate(ObjectTypeID , ObjectID , Year , Month , Rate) " + " VALUES(@ObjectTypeID , @ObjectID , @Year , @Month , @Rate) "; using (SqlCommand command = ConnectionUtil.GetCommand(sqlStr)) { command.Parameters.Add("@ObjectTypeID", SqlDbType.Int).Value = faultRateInfo.ObjectTypeID; command.Parameters.Add("@ObjectID", SqlDbType.Int).Value = faultRateInfo.ObjectID; command.Parameters.Add("@Year", SqlDbType.Int).Value = faultRateInfo.Year; command.Parameters.Add("@Month", SqlDbType.Int).Value = faultRateInfo.Month; command.Parameters.Add("@Rate", SqlDbType.Decimal).Value = faultRateInfo.Rate; command.ExecuteScalar(); } }
/// <summary> /// 更新故障率 /// </summary> /// <param name="faultRate">故障率信息</param> public void UpdateFaultRate(FaultRateInfo faultRate) { sqlStr = @"UPDATE tblFaultRate SET Rate = @Rate WHERE ObjectTypeID=@ObjectTypeID AND ObjectID=@ObjectID AND Year=@Year AND Month=@Month "; using (SqlCommand command = ConnectionUtil.GetCommand(sqlStr)) { command.Parameters.Add("@ObjectTypeID", SqlDbType.Int).Value = faultRate.ObjectTypeID; command.Parameters.Add("@ObjectID", SqlDbType.Int).Value = faultRate.ObjectID; command.Parameters.Add("@Year", SqlDbType.Int).Value = faultRate.Year; command.Parameters.Add("@Month", SqlDbType.Int).Value = faultRate.Month; command.Parameters.Add("@Rate", SqlDbType.Decimal).Value = faultRate.Rate; command.ExecuteScalar(); } }
public void UpdateComponents(List <ComponentInfo> infos, UserInfo userInfo) { List <ComponentInfo> existsInfos = this.QueryComponentsByIDs(infos.Select(info => info.ID).ToList()); foreach (ComponentInfo info in infos) { this.componentDao.UpdateComponent(info); } DataTable dt = FaultRateInfo.ConvertFaultRateDataTable(infos.SelectMany(component => component.FaultRates).ToList()); this.faultRateDao.UpdateFaultRates(dt); // 零件转换日志信息 infos.Sort(); existsInfos.Sort(); List <AuditHdrInfo> audits = new List <AuditHdrInfo>(); int len = existsInfos.Count; for (int i = 0; i < len; i++) { AuditHdrInfo audit = existsInfos[i].ConvertAudit(infos[i], userInfo); audit.DetailInfo = audit.DetailInfo.Concat(FaultRateInfo.ConvertAuditDetail(existsInfos[i].FaultRates, infos[i].FaultRates)).ToList(); //if(audit.DetailInfo.Count>0) audits.Add(audit); } DataTable auditDT = audits.ConvertAuditDT(); DataTable auditDetailDT = null; this.auditDao.AddAuditHdr(auditDT); for (int i = 0; i < len; i++) { if (auditDetailDT == null) { auditDetailDT = audits[i].DetailInfo.ConvertAuditDetailDT(SQLUtil.ConvertInt(auditDT.Rows[i]["ID"])); } else { auditDetailDT.Merge(audits[i].DetailInfo.ConvertAuditDetailDT(SQLUtil.ConvertInt(auditDT.Rows[i]["ID"]))); } } this.auditDao.AddAuditDetail(auditDetailDT); }
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); }
public void UpdateFaultRates(List <FaultRateInfo> infos) { DataTable dt = FaultRateInfo.ConvertFaultRateDataTable(infos); this.faultRateDao.UpdateFaultRates(dt); }
public int SaveFujiClass2(FujiClassLink info, UserInfo userInfo, bool isUpdate, int copyID = 0) { List <AuditHdrInfo> audits = new List <AuditHdrInfo>(); AuditHdrInfo audit; if (info.FujiClass2.ID == 0) { if (copyID != 0) { FujiClass2Info copyInfo = this.GetFujiClass2ByID(copyID); copyInfo.FujiClass1 = info.FujiClass2.FujiClass1; copyInfo.Name = info.FujiClass2.Name; copyInfo.Description = info.FujiClass2.Description; info.FujiClass2.ID = this.fujiClassDao.AddFujiClass2(copyInfo); this.fujiClassDao.AddFujiClass2EqpType(info); copyInfo.Repairs.ForEach(rate => rate.ObjectID = info.FujiClass2.ID); this.AddFaultRates(copyInfo.Repairs); if (copyInfo.Components.Count > 0) { foreach (ComponentInfo componentInfo in copyInfo.Components) { componentInfo.ID = 0; componentInfo.FujiClass2.ID = info.FujiClass2.ID; this.componentManager.SaveComponent(componentInfo, userInfo); } } if (copyInfo.Consumables.Count > 0) { foreach (ConsumableInfo consumableInfo in copyInfo.Consumables) { consumableInfo.ID = 0; consumableInfo.FujiClass2.ID = info.FujiClass2.ID; this.consumableDao.AddConsumable(consumableInfo); } } } else { this.fujiClassDao.AddFujiClass2(info.FujiClass2); this.fujiClassDao.AddFujiClass2EqpType(info); info.FujiClass2.Repairs = FaultRateInfo.GetInitList(info.FujiClass2.ID, FaultRateInfo.ObjectType.Repair); this.AddFaultRates(info.FujiClass2.Repairs); } audit = info.ConvertAudit(userInfo); if (audit.DetailInfo.Count > 0) { audits.Add(audit); } } else { FujiClassLink existsInfo = this.GetFujiLinkByClass2ID(info.FujiClass2.ID); if (isUpdate) { info.FujiClass2.CheckEquipmentTypeRelatedFields(); this.fujiClassDao.UpdateFujiClass2(info.FujiClass2); this.UpdateFaultRates(info.FujiClass2.Repairs); audit = existsInfo.FujiClass2.ConvertAudit(info.FujiClass2, userInfo); audit.DetailInfo = audit.DetailInfo.Concat(FaultRateInfo.ConvertAuditDetail(existsInfo.FujiClass2.Repairs, info.FujiClass2.Repairs)).ToList(); if (audit.DetailInfo.Count > 0) { audits.Add(audit); } int componentLen = info.FujiClass2.Components.Count; info.FujiClass2.Components.Sort(); existsInfo.FujiClass2.Components.Sort(); info.FujiClass2.Consumables.Sort(); existsInfo.FujiClass2.Consumables.Sort(); for (int i = 0; i < componentLen; i++) { this.componentDao.UpdateComponent(info.FujiClass2.Components[i]); audit = existsInfo.FujiClass2.Components[i].ConvertAudit(info.FujiClass2.Components[i], userInfo); if (audit.DetailInfo.Count > 0) { audits.Add(audit); } } componentLen = info.FujiClass2.Consumables.Count; for (int i = 0; i < componentLen; i++) { this.consumableDao.UpdateConsumable(info.FujiClass2.Consumables[i]); audit = existsInfo.FujiClass2.Consumables[i].ConvertAudit(info.FujiClass2.Consumables[i], userInfo); if (audit.DetailInfo.Count > 0) { audits.Add(audit); } } } else { this.fujiClassDao.AddFujiClass2EqpType(info); audit = info.ConvertAudit(userInfo); if (audit.DetailInfo.Count > 0) { audits.Add(audit); } } } int len = audits.Count; if (len == 0) { return(info.FujiClass2.ID); } DataTable auditDT = audits.ConvertAuditDT(); DataTable auditDetailDT = null; this.auditDao.AddAuditHdr(auditDT); for (int i = 0; i < len; i++) { if (auditDetailDT == null) { auditDetailDT = audits[i].DetailInfo.ConvertAuditDetailDT(SQLUtil.ConvertInt(auditDT.Rows[i]["ID"])); } else { auditDetailDT.Merge(audits[i].DetailInfo.ConvertAuditDetailDT(SQLUtil.ConvertInt(auditDT.Rows[i]["ID"]))); } } this.auditDao.AddAuditDetail(auditDetailDT); return(info.FujiClass2.ID); }