示例#1
0
 public UpdateOrdersStatusResponse UpdateOrdersStatus(UpdateOrdersStatusRequest request)
 {
     return(MessageProcessor.Process(request, new UpdateOrdersStatusOp()));
 }
示例#2
0
        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("打印异常!");
                }));
            }
        }