async void Default_ZXing_Clicked(object sender, System.EventArgs e)
        {
            if (!await CheckCameraPermisstions())
            {
                return;
            }
            var overLay = new ZXingOverlay();
            var options = new ZXingOptions();

            scanPage = new ScannerPage(options, overLay);
            scanPage.OnScanResult += (result) =>
            {
                if (result is ZXingResult zResult)
                {
                    Logger.Log($"Found bar code {zResult.Text}");
                }
            };

            await Navigation.PushAsync(scanPage);
        }
Exemple #2
0
        /// <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 CustomScanPage() : base()
        {
            listview = new ListView
            {
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.CenterAndExpand,
                AutomationId      = "listview",
            };
            label = new Label
            {
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                AutomationId      = "label",
                TextColor         = Color.White,
                FontSize          = 40
            };
            ZXing.Mobile.MobileBarcodeScanningOptions scanningOptions = new ZXing.Mobile.MobileBarcodeScanningOptions {
                DelayBetweenContinuousScans = 2000
            };
            zxing = new ZXingScannerView
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.Start,
                Options           = scanningOptions
            };
            zxing.OnScanResult += (result) =>
                                  Device.BeginInvokeOnMainThread(() => {
                //zxing.IsAnalyzing = false;
                //await DisplayAlert("扫描条码", result.Text, "OK");
                HandleScanResult(result);
                // Navigate away
                //await Navigation.PopAsync();
            });

            overlay = new ZXingOverlay
            {
                //TopText = "请对准二维码",
                BottomText      = "阴暗天气建议打开闪光灯",
                ShowFlashButton = true,
                ButtonText      = "开灯"
            };
            overlay.FlashButtonClicked += (sender, e) =>
            {
                try
                {
                    if (!zxing.IsTorchOn)
                    {
                        sender.Text = "关灯";
                        //CrossLampState = true;
                        zxing.IsTorchOn = true;
                    }
                    else
                    {
                        sender.Text     = "开灯";
                        zxing.IsTorchOn = false;
                    }
                }
                catch (Exception)
                {
                }
            };
            var grid = new Grid
            {
                VerticalOptions   = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand,
            };

            grid.Children.Add(zxing, 0, 0);
            overlay.Children.Add(label, 0, 2);
            grid.Children.Add(overlay);


            // The root page of your application
            Content = grid;
        }