Merge branch 'feature/eni_7.9' of ssh://lager/mnt/ext/git/git_bsmd into feature/eni_7.9

This commit is contained in:
Daniel Schick 2023-02-05 08:09:09 +01:00
commit 2e91da8f3b
10 changed files with 308 additions and 345 deletions

View File

@ -1,4 +1,4 @@
<UserControl x:Class="ENI2.Controls.POListControl"
<UserControl x:Class="ENI2.Controls.MaerskListControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@ -26,13 +26,9 @@
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Label Content="Calendar week" />
<xctk:DoubleUpDown x:Name="doubleUpDownCalendarWeek" VerticalContentAlignment="Center" VerticalAlignment="Center"
HorizontalAlignment="Stretch" Margin="2" Value="01" ValueChanged="doubleUpDownCalendarWeek_ValueChanged"/>
<Label Content="Type" />
<ComboBox x:Name="comboBoxFilterType" Margin="2" SelectionChanged="comboBoxFilterType_SelectionChanged" Width="100" />
<Button x:Name="buttonExcelExport" Margin="2" Click="buttonExcelExport_Click" Content="Export Excel" Width="100" />
<Button x:Name="buttonSaveChanges" Margin="2" Click="buttonSaveChanges_Click" Content="Save changes" Width="100" IsEnabled="False" />
<Button x:Name="buttonImport" Margin="2" Content="Import" Width="70" />
<Button x:Name="buttonExport" Margin="2" Content="Export" Width="70" />
</StackPanel>
<local:ENIDataGrid Grid.Row="1" Margin="2,8,2,2" x:Name="dataGridPOCores" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
SelectionMode="Single" AutoGenerateColumns="False" CellEditEnding="dataGridPOCores_CellEditEnding" CanUserAddRows="False">

View File

@ -18,21 +18,13 @@ using bsmd.database;
namespace ENI2.Controls
{
/// <summary>
/// Interaction logic for POListControl.xaml
/// Interaction logic for MaerskListControl.xaml
/// </summary>
public partial class POListControl : UserControl
public partial class MaerskListControl : UserControl
{
#region Fields
private readonly string[] _comboBoxEntries =
{
"All",
"Maersk BRV/WHV",
"SeaGo BHV",
"SeaGo WHV"
};
private List<MessageCore> searchResult = new List<MessageCore>();
private readonly List<MessageCore> filteredResult = new List<MessageCore>();
@ -40,7 +32,7 @@ namespace ENI2.Controls
#region Construction
public POListControl()
public MaerskListControl()
{
InitializeComponent();
Loaded += POList_Loaded;
@ -52,102 +44,7 @@ namespace ENI2.Controls
private void POList_Loaded(object sender, RoutedEventArgs e)
{
this.comboBoxFilterType.ItemsSource = this._comboBoxEntries;
this.doubleUpDownCalendarWeek.Value = bsmd.database.Util.GetIso8601WeekOfYear(DateTime.Now);
this.dataGridPOCores.ItemsSource = this.filteredResult;
}
private void buttonExcelExport_Click(object sender, RoutedEventArgs e)
{
if (this.filteredResult.Count == 0) return;
OpenFileDialog ofd = new OpenFileDialog
{
Filter = "Excel Files|*.xls;*.xlsx"
};
if (ofd.ShowDialog() ?? false)
{
try
{
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.DisplayAlerts = false;
Workbook workBook = excelApp.Workbooks.Open(ofd.FileName);
Worksheet workSheet = workBook.Worksheets[1];
int rowIndex = 3;
foreach(MessageCore core in this.filteredResult)
{
workSheet.Cells[rowIndex, 7].Value = core.Shipname;
workSheet.Cells[rowIndex, 10].Value = core.PoC.Substring(2);
if(core.POATA.HasValue)
workSheet.Cells[rowIndex, 11].Value = core.POATA.Value.ToShortDateString();
workSheet.Cells[rowIndex, 13].Value = core.PONumber;
rowIndex++;
}
workBook.Save();
workBook.Close();
Marshal.ReleaseComObject(workBook);
excelApp.Quit();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}
}
private void buttonSaveChanges_Click(object sender, RoutedEventArgs e)
{
foreach(MessageCore messageCore in this.filteredResult)
{
if (messageCore.IsDirty)
{
DBManager.Instance.Save(messageCore);
messageCore.IsDirty = false;
// load ATA for this Core
/* DAS ATA WIRD JETZT NICHT MEHR IN DIE MELDEKLASSE GESPEICHERT
Message ataMessage = DBManager.Instance.GetMessage(messageCore, Message.NotificationClass.ATA);
if(ataMessage?.Elements.Count == 1)
{
if(messageCore.ATA != ((ATA)ataMessage.Elements[0]).ATAPortOfCall)
{
((ATA)ataMessage.Elements[0]).ATAPortOfCall = messageCore.ATA;
DBManager.Instance.Save(ataMessage.Elements[0]);
}
}
*/
}
}
this.buttonSaveChanges.IsEnabled = false;
}
private void doubleUpDownCalendarWeek_ValueChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if (!this.IsLoaded) return;
this.comboBoxFilterType.SelectedIndex = -1;
this.PerformSearch();
}
private void comboBoxFilterType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
this.dataGridPOCores.ItemsSource = null;
if (this.comboBoxFilterType.SelectedIndex == -1) return;
this.filteredResult.Clear();
foreach (MessageCore core in this.searchResult)
{
switch (this.comboBoxFilterType.SelectedIndex)
{
case 0: this.filteredResult.Add(core); break;
case 1: if (core.IsFlagSet(MessageCore.CoreFlags.MAERSK_BHV)) this.filteredResult.Add(core); break;
case 2: if (core.IsFlagSet(MessageCore.CoreFlags.SEAGO_BHV)) this.filteredResult.Add(core); break;
case 3: if (core.IsFlagSet(MessageCore.CoreFlags.SEAGO_WHV)) this.filteredResult.Add(core); break;
case 4: if (core.IsFlagSet(MessageCore.CoreFlags.HOEGH)) this.filteredResult.Add(core); break;
}
}
this.dataGridPOCores.ItemsSource = this.filteredResult;
}
private void dataGridPOCores_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
@ -165,7 +62,7 @@ namespace ENI2.Controls
}
else
{
buttonSaveChanges.IsEnabled = true;
// buttonSaveChanges.IsEnabled = true;
MessageCore editedCore = this.filteredResult[e.Row.GetIndex()];
editedCore.IsDirty = true;
}
@ -185,7 +82,7 @@ namespace ENI2.Controls
{
editedCore.SetFlag(true, coreFlag);
}
buttonSaveChanges.IsEnabled = true;
// buttonSaveChanges.IsEnabled = true;
editedCore.IsDirty = true;
}
if(e.Column == gridColumnATA)
@ -195,7 +92,7 @@ namespace ENI2.Controls
{
MessageCore editedCore = this.filteredResult[e.Row.GetIndex()];
editedCore.ATA = DateTime.SpecifyKind(localATA, DateTimeKind.Local).ToUniversalTime();
buttonSaveChanges.IsEnabled = true;
// buttonSaveChanges.IsEnabled = true;
editedCore.IsDirty = true;
}
else
@ -216,11 +113,14 @@ namespace ENI2.Controls
this.dataGridPOCores.ItemsSource = null;
this.filteredResult.Clear();
if (!this.doubleUpDownCalendarWeek.Value.HasValue) return;
// TODO: Da diese Suche hier so unfassbar lahmarschig ist wäre es günstig (zukünftig für das gesamte ENI),
// wenn die Abfrage asynchron stattfinden würde. Man muss nur irgendwie den Anwender bei Laune halten so dass
// er merkt, da passiert noch was. Eventuell mit einem "spinning" Icon. Aber der Rest bleibt aktiv.
Dictionary<MessageCore.SearchFilterType, string> filterDict = new Dictionary<MessageCore.SearchFilterType, string>();
DateTime start = bsmd.database.Util.FirstDateOfWeekISO8601(DateTime.Now.Year, (int)this.doubleUpDownCalendarWeek.Value);
DateTime start = DateTime.Now; // bsmd.database.Util.FirstDateOfWeekISO8601(DateTime.Now.Year, (int)this.doubleUpDownCalendarWeek.Value);
DateTime end = start.Add(new TimeSpan(6, 23, 59, 59));
// Die Suche findet in einem erweiterten Intervall statt, da später wenn möglich nach ATA gefiltert wird
@ -253,7 +153,7 @@ namespace ENI2.Controls
{
messageCore.POATA = messageCore.ATA;
messageCore.IsDirty = true;
this.buttonSaveChanges.IsEnabled = true;
// this.buttonSaveChanges.IsEnabled = true;
}
}
}
@ -271,6 +171,14 @@ namespace ENI2.Controls
this.dataGridPOCores.ItemsSource = this.filteredResult;
}
private List<MessageCore> GetNextNDayCoresFromList(List<MessageCore> cores, int numDays = 3)
{
List<MessageCore> result = new List<MessageCore>();
result.AddRange(cores.FindAll(x => (x.ETADisplay.Value - DateTime.Now).TotalHours < (numDays * 24)));
return result;
}
#endregion

View File

@ -0,0 +1,24 @@
<UserControl x:Class="ENI2.Controls.MaerskOverviewControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ENI2.Controls"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="28" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="Maersk lists" />
<TabControl x:Name="tabControlMaersk" Grid.Row="1">
<TabItem Name="tabItemBRV" Header="DEBRV">
<local:MaerskListControl x:Name="brvListControl" />
</TabItem>
<TabItem Name="tabItemWVN" Header="DEWVN">
<local:MaerskListControl x:Name="wvnListControl" />
</TabItem>
</TabControl>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace ENI2.Controls
{
/// <summary>
/// Interaction logic for MaerskOverviewControl.xaml
/// </summary>
public partial class MaerskOverviewControl : UserControl
{
public MaerskOverviewControl()
{
InitializeComponent();
}
}
}

View File

@ -228,6 +228,9 @@
<Compile Include="Controls\LocodeControl.xaml.cs">
<DependentUpon>LocodeControl.xaml</DependentUpon>
</Compile>
<Compile Include="Controls\MaerskOverviewControl.xaml.cs">
<DependentUpon>MaerskOverviewControl.xaml</DependentUpon>
</Compile>
<Compile Include="EditControls\CompareExcelDialog.xaml.cs">
<DependentUpon>CompareExcelDialog.xaml</DependentUpon>
</Compile>
@ -249,8 +252,8 @@
<Compile Include="Excel\ExcelManager.cs" />
<Compile Include="Excel\ExcelReader.cs" />
<Compile Include="Excel\ExcelUtil.cs" />
<Compile Include="Controls\POListControl.xaml.cs">
<DependentUpon>POListControl.xaml</DependentUpon>
<Compile Include="Controls\MaerskListControl.xaml.cs">
<DependentUpon>MaerskListControl.xaml</DependentUpon>
</Compile>
<Compile Include="Controls\ReportingPartyControl.xaml.cs">
<DependentUpon>ReportingPartyControl.xaml</DependentUpon>
@ -458,7 +461,11 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Controls\POListControl.xaml">
<Page Include="Controls\MaerskOverviewControl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Controls\MaerskListControl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>

View File

@ -35,7 +35,7 @@ namespace ENI2.EditControls
};
this.comboBoxInitialHIS.ItemsSource = comboDataSource;
this.comboBoxInitialHIS.SelectedIndex = 1;
this.comboBoxInitialHIS.SelectedIndex = 0;
this.EnableOK(false);
this.locodePoC.PropertyChanged += LocodePoC_PropertyChanged;

View File

@ -35,7 +35,7 @@ namespace ENI2
#region Fields
private ReportingPartyControl rpControl;
private POListControl poControl;
private MaerskOverviewControl moControl;
private ServerStatusControl statusControl;
private readonly SucheControl sucheControl;
private CompareExcelDialog compareExcelDialog;
@ -281,11 +281,11 @@ namespace ENI2
}
else if(sender == this.buttonPOListe)
{
if (this.poControl == null)
if (this.moControl == null)
{
this.poControl = new POListControl();
this.moControl = new MaerskOverviewControl();
}
this.rootContainer.Children.Add(poControl);
this.rootContainer.Children.Add(moControl);
}
else if(sender == this.buttonStatus)
{

View File

@ -3733,7 +3733,7 @@ namespace ENI2.Properties {
}
/// <summary>
/// Looks up a localized string similar to PO numbers.
/// Looks up a localized string similar to Maersk.
/// </summary>
public static string textPOLists {
get {

View File

@ -1709,7 +1709,7 @@
<value>IMO hazard class (Group)</value>
</data>
<data name="textPOLists" xml:space="preserve">
<value>PO numbers</value>
<value>Maersk</value>
</data>
<data name="textMaerskSeago" xml:space="preserve">
<value>Maersk / SeaGo</value>

View File

@ -199,7 +199,7 @@ namespace bsmd.database
if (!reader.IsDBNull(1)) ladg.CargoHandlingType = reader.GetByte(1);
if (!reader.IsDBNull(2)) ladg.CargoCodeNST = reader.GetString(2);
if (!reader.IsDBNull(3)) ladg.CargoNumberOfItems = reader.GetInt32(3);
if (!reader.IsDBNull(4)) ladg.CargoGrossQuantity_TNE = (float) reader.GetDouble(4);
if (!reader.IsDBNull(4)) ladg.CargoGrossQuantity_TNE = reader.GetDouble(4);
if (!reader.IsDBNull(5)) ladg.PortOfLoading = reader.GetString(5);
if (!reader.IsDBNull(6)) ladg.PortOfDischarge = reader.GetString(6);
if (!reader.IsDBNull(7)) ladg.Identifier = reader.GetString(7);