From 3f6bdc742168b83ffeb3b8877b79318d16b7e46f Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Sun, 10 Apr 2022 20:13:02 +0200 Subject: [PATCH] Dakosy Import Rahmenhandlung festgelegt, kann losgehen --- ENI2/Excel/DakosyExcelReader.cs | 26 ++++++++ ENI2/Excel/ExcelManager.cs | 63 ++++++++++++------- ENI2/Excel/ExcelReader.cs | 17 +++-- .../bsmd.LockingService.csproj.user | 2 +- .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- 6 files changed, 83 insertions(+), 29 deletions(-) create mode 100644 ENI2/Excel/DakosyExcelReader.cs diff --git a/ENI2/Excel/DakosyExcelReader.cs b/ENI2/Excel/DakosyExcelReader.cs new file mode 100644 index 00000000..34c1ae9c --- /dev/null +++ b/ENI2/Excel/DakosyExcelReader.cs @@ -0,0 +1,26 @@ +// Copyright (c) 2017- schick Informatik +// Description: Helper class to read data from "Dakosy"-Style Excel Sheets +// + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using bsmd.database; + +namespace ENI2.Excel +{ + internal static class DakosyExcelReader + { + + internal static bool ProcessSheet(ExcelReader reader, out string readMessage, MessageCore messageCore, List notificationClasses) + { + bool result = true; + readMessage = ""; + + + return result; + } +} diff --git a/ENI2/Excel/ExcelManager.cs b/ENI2/Excel/ExcelManager.cs index 8efa3931..f2e78cf1 100644 --- a/ENI2/Excel/ExcelManager.cs +++ b/ENI2/Excel/ExcelManager.cs @@ -10,7 +10,7 @@ using System.IO; namespace ENI2.Excel { public class ExcelManager - { + { private readonly ILog _log = LogManager.GetLogger(typeof(ExcelManager)); public ExcelManager() @@ -21,29 +21,50 @@ namespace ENI2.Excel public bool Import(string filePath, MessageCore core, List classes, out string readMessage) { bool result = false; + readMessage = ""; try { using (ExcelReader reader = new ExcelReader(filePath)) - { - ImportHeader importHeader = new ImportHeader + { + switch (reader.SheetType) { - ImportDate = DateTime.Now - }; - result = ExcelUtil.ProcessSheet(reader, out readMessage, core, classes); // actual import - if (result) - { - importHeader.MessageCoreId = core.Id.Value; - importHeader.Filename = Path.GetFileName(filePath); - ReportingParty thisUser = ReportingParty.CurrentReportingParty; - importHeader.SenderEmail = thisUser.EMail; - importHeader.ReportingPartyId = thisUser.Id; + case ExcelReader.SheetTypeEnum.BSMD: + { - DBManager.Instance.Save(importHeader); - // Saving plaintext data (ImportHeader + ImportValues) for each reading - List valueList = importHeader.CreateUpdateList(reader.ImportValues); - // Bulk save recommended here.. - ImportValue.BulkSave(valueList); - } + ImportHeader importHeader = new ImportHeader + { + ImportDate = DateTime.Now + }; + + result = ExcelUtil.ProcessSheet(reader, out readMessage, core, classes); // actual import + if (result) + { + importHeader.MessageCoreId = core.Id.Value; + importHeader.Filename = Path.GetFileName(filePath); + ReportingParty thisUser = ReportingParty.CurrentReportingParty; + importHeader.SenderEmail = thisUser.EMail; + importHeader.ReportingPartyId = thisUser.Id; + + DBManager.Instance.Save(importHeader); + // Saving plaintext data (ImportHeader + ImportValues) for each reading + List valueList = importHeader.CreateUpdateList(reader.ImportValues); + // Bulk save recommended here.. + ImportValue.BulkSave(valueList); + } + break; + } + case ExcelReader.SheetTypeEnum.DAKOSY: + { + result = DakosyExcelReader.ProcessSheet(reader, out readMessage, core, classes); + // at this point do not save import data values + break; + } + default: + { + _log.WarnFormat("Unknown excel sheet type {0}", reader.SheetType); + break; + } + } } } catch (Exception ex) @@ -51,8 +72,8 @@ namespace ENI2.Excel readMessage = ex.Message; _log.Error(ex); } - return result; - } + return result; + } internal void Export(string fileName, MessageCore core, List messages, out string resultMessage, bool isRefSheet) { diff --git a/ENI2/Excel/ExcelReader.cs b/ENI2/Excel/ExcelReader.cs index 81d065f0..7ee60903 100644 --- a/ENI2/Excel/ExcelReader.cs +++ b/ENI2/Excel/ExcelReader.cs @@ -25,15 +25,22 @@ namespace ENI2.Excel { internal enum ReadState { NONE, OK, WARN, FAIL }; + internal enum SheetTypeEnum { BSMD, DAKOSY }; + + private SheetTypeEnum _sheetType = SheetTypeEnum.BSMD; + internal Dictionary ImportValues { get; } = new Dictionary(); public ExcelReader(string filePath) : base(filePath) - { - + { this._workBook = _excelWorkbooks.Open(filePath, 0, true, 5, "", "", false, XlPlatform.xlWindows, "", false, false, 0, false, false, false); - this.InitNameFields(); - } + + // Determine if this is a Dakosy or BSMD Sheet + _sheetType = (_nameDict.Count > 0) ? SheetTypeEnum.BSMD : SheetTypeEnum.DAKOSY; + } + + public SheetTypeEnum SheetType { get { return _sheetType; } } internal string ReadText(string lookup) { @@ -71,7 +78,7 @@ namespace ENI2.Excel } internal string ReadLoCode(string lookup) - { + { string val = this.ReadText(lookup); if (!val.IsNullOrEmpty()) { diff --git a/bsmd.LockingService/bsmd.LockingService.csproj.user b/bsmd.LockingService/bsmd.LockingService.csproj.user index afa33dd1..3517ad61 100644 --- a/bsmd.LockingService/bsmd.LockingService.csproj.user +++ b/bsmd.LockingService/bsmd.LockingService.csproj.user @@ -2,7 +2,7 @@ true - Debug|Any CPU + Release|Any CPU diff --git a/bsmd.database/Properties/AssemblyProductInfo.cs b/bsmd.database/Properties/AssemblyProductInfo.cs index 510fabfd..6960ac23 100644 --- a/bsmd.database/Properties/AssemblyProductInfo.cs +++ b/bsmd.database/Properties/AssemblyProductInfo.cs @@ -2,6 +2,6 @@ [assembly: AssemblyCompany("schick Informatik")] [assembly: AssemblyProduct("BSMD NSW interface")] -[assembly: AssemblyInformationalVersion("7.0.2")] +[assembly: AssemblyInformationalVersion("7.1.0")] [assembly: AssemblyCopyright("Copyright © 2014-2022 schick Informatik")] [assembly: AssemblyTrademark("")] \ No newline at end of file diff --git a/bsmd.database/Properties/AssemblyProjectInfo.cs b/bsmd.database/Properties/AssemblyProjectInfo.cs index 98fdcad6..24ff1bf8 100644 --- a/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("7.0.2.*")] +[assembly: AssemblyVersion("7.1.0.*")]