You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
223 lines
9.2 KiB
223 lines
9.2 KiB
using BBWY.Client.APIServices;
|
|
using BBWY.Client.Models;
|
|
using BBWY.Common.Models;
|
|
using BBWY.Controls;
|
|
using GalaSoft.MvvmLight.Command;
|
|
using Microsoft.Win32;
|
|
using Newtonsoft.Json;
|
|
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
|
|
{
|
|
public class ExportOrderSkuViewModel : BaseVM, IDenpendency
|
|
{
|
|
private DateTime startDate;
|
|
private DateTime endDate;
|
|
|
|
private GlobalContext globalContext;
|
|
private KVModel selectedPlatform;
|
|
private int pageIndex;
|
|
private int pageSize;
|
|
private long totalCount;
|
|
private bool isLoading;
|
|
private bool isShowAll_Shop;
|
|
private bool isShowAll_Department;
|
|
|
|
private OrderService orderService;
|
|
|
|
public IList<Department> DepartmentList { get; set; }
|
|
|
|
public IList<Shop> ShopList { get; set; }
|
|
|
|
public IList<KVModel> PlatformList { get; set; }
|
|
|
|
public IList<ExportOrderSkuResponse> ExportSkuList { get; set; }
|
|
|
|
public DateTime StartDate { get => startDate; set { Set(ref startDate, value); } }
|
|
public DateTime EndDate { get => endDate; set { Set(ref endDate, value); } }
|
|
|
|
public KVModel SelectedPlatform { get => selectedPlatform; set { Set(ref selectedPlatform, value); } }
|
|
|
|
public ICommand SearchCommand { get; set; }
|
|
|
|
public ICommand ExportCommand { get; set; }
|
|
|
|
public ICommand OrderPageIndexChangedCommand { get; set; }
|
|
|
|
public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } }
|
|
public int PageSize { get => pageSize; set { Set(ref pageSize, value); } }
|
|
|
|
public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } }
|
|
|
|
public long TotalCount { get => totalCount; set { Set(ref totalCount, value); } }
|
|
|
|
public bool IsShowAll_Shop { get => isShowAll_Shop; set { Set(ref isShowAll_Shop, value); } }
|
|
|
|
public bool IsShowAll_Department { get => isShowAll_Department; set { Set(ref isShowAll_Department, value); } }
|
|
|
|
public ExportOrderSkuViewModel(GlobalContext globalContext, OrderService orderService)
|
|
{
|
|
this.orderService = orderService;
|
|
|
|
DepartmentList = new ObservableCollection<Department>();
|
|
ShopList = new ObservableCollection<Shop>();
|
|
PlatformList = new ObservableCollection<KVModel>();
|
|
ExportSkuList = new ObservableCollection<ExportOrderSkuResponse>();
|
|
SearchCommand = new RelayCommand(Search);
|
|
ExportCommand = new RelayCommand(Export);
|
|
OrderPageIndexChangedCommand = new RelayCommand<PageArgs>(p =>
|
|
{
|
|
//this.PageIndex = p.PageIndex;
|
|
Task.Factory.StartNew(() => SearchCore(p.PageIndex));
|
|
});
|
|
|
|
var platformEnumValues = Enum.GetValues(typeof(Platform));
|
|
foreach (var ev in platformEnumValues)
|
|
{
|
|
var p = (Platform)ev;
|
|
PlatformList.Add(new KVModel()
|
|
{
|
|
Key = p.ToString(),
|
|
Value = ((int)p).ToString()
|
|
});
|
|
}
|
|
IsShowAll_Department = IsShowAll_Shop = true;
|
|
this.globalContext = globalContext;
|
|
LoadDepartment();
|
|
StartDate = DateTime.Now.Date;
|
|
EndDate = DateTime.Now.Date;
|
|
PageIndex = 1;
|
|
PageSize = 20;
|
|
}
|
|
|
|
private void LoadDepartment()
|
|
{
|
|
var dlist = JsonConvert.DeserializeObject<IList<Department>>(JsonConvert.SerializeObject(globalContext.User.DepartmentList));
|
|
foreach (var d in dlist)
|
|
{
|
|
d.IsSelected = false;
|
|
DepartmentList.Add(d);
|
|
d.OnIsSelectedChanged = OnDeparmentSelectionChanged;
|
|
}
|
|
ShopList.Clear();
|
|
}
|
|
|
|
private void OnDeparmentSelectionChanged()
|
|
{
|
|
ShopList.Clear();
|
|
foreach (var d in DepartmentList)
|
|
{
|
|
if (!d.IsSelected)
|
|
continue;
|
|
foreach (var s in d.ShopList)
|
|
{
|
|
s.OnIsSelectedChanged = OnShopSelectionChanged;
|
|
s.IsSelected = false;
|
|
ShopList.Add(s);
|
|
}
|
|
}
|
|
IsShowAll_Department = !DepartmentList.Any(d => d.IsSelected);
|
|
}
|
|
|
|
private void OnShopSelectionChanged()
|
|
{
|
|
IsShowAll_Shop = !ShopList.Any(s => s.IsSelected);
|
|
}
|
|
|
|
private void Search()
|
|
{
|
|
PageIndex = 1;
|
|
Task.Factory.StartNew(() => SearchCore(PageIndex));
|
|
}
|
|
|
|
private void SearchCore(int pageIndex)
|
|
{
|
|
IsLoading = true;
|
|
int? purchasePlatform = null;
|
|
if (SelectedPlatform != null)
|
|
purchasePlatform = int.Parse(SelectedPlatform.Value);
|
|
List<long> shopIds = new List<long>();
|
|
if (ShopList.Count() > 0)
|
|
{
|
|
if (ShopList.Any(s => s.IsSelected))
|
|
shopIds.AddRange(ShopList.Where(s => s.IsSelected).Select(s => s.ShopId));
|
|
else
|
|
shopIds.AddRange(ShopList.Select(s => s.ShopId));
|
|
}
|
|
var response = orderService.QueryOrderSkuList(StartDate,
|
|
EndDate,
|
|
purchasePlatform,
|
|
shopIds,
|
|
pageIndex,
|
|
PageSize);
|
|
IsLoading = false;
|
|
TotalCount = 0;
|
|
if (!response.Success)
|
|
{
|
|
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示"));
|
|
return;
|
|
}
|
|
TotalCount = response.Data.Count;
|
|
App.Current.Dispatcher.Invoke(() =>
|
|
{
|
|
ExportSkuList.Clear();
|
|
foreach (var item in response.Data.ItemList)
|
|
ExportSkuList.Add(item);
|
|
});
|
|
|
|
}
|
|
|
|
private void Export()
|
|
{
|
|
var sfd = new SaveFileDialog() { Filter = "csv files(*.csv)|*.csv" };
|
|
if (sfd.ShowDialog() != true)
|
|
return;
|
|
|
|
var ssaveFileName = sfd.FileName;
|
|
|
|
int? purchasePlatform = null;
|
|
if (SelectedPlatform != null)
|
|
purchasePlatform = int.Parse(SelectedPlatform.Value);
|
|
IsLoading = true;
|
|
Task.Factory.StartNew(() => orderService.ExportOrderSkuList(StartDate,
|
|
EndDate,
|
|
purchasePlatform,
|
|
ShopList.Where(s => s.IsSelected).Select(s => s.ShopId).ToList())).ContinueWith(t =>
|
|
{
|
|
var response = t.Result;
|
|
|
|
if (!response.Success)
|
|
{
|
|
IsLoading = false;
|
|
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示"));
|
|
return;
|
|
}
|
|
|
|
try
|
|
{
|
|
var list = response.Data.Select(x => x.ToString()).ToList();
|
|
list.Insert(0, "开始时间,店铺名称,订单Id,SPU,SKU,仓储类型,采购成本(货款+运费),单价,数量,商品标题");
|
|
System.IO.File.WriteAllLines(ssaveFileName, list, Encoding.UTF8);
|
|
App.Current.Dispatcher.Invoke(() => MessageBox.Show("导出完成", "导出"));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "导出"));
|
|
return;
|
|
}
|
|
finally
|
|
{
|
|
IsLoading = false;
|
|
}
|
|
});
|
|
|
|
}
|
|
}
|
|
}
|
|
|