using BBWY.Client.APIServices;
using BBWY.Client.Models.PackTask;
using BBWY.Client.Models;
using BBWY.Client.Views.PackTask;
using BBWY.Common.Models;
using GalaSoft.MvvmLight.Command;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.Windows;
using BBWY.Client.Models.QualityTask;
using BBWY.Client.Views.QualityTask;
using BBWY.Client.Models.APIModel.Response.PackPurchaseTask;
using NPOI.Util.ArrayExtensions;
using System.Threading.Tasks;
using Org.BouncyCastle.Asn1.Crmf;
using System.Runtime.InteropServices.WindowsRuntime;
using NPOI.Util;
using BBWY.Controls;
using WebSocketSharp;

namespace BBWY.Client.ViewModels
{
    public class QualityViewModel : BaseVM
    {
        #region 属性


        public int goodProductQuantity;
        public int arrivalQuantity;

        /// <summary>
        /// 到货数量
        /// </summary>
        public int ArrivalQuantity { get => arrivalQuantity; set { Set(ref arrivalQuantity, value); } }

        /// <summary>
        /// 良品数量
        /// </summary>
        public int GoodProductQuantity { get => goodProductQuantity; set { Set(ref goodProductQuantity, value); } }

        ///// <summary>
        ///// 预计完成时间
        ///// </summary>
        //public DateTime? PreCompeteTime { get; set; }

        private ObservableCollection<PurchaseSku> purchaseSkuList;
        public ObservableCollection<PurchaseSku> PurchaseSkuList { get => purchaseSkuList; set { Set(ref purchaseSkuList, value); } }

        private string searchSkuId;
        public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, value); } }

        // public long TaskId { get; set; }
        //private bool isSelected;
        //public bool IsSelected { get => isSelected; set { Set(ref isSelected, value); } }

        private ObservableCollection<string> worryList = new ObservableCollection<string> {
               "否","是"
             };
        public ObservableCollection<string> WorryList { get => worryList; set { Set(ref worryList, value); } }

        private ObservableCollection<string> positionTypeList = new ObservableCollection<string> {
        "商家仓","云仓", "京仓","聚水潭齐越仓"};
        public ObservableCollection<string> PositionTypeList { get => positionTypeList; set { Set(ref positionTypeList, value); } }

        private ObservableCollection<string> packTypeList = new ObservableCollection<string> {
               "单件","多件"
             };
        public ObservableCollection<string> PackTypeList { get => packTypeList; set { Set(ref packTypeList, value); } }

        private ObservableCollection<string> basicPackList = new ObservableCollection<string> {
               "快递袋","纸箱","麻袋"
             };
        public ObservableCollection<string> BasicPackList { get => basicPackList; set { Set(ref basicPackList, value); } }

        private ObservableCollection<string> isNeedBarCodeList = new ObservableCollection<string> {
        "需要", "不需要" };
        public ObservableCollection<string> IsNeedBarCodeList { get => isNeedBarCodeList; set { Set(ref isNeedBarCodeList, value); } }

        private ObservableCollection<string> isNeedCerList = new ObservableCollection<string> {
        "需要", "不需要" };
        public ObservableCollection<string> IsNeedCerList { get => isNeedCerList; set { Set(ref isNeedCerList, value); } }


        private ObservableCollection<string> certificatePositionList = new ObservableCollection<string> {
                 "无需合格证","外部包装","产品包装"
             };
        public ObservableCollection<string> CertificatePositionList { get => certificatePositionList; set { Set(ref certificatePositionList, value); } }

        private ObservableCollection<string> availabilityList = new ObservableCollection<string> {
               "已到货","部分到货","未到货"
             };
        public ObservableCollection<string> AvailabilityList { get => availabilityList; set { Set(ref availabilityList, value); } }


        private int floorDragNumber;
        public int FloorDragNumber { get => floorDragNumber; set { Set(ref floorDragNumber, value); } }

        private ObservableCollection<int> floorDragNumberList = new ObservableCollection<int>
        {

        };
        public ObservableCollection<int> FloorDragNumberList { get => floorDragNumberList; set { Set(ref floorDragNumberList, value); } }




        //private ObservableCollection<string> preCompeteTimeDayList = new ObservableCollection<string>
        //{

        //};
        //public ObservableCollection<string> PreCompeteTimeDayList
        //{
        //    get => preCompeteTimeDayList; set
        //    {

        //        Set(ref preCompeteTimeDayList, value);

        //    }
        //}


        //private ObservableCollection<string> preCompeteTimeHourList = new ObservableCollection<string> {
                
        //     };
        //public ObservableCollection<string> PreCompeteTimeHourList { get => preCompeteTimeHourList; set { Set(ref preCompeteTimeHourList, value); } }

        ////
        //public string preCompeteTimeDay;
        //public string PreCompeteTimeDay
        //{
        //    get => preCompeteTimeDay; set
        //    {

        //        Set(ref preCompeteTimeDay, value);
        //        PreCompeteTimeDayOnChanged();//
        //    }
        //}

     

        //public string preCompeteTimeHour;
        //public string PreCompeteTimeHour { get => preCompeteTimeHour; set { Set(ref preCompeteTimeHour, value); } }


        private ObservableCollection<WareHourseDTO> wareHourseList = new ObservableCollection<WareHourseDTO> { };
        public ObservableCollection<WareHourseDTO> WareHourseList { get => wareHourseList; set { Set(ref wareHourseList, value); } }

        private int wareHourseCount;
        public int WareHourseCount { get => wareHourseCount; set { Set(ref wareHourseCount, value); } }



        private int skuCount;
        /// <summary>
        /// Sku任务数
        /// </summary>
        public int SkuCount { get => skuCount; set { Set(ref skuCount, value); } }

        private string skuId;
        /// <summary>
        /// Sku
        /// </summary>
        public string SkuId { get => skuId; set { Set(ref skuId, value); } }


        public string orderId;
        public string OrderId { get => orderId; set { Set(ref orderId, value); } }

        private string logo;
        /// <summary>
        /// 店铺Sku图链接
        /// </summary>
        public string Logo { get => logo; set { Set(ref logo, value); } }

        private string skuName;
        /// <summary>
        /// 采购Sku名称
        /// </summary>
        public string SkuName { get => skuName; set { Set(ref skuName, value); } }

        private string brand;
        /// <summary>
        /// 品牌
        /// </summary>
        public string Brand { get => brand; set { Set(ref brand, value); } }


        private string productNo;
        /// <summary>
        /// 货号
        /// </summary>
        public string ProductNo { get => productNo; set { Set(ref productNo, value); } }

        private string brandName;
        /// <summary>
        /// 品名(手写上传)
        /// </summary>
        public string BrandName { get => brandName; set { Set(ref brandName, value); } }


        private int goodsNumber;
        /// <summary>
        /// 配件数
        /// </summary>
        public int GoodsNumber { get => goodsNumber; set { Set(ref goodsNumber, value); } }
        private Worry isWorry;
        /// <summary>
        /// 是否加急
        /// </summary>
        public Worry IsWorry { get => isWorry; set { Set(ref isWorry, value); } }

        private Availability availability;
        /// <summary>
        /// 到货情况(待收货=0,部分收货=1,已到货=2)
        /// </summary>
        public Availability Availability { get => availability; set { Set(ref availability, value); } }

        private PackType packType;
        /// <summary>
        /// 打包类型(单件=0,多件=1)
        /// </summary>
        public PackType PackType { get => packType; set { Set(ref packType, value); } }

        private BasicPack basicPack;
        /// <summary>
        /// 基础包装(快递袋=0,纸箱=1,麻袋=2)
        /// </summary>
        public BasicPack BasicPack { get => basicPack; set { Set(ref basicPack, value); } }

        private PositionType positionType;
        /// <summary>
        /// 落仓(商家仓=0,云仓=1,京仓=2,聚水潭齐越仓=3)
        /// </summary>
        public PositionType PositionType { get => positionType; set { Set(ref positionType, value); } }

        private string skuTitle;
        /// <summary>
        /// sku配件商品名称
        /// </summary>
        public string SkuTitle { get => skuTitle; set { Set(ref skuTitle, value); } }

        private Need isNeedBarCode;
        /// <summary>
        /// 是否需要合格证
        /// </summary>
        public Need IsNeedBarCode { get => isNeedBarCode; set { Set(ref isNeedBarCode, value); } }


        private Need isNeedCertificateModel;
        /// <summary>
        /// 是否需要条形码
        /// </summary>
        public Need IsNeedCertificateModel { get => isNeedCertificateModel; set { Set(ref isNeedCertificateModel, value); } }


        private BarCodeModel barCodeModel;
        /// <summary>
        /// 条形码
        /// </summary>
        public BarCodeModel BarCodeModel { get => barCodeModel; set { Set(ref barCodeModel, value); } }


        private bool isSetBarCode;
        /// <summary>
        /// 设置显示(条形码)
        /// </summary>
        public bool IsSetBarCode
        {
            get => isSetBarCode;
            set
            {

                Set(ref isSetBarCode, value);
                // IsNeedBarCode = IsSetBarCode ? Need.不需要 : Need.需要;
            }
        }

        private bool isSetCertificate;
        /// <summary>
        /// 设置显示(合格证)
        /// </summary>
        public bool IsSetCertificate
        {
            get => isSetCertificate; set
            {

                Set(ref isSetCertificate, value);
                //IsNeedCertificateModel = IsSetCertificate ? Need.不需要 : Need.需要;
            }
        }
        private string setSpuCerStatus;

        public string SetSpuCerStatus { get => setSpuCerStatus; set { Set(ref setSpuCerStatus, value); } }
        private bool isSetSpuCertificate = true;


        /// <summary>
        /// 设置spu显示(合格证)
        /// </summary>
        public bool IsSetSpuCertificate
        {
            get => isSetSpuCertificate; set
            {

                Set(ref isSetSpuCertificate, value);
                SetSpuCerStatus = IsSetSpuCertificate ? "设置spu模板" : "修改spu模板";
            }
        }


        private string saveTask;

        /// <summary>
        /// 设置显示(合格证)
        /// </summary>
        public string SaveTask { get => saveTask; set { Set(ref saveTask, value); } }


        private string spuId;
        /// <summary>
        /// 合格证
        /// </summary>
        public string SpuId { get => spuId; set { Set(ref spuId, value); } }

        private CertificateModel spuCertificateModel;
        /// <summary>
        /// spu合格证
        /// </summary>
        public CertificateModel SpuCertificateModel { get => spuCertificateModel; set { Set(ref spuCertificateModel, value); } }



        private CertificateModel certificateModel;
        /// <summary>
        /// 合格证
        /// </summary>
        public CertificateModel CertificateModel { get => certificateModel; set { Set(ref certificateModel, value); } }

        /// <summary>
        /// 合格证位置(外部包装=0,产品包装=1)
        /// </summary>
        private CertificatePosition certificatePosition;
        /// <summary>
        /// 合格证位置(外部包装=0,产品包装=1)
        /// </summary>
        public CertificatePosition CertificatePosition { get => certificatePosition; set { Set(ref certificatePosition, value); } }

        /// <summary>
        /// 注意事项(对接备注)
        /// </summary>
        private string markMessage;
        /// <summary>
        /// 注意事项(对接备注)
        /// </summary>
        public string MarkMessage { get => markMessage; set { Set(ref markMessage, value); } }


        private ObservableCollection<IncreateModel> increateList;
        /// <summary>
        /// 增量耗材查询关键字
        /// </summary>
        public ObservableCollection<IncreateModel> IncreateList { get => increateList; set { Set(ref increateList, value); } }
        string[] increates = new string[] { "气泡纸", "气泡袋", "POP袋", "折纸箱", "气泡纸封边", "彩盒", "剪胶", "剪彩带", "快递袋", "收纳盒", "纸箱子", "装纸箱", "封边", "胶带", "折彩盒" };

        PackPurchaseTaskService packPurchaseTaskService;
        PackTaskService packTaskService;
        ProductService productService;
        GlobalContext globalContext;
        private bool isLoading = false;
        public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } }

        PurchaseService purchaseService;
        public string OriginShopName { get; set; }


        private string skuPurchaseSchemeId;
        public string SkuPurchaseSchemeId { get => skuPurchaseSchemeId; set { Set(ref skuPurchaseSchemeId, value); } }
        public Platform Platform { get; set; }
        public string ShopId { get; set; }
        public long TaskId { get; set; }
        public string UserName { get; set; }

        public ICommand SetBarCodeCommand { get; set; }
        public ICommand SetCertificateCommand { get; set; }
        public ICommand LookBarCommand { get; set; }
        public ICommand LookCerCommand { get; set; }

        public ICommand OpenSkuDetailCommand { get; set; }
        public ICommand CompeteQualityTaskCommand { get; set; }
        public ICommand SearchSkuCommand { get; set; }
        #endregion

        public QualityViewModel(ProductService productService, GlobalContext globalContext, PackPurchaseTaskService packPurchaseTaskService, PurchaseService purchaseService, PackTaskService packTaskService)
        {
            this.packPurchaseTaskService = packPurchaseTaskService;
            this.productService = productService;
            this.globalContext = globalContext;

            OpenSkuDetailCommand = new RelayCommand<object>(OpenSkuDetail);
            SetBarCodeCommand = new RelayCommand(SetBarCode);
            SetCertificateCommand = new RelayCommand<PurchaseSku>(SetCertificate);
            LookBarCommand = new RelayCommand(LookBar);
            LookCerCommand = new RelayCommand<CertificateModel>(LookCer);
            CompeteQualityTaskCommand = new RelayCommand<object>(CompeteQualityTask);
            IncreateList = new ObservableCollection<IncreateModel>();
            foreach (var item in increates)
            {
                IncreateList.Add(new IncreateModel
                {
                    IncreateName = item,
                    IsSelected = false
                });
            }

            this.purchaseService = purchaseService;
            this.packTaskService = packTaskService;

        }


        #region 方法 
        private void CompeteQualityTask(object obj)
        {

            if (FloorDragNumber <= 0)
            {
                MessageBox.Show($"请选择摆放地拖编号");
                return;
            }

            if (GoodProductQuantity > ArrivalQuantity)
            {
                MessageBox.Show($"良品数量:{GoodProductQuantity}不能大于到货数量:{ArrivalQuantity}");
                return;
            }

            if (ArrivalQuantity == 0)
            {
                MessageBox.Show($"到货数量不能:{ArrivalQuantity}!");
                return;
            }

            var request = new Models.APIModel.Request.QualityTaskRequest
            {
                BasicPack = BasicPack,
                ArrivalQuantity = ArrivalQuantity,
                GoodProductQuantity = GoodProductQuantity,
                Increment1 = string.Join(",", IncreateList.Where(i => i.IsSelected).Select(i => i.IncreateName)),
                BrandName = BrandName,
                CertificatePosition = CertificatePosition,
                MarkMessage = MarkMessage,
                OrderId = OrderId,
                PackType = PackType,
                GoodsNumber = GoodsNumber,
                SkuGoodsTitle = SkuTitle,
                SkuId = SkuId,
                IsNeedBar = IsNeedBarCode == Need.需要,
                IsNeedCer = IsNeedCertificateModel == Need.需要,
                TaskId = TaskId,
                FloorDragNumber = FloorDragNumber
            };
            if (IsNeedBarCode == Need.需要)
            {
                if (BarCodeModel == null || BarCodeModel.Id <= 0)
                {
                    MessageBox.Show("条形码不能为空");
                    return;
                }
                request.BarcodeId = BarCodeModel.Id;
            }
            if (PurchaseSkuList != null && PurchaseSkuList.Count > 0 && purchaseSkuList.Any(p => p.IsNeedCer)) //(IsNeedCertificateModel == Need.需要)
            {
                //if ()
                //{
                //    MessageBox.Show("无可用的合格证打印!");
                //    return;
                //}
                if (PurchaseSkuList.Where(p => p.IsSetCertificate).Count() > 0)
                {
                    MessageBox.Show("存在未确认的合格证,请先完成确认!");
                    return;
                }

                if (purchaseSkuList.Any(p => p.IsNeedCer && p.CerDTO == null))
                {
                    MessageBox.Show("有未设置的合格证,请设置完所有的合格证再保存");
                    return;
                }
                if (PurchaseSkuList.Where(p => p.IsNeedCer && p.CerDTO.Id > 0).Count() <= 0)
                {
                    MessageBox.Show("无可选的合格证打印!");
                    return;
                }
                request.CerId = string.Join(",", PurchaseSkuList.Where(p => p.IsNeedCer && p.CerDTO.Id > 0).Select(p => p.CerDTO.Id));

            }

            //int hour = Convert.ToInt32(PreCompeteTimeHour.Replace("点前", ""));


            //DateTime date = DateTime.Now;

            //switch (preCompeteTimeDay)
            //{
            //    case "今天":
            //        date = DateTime.Now;
            //        break;
            //    case "明天":
            //        date = DateTime.Now.AddDays(1);
            //        break;
            //    case "后天":
            //        date = DateTime.Now.AddDays(2);
            //        break;
            //    default:
            //        break;
            //}

            ////date = Convert.ToDateTime(PreCompeteTimeDay);


            //var competeTime = date.Date.AddHours(hour);



            //if (competeTime < DateTime.Now)
            //{
            //    MessageBox.Show($"预计完成时间不能小于当前时间,请重新选择预计完成时间");
            //    return;
            //}


            //var now = DateTime.Now;
            //if (now.Hour < 12)
            //{
            //    if (competeTime > now.AddDays(1).Date.AddHours(12))
            //    {
            //        MessageBox.Show($"预计完成时间不能超过明天12点,请重新选择预计完成时间");
            //        return;
            //    }


            //}
            //else if (now.Hour < 18)
            //{
            //    if (competeTime > now.AddDays(1).Date.AddHours(18))
            //    {
            //        MessageBox.Show($"预计完成时间不能超过明天18点,请重新选择预计完成时间");
            //        return;
            //    }
            //}
            //else if (now.Hour < 22)
            //{
            //    if (competeTime > now.AddDays(1).Date.AddHours(22))
            //    {
            //        MessageBox.Show($"预计完成时间不能超过明天22点,请重新选择预计完成时间");
            //        return;
            //    }
            //}
            //else
            //{
            //    if (competeTime > now.AddDays(2).Date.AddHours(12))
            //    {
            //        MessageBox.Show($"预计完成时间不能超过后天12点,请重新选择预计完成时间");
            //        return;
            //    }
            //}

            //request.PreCompeteTime = competeTime;


            try
            {
                var competeRes = packPurchaseTaskService.CompeteQualityTask(request);
                if (competeRes == null)
                {
                    MessageBox.Show("网络异常");
                    return;
                }
                if (!competeRes.Success)
                {
                    MessageBox.Show(competeRes.Msg);
                    return;
                }
                BatchPrintWindow batchPrint = new BatchPrintWindow();


                //if (BarCodeModel!=null)
                //{
                //    BarCodeModel.ShopName = OriginShopName;
                //}
                batchPrint.SetData(GoodProductQuantity,
                   PurchaseSkuList.Where(p => p.IsNeedCer && p.CerDTO.Id > 0).Select(p => p.CerDTO).ToArray()
                    , BarCodeModel);
                batchPrint.ShowDialog();

                if (ReflashWindow != null) ReflashWindow();
                var window = obj as BWindow;
                App.Current.Dispatcher.Invoke(new Action(() =>
                {

                    window.Close();
                }));

            }
            catch (Exception ex)
            {

                System.Windows.MessageBox.Show(ex.Message);
            }


        }

        //// "12点前","18点前","22点前"
        //private void PreCompeteTimeDayOnChanged()
        //{
        //    var now = DateTime.Now;
        //    if (now.Hour < 12)
        //    {
        //        if (PreCompeteTimeDay=="今天")
        //        {
        //           PreCompeteTimeHourList.Clear();
        //            PreCompeteTimeHourList.Add("12点前");
        //            PreCompeteTimeHourList.Add("18点前");
        //            PreCompeteTimeHourList.Add("22点前");
        //            PreCompeteTimeHour = "12点前";
        //        }


        //        if (PreCompeteTimeDay == "明天")
        //        {
        //            PreCompeteTimeHourList.Clear();
        //            PreCompeteTimeHourList.Add("12点前");
        //            PreCompeteTimeHour = "12点前";
        //        }


        //    }
        //    else if (now.Hour < 18)
        //    {
        //        if (PreCompeteTimeDay == "今天")
        //        {
        //            PreCompeteTimeHourList.Clear();
        //            PreCompeteTimeHourList.Add("18点前");
        //            PreCompeteTimeHourList.Add("22点前");

        //            PreCompeteTimeHour = "18点前";
        //        }


        //        if (PreCompeteTimeDay == "明天")
        //        {
        //            PreCompeteTimeHourList.Clear();
        //            PreCompeteTimeHourList.Add("12点前");
        //            PreCompeteTimeHourList.Add("18点前");
        //            PreCompeteTimeHour = "12点前";
        //        }
        //    }
        //    else if (now.Hour < 22)
        //    {
        //        if (PreCompeteTimeDay == "今天")
        //        {
        //            PreCompeteTimeHourList.Clear();
        //            PreCompeteTimeHourList.Add("22点前");
        //            PreCompeteTimeHour = "22点前";
        //        }


        //        if (PreCompeteTimeDay == "明天")
        //        {
        //            PreCompeteTimeHourList.Clear();
        //            PreCompeteTimeHourList.Add("12点前");
        //            PreCompeteTimeHourList.Add("18点前");
        //            PreCompeteTimeHourList.Add("22点前");
        //            PreCompeteTimeHour = "12点前";
        //        }
        //    }
        //    else
        //    {
        //        if (PreCompeteTimeDay == "明天")
        //        {
        //            PreCompeteTimeHourList.Clear();
        //            PreCompeteTimeHourList.Add("12点前");
        //            PreCompeteTimeHourList.Add("18点前");
        //            PreCompeteTimeHourList.Add("22点前");
        //            PreCompeteTimeHour = "12点前";
        //        }

        //        if (PreCompeteTimeDay == "后天")
        //        {
        //            PreCompeteTimeHourList.Clear();
        //            PreCompeteTimeHourList.Add("12点前");
        //            PreCompeteTimeHour = "12点前";
        //        }
        //    }





        //}


        private void SetBarCode()
        {
            if (string.IsNullOrEmpty(SkuId))
            {
                return;
            }
            if (BarCodeModel == null)
            {
                var resCode = packPurchaseTaskService.SearchBarCode(SkuId);
                if (resCode == null||!resCode.Success)
                {
                    BarCodeModel = new BarCodeModel();
                    BarCodeModel.ProductNo = ProductNo;
                    BarCodeModel.Brand = Brand;
                    BarCodeModel.SkuId = SkuId;
                    BarCodeModel.SkuName = SkuName;
                }
                else
                {
              
                        BarCodeModel = resCode.Data;
              
                }

            }
            if (!string.IsNullOrEmpty(BrandName))
                BarCodeModel.BrandName = BrandName;

            SetBarCodeWindow setBarCodeWindow = new SetBarCodeWindow();
            setBarCodeWindow.LoadData(BarCodeModel, packTaskService);
            setBarCodeWindow.SaveResult = b =>
            {
                BarCodeModel = b;
                IsSetBarCode = false;
                IsNeedBarCode = Need.需要;
            };
            setBarCodeWindow.Show();
        }

        /// <summary>
        /// 设置合格证
        /// </summary>
        private void SetCertificate(PurchaseSku model)
        {

            if (model.CerDTO == null)
            {
                model.CerDTO = new CertificateModel
                {
                    ProductNo = ProductNo,
                    Brand = Brand,
                    SkuId = SkuId,
                    PurchaseSkuId = model.PurchaseSkuId

                };
            }
            if (!string.IsNullOrEmpty(BrandName))
                model.CerDTO.BrandName = BrandName;

            QualitySetCerWindow setCerWindow = new QualitySetCerWindow();
            setCerWindow.LoadData(model.IsNeedCer, model.CerDTO, packPurchaseTaskService, spuCertificateModel, IsSetSpuCertificate, saveType);
            setCerWindow.SaveResult = (s, PackCerState) =>
            {
                if (string.IsNullOrEmpty(s.PurchaseSkuId))
                {
                    var sku = PurchaseSkuList.SingleOrDefault(p => p.CerDTO.GoodsNumber == s.GoodsNumber);
                    sku.CerDTO = s;
                    sku.IsSetCertificate = false;
                    sku.IsNeedCer = PackCerState == PackCerState.合格证信息;
                    IsNeedCertificateModel = Need.需要;
                    return;
                }
                var skus = PurchaseSkuList.SingleOrDefault(p => p.CerDTO != null && p.CerDTO.PurchaseSkuId == s.PurchaseSkuId);
                skus.CerDTO = s;
                skus.IsSetCertificate = false;
                skus.IsNeedCer = PackCerState == PackCerState.合格证信息;
                IsNeedCertificateModel = Need.需要;
            };
            setCerWindow.Show();
        }


        /// <summary>
        /// 查看合格证
        /// </summary>
        private void LookCer(CertificateModel certificate)
        {

            QualityLookCerWindow lookCerWindow = new QualityLookCerWindow(certificate);
            lookCerWindow.Show();
        }
        /// <summary>
        /// 查看条形码
        /// </summary>
        private void LookBar()
        {
            LookBarCodeWindow look = new LookBarCodeWindow();
            look.SetData(BarCodeModel);
            look.Show();
        }



        SaveType? saveType;
        /// <summary>
        /// 搜索 skuId(todo:)
        /// </summary>
        public void SearchSku(PackTaskModel model)
        {
            OriginShopName = model.ShopName;
            InitData();
            TaskId = model.TaskId;
            OrderId = model.OrderId;
            SkuId = model.SkuId;
            SkuName = model.ItemList[0].SkuName;
            Logo = model.ItemList[0].Logo.Replace("80x80", "200x200");
            BrandName = model.ItemList[0].BrandName;
            SkuCount = model.SkuCount;
            Brand = model.Brand;
            ProductNo = model.ProductNo;
            MarkMessage = model.MarkMessage;
            PackType = model.PackType;
            GoodsNumber = model.GoodsNumber;
            SkuTitle = model.SkuTitle;
            BasicPack = model.BasicPack;
            CertificatePosition = model.CertificatePosition;
        


            ArrivalQuantity = 0;
            GoodProductQuantity = 0;

            IncreateList = new ObservableCollection<IncreateModel>();
            string[] increateDatas = model.Increment1?.Split(',');
            bool isSelected = false;

            foreach (var item in increates)
            {
                isSelected = false;
                if (increateDatas != null && increateDatas.Count() > 0 && increateDatas.Contains(item))
                {
                    isSelected = true;
                }
                App.Current.Dispatcher.Invoke(() =>
                {
                    IncreateList.Add(new IncreateModel
                    {
                        IncreateName = item,
                        IsSelected = isSelected
                    });
                });
            }


            var packTaskRes = packPurchaseTaskService.GetQualityTask(model.TaskId);

            if (packTaskRes == null)
            {
                MessageBox.Show("网络异常!");
                return;
            }
            if (!packTaskRes.Success || packTaskRes.Data == null)
            {
                MessageBox.Show(packTaskRes.Msg);
                return;
            }



            SkuPurchaseSchemeId = packTaskRes.Data.SkuPurchaseSchemeId;
            saveType = packTaskRes.Data.SaveType;
            if (saveType == null)
            {
                saveType = OrderId.IsNullOrEmpty() ? SaveType.C端 : SaveType.B端;
            }
            if (packTaskRes == null || !packTaskRes.Success) return;
            BarCodeModel = packTaskRes.Data.BarCodeDTO;
            IsNeedBarCode = packTaskRes.Data.IsNeedBar ? Need.需要 : Need.不需要;
            IsSetBarCode = packTaskRes.Data.BarCodeDTO == null ? true : false;
            IsNeedCertificateModel = packTaskRes.Data.IsNeedCer ? Need.需要 : Need.不需要;
            if (packTaskRes.Data.WareHourses != null)
                packTaskRes.Data.WareHourses.ToList().ForEach(w =>
                {
                    WareHourseList.Add(w);
                });
            WareHourseCount = WareHourseList.Count();
            if (packTaskRes.Data.PurchaseSkus != null)
            {

                int goodsIndex = 0;
                foreach (var item in packTaskRes.Data.PurchaseSkus)
                {
                    goodsIndex++;
                    if (item.CerDTO != null) item.CerDTO.GoodsNumberIndex = goodsIndex;
                    item.IsSetCertificate = true;
                    if (string.IsNullOrEmpty(item.PurchaseProductId))
                    {
                        PurchaseSkuList.Add(item); continue;
                    }

                    var list = purchaseService.GetPurchaseSkuBasicInfo(item.PurchaseProductId);
                    if (list == null && !list.Success)
                    {
                        PurchaseSkuList.Add(item); continue;
                    }
                    PurchaseSkuItemBasicInfoResponse skuItem = null;
                    if (list.Data != null) skuItem = list.Data.ItemList.FirstOrDefault(f => f.PurchaseSkuId == item.PurchaseSkuId);


                    App.Current.Dispatcher.Invoke(new Action(() =>
                    {
                        PurchaseSkuList.Add(new PurchaseSku
                        {
                            Logo = skuItem?.Logo,
                            Title = skuItem?.Title,
                            IsNeedCer = item.IsNeedCer,
                            PurchaseSkuId = item.PurchaseSkuId,
                            CerDTO = item.CerDTO,
                            IsSetCertificate = item.IsNeedCer,
                        });
                    }));
                    //PurchaseSkuList.Add(item);
                }
            }


            if (BarCodeModel==null)
            {
                //加载品牌品名数据
                var shopList = globalContext.User.ShopList;
                var shop = shopList.FirstOrDefault(s => s.ShopName == model.ShopName);
                if (shop != null)
                {

                    var skuResponse = productService.GetProductSkuList(string.Empty, SkuId, shop.Platform, shop.AppKey, shop.AppSecret, shop.AppToken);
                    if (skuResponse.Success)
                    {
                        if (skuResponse.Data.Count == 0)
                        {
                            return;
                        }
                        Logo = skuResponse.Data[0].Logo.Replace("80x80", "200x200");
                        SkuName = skuResponse.Data[0].Title;
                        SpuId = skuResponse.Data[0].ProductId;
                        var productApiResponse = productService.GetProductList(skuResponse.Data[0].ProductId, string.Empty, string.Empty, 1,
                      shop.Platform, shop.AppKey, shop.AppSecret, shop.AppToken);
                        if (productApiResponse.Success)
                        {
                            if (productApiResponse.Data.Count == 0)
                            {
                                return;
                            }

                            ProductNo = productApiResponse.Data.Items[0].ProductItemNum;
                            Brand = productApiResponse.Data.Items[0].BrandName;

                        }
                       
                    }
                    else
                    {

                        App.Current.Dispatcher.Invoke(() => MessageBox.Show(skuResponse.Msg, "加载sku"));
                        return;
                    }

                }
            }






        }
        public Action ReflashWindow { get; set; }
        public void InitData()
        {
            FloorDragNumber = 0;
            PurchaseSkuList = new ObservableCollection<PurchaseSku>();
            WareHourseList = new ObservableCollection<WareHourseDTO>();
            //PreCompeteTimeDayList = new ObservableCollection<string>();
            FloorDragNumberList = new ObservableCollection<int>();

            for (int i = 0; i < 30; i++)
            {
                App.Current.Dispatcher.Invoke((Action)(() =>
                {

                    FloorDragNumberList.Add(i + 1);
                }));

            }

            //var nowTime = DateTime.Now;
            //var hour = nowTime.Hour;



            //if (hour < 12)
            //{
            //    PreCompeteTimeDayList.Add("今天");
            //    PreCompeteTimeDayList.Add("明天");

            //    PreCompeteTimeDay = "今天";


            //}
            //else if (hour < 18)
            //{
            //    PreCompeteTimeDayList.Add("今天");
            //    PreCompeteTimeDayList.Add("明天");
            //    PreCompeteTimeDay = "今天";

            //}
            //else if (hour < 22)
            //{
            //    PreCompeteTimeDayList.Add("今天");
            //    PreCompeteTimeDayList.Add("明天");
            //    PreCompeteTimeDay = "今天";

            //}
            //else
            //{
            //    PreCompeteTimeDayList.Add("明天");
            //    PreCompeteTimeDayList.Add("后天");
            //    PreCompeteTimeDay = "明天";
            //}





            IsSetBarCode = true;
            SkuTitle = "";
            BrandName = "";
            GoodsNumber = 0;
            PackType = PackType.单件;
            BasicPack = BasicPack.快递袋;
            CertificatePosition = CertificatePosition.无需合格证;
            IsNeedBarCode = Need.需要;
            IsNeedCertificateModel = Need.不需要;
        }

        private void OpenSkuDetail(object param)
        {
            var paramList = (object[])param;
            // var orderId = paramList[0].ToString();
            var skuId = paramList[0].ToString();


            var url = $"https://item.jd.com/{skuId}.html";
            try
            {
                System.Diagnostics.Process.Start("explorer.exe", url);
            }
            catch (Exception ex)
            {
                Clipboard.SetText(url);
                MessageBox.Show($"{ex.Message}\r\n调用浏览器失败,网页链接已复制到剪切板,请手动打开浏览器访问", "提示");
            }

        }

        #endregion
    }
}