public UpdateOrdersStatusResponse UpdateOrdersStatus(UpdateOrdersStatusRequest request) { return(MessageProcessor.Process(request, new UpdateOrdersStatusOp())); }
private void backgroudWorker_PrintReports(object obj) { try { const int getReportDataProgressBarWeight = 30; const int printReportProgressBarWeight = 70; //const int finishUpdateStatusProgressBarWeight = 10; string printerName = PrintingApp.CurrentUserInfo.UserPrinterConfig.A4Printer ?? PrintingApp.CurrentUserInfo.UserPrinterConfig.A5Printer; List <ReportInfo> reportDtoList = obj as List <ReportInfo>; BeginInvoke(new Action(() => extendProgressBar.ReportProgress(0))); BeginInvoke(new Action(DisableControls)); Log.InfoFormat("Start printing report, the count of report is {0}...", reportDtoList.Count); var exceptionReportDataOrderNumbers = new List <string>(); string selectOrderNumbers = string.Join(",", reportDtoList.Select(r => r.OrderNumber).ToArray()); var printingService = ServiceFactory.GetPrintingService(); var request = new GetReportDataRequest() { Username = PrintingApp.UserCredential.UserName, Password = PrintingApp.UserCredential.Password, OrderNumbers = selectOrderNumbers }; var response = printingService.GetReportData(request); if (response.ResultType == ResultTypes.Ok || response.ResultType == ResultTypes.PartiallyOk) { var allSelectedOrderNumberArray = reportDtoList.Select(r => r.OrderNumber).ToArray(); var successGetReportOrderNumberArray = response.Reports.Select(r => r.OrderNumber).ToArray(); exceptionReportDataOrderNumbers = allSelectedOrderNumberArray.Except(successGetReportOrderNumberArray).ToList(); } else { Invoke(new Action(() => { EnableControls(); MessageBox.Show("获取报告数据出错!"); })); return; } BeginInvoke(new Action(() => extendProgressBar.ReportProgress(getReportDataProgressBarWeight))); var finishPrintOrderNumbers = new List <string>(); var exceptionPrintOrderNumbers = new List <string>(); var reports = response.Reports; int index = 0; int count = reports.Count(); foreach (var reportInfo in reports) { index++; reportInfo.ReportTemplateCode = reportDtoList.First(r => r.OrderNumber == reportInfo.OrderNumber).ReportTemplateCode; if (PrintReport(printerName, reportInfo)) { finishPrintOrderNumbers.Add(reportInfo.OrderNumber); } else { exceptionPrintOrderNumbers.Add(reportInfo.OrderNumber); } int calcWeight = (int)((double)index / count * printReportProgressBarWeight + getReportDataProgressBarWeight); //更新报告状态 var updateOrdersStatusRequest = new UpdateOrdersStatusRequest() { Username = PrintingApp.UserCredential.UserName, Password = PrintingApp.UserCredential.Password, OrderTransitions = new [] { new OrderTransition() { OrderNumber = reportInfo.OrderNumber, CurrentStatus = OrdersStatus.FinishCheck, NewStatus = OrdersStatus.FinishPrint } }, }; var updateOrdersStatusResponse = printingService.UpdateOrdersStatus(updateOrdersStatusRequest); BeginInvoke(new Action(() => extendProgressBar.ReportProgress(calcWeight))); } Invoke(new Action(() => { finishPrintOrderNumbers.ForEach(o => UpdateOrderStatusRows(o, ConstString.OrdersStatus_FinishPrint)); extendProgressBar.ReportProgress(100); EnableControls(); StringBuilder errorMessage = new StringBuilder(); if (exceptionReportDataOrderNumbers.Any()) { errorMessage.Append(string.Format("本次获取报告数据有部分异常,体检单号为: {0}", string.Join(",", exceptionReportDataOrderNumbers.ToArray()))); } if (exceptionPrintOrderNumbers.Any()) { errorMessage.Append(string.Format("本次打印有部分异常,体检单号为: {0}", string.Join(",", exceptionPrintOrderNumbers.ToArray()))); } if (string.IsNullOrWhiteSpace(errorMessage.ToString())) { MessageBox.Show("打印完成!"); } else { MessageBox.Show(errorMessage.ToString()); } })); Log.Info("Finish printing report..."); } catch (Exception ex) { Log.Error("Error while processing print reports.", ex); Invoke(new Action(() => { EnableControls(); MessageBox.Show("打印异常!"); })); } }