Veriosion 2.4.16
This commit is contained in:
parent
b8d4e943e5
commit
8d93750655
Binary file not shown.
@ -192,7 +192,9 @@ namespace SendNSWMessageService
|
||||
if ((message.InternalStatus != Message.BSMDStatus.CONFIRMED) &&
|
||||
(message.InternalStatus != Message.BSMDStatus.SENT))
|
||||
{
|
||||
if (message.HIS == Message.NSWProvider.UNDEFINED)
|
||||
|
||||
// 28.12.2015: Das über "Overview" eingestellte HIS ist immer "führend" (zumindest aktuell zum Testen)
|
||||
// if (message.HIS == Message.NSWProvider.UNDEFINED)
|
||||
message.HIS = core.InitialHIS;
|
||||
if (core.DefaultReportingPartyId.HasValue)
|
||||
{
|
||||
|
||||
@ -21,18 +21,13 @@ namespace bsmd.dakosy
|
||||
{
|
||||
private static ILog _log = LogManager.GetLogger(typeof(Request));
|
||||
|
||||
#region send single message
|
||||
|
||||
public static bool Send(Message aMessage)
|
||||
{
|
||||
bool retval = true;
|
||||
try
|
||||
{
|
||||
/*
|
||||
Message aMessage = null;
|
||||
if (dbEntity.GetType().IsAssignableFrom(typeof(Message)))
|
||||
aMessage = (Message)dbEntity;
|
||||
else
|
||||
aMessage = dbEntity.MessageHeader;
|
||||
*/
|
||||
{
|
||||
|
||||
if (!XtraSendLogic.ShouldSendMessage(aMessage)) return false;
|
||||
|
||||
@ -57,75 +52,15 @@ namespace bsmd.dakosy
|
||||
|
||||
switch (aMessage.MessageNotificationClass)
|
||||
{
|
||||
|
||||
#region VISIT / TRANSIT
|
||||
|
||||
case Message.NotificationClass.VISIT:
|
||||
case Message.NotificationClass.TRANSIT:
|
||||
{
|
||||
eDeclarationMessageInterchangeBodyRequestIdList reqList = new eDeclarationMessageInterchangeBodyRequestIdList();
|
||||
b.Item = reqList;
|
||||
reqList.RequestId = new RequestId[1];
|
||||
reqList.RequestId[0] = new RequestId();
|
||||
reqList.RequestId[0].MessageHeader = new MessageHeaderType();
|
||||
reqList.RequestId[0].MessageHeader.MessageReferenceNumber = aMessage.Id.Value.ToString("N");
|
||||
//reqList.RequestId[0].MessageHeader.CreationTime = DateTime.UtcNow;
|
||||
//reqList.RequestId[0].MessageHeader.CreationTimeSpecified = true;
|
||||
reqList.RequestId[0].LocalReferenceNumber = aMessage.MessageCore.Id.Value.ToString("N");
|
||||
reqList.RequestId[0].OriginatorsVoyageNumber = "tbd";
|
||||
reqList.RequestId[0].MessageHeader.MessageRecipient = new Participant();
|
||||
reqList.RequestId[0].MessageHeader.MessageRecipient.ParticipantCode = new ParticipantCode();
|
||||
reqList.RequestId[0].MessageHeader.MessageRecipient.ParticipantCode.AgencyID = "DAK";
|
||||
reqList.RequestId[0].MessageHeader.MessageRecipient.ParticipantCode.Value = "NSW";
|
||||
reqList.RequestId[0].MessageHeader.MessageSender = new Participant();
|
||||
reqList.RequestId[0].MessageHeader.MessageSender.ParticipantCode = new ParticipantCode();
|
||||
reqList.RequestId[0].MessageHeader.MessageSender.ParticipantCode.AgencyID = "DAK";
|
||||
reqList.RequestId[0].MessageHeader.MessageSender.ParticipantCode.Value = "BSM"; // TODO -> Absprache!
|
||||
reqList.RequestId[0].ReportingParty = new ReportingParty();
|
||||
reqList.RequestId[0].ReportingParty.City = aMessage.ReportingParty.City;
|
||||
reqList.RequestId[0].ReportingParty.Country = aMessage.ReportingParty.Country;
|
||||
reqList.RequestId[0].ReportingParty.EMail = aMessage.ReportingParty.EMail;
|
||||
reqList.RequestId[0].ReportingParty.Fax = aMessage.ReportingParty.Fax;
|
||||
reqList.RequestId[0].ReportingParty.FirstName = aMessage.ReportingParty.FirstName;
|
||||
reqList.RequestId[0].ReportingParty.LastName = aMessage.ReportingParty.LastName;
|
||||
reqList.RequestId[0].ReportingParty.Name = aMessage.ReportingParty.Name;
|
||||
reqList.RequestId[0].ReportingParty.Phone = aMessage.ReportingParty.Phone;
|
||||
reqList.RequestId[0].ReportingParty.PostalCode = aMessage.ReportingParty.PostalCode;
|
||||
if (!aMessage.ReportingParty.StreetAndNumber.IsNullOrEmpty())
|
||||
{
|
||||
int lastBlank = aMessage.ReportingParty.StreetAndNumber.LastIndexOf(' ');
|
||||
if (lastBlank > 0)
|
||||
{
|
||||
reqList.RequestId[0].ReportingParty.StreetName = aMessage.ReportingParty.StreetAndNumber.Substring(0, lastBlank);
|
||||
reqList.RequestId[0].ReportingParty.StreetNumber = aMessage.ReportingParty.StreetAndNumber.Substring(lastBlank);
|
||||
}
|
||||
}
|
||||
reqList.RequestId[0].ReportingParty.Type = ReportingPartyType.OTHERS; // TBD
|
||||
reqList.RequestId[0].ReportingParty.TypeSpecified = false; // TBD
|
||||
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT)
|
||||
{
|
||||
reqList.RequestId[0].REG_TRANSIT = new REG_TRANSIT();
|
||||
reqList.RequestId[0].REG_TRANSIT.EniNumber = aMessage.MessageCore.ENI;
|
||||
reqList.RequestId[0].REG_TRANSIT.EtaKielCanal = aMessage.MessageCore.ETA.Value;
|
||||
reqList.RequestId[0].REG_TRANSIT.ImoNumber = aMessage.MessageCore.IMO;
|
||||
}
|
||||
else
|
||||
{
|
||||
reqList.RequestId[0].REG_VISIT = new REG_VISIT();
|
||||
reqList.RequestId[0].REG_VISIT.EniNumber = aMessage.MessageCore.ENI;
|
||||
reqList.RequestId[0].REG_VISIT.EtaPortOfCall = aMessage.MessageCore.ETA.Value;
|
||||
reqList.RequestId[0].REG_VISIT.ImoNumber = aMessage.MessageCore.IMO;
|
||||
reqList.RequestId[0].REG_VISIT.PortOfCall = aMessage.MessageCore.PoC;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Request.CreateVisitTransit(b, aMessage);
|
||||
break;
|
||||
|
||||
default:
|
||||
eDeclarationMessageInterchangeBodyVisitList vList = new eDeclarationMessageInterchangeBodyVisitList();
|
||||
b.Item = vList;
|
||||
|
||||
vList.Visit = new Visit[1];
|
||||
vList.Visit[0] = new Visit();
|
||||
vList.Visit[0].MessageHeader = new MessageHeaderType();
|
||||
@ -138,7 +73,7 @@ namespace bsmd.dakosy
|
||||
vList.Visit[0].MessageHeader.MessageSender = new Participant();
|
||||
vList.Visit[0].MessageHeader.MessageSender.ParticipantCode = new ParticipantCode();
|
||||
vList.Visit[0].MessageHeader.MessageSender.ParticipantCode.AgencyID = "DAK";
|
||||
vList.Visit[0].MessageHeader.MessageSender.ParticipantCode.Value = "TBD"; // TODO -> Absprache!
|
||||
vList.Visit[0].MessageHeader.MessageSender.ParticipantCode.Value = "BSM"; // TODO -> Absprache!
|
||||
vList.Visit[0].MessageHeader.MessageReferenceNumber = aMessage.Id.Value.ToString("N");
|
||||
vList.Visit[0].MessageType = MessageType.FULL; // bei DRAFT geht es nicht an das NSW
|
||||
if (aMessage.MessageCore.IsTransit)
|
||||
@ -162,7 +97,7 @@ namespace bsmd.dakosy
|
||||
vList.Visit[0].VesselOperator = new Participant();
|
||||
vList.Visit[0].VesselOperator.ParticipantCode = new ParticipantCode();
|
||||
vList.Visit[0].VesselOperator.ParticipantCode.AgencyID = "DAK";
|
||||
vList.Visit[0].VesselOperator.ParticipantCode.Value = "TBD"; // TBD, das weiß ich auch nicht!
|
||||
vList.Visit[0].VesselOperator.ParticipantCode.Value = "NSW"; // TBD, das weiß ich auch nicht!
|
||||
|
||||
vList.Visit[0].ReportingParty = new ReportingParty();
|
||||
vList.Visit[0].ReportingParty.City = aMessage.ReportingParty.City;
|
||||
@ -181,7 +116,7 @@ namespace bsmd.dakosy
|
||||
vList.Visit[0].ReportingParty.StreetNumber = aMessage.ReportingParty.StreetAndNumber.Substring(aLastBlank);
|
||||
}
|
||||
vList.Visit[0].ReportingParty.Type = ReportingPartyType.OTHERS; // TBD
|
||||
vList.Visit[0].ReportingParty.TypeSpecified = false; // TBD
|
||||
vList.Visit[0].ReportingParty.TypeSpecified = true;
|
||||
|
||||
switch (aMessage.MessageNotificationClass)
|
||||
{
|
||||
@ -748,7 +683,7 @@ namespace bsmd.dakosy
|
||||
{
|
||||
byte wt = was.Waste[i].WasteType ?? 0;
|
||||
vList.Visit[0].WAS.Waste[i] = new Waste();
|
||||
vList.Visit[0].WAS.Waste[i].WasteType = (WasteType)wt;
|
||||
vList.Visit[0].WAS.Waste[i].WasteType = Request.setWasteType(wt);
|
||||
vList.Visit[0].WAS.Waste[i].Description = was.Waste[i].WasteDescription;
|
||||
vList.Visit[0].WAS.Waste[i].DisposalAmountMTQSpecified = was.Waste[i].WasteDisposalAmount_MTQ.HasValue;
|
||||
vList.Visit[0].WAS.Waste[i].DisposalAmountMTQ = was.Waste[i].WasteDisposalAmount_MTQ ?? 0;
|
||||
@ -801,5 +736,166 @@ namespace bsmd.dakosy
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region send complete message core
|
||||
/// <summary>
|
||||
/// Diese Methode ist aktuell nicht funktional. Beim Testen hat es durch Ändern der participant-Codes auf einmal
|
||||
/// auch mit Einzelnachrichten funktioniert, ich behalte das also erstmal bei und verfolge diesen Ansatz (vorerst) nicht weiter.
|
||||
/// </summary>
|
||||
/// <param name="messages"></param>
|
||||
/// <returns></returns>
|
||||
public static bool SendAll(List<Message> messages)
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
try
|
||||
{
|
||||
// fill eDeclaration class
|
||||
eDeclarationMessage edm = new eDeclarationMessage();
|
||||
// edm.Version = "08.15"; // entfernt auf Anraten von Fr. Ebeling 30.6.15
|
||||
edm.InterchangeHeader = new InterchangeHeaderType();
|
||||
edm.InterchangeHeader.CreationTime = DateTime.UtcNow;
|
||||
edm.InterchangeHeader.ExchangeNumber = "tbd";
|
||||
edm.InterchangeHeader.TestIndicator = Properties.Settings.Default.TestMode;
|
||||
edm.InterchangeHeader.Sender = new Participant();
|
||||
edm.InterchangeHeader.Sender.ParticipantCode = new ParticipantCode();
|
||||
edm.InterchangeHeader.Sender.ParticipantCode.AgencyID = "DAK";
|
||||
edm.InterchangeHeader.Sender.ParticipantCode.Value = "BSM";
|
||||
edm.InterchangeHeader.Recipient = new Participant();
|
||||
edm.InterchangeHeader.Recipient.ParticipantCode = new ParticipantCode();
|
||||
edm.InterchangeHeader.Recipient.ParticipantCode.AgencyID = "DAK";
|
||||
edm.InterchangeHeader.Recipient.ParticipantCode.Value = "DAK";
|
||||
|
||||
eDeclarationMessageInterchangeBody b = new eDeclarationMessageInterchangeBody();
|
||||
edm.InterchangeBody = b;
|
||||
|
||||
// check if visit/transit apply or list of data messages
|
||||
|
||||
if((messages.Count == 1) && ((messages[0].MessageNotificationClass == Message.NotificationClass.VISIT) ||
|
||||
(messages[0].MessageNotificationClass == Message.NotificationClass.TRANSIT))) {
|
||||
Request.CreateVisitTransit(b, messages[0]);
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
// save to temp file
|
||||
string fileName = string.Format(".{0}.xml", Guid.NewGuid().ToString());
|
||||
string filePath = string.Format(@"{0}\{1}", Properties.Settings.Default.SFTPOutDir, fileName);
|
||||
XmlSerializer serializer = new XmlSerializer(typeof(eDeclarationMessage));
|
||||
using(TextWriter tw = new StreamWriter(filePath)) {
|
||||
serializer.Serialize(tw, edm);
|
||||
}
|
||||
|
||||
// call sftp client to send
|
||||
sftp.Put(fileName,
|
||||
Properties.Settings.Default.TestMode ?
|
||||
Properties.Settings.Default.RemoteTestIncomingDir : Properties.Settings.Default.RemoteProdIncomingDir);
|
||||
|
||||
// remove sent file if not test mode
|
||||
if (!Properties.Settings.Default.TestMode)
|
||||
File.Delete(fileName);
|
||||
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
_log.ErrorFormat("Exception on SendAll:{0}", ex.ToString());
|
||||
result = false;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region CreateVisitTransit
|
||||
|
||||
private static void CreateVisitTransit(eDeclarationMessageInterchangeBody b, Message aMessage)
|
||||
{
|
||||
eDeclarationMessageInterchangeBodyRequestIdList reqList = new eDeclarationMessageInterchangeBodyRequestIdList();
|
||||
b.Item = reqList;
|
||||
reqList.RequestId = new RequestId[1];
|
||||
reqList.RequestId[0] = new RequestId();
|
||||
reqList.RequestId[0].MessageHeader = new MessageHeaderType();
|
||||
reqList.RequestId[0].MessageHeader.MessageReferenceNumber = aMessage.Id.Value.ToString("N");
|
||||
//reqList.RequestId[0].MessageHeader.CreationTime = DateTime.UtcNow;
|
||||
//reqList.RequestId[0].MessageHeader.CreationTimeSpecified = true;
|
||||
reqList.RequestId[0].LocalReferenceNumber = aMessage.MessageCore.Id.Value.ToString("N");
|
||||
reqList.RequestId[0].OriginatorsVoyageNumber = "tbd";
|
||||
reqList.RequestId[0].MessageHeader.MessageRecipient = new Participant();
|
||||
reqList.RequestId[0].MessageHeader.MessageRecipient.ParticipantCode = new ParticipantCode();
|
||||
reqList.RequestId[0].MessageHeader.MessageRecipient.ParticipantCode.AgencyID = "DAK";
|
||||
reqList.RequestId[0].MessageHeader.MessageRecipient.ParticipantCode.Value = "NSW";
|
||||
reqList.RequestId[0].MessageHeader.MessageSender = new Participant();
|
||||
reqList.RequestId[0].MessageHeader.MessageSender.ParticipantCode = new ParticipantCode();
|
||||
reqList.RequestId[0].MessageHeader.MessageSender.ParticipantCode.AgencyID = "DAK";
|
||||
reqList.RequestId[0].MessageHeader.MessageSender.ParticipantCode.Value = "BSM"; // TODO -> Absprache!
|
||||
reqList.RequestId[0].ReportingParty = new ReportingParty();
|
||||
reqList.RequestId[0].ReportingParty.City = aMessage.ReportingParty.City;
|
||||
reqList.RequestId[0].ReportingParty.Country = aMessage.ReportingParty.Country;
|
||||
reqList.RequestId[0].ReportingParty.EMail = aMessage.ReportingParty.EMail;
|
||||
reqList.RequestId[0].ReportingParty.Fax = aMessage.ReportingParty.Fax;
|
||||
reqList.RequestId[0].ReportingParty.FirstName = aMessage.ReportingParty.FirstName;
|
||||
reqList.RequestId[0].ReportingParty.LastName = aMessage.ReportingParty.LastName;
|
||||
reqList.RequestId[0].ReportingParty.Name = aMessage.ReportingParty.Name;
|
||||
reqList.RequestId[0].ReportingParty.Phone = aMessage.ReportingParty.Phone;
|
||||
reqList.RequestId[0].ReportingParty.PostalCode = aMessage.ReportingParty.PostalCode;
|
||||
if (!aMessage.ReportingParty.StreetAndNumber.IsNullOrEmpty())
|
||||
{
|
||||
int lastBlank = aMessage.ReportingParty.StreetAndNumber.LastIndexOf(' ');
|
||||
if (lastBlank > 0)
|
||||
{
|
||||
reqList.RequestId[0].ReportingParty.StreetName = aMessage.ReportingParty.StreetAndNumber.Substring(0, lastBlank);
|
||||
reqList.RequestId[0].ReportingParty.StreetNumber = aMessage.ReportingParty.StreetAndNumber.Substring(lastBlank);
|
||||
}
|
||||
}
|
||||
reqList.RequestId[0].ReportingParty.Type = ReportingPartyType.OTHERS; // TBD
|
||||
reqList.RequestId[0].ReportingParty.TypeSpecified = false; // TBD
|
||||
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT)
|
||||
{
|
||||
reqList.RequestId[0].REG_TRANSIT = new REG_TRANSIT();
|
||||
reqList.RequestId[0].REG_TRANSIT.EniNumber = aMessage.MessageCore.ENI;
|
||||
reqList.RequestId[0].REG_TRANSIT.EtaKielCanal = aMessage.MessageCore.ETA.Value;
|
||||
reqList.RequestId[0].REG_TRANSIT.ImoNumber = aMessage.MessageCore.IMO;
|
||||
}
|
||||
else
|
||||
{
|
||||
reqList.RequestId[0].REG_VISIT = new REG_VISIT();
|
||||
reqList.RequestId[0].REG_VISIT.EniNumber = aMessage.MessageCore.ENI;
|
||||
reqList.RequestId[0].REG_VISIT.EtaPortOfCall = aMessage.MessageCore.ETA.Value;
|
||||
reqList.RequestId[0].REG_VISIT.ImoNumber = aMessage.MessageCore.IMO;
|
||||
reqList.RequestId[0].REG_VISIT.PortOfCall = aMessage.MessageCore.PoC;
|
||||
}
|
||||
}
|
||||
|
||||
private static WasteType setWasteType(byte wasteTypeValue)
|
||||
{
|
||||
switch (wasteTypeValue)
|
||||
{
|
||||
case 1:
|
||||
return WasteType.WASTE_OILS_SLUDGE_1;
|
||||
case 2:
|
||||
return WasteType.WASTE_OILS_BILGE_WATER_2;
|
||||
case 3:
|
||||
return WasteType.WASTE_OILS_OTHERS_3;
|
||||
case 4:
|
||||
return WasteType.GARBAGE_FOOD_WASTE_4;
|
||||
case 5:
|
||||
return WasteType.GARBAGE_PLASTIC_5;
|
||||
case 6:
|
||||
return WasteType.GARBAGE_OTHER_6;
|
||||
case 7:
|
||||
return WasteType.SEWAGE_7;
|
||||
case 8:
|
||||
return WasteType.CARGO_ASSOCIATED_WASTE_8;
|
||||
default:
|
||||
return WasteType.CARGO_RESIDUES_9;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,10 +39,13 @@ namespace bsmd.dakosy
|
||||
foreach (string inputFile in Directory.GetFiles(localDir))
|
||||
{
|
||||
if (!Response.Read(inputFile))
|
||||
{
|
||||
_log.ErrorFormat("Error reading input file {0}", inputFile);
|
||||
}
|
||||
else
|
||||
{
|
||||
File.Delete(inputFile); // alternativ: move to archive folder
|
||||
|
||||
}
|
||||
// remote Dateien löschen
|
||||
sftp.RemoveProcessedFile(remoteDir, Path.GetFileName(inputFile));
|
||||
}
|
||||
@ -147,6 +150,9 @@ namespace bsmd.dakosy
|
||||
|
||||
aMessage.InternalStatus = Message.BSMDStatus.CONFIRMED; // ? Ok?
|
||||
break;
|
||||
default:
|
||||
_log.InfoFormat("unknown response type {0}", ediResponse.ResponseType);
|
||||
break;
|
||||
}
|
||||
|
||||
DBManager.Instance.Save(aMessage);
|
||||
|
||||
@ -2,6 +2,6 @@
|
||||
|
||||
[assembly: AssemblyCompany("Informatikbüro Daniel Schick")]
|
||||
[assembly: AssemblyProduct("BSMD NSW interface")]
|
||||
[assembly: AssemblyInformationalVersion("2.4.14")]
|
||||
[assembly: AssemblyInformationalVersion("2.4.16")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2014-2015 Informatikbüro Daniel Schick. All rights reserved.")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
@ -1,4 +1,4 @@
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: AssemblyVersion("2.4.14.*")]
|
||||
[assembly: AssemblyVersion("2.4.16.*")]
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user