From 5d58beea00b9db6381c69de1326805283ada583b Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Sat, 25 Mar 2017 18:09:52 +0000 Subject: [PATCH] 3.4.8: Korrekturen und weiteren Kleinkruscht --- ENI-2/ENI2/ENI2/ENI2.csproj | 3 + ENI-2/ENI2/ENI2/SucheControl.xaml | 2 +- Stundensheet.xlsx | Bin 26691 -> 26706 bytes .../bsmd.ExcelReadService/Confirmation.cs | 29 +++++++++ .../bsmd.ExcelReadService/ExcelReader.cs | 30 ++++----- nsw/Source/bsmd.ExcelReadService/LocodeDB.cs | 4 ++ nsw/Source/bsmd.ExcelReadService/Util.cs | 61 ++++++++++++++---- nsw/Source/bsmd.database/CREW.cs | 4 ++ nsw/Source/bsmd.database/LADG.cs | 2 + nsw/Source/bsmd.database/PAS.cs | 4 ++ .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- nsw/Source/bsmd.database/Waste.cs | 2 +- 13 files changed, 114 insertions(+), 31 deletions(-) diff --git a/ENI-2/ENI2/ENI2/ENI2.csproj b/ENI-2/ENI2/ENI2/ENI2.csproj index 827f77e8..7516ec77 100644 --- a/ENI-2/ENI2/ENI2/ENI2.csproj +++ b/ENI-2/ENI2/ENI2/ENI2.csproj @@ -58,6 +58,9 @@ bsmdKey.snk + + Resources\containership.ico + packages\log4net.2.0.8\lib\net45-full\log4net.dll diff --git a/ENI-2/ENI2/ENI2/SucheControl.xaml b/ENI-2/ENI2/ENI2/SucheControl.xaml index 8cead552..146979c5 100644 --- a/ENI-2/ENI2/ENI2/SucheControl.xaml +++ b/ENI-2/ENI2/ENI2/SucheControl.xaml @@ -6,7 +6,7 @@ xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:local="clr-namespace:ENI2" mc:Ignorable="d" - d:DesignHeight="300" d:DesignWidth="300"> + d:DesignHeight="600" d:DesignWidth="800"> diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 36db0cd068515df6ec1fc3d1db82dc9d3a3c65f8..f463b495667573d0c981d9640882fa8fcb55e784 100644 GIT binary patch delta 11417 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 diff --git a/nsw/Source/bsmd.ExcelReadService/Confirmation.cs b/nsw/Source/bsmd.ExcelReadService/Confirmation.cs index 5d8f6358..f0fb58b3 100644 --- a/nsw/Source/bsmd.ExcelReadService/Confirmation.cs +++ b/nsw/Source/bsmd.ExcelReadService/Confirmation.cs @@ -114,6 +114,35 @@ namespace bsmd.ExcelReadService this.ConfirmValue(lookup, value, state); } + public void HighlightCellWithState(string lookup, ExcelReader.ReadState state) + { + for (int i = 0; i < this.workbooks.Count; i++) + { + Workbook workbook = this.workbooks[i]; + Dictionary> nameDict = this.nameDicts[i]; + + if (nameDict.ContainsKey(lookup)) + { + try + { + foreach (Name someName in nameDict[lookup]) + { + Range range = someName.RefersToRange; + if (range != null) + { + range.Interior.Color = this.ColorForState(state); + } + Marshal.ReleaseComObject(range); + } + } + catch (Exception ex) + { + _log.WarnFormat("cannot set highlight {0} for lookup {1}: {2}", state, lookup, ex.Message); + } + } + } + } + public List SaveConfirmationSheets(string receivedFileName) { diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs index 22997597..6cd1766c 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs @@ -365,7 +365,7 @@ namespace bsmd.ExcelReadService return result; } - internal DateTime? ReadDate(string lookup) + internal DateTime? ReadDate(string lookup, bool noHighlight = false) { try { @@ -376,7 +376,7 @@ namespace bsmd.ExcelReadService var val = _nameDict[lookup].RefersToRange.Value; if (val is DateTime) { - this.Conf.ConfirmDate(lookup, val, ReadState.OK); + this.Conf.ConfirmDate(lookup, val, noHighlight ? ReadState.NONE : ReadState.OK); return val; } if (val is double) @@ -410,16 +410,16 @@ namespace bsmd.ExcelReadService if ((date.Value < new DateTime(1900, 1, 1)) || (date.Value > new DateTime(2030, 1, 1))) { date = null; - this.Conf.ConfirmDate(lookup, date, ReadState.WARN); + this.Conf.ConfirmDate(lookup, date, noHighlight ? ReadState.NONE : ReadState.WARN); } else { - this.Conf.ConfirmDate(lookup, date, ReadState.OK); + this.Conf.ConfirmDate(lookup, date, noHighlight? ReadState.NONE : ReadState.OK); } } else { - this.Conf.ConfirmDate(lookup, null, ReadState.FAIL); + this.Conf.ConfirmDate(lookup, null, noHighlight ? ReadState.NONE : ReadState.FAIL); } } @@ -427,17 +427,17 @@ namespace bsmd.ExcelReadService } catch (Exception) { - this.Conf.ConfirmDate(lookup, null, ReadState.FAIL); + this.Conf.ConfirmDate(lookup, null, noHighlight ? ReadState.NONE : ReadState.FAIL); _log.WarnFormat("error parsing datetime for lookup {0}", lookup); return null; } } - internal DateTime? ReadDateTime(string dateField, string timeField) + internal DateTime? ReadDateTime(string dateField, string timeField, bool noHighlight = false) { DateTime? result = null; - DateTime? etaDate = this.ReadDate(dateField); - DateTime? etaTime = this.ReadTime(timeField); + DateTime? etaDate = this.ReadDate(dateField, noHighlight); + DateTime? etaTime = this.ReadTime(timeField, noHighlight); if (etaDate != null) { result = new DateTime(etaDate.Value.Year, etaDate.Value.Month, etaDate.Value.Day); @@ -454,7 +454,7 @@ namespace bsmd.ExcelReadService return result; } - internal DateTime? ReadTime(string lookup) + internal DateTime? ReadTime(string lookup, bool noHighlight = false) { DateTime? result = null; @@ -518,17 +518,17 @@ namespace bsmd.ExcelReadService if (result != null) { - this.Conf.ConfirmTime(lookup, result, ReadState.OK); + this.Conf.ConfirmTime(lookup, result, noHighlight ? ReadState.NONE : ReadState.OK); } else { - this.Conf.ConfirmTime(lookup, result, ReadState.WARN); + this.Conf.ConfirmTime(lookup, result, noHighlight ? ReadState.NONE : ReadState.WARN); } } } catch (Exception) { - this.Conf.ConfirmTime(lookup, null, ReadState.FAIL); + this.Conf.ConfirmTime(lookup, null, noHighlight ? ReadState.NONE : ReadState.FAIL); _log.WarnFormat("error reading time for lookup {0}", lookup); } @@ -601,12 +601,12 @@ namespace bsmd.ExcelReadService return result.Value; } - internal bool? ReadBoolean(string lookup) + internal bool? ReadBoolean(string lookup, bool noHighlight = false) { string val = this.ReadText(lookup); if (val == null) { - this.Conf.ConfirmText(lookup, val, ReadState.FAIL); + this.Conf.ConfirmText(lookup, val, noHighlight ? ReadState.NONE : ReadState.FAIL); return null; } diff --git a/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs b/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs index c2a98299..765b804c 100644 --- a/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs +++ b/nsw/Source/bsmd.ExcelReadService/LocodeDB.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; using System.Data; using System.Data.SQLite; +using bsmd.database; namespace bsmd.ExcelReadService { @@ -103,6 +104,9 @@ namespace bsmd.ExcelReadService /// public static string PortNameFromLocode(string locode) { + if (locode.IsNullOrEmpty()) return null; + if (locode.Length != 5) return null; + string result = null; string query = string.Format("SELECT locodes.name FROM locodes JOIN countries ON locodes.country_id = countries.ID WHERE locodes.port='t' AND locodes.city_code = '{0}' AND countries.code = '{1}'", locode.Substring(2), locode.Substring(0,2)); diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs index d0e52ade..ce305cd0 100644 --- a/nsw/Source/bsmd.ExcelReadService/Util.cs +++ b/nsw/Source/bsmd.ExcelReadService/Util.cs @@ -1155,8 +1155,8 @@ namespace bsmd.ExcelReadService noa_nod.ETDFromLastPort = reader.ReadDateTime("NOA_NOD.ETDDateFromLastPort", "NOA_NOD.ETDTimeFromLastPort"); noa_nod.ETAToNextPort = reader.ReadDateTime("NOA_NOD.ETADateToNextPort", "NOA_NOD.ETATimeToNextPort"); - // DK - noa_nod.IsAnchored = reader.ReadBoolean("NOA_NOD.IsAnchored"); + // DK + noa_nod.IsAnchored = reader.ReadBoolean("NOA_NOD.IsAnchored", (reader.Mode == ExcelReader.CountryMode.DE)); } @@ -1244,10 +1244,12 @@ namespace bsmd.ExcelReadService waste.WasteType = (int?) reader.ReadNumber(wasteCode); + if (waste.WasteType.HasValue && (waste.WasteType == 2313)) + waste.WasteType = 2600; + + if (reader.Mode == ExcelReader.CountryMode.DE) - { - // waste.WasteType = i; // remove for V4 - // change for V4 + { reader.Conf.ConfirmText(wastetype, waste.WasteTypeDisplay, ExcelReader.ReadState.OK); reader.Conf.ConfirmNumber(wasteCode, waste.WasteType, ExcelReader.ReadState.OK); } @@ -1288,9 +1290,21 @@ namespace bsmd.ExcelReadService waste.WasteCapacity_MTQ = reader.ReadNumberDefaultZero(wasteCapacity); waste.WasteAmountRetained_MTQ = reader.ReadNumberDefaultZero(wasteRetained); - waste.WasteDisposalPort = reader.ReadText(wastePort); // TODO: check for LOCODE? - if (waste.WasteDisposalPort.IsNullOrEmpty()) waste.WasteDisposalPort = "ZZUKN"; - reader.Conf.ConfirmText(wastePort, waste.WasteDisposalPort, waste.WasteDisposalPort.Equals("ZZUKN") ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); + waste.WasteDisposalPort = reader.ReadText(wastePort); + bool isLocode; + ExcelReader.ReadState rs; + if (waste.WasteDisposalPort.IsNullOrEmpty()) + { + waste.WasteDisposalPort = "ZZUKN"; + rs = ExcelReader.ReadState.WARN; + } + else + { + isLocode = (LocodeDB.PortNameFromLocode(waste.WasteDisposalPort) != null); + rs = isLocode ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL; + } + reader.Conf.ConfirmText(wastePort, waste.WasteDisposalPort, rs); + waste.WasteAmountGeneratedTillNextPort_MTQ = reader.ReadNumberDefaultZero(amountGen); waste.WasteDisposedAtLastPort_MTQ = reader.ReadNumberDefaultZero(wasteDis); @@ -1313,10 +1327,32 @@ namespace bsmd.ExcelReadService ((waste.WasteDisposalAmount_MTQ ?? 0) == 0) && (((waste.WasteType ?? 0) == 1300) || !waste.WasteType.HasValue)) was.Waste.Remove(waste); + + // 24.3.: - Für Waste-Type 15: Wenn in dieser Zeile andere Werte enthalten, als die nachfolgenden, ist die ganze Zeile rot zu markieren. + bool highlightRow15 = !(waste.WasteType == null); + highlightRow15 &= (waste.WasteDisposalAmount_MTQ > 0); + highlightRow15 &= (waste.WasteCapacity_MTQ > 0); + highlightRow15 &= (waste.WasteAmountRetained_MTQ > 0); + highlightRow15 &= (waste.WasteDisposalPort != "ZZUKN"); + highlightRow15 &= (waste.WasteAmountGeneratedTillNextPort_MTQ > 0); + highlightRow15 &= (waste.WasteDisposedAtLastPort_MTQ > 0); + + if(highlightRow15) + { + reader.Conf.HighlightCellWithState(wastetype, ExcelReader.ReadState.FAIL); + reader.Conf.HighlightCellWithState(wasteCode, ExcelReader.ReadState.FAIL); + reader.Conf.HighlightCellWithState(wasteDescription, ExcelReader.ReadState.FAIL); + reader.Conf.HighlightCellWithState(wasteAmount, ExcelReader.ReadState.FAIL); + reader.Conf.HighlightCellWithState(wasteCapacity, ExcelReader.ReadState.FAIL); + reader.Conf.HighlightCellWithState(wasteRetained, ExcelReader.ReadState.FAIL); + reader.Conf.HighlightCellWithState(wastePort, ExcelReader.ReadState.FAIL); + reader.Conf.HighlightCellWithState(amountGen, ExcelReader.ReadState.FAIL); + reader.Conf.HighlightCellWithState(wasteDis, ExcelReader.ReadState.FAIL); + } } - } + } /* try { @@ -1635,8 +1671,8 @@ namespace bsmd.ExcelReadService bool? secKielDeparture = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Departure"); sec.KielCanalPassagePlanned = (secKielArrival ?? false) || (secKielDeparture ?? false); - sec.KielCanalPassagePlannedIncomming = reader.ReadDateTime("SEC.ETADateKielCanalPassagePlannedIncomming", "SEC.ETATimeKielCanalPassagePlannedIncomming"); - sec.KielCanalPassagePlannedOutgoing = reader.ReadDateTime("SEC.ETADateKielCanalPassagePlannedOutgoing", "SEC.ETATimeKielCanalPassagePlannedOutgoing"); + sec.KielCanalPassagePlannedIncomming = reader.ReadDateTime("SEC.ETADateKielCanalPassagePlannedIncomming", "SEC.ETATimeKielCanalPassagePlannedIncomming", !(secKielArrival ?? false)); + sec.KielCanalPassagePlannedOutgoing = reader.ReadDateTime("SEC.ETADateKielCanalPassagePlannedOutgoing", "SEC.ETATimeKielCanalPassagePlannedOutgoing", !(secKielDeparture ?? false)); // Last10PortFacilitesCalled @@ -2577,7 +2613,8 @@ namespace bsmd.ExcelReadService } } - reader.Conf.ConfirmText("ID", visitTransitId, ExcelReader.ReadState.OK); + bool isValidId = bsmd.database.Util.IsVisitId(visitTransitId) ||bsmd.database.Util.IsTransitId(visitTransitId); + reader.Conf.ConfirmText("ID", visitTransitId, isValidId ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); if (result == null) { diff --git a/nsw/Source/bsmd.database/CREW.cs b/nsw/Source/bsmd.database/CREW.cs index 7a0c3dcb..fb195ea8 100644 --- a/nsw/Source/bsmd.database/CREW.cs +++ b/nsw/Source/bsmd.database/CREW.cs @@ -164,6 +164,8 @@ namespace bsmd.database break; } + query += " ORDER BY Identifier"; + cmd.CommandText = query; } @@ -223,6 +225,8 @@ namespace bsmd.database break; } + query += " ORDER BY CAST(Identifier AS INT)"; + cmd.CommandText = query; } } diff --git a/nsw/Source/bsmd.database/LADG.cs b/nsw/Source/bsmd.database/LADG.cs index 9b954ca8..45f7f2ee 100644 --- a/nsw/Source/bsmd.database/LADG.cs +++ b/nsw/Source/bsmd.database/LADG.cs @@ -153,6 +153,8 @@ namespace bsmd.database break; } + query += " ORDER BY CAST(Identifier AS INT)"; + cmd.CommandText = query; } diff --git a/nsw/Source/bsmd.database/PAS.cs b/nsw/Source/bsmd.database/PAS.cs index 65634a77..ddaeea95 100644 --- a/nsw/Source/bsmd.database/PAS.cs +++ b/nsw/Source/bsmd.database/PAS.cs @@ -180,6 +180,8 @@ namespace bsmd.database break; } + query += " ORDER BY Identifier"; + cmd.CommandText = query; } @@ -252,6 +254,8 @@ namespace bsmd.database break; } + query += " ORDER BY CAST(Identifier AS INT)"; + cmd.CommandText = query; } } diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index 874beaa8..ab391b04 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs @@ -2,6 +2,6 @@ [assembly: AssemblyCompany("Informatikbüro Daniel Schick")] [assembly: AssemblyProduct("BSMD NSW interface")] -[assembly: AssemblyInformationalVersion("3.4.7")] +[assembly: AssemblyInformationalVersion("3.4.8")] [assembly: AssemblyCopyright("Copyright © 2014-2017 Informatikbüro Daniel Schick. All rights reserved.")] [assembly: AssemblyTrademark("")] \ No newline at end of file diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs index 52942cfd..b52622db 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("3.4.7.*")] +[assembly: AssemblyVersion("3.4.8.*")] diff --git a/nsw/Source/bsmd.database/Waste.cs b/nsw/Source/bsmd.database/Waste.cs index ad4e3caa..4090bbcc 100644 --- a/nsw/Source/bsmd.database/Waste.cs +++ b/nsw/Source/bsmd.database/Waste.cs @@ -64,7 +64,7 @@ namespace bsmd.database case 2300: return "Domestic wastes"; case 2311: return "Cooking oil"; case 2308: return "Incinerator ashes"; - case 2313: return "Operational wastes"; + case 2600: return "Operational wastes"; case 2309: return "Animal carcass(es)"; case 3000: return "Sewage"; case 5100: return "Cargo residues - Marpol Annex I";