步步为盈
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.

207 lines
7.5 KiB

using BBWY.Client.APIServices;
using BBWY.Client.Models.PackTask;
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.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using System.Windows;
using System.Linq;
using AutoMapper.Internal;
using WebSocketSharp;
namespace BBWY.Client.ViewModels.TotalPackTask
{
public class ShopPackTaskTotalViewModel : 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 searchSkuId;
private ObservableCollection<ShopTotal> packTaskTotalList;
public ObservableCollection<ShopTotal> PackTaskTotalList { get => packTaskTotalList; set { Set(ref packTaskTotalList, value); } }
public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, 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); } }
private decimal totalPackDiscountFees;
/// <summary>
/// 总打包费用
/// </summary>
public decimal TotalPackDiscountFees { get => totalPackDiscountFees; set { Set(ref totalPackDiscountFees, value); } }
private decimal totalConsumableFees;
/// <summary>
/// 总耗材费
/// </summary>
public decimal TotalConsumableFees { get => totalConsumableFees; set { Set(ref totalConsumableFees, value); } }
private decimal totalFees;
/// <summary>
/// 总耗材费
/// </summary>
public decimal TotalFees { get => totalFees; set { Set(ref totalFees, value); } }
public ICommand SetSearchDateCommand { get; set; }
public ICommand SearchTaskTotalCommand { get; set; }
public ICommand ExportCommand { get; set; }
public ICommand OrderPageIndexChangedCommand { get; set; }
//public IList<Department> departmentList;
//ShopService shopService;
public ShopPackTaskTotalViewModel(PackTaskService packTaskService, GlobalContext globalContext)
{
this.packTaskService = packTaskService;
SearchTaskTotalCommand = new RelayCommand(() =>
{
SearchTask(1);
});
StartDate = DateTime.Now;
EndDate = DateTime.Now;
SetSearchDateCommand = new RelayCommand<int>(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<PageArgs>(p =>
{
LoadOrder(p.PageIndex);
});
ExportCommand = new RelayCommand(Export);
SearchTaskTotal();
this.globalContext = globalContext;
}
GlobalContext globalContext;
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.ShopTotalV2(SearchSkuId, SearchTaskId, globalContext.User.Shop.ShopId.ToString(), StartDate, EndDate, null,
null, 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 SearchTaskTotal()
{
PackTaskTotalList = new ObservableCollection<ShopTotal>();
Task.Factory.StartNew(() =>
{
IsLoading = true;
var res = packTaskService.ShopTotalV2(SearchSkuId, SearchTaskId, globalContext.User.Shop.ShopId.ToString(), StartDate, EndDate, null,
null, PageIndex, PageSize);
if (res != null && res.Success)
{
OrderCount = res.Data.TotalCount;
TotalConsumableFees = res.Data.TotalConsumableFees;
TotalPackDiscountFees = res.Data.TotalPackDiscountFees;
TotalFees = TotalConsumableFees + TotalPackDiscountFees;
foreach (var shopTotal in res.Data.ShopTotals)
{
if (!shopTotal.ProcessComboName.IsNullOrEmpty())
shopTotal.FeesItemResponse = new Models.APIModel.Response.PackTask.FeesItemResponse
{
AllFees = shopTotal.AllFees.Value,
PackFees = shopTotal.PackDisCountFees.Value,
TaskId = shopTotal.TaskId,
ProcessTypeName = shopTotal.ProcessTypeName,
ProcessComboName = shopTotal.ProcessComboName,
ConsumableFees = shopTotal.ConsumableFees,
ConsumableList = shopTotal.ConsumableList,
ProcessComboPrice = shopTotal.ProcessComboPrice,
ProcessComboTaskCount = shopTotal.ProcessComboTaskCount,
DiscountFoctor = shopTotal.DiscountFactor
};
App.Current.Dispatcher.Invoke(() =>
{
PackTaskTotalList.Add(shopTotal);
});
}
}
IsLoading = false;
});
}
private void LoadOrder(int pageIndex)
{
SearchTask(pageIndex);
}
private void SearchTask(int pageIndex)
{
PageIndex = pageIndex;
SearchTaskTotal();
}
}
}