using AutoMapper.Internal; using BBWY.Client.APIServices; using BBWY.Client.Helpers; using BBWY.Client.Models; using BBWY.Client.Models.PackTask; using BBWY.Client.Views.Order; using BBWY.Client.Views.PackTask; using BBWY.Common.Extensions; using BBWY.Common.Models; using BBWY.Controls; using GalaSoft.MvvmLight.Command; using Microsoft.Win32; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; namespace BBWY.Client.ViewModels.PackTask { public class PackTaskTotalViewModel : BaseVM, IDenpendency { private readonly PackTaskService packTaskService; private bool isLoading; private DateTime startDate; private DateTime endDate; private int pageIndex = 1; private int pageSize = 15; private int orderCount; private string searchTaskId; private string searchDepartment; private string searchShopName; private string searchSkuId; private ObservableCollection packTaskTotalList; private bool isBatchChecked; public bool IsBatchChecked { get => isBatchChecked; set { Set(ref isBatchChecked, value); } } public ObservableCollection PackTaskTotalList { get => packTaskTotalList; set { Set(ref packTaskTotalList, value); } } public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, value); } } public string SearchShopName { get => searchShopName; set { Set(ref searchShopName, value); } } public string SearchDepartment { get => searchDepartment; set { Set(ref searchDepartment, value); } } public string SearchTaskId { get => searchTaskId; set { Set(ref searchTaskId, value); } } public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } public DateTime StartDate { get => startDate; set { Set(ref startDate, value); } } public DateTime EndDate { get => endDate; set { Set(ref endDate, value); } } 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); } } public ICommand SetSearchDateCommand { get; set; } public ICommand SearchTaskTotalCommand { get; set; } public ICommand ExportCommand { get; set; } public ICommand BatchSettleCommand { get; set; } public ICommand SettleCommand { get; set; } public ICommand OrderPageIndexChangedCommand { get; set; } public ICommand BatchCheckedCommand { get; set; } //public IList departmentList; //ShopService shopService; public PackTaskTotalViewModel(PackTaskService packTaskService) { this.packTaskService = packTaskService; //this.shopService = shopService; SearchTaskTotalCommand = new RelayCommand(() => { SearchTask(1); }); StartDate = DateTime.Now; EndDate = DateTime.Now; SetSearchDateCommand = new RelayCommand(d => { EndDate = d == 1 ? DateTime.Now.Date.AddDays(-1) : DateTime.Now; StartDate = DateTime.Now.Date.AddDays(d * -1); PageIndex = 1; Task.Factory.StartNew(() => LoadOrder(1)); //点击日期查询订单 }); OrderPageIndexChangedCommand = new RelayCommand(p => { LoadOrder(p.PageIndex); }); BatchCheckedCommand = new RelayCommand(BatchCheck); BatchSettleCommand = new RelayCommand(BatchSettle); SettleCommand = new RelayCommand(SettleTask); ExportCommand = new RelayCommand(Export); SearchTaskTotal(); } private void Export() { SaveFileDialog save = new SaveFileDialog(); save.Filter = "csv files(*.csv)|*.csv"; var result = save.ShowDialog(); if (result == null || !result.Value) { return; } string fileName = save.FileName; Task.Factory.StartNew(() => { IsLoading = true; var res = packTaskService.ShopTotal(SearchSkuId, SearchTaskId, StartDate, EndDate, SearchShopName, SearchDepartment, 0, 0);//获取全部数据 if (res.Success) { //string title = "任务ID,日期,是否结清,部门,店铺,对接人,sku名称,sku数量,增值服务,打包服务,耗材服务,原价,促销折扣,结算价格,对接备注"; string title = "任务ID,日期,是否结清,所属部门,所属店铺,打包数量,箱子,气泡纸,胶带,其他,耗材总价,收货数量,基础价格,增量配件价,增量工序价格,打包单价,打包原价,收费方式,打包折扣系数,打包折扣价,增值费用,总收费"; var excelList = res.Data.ShopTotals.Select(x => x.ToString()).ToList(); excelList.Insert(0, title); System.IO.File.WriteAllLines(fileName, excelList, Encoding.UTF8); } IsLoading = false; }); } private void BatchCheck() { if (PackTaskTotalList.Count > 0) App.Current.Dispatcher.Invoke(() => { PackTaskTotalList.ForAll(s => { s.TaskChecked = IsBatchChecked; }); }); } private void SettleTask(long obj) { MessageBoxResult result = MessageBox.Show($"是否结清任务:{obj} ?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning); if (result != MessageBoxResult.Yes) return; SettlePackTask(obj); } private void BatchSettle() { var ids = PackTaskTotalList.Where(p => p.TaskChecked).Select(p => p.TaskId).ToArray(); if (ids.Length <= 0) return; MessageBoxResult result = MessageBox.Show("是否批量结清?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning); if (result != MessageBoxResult.Yes) return; SettlePackTask(ids); } private void SettlePackTask(params long[] ids) { Task.Factory.StartNew(() => { IsLoading = true; var res = packTaskService.BatchSettle(ids); if (res.Success) { SearchTaskTotal(); } IsLoading = false; }); } private void SearchTaskTotal() { PackTaskTotalList = new ObservableCollection(); Task.Factory.StartNew(() => { IsLoading = true; var res = packTaskService.ShopTotal(SearchSkuId, SearchTaskId, StartDate, EndDate, SearchShopName, SearchDepartment, PageIndex, PageSize); if (res != null && res.Success) { OrderCount = res.Data.TotalCount; foreach (var shopTotal in res.Data.ShopTotals) { App.Current.Dispatcher.Invoke(() => { PackTaskTotalList.Add(shopTotal); }); } if (IsBatchChecked) { BatchCheck(); } } IsLoading = false; }); } private void LoadOrder(int pageIndex) { SearchTask(pageIndex); } private void SearchTask(int pageIndex) { PageIndex = pageIndex; SearchTaskTotal(); } } }