Прототип информационно – аналитической системы 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

}

}

 

2. Основное окно приложения, описанное на языке разметки 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 />

                                       <ColumnDefinition />

                                   </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>

 

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

 

 

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

Заключение

В ходе курсового проектирования были сформированы умения и получены навыки разработки программного обеспечения, работы с паттернами проектирования.

Были выполнены все задания курсового проектирования:

– получены навыки работы в программных пакетах Microsoft Visual Studio 2012, Microsoft SQL Server 2012, VisualHG;

– получены навыки работы с некоторыми шаблонами проектирования;

– разработан прототип информационно-аналитической системы;

– оформлена пояснительная записка и документация по курсовому проекту.

Список использованных источников

1 Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес Приемы объектно-ориентированного проектирования. Паттерны проектирования. – СПб: «Питер», 2007. — С. 366. — ISBN 978-5-469-01136-1

2 Стив Макконнелл Совершенный код. — СПб.: Питер, 2005. — С. 896. — ISBN 5-7502-0064-7

3 http://ru.wikipedia.org/

4 http://msdn.microsoft.com/

 


 


Дата добавления: 2020-12-12; просмотров: 38; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!