private EpsOutputTask GetEpsPrintTask(EpsOutput epsOutput, string printerName = "some physical printer", int copies = 1) { var task = new EpsOutputTask { Output = epsOutput, OutputTaskCode = EpsOutputTaskCodes.OTC_PRINT, OutputTaskOrder = 1, OutputTaskStatus = OutputStatuses.OS_NEW }; task.OutputTask_EpsOutputParam_List = new Quartz.Collection.HashSet <EpsOutputParam> { new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.Copies, OutputParamValue = copies.ToString() }, new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.PhysicalPrinter, OutputParamValue = printerName } }; return(task); }
private EpsOutputTask GetEpsShareTask(EpsOutput epsOutput, string targetFolder, string exportFormat = "wmsMLC.EPS.wmsEPS.ExportTypes.FRExcel2007") { var task = new EpsOutputTask { Output = epsOutput, OutputTaskCode = EpsOutputTaskCodes.OTC_SHARE, OutputTaskOrder = 1, OutputTaskStatus = OutputStatuses.OS_NEW }; task.OutputTask_EpsOutputParam_List = new Quartz.Collection.HashSet <EpsOutputParam> { new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.TargetFolder, OutputParamValue = targetFolder }, new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.FileFormat, OutputParamValue = exportFormat } }; return(task); }
private EpsOutputTask GetEpsFtpTask(EpsOutput epsOutput, string targetFolder, string exportFormat = "wmsMLC.EPS.wmsEPS.ExportTypes.FRExcel2007") { var task = new EpsOutputTask { Output = epsOutput, OutputTaskCode = EpsOutputTaskCodes.OTC_FTP, OutputTaskOrder = 1, OutputTaskStatus = OutputStatuses.OS_NEW }; task.OutputTask_EpsOutputParam_List = new Quartz.Collection.HashSet <EpsOutputParam> { new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.TargetFolder, OutputParamValue = targetFolder }, new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.FTPServerName, OutputParamValue = "10.0.0.19" }, new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.FTPServerLogin, OutputParamValue = "ftp_tester" }, new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.FTPServerPassword, OutputParamValue = "123" }, new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.FileFormat, OutputParamValue = exportFormat } }; return(task); }
public void When_outputtask_has_more_than_one_export_parameter_than_error() { var epsConfig = GetEpsConfiguration(); var configurator = new EpsJobConfigurator(epsConfig, new MacroProcessor()); var output = new EpsOutput { OutputID = -100, OutputStatus = OutputStatuses.OS_ON_TRANSFER, EpsHandler = 100, Login_r = "test_user_login" }; output.Output_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.EPS, OutputParamCode = EpsTaskParameterTypes.Zip, OutputParamValue = "1" }); output.Output_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.EPS, OutputParamCode = EpsTaskParameterTypes.ReserveCopy, OutputParamValue = "1" }); var emailTask = new EpsOutputTask { OutputTaskID = -101, OutputTaskCode = EpsOutputTaskCodes.OTC_MAIL, OutputTaskOrder = 1, OutputTaskStatus = OutputStatuses.OS_NEW, }; emailTask.OutputTask_EpsOutputParam_List.Add(new EpsOutputParam() { OutputParamType = EpsParamTypes.TSK, OutputParamCode = EpsTaskParameterTypes.FileFormat, OutputParamValue = "test1" }); emailTask.OutputTask_EpsOutputParam_List.Add(new EpsOutputParam() { OutputParamType = EpsParamTypes.TSK, OutputParamCode = EpsTaskParameterTypes.FileFormat, OutputParamValue = "test2" }); output.Output_EpsOutputTask_List.Add(emailTask); var session = new Mock <ISession>(); var resultConfig = configurator.Configure(output, session.Object, (i, exception, arg3) => { }); }
private EpsOutputTask GetEpsMailTask(EpsOutput epsOutput, string exportFormat = "wmsMLC.EPS.wmsEPS.ExportTypes.FRText") { var task = new EpsOutputTask { Output = epsOutput, OutputTaskCode = EpsOutputTaskCodes.OTC_MAIL, OutputTaskOrder = 1, OutputTaskStatus = OutputStatuses.OS_NEW }; task.OutputTask_EpsOutputParam_List = new Quartz.Collection.HashSet <EpsOutputParam> { new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.AsAttachment, OutputParamValue = "1" }, new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.Email, OutputParamValue = "*****@*****.**" }, new EpsOutputParam { Output = epsOutput, OutputTask = task, OutputParamCode = EpsTaskParameterTypes.FileFormat, OutputParamValue = exportFormat } }; return(task); }
private static IEpsTaskConfig CreateTaskConfig(EpsOutputTask task, IMacroProcessor macroProcessor, bool isNeedZip, bool isNeedReserveCopy, Action <int, Exception, TimeSpan> taskCompleteAction) { var res = new EpsTaskConfig(); res.TaskId = task.OutputTaskID; res.TaskOrder = task.OutputTaskOrder; res.IsNeedZip = isNeedZip; res.IsNeedReserveCopy = isNeedReserveCopy; res.Parameters = task .OutputTask_EpsOutputParam_List .Select(i => new EpsTaskParameter { Code = i.OutputParamCode, Value = macroProcessor.Process(i.OutputParamValue), Subvalue = macroProcessor.Process(i.OutputParamSubValue) }) .ToArray(); //Такое "кривое" преобразование, чтобы разделить функциональность в Eps и основной системы // По сути дублируем enum EpsTaskType var taskType = EpsTaskExecutorTypes.None; if (task.OutputTaskCode != EpsOutputTaskCodes.None) { Enum.TryParse(task.OutputTaskCode.ToString().Substring(4), true, out taskType); } res.TaskExecutorType = taskType; var exportFormats = res.Parameters .Where(i => i.Code == EpsTaskParameterTypes.FileFormat) .Select(p => p.Value) .Cast <string>() .ToArray(); //больше не должно быть форматов if (exportFormats.Length > 1) { throw new Exception( string.Format( "For output task with id {0} set more then one FileFormat. Please, check the settings.", task.OutputTaskID)); } if (exportFormats.Length == 1) { var exportFormat = exportFormats[0]; if (string.IsNullOrEmpty(exportFormat)) { throw new Exception( string.Format("For output task with id {0} set empty FileFormat. Please, check the settings.", task.OutputTaskID)); } var encodingNames = res.Parameters .Where(i => i.Code == EpsTaskParameterTypes.Conversion) .Select(p => p.Value) .Cast <string>() .ToArray(); if (encodingNames.Length > 1) { throw new Exception( string.Format( "For output task with id {0} set more then one Conversion parameter. Please, check the settings.", task.OutputTaskID)); } var encoding = DefaultFileEncoding; if (encodingNames.Length == 1) { if (string.IsNullOrEmpty(encodingNames[0])) { throw new Exception( string.Format( "For output task with id {0} set empty Conversion. Please, check the settings.", task.OutputTaskID)); } encoding = Encoding.GetEncoding(encodingNames[0]); } var spacelife = res.Parameters .Any(i => i.Code == EpsTaskParameterTypes.Spacelife && string.Equals(i.Value, "1")); res.ExportType = new ExportType { Encoding = encoding, Format = exportFormat, Spacelife = spacelife }; } res.HandleTaskComplete = taskCompleteAction; return(res); }
private static IEnumerable <EpsOutputTask> ProcessTaskParams(EpsJob job, ISession session, List <WmsReport> reports, ILog log) { var res = new List <EpsOutputTask>(); if (job.Job_EpsTask2Job_List.Count == 0) { return(res); } var uselog = log != null; foreach (var task2Job in job.Job_EpsTask2Job_List) { var task = task2Job.Task; if (task.TaskLocked) { if (uselog) { log.DebugFormat("Task '{0}' is locked.", task.TaskCode); } continue; } if (task.TaskType == EpsTaskTypes.None) { if (uselog) { log.Debug("Undefined EPS Task type."); } continue; } var outputTask = new EpsOutputTask { OutputTaskCode = (EpsOutputTaskCodes)Enum.Parse(typeof(EpsOutputTaskCodes), "OTC_" + task.TaskType), OutputTaskOrder = task2Job.Task2JobOrder }; // разбираем параметры if (task.CFG_List.Count > 0) { EpsPrinterLogical printerLogical = null; foreach (var configTsk in task.CFG_List) { if (configTsk.EpsConfigLocked) { if (uselog) { log.DebugFormat("Task {0}. Parameter '{1}' (id={2}) is locked.", task.TaskCode, configTsk.EpsConfigParamCode, configTsk.EpsConfigID); } continue; } if (string.IsNullOrEmpty(configTsk.EpsConfigParamCode)) { throw new Exception(string.Format("Param code in task {0} (id={1}) is empty.", configTsk.EpsConfigParamCode, configTsk.EpsConfigID)); } EpsTaskParams param; if (!Enum.TryParse(configTsk.EpsConfigParamCode, out param)) { param = EpsTaskParams.None; } var epsConfigParamCode = configTsk.EpsConfigParamCode; var epsConfigValue = configTsk.EpsConfigValue; switch (param) { case EpsTaskParams.PhysicalPrinter: continue; case EpsTaskParams.None: // из таких мы знаем только EpsLogicalPrinter if ( !string.Equals(configTsk.EpsConfigParamCode, EpsLogicalPrinter, StringComparison.InvariantCultureIgnoreCase)) { throw new Exception(string.Format("Unknown EpsConfigParamCode '{0}'.", configTsk.EpsConfigParamCode)); } //Задан логический принтер if (!string.IsNullOrEmpty(configTsk.EpsConfigValue)) { printerLogical = session.Get <EpsPrinterLogical>(configTsk.EpsConfigValue); if (printerLogical == null) { throw new Exception( string.Format("Can't get PrinterLogical by key '{0}'.", configTsk.EpsConfigValue)); } //Проверяем физический принтер var printerPhysical = printerLogical.PhysicalPrinter_r; if (printerPhysical == null) { throw new Exception( string.Format("Can't get PrinterPhysical by logical '{0}'.", printerLogical.LogicalPrinter)); } if (printerPhysical.PhysicalPrinterLocked) { throw new Exception( string.Format("Physical printer '{0}' is locked.", printerPhysical.PhysicalPrinter)); } epsConfigParamCode = EpsTaskParams.PhysicalPrinter.ToString(); epsConfigValue = printerLogical.PhysicalPrinter_r.PhysicalPrinter; } break; } outputTask.OutputTask_EpsOutputParam_List.Add(new EpsOutputParam { OutputTask = outputTask, OutputParamCode = epsConfigParamCode, OutputParamValue = epsConfigValue, OutputParamType = EpsParamTypes.TSK }); } //Проверяем наличие физ. принтера if (task.TaskType == EpsTaskTypes.PRINT) { if ( outputTask.OutputTask_EpsOutputParam_List.All( p => EnumHelper.ParseEnum(p.OutputParamCode, EpsTaskParams.None) != EpsTaskParams.PhysicalPrinter)) { throw new Exception(string.Format( "PhysicalPrinter parameter is not present for task '{0}'.", task.TaskCode)); } //Добавляем copies для задачи Print if (reports != null) { var copies = outputTask.OutputTask_EpsOutputParam_List.Where( p => EnumHelper.ParseEnum(p.OutputParamCode, EpsTaskParams.None) == EpsTaskParams.Copies).ToArray(); if (copies.Length > 0) //Удаляем { foreach (var p in copies) { session.Delete(p); outputTask.OutputTask_EpsOutputParam_List.Remove(p); } //Определяем новые copies с учетом отчета и принтера //TODO: почему тут мы берем первую попапвшуюся запись? int copy; int.TryParse(copies[0].OutputParamValue, out copy); foreach (var report in reports.Where(p => p.ReportFile_r != null)) { outputTask.OutputTask_EpsOutputParam_List.Add(new EpsOutputParam { OutputTask = outputTask, OutputParamCode = EpsTaskParams.Copies.ToString(), OutputParamValue = (report.ReportCopies * copy * (printerLogical == null ? 0 : printerLogical.LogicalPrinterCopies)) .ToString(CultureInfo.InvariantCulture), OutputParamSubValue = report.ReportFile_r.ReportFile, OutputParamType = EpsParamTypes.TSK }); } } } } } res.Add(outputTask); } return(res); }
public void When_parameters_is_pased_than_its_recognized() { var epsConfig = GetEpsConfiguration(); var configurator = new EpsJobConfigurator(epsConfig, new MacroProcessor()); var output = new EpsOutput { OutputID = -100, OutputStatus = OutputStatuses.OS_ON_TRANSFER, EpsHandler = 100, Login_r = "test_user_login", ReportFileSubFolder_r = "TST" }; output.Output_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.EPS, OutputParamCode = EpsTaskParameterTypes.Zip, OutputParamValue = "1" }); output.Output_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.EPS, OutputParamCode = EpsTaskParameterTypes.ReserveCopy, OutputParamValue = "1" }); var emailTask = new EpsOutputTask { OutputTaskID = -101, OutputTaskCode = EpsOutputTaskCodes.OTC_MAIL, OutputTaskOrder = 1, OutputTaskStatus = OutputStatuses.OS_NEW, }; output.Output_EpsOutputTask_List.Add(emailTask); emailTask.OutputTask_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.TSK, OutputParamCode = EpsTaskParameterTypes.FileFormat, OutputParamValue = "wmsMLC.EPS.wmsEPS.ExportTypes.FRExcel2007" }); emailTask.OutputTask_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.TSK, OutputParamCode = EpsTaskParameterTypes.Conversion, OutputParamValue = "UTF-32" }); emailTask.OutputTask_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.TSK, OutputParamCode = EpsTaskParameterTypes.Spacelife, OutputParamValue = "1" }); var reportParam = new EpsOutputParam { OutputParamType = EpsParamTypes.REP, OutputParamCode = EpsTaskParameterTypes.EpsReport, OutputParamValue = "Test001.frx" }; output.Output_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.REP, OutputParamCode = "Parameter1", OutputParamValue = "value1", OutputParamSubValue = "Test001.frx" }); output.Output_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.REP, OutputParamCode = "Parameter2", OutputParamValue = "value2", OutputParamSubValue = "Test001.frx" }); output.Output_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.REP, OutputParamCode = EpsTaskParameterTypes.ResultReportFile, OutputParamValue = "${SQL=select REPORT_${SYSMACHINENAME}_${UserCode}_${DATE:yyyyMMdd}_${Parameter1}_${Parameter2}.txt from dual}", OutputParamSubValue = "Test001.frx" }); output.Output_EpsOutputParam_List.Add(new EpsOutputParam { OutputParamType = EpsParamTypes.REP, OutputParamCode = EpsTaskParameterTypes.ChangeODBC, OutputParamValue = "1" }); output.Output_EpsOutputParam_List.Add(reportParam); var resultReportName = string.Format("REPORT_{0}_{1}_{2:yyyyMMdd}_value1_value2.txt", Environment.MachineName, output.Login_r, DateTime.Now); var sqlQuery = new Mock <ISQLQuery>(); sqlQuery.Setup(i => i.UniqueResult <string>()).Returns(resultReportName); var session = new Mock <ISession>(); session.Setup(i => i.CreateSQLQuery(It.IsAny <string>())).Returns(sqlQuery.Object); var reportUseODACCpv = new WmsReportCPV { CPVValue = "1", CustomParam = new WmsCustomParam { CustomParamCode = WmsReportCPV.ReportUseODACParameter }, REPORT = new WmsReport { Report = Path.GetFileNameWithoutExtension(reportParam.OutputParamValue) } }; using (ShimsContext.Create()) { ShimLinqExtensionMethods.QueryOf1ISession(s => new[] { reportUseODACCpv }.AsQueryable()); var resultConfig = configurator.Configure(output, session.Object, (i, exception, arg3) => { }); resultConfig.JobId.Should().Be(output.OutputID); resultConfig.Tasks.Should().HaveCount(1); resultConfig.Reports.Should().HaveCount(1); var resultEmailTask = resultConfig.Tasks.Single(i => i.TaskId == emailTask.OutputTaskID); ("OTC_" + resultEmailTask.TaskExecutorType).Should().Be(emailTask.OutputTaskCode.ToString()); resultEmailTask.IsNeedZip.Should().BeTrue(); resultEmailTask.IsNeedReserveCopy.Should().BeTrue(); resultEmailTask.ExportType.Should().NotBeNull(); resultEmailTask.ExportType.Encoding.Should().Be(Encoding.UTF32); resultEmailTask.ExportType.Spacelife.Should().BeTrue(); resultEmailTask.ExportType.Format.Should().Be("wmsMLC.EPS.wmsEPS.ExportTypes.FRExcel2007"); resultEmailTask.HandleTaskComplete.Should().NotBeNull(); var resultReport = resultConfig.Reports.Single(i => i.ReportName == reportParam.OutputParamValue); resultReport.ReportCode.Should().Be(Path.GetFileNameWithoutExtension(reportParam.OutputParamValue)); resultReport.ConnectionString.Should().Be(epsConfig.OdacConnectionString); resultReport.ReportFullFileName.Should().Be(Path.Combine(epsConfig.ReportPath, output.ReportFileSubFolder_r, reportParam.OutputParamValue)); resultReport.Parameters.Should().Contain("Parameter1", "value1"); resultReport.Parameters.Should().Contain("Parameter2", "value2"); resultReport.Parameters.Should().Contain(EpsReportParameterTypes.UserCode, output.Login_r); resultReport.ReportResultFileName.Should().Be(resultReportName); } }