using BBWY.Client.APIServices; using BBWY.Client.Models; using BBWY.Common.Models; using BBWY.Controls; using GalaSoft.MvvmLight.Command; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Threading.Tasks; using System.Windows.Input; using System.Linq; using System.Windows; using BBWY.Client.Models.APIModel; using BBWY.Client.Models.PackTask; using BBWY.Client.Views.SealBox; using BBWY.Client.Views.FallWare; using BBWY.Client.Models.FallWare; using WebSocketSharp; using System.Threading; using BBWY.Client.Helpers; using BBWY.Client.Views.TaskOverTime; using BBWY.Client.Views.StorePickSelf; using System.Diagnostics.Eventing.Reader; using BBWY.Client.Models.SealBox; using Newtonsoft.Json; using System.Diagnostics; using BBWY.Client.APIServices.QiKu; using BBWY.Client.Views.PackerTask; using BBWY.Client.Models.QualityTask; using BBWY.Client.Views.QualityTask; using BBWY.Client.Views.QualityTipWindows; using System.Windows.Interop; using NPOI.SS.Formula.Functions; using NPOI.SS.Util; using System.Text; using BBWY.Client.Views.SplitTask; using BBWY.Client.Extensions; using BBWY.Client.Views.PackTaskAbort; using System.Windows.Controls; namespace BBWY.Client.ViewModels.PackTask { public partial class WareHouseListViewModel : BaseVM, IDenpendency//注入服务 { //public RelayCommand SelectCmd => new RelayCommand(str => Growl.Info(str)); #region 属性绑定 private ObservableCollection selectTitleList = new ObservableCollection { "SKU名称","标题" }; public ObservableCollection SelectTitleList { get => selectTitleList; set { Set(ref selectTitleList, value); } } private ObservableCollection selectExpressList = new ObservableCollection { "物流单号","物流公司名称" }; public ObservableCollection SelectExpressList { get => selectExpressList; set { Set(ref selectExpressList, value); } } private ObservableCollection selectSkuList = new ObservableCollection { "SKU","SPU" }; public ObservableCollection SelectSkuList { get => selectSkuList; set { Set(ref selectSkuList, value); } } private ObservableCollection selectIdList = new ObservableCollection { "任务ID","拳探订单号" }; public ObservableCollection SelectIdList { get => selectIdList; set { Set(ref selectIdList, value); } } private ObservableCollection selectShopList = new ObservableCollection { "店铺","部门" }; public ObservableCollection SelectShopList { get => selectShopList; set { Set(ref selectShopList, value); } } /// /// 查询名称 /// private string selectTitle = "SKU名称"; public string SelectTitle { get => selectTitle; set { Set(ref selectTitle, value); OnSelectTitleChanged(SelectTitle); } } private void OnSelectTitleChanged(string SelectTitle) { if (SelectTitle == "SKU名称") { SearchSpuTitle = null; } if (SelectTitle == "标题") { SearchSkuTitle = null; } } /// /// 查询店铺 /// private string selectShop = "店铺"; public string SelectShop { get => selectShop; set { Set(ref selectShop, value); OnSelectShopChanged(selectShop); } } private void OnSelectShopChanged(string selectShop) { if (selectShop == "店铺") { SearchDepartment = null; } if (selectShop == "部门") { SearchShopName = null; } } /// /// 查询物流 /// private string selectExpress; public string SelectExpress { get => selectExpress; set { Set(ref selectExpress, value); OnSelectExpressChanged(SelectExpress); } } private void OnSelectExpressChanged(string SelectExpress) { if (SelectExpress == "物流单号") { SearchExpressName = null; } if (SelectExpress == "物流公司名称") { SearchWayBillNo = null; } } /// /// 查询物流 /// private string selectTaskId = "任务ID"; public string SelectTaskId { get => selectTaskId; set { Set(ref selectTaskId, value); OnSelectTaskIdChanged(SelectTaskId); } } private void OnSelectTaskIdChanged(string SelectTaskId) { if (SelectTaskId == "任务ID") { SearchOrderSn = null; } if (SelectTaskId == "拳探订单号") { SearchTaskId = null; } } /// /// 查询sku /// private string selectSku; public string SelectSku { get => selectSku; set { Set(ref selectSku, value); OnSelectSkuChanged(SelectSku); } } private void OnSelectSkuChanged(string SelectSku) { if (SelectSku == "SKU") { SearchSpuId = null; } if (SelectSku == "SPU") { SearchSkuId = null; } } /// /// 查询时间段 /// private DateTime startTime; public DateTime StartTime { get => startTime; set { Set(ref startTime, value); } } private DateTime endTime; public DateTime EndTime { get => endTime; set { Set(ref endTime, value); } } public IList OverTimeTaskResponses { get; set; } private ObservableCollection overTimeTaskList; /// /// 超时任务列表 /// public ObservableCollection OverTimeTaskList { get => overTimeTaskList; set { Set(ref overTimeTaskList, value); } } private ObservableCollection overTimeTaskTypeList = new ObservableCollection { OverTimeTaskType.全部, OverTimeTaskType.待验收, OverTimeTaskType.待排单, OverTimeTaskType.待打包, OverTimeTaskType.待封箱, OverTimeTaskType.待落仓, OverTimeTaskType.待转运 }; /// ///超时任务类型 /// public ObservableCollection OverTimeTaskTypeList { get => overTimeTaskTypeList; set { Set(ref overTimeTaskTypeList, value); } } private ObservableCollection overTimeTaskStateList = new ObservableCollection { Models.OverTimeTaskState.未完成 , Models.OverTimeTaskState.已完成, OverTimeTaskState.全部 }; /// ///超时任务类型 /// public ObservableCollection OverTimeTaskStateList { get => overTimeTaskStateList; set { Set(ref overTimeTaskStateList, value); } } private OverTimeTaskType overTimeTaskType = OverTimeTaskType.全部; /// /// 任务类型(超时) /// public OverTimeTaskType OverTimeTaskType { get => overTimeTaskType; set { Set(ref overTimeTaskType, value); } } private OverTimeTaskState overTimeTaskState = OverTimeTaskState.全部; /// /// 任务类型(超时) /// public OverTimeTaskState OverTimeTaskState { get => overTimeTaskState; set { Set(ref overTimeTaskState, value); } } private string waitTransportJDWareCount; public string WaitTransportJDWareCount { get => waitTransportJDWareCount; set { Set(ref waitTransportJDWareCount, value); } } private string waitTransportCloudWareCount; public string WaitTransportCloudWareCount { get => waitTransportCloudWareCount; set { Set(ref waitTransportCloudWareCount, value); } } private string waitTransportJuShuiTanCount; public string WaitTransportJuShuiTanCount { get => waitTransportJuShuiTanCount; set { Set(ref waitTransportJuShuiTanCount, value); } } private string waitTransportStoreWareCount; public string WaitTransportStoreWareCount { get => waitTransportStoreWareCount; set { Set(ref waitTransportStoreWareCount, value); } } private string searchWayBillNo; public string SearchWayBillNo { get => searchWayBillNo; set { Set(ref searchWayBillNo, value); } } private string searchExpressName; public string SearchExpressName { get => searchExpressName; set { Set(ref searchExpressName, value); } } private string searchPackUserName; public string SearchPackUserName { get => searchPackUserName; set { Set(ref searchPackUserName, value); } } public string fallWareWaitConfigureCount; public string FallWareWaitConfigureCount { get => fallWareWaitConfigureCount; set { Set(ref fallWareWaitConfigureCount, value); } } public string fallWareConfiguredCount; public string FallWareConfiguredCount { get => fallWareConfiguredCount; set { Set(ref fallWareConfiguredCount, value); } } private ObservableCollection waitCompletedList; /// /// 待完结列表 /// public ObservableCollection WaitCompletedList { get => waitCompletedList; set { Set(ref waitCompletedList, value); } } public List WaitCompleteds { get; set; } private ObservableCollection waitTransportList; /// /// 待转运列表 /// public ObservableCollection WaitTransportList { get => waitTransportList; set { Set(ref waitTransportList, value); } } public List WareWaitTransports { get; set; } private ObservableCollection waitFallWareList; /// /// 待落仓列表 /// public ObservableCollection WaitFallWareList { get => waitFallWareList; set { Set(ref waitFallWareList, value); } } public IList WaitFallWareLists { get; set; } private ObservableCollection wareNoSealBoxModels; /// /// 分箱列表(未配置) /// public ObservableCollection WareNoSealBoxModels { get => wareNoSealBoxModels; set { Set(ref wareNoSealBoxModels, value); } } /// /// 分箱列表 /// public List WaitSealBoxModelList { get; set; } private ObservableCollection waitSealBoxModels; /// /// 分箱列表(已配置) /// public ObservableCollection WaitSealBoxModels { get => waitSealBoxModels; set { Set(ref waitSealBoxModels, value); } } /// /// 分箱列表(已配置) /// public List SealBoxModelList { get; set; } private ObservableCollection packTaskList; /// /// 打包任务列表 /// public ObservableCollection PackTaskList { get => packTaskList; set { Set(ref packTaskList, value); } } private ObservableCollection storeGetSelfDataList; /// /// 商家自取记录任务列表 /// public ObservableCollection StoreGetSelfDataList { get => storeGetSelfDataList; set { Set(ref storeGetSelfDataList, value); } } private string searchShopName; public string SearchShopName { get => searchShopName; set { Set(ref searchShopName, value); } } /// /// 查询任务id /// private string searchTaskId; public string SearchTaskId { get => searchTaskId; set { Set(ref searchTaskId, value); } } /// /// 查询任务id /// private string searchSealBoxId; public string SearchSealBoxId { get => searchSealBoxId; set { Set(ref searchSealBoxId, value); } } /// /// 查询Sku /// private string searchSkuId; public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, value); } } /// /// 查询Spu /// private string searchSpuId; public string SearchSpuId { get => searchSpuId; set { Set(ref searchSpuId, value); } } /// /// 查询拳探订单号 /// private string searchOrderSn; public string SearchOrderSn { get => searchOrderSn; set { Set(ref searchOrderSn, value); } } private TaskState? taskState; /// /// 任务状态 /// public TaskState? TaskState { get => taskState; set { Set(ref taskState, value); } } private int pageIndex = 1; private int pageSize = 10; private int orderCount;//总数量 public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } } public int PageSize { get => pageSize; set { Set(ref pageSize, value); } } public int OrderCount { get => orderCount; set { Set(ref orderCount, value); } } private bool isLoading; public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } private Visibility tipVisitity; /// /// /// public Visibility TipVisitity { get => tipVisitity; set { Set(ref tipVisitity, value); } } /// /// 未到货数量 /// public string NoArrivedCount { get => noArrivedCount; set { Set(ref noArrivedCount, value); } } private string noArrivedCount; private string someArrivedCount; /// /// 部分到货数量 /// public string SomeArrivedCount { get => someArrivedCount; set { Set(ref someArrivedCount, value); } } private string worryCount; /// /// 加急数 /// public string WorryCount { get => worryCount; set { Set(ref worryCount, value); } } private string arrivedCount; /// /// 已到货数量 /// public string ArrivedCount { get => arrivedCount; set { Set(ref arrivedCount, value); } } private string waitScheduleCount; /// /// 待排单任务数 /// public string WaitScheduleCount { get => waitScheduleCount; set { Set(ref waitScheduleCount, value); } } private string waitPackCount; /// /// 待打包任务数 /// public string WaitPackCount { get => waitPackCount; set { Set(ref waitPackCount, value); } } private string waitSealBoxCount; /// /// 带封箱任务数 /// public string WaitSealBoxCount { get => waitSealBoxCount; set { Set(ref waitSealBoxCount, value); } } private string waitFallWareCount; /// /// 待落仓任务数 /// public string WaitFallWareCount { get => waitFallWareCount; set { Set(ref waitFallWareCount, value); } } private string waitOutbound; /// /// 待出库任务数 /// public string WaitOutbound { get => waitOutbound; set { Set(ref waitOutbound, value); } } private string waitCompleted; /// /// 待完成任务数 /// public string WaitCompleted { get => waitCompleted; set { Set(ref waitCompleted, value); } } private string waitTransportCount; /// /// 待转运 /// public string WaitTransportCount { get => waitTransportCount; set { Set(ref waitTransportCount, value); } } public string searchDepartment; public string SearchDepartment { get => searchDepartment; set { Set(ref searchDepartment, value); } } public string searchSpuTitle; public string SearchSpuTitle { get => searchSpuTitle; set { Set(ref searchSpuTitle, value); } } public string searchSkuTitle; public string SearchSkuTitle { get => searchSkuTitle; set { Set(ref searchSkuTitle, value); } } private SealBoxConfigureType sealBoxConfigureType; /// /// 封箱配置状态 /// public SealBoxConfigureType SealBoxConfigureType { get => sealBoxConfigureType; set { Set(ref sealBoxConfigureType, value); } } private WareType selectWareType; public WareType SelectWareType { get => selectWareType; set { Set(ref selectWareType, value); } } private QualityTaskExceptionState? qualityTaskExceptionState = Models.QualityTaskExceptionState.待验收; /// /// 任务状态 /// public QualityTaskExceptionState? QualityTaskExceptionState { get => qualityTaskExceptionState; set { Set(ref qualityTaskExceptionState, value); } } private PackagingTaskExceptionState? packagingTaskExceptionState; /// /// 任务状态 /// public PackagingTaskExceptionState? PackagingTaskExceptionState { get => packagingTaskExceptionState; set { Set(ref packagingTaskExceptionState, value); } } #endregion private readonly PackTaskService packTaskService; private readonly SealBoxService sealBoxService; public GlobalContext globalContext; private readonly PackagingTaskService packagingTaskService; /// /// 推送sku配置状态 /// public ICommand SendToSetSkuConfigureCommand { get; set; } /// /// 提交超时原因 /// public ICommand SubmitOverTimeMarkMsgCommand { get; set; } /// /// 查看揽收单 /// public ICommand LookLSOrderConfigureCommand { get; set; } /// /// 打印揽收单 /// public ICommand PrintLSOrderConfigureCommand { get; set; } /// /// 打印封箱明细 /// public ICommand PrintSealBoxDetailsCommand { get; set; } /// /// 待完结 完成事件 /// public ICommand CompeteWaitCompletedCommand { get; set; } /// /// 待转运 完成事件 /// public ICommand CompeteWaitTransportCommand { get; set; } /// /// 设置仓库类型 /// public ICommand SetWareTypeCommand { get; set; } /// /// 查看箱唛配置 /// public ICommand LookBoxConfigureCommand { get; set; } /// /// 待配置 /已配置 /// public ICommand SetSealBoxConfigureTypeCommand { get; set; } public ICommand CompeteFallWareCommand { get; set; } public ICommand CompeteSealBoxCommand { get; set; } public ICommand CompletedPackTaskCommand { get; set; } /// /// 打开图片链接 /// public ICommand OpenSkuDetailCommand { get; set; } /// /// 筛选数据 /// public ICommand SetTaskStateCommand { get; set; } /// /// 修改任务状态 /// public ICommand UpdateTaskStateCommand { get; set; } /// /// 搜索数据 /// public ICommand SearchTaskCommand { get; set; } /// /// 创建任务 /// public ICommand CreateTaskCommand { get; set; } /// /// 页面改变事件 /// public ICommand TaskPageIndexChangedCommand { get; set; } /// /// 设置分箱数量 /// public ICommand SetSealBoxCommand { get; set; } /// /// 打印封箱数据 /// public ICommand PrintBoxConfigureCommand { get; set; } /// /// 删除任务 /// public ICommand DeletedTaskCommand { get; set; } /// /// 加载事件(待封箱) /// public ICommand LoadSkuDataCommand { get; set; } /// /// 加载事件(封箱已配置) /// public ICommand LoadSealBoxSkuDataCommand { get; set; } /// /// 落仓 /// public ICommand LoadFallWareSkuDataCommand { get; set; } /// /// 转运 /// public ICommand LoadTransportSkuDataCommand { get; set; } /// /// 待完结 /// public ICommand LoadCompletedSkuDataCommand { get; set; } public ICommand ShowMoreMessageCommand { get; set; } public ICommand PackTaskMarkMessageCommand { get; set; } public ICommand AppendMarkMessageCommand { get; set; } public ICommand SetQualityTaskExceptionStateCommand { get; set; } public ICommand SetPackagingTaskExceptionStateCommand { get; set; } public ICommand QualityTaskExceptionCommand { get; set; } /// /// 验收任务 /// public ICommand QualityTaskCommand { get; set; } /// /// 任务拆分 /// public ICommand TaskSplitCommand { get; set; } /// /// 挂起 /// public ICommand PackagingTaskExceptionCommand { get; set; } /// /// 商家自取 /// public ICommand StoreGetBySelfCommand { get; set; } /// /// 包装任务释放挂起 /// public ICommand DisposeTaskCommand { get; set; } /// /// 修改货架号 /// public ICommand UpdateShelvesNumberCommand { get; set; } /// /// 打印异常任务信息 /// public ICommand PrintShelvesNumberCommand { get; set; } public WareHouseListViewModel(PackTaskService packTaskService, GlobalContext globalContext, SealBoxService sealBoxService, PackUserService packUserService, MarkMessageService markMessageService, QualityTaskService qualityTaskService, PackagingTaskService packagingTaskService, PackTaskAbortService packTaskAbortService) { this.packTaskAbortService = packTaskAbortService; this.globalContext = globalContext; this.sealBoxService = sealBoxService; this.packTaskService = packTaskService; this.packUserService = packUserService; this.markMessageService = markMessageService; this.packagingTaskService = packagingTaskService; this.qualityTaskService = qualityTaskService; //Messenger.Default.Send(globalContext, "AcceptGlobalContext"); PackTaskList = new ObservableCollection();//初始化数据 SetTaskStateCommand = new RelayCommand(SetTaskState); SearchTaskCommand = new RelayCommand(() => { PageIndex = 1; SearchTaskList(); //手动点击查询订单 }); TaskPageIndexChangedCommand = new RelayCommand(p => { LoadIndex(p.PageIndex); }); OpenSkuDetailCommand = new RelayCommand(OpenSkuDetail); StartTime = DateTime.Now.Date; EndTime = DateTime.Now.Date; IsLoading = false; TaskState = null; //加载数据 SelectWareType = WareType.云仓; SetTaskState(null); UpdateTaskStateCommand = new RelayCommand(UpdateTaskState); CompeteSealBoxCommand = new RelayCommand(CompeteSealBox); SetSealBoxCommand = new RelayCommand(SetSealBox); CompeteFallWareCommand = new RelayCommand(CompeteFallWare); SealBoxConfigureType = SealBoxConfigureType.待配置; PositionState = PositionState.待落仓; SetSealBoxConfigureTypeCommand = new RelayCommand(s => { SealBoxConfigureType = s; PositionState = s == SealBoxConfigureType.已配置 ? PositionState.已配置待落仓 : PositionState.待落仓; SearchTaskList(); }); LookBoxConfigureCommand = new RelayCommand(LookBoxConfigure); PrintBoxConfigureCommand = new RelayCommand(PrintBoxConfigure); DeletedTaskCommand = new RelayCommand(DeletedTask); StoreGetBySelfCommand = new RelayCommand(StoreGetBySelf); QualityStoreGetBySelfCommand = new RelayCommand(QualityStoreGetBySelf); CompletedPackTaskCommand = new RelayCommand(CompletedPackTask); SetWareTypeCommand = new RelayCommand(s => { SelectWareType = s; if (PageIndex == 1) SearchTaskList(); else PageIndex = 1; }); CompeteWaitTransportCommand = new RelayCommand(CompeteWaitTransport); CompeteWaitCompletedCommand = new RelayCommand(CompeteWaitCompleted); PrintSealBoxDetailsCommand = new RelayCommand(PrintSealBoxDetails); PrintLSOrderConfigureCommand = new RelayCommand(PrintLSOrderConfigure); LookLSOrderConfigureCommand = new RelayCommand(LookLSOrderConfigure); SubmitOverTimeMarkMsgCommand = new RelayCommand(SubmitOverTimeMarkMsg); SendToSetSkuConfigureCommand = new RelayCommand(SendToSetSkuConfigure); SelectSku = "SKU"; SelectExpress = "物流单号"; LoadSkuDataCommand = new RelayCommand(LoadSkuData); LoadSealBoxSkuDataCommand = new RelayCommand(LoadSealBoxSkuData); LoadFallWareSkuDataCommand = new RelayCommand(LoadFallWareSkuData); LoadTransportSkuDataCommand = new RelayCommand(LoadTransportSkuData); LoadCompletedSkuDataCommand = new RelayCommand(LoadCompletedSkuData); ShowMoreMessageCommand = new RelayCommand(ShowMoreMessage); PackTaskMarkMessageCommand = new RelayCommand(PackTaskMarkMessage); AppendMarkMessageCommand = new RelayCommand(AppendMarkMessage); SetQualityTaskExceptionStateCommand = new RelayCommand(() => { if (PageIndex == 1) SearchTaskList(); else PageIndex = 1; }); SetPackagingTaskExceptionStateCommand = new RelayCommand(() => { if (PageIndex == 1) SearchTaskList(); else PageIndex = 1; }); QualityTaskExceptionCommand = new RelayCommand(QualityTaskException); QualityTaskCommand = new RelayCommand(QualityTask); TaskSplitCommand = new RelayCommand(TaskSplit); PackagingTaskExceptionCommand = new RelayCommand(PackagingTaskException); DisposeTaskCommand = new RelayCommand(DisposeTask); UpdateShelvesNumberCommand = new RelayCommand(UpdateShelvesNumber); PrintShelvesNumberCommand = new RelayCommand(PrintShelvesNumber); LoadSplitDatas(); } private void LoadSplitDatas() { if (IsCanPackModelList == null) { var res = packTaskService.GetTaskAbortEnum(); if (res != null && res.Success) { IsCanPackModelList = res.Data.IsCanPackModelList; ShelvesNumberList = res.Data.ShelvesNumberList; FloorNumberList = res.Data.FloorNumberList; } } } private void PrintShelvesNumber(PackTaskModel model) { PrintExceptionTaskWindow window = new PrintExceptionTaskWindow(model); window.ShowDialog(); } private void UpdateShelvesNumber(PackTaskModel model) { LoadSplitDatas(); UpdateShelvesNumberWindow window = new UpdateShelvesNumberWindow(packTaskAbortService, model, ReflashTask, ShelvesNumberList, FloorNumberList); window.ShowDialog(); } /// /// 手动释放挂起 /// /// public void DisposeTask(long taskId) { if (System.Windows.MessageBox.Show("是否释放挂起?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes) return; var res = packTaskAbortService.DisposedPackTask(taskId); if (res == null || !res.Success) { MessageBox.Show(res?.Msg); return; } ReflashTask(); } public List IsCanPackModelList { get; set; } public List ShelvesNumberList { get; set; } public List FloorNumberList { get; set; } public void PackagingTaskException(long taskId) { try { AddExceptionWindow addExceptionWindow = new AddExceptionWindow(packTaskAbortService, taskId, Models.TaskState.待包装, ReflashTask, IsCanPackModelList, ShelvesNumberList, FloorNumberList); addExceptionWindow.ShowDialog(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } public void TaskSplit(PackTaskModel model) { SplitTaskWindow addExceptionWindow = new SplitTaskWindow(packTaskService, model.TaskId, model.TaskState, ReflashTask); addExceptionWindow.ShowDialog(); } private void QualityTask(long taskId) { var model = PackTaskList?.SingleOrDefault(p => p.TaskId == taskId); if (model == null) { MessageBox.Show($"任务不存在,任务id:{taskId}"); return; } var shopList = globalContext.User.ShopList; var shop = shopList.FirstOrDefault(s => s.ShopName == model.ShopName); if (shop == null) { MessageBox.Show($"查找不到店铺信息, {model.ShopName}"); return; } var packTaskRes = qualityTaskService.GetQualityTask(model.TaskId);//获取任务详情 if (packTaskRes == null) { MessageBox.Show("网络异常!"); return; } if (!packTaskRes.Success || packTaskRes.Data == null) { MessageBox.Show(packTaskRes.Msg); return; } if (packTaskRes == null || !packTaskRes.Success) return; //获取品牌和适用年龄 var skuAttsDetailRes = qualityTaskService.SearchProductAttrsBySkuId(model.SkuId, shop.AppKey, shop.AppSecret, shop.AppToken, shop.Platform); if (skuAttsDetailRes == null || !skuAttsDetailRes.Success) { MessageBox.Show(skuAttsDetailRes?.Msg); return; } var IsPassInspection = packTaskRes.Data.IsPassInspection; var skuAttsDetail = skuAttsDetailRes.Data; bool isqualityCer = false; //验收合格证 StringBuilder sb = null; Need IsNeedCer = Need.不需要; BrandMarkType markType = BrandMarkType.无需遮盖; SendCer3CValidMsgModel? sendCer3CValidMsgModel = null; bool? isCer3CValid = null; new QualityProductWindow("商品合格证情况", "包装是否有合格证?", "有", "无", (ishaveCer) => { if (ishaveCer)//验收商品 有合格证 { if (skuAttsDetail.ApplyAge.IsNullOrEmpty() || (skuAttsDetail.IsApplyAgeOver14 != null && skuAttsDetail.IsApplyAgeOver14.Value))//不存在使用年龄 或者适用年龄大于14 { new QualityProductWindow("商品合格证情况", "合格证是否有品牌信息?", "有", "无", (iscerhavebrand) => { if (iscerhavebrand) { new QualityProductWindow("商品合格证情况", $"合格证品牌:{skuAttsDetail.Brand}?", $"是", $"不是", (istruebrand) => { if (!istruebrand) { //需要合格证 if (model.CertificateModel == null || !model.CertificateModel.Any())//未配置 { sendCer3CValidMsgModel = SendCer3CValidMsgModel.任务未配置合格证; return; } //todo:打印合格证 完全遮盖包装合格证信息 } isqualityCer = true;//验收合格证完毕 }).ShowDialog(); return; } isqualityCer = true;//验收合格证完毕 }).ShowDialog(); } else { if (IsPassInspection||model.TaskAbortTime != null)//验收过 跳过询问 { isqualityCer = true; return; } //todo: 判断是否首次验收 只支持供应链 有采购方案的 new QualityProductWindow("商品合格证情况", "合格证是否有3C标?", "有", "无", (ishave3c) => { if (ishave3c) { sendCer3CValidMsgModel = SendCer3CValidMsgModel.验证3C有效性; return; } else { if (!model.CertificateModel.Any(c => c.LabelModel != CertificateLabelModel.标准有3c))//所有有配置的合格证都是标准3c { isqualityCer = true;//验收正常 return; } sendCer3CValidMsgModel = SendCer3CValidMsgModel.配置的合格证不是3c; //todo:需遮盖 原合格证 } }).ShowDialog(); } //验收商品合格证是否有品牌 } else { IsNeedCer = Need.需要;//需要合格证 //需要合格证 if (model.CertificateModel == null || !model.CertificateModel.Any())//未配置 { sendCer3CValidMsgModel = SendCer3CValidMsgModel.任务未配置合格证; return; } if (skuAttsDetail.ApplyAge.IsNullOrEmpty() || (skuAttsDetail.IsApplyAgeOver14 != null && skuAttsDetail.IsApplyAgeOver14.Value))//不存在使用年龄 或者适用年龄大于14 { isqualityCer = true;//验收正常 return; } //年龄低于14 if (!model.CertificateModel.Any(c => c.LabelModel != CertificateLabelModel.标准有3c))//所有有配置的合格证都是标准3c { isqualityCer = true;//验收正常 return; } //不存在 3c 通知采购方问题 // MessageBox.Show("提示采购部门,当前任务配置的合格证没有3C,赶紧配置,任务已挂起"); //todo:无需遮盖 sendCer3CValidMsgModel = SendCer3CValidMsgModel.配置的合格证不是3c; return; } }).ShowDialog(); if (sendCer3CValidMsgModel != null) { if (model.TaskAbortTime != null)// { MessageBox.Show($"任务异常未处理,{sendCer3CValidMsgModel}"); return; } var res = qualityTaskService.SendMsgToPurchaseDepartment(model.TaskId, sendCer3CValidMsgModel.Value); if (res == null || !res.Success) { MessageBox.Show(res?.Msg); return; } if (res.Success) { if (!res.Msg.IsNullOrEmpty()) MessageBox.Show(res.Msg); ReflashTask();//刷新任务 } } if (isqualityCer)//合格证验收完毕 { bool isqualityBrand = false; new QualityProductWindow("商品品牌情况", "包装是否有品牌商标?", "有", "无", (ishavebrand) => { if (ishavebrand)//有品牌且品牌不是集团的 { if (!skuAttsDetail.IsTeamBrand) { new QualityProductWindow($"商品品牌情况", $"包装品牌:{skuAttsDetail.Brand}", $"是", $"不是", (istruebrand) => { if (istruebrand) { //无需贴商标 markType = BrandMarkType.无需贴商标; } else { markType = BrandMarkType.需遮盖; //需覆盖商标 } isqualityBrand = true; }).ShowDialog(); } else { markType = BrandMarkType.需遮盖;//有品牌 但任务sku所属的品牌是集团品牌 isqualityBrand = true; } } else { isqualityBrand = true; //需贴商标 markType = BrandMarkType.无需遮盖; } }).ShowDialog(); if (isqualityBrand) { if (IsNeedCer == Need.需要) { QualityWindow service = new QualityWindow(model, ReflashTask, IsNeedCer, markType, packTaskRes.Data); service.ShowDialog(); } else { BatchPrintWindow window = new BatchPrintWindow(markType, IsNeedCer, model.TaskId, model.BrandName, model.SkuCount, model.CertificateModel, model.BarCodeModel, qualityTaskService, ReflashTask ); window.ShowDialog(); } } } } private void QualityTaskException(long taskId) { try { AddExceptionWindow addExceptionWindow = new AddExceptionWindow(packTaskAbortService, taskId, Models.TaskState.待验收, ReflashTask, IsCanPackModelList, ShelvesNumberList, FloorNumberList); addExceptionWindow.ShowDialog(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } MarkMessageService markMessageService; private void AppendMarkMessage(long taskId) { var model = PackTaskList?.SingleOrDefault(p => p.TaskId == taskId); if (model != null) { var res = markMessageService.AppendMarkMessage(taskId, model.TaskMarkMsg, globalContext.User.Name); if (res == null) { return; } if (!res.Success) { MessageBox.Show(res.Msg); return; } model.TaskMarkMsg = string.Empty; model.ShowSendMsg = false; ReflashTask(); } } private void PackTaskMarkMessage(long taskId) { var model = PackTaskList?.SingleOrDefault(p => p.TaskId == taskId); if (model != null) { model.ShowSendMsg = !model.ShowSendMsg; } } private void ShowMoreMessage(long taskId) { var model = PackTaskList?.SingleOrDefault(p => p.TaskId == taskId); if (model != null) { model.ShowMoreMsg = !model.ShowMoreMsg; } } private void LoadCompletedSkuData(WareWaitCompleted model) { model.IsHideSkuList = !model.IsHideSkuList; } private void LoadTransportSkuData(WareWaitTransport model) { model.IsHideSkuList = !model.IsHideSkuList; } private void LoadFallWareSkuData(WaitFallWareModel model) { model.IsHideSkuList = !model.IsHideSkuList; } private void LoadSealBoxSkuData(SealBoxModel model) { model.IsHideSkuList = !model.IsHideSkuList; } private void LoadSkuData(WareNoSealBoxModel model) { model.IsHideSkuList = !model.IsHideSkuList; } private void SendToSetSkuConfigure(PackTaskModel model) { if (model.SendToSetSkuConfigureTime != null) { System.Windows.MessageBox.Show($"已提醒配置,提醒时间:{model.SendToSetSkuConfigureTime},请耐心等待"); return; } var res = packTaskService.SendToSetSkuConfigure(model.TaskId); if (!res.Success) { System.Windows.MessageBox.Show(res.Msg); } if (res.Success) { SearchTaskList(); } } private void SubmitOverTimeMarkMsg(object param) { var paramList = (object[])param; var id = (long)paramList[0]; var markMsg = paramList[1]?.ToString(); OverTimeTaskType overTimeTaskType = OverTimeTaskType.待验收; switch (TaskState.Value) { case Models.TaskState.待验收: overTimeTaskType = Models.OverTimeTaskType.待验收; break; case Models.TaskState.待排单: overTimeTaskType = Models.OverTimeTaskType.待排单; break; case Models.TaskState.待包装: overTimeTaskType = Models.OverTimeTaskType.待打包; break; case Models.TaskState.待封箱: overTimeTaskType = Models.OverTimeTaskType.待封箱; break; case Models.TaskState.待落仓: overTimeTaskType = Models.OverTimeTaskType.待落仓; break; case Models.TaskState.待转运: overTimeTaskType = Models.OverTimeTaskType.待转运; break; } SubmitOverTimeMarkMsgWindow submitOverTimeMarkMsgWindow = new SubmitOverTimeMarkMsgWindow(overTimeTaskType, id, markMsg, packTaskService, ReflashTask); submitOverTimeMarkMsgWindow.ShowDialog(); } private void LookLSOrderConfigure(object obj) { var model = obj as WaitFallWareModel; if (model.WareType != WareType.京仓) { System.Windows.MessageBox.Show($"{model.WareType}没有揽收单,只有京仓才有揽收单."); return; } if (model.BoxConfigureData == null || model.BoxConfigureData.PrewOrder.IsNullOrEmpty()) { System.Windows.MessageBox.Show($"预约单号为空,无法查看"); return; } var lsdTaskMsgRes = sealBoxService.GetWareLSAcceptOrder(); if (!lsdTaskMsgRes.Success) { System.Windows.MessageBox.Show($"获取任务信息失败,原因:{lsdTaskMsgRes.Msg}"); return; } var lsdTaskMsg = lsdTaskMsgRes.Data; var LSOrderPurchaseListRes = sealBoxService.GetWareLSOrderPurchaseList(model.BoxConfigureData.PrewOrder); if (!LSOrderPurchaseListRes.Success) { System.Windows.MessageBox.Show($"获取货物信息失败,原因:{LSOrderPurchaseListRes.Msg}"); return; } var data = LSOrderPurchaseListRes.Data; lsdTaskMsg.CustomerName = model.ShopName; lsdTaskMsg.CustomerUserName = model.ShopName; lsdTaskMsg.JDTransportUserName = model.ShopName; List lookData = null; if (data.GetWareLSOrderPurchases.Count > 10) { lookData = data.GetWareLSOrderPurchases.ToList().GetRange(0, 10); } else { lookData = data.GetWareLSOrderPurchases.ToList(); } var totalPageIndex = data.GetWareLSOrderPurchases.Count() % 10 == 0 ? data.GetWareLSOrderPurchases.Count() / 10 : data.GetWareLSOrderPurchases.Count() / 10 + 1; WareLSAcceptOrderWindow wareLSAcceptOrderWindow = new WareLSAcceptOrderWindow(lsdTaskMsg, lookData, 1, totalPageIndex, model.BoxConfigureData.PrewOrder); wareLSAcceptOrderWindow.ShowDialog(); } private void PrintLSOrderConfigure(object obj) { var model = obj as WaitFallWareModel; if (model.WareType != WareType.京仓) { System.Windows.MessageBox.Show($"{model.WareType}没有揽收单,只有京仓才有揽收单."); return; } if (model.BoxConfigureData == null || model.BoxConfigureData.PrewOrder.IsNullOrEmpty()) { System.Windows.MessageBox.Show($"预约单号为空,无法查看"); return; } var lsdTaskMsgRes = sealBoxService.GetWareLSAcceptOrder(); if (!lsdTaskMsgRes.Success) { System.Windows.MessageBox.Show($"获取任务信息失败,原因:{lsdTaskMsgRes.Msg}"); return; } var lsdTaskMsg = lsdTaskMsgRes.Data; lsdTaskMsg.CustomerName = model.ShopName; lsdTaskMsg.CustomerUserName = model.ShopName; lsdTaskMsg.JDTransportUserName = model.ShopName; var LSOrderPurchaseListRes = sealBoxService.GetWareLSOrderPurchaseList(model.BoxConfigureData.PrewOrder); if (!LSOrderPurchaseListRes.Success) { System.Windows.MessageBox.Show($"获取货物信息失败,原因:{LSOrderPurchaseListRes.Msg}"); return; } var data = LSOrderPurchaseListRes.Data; PrintLSOrderWindow printLS = new PrintLSOrderWindow(data.GetWareLSOrderPurchases.ToList(), model.BoxConfigureData.PrewOrder, lsdTaskMsg); printLS.ShowDialog(); } private void PrintSealBoxDetails(object obj) { var model = (SealBoxModel)obj; SealBoxPrintDetailsWindow printDetailsWindow = new SealBoxPrintDetailsWindow(model, sealBoxService); printDetailsWindow.ShowDialog(); } private void CompeteWaitCompleted(object obj) { var model = (WareWaitCompleted)obj; if (System.Windows.MessageBox.Show("是否完成任务?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes) return; var res = sealBoxService.WareCompetedWaitCompleted(model.SealBoxId); if (res == null) { return; } if (!res.Success) { System.Windows.MessageBox.Show(res.Msg); return; } Task.Factory.StartNew(() => SearchTaskList()); } private void CompeteWaitTransport(object obj) { var model = (WareWaitTransport)obj; if (System.Windows.MessageBox.Show("是否完成转运?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes) return; var res = sealBoxService.WareCompeteTransport(model.SealBoxId); if (res == null) { return; } if (!res.Success) { System.Windows.MessageBox.Show(res.Msg); return; } Task.Factory.StartNew(() => SearchTaskList()); } PackUserService packUserService; private void CompletedPackTask(object obj) { var model = (PackTaskModel)obj; AddOneItemWeightWindow addOneItemWeightWindow = new AddOneItemWeightWindow(ReflashTask, packUserService, model.TaskId); addOneItemWeightWindow.ShowDialog(); } public void StoreGetBySelf(long taskId) { //MessageBoxResult result = System.Windows.MessageBox.Show($"确定商家自取,任务id:{taskId}?", "提示", // MessageBoxButton.YesNo, // MessageBoxImage.Warning); //if (result != MessageBoxResult.Yes) return; var data = packTaskService.GetStoreGetSelfData(taskId); if (!data.Success) { MessageBox.Show(data?.Msg); return; } StorePickProductWindow sorePickProductWindow = new StorePickProductWindow(data.Data, (count, UserName) => { var res = packTaskService.StoreGetBySelfV3(taskId, count, UserName); if (res == null) { return false; } if (!res.Success) { System.Windows.MessageBox.Show(res.Msg, "错误信息"); return false; } Task.Factory.StartNew(() => SearchTaskList()); return true; }, false); sorePickProductWindow.ShowDialog(); } private void QualityStoreGetBySelf(long taskId) { var data = packTaskService.GetStoreGetSelfData(taskId); if (!data.Success) { MessageBox.Show(data?.Msg); return; } StorePickProductWindow sorePickProductWindow = new StorePickProductWindow(data.Data, (count, UserName) => { var res = packTaskService.StoreGetBySelfV3(taskId, count, UserName); if (res == null) { return false; } if (!res.Success) { System.Windows.MessageBox.Show(res.Msg, "错误信息"); return false; } Task.Factory.StartNew(() => SearchTaskList()); return true; }, true); sorePickProductWindow.ShowDialog(); } private void DeletedTask(object obj) { var packTaskmodel = (PackTaskModel)obj; MessageBoxResult result = System.Windows.MessageBox.Show($"确定取消任务{packTaskmodel.TaskIdRemark}?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning); if (result != MessageBoxResult.Yes) return; packTaskService.DeletedTask(packTaskmodel.TaskId); Task.Factory.StartNew(() => SearchTaskList()); } /// /// todo: 打印数据 /// /// private void PrintBoxConfigure(object obj) { var fallware = obj as WaitFallWareModel; JDWareBoxModel model = new JDWareBoxModel { ShopName = fallware.ShopName, WareName = fallware.WareName, SealBoxId = fallware.SealBoxId, ProductCount = fallware.ProductCount, BoxCount = fallware.SealBoxCount, PrewOrder = fallware.BoxConfigureData.PrewOrder, ProductTitle = fallware.BoxConfigureData.ProductTitle, PurchaseOrder = fallware.BoxConfigureData.PurchaseOrder, WaybillNo = fallware.BoxConfigureData.WaybillNo, ProviderName = fallware.BoxConfigureData.ProviderName }; PrintBoxWindow printBox = new PrintBoxWindow(model, fallware.WareType, sealBoxService); printBox.ShowDialog(); //加载模板数据 //打印 } private void LookBoxConfigure(object obj) { var fallware = obj as WaitFallWareModel;//WaitFallWareModel if (fallware == null) { MessageBox.Show($"数据异常, {JsonConvert.SerializeObject(obj)}"); return; } JDWareBoxModel model = new JDWareBoxModel { ShopName = fallware.ShopName, WareName = fallware.WareName, SealBoxId = fallware.SealBoxId, ProductCount = fallware.ProductCount, BoxCount = fallware.SealBoxCount, PrewOrder = fallware.BoxConfigureData.PrewOrder, ProductTitle = fallware.BoxConfigureData.ProductTitle, PurchaseOrder = fallware.BoxConfigureData.PurchaseOrder, WaybillNo = fallware.BoxConfigureData.WaybillNo, ProviderName = fallware.BoxConfigureData.ProviderName }; if (fallware.WareType == WareType.京仓) { SetJDWareBoxWindow window = new SetJDWareBoxWindow(model); window.ShowDialog(); //var w = new SetJDWareBoxWindow2(model, sealBoxService, fallware.WareType, ReflashTask, false); //w.ShowDialog(); } if (fallware.WareType == WareType.云仓 || fallware.WareType == WareType.聚水潭) { SetCloudWareBoxWindow window = new SetCloudWareBoxWindow(model, fallware.WareType); window.ShowDialog(); } } public PositionState PositionState { get; set; } /// /// 完成落仓 /// /// private void CompeteFallWare(object obj) { if (System.Windows.MessageBox.Show("是否完成落仓?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes) return; var model = obj as WaitFallWareModel; var res = sealBoxService.WareCompeteFallWare(model.SealBoxId); if (res != null && res.Success) { ReflashTask(); return; } if (res == null) { System.Windows.MessageBox.Show("网络异常"); return; } System.Windows.MessageBox.Show(res.Msg); } private void SetSealBox(object obj) { } #region 事件绑定 /// /// 商家自取(未验收) /// public ICommand QualityStoreGetBySelfCommand { get; set; } /// /// 完成封箱 /// /// private void CompeteSealBox(object obj) { var model = (SealBoxModel)obj; if (model.SealBoxSkus.Any(s => s.TaskState == Models.TaskState.待验收 || s.TaskState == Models.TaskState.待包装)) { System.Windows.MessageBox.Show("无法封箱,存在未打包完成的任务"); return; } SetSealBoxWindow setSealBoxWindow = new SetSealBoxWindow(new Action((boxCount) => { model.SealBoxCount = boxCount; if (model.SealBoxCount == null || model.SealBoxCount.Value <= 0) { System.Windows.MessageBox.Show("请先设置封箱数量"); return; } var res = sealBoxService.WareCompeteSealBox(model.SealBoxId, model.SealBoxCount); if (res == null) { System.Windows.MessageBox.Show("网络异常", ""); return; } if (!res.Success || !res.Data) { System.Windows.MessageBox.Show(res.Msg); return; } SearchTaskList(); })); setSealBoxWindow.ShowDialog(); } private void UpdateTaskState(object obj) { var model = (PackTaskModel)obj; long taskId = model.TaskId; var packTaskState = model.TaskState; ApiResponse res = null; switch (packTaskState) { case Models.TaskState.未到货: case Models.TaskState.部分到货: if (!model.OrderId.IsNullOrEmpty()) { if (model.ExpressOrderList == null || model.ExpressOrderList.Count <= 0) { System.Windows.MessageBox.Show("该任务采购单未进行发货,请联系业务进行发货后在确认收货", "提示"); return; } } if (System.Windows.MessageBox.Show("是否确认收货?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes) return; if (!model.OrderId.IsNullOrEmpty()) { var manualSigns = packTaskService.BatchManualSign(model.ExpressOrderList.Select(e => e.WaybillNo).ToArray()); if (manualSigns == null || !manualSigns.Success) { if (!manualSigns.Success) { System.Windows.MessageBox.Show($"B端确认收货失败,{manualSigns.Msg}"); return; } } } res = packTaskService.SetPackTaskState(taskId, Models.TaskState.待验收); break; case Models.TaskState.待验收: break; case Models.TaskState.待包装: var packModel = PackTaskList.SingleOrDefault(p => p.TaskId == taskId); if (packModel == null || packModel.FeesItemResponse == null || packModel.FeesItemResponse.DiscountAllFees == 0) { System.Windows.MessageBox.Show("请先设置打包费用0!"); return; } if (System.Windows.MessageBox.Show("是否完成打包?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes) return; res = packTaskService.SetPackTaskState(taskId, Models.TaskState.待封箱); break; case Models.TaskState.待封箱: break; case Models.TaskState.待出库: break; case Models.TaskState.已完成: break; case Models.TaskState.已取消: break; default: break; } if (res != null && res.Success) { SearchTaskList(); } } public void SetTaskState(TaskState? taskState) { TaskState = taskState; if (PageIndex == 1) SearchTaskList(); else PageIndex = 1; } private bool IsStartThread = false; private Thread qualityOverTimeThread = null; private Thread packOverTimeThread = null; private Thread scheduleOverTimeThread = null; private Thread sealboxOverTimeThread = null; private Thread fallwareOverTimeThread = null; private Thread waitTransportOverTimeThread = null; QualityTaskService qualityTaskService; PackTaskAbortService packTaskAbortService; private string packagingTaskExceptionCount; /// /// 验收异常总数 /// public string PackagingTaskExceptionCount { get => packagingTaskExceptionCount; set { Set(ref packagingTaskExceptionCount, value); } } private string packagingTaskCount; /// /// 待包装总数 /// public string PackagingTaskCount { get => packagingTaskCount; set { Set(ref packagingTaskCount, value); } } private string qualityExceptionCount; /// /// 验收异常总数 /// public string QualityExceptionCount { get => qualityExceptionCount; set { Set(ref qualityExceptionCount, value); } } private string qualityTaskCount; /// /// 验收异常总数 /// public string QualityTaskCount { get => qualityTaskCount; set { Set(ref qualityTaskCount, value); } } /// /// 搜索任务列表 /// public void SearchTaskList() { if (IsLoading) return; IsLoading = true; PageSize = 10; IsStartThread = false; long? sealBoxId = null; try { var istrue = long.TryParse(SearchSealBoxId, out long sealboxid); if (istrue) { sealBoxId = sealboxid; } } catch { } Task.Factory.StartNew(() => { try { if (TaskState == Models.TaskState.待出库) { PageSize = 20; WaitCompletedList = new ObservableCollection(); var datas = sealBoxService.GetWareWaitCompletedList(null, SearchShopName, SearchTaskId, SearchSkuId, sealBoxId, PageIndex, PageSize); if (datas != null && datas.Data != null && datas.Success) { var dataModel = datas.Data; OrderCount = dataModel.TotalCount; WaitCompleteds = dataModel.WareWaitCompleteds; foreach (var item in dataModel.WareWaitCompleteds) { var skuItem = item.Copy(); skuItem.WaitTransportSkus = null;//默认不加载 App.Current.Dispatcher.BeginInvoke(new Action(() => { WaitCompletedList.Add(skuItem); })); } } else { if (datas != null) System.Windows.MessageBox.Show(datas.Msg); } } else if (TaskState == Models.TaskState.已超时) { PageSize = 20; OverTimeTaskList = new ObservableCollection(); var datas = packTaskService.SearchOverTimeTaskList(null, StartTime, EndTime, OverTimeTaskState, OverTimeTaskType, PageIndex, PageSize); if (datas != null && datas.Data != null && datas.Success) { var dataModel = datas.Data; OrderCount = dataModel.TotalCount; foreach (var item in dataModel.OverTimeTaskResponses) { App.Current.Dispatcher.BeginInvoke(new Action(() => { OverTimeTaskList.Add(item); })); } } else { if (datas != null) System.Windows.MessageBox.Show(datas.Msg); } } else if (TaskState == Models.TaskState.待转运) { PageSize = 20; WaitTransportList = new ObservableCollection(); var datas = sealBoxService.GetWareWaitTransportList(SelectWareType, PageSize, PageIndex); if (datas != null && datas.Data != null && datas.Success) { var dataModel = datas.Data; OrderCount = dataModel.TotalCount; WareWaitTransports = dataModel.WareWaitTransports; foreach (var item in dataModel.WareWaitTransports) { App.Current.Dispatcher.Invoke(new Action(() => { WaitTransportList.Add(item); })); } var sealboxTasks = WaitTransportList.Where(p => p.TransportOverTime != null).ToList(); if (sealboxTasks.Count() > 0 && TaskState == Models.TaskState.待转运) { waitTransportOverTimeThread = new Thread(() => { IsStartThread = true; while (IsStartThread) { App.Current.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in sealboxTasks) { var datetime = item.TransportOverTime.Value.Subtract(DateTime.Now); if (datetime.TotalMilliseconds > 0) { item.IsWaitTransportOverTime = false; item.WaitTransportRemainTime = OverTimeHelper.GetTimeString(datetime); } else { item.IsWaitTransportOverTime = true; item.WaitTransportRemainTime = OverTimeHelper.GetTimeString(datetime); } } })); Thread.Sleep(1000); } }); //任务倒计时数据 waitTransportOverTimeThread.IsBackground = true; waitTransportOverTimeThread.Start(); } } else { if (datas != null) System.Windows.MessageBox.Show(datas.Msg); } Task.Factory.StartNew(() => { IsLoadWaitTransportCount(); }); } else if (TaskState == Models.TaskState.待落仓) { PageSize = 20; WaitFallWareList = new ObservableCollection(); var datas = sealBoxService.SearchWareFallWareConfigureList(PositionState, SearchShopName, SearchTaskId, SearchSkuId, sealBoxId, PageIndex, PageSize); if (datas != null && datas.Data != null && datas.Success) { var dataModel = datas.Data; OrderCount = dataModel.TotalCount; WaitFallWareLists = dataModel.WaitFallWareList; foreach (var item in dataModel.WaitFallWareList) { App.Current.Dispatcher.Invoke(new Action(() => { WaitFallWareList.Add(new WaitFallWareModel { AcceptUserNames = string.Join("|", item.AcceptUserNames), DepartmentName = item.DepartmentName, SealBoxSkus = item.SealBoxSkus, ShopId = item.ShopId, ShopName = item.ShopName, WareId = item.WareId, WareName = item.WareName, SealBoxCount = item.SealBoxCount, SealBoxId = item.SealBoxId, BoxConfigureData = item.BoxConfigureData, ProductCount = item.ProductCount, WareType = item.WareType, SetPurchaseOrderOverTime = item.SetPurchaseOrderOverTime }); })); } } else { if (datas != null) System.Windows.MessageBox.Show(datas.Msg); } Task.Factory.StartNew(() => { IsLoadFallWareCount(); }); } else if (TaskState == Models.TaskState.待封箱) { PageSize = 20; if (SealBoxConfigureType == SealBoxConfigureType.已配置) { WaitSealBoxModels = new ObservableCollection(); var datas = sealBoxService.GetWareSealBoxList(SearchShopName, SearchTaskId, SearchSkuId, sealBoxId, PageIndex, PageSize); if (datas != null && datas.Data != null && datas.Success) { var dataModel = datas.Data; OrderCount = dataModel.TotalCount; SealBoxModelList = dataModel.WaitSealBoxModels; foreach (var item in dataModel.WaitSealBoxModels) { App.Current.Dispatcher.Invoke(new Action(() => { WaitSealBoxModels.Add(item); })); } var sealboxTasks = WaitSealBoxModels.Where(p => p.SealBoxPackOverTime != null).ToList(); if (sealboxTasks.Count() > 0 && TaskState == Models.TaskState.待封箱) { sealboxOverTimeThread = new Thread(() => { IsStartThread = true; while (IsStartThread) { App.Current.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in sealboxTasks) { var datetime = item.SealBoxPackOverTime.Value.Subtract(DateTime.Now); if (datetime.TotalMilliseconds > 0) { item.IsSealBoxOverTime = false; item.SealBoxRemainTime = OverTimeHelper.GetTimeString(datetime); } else { item.IsSealBoxOverTime = true; item.SealBoxRemainTime = OverTimeHelper.GetTimeString(datetime); } } })); Thread.Sleep(1000); } }); //任务倒计时数据 sealboxOverTimeThread.IsBackground = true; sealboxOverTimeThread.Start(); } } else { if (datas != null) System.Windows.MessageBox.Show(datas.Msg); } } if (SealBoxConfigureType == SealBoxConfigureType.待配置) { WareNoSealBoxModels = new ObservableCollection(); var datas = sealBoxService.GetWareSealBoxWaitConfigureList(SearchShopName, SearchTaskId, SearchSkuId, PageIndex, PageSize); if (datas != null && datas.Data != null && datas.Success) { var dataModel = datas.Data; OrderCount = dataModel.TotalCount; WaitSealBoxModelList = dataModel.WaitSealBoxModels; foreach (var item in WaitSealBoxModelList) { App.Current.Dispatcher.Invoke(new Action(() => { WareNoSealBoxModels.Add(new WareNoSealBoxModel { AcceptUserName = string.Join("|", item.AcceptUserNames), DepartmentName = item.DepartmentName, SealBoxSkus = item.SealBoxSkus, ShopId = item.ShopId, ShopName = item.ShopName, }); })); } } else { if (datas != null) System.Windows.MessageBox.Show(datas.Msg); } } Task.Factory.StartNew(() => { IsLoadSealBoxCount(); }); } else if (TaskState == Models.TaskState.商家自取) { StoreGetSelfDataList = new ObservableCollection(); var datas = packTaskService.SearchStoreGetSelfList(SearchTaskId, SearchOrderSn, SearchSpuId, SearchSkuId, SearchDepartment, SearchShopName, PageIndex, PageSize, null); if (datas != null && datas.Data != null && datas.Success) { var dataModel = datas.Data; OrderCount = dataModel.TotalCount; foreach (var item in dataModel.StoreGetSelfResponseList) { App.Current.Dispatcher.Invoke(new Action(() => { StoreGetSelfDataList.Add(item); })); } } else { MessageBox.Show(datas?.Msg); } } else if (TaskState == Models.TaskState.待验收) { PackTaskList = new ObservableCollection();//初始化数据 var datas = qualityTaskService.SearchQualityTaskList(SearchWayBillNo, SearchExpressName, SearchDepartment, SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, this.QualityTaskExceptionState, SearchShopName, PageIndex, PageSize, SearchSkuTitle, SearchSpuTitle, SearchPackUserName); if (datas != null && datas.Data != null && datas.Success) { var dataModel = datas.Data; OrderCount = dataModel.TotalCount; QualityExceptionCount = dataModel.QualityExceptionCount.ToString(); QualityTaskCount = dataModel.QualityTaskCount.ToString(); foreach (var item in dataModel.Items) { var data = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(item)); data.ItemList = new List() { new SkuMessage { BrandName = item.BrandName, Logo= item.Logo, SkuName = item.SkuName, SkuId = item.SkuId } }; data.ExpressOrderList = item.ExpressOrderResponses; data.EndTime = item.CreateTime; data.SkuTitle = item.SkuGoodsTitle; data.AcceptName = item.UserName; if (item.BarCodeDTO != null && item.BarCodeDTO.Id > 0) { data.BarCodeModel = item.BarCodeDTO; if (data.BarCodeModel.LabelModel == BarcodeLabelModel.无型号模板) data.BarCodeModel.LabelModel = BarcodeLabelModel.精简模板; } if (item.Cers != null) { data.CertificateModel = item.Cers; } data.ReflashTask = ReflashTask; App.Current.Dispatcher.Invoke(new Action(() => { PackTaskList.Add(data); })); } if (TaskState == Models.TaskState.待验收) { if (QualityTaskExceptionState == Models.QualityTaskExceptionState.待验收) { qualityOverTimeThread = new Thread(() => { var packtasks = PackTaskList.Where(p => p.TaskState == Models.TaskState.待验收 && p.QualityCompletionOverTime != null && p.TaskAbortTime == null).ToList(); if (packtasks.Count() > 0) { IsStartThread = true; while (IsStartThread) { App.Current.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in packtasks) { TimeSpan datetime; if (item.SendToSetSkuConfigureTime != null) datetime = item.QualityCompletionOverTime.Value.Subtract(item.SendToSetSkuConfigureTime.Value); else datetime = item.QualityCompletionOverTime.Value.Subtract(DateTime.Now); item.QualityRemainTime = OverTimeHelper.GetTimeString(datetime); if (datetime.TotalMilliseconds > 0) { item.IsQualityOverTime = false; } else { item.IsQualityOverTime = true; } } })); Thread.Sleep(1000); } } }); //任务倒计时数据 qualityOverTimeThread.IsBackground = true; qualityOverTimeThread.Start(); //任务状态为待验收 } if (QualityTaskExceptionState == Models.QualityTaskExceptionState.验收异常) { var packtasks = PackTaskList.Where(p => p.TaskState == Models.TaskState.待验收 && p.TaskAbortTime != null).ToList(); App.Current.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in packtasks) { TimeSpan datetime; datetime = item.QualityCompletionOverTime.Value.Subtract(item.TaskAbortTime.Value); item.QualityRemainTime = OverTimeHelper.GetTimeString(datetime); if (datetime.TotalMilliseconds > 0) { item.IsQualityOverTime = false; } else { item.IsQualityOverTime = true; } } })); } } //任务状态为待打包 Task.Factory.StartNew(() => { foreach (var item in PackTaskList) { if (!item.OrderId.IsNullOrEmpty() && !item.SkuId.IsNullOrEmpty()) { var expressData = packTaskService.GetPurchaseExpressOrderList(item.OrderId, item.SkuId); if (expressData != null && expressData.Success && expressData.Data != null) { App.Current.Dispatcher.BeginInvoke(new Action(() => { expressData.Data.ForEach(e => { e.ExpressState = ExpressOrderHelper.GetExpressStateName(e.ExpressState); }); item.ExpressOrderList = expressData.Data; })); } } } }); } else { } } else if (TaskState == Models.TaskState.待包装) { PackTaskList = new ObservableCollection();//初始化数据 var datas = packagingTaskService.SearchPackagingTaskList(SearchWayBillNo, SearchExpressName, SearchDepartment, SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, this.PackagingTaskExceptionState, SearchShopName, PageIndex, PageSize, SearchSkuTitle, SearchSpuTitle, SearchPackUserName); if (datas != null && datas.Data != null && datas.Success) { var dataModel = datas.Data; OrderCount = dataModel.TotalCount; PackagingTaskCount = dataModel.PackagingTaskCount.ToString(); PackagingTaskExceptionCount = dataModel.PackagingTaskExceptionCount.ToString(); foreach (var item in dataModel.Items) { var data = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(item)); data.ItemList = new List() { new SkuMessage { BrandName = item.BrandName, Logo= item.Logo, SkuName = item.SkuName, SkuId = item.SkuId } }; data.EndTime = item.CreateTime; data.SkuTitle = item.SkuGoodsTitle; data.AcceptName = item.UserName; if (item.BarCodeDTO != null && item.BarCodeDTO.Id > 0) { data.BarCodeModel = item.BarCodeDTO; if (data.BarCodeModel.LabelModel == BarcodeLabelModel.无型号模板) data.BarCodeModel.LabelModel = BarcodeLabelModel.精简模板; } if (item.Cers != null) { data.CertificateModel = item.Cers; } data.ReflashTask = ReflashTask; if (item.PackUserName != null) data.PackUser = string.Join("\r\n", item.PackUserName); if (item.PackUserName != null && item.PackUserName.Count() > 0) { data.PackUser = string.Join("\r\n", item.PackUserName); } App.Current.Dispatcher.Invoke(new Action(() => { PackTaskList.Add(data); })); } var packCompletedTasks = PackTaskList.Where(p => p.TaskState == Models.TaskState.待包装 && p.PackCompletionOverTime != null && p.TaskAbortTime == null).ToList(); if (packCompletedTasks.Count() > 0) { packOverTimeThread = new Thread(() => { IsStartThread = true; while (IsStartThread) { App.Current.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in packCompletedTasks) { var datetime = item.PackCompletionOverTime.Value.Subtract(DateTime.Now); if (datetime.TotalMilliseconds > 0) { item.IsPackOverTime = false; item.PackRemainTime = OverTimeHelper.GetTimeString(datetime); } else { item.IsPackOverTime = true; item.PackRemainTime = OverTimeHelper.GetTimeString(datetime); } } })); Thread.Sleep(1000); } }); //任务倒计时数据 packOverTimeThread.IsBackground = true; packOverTimeThread.Start(); } var packtasks = PackTaskList.Where(p => p.TaskState == Models.TaskState.待包装 && p.TaskAbortTime != null).ToList(); App.Current.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in packtasks) { TimeSpan datetime; datetime = item.PackCompletionOverTime.Value.Subtract(item.TaskAbortTime.Value); item.PackRemainTime = OverTimeHelper.GetTimeString(datetime); if (datetime.TotalMilliseconds > 0) { item.IsPackOverTime = false; } else { item.IsPackOverTime = true; } } })); Task.Factory.StartNew(() => { foreach (var item in PackTaskList) { if (!item.OrderId.IsNullOrEmpty() && !item.SkuId.IsNullOrEmpty()) { var expressData = packTaskService.GetPurchaseExpressOrderList(item.OrderId, item.SkuId); if (expressData != null && expressData.Success && expressData.Data != null) { App.Current.Dispatcher.BeginInvoke(new Action(() => { expressData.Data.ForEach(e => { e.ExpressState = ExpressOrderHelper.GetExpressStateName(e.ExpressState); }); item.ExpressOrderList = expressData.Data; })); } } } }); } else { } } else { PackTaskList = new ObservableCollection();//初始化数据 var datas = packTaskService.SearchTaskList(SearchWayBillNo, SearchExpressName, SearchDepartment, SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, this.TaskState, SearchShopName, PageIndex, PageSize, SearchSkuTitle, SearchSpuTitle, SearchPackUserName); if (datas != null && datas.Data != null && datas.Success) { var dataModel = datas.Data; OrderCount = dataModel.TotalCount; foreach (var item in dataModel.Items) { var data = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(item)); data.ItemList = new List() { new SkuMessage { BrandName = item.BrandName, GoodsNo = item.ProductItemNum, Logo= item.Logo, SkuName = item.SkuName, SkuId = item.SkuId } }; data.ExpressOrderList = item.ExpressOrderResponses; data.EndTime = item.CreateTime; data.SkuTitle = item.SkuGoodsTitle; data.AcceptName = item.UserName; if (item.BarCodeDTO != null && item.BarCodeDTO.Id > 0) { data.BarCodeModel = item.BarCodeDTO; if (data.BarCodeModel.LabelModel == BarcodeLabelModel.无型号模板) data.BarCodeModel.LabelModel = BarcodeLabelModel.精简模板; } if (item.Cers != null) { data.CertificateModel = item.Cers; } data.ReflashTask = ReflashTask; if (item.FeesItemResponse != null) { data.FeesItemResponse = item.FeesItemResponse; data.FeesMoney = item.FeesItemResponse.AllFees; data.FeesItemResponse.DiscountAllFees = item.FeesItemResponse.AllFees * item.FeesItemResponse.disCount; data.IsShowFees = data.FeesMoney > 0 ? true : false; } else { data.IsShowFees = false; } if (item.PackUserName != null && item.PackUserName.Count() > 0) { data.PackUser = string.Join("\r\n", item.PackUserName); } App.Current.Dispatcher.Invoke(new Action(() => { PackTaskList.Add(data); })); } if (TaskState == Models.TaskState.待验收) { qualityOverTimeThread = new Thread(() => { var packtasks = PackTaskList.Where(p => p.TaskState == Models.TaskState.待验收 && p.QualityCompletionOverTime != null).ToList(); if (packtasks.Count() > 0) { IsStartThread = true; while (IsStartThread) { App.Current.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in packtasks) { TimeSpan datetime; if (item.SendToSetSkuConfigureTime != null) datetime = item.QualityCompletionOverTime.Value.Subtract(item.SendToSetSkuConfigureTime.Value); else datetime = item.QualityCompletionOverTime.Value.Subtract(DateTime.Now); item.QualityRemainTime = OverTimeHelper.GetTimeString(datetime); if (datetime.TotalMilliseconds > 0) { item.IsQualityOverTime = false; } else { item.IsQualityOverTime = true; } } })); Thread.Sleep(1000); } } }); //任务倒计时数据 qualityOverTimeThread.IsBackground = true; qualityOverTimeThread.Start(); //任务状态为待验收 } if (TaskState == Models.TaskState.待包装) { var packCompletedTasks = PackTaskList.Where(p => p.TaskState == Models.TaskState.待包装 && p.PackCompletionOverTime != null).ToList(); if (packCompletedTasks.Count() > 0) { packOverTimeThread = new Thread(() => { IsStartThread = true; while (IsStartThread) { App.Current.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in packCompletedTasks) { var datetime = item.PackCompletionOverTime.Value.Subtract(DateTime.Now); if (datetime.TotalMilliseconds > 0) { item.IsPackOverTime = false; item.PackRemainTime = OverTimeHelper.GetTimeString(datetime); } else { item.IsPackOverTime = true; item.PackRemainTime = OverTimeHelper.GetTimeString(datetime); } } })); Thread.Sleep(1000); } }); //任务倒计时数据 packOverTimeThread.IsBackground = true; packOverTimeThread.Start(); } } if (TaskState == Models.TaskState.待排单) { var packCompletedTasks = PackTaskList.Where(p => p.TaskState == Models.TaskState.待排单 && p.ScheduleOverTime != null).ToList(); if (packCompletedTasks.Count() > 0) { scheduleOverTimeThread = new Thread(() => { IsStartThread = true; while (IsStartThread) { App.Current.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in packCompletedTasks) { var datetime = item.ScheduleOverTime.Value.Subtract(DateTime.Now); if (datetime.TotalMilliseconds > 0) { item.IsScheduleOverTime = false; item.ScheduleRemainTime = OverTimeHelper.GetTimeString(datetime); } else { item.IsScheduleOverTime = true; item.ScheduleRemainTime = OverTimeHelper.GetTimeString(datetime); } } })); Thread.Sleep(1000); } }); //任务倒计时数据 scheduleOverTimeThread.IsBackground = true; scheduleOverTimeThread.Start(); } } //任务状态为待打包 Task.Factory.StartNew(() => { foreach (var item in PackTaskList) { if (!item.OrderId.IsNullOrEmpty() && !item.SkuId.IsNullOrEmpty()) { var expressData = packTaskService.GetPurchaseExpressOrderList(item.OrderId, item.SkuId); if (expressData != null && expressData.Success && expressData.Data != null) { App.Current.Dispatcher.BeginInvoke(new Action(() => { expressData.Data.ForEach(e => { e.ExpressState = ExpressOrderHelper.GetExpressStateName(e.ExpressState); }); item.ExpressOrderList = expressData.Data; })); } } } }); } else { } } Task.Factory.StartNew(() => { IsLoadCount(); }); } catch { } IsLoading = false; }); } private void IsLoadWaitTransportCount() { var res = sealBoxService.GetWareTransportCounts(null); if (res != null && res.Success && res.Data != null) { App.Current.Dispatcher.Invoke(new Action(() => { WaitTransportCloudWareCount = res.Data.WaitTransportCloudWareCount; WaitTransportJuShuiTanCount = res.Data.WaitTransportJuShuiTanCount; WaitTransportStoreWareCount = res.Data.WaitTransportStoreWareCount; WaitTransportJDWareCount = res.Data.WaitTransportJDWareCount; })); } } private void IsLoadSealBoxCount() { var res = sealBoxService.GetWareSealBoxConfigureCounts(); if (res != null && res.Success && res.Data != null) { App.Current.Dispatcher.Invoke(new Action(() => { FallWareWaitConfigureCount = res.Data.SealBoxWaitConfigureCount.ToString(); FallWareConfiguredCount = res.Data.SealBoxConfiguredCount.ToString(); })); } } private void IsLoadFallWareCount() { var res = sealBoxService.GetFallWareConfigureCounts(null); if (res != null && res.Success && res.Data != null) { App.Current.Dispatcher.Invoke(new Action(() => { FallWareWaitConfigureCount = res.Data.FallWareWaitConfigureCount.ToString(); FallWareConfiguredCount = res.Data.FallWareConfiguredCount.ToString(); })); } } private void IsLoadCount() { var packTaskResult = packTaskService.GetTaskAllCount(); if (packTaskResult != null && packTaskResult.Success && packTaskResult.Data != null) { App.Current.Dispatcher.Invoke(new Action(() => { ArrivedCount = packTaskResult.Data.ArrivedCount.ToString(); NoArrivedCount = packTaskResult.Data.NoArrivedCount.ToString(); SomeArrivedCount = packTaskResult.Data.SomeArrivedCount.ToString(); WorryCount = packTaskResult.Data.WorryCount.ToString(); WaitOutbound = packTaskResult.Data.WaitOutbound?.ToString(); WaitPackCount = packTaskResult.Data.WaitPackCount?.ToString(); WaitSealBoxCount = packTaskResult.Data.WaitSealBox?.ToString(); WaitFallWareCount = packTaskResult.Data.WaitFallWareCount?.ToString(); WaitCompleted = packTaskResult.Data.WaitCompleted?.ToString(); WaitTransportCount = packTaskResult.Data.WaitTransportCount?.ToString(); WaitScheduleCount = packTaskResult.Data.WaitScheduleCount?.ToString(); })); } } private void LoadIndex(int pageIndex) { PageIndex = pageIndex;// SearchTaskList(); } /// /// 刷新界面 /// public void ReflashTask() { SearchTaskList(); } private void OpenSkuDetail(object param) { var paramList = (object[])param; var skuId = paramList.Last().ToString(); var url = $"https://item.jd.com/{skuId}.html"; try { System.Diagnostics.Process.Start("explorer.exe", url); } catch (Exception ex) { Clipboard.SetText(url); System.Windows.MessageBox.Show($"{ex.Message}\r\n调用浏览器失败,网页链接已复制到剪切板,请手动打开浏览器访问", "提示"); } } #endregion } }