From cead786fbe7e63100b27b5d7be63645b347df93e Mon Sep 17 00:00:00 2001 From: "506583276@qq.com" <506583276@qq.com> Date: Thu, 25 May 2023 13:30:14 +0800 Subject: [PATCH] 1 --- BBWY.Client/APIServices/PackTaskService.cs | 48 ++-- BBWY.Client/BBWYAppSettings.json | 4 +- .../PackTask/TotalPackUserSalaryResponse.cs | 72 ++++++ BBWY.Client/ViewModels/MainViewModel.cs | 24 +- .../PackTask/PackTaskTotalViewModel.cs | 1 - .../TotalPackTask/PackUserSalaryViewModel.cs | 185 ++++++++++++++ BBWY.Client/ViewModels/ViewModelLocator.cs | 11 + .../TotalPackTask/PackUserSalaryControl.xaml | 10 + .../PackUserSalaryControl.xaml.cs | 234 ++++++++++++++++++ .../TotalPackTask/PackUserSalaryList.xaml | 170 +++++++++++++ .../TotalPackTask/PackUserSalaryList.xaml.cs | 109 ++++++++ 11 files changed, 825 insertions(+), 43 deletions(-) create mode 100644 BBWY.Client/Models/APIModel/Response/PackTask/TotalPackUserSalaryResponse.cs create mode 100644 BBWY.Client/ViewModels/TotalPackTask/PackUserSalaryViewModel.cs create mode 100644 BBWY.Client/Views/TotalPackTask/PackUserSalaryControl.xaml create mode 100644 BBWY.Client/Views/TotalPackTask/PackUserSalaryControl.xaml.cs create mode 100644 BBWY.Client/Views/TotalPackTask/PackUserSalaryList.xaml create mode 100644 BBWY.Client/Views/TotalPackTask/PackUserSalaryList.xaml.cs diff --git a/BBWY.Client/APIServices/PackTaskService.cs b/BBWY.Client/APIServices/PackTaskService.cs index 2ef1068c..8ec75749 100644 --- a/BBWY.Client/APIServices/PackTaskService.cs +++ b/BBWY.Client/APIServices/PackTaskService.cs @@ -276,6 +276,24 @@ namespace BBWY.Client.APIServices }, null, HttpMethod.Post); } + /// + /// 取消拳探任务 + /// + /// + /// + public ApiResponse TotalPackUserSalary(string PackUserName = null, DateTime? StartTime = null, DateTime? EndTime=null, int PageIndex=1 + , int PageSize=10) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/TotalPackUserSalary", new + { + PackUserName, + StartTime, + EndTime, + PageIndex, + PageSize + }, null, HttpMethod.Post); + } + } @@ -454,35 +472,7 @@ namespace BBWY.Client.APIServices public ServiceType ServiceType { get; set; } } - //public class IncreateMemberModel - //{ - // public decimal Price { get; set; } - - // public string UserId { get; set; } - // /// - // /// 增值服务Id - // /// - // public long IncreateId { get; set; } - // /// - // /// 数量 - // /// - // public int IncreateCount { get; set; } - - //} - //public class ProcessMemberModel - //{ - // public decimal Price { get; set; } - // public string UserId { get; set; } - // /// - // /// 工序服务Id - // /// - // public long ProcessId { get; set; } - - // /// - // /// 工序服务数量 - // /// - // public int ProcessCount { get; set; } - //} + diff --git a/BBWY.Client/BBWYAppSettings.json b/BBWY.Client/BBWYAppSettings.json index ef760e08..34888905 100644 --- a/BBWY.Client/BBWYAppSettings.json +++ b/BBWY.Client/BBWYAppSettings.json @@ -4,6 +4,6 @@ "MDSApiHost": "http://mdsapi.qiyue666.com", "JOSApiHost": "", "1688ApiHost": "", - // "QKApiHost": "http://localhost:8080" - "QKApiHost": "http://qiku.qiyue666.com" + "QKApiHost": "http://localhost:8080" + // "QKApiHost": "http://qiku.qiyue666.com" } \ No newline at end of file diff --git a/BBWY.Client/Models/APIModel/Response/PackTask/TotalPackUserSalaryResponse.cs b/BBWY.Client/Models/APIModel/Response/PackTask/TotalPackUserSalaryResponse.cs new file mode 100644 index 00000000..5c8f2a89 --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/PackTask/TotalPackUserSalaryResponse.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.APIModel +{ + public class TotalPackUserSalaryResponse + { + /// + /// 数量 + /// + public int TotalCount { get; set; } + + /// + /// 明细 + /// + public List PackUserSalaries { get; set; } + } + /// + /// 打包人日薪 + /// + public class PackUserSalary + { + /// + /// 日期 + /// + public DateTime Date { get; set; } + + /// + /// 花名 + /// + public string PackUserName { get; set; } + + /// + /// 总收益 + /// + public decimal TotalIncome { get; set; } + + /// + /// 收益项目明细 + /// + public List IncomeItems { get; set; } + } + + /// + /// 收益项目 + /// + public class IncomeItem + { + /// + /// 项目Id + /// + public long ServiceId { get; set; } + /// + /// 项目名称 + /// + public string Name { get; set; } + /// + /// 单价价格 + /// + public decimal Price { get; set; } + /// + /// 数量 + /// + public int ServiceCount { get; set; } + + /// + /// 总计 + /// + public decimal TotalPrice { get; set; } + } +} diff --git a/BBWY.Client/ViewModels/MainViewModel.cs b/BBWY.Client/ViewModels/MainViewModel.cs index 0fc9c5ad..c36d866a 100644 --- a/BBWY.Client/ViewModels/MainViewModel.cs +++ b/BBWY.Client/ViewModels/MainViewModel.cs @@ -92,8 +92,8 @@ namespace BBWY.Client.ViewModels { this.w2m = w2m; this.managerDepartment = new List() { "董事办", "财务部", "技术部", "总经办" }; - this.packDepartment = new List() { "打包组" ,"发货组" , "仓储部" }; - + this.packDepartment = new List() { "打包组", "发货组", "仓储部" }; + this.httpClientFactory = httpClientFactory; this.mdsApiService = mdsApiService; @@ -135,7 +135,8 @@ namespace BBWY.Client.ViewModels { new MenuModel(){ Name="打包任务",Url="/Views/PackTask/WareHouseList.xaml" }, new MenuModel(){ Name="耗材管理",Url="/Views/PackTask/Consumable.xaml" }, - new MenuModel(){ Name="账单管理",Url="/Views/PackTask/PackTaskTotal.xaml" } + new MenuModel(){ Name="账单管理",Url="/Views/PackTask/PackTaskTotal.xaml" }, + new MenuModel(){ Name="收益账单",Url="/Views/TotalPackTask/PackUserSalaryList.xaml" } } }); @@ -199,7 +200,7 @@ namespace BBWY.Client.ViewModels } }); - + }); if (managerDepartment.Contains(GlobalContext.User.TeamName) || managerDepartment.Any(m => GlobalContext.User.SonDepartmentNames.Contains(m))) @@ -212,10 +213,11 @@ namespace BBWY.Client.ViewModels Name = "齐库仓库端", ChildList = new List() { - new MenuModel(){ Name="打包任务",Url="/Views/PackTask/WareHouseList.xaml" }, - new MenuModel(){ Name="耗材管理",Url="/Views/PackTask/Consumable.xaml" }, - new MenuModel(){ Name="账单管理",Url="/Views/PackTask/PackTaskTotal.xaml" } - } + new MenuModel(){ Name="打包任务",Url="/Views/PackTask/WareHouseList.xaml" }, + new MenuModel(){ Name="耗材管理",Url="/Views/PackTask/Consumable.xaml" }, + new MenuModel(){ Name="账单管理",Url="/Views/PackTask/PackTaskTotal.xaml" }, + new MenuModel(){ Name="收益账单",Url="/Views/TotalPackTask/PackUserSalaryList.xaml" } + } }); }); @@ -272,7 +274,7 @@ namespace BBWY.Client.ViewModels CreateMenu(); - + IList departmentList = null; if (GlobalContext.User.TeamName == "刷单组" || this.packDepartment.Contains(GlobalContext.User.TeamName) || @@ -349,7 +351,7 @@ namespace BBWY.Client.ViewModels if (this.packDepartment.Contains(GlobalContext.User.TeamName)) return; - + if (GlobalContext.User.TeamName == "刷单组") return; @@ -391,7 +393,7 @@ namespace BBWY.Client.ViewModels vm.WareManager.Refresh(); if (vm.IsCreateWareStock) vm.WareStock.Refresh(); - if(vm.IsCreateBatchPurchaseOrderList) + if (vm.IsCreateBatchPurchaseOrderList) vm.BatchPurchaseOrderListVM.Refresh(); try { diff --git a/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs b/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs index af420084..f40b43c8 100644 --- a/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs @@ -24,7 +24,6 @@ namespace BBWY.Client.ViewModels.PackTask public class PackTaskTotalViewModel : BaseVM, IDenpendency { private readonly PackTaskService packTaskService; - private bool isLoading; private DateTime startDate; private DateTime endDate; diff --git a/BBWY.Client/ViewModels/TotalPackTask/PackUserSalaryViewModel.cs b/BBWY.Client/ViewModels/TotalPackTask/PackUserSalaryViewModel.cs new file mode 100644 index 00000000..98b91264 --- /dev/null +++ b/BBWY.Client/ViewModels/TotalPackTask/PackUserSalaryViewModel.cs @@ -0,0 +1,185 @@ +using BBWY.Client.APIServices; +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 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) + { + this.packTaskService = packTaskService; + + 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.TotalPackUserSalary(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.TotalPackUserSalary(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; + + }); + + } + + + } + +} diff --git a/BBWY.Client/ViewModels/ViewModelLocator.cs b/BBWY.Client/ViewModels/ViewModelLocator.cs index 980ebe4c..af467f81 100644 --- a/BBWY.Client/ViewModels/ViewModelLocator.cs +++ b/BBWY.Client/ViewModels/ViewModelLocator.cs @@ -1,4 +1,5 @@ using BBWY.Client.ViewModels.PackTask; +using BBWY.Client.ViewModels.TotalPackTask; using GalaSoft.MvvmLight.Ioc; using Microsoft.Extensions.DependencyInjection; using System; @@ -305,6 +306,7 @@ namespace BBWY.Client.ViewModels } + public QualityViewModel QualityTask { get @@ -313,5 +315,14 @@ namespace BBWY.Client.ViewModels return s.ServiceProvider.GetRequiredService(); } } + + public PackUserSalaryViewModel PackUserSalary + { + get + { + using var s = sp.CreateScope(); + return s.ServiceProvider.GetRequiredService(); + } + } } } diff --git a/BBWY.Client/Views/TotalPackTask/PackUserSalaryControl.xaml b/BBWY.Client/Views/TotalPackTask/PackUserSalaryControl.xaml new file mode 100644 index 00000000..d1b4149e --- /dev/null +++ b/BBWY.Client/Views/TotalPackTask/PackUserSalaryControl.xaml @@ -0,0 +1,10 @@ + + + diff --git a/BBWY.Client/Views/TotalPackTask/PackUserSalaryControl.xaml.cs b/BBWY.Client/Views/TotalPackTask/PackUserSalaryControl.xaml.cs new file mode 100644 index 00000000..e52ba4f6 --- /dev/null +++ b/BBWY.Client/Views/TotalPackTask/PackUserSalaryControl.xaml.cs @@ -0,0 +1,234 @@ +using BBWY.Client.Models.APIModel; +using BBWY.Client.Models.APIModel.Response.PackTask; +using BBWY.Client.Views.PackTask; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace BBWY.Client.Views.TotalPackTask +{ + /// + /// PackUserSalaryControl.xaml 的交互逻辑 + /// + public partial class PackUserSalaryControl : UserControl + { + public PackUserSalaryControl() + { + InitializeComponent(); + } + + + + public List PackUserSalaries + { + get + { + return (List)GetValue(PackUserSalariesProperty); + + } + set + { + SetValue(PackUserSalariesProperty, value); + } + } + + + public static readonly DependencyProperty PackUserSalariesProperty = + DependencyProperty.Register("PackUserSalaries", typeof(List), typeof(PackUserSalaryControl), new PropertyMetadata(ChangedProperty)); + + + + + private static void ChangedProperty(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var control = d as PackUserSalaryControl; + // control.Str + var newValue = e.NewValue as List; + control.PackUserSalaries = newValue; + + control.LoadData(); + } + + string xaml = @" + + + [:Row:] + + + + + + + [:Column:] + + + + + + [:HeaderNameList:] + + + + + + + [:BorderHeaderList:] + + + + + + [:DataList:] + + "; + + + const string rows = @""; + string columns = @""; + string headName = @""; + string borderColumns = @" "; + /// + /// index 从1开始 0+1 + /// + string rowStr = @" + + + + + [:HeaderPriceList:] + + + + + + [:BorderDataList:] + "; + + + + string serviceText = @" "; + string serviceBorder = @" "; + + public void LoadData() + { + + if (PackUserSalaries == null ) + return; + + if ( PackUserSalaries.Count <= 0) + { + App.Current.Dispatcher.Invoke(() => + { + gd.Children.Clear(); + }); + } + + + try + { + + App.Current.Dispatcher.Invoke(() => + { + gd.Children.Clear(); + }); + + + var count = PackUserSalaries.Count; + + StringBuilder sbRow =new StringBuilder(); + for (int i = 0; i < count; i++) + { + sbRow.AppendLine(rows); + } + string rowDefinition = sbRow.ToString(); + + StringBuilder sbColumn = new StringBuilder(); + var packServices = PackUserSalaries[0].IncomeItems;//服务项目列表 + var packServiceCount = packServices.Count; //服务项目数量 + + + + StringBuilder sbHeaderNameList = new StringBuilder(); + StringBuilder sbBorderHeaderList=new StringBuilder(); + + for (int i = 0; i < packServiceCount; i++) + { + sbColumn.AppendLine(columns); + sbHeaderNameList.AppendLine(headName.Replace("[:ServiceName:]", packServices[i].Name) + .Replace("[:ColumnIndex:]", (i+4).ToString()) + .Replace("[:RowIndex:]", "0")); + sbBorderHeaderList.AppendLine(borderColumns.Replace("[:ColumnIndex:]", (i + 4).ToString()) + .Replace("[:RowIndex:]", "0")); + } + + string columnDefinition = sbColumn.ToString(); + string HeaderNameList= sbHeaderNameList.ToString(); + + + StringBuilder dataListSB= new StringBuilder(); + for (int i = 0; i < PackUserSalaries.Count; i++) + { + + var rowIndex = 1 + i; + StringBuilder headerPriceListSB = new StringBuilder(); + StringBuilder serviceBorderSB = new StringBuilder(); + for (int j = 0; j < PackUserSalaries[i].IncomeItems.Count; j++) + { + var columnIndex = 4 + j;//[:HeaderPriceList:] + headerPriceListSB.AppendLine(serviceText.Replace("[:ServicePrice:]", PackUserSalaries[i].IncomeItems[j].TotalPrice.ToString()) + .Replace("[:ColumnIndex:]", columnIndex.ToString()) + .Replace("[:RowIndex:]", rowIndex.ToString())); + + serviceBorderSB.AppendLine(serviceBorder.Replace("[:ColumnIndex:]", columnIndex.ToString()) + .Replace("[:RowIndex:]", rowIndex.ToString())); + } + dataListSB.AppendLine(rowStr.Replace("[:Date:]", PackUserSalaries[i].Date.ToString("yyyy-MM-dd")) + .Replace("[:PackUserName:]", PackUserSalaries[i].PackUserName) + .Replace("[:TotalIncome:]", PackUserSalaries[i].TotalIncome.ToString("0.00")) + .Replace("[:HeaderPriceList:]", headerPriceListSB.ToString()) + .Replace("[:BorderDataList:]", serviceBorderSB.ToString()) + .Replace("[:RowIndex:]", rowIndex.ToString()) + .Replace("[:4+DataItemCount:]", (packServiceCount+4).ToString()) + ); + } + + + var newGrid = xaml.Replace("[:Row:]", rowDefinition) + .Replace("[:Column:]", columnDefinition) + .Replace("[:HeaderNameList:]", HeaderNameList) + .Replace("[:DataCount+1:]", (count+1).ToString()) + .Replace("[:4+DataItemCount:]", (packServiceCount + 4).ToString()) + .Replace("[:BorderHeaderList:]", sbBorderHeaderList.ToString()) + .Replace("[:DataList:]", dataListSB.ToString()); + + + + var grid = XamlReader.Parse(newGrid) as Grid; + App.Current.Dispatcher.Invoke(() => + { + gd.Children.Add(grid); + }); + + } + catch + { + + + } + + + + } + } +} diff --git a/BBWY.Client/Views/TotalPackTask/PackUserSalaryList.xaml b/BBWY.Client/Views/TotalPackTask/PackUserSalaryList.xaml new file mode 100644 index 00000000..d08c87ac --- /dev/null +++ b/BBWY.Client/Views/TotalPackTask/PackUserSalaryList.xaml @@ -0,0 +1,170 @@ + + + + + 0 + 1 + 2 + 6 + 14 + 29 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +