/// <summary> /// 新增保养信息 /// </summary> /// <param name="maintenanceInfo">保养信息</param> public void Add(MaintenanceInfo maintenanceInfo) { try { maintenanceInfo.ItemSummary = GetItemSummary(maintenanceInfo.Items); if (maintenanceInfo.NextDate.HasValue) { MaintenanceInfo nextInfo = CreateNextMaintenance(maintenanceInfo); using (ClassLibrary.Transaction.TransactionScope scope = new ClassLibrary.Transaction.TransactionScope()) { maintenance.Add(maintenanceInfo); maintenance.Add(nextInfo); scope.Complete(); } } else { maintenance.Add(maintenanceInfo); } } catch (Exception ex) { BusinessExceptionHandler.HandlerException("新增保养信息失败!", ex); } }
/// <summary> /// 新增保养信息 /// </summary> /// <param name="maintenanceInfo">保养信息对象</param> public void Add(MaintenanceInfo maintenanceInfo) { IDbTransaction transaction = null; string commandText = "INSERT INTO Maintenance(Id,CarId,Date,ItemSummary,Mileage,Amount,LoseSales," + "PrevDate,PrevMileage,NextDate,NextMileage,EstimateDate,EstimateMileage,Worker," + "Type,Status,Creator,Operator,CreateDate,UpdateDate,ValidVALUES(@Id,@CarId,@Date,@ItemSummary," + "@Mileage,@Amount,@LoseSales,@PrevDate,@PrevMileage,@NextDate,@NextMileage," + "@EstimateDate,@EstimateMileage,@Worker,@Type,@Status,@Creator,@Operator," + "@CreateDate,@UpdateDate,@Valid)"; try { transaction = base.BeginTransaction(CarManageConfig.Instance.ConnectionString); base.Execute(commandText, transaction: transaction, param: maintenanceInfo); commandText = "INSERT INTO MaintenanceItem(Id,MaintenanceId,CarId,ItemName,ItemCode,Canceled)" + " VALUES(@Id,@MaintenanceId,@CarId,@ItemName,@ItemCode,@Canceled)"; base.Execute(commandText, transaction: transaction, param: maintenanceInfo.Items); base.Commit(transaction); } catch (Exception ex) { Rollback(transaction); DataAccessExceptionHandler.HandlerException("新增保养信息失败!", ex); } finally { CloseConnection(transaction.Connection); } }
/// <summary> /// 更新保养信息 /// </summary> /// <param name="maintenanceInfo">保养信息对象</param> public void Update(MaintenanceInfo maintenanceInfo) { IDbTransaction transaction = null; string commandText = "UPDATE Maintenance SET " + "CarId=@CarId,Date=@Date,ItemSummary=@ItemSummary,Mileage=@Mileage,Amount=@Amount,LoseSales=@LoseSales," + "PrevDate=@PrevDate,PrevMileage=@PrevMileage,NextDate=@NextDate,NextMileage=@NextMileage," + "EstimateDate=@EstimateDate,EstimateMileage=@EstimateMileage,Worker=@Worker,Type=@Type," + "Status=@Status,Creator=@Creator,Operator=@Operator,CreateDate=@CreateDate," + "UpdateDate=@UpdateDate,Valid=@Valid WHERE Id=@Id"; try { transaction = base.BeginTransaction(CarManageConfig.Instance.ConnectionString); base.Execute(commandText, transaction: transaction, param: maintenanceInfo); commandText = "DELETE FROM MaintenanceItem WHERE MaintenanceId=@MaintenanceId"; base.Execute(commandText, transaction: transaction, param: new { MaintenanceId = maintenanceInfo.Id }); commandText = "INSERT INTO MaintenanceItem(Id,MaintenanceId,CarId,ItemName,ItemCode,Canceled)" + " VALUES(@Id,@MaintenanceId,@CarId,@ItemName,@ItemCode,@Canceled,@Valid)"; base.Execute(commandText, transaction: transaction, param: maintenanceInfo.Items); base.Commit(transaction); } catch (Exception ex) { Rollback(transaction); DataAccessExceptionHandler.HandlerException("更新保养信息失败!", ex); } finally { CloseConnection(transaction.Connection); } }
/// <summary> /// 获得所有保养信息集合 /// </summary> /// <returns>保养信息集合</returns> public List<MaintenanceInfo> Search(MaintenanceInfo queryInfo) { IDbConnection connection = null; List<MaintenanceInfo> maintenanceList = new List<MaintenanceInfo>(); try { string field = "*"; string table = "Maintenance"; string order = "ORDER BY Id"; StringBuilder filter = new StringBuilder(); #region 查询条件 #endregion string filterText = string.Empty; if (filter.Length > 0) { filterText = filter.ToString().TrimStart(' ').Remove(0, 3).Insert(0, " WHERE "); } string commandText = string.Format("SELECT COUNT(*) FROM Maintenance {0}", filterText); connection = base.CreateConnection(CarManageConfig.Instance.ConnectionString); queryInfo.TotalCount = base.ExecuteObject<int>(commandText: commandText, connection: connection, param: queryInfo); if (queryInfo.TotalCount.Equals(0)) return maintenanceList; int pageCount = queryInfo.TotalCount / queryInfo.PageSize + 1; if (queryInfo.TotalCount % queryInfo.PageSize != 0) pageCount++; int startIndex = queryInfo.PageIndex * queryInfo.PageSize; commandText = string.Format("SELECT {0} FROM {1} WHERE {2} ORDER BY {3} LIMIT {4},{5}", field, table, filterText, order, startIndex, queryInfo.PageSize); maintenanceList = base.Query<MaintenanceInfo>(commandText, connection, param: queryInfo).ToList(); } catch (Exception ex) { DataAccessExceptionHandler.HandlerException( "查询保养信息失败!", ex); } finally { CloseConnection(connection); } return maintenanceList; }
public void Save() { try { MaintenanceInfo maintenanceInfo = new MaintenanceInfo(); if (string.IsNullOrEmpty(MaintenanceId)) { maintenanceInfo.Id = Guid.NewGuid().ToString(); maintenanceInfo.CreateDate = DateTime.Now; maintenanceInfo.Creator = CarManageConfig.Instance.UserData.UserName; } else { maintenanceInfo = maintenance.Load(MaintenanceId); } maintenanceInfo.CarId = CarId; maintenanceInfo.Date = ConvertUtil.ToNullableDateTime(dtpDate.Text); maintenanceInfo.Mileage = ConvertUtil.ToNullableInt32(txtMileage.Text); maintenanceInfo.Amount = ConvertUtil.ToNullableDecimal(txtAmount.Text); maintenanceInfo.LoseSales = ConvertUtil.ToNullableDecimal(CommonUtil.FilterInput(txtLoseSales.Text)); maintenanceInfo.PrevDate = ConvertUtil.ToNullableDateTime(dtpPrevDate.Text); maintenanceInfo.PrevMileage = ConvertUtil.ToNullableInt32(CommonUtil.FilterInput(txtPrevMileage.Text)); maintenanceInfo.Status = ConvertUtil.ToEnum<MaintenanceStatus>(cbxStatus.SelectedValue); if (maintenanceInfo.Status.Equals(MaintenanceStatus.已保养)) { maintenanceInfo.NextDate = maintenanceInfo.EstimateDate = ConvertUtil.ToNullableDateTime(dtpNextDate.Text); maintenanceInfo.NextMileage = maintenanceInfo.EstimateMileage = ConvertUtil.ToNullableInt32(CommonUtil.FilterInput(txtNextMileage.Text)); foreach (ListControlItem item in chklstNextMaintenance.SelectedItem) { maintenanceInfo.NextMaintenanceItems.Add(new MaintenanceItemInfo() { Id = Guid.NewGuid().ToString(), MaintenanceId = maintenanceInfo.Id, CarId = this.CarId, ItemName = item.Text, ItemCode = item.Value, Canceled = false }); } } maintenanceInfo.Operator = CarManageConfig.Instance.UserData.UserName; maintenanceInfo.UpdateDate = DateTime.Now; maintenanceInfo.Valid = true; if (string.IsNullOrEmpty(MaintenanceId)) { maintenance.Add(maintenanceInfo); } else { maintenance.Update(maintenanceInfo); } } catch (Exception ex) { UserInterfaceExceptionHandler.HandlerException("保存保养信息失败!", ref ex); } }
/// <summary> /// 生成下次保养记录 /// </summary> /// <param name="maintenanceInfo"></param> /// <returns></returns> private MaintenanceInfo CreateNextMaintenance(MaintenanceInfo maintenanceInfo) { MaintenanceInfo nextInfo = new MaintenanceInfo(); nextInfo.Id = Guid.NewGuid().ToString(); nextInfo.PrevId = maintenanceInfo.Id; nextInfo.CarId = maintenanceInfo.CarId; nextInfo.PrevDate = maintenanceInfo.Date; nextInfo.PrevMileage = maintenanceInfo.Mileage; nextInfo.ItemSummary = GetItemSummary(nextInfo.Items); nextInfo.Status = MaintenanceStatus.待保养; nextInfo.EstimateDate = maintenanceInfo.NextDate; nextInfo.EstimateMileage = maintenanceInfo.NextMileage; nextInfo.CreateDate = DateTime.Now; nextInfo.Creator = maintenanceInfo.Creator; nextInfo.Operator = maintenanceInfo.Operator; nextInfo.UpdateDate = DateTime.Now; nextInfo.Valid = true; foreach (MaintenanceItemInfo itemInfo in maintenanceInfo.NextMaintenanceItems) { MaintenanceItemInfo nextItemInfo = CommonUtil.DeepClone<MaintenanceItemInfo>(itemInfo); nextItemInfo.MaintenanceId = nextInfo.Id; nextInfo.Items.Add(nextItemInfo); } return nextInfo; }
/// <summary> /// 查询保养信息 /// </summary> /// <returns>保养信息集合</returns> public List<MaintenanceInfo> Search(MaintenanceInfo queryInfo) { List<MaintenanceInfo> maintenanceList = new List<MaintenanceInfo>(); try { maintenanceList = maintenance.Search(queryInfo); } catch (Exception ex) { BusinessExceptionHandler.HandlerException("查询保养信息失败!", ex); } return maintenanceList; }