using BBWY.Client.APIServices; using BBWY.Client.APIServices.QiKu; using BBWY.Client.Models.APIModel; using BBWY.Client.Models.PackTask; using BBWY.Common.Models; using BBWY.Controls; using GalaSoft.MvvmLight.Command; using Microsoft.Win32; using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Input; namespace BBWY.Client.ViewModels.TotalPackTask { public class PackUserSalaryViewModel : BaseVM, IDenpendency { public PackUserService packUserService; public PackTaskService packTaskService; private bool isLoading; private DateTime startTime; private DateTime endTime; private int pageIndex = 1; private int pageSize = 20; private int orderCount; private List packUserSalaryList; private string searchUserName; public string SearchUserName { get => searchUserName; set { Set(ref searchUserName, value); } } public List PackUserSalaryList { get => packUserSalaryList; set { Set(ref packUserSalaryList, value); } } public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } public DateTime StartTime { get => startTime; set { Set(ref startTime, value); } } public DateTime EndTime { get => endTime; set { Set(ref endTime, 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 SearchPackUserSalaryCommand { get; set; } public ICommand ExportCommand { get; set; } public ICommand OrderPageIndexChangedCommand { get; set; } public ICommand SetSearchDateCommand { get; set; } public PackUserSalaryViewModel(PackTaskService packTaskService, PackUserService packUserService) { this.packTaskService = packTaskService; this.packUserService = packUserService; OrderPageIndexChangedCommand = new RelayCommand(p => { LoadOrder(p.PageIndex); }); SearchPackUserSalaryCommand = new RelayCommand(SearchPackUserSalary); StartTime = DateTime.Now; EndTime = DateTime.Now; SearchPackUserSalary(); SetSearchDateCommand = new RelayCommand(d => { EndTime = d == 1 ? DateTime.Now.Date.AddDays(-1) : DateTime.Now; StartTime = DateTime.Now.Date.AddDays(d * -1); PageIndex = 1; Task.Factory.StartNew(() => LoadOrder(1)); //点击日期查询订单 }); ExportCommand = new RelayCommand(Export); } private void LoadOrder(int pageIndex) { PageIndex = pageIndex; SearchPackUserSalary(); } private void SearchPackUserSalary() { PackUserSalaryList = new List(); Task.Factory.StartNew(() => { IsLoading = true; var res = packTaskService.TotalPackUserSalaryV1(searchUserName, StartTime, EndTime, PageIndex, PageSize); if (res != null && res.Success) { OrderCount = res.Data.TotalCount; App.Current.Dispatcher.Invoke(() => { PackUserSalaryList = res.Data.PackUserSalaries; }); //foreach (var packUserSalary in res.Data.PackUserSalaries) //{ // App.Current.Dispatcher.Invoke(() => // { // PackUserSalaryList.Add(packUserSalary); // }); //} } else { App.Current.Dispatcher.Invoke(() => { PackUserSalaryList = new List(); }); } IsLoading = false; }); } 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.TotalPackUserSalaryV1(SearchUserName, StartTime, EndTime, 0, 0);//获取全部数据 if (res.Success) { //string title = "任务ID,日期,是否结清,部门,店铺,对接人,sku名称,sku数量,增值服务,打包服务,耗材服务,原价,促销折扣,结算价格,对接备注"; List exportList = new List(); string title = "日期,花名,总收益"; if (res.Data.TotalCount > 0) { foreach (var item in res.Data.PackUserSalaries[0].IncomeItems) { title += $",{item.Name}"; } exportList.Add(title); foreach (var packUserSalary in res.Data.PackUserSalaries) { List rowList =new List(); rowList.Add(packUserSalary.Date.ToString("yyyy-MM-dd")); rowList.Add(packUserSalary.PackUserName); rowList.Add(packUserSalary.TotalIncome.ToString("0.00")); foreach (var incomeItem in packUserSalary.IncomeItems) { rowList.Add(incomeItem.TotalPrice.ToString() ); } exportList.Add(string.Join(",", rowList)); } } //var excelList = res.Data.ShopTotals.Select(x => x.ToString()).ToList(); //excelList.Insert(0, title); System.IO.File.WriteAllLines(fileName, exportList, Encoding.UTF8); } IsLoading = false; }); } } }