private async Task UpdateScanStateAsync(StockUpBillModel ob, string ID, int mode) { List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(mode); Parameters.Add(ID); string result = InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.UpdateStockUpScanState", Parameters); if (result == "1") { var sd = ob.XAY_StockUpOrderEntry.Single(o => o.Id == ID); sd.F_XAY_IsScan = true; var scancount = (from q in ob.XAY_StockUpOrderEntry where q.F_XAY_IsScan == false select new { q.F_XAY_IsScan }).Count(); if (scancount == 0) { Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(4); Parameters.Add(ob.Id); Parameters.Add(1); result = InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.UpdateStockUpScanState", Parameters); await Navigation.PopToRootAsync(); } } }
/// <summary> /// /// </summary> /// <param name="mode">1为扫描备货单号,2为扫描二维码,3为扫描物流单号,4为扫描k3备货单二维码查看图片,5为扫描二维码上传图片</param> public ScanPage(int mode) { InitializeComponent(); ZXing.Mobile.MobileBarcodeScanningOptions scanningOptions = new ZXing.Mobile.MobileBarcodeScanningOptions { DelayBetweenContinuousScans = 2000, PossibleFormats = new List <ZXing.BarcodeFormat> { ZXing.BarcodeFormat.CODE_128, ZXing.BarcodeFormat.CODE_39, ZXing.BarcodeFormat.CODE_93, ZXing.BarcodeFormat.EAN_13, ZXing.BarcodeFormat.EAN_8, ZXing.BarcodeFormat.QR_CODE }, TryHarder = App.Context.ScanHardMode }; zxing = new ZXingScannerView { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand, Options = scanningOptions, }; zxing.OnScanResult += (result) => Device.BeginInvokeOnMainThread(async() => { Vibration.Vibrate(); var duration = TimeSpan.FromMilliseconds(100); Vibration.Vibrate(duration); if (mode == 1) { StockUpBillModel stockUpBillModel = (StockUpBillModel)BindingContext; Loadinganimation.IsVisible = true; //BackgroundWorker worker = new BackgroundWorker(); await Task.Run(() => { List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(result.ToString()); string json = apiHelper.InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.StockUpExecuteService", Parameters); if (json == "err" || string.IsNullOrWhiteSpace(json)) { return; } else { var jsonobject = JsonConvert.DeserializeObject <StockUpBillModel>(json); stockUpBillModel.Id = jsonobject.Id; stockUpBillModel.FBillNo = jsonobject.FBillNo; stockUpBillModel.F_XAY_Custom = jsonobject.F_XAY_Custom; stockUpBillModel.F_XAY_Phone = jsonobject.F_XAY_Phone; stockUpBillModel.F_XAY_Logistics = jsonobject.F_XAY_Logistics; stockUpBillModel.XAY_StockUpOrderEntry = jsonobject.XAY_StockUpOrderEntry; } }); await Navigation.PopAsync(); //worker.DoWork += delegate //{}; //worker.RunWorkerAsync(); //worker.RunWorkerCompleted += async delegate { await Navigation.PopAsync(); }; } else if (mode == 2) { string qrstring = BaseToString(result.ToString()); StockUpBillModel stockUpBillModel = (StockUpBillModel)BindingContext; if (qrstring.Substring(0, 2) != "#%") { label.Text = "二维码数据格式有误"; return; } string jsonstring = qrstring.Substring(2); string[] stringarray = jsonstring.Split(','); if (stringarray.Count() >= 3) { string ID = stringarray[0]; if (Convert.ToBoolean(stringarray[2])) { var MaterialInfo = stringarray[3].Split('&'); for (int i = 0; i < MaterialInfo.Count(); i++) { string subID = MaterialInfo[i]; List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(2); Parameters.Add(subID); string apiresult = InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.UpdateStockUpScanState", Parameters); if (apiresult == "1") { var sd = stockUpBillModel.XAY_StockUpOrderEntry.Single(o => o.Id == ID); var s = sd.XAY_t_StockUpOrderSubEntry.Single(o => o.id == subID); s.F_XAY_IsCScan = true; var scancount = (from q in sd.XAY_t_StockUpOrderSubEntry where q.F_XAY_IsCScan == false select new { q.F_XAY_IsCScan }).Count(); if (scancount == 0) { await UpdateScanStateAsync(stockUpBillModel, ID, 1); } } else { label.Text = "err"; } } } else { await UpdateScanStateAsync(stockUpBillModel, ID, 1); label.Text = "扫描成功"; } } } else if (mode == 3) { StockUpPageModel Model = (StockUpPageModel)BindingContext; Model.LogisticsNum = result.ToString(); List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(mode); Parameters.Add(Model.Id); Parameters.Add(Model.LogisticsNum); string backresult = InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.UpdateStockUpScanState", Parameters); if (backresult == "1") { Model.isscan = true; await Navigation.PopAsync(); } else { label.Text = "err"; } } else if (mode == 4) { zxing.IsScanning = false; StringBuilder stringBuilder = (StringBuilder)BindingContext; stringBuilder.Append(result.ToString()); await Navigation.PopAsync(); } else if (mode == 5) { string qrresult = BaseToString(result.ToString()); string billno = string.Empty; if (qrresult.Substring(0, 2) != "#%") { billno = result.ToString(); } else { Loadinganimation.IsVisible = true; string jsonstring = qrresult.Substring(2); string[] stringarray = jsonstring.Split(','); if (stringarray.Count() >= 3) { string ID = stringarray[0]; string json = "{\"FormId\":\"9d0a72f2a1104fe1881969ad5a1fc22d\",\"FieldKeys\":\"FBillNO\",\"FilterString\":\"F_XAY_StockUpOrderEntity_FENTRYID=" + ID + "\",\"OrderString\":\"\",\"TopRowCount\":\"0\",\"StartRow\":\"0\",\"Limit\":\"0\"}"; string[] lists = Actions.Jsonhelper.JsonToString(json); if (lists != null) { billno = lists[0]; billno = billno.Replace("[", ""); billno = billno.Replace("]", ""); } } } StockUpPhoto photopage = new StockUpPhoto(); photopage.BindingContext = billno; Navigation.InsertPageBefore(photopage, this); await Navigation.PopAsync(); } }); label = new Label { HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center, AutomationId = "label", TextColor = Color.White, FontSize = 30 }; button = new Button { HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center, Text = "hahha" }; Loadinganimation = new AnimationView { Animation = "loading.json", HorizontalOptions = LayoutOptions.Center, WidthRequest = 200, AutoPlay = true, Loop = true, IsVisible = false }; #region button.Clicked += async delegate { //Vibration.Vibrate(); //var duration = TimeSpan.FromMilliseconds(100); //Vibration.Vibrate(duration); if (mode == 1) { StockUpBillModel stockUpBillModel = (StockUpBillModel)BindingContext; Loadinganimation.IsVisible = true; await Task.Run(() => { List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add("WLBHD201806220001"); string result = apiHelper.InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.StockUpExecuteService", Parameters); if (result == "err" || string.IsNullOrWhiteSpace(result)) { return; } else { var json = JsonConvert.DeserializeObject <StockUpBillModel>(result); stockUpBillModel.FBillNo = json.FBillNo; stockUpBillModel.F_XAY_Custom = json.F_XAY_Custom; stockUpBillModel.F_XAY_Phone = json.F_XAY_Phone; stockUpBillModel.F_XAY_Logistics = json.F_XAY_Logistics; stockUpBillModel.XAY_StockUpOrderEntry = json.XAY_StockUpOrderEntry; } }); await Navigation.PopAsync(); } else if (mode == 2) { StockUpBillModel stockUpBillModel = (StockUpBillModel)BindingContext; string a = "#%{'Id':'100049','isSpareParts':false,'isgroup':true,'MaterialInfo':[{'Id':'100040','MaterialId':'4154077','Piece':1,'Qty':7,'Unit':'个'}]}"; if (a.Substring(0, 2) != "#%") { await DisplayAlert("提示", "二维码数据格式有误", "OK"); return; } string jsonstring = a.Substring(2, a.Length - 2); JObject jObject = (JObject)JsonConvert.DeserializeObject(jsonstring); if (jObject.ContainsKey("Id") && jObject.ContainsKey("BillNo")) { if (stockUpBillModel.FBillNo != jObject["BillNo"].ToString()) { return; } string ID = jObject["Id"].ToString(); if ((bool)jObject["isgroup"]) { var MaterialInfo = jObject["MaterialInfo"]; for (int i = 0; i < MaterialInfo.Count(); i++) { string subID = MaterialInfo[i]["Id"].ToString(); List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(2); Parameters.Add(subID); string result = InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.UpdateStockUpScanState", Parameters);; if (result == "1") { var sd = stockUpBillModel.XAY_StockUpOrderEntry.Single(o => o.Id == ID && o.XAY_t_StockUpOrderSubEntry[i].id == subID); sd.XAY_t_StockUpOrderSubEntry[i].F_XAY_IsCScan = true; var scancount = (from q in sd.XAY_t_StockUpOrderSubEntry where q.F_XAY_IsCScan == false select new { q.F_XAY_IsCScan }).Count(); label.Text = "扫描成功"; if (scancount == 0) { await UpdateScanStateAsync(stockUpBillModel, ID, 1); } } } } else { await UpdateScanStateAsync(stockUpBillModel, ID, 1); } } } else if (mode == 3) { StockUpPageModel Model = (StockUpPageModel)BindingContext; Model.LogisticsNum = "123123123123"; List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(mode); Parameters.Add(Model.Id); Parameters.Add(Model.LogisticsNum); string result = InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.UpdateStockUpScanState", Parameters); if (result == "1") { Model.isscan = true; await Navigation.PopAsync(); } else { label.Text = "dadad"; } } }; #endregion overlay = new ZXingOverlay { ShowFlashButton = true, }; overlay.FlashButtonClicked += (sender, e) => { try { if (!zxing.IsTorchOn) { sender.Image = "flash_off.png"; // CrossLampState = true; zxing.IsTorchOn = true; } else { sender.Image = "flash_on.png"; zxing.IsTorchOn = false; } } catch (Exception ex) { throw ex; } }; var grid = new Grid { VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, }; grid.Children.Add(zxing); //overlay.Children.Add(button, 0, 0); overlay.Children.Add(Loadinganimation, 0, 1); overlay.Children.Add(label, 0, 0); grid.Children.Add(overlay); Content = grid; }
public StockUpStep() { InitializeComponent(); Task.Run(async() => { var cameraStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Camera); var storageStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage); if (cameraStatus != PermissionStatus.Granted || storageStatus != PermissionStatus.Granted) { var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Camera, Permission.Storage }); cameraStatus = results[Permission.Camera]; storageStatus = results[Permission.Storage]; } }); stockUpBillModel = new StockUpBillModel(); stepstate = false; BillNo.SetBinding(Label.TextProperty, new Binding("FBillNo") { Source = stockUpBillModel }); Name.SetBinding(Label.TextProperty, new Binding("F_XAY_Custom") { Source = stockUpBillModel }); Phone.SetBinding(Label.TextProperty, new Binding("F_XAY_Phone") { Source = stockUpBillModel }); listview.ItemTapped += async delegate { ScanPage scanPage = new ScanPage(2); scanPage.Title = "扫描二维码"; scanPage.BindingContext = stockUpBillModel; await Navigation.PushAsync(scanPage); }; scanBarAnimation.OnClick += async delegate { ScanPage scanPage = new ScanPage(1); scanPage.Title = "扫描备货单条码"; scanPage.BindingContext = stockUpBillModel; await Navigation.PushAsync(scanPage); //scanstacklayout.IsVisible = false; //resultstacklayout.IsVisible = true; }; scanQrAnimation.OnClick += async delegate { if (string.IsNullOrWhiteSpace(stockUpBillModel.FBillNo)) { scanQrAnimation.IsEnabled = false; await scanQrAnimation.TranslateTo(20, 0, 50); await scanQrAnimation.TranslateTo(0, 0, 50); await scanQrAnimation.TranslateTo(-20, 0, 50); await scanQrAnimation.TranslateTo(0, 0, 50); await scanQrAnimation.TranslateTo(20, 0, 50); await scanQrAnimation.TranslateTo(0, 0, 50); Device.BeginInvokeOnMainThread(() => { scanQrAnimation.IsEnabled = true; }); DependencyService.Get <IToast>().LongAlert("请先扫描备货单条码"); } else { ScanPage scanPage = new ScanPage(2); scanPage.Title = "扫描二维码"; scanPage.BindingContext = stockUpBillModel; await Navigation.PushAsync(scanPage); } }; scanbtn.Clicked += async delegate { ScanPage scanPage; if (string.IsNullOrWhiteSpace(stockUpBillModel.FBillNo)) { scanPage = new ScanPage(1); scanPage.Title = "扫描备货单条码"; } else { scanPage = new ScanPage(2); scanPage.Title = "扫描二维码"; } scanPage.BindingContext = stockUpBillModel; await Navigation.PushAsync(scanPage); }; picbtn.Clicked += async delegate { StockUpPhoto picpage = new StockUpPhoto(); picpage.BindingContext = stockUpBillModel.FBillNo; await Navigation.PushAsync(picpage); }; }