Beispiel #1
0
        public bool Execute()
        {
            var unitOfWork = ObjectFactory.GetNamedInstance<IUnitOfWork>(EnumModule.SystemSetting.ToString());
            var unitOfWorkRepository = ObjectFactory.GetNamedInstance<IUnitOfWorkRepository>(EnumModule.SystemSetting.ToString());
            var openScanRepository = ObjectFactory.GetInstance<IOPENScanRepository>();
            var pidService = ObjectFactory.GetInstance<BPiaoBao.AppServices.DomesticTicket.PidService>();

            var scanList = openScanRepository.FindAll(p => p.State == EnumOPEN.NoScan).ToList();
            if (scanList.Count == 0)
                return false;
            scanList.ForEach(p =>
            {
                p.State = EnumOPEN.Scanning;
                unitOfWorkRepository.PersistUpdateOf(p);
            });
            unitOfWork.Commit();

            Parallel.ForEach(scanList, (item) =>
            {
                string result = HttpHelper.Get(item.TemplateName);
                var ticketNumList = result.Split(new string[] { "\r", "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();
                OpenTicketResponse openTicketResponse = pidService.ScanOpenTicket(item.IP, item.Port.ToString(), item.OfficeNum, ticketNumList);
                item.ScanCount = openTicketResponse.OpenTKList.Count;
                item.OPENCount = openTicketResponse.OpenTKList.Where(p => string.Equals(p.TKStatus, "OPEN FOR USE", StringComparison.OrdinalIgnoreCase)).Count();
                item.State = EnumOPEN.Scaned;

                unitOfWorkRepository.PersistUpdateOf(item);
                DataTable dt = new DataTable(item.TemplateName);
                List<KeyValuePair<string, Type>> headArray = new List<KeyValuePair<string, Type>>
            {
                 new KeyValuePair<string,Type>("票号",typeof(string)),
                 new KeyValuePair<string,Type>("扫描状态",typeof(string)),
                 new KeyValuePair<string,Type>("扫描OFFICE",typeof(string)),
                 new KeyValuePair<string,Type>("备注",typeof(string))
            };
                headArray.ForEach(p => dt.Columns.Add(p.Key, p.Value));
                openTicketResponse.OpenTKList.ForEach(p => dt.Rows.Add(p.TKNumber, p.TKStatus, item.OfficeNum, p.DetrData));
                ExportExcelContext export = new ExportExcelContext("Excel2003");
                item.TemplateUrl = export.Write(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Export"), dt);
            });
            unitOfWork.Commit();
            return true;
        }