From f48466159732c9716b1e7022bbfb42a0e2d52bb6 Mon Sep 17 00:00:00 2001 From: "506583276@qq.com" <506583276@qq.com> Date: Thu, 4 May 2023 21:53:12 +0800 Subject: [PATCH] 1 --- BBWY.Client/APIServices/PackTaskService.cs | 75 +++--- BBWY.Client/BBWYAppSettings.json | 4 +- BBWY.Client/Models/Enums.cs | 5 + BBWY.Client/Models/PackTask/ShopTotal.cs | 81 ++++++ .../Models/PackTask/WorkProcessModel.cs | 5 +- BBWY.Client/ViewModels/MainViewModel.cs | 7 +- .../PackTask/PackServiceViewModel.cs | 13 +- .../PackTask/PackTaskTotalViewModel.cs | 243 ++++++++++++++++++ .../ViewModels/PackTask/TaskListViewModel.cs | 17 +- BBWY.Client/ViewModels/ViewModelLocator.cs | 11 + .../Views/PackTask/FeesExcelControl.xaml.cs | 2 +- BBWY.Client/Views/PackTask/PackTaskTotal.xaml | 235 ++++++++++++----- .../Views/PackTask/PackTotalWindow.xaml | 12 - .../Views/PackTask/PackTotalWindow.xaml.cs | 25 -- .../Views/PackTask/TaskListControl.xaml | 2 +- 15 files changed, 585 insertions(+), 152 deletions(-) create mode 100644 BBWY.Client/Models/PackTask/ShopTotal.cs create mode 100644 BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs delete mode 100644 BBWY.Client/Views/PackTask/PackTotalWindow.xaml delete mode 100644 BBWY.Client/Views/PackTask/PackTotalWindow.xaml.cs diff --git a/BBWY.Client/APIServices/PackTaskService.cs b/BBWY.Client/APIServices/PackTaskService.cs index 3e8de1a0..0706efb2 100644 --- a/BBWY.Client/APIServices/PackTaskService.cs +++ b/BBWY.Client/APIServices/PackTaskService.cs @@ -191,40 +191,39 @@ namespace BBWY.Client.APIServices } - //public ApiResponse AddTaskPeople(long taskId, string packUserId, int FeesTypeId, - // int FeesItemId, decimal PackNumber) - //{ - - - - // return SendRequest(globalContext.QKApiHost, "api/PackTask/AddTaskPeople", new - // { - // taskId = taskId, - // packUserId = packUserId, - // FeesTypeId = FeesTypeId, - // FeesItemId = FeesItemId, - // PackNumber = PackNumber - // } - // , null, HttpMethod.Post); - - //} - - //public ApiResponse AddTaskPeople(List packUsers) - //{ - // return SendRequest(globalContext.QKApiHost, "api/PackTask/AddTaskPeoples", packUsers - // , null, HttpMethod.Post); - //} - - - //public ApiResponse AddConsumables(long taskId, long[] consumableIds) - //{ - // return SendRequest(globalContext.QKApiHost, "api/PackTask/AddConsumables", new AddConsumableRequest - // { - // TaskId= taskId, - // ConsumableIds = consumableIds - // } - // , null, HttpMethod.Post); - //} + public ApiResponse ShopTotal(string skuId = null, string taskId = null, + DateTime? startTime = null, + DateTime? endTime = null, + string ShopName = null, + string DepartmentName = null, + int pageIndex = 1, + int pageSize = 10 + + ) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/ShopTotal", new + { + + SkuId = skuId, + TaskId = taskId, + StartTime = startTime, + EndTime = endTime, + DepartmentName, + ShopName, + PageIndex = pageIndex, + PageSize = pageSize + + }, null, HttpMethod.Post); + } + public ApiResponse BatchSettle(params long[] taskIds) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/BatchSettle", new + { + taskIds= taskIds, + userId= globalContext.User.Id.ToString(), + + }, null, HttpMethod.Post); + } } public class AddConsumableRequest @@ -298,6 +297,14 @@ namespace BBWY.Client.APIServices //public IncreateMemberModel[] IncreateMembers { get; set; } //public ProcessMemberModel[] ProcessMembers { get; set; } + + public decimal? IncreaseFees { get; set; } + + public decimal? PackFees { get; set; } + + public decimal? ConsumableFees { get; set; } + + public decimal? DiscountPrice { get; set; } } public class PersonTaskModel diff --git a/BBWY.Client/BBWYAppSettings.json b/BBWY.Client/BBWYAppSettings.json index 9622efaf..e1b3dcff 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/Enums.cs b/BBWY.Client/Models/Enums.cs index 845c27cf..a0b9eee3 100644 --- a/BBWY.Client/Models/Enums.cs +++ b/BBWY.Client/Models/Enums.cs @@ -379,4 +379,9 @@ { 待付款 = 0, 待发货 = 1, 待收货 = 2, 待质检 = 3, 待打包 = 4, 待结算 = 5, 已完成 = 6, 已取消 = 7 } + public enum Settle + { + 未结算 = 0, + 已结清 = 1 + } } diff --git a/BBWY.Client/Models/PackTask/ShopTotal.cs b/BBWY.Client/Models/PackTask/ShopTotal.cs new file mode 100644 index 00000000..a680f351 --- /dev/null +++ b/BBWY.Client/Models/PackTask/ShopTotal.cs @@ -0,0 +1,81 @@ +using BBWY.Client.ViewModels; +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.PackTask +{ + public class ShopTotal :NotifyObject + { + private long id; + public long Id { get => id; set { Set(ref id, value); } } + + private bool taskChecked; + public bool TaskChecked { get => taskChecked; set { Set(ref taskChecked, value); } } + + + + public long TaskId { get; set; } + /// + /// 需求方创建日期 + /// + public DateTime CreateTime { get; set; } + /// + /// 是否结清 + /// + // + public Settle IsSettle { get; set; } + /// + /// 部门 + /// + public string DepartmentName { get; set; } + /// + /// 店铺 + /// + public string ShopName { get; set; } + /// + /// 对接人 + /// + public string AcceptUserName { get; set; } + /// + /// sku + /// + public string SkuName { get; set; } + /// + /// sku数量(任务数量) + /// + public int SkuCount { get; set; } + + public decimal IncreaseFees { get; set; } + + public decimal PackFees { get; set; } + + public decimal ConsumableFees { get; set; } + + public decimal Price { get; set; } + + public decimal Discount { get; set; } + + public decimal DiscountPrice { get; set; } + /// + /// 注意事项(对接备注) + /// + public string MarkMessage { get; set; } + + public override string ToString() + { + return $"{TaskId},{CreateTime.ToString("yyyy-MM-dd")},{IsSettle},{DepartmentName},{ShopName}" + + $",{AcceptUserName},{SkuName},{SkuCount},{IncreaseFees},{PackFees},{ConsumableFees},{Price},{Discount},{DiscountPrice},{MarkMessage}"; + } + } + + public class ShopTotalResponse + { + /// + /// + /// + public int TotalCount { get; set; } + + public ShopTotal[] ShopTotals { get; set; } + } +} diff --git a/BBWY.Client/Models/PackTask/WorkProcessModel.cs b/BBWY.Client/Models/PackTask/WorkProcessModel.cs index 88de19b9..d39989d0 100644 --- a/BBWY.Client/Models/PackTask/WorkProcessModel.cs +++ b/BBWY.Client/Models/PackTask/WorkProcessModel.cs @@ -1,7 +1,4 @@ -using Org.BouncyCastle.Asn1.Esf; -using System; -using System.Collections.Generic; -using System.Text; + namespace BBWY.Client.Models.PackTask { diff --git a/BBWY.Client/ViewModels/MainViewModel.cs b/BBWY.Client/ViewModels/MainViewModel.cs index aa957f9d..1cd0a7ce 100644 --- a/BBWY.Client/ViewModels/MainViewModel.cs +++ b/BBWY.Client/ViewModels/MainViewModel.cs @@ -130,7 +130,8 @@ namespace BBWY.Client.ViewModels 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/Consumable.xaml" }, + new MenuModel(){ Name="账单管理",Url="/Views/PackTask/PackTaskTotal.xaml" } } }); @@ -208,8 +209,8 @@ namespace BBWY.Client.ViewModels 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/Consumable.xaml" }, + new MenuModel(){ Name="账单管理",Url="/Views/PackTask/PackTaskTotal.xaml" } } }); }); diff --git a/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs b/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs index ec453a7b..adee5919 100644 --- a/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs @@ -328,7 +328,7 @@ namespace BBWY.Client.ViewModels.PackTask decimal AllFees = 0; decimal price = 0; - + decimal IncreateFees = 0,PackFees=0,ConsumableFees=0,DiscountPrice=0; foreach (var item in IncreateList)//增值服务上传 { if (item.SelectId <= 0 || string.IsNullOrEmpty(item.SelectUserId) || item.ItemCount <= 0) @@ -350,7 +350,7 @@ namespace BBWY.Client.ViewModels.PackTask price = IncreateServiceList.First(i => i.Id == item.SelectId).Price; singleFees += price; AllFees += item.ItemCount * price; - + IncreateFees += item.ItemCount * price; @@ -417,7 +417,7 @@ namespace BBWY.Client.ViewModels.PackTask price = PackServiceList.First(i => i.Id == item.SelectId).Price; singleFees += price; AllFees += item.ItemCount * price; - + PackFees += item.ItemCount * price; if (PackServiceMembers.Select(a => a.PackServiceId).Contains(item.SelectId))//存在累加 { var inMembers = PackServiceMembers.SingleOrDefault(a => a.UserId == item.SelectUserId && a.PackServiceId == item.SelectId); @@ -471,6 +471,7 @@ namespace BBWY.Client.ViewModels.PackTask price = ConsumableList.First(i => i.Id == item.SelectId).Price.Value; singleFees += price; AllFees += item.ItemCount * price; + ConsumableFees += item.ItemCount * price; if (allConsumableTasks.Select(a => a.ConsumableId).Contains(item.SelectId))//存在累加 { var data = allConsumableTasks.SingleOrDefault(a => a.ConsumableId == item.SelectId); @@ -528,8 +529,12 @@ namespace BBWY.Client.ViewModels.PackTask uploadService.AddPackServices = addDatas; uploadService.DeletedPackServices = del; - uploadService.AllFees = AllFees; + uploadService.AllFees = Convert.ToDecimal((AllFees).ToString("0.00")); ; uploadService.SingleFees = singleFees; + uploadService.IncreaseFees = Convert.ToDecimal((IncreateFees).ToString("0.00")); + uploadService.PackFees = Convert.ToDecimal((PackFees).ToString("0.00")); + uploadService.ConsumableFees = Convert.ToDecimal((ConsumableFees).ToString("0.00")); + uploadService. DiscountPrice = Convert.ToDecimal( (AllFees * upDisCount).ToString("0.00")); var res = packDetailService.UploadService(uploadService); if (res != null && res.Success) { diff --git a/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs b/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs new file mode 100644 index 00000000..ebf2608c --- /dev/null +++ b/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs @@ -0,0 +1,243 @@ +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.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 ICommand CopyTextCommand { get; set; } + + public PackTaskTotalViewModel(PackTaskService packTaskService) + { + this.packTaskService = packTaskService; + + + SearchTaskTotalCommand = new RelayCommand(SearchTaskTotal); + + + 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); + CopyTextCommand = new RelayCommand((obj) => + { + try + { + Clipboard.SetText(obj.ToString()); + } + catch (Exception ex) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(ex); + Console.ResetColor(); + } + }); + BatchSettleCommand = new RelayCommand(BatchSettle); + SettleCommand = new RelayCommand(SettleTask); + ExportCommand = new RelayCommand(Export); + } + + 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数量,增值服务,打包服务,耗材服务,原价,促销折扣,结算价格,对接备注"; + 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() + { + if (IsBatchChecked) + { + BatchCheck(); + } + 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); + }); + } + + } + + IsLoading = false; + }); + + + } + + private void LoadOrder(int pageIndex) + { + SearchTask(pageIndex); + } + + private void SearchTask(int pageIndex) + { + PageIndex = pageIndex; + SearchTaskTotal(); + } + } +} diff --git a/BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs b/BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs index 1eda5cd6..95e90778 100644 --- a/BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs @@ -120,7 +120,7 @@ namespace BBWY.Client.ViewModels.PackTask /// public ObservableCollection PackTaskList { get => packTaskList; set { Set(ref packTaskList, value); } } - + #endregion @@ -340,8 +340,9 @@ namespace BBWY.Client.ViewModels.PackTask data.FeesItemResponse = item.FeesItemResponse; data.FeesMoney = item.FeesItemResponse.SingleFees; data.IsShowFees = data.FeesMoney > 0 ? true : false; - data.FeesItemResponse.DiscountSingleFees = item.FeesItemResponse.SingleFees * - item.FeesItemResponse.disCount; + data.FeesItemResponse.DiscountSingleFees = item.FeesItemResponse.SingleFees *item.FeesItemResponse.disCount; + data.FeesItemResponse.DiscountAllFees = item.FeesItemResponse.AllFees * item.FeesItemResponse.disCount; + } else { @@ -399,14 +400,14 @@ namespace BBWY.Client.ViewModels.PackTask { ViewModelLocator viewModel = new ViewModelLocator(); var createViewModel = viewModel.CreateTaskView; - if (createViewModel.ReflashWindow==null) + if (createViewModel.ReflashWindow == null) { createViewModel.ReflashWindow = ReflashTask; } - - - - + + + + CreatePackTask create = new CreatePackTask(); create.SendData(); diff --git a/BBWY.Client/ViewModels/ViewModelLocator.cs b/BBWY.Client/ViewModels/ViewModelLocator.cs index 822de160..5aad40e1 100644 --- a/BBWY.Client/ViewModels/ViewModelLocator.cs +++ b/BBWY.Client/ViewModels/ViewModelLocator.cs @@ -86,6 +86,17 @@ namespace BBWY.Client.ViewModels } } + public PackTaskTotalViewModel PackTaskTotal + { + get + { + using (var s = sp.CreateScope()) + { + return s.ServiceProvider.GetRequiredService(); + } + } + } + public ServiceOrderViewModel ServiceOrderList { get diff --git a/BBWY.Client/Views/PackTask/FeesExcelControl.xaml.cs b/BBWY.Client/Views/PackTask/FeesExcelControl.xaml.cs index a7e4fc40..bdf2db2d 100644 --- a/BBWY.Client/Views/PackTask/FeesExcelControl.xaml.cs +++ b/BBWY.Client/Views/PackTask/FeesExcelControl.xaml.cs @@ -179,7 +179,7 @@ namespace BBWY.Client.Views.PackTask private void LoadData(bool isPrice) { - + isPrice = false; if (FeesItem == null || FeesItem.ServiceList.Count <= 0) { return; diff --git a/BBWY.Client/Views/PackTask/PackTaskTotal.xaml b/BBWY.Client/Views/PackTask/PackTaskTotal.xaml index 5edb8224..17f92535 100644 --- a/BBWY.Client/Views/PackTask/PackTaskTotal.xaml +++ b/BBWY.Client/Views/PackTask/PackTaskTotal.xaml @@ -6,9 +6,9 @@ xmlns:local="clr-namespace:BBWY.Client.Views.PackTask" mc:Ignorable="d" xmlns:b="http://schemas.microsoft.com/xaml/behaviors" - DataContext="{Binding OrderList,Source={StaticResource Locator}}" + DataContext="{Binding PackTaskTotal,Source={StaticResource Locator}}" xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls" - mc:Ignorable="d" + Background="White" xmlns:sys="clr-namespace:System;assembly=mscorlib" d:DesignHeight="450" d:DesignWidth="2048" Title="OrderList"> @@ -52,12 +52,11 @@ - + - + - - + - - - - - - - - - - - - - - + /> + @@ -109,16 +92,16 @@ -