Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсак_завершенный.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
142.3 Кб
Скачать
  1. Прототип информационно – аналитической системы mcControl для поддержки процесса техобслуживания и ремонта дискретного производства малого производственного предприятия (тОиР).

  1. Класс «Repository» управляющий объектами в базе данных

using System;

using System.Collections.Generic;

using System.Linq;

using BDE.Client.Shared.Common.Logic.Persistence;

using BDE.Shared.Common.Domain;

using BDE.Shared.Utils;

using Microsoft.Practices.Unity;

namespace BDE.Client.Shared.Common.Logic

{

public interface IRepository<T> : IReadRepository<T>, IAsyncDomainStore<T>

where T : DomainObject

{

T CreateNew();

}

/// <summary>

/// Caching repository wrapping <see cref="IAsyncDomainStore{T}" />

/// </summary>

public class Repository<T>: ReadOnlyBaseRepository<T>, IRepository<T>

where T : DomainObject

{

[Dependency]

public IAsyncDomainStore<T> WrappedStore

{

private get { return (IAsyncDomainStore<T>)Store; }

set { Store = value; }

}

public virtual T CreateNew()

{

return ObjectCloneHelper.CreateProxy<T>();

}

#region IDomainPersistenceStore<T> Members

#region Async save methods

public virtual IAsyncResult BeginSaveObject(T obj, AsyncCallback saveCompletedCallback, object state)

{

T clone = ObjectCloneHelper.CloneReal(obj);

clone.TrimStringProperties();

return WrappedStore.BeginSaveObject(clone, saveCompletedCallback, state);

}

public T EndSaveObject(IAsyncResult asyncResult)

{

T result = (T)ObjectCloneHelper.CloneProxy(WrappedStore.EndSaveObject(asyncResult));

var cachedResult = AddToCache(result);

OnSaveObjectCompleted(cachedResult);

return cachedResult;

}

protected virtual void OnSaveObjectCompleted(T obj)

{

}

/// <summary>

/// Begins asynchronous group save operation on set of object of type <typeparamref name="T" />

/// </summary>

public virtual IAsyncResult BeginSaveObjects(IEnumerable<T> objs, AsyncCallback saveCompletedCallback, object state)

{

List<T> realObjs = objs

.Select(obj => (T)ObjectCloneHelper.CloneReal(obj))

.Do(obj => obj.TrimStringProperties())

.ToList();

return WrappedStore.BeginSaveObjects(realObjs, saveCompletedCallback, state);

}

/// <summary>

/// Ends initiated asynchronous group save operation

/// </summary>

public IList<T> EndSaveObjects(IAsyncResult asyncResult)

{

IList<T> originalCollection = WrappedStore.EndSaveObjects(asyncResult);

foreach(T obj in originalCollection)

{

OnSaveObjectCompleted(obj);

}

return originalCollection.Select(obj => (T)ObjectCloneHelper.CloneProxy(obj)).Select(AddToCache).ToList();

}

#endregion

#region Async delete methods

public IAsyncResult BeginDeleteObject(ObjectKey key, AsyncCallback deleteCompletedCallback, object state)

{

return WrappedStore.BeginDeleteObject(key, deleteCompletedCallback, state);

}

public ObjectKey EndDeleteObject(IAsyncResult asyncResult)

{

ObjectKey result = WrappedStore.EndDeleteObject(asyncResult);

RemoveFromCache(result);

return result;

}

public IAsyncResult BeginDeleteObjects(IEnumerable<ObjectKey> keys, AsyncCallback saveCompletedCallback, object state)

{

return WrappedStore.BeginDeleteObjects(keys, saveCompletedCallback, state);

}

public IList<ObjectKey> EndDeleteObjects(IAsyncResult asyncResult)

{

IList<ObjectKey> result = WrappedStore.EndDeleteObjects(asyncResult);

foreach (var key in result)

{

RemoveFromCache(key);

}

return result;

}

public IAsyncResult BeginDeleteObjectsByParamInfo(ParamInfoBase paramInfo, AsyncCallback deleteCompliteCallback, object state)

{

return WrappedStore.BeginDeleteObjectsByParamInfo(paramInfo, deleteCompliteCallback, state);

}

public IList<ObjectKey> EndDeleteObjectsByParamInfo(IAsyncResult asyncResult)

{

return WrappedStore.EndDeleteObjectsByParamInfo(asyncResult);

}

#endregion

#endregion

}

}

  1. Основное окно приложения, описанное на языке разметки xaml.

<Window x:Class="BDE.Client.WPF.PROtool.View.MainWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="{Binding Title}"

Icon="/BDE.Client.WPF.PROtool.View;component/Resources/Images/PROtoolIcon.png"

xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"

xmlns:helpers="clr-namespace:BDE.Client.WPF.PROtool.View.Helpers"

xmlns:viewModelMapping="http://schemas.dmdevelopment.ru/view/viewModelMapping/"

xmlns:viewBehavior="http://schemas.dmdevelopment.ru/view/behavior/"

xmlns:controls="http://schemas.dmdevelopment.ru/controls/"

xmlns:view="http://schemas.dmdevelopment.ru/view"

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

xmlns:controlsConvert="http://schemas.dmdevelopment.ru/controls/convert/"

>

<Window.Resources>

<helpers:ResourceHelper x:Key="ResourceHelper" />

<view:ViewModelContextTabConverter x:Key="ViewModelContextTabConverter" />

<controlsConvert:EnumerableToCollectionView x:Key="EnumerableToCollectionViewConverter" />

<view:RibbonButtonVisibilityConverter x:Key="RibbonButtonVisibilityConverter" />

</Window.Resources>

<telerik:RadBusyIndicator IsBusy="{Binding IsAsyncOperationInProgress}" BusyContent="{Binding Resources.MainView_ServerOperationInProgressText, Source={StaticResource ResourceHelper}}">

<DockPanel>

<controls:ContextedRibbonBar x:Name="Ribbon" ApplicationButtonVisibility="Collapsed"

CollapseThresholdSize="Empty"

Context="{Binding TabViewModelManager.SelectedViewModel, Converter={StaticResource ViewModelContextTabConverter}}"

TitleBarVisibility="Collapsed" DockPanel.Dock="Top">

<controls:ContextedRibbonBar.TabStripAdditionalContent>

<StackPanel Orientation="Horizontal">

<TextBlock Margin="0,0,4,0" Text="{Binding CurrentUserName}" VerticalAlignment="Center" />

<telerik:RadRibbonButton Content="{Binding Resources.MainView_LogoutText, Source={StaticResource ResourceHelper}}"

Command="{Binding LogoutCommand}" VerticalAlignment="Center"/>

</StackPanel>

</controls:ContextedRibbonBar.TabStripAdditionalContent>

<telerik:RadRibbonTab Header="{Binding Resources.MainView_MasterDataTabHeader, Source={StaticResource ResourceHelper}}">

<telerik:RadRibbonGroup Header="{Binding Resources.MainView_DataGroupHeader, Source={StaticResource ResourceHelper}}">

<telerik:RadRibbonButton Command="{Binding OpenCustomersGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_CustomersButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/CustomerIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenDocumentsGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_DocumentsButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/DocumentIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenToolsGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ToolsButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ToolIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenModelsGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ModelsButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ModelIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenToolMachinesGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ToolMachinesButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ToolMachineIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenMaintenancePlansGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_MaintenancePlansButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/MaintenancePlanIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenRepairsGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_RepairsButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/RepairIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenRepairGroundGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_RepairGroundsButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/RepairGroundIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenToolStatusGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ToolStatusesButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ToolStatusIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenToolmakerGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ToolmakersButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ToolmakerIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenItemGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ItemsButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ItemIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenPeripheryGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_PeripheriesButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/PeripheryIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<telerik:RadRibbonButton Command="{Binding OpenToolTypeGridTabCommand}" Size="Large" Text="{Binding Resources.MainView_ToolTypesButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.WPF.PROtool.View;component/Resources/Images/ToolTypeIcon.png"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.MasterDataRead' }" />

<i:Interaction.Behaviors>

<viewBehavior:RibbonGroupVisibilityBehavior />

</i:Interaction.Behaviors>

</telerik:RadRibbonGroup>

<telerik:RadRibbonGroup Header="{Binding Resources.MainView_HelpGroupHeader, Source={StaticResource ResourceHelper}}">

<!--<telerik:RadRibbonButton Command="{Binding OpenSystemInfoTabCommand}" Size="Large" Text="{Binding Resources.MainView_SystemInfoButtonText, Source={StaticResource ResourceHelper}}"

Visibility ="{Binding Converter={StaticResource RibbonButtonVisibilityConverter}, ConverterParameter ='Common.Administration' }"

LargeImage="/BDE.Client.Shared.Common.View;component/Resources/Images/Report2.png"/>-->

<telerik:RadRibbonButton Command="{Binding OpenAboutCommand}" Size="Large" Text="{Binding Resources.MainView_AboutButtonText, Source={StaticResource ResourceHelper}}"

LargeImage="/BDE.Client.Shared.Common.View;component/Resources/Images/Info_001.png"/>

<i:Interaction.Behaviors>

<viewBehavior:RibbonGroupVisibilityBehavior />

</i:Interaction.Behaviors>

</telerik:RadRibbonGroup>

</telerik:RadRibbonTab>

</controls:ContextedRibbonBar>

<telerik:RadTabControl Align="Right" TabStripPlacement="Left" ItemsSource="{Binding TabViewModelManager.ViewModels}"

SelectedItem="{Binding TabViewModelManager.SelectedViewModel, Mode=TwoWay}" TabOrientation="Vertical">

<telerik:RadTabControl.ItemContainerStyle>

<Style TargetType="telerik:RadTabItem">

<Setter Property="ContentTemplate">

<Setter.Value>

<DataTemplate>

<viewModelMapping:ViewModelPresenter ViewModel="{Binding}" />

</DataTemplate>

</Setter.Value>

</Setter>

<Setter Property="HeaderTemplate">

<Setter.Value>

<DataTemplate>

<Grid>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="Auto" />

<ColumnDefinition Width="*" />

</Grid.ColumnDefinitions>

<telerik:RadRibbonButton Command="{Binding CloseTabCommand}"

SmallImage="/BDE.Client.Shared.Common.View;component/Resources/Images/errorMessage.png"

Grid.Column="0" />

<ContentPresenter Content="{Binding Title}" VerticalAlignment="Center" Grid.Column="1" />

</Grid>

</DataTemplate>

</Setter.Value>

</Setter>

<Setter Property="HorizontalContentAlignment" Value="Stretch" />

</Style>

</telerik:RadTabControl.ItemContainerStyle>

</telerik:RadTabControl>

</DockPanel>

</telerik:RadBusyIndicator>

</Window>

  1. Окно входа в программу.

Окно входа в программу (рисунок 1)