diff --git a/BBWY.Client/APIServices/ConsumableService.cs b/BBWY.Client/APIServices/ConsumableService.cs new file mode 100644 index 00000000..56f56e3b --- /dev/null +++ b/BBWY.Client/APIServices/ConsumableService.cs @@ -0,0 +1,59 @@ +using BBWY.Client.Models.APIModel.Request; +using BBWY.Client.Models.APIModel.Response.PackTask; +using BBWY.Client.Models.PackTask; +using BBWY.Client.Views.PackTask; +using BBWY.Common.Http; +using BBWY.Common.Models; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; + +namespace BBWY.Client.APIServices +{ + public class ConsumableService : BaseApiService, IDenpendency + { + public ConsumableService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) + { + } + + public ApiResponse SearchAll() + { + return SendRequest(globalContext.QKApiHost, "api/Consumable/SearchAll", + null + , null, HttpMethod.Get); + } + + public ApiResponse Add(ConsuableRequest consumable) + { + return SendRequest(globalContext.QKApiHost, "api/Consumable/Add", + consumable + , null, HttpMethod.Post); + } + public ApiResponse Edit(ConsuableRequest consumable) + { + return SendRequest(globalContext.QKApiHost, "api/Consumable/Edit", + consumable + , null, HttpMethod.Post); + } + + + public ApiResponse Deleted(long id) + { + return SendRequest(globalContext.QKApiHost, "api/Consumable/Deleted", + new + { + id = id + } + , null, HttpMethod.Get); + } + + public ApiResponse Search(ConsumableSearchRequest consumable) + { + return SendRequest(globalContext.QKApiHost, "api/Consumable/Search", + consumable + , null, HttpMethod.Post); + } + + } +} diff --git a/BBWY.Client/APIServices/IncreateServiceService.cs b/BBWY.Client/APIServices/IncreateServiceService.cs new file mode 100644 index 00000000..406a992d --- /dev/null +++ b/BBWY.Client/APIServices/IncreateServiceService.cs @@ -0,0 +1,48 @@ +using BBWY.Client.Models.PackTask; +using BBWY.Common.Http; +using BBWY.Common.Models; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; + +namespace BBWY.Client.APIServices +{ + public class IncreateServiceService : BaseApiService, IDenpendency + { + public IncreateServiceService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) + { + } + + public ApiResponse SearchAll() + { + return SendRequest(globalContext.QKApiHost, "api/IncreateService/SearchAll", + null + , null, HttpMethod.Get); + } + + public ApiResponse Add(IncreateServiceModel consumable) + { + return SendRequest(globalContext.QKApiHost, "api/IncreateService/Add", + consumable + , null, HttpMethod.Post); + } + public ApiResponse Edit(IncreateServiceModel consumable) + { + return SendRequest(globalContext.QKApiHost, "api/IncreateService/Edit", + consumable + , null, HttpMethod.Post); + } + + + public ApiResponse Deleted(long id) + { + return SendRequest(globalContext.QKApiHost, "api/IncreateService/Deleted", + new + { + id = id + } + , null, HttpMethod.Get); + } + } +} diff --git a/BBWY.Client/APIServices/PackTaskService.cs b/BBWY.Client/APIServices/PackTaskService.cs new file mode 100644 index 00000000..3eab3eed --- /dev/null +++ b/BBWY.Client/APIServices/PackTaskService.cs @@ -0,0 +1,340 @@ +using BBWY.Client.Helpers; +using BBWY.Client.Models; +using BBWY.Client.Models.APIModel.Request; +using BBWY.Client.Models.APIModel.Response.PackTask; +using BBWY.Client.Models.PackTask; +using BBWY.Common.Http; +using BBWY.Common.Models; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Runtime.Serialization; +using System.Windows.Documents; + +namespace BBWY.Client.APIServices +{ + public class PackTaskService : BaseApiService, IDenpendency + { + + + + public PackTaskService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) + { + } + + + + public ApiResponse GetOrderList( string skuId = null, string taskId = null, + DateTime? startTime = null, + DateTime? endTime = null, + TaskState? availability = null, + int? taskStatus = null, + int pageIndex = 1, + int pageSize = 10 + + ) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/GetPackTaskList", new + { + + SkuId = skuId, + TaskId = taskId, + StartTime = startTime, + EndTime = endTime, + Availability = availability, + TaskStatus = taskStatus, + PageIndex = pageIndex, + PageSize = pageSize, + ShopId = globalContext.User.Shop.ShopId.ToString() + }, null, HttpMethod.Post); + } + public ApiResponse GetWareHouseList(int? IsWorry=null,string departmentName = null, string skuId = null, string taskId = null, + DateTime? startTime = null, + DateTime? endTime = null, + TaskState? availability = null, + int? taskStatus = null, + int pageIndex = 1, + int pageSize = 10 + + ) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/GetPackTaskList", new + { + IsWorry=IsWorry, + DepartmentName = departmentName, + SkuId = skuId, + TaskId = taskId, + StartTime = startTime, + EndTime = endTime, + Availability = availability, + TaskStatus = taskStatus, + PageIndex = pageIndex, + PageSize = pageSize + }, null, HttpMethod.Post); + } + + + + + public ApiResponse GetAllCount() + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/GetProductSkuCount", + new { ShopId = globalContext.User.Shop.ShopId.ToString() } + , null, HttpMethod.Get); + } + public ApiResponse GetWareAllCount() + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/GetProductSkuCount", + null + , null, HttpMethod.Get); + } + + + public ApiResponse GetProductSku(string skuId) + { + HttpClientHelper helper = new HttpClientHelper(globalContext.QKApiHost); + + string url = $"{globalContext.QKApiHost}/api/PackTask/SearchProduct?skuId={skuId}&ShopId={globalContext.User.Shop.ShopId.ToString()}"; + var data = helper.Get(url); + + return JsonConvert.DeserializeObject>(data); + } + + public ApiResponse CreateTask(CreateTaskRequest createTaskRequest) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/CreatePackTask", + createTaskRequest + , null, HttpMethod.Post); + } + + public ApiResponse UpdateTaskStatus(long id, int taskStatus) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/UpdatePackTaskStatus", new + { + id, + taskStatus + + } + , null, HttpMethod.Post); + } + + public ApiResponse SaveBarCode(BarCodeRequest barCodeModel) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/CommitBarCode", barCodeModel + , null, HttpMethod.Post); + } + + public ApiResponse SaveCer(CerRequest cerRequest) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/CommitCer", cerRequest + , null, HttpMethod.Post); + } + + public ApiResponse GetPackMembers() + { + + return SendRequest(globalContext.QKApiHost, "api/PackTask/SearchPackMembers", null + , null, HttpMethod.Get); + + } + /// + /// 获取任务的服务 + /// + /// + public ApiResponse GetTaskService(long taskId) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/GetTaskService", new { TaskId = taskId } + , null, HttpMethod.Get); + } + /// + /// 上传 更新任务的服务数据 + /// + /// + public ApiResponse UploadService(UploadServiceRequest uploadService) + { + return SendRequest(globalContext.QKApiHost, "api/PackTask/UploadService", uploadService + , null, HttpMethod.Post); + } + + + //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 class AddConsumableRequest + { + public long TaskId { get; set; } + public long[] ConsumableIds { get; set; } + } + + /// + /// 上传服务 + /// + public class UploadServiceRequest + { + + + + /// + /// 任务id + /// + public long TaskId { get; set; } + /// + /// 耗材ids + /// + public string ConsumableIds { get; set; } + /// + /// 耗材数量 + /// + public string ConsumableNos { get; set; } + /// + /// 工序ids + /// + public string WorkProcessIds { get; set; } + /// + /// 工序数量 + /// + public string WorkProcessNos { get; set; } + /// + /// 增值服务ids + /// + public string IncreateServiceIds { get; set; } + /// + /// 增值服务数量 + /// + public string IncreateServiceNos { get; set; } + /// + /// 任务单件费用 + /// + public decimal SingleFees { get; set; } + /// + /// 任务总费用 + /// + public decimal AllFees { get; set; } + + + public PersonTaskModel[] PersonTaskModels { get; set; } + + //public IncreateMemberModel[] IncreateMembers { get; set; } + + //public ProcessMemberModel[] ProcessMembers { get; set; } + } + + public class PersonTaskModel + { + /// + /// 任务id + /// + public long TaskId { get; set; } + + /// + /// 打包人 + /// + public string PackUserId { get; set; } + /// + /// 增值服务ids + /// + public string IncreateServiceIds { get; set; } + /// + /// 增值服务数量 + /// + public string IncreateServiceNos { get; set; } + /// + /// 工序ids + /// + public string WorkProcessIds { get; set; } + /// + /// 工序数量 + /// + public string WorkProcessNos { get; set; } + /// + /// 总费用 + /// + public decimal AllFees { get; set; } + /// + /// 时间 + /// + public DateTime CreateTime { get; set; } = DateTime.Now; + } + + + + public class ConsumableTaskModel + { + public decimal Price { get; set; } + /// + /// 耗材服务id + /// + public long ConsumableId { get; set; } + /// + /// 耗材服务数量 + /// + public int ConsumableCount { 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/APIServices/ProductService.cs b/BBWY.Client/APIServices/ProductService.cs index b0ba013e..89219493 100644 --- a/BBWY.Client/APIServices/ProductService.cs +++ b/BBWY.Client/APIServices/ProductService.cs @@ -28,7 +28,22 @@ namespace BBWY.Client.APIServices null, HttpMethod.Post); } - + public ApiResponse> GetProductSkuList(string spu, string sku,Platform platform,string appKey,string appSecret,string appToken) + { + return SendRequest>(globalContext.BBYWApiHost, + "api/product/GetProductSkuList", + new + { + Spu = spu, + Sku = sku, + Platform = platform, + AppKey = appKey, + AppSecret = appSecret, + AppToken = appToken + }, + null, + HttpMethod.Post); + } public ApiResponse> GetProductSkuList(string spu, string sku) { return SendRequest>(globalContext.BBYWApiHost, diff --git a/BBWY.Client/APIServices/WorkProcessService.cs b/BBWY.Client/APIServices/WorkProcessService.cs new file mode 100644 index 00000000..59d705d7 --- /dev/null +++ b/BBWY.Client/APIServices/WorkProcessService.cs @@ -0,0 +1,56 @@ +using BBWY.Client.Models.APIModel.Request; +using BBWY.Client.Models.PackTask; +using BBWY.Common.Http; +using BBWY.Common.Models; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; + +namespace BBWY.Client.APIServices +{ + public class WorkProcessService : BaseApiService, IDenpendency + { + public WorkProcessService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) + { + } + + public ApiResponse SearchAll() + { + return SendRequest(globalContext.QKApiHost, "api/WorkProcess/SearchAll", + null + , null, HttpMethod.Get); + } + + public ApiResponse Add(WorkProcessModel consumable) + { + return SendRequest(globalContext.QKApiHost, "api/WorkProcess/Add", + consumable + , null, HttpMethod.Post); + } + public ApiResponse Edit(WorkProcessModel consumable) + { + return SendRequest(globalContext.QKApiHost, "api/WorkProcess/Edit", + consumable + , null, HttpMethod.Post); + } + + + public ApiResponse Deleted(long id) + { + return SendRequest(globalContext.QKApiHost, "api/WorkProcess/Deleted", + new + { + id = id + } + , null, HttpMethod.Get); + } + + //public ApiResponse Search(ConsumableRequest consumable) + //{ + // return SendRequest(globalContext.QKApiHost, "api/WorkProcess/Search", + // consumable + // , null, HttpMethod.Post); + //} + } +} diff --git a/BBWY.Client/App.xaml b/BBWY.Client/App.xaml index 32027ad4..02766afa 100644 --- a/BBWY.Client/App.xaml +++ b/BBWY.Client/App.xaml @@ -5,7 +5,7 @@ xmlns:vm="clr-namespace:BBWY.Client.ViewModels" xmlns:ctr="clr-namespace:BBWY.Client.Converters" StartupUri="/Views/MainWindow.xaml" - ShutdownMode="OnExplicitShutdown"> + ShutdownMode="OnExplicitShutdown"> @@ -13,15 +13,18 @@ - + + + + diff --git a/BBWY.Client/App.xaml.cs b/BBWY.Client/App.xaml.cs index c927f624..4b11de8a 100644 --- a/BBWY.Client/App.xaml.cs +++ b/BBWY.Client/App.xaml.cs @@ -44,9 +44,22 @@ namespace BBWY.Client Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var gl = new GlobalContext(); string userToken = string.Empty; + + + //var tokenResult = ReadMMF(); + //if (tokenResult.isOk) + // userToken = tokenResult.content; + //else + //{ + // MessageBox.Show($"读取内存数据失败\r\n{tokenResult.content}", "提示"); + // Environment.Exit(0); + //} #if DEBUG + //仓库组测试 + userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjM1OTMyMDAyMjcwMDU2NDQ4IiwidGVhbUlkIjoiMTU0MDg4NTU3MDYyNzA0NzQyNCIsInNvblRlYW1JZHMiOiIxNTQwODg1NTcwNjI3MDQ3NDI0IiwiZXhwIjoxNzEwNDk2NTQ1fQ.Sx2vGJcYGf98x99slQLU3vt7yWdjspptSpbUCcZgWek"; + //齐越山鸡 - userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTM1MzMwMzI4ODkyMTQ5NzYwIiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNDM2Mjg4NTAwMjM1MjQzNTIwIiwiZXhwIjoxNjk0NjY5NjkxfQ.cSwro-7bGwOu92YejH9JhMenTai7Mvf99i2paQCmxIw"; + // userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTM1MzMwMzI4ODkyMTQ5NzYwIiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNDM2Mjg4NTAwMjM1MjQzNTIwIiwiZXhwIjoxNjk0NjY5NjkxfQ.cSwro-7bGwOu92YejH9JhMenTai7Mvf99i2paQCmxIw"; //刷单组测试 //userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTcxODUyODE0OTAzMTUyNjQwIiwidGVhbUlkIjoiMTU3MTg1MjQ1MDI5NjUwMDIyNCIsInNvblRlYW1JZHMiOiIiLCJleHAiOjE2OTUxNDc2ODh9.hVupdHnhgHHGo3QrMSDqhINqtq6Q5_RovWyXjiMkkEs"; @@ -82,9 +95,9 @@ namespace BBWY.Client gl.UserToken = userToken; #region 注册全局异常 - this.DispatcherUnhandledException += App_DispatcherUnhandledException; ; - AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; ; - TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; ; + this.DispatcherUnhandledException += App_DispatcherUnhandledException; + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; #endregion var applicationPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); @@ -94,6 +107,7 @@ namespace BBWY.Client gl.MDSApiHost = Configuration.GetSection("MDSApiHost").Value; gl.JOSApiHost = Configuration.GetSection("JOSApiHost").Value; gl._1688ApiHost = Configuration.GetSection("1688ApiHost").Value; + gl.QKApiHost = Configuration.GetSection("QKApiHost").Value; IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddHttpClient(); @@ -137,6 +151,11 @@ namespace BBWY.Client } #endregion + + //设置一个值,此值指示数据绑定 TextBox 是否应显示与源的 Text 属性值一致的字符串 为false + System.Windows.FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false; + + base.OnStartup(e); } diff --git a/BBWY.Client/BBWY.Client.csproj b/BBWY.Client/BBWY.Client.csproj index 10f84854..c912ce30 100644 --- a/BBWY.Client/BBWY.Client.csproj +++ b/BBWY.Client/BBWY.Client.csproj @@ -18,13 +18,21 @@ + + - PreserveNewest + Always + + + + + + @@ -52,6 +60,12 @@ + + + bin\Debug\netcoreapp3.1\Interop.BarTender.dll + + + Never @@ -71,10 +85,24 @@ SettingsSingleFileGenerator Settings.Designer.cs - - - - + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + diff --git a/BBWY.Client/BBWYAppSettings.json b/BBWY.Client/BBWYAppSettings.json index 638b968b..e1b3dcff 100644 --- a/BBWY.Client/BBWYAppSettings.json +++ b/BBWY.Client/BBWYAppSettings.json @@ -3,5 +3,7 @@ "BBWYApiHost": "http://bbwytest.qiyue666.com", "MDSApiHost": "http://mdsapi.qiyue666.com", "JOSApiHost": "", - "1688ApiHost": "" + "1688ApiHost": "", + "QKApiHost": "http://localhost:8080" + //"QKApiHost": "http://qiku.qiyue666.com" } \ No newline at end of file diff --git a/BBWY.Client/Converters/EnumToColorConverter.cs b/BBWY.Client/Converters/EnumToColorConverter.cs new file mode 100644 index 00000000..a5c50883 --- /dev/null +++ b/BBWY.Client/Converters/EnumToColorConverter.cs @@ -0,0 +1,52 @@ +using BBWY.Client.Models; +using EnumsNET; +using SixLabors.ImageSharp; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Reflection; +using System.Text; +using System.Windows; +using System.Windows.Data; + +namespace BBWY.Client.Converters +{ + internal class EnumToColorConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + try + { + if (value == null) return DependencyProperty.UnsetValue; + Assembly assem = Assembly.GetExecutingAssembly(); + Type type = assem.GetType(parameter.ToString()); + var enumName = Enum.Parse(type, value.ToString()); + if (value.ToString() == TaskState.已到货.GetName()) + { + return "#C1FFC1"; + } + if (value.ToString() == "部分到货") + { + return "#FFDEAD"; + } + if (value.ToString() == "未到货") + { + return "#FFDAB9"; + + } + return enumName; + } + catch (Exception e) + { + // Logger.Error(nameof(TemplateTypeConverter), e); + return string.Empty; + } + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return null; + } + + } +} diff --git a/BBWY.Client/Converters/IntToStringConverter.cs b/BBWY.Client/Converters/IntToStringConverter.cs new file mode 100644 index 00000000..64d7694b --- /dev/null +++ b/BBWY.Client/Converters/IntToStringConverter.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using System.Windows.Data; + +namespace BBWY.Client.Converters +{ + public class IntToStringConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + + if (value == null) { + return "4号箱子"; + } + if (value.ToString()=="0") + { + return "自带"; + } + return value.ToString()+ parameter.ToString(); + + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/BBWY.Client/Converters/ObjectConverter.cs b/BBWY.Client/Converters/ObjectConverter.cs index 94b757cd..22142d78 100644 --- a/BBWY.Client/Converters/ObjectConverter.cs +++ b/BBWY.Client/Converters/ObjectConverter.cs @@ -7,9 +7,10 @@ namespace BBWY.Client.Converters { public class ObjectConverter : IValueConverter { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { - string[] parray = parameter.ToString().ToLower().Split(':'); + string[] parray = parameter.ToString().ToLower().Split(':');//参数拆分 string valueStr = value == null ? string.Empty : value.ToString().ToLower(); string returnValue = string.Empty; try @@ -27,7 +28,7 @@ namespace BBWY.Client.Converters returnValue = parray[0].Equals(valueStr) ? parray[1] : parray[2]; } if (returnValue.Equals("#source", StringComparison.CurrentCultureIgnoreCase)) - return value; + return value; return returnValue; } catch (Exception ex) diff --git a/BBWY.Client/Converters/StringToColorConvter.cs b/BBWY.Client/Converters/StringToColorConvter.cs new file mode 100644 index 00000000..fc172ccb --- /dev/null +++ b/BBWY.Client/Converters/StringToColorConvter.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using System.Windows.Data; + +namespace BBWY.Client.Converters +{ + public class StringToColorConvter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + + + throw new NotImplementedException(); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + + throw new NotImplementedException(); + } + } +} diff --git a/BBWY.Client/GlobalContext.cs b/BBWY.Client/GlobalContext.cs index aaad1213..81286bba 100644 --- a/BBWY.Client/GlobalContext.cs +++ b/BBWY.Client/GlobalContext.cs @@ -36,6 +36,8 @@ namespace BBWY.Client public string JOSApiHost { get; set; } public string _1688ApiHost { get; set; } + + public string QKApiHost { get; set; } #endregion } } \ No newline at end of file diff --git a/BBWY.Client/Helpers/BartenderHelper.cs b/BBWY.Client/Helpers/BartenderHelper.cs new file mode 100644 index 00000000..88e80129 --- /dev/null +++ b/BBWY.Client/Helpers/BartenderHelper.cs @@ -0,0 +1,327 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Linq; +using System.Threading.Tasks; + +namespace BBWY.Client.Helpers +{ + public class BartenderHelper + { + #region BarTender打印方法 + private static BarTender.Application btApp = new BarTender.Application(); + private static BarTender.Format btFormat = new BarTender.Format(); + public string TemplateFile { set; get; } + public string ErrorMsg { set; get; } + public bool Status { set; get; } + /// + /// 使用 BarTender进行打印,批量打印 + /// + /// BarTender模板标签 + /// 打印数据 + /// 回调消息 + /// 打印数量 + /// 打印OK true + public bool BTPrint(string labelName, Dictionary labelParamsValues, out string msg, int printQty = 1, string printer = "Deli DL-730C(NEW)") + { + try + { + bool checkLabelVar = true; + string tmpMsg = ""; + this.TemplateFile = labelName; + + if (!File.Exists(TemplateFile)) + { + msg = "Error:Label File Not Exists" + TemplateFile; + this.ErrorMsg = msg; + return false; + } + if (!string.IsNullOrEmpty(printer)) + { + bool printerFlag = false; + foreach (string sPrint in System.Drawing.Printing.PrinterSettings.InstalledPrinters)//获取所有打印机名称 + { + if (sPrint.Equals(printer)) + { + printerFlag = true; + } + } + + if (!printerFlag) + { + msg = "Error:Printer Name Error"; + return false; + } + + + } + //找到打印模板的标签页 + btFormat = btApp.Formats.Open(labelName, false, ""); + if (!string.IsNullOrEmpty(printer)) + { + btFormat.Printer = printer; + } + if (btApp != null) + { + //btFormat.IdenticalCopiesOfLabel = printQty; + //btFormat.PrintOut(true, false); + + //取模板所有的值 + string strBT = btFormat.NamedSubStrings.GetAll("#", "$"); + + //将模板所有值进行拆分 + strBT = strBT.Substring(0, strBT.Length - 1); + string[] strBTValue = strBT.Split(new char[] { '$' }); + + //循环将模板的值写入lbldicVar中 + Dictionary lbldicVar = new Dictionary(); + for (int i = 0; i < strBTValue.Length; i++) + { + string[] cc = strBTValue[i].Split(new char[] { '#' }); + + lbldicVar.Add(cc[0].ToString(), cc[1].ToString()); //0是模板的参数 1是参数值 + } + if (labelParamsValues.Count > 0) + { + foreach (var item in lbldicVar) + { + if (labelParamsValues.Count(q => q.Key.ToUpper() == item.Key.ToUpper()) == 0) + { + tmpMsg = "数据源缺少参数: " + item.Key; + if (checkLabelVar) + { + this.ErrorMsg = tmpMsg; + checkLabelVar = false; + } + else + { + this.ErrorMsg = this.ErrorMsg + (char)10 + tmpMsg; + } + } + } + if (!checkLabelVar) + { + msg = this.ErrorMsg; + this.Status = false; + return false; + } + foreach (var param in labelParamsValues.Keys) + { + if (lbldicVar.Keys.Count(q => q.ToUpper() == param.ToUpper()) > 0) + { + var labvar = lbldicVar.Keys.First(q => q.ToUpper() == param.ToUpper()); + + if (string.IsNullOrEmpty(labelParamsValues[param])) + { + tmpMsg = "数据源参数值为空:" + labvar; + if (checkLabelVar) + { + this.ErrorMsg = tmpMsg; + checkLabelVar = false; + } + else + { + this.ErrorMsg = this.ErrorMsg + (char)10 + tmpMsg; + } + } + btFormat.SetNamedSubStringValue(param, labelParamsValues[param]); + } + } + if (!checkLabelVar) + { + msg = this.ErrorMsg; + this.Status = false; + return false; + } + btFormat.IdenticalCopiesOfLabel = printQty; + + //第二个false设置打印时是否跳出打印属性 + btFormat.PrintOut(true, false); + //退出是是否保存标签 + btFormat.Close(BarTender.BtSaveOptions.btSaveChanges); + //lblDoc.FormFeed(); + msg = "OK"; + this.ErrorMsg = msg; + this.Status = true; + return true; + } + else + { + msg = "Print Data is null"; + this.ErrorMsg = msg; + this.Status = false; + return false; + } + } + else + { + msg = "Error:CodeSoft Application can't boot up"; + this.ErrorMsg = msg; + this.Status = false; + return false; + } + } + catch (Exception ex) + { + msg = ex.Message + ex.InnerException; + this.ErrorMsg = msg; + this.Status = false; + return false; + } + finally + { + if (btApp != null) + { + btApp.Quit(BarTender.BtSaveOptions.btSaveChanges);//界面退出时同步退出bartender进程 + //lblApp.Documents.CloseAll(true); + //lblDoc = null; + } + GC.Collect(); + } + } + #endregion + + #region 数据库调用打印 + /// + /// 打印从文本数据库中打 + /// + /// + public bool BTPrintByDataBase(string path, string filePath, string printer = "") + { + + try + { + BarTender.Application btapp; + BarTender.Format btformat; + btapp = new BarTender.Application(); + btformat = btapp.Formats.Open(path, false, ""); + BarTender.Database database = btformat.Databases.GetDatabase(1); + if (!string.IsNullOrEmpty(printer)) + { + btformat.Printer = printer; + } + + database.TextFile.FileName = filePath; + + //database.SQLStatement += $" where printID='{printId}' order by RIGHT(Var1,7)";//填写SQL语句附加条件 + //database.Password = VSLoginInfo.SQLPassword; + //database.User = VSLoginInfo.SQLUser; + btformat.PrintOut(false, false); //第二个参数设置是否跳出打印属性; + btapp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);//退出时同步退出bartender进程(SQL条件会改变,不更新模板信息) + + } + catch + { + return false; + } + return true; + } + + + /// + /// 打印从文本数据库中打 + /// + /// 模板地址 + /// 数据行,一行一个标签,第一行为标题,多列逗号分割 + /// + public bool BTPrintByDataBase(string templatepath, List dataLine, string printer = "") + { + + try + { + BarTender.Application btapp; + BarTender.Format btformat; + btapp = new BarTender.Application(); + var filepath = WriteLog(dataLine, "", Guid.NewGuid().ToString()); + btformat = btapp.Formats.Open(templatepath, false, ""); + BarTender.Database database = btformat.Databases.GetDatabase(1); + if (!string.IsNullOrEmpty(printer)) + { + btformat.Printer = printer; + } + database.TextFile.FileName = filepath; + + //database.SQLStatement += $" where printID='{printId}' order by RIGHT(Var1,7)";//填写SQL语句附加条件 + //database.Password = VSLoginInfo.SQLPassword; + //database.User = VSLoginInfo.SQLUser; + btformat.PrintOut(false, false); //第二个参数设置是否跳出打印属性; + btapp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);//退出时同步退出bartender进程(SQL条件会改变,不更新模板信息) + + } + catch + { + return false; + } + return true; + } + /// + /// 写文本 + /// + /// + public static string WriteLog(List lines, string fileDirectory = "", string guid = "") + { + + try + { + string path1 = Environment.CurrentDirectory + Path.Combine("/printFile/") + fileDirectory; + if (!Directory.Exists(path1)) + { + //创建索引目录 + Directory.CreateDirectory(path1); + } + string path = path1 + "/" + DateTime.Now.ToString("yyyy-MM-dd") + guid + ".txt"; + FileStream stream = null; + if (File.Exists(path)) + { + File.Delete(path); + } + stream = new FileStream(path, FileMode.Create); + + StreamWriter writer = new StreamWriter(stream); + for (var i = 0; i < lines.Count; i++) + { + writer.Write(lines[i] + Environment.NewLine); + + } + writer.Flush(); + writer.Close(); + stream.Close(); + return path; + } + catch + { + } + finally + { + + } + return ""; + } + #endregion + public static void ExportToFile(string btFileName, Dictionary data) + { + //BarTender.Application btApp = new BarTender.Application(); + //BarTender.Format btFormat; + + btFormat = btApp.Formats.Open(btFileName); + + foreach (var key in data.Keys) + { + + btFormat.SetNamedSubStringValue(key, data[key]); + } + + + //btFormat.SaveAs(btFileName, true); + + btFormat.ExportToFile(@"E:/temp.jpg", "jpg", BarTender.BtColors.btColors24Bit, BarTender.BtResolution.btResolutionPrinter, BarTender.BtSaveOptions.btSaveChanges); + btFormat.Close(BarTender.BtSaveOptions.btSaveChanges); + btApp.Quit(BarTender.BtSaveOptions.btSaveChanges); + + } + + + } + +} diff --git a/BBWY.Client/Helpers/HttpClientHelper.cs b/BBWY.Client/Helpers/HttpClientHelper.cs new file mode 100644 index 00000000..e0e023d5 --- /dev/null +++ b/BBWY.Client/Helpers/HttpClientHelper.cs @@ -0,0 +1,122 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Net.Http.Headers; +using System.Net.Http; +using System.Text; + +namespace BBWY.Client.Helpers +{ + public class HttpClientHelper + { + public HttpClientHelper(string baseAddr) + { + this.BaseAddr = baseAddr; + } + public string BaseAddr { get; set; } + + public string Get(string Url) + { + HttpClient client = new HttpClient(); + //设置 API的 基地址 + client.BaseAddress = new Uri(BaseAddr); + //设置 默认请求头ACCEPT + client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); + //发送GET请求 + HttpResponseMessage msg = client.GetAsync(Url).Result; + //判断结果是否成功 + if (msg.IsSuccessStatusCode) + { + //返回响应结果 + return msg.Content.ReadAsStringAsync().Result; + } + //返回空字符串,表示响应错误 + return ""; + } + + public string Delete(string Url) + { + HttpClient client = new HttpClient(); + //设置 API的 基地址 + client.BaseAddress = new Uri(BaseAddr); + //设置 默认请求头ACCEPT + client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); + //发送GET请求 + HttpResponseMessage msg = client.DeleteAsync(Url).Result; + //判断结果是否成功 + if (msg.IsSuccessStatusCode) + { + //返回响应结果 + return msg.Content.ReadAsStringAsync().Result; + } + //返回空字符串,表示响应错误 + return ""; + } + public string Post(string Url, string JsonData) + { + HttpClient client = new HttpClient(); + //设置 API的 基地址 + client.BaseAddress = new Uri(BaseAddr); + //设置 默认请求头ACCEPT + client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); + //设置消息体 + HttpContent content = new StringContent(JsonData); + content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + //发送Post请求 + HttpResponseMessage msg = client.PostAsync(Url, content).Result; + //判断结果是否成功 + if (msg.IsSuccessStatusCode) + { + //返回响应结果 + return msg.Content.ReadAsStringAsync().Result; + } + //返回空字符串,表示响应错误 + return ""; + } + + public string Put(string Url, string JsonData) + { + HttpClient client = new HttpClient(); + //设置 API的 基地址 + client.BaseAddress = new Uri(BaseAddr); + //设置 默认请求头ACCEPT + client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); + //设置消息体 + HttpContent content = new StringContent(JsonData); + content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + //发送Post请求 + HttpResponseMessage msg = client.PutAsync(Url, content).Result; + //判断结果是否成功 + if (msg.IsSuccessStatusCode) + { + //返回响应结果 + return msg.Content.ReadAsStringAsync().Result; + } + //返回空字符串,表示响应错误 + return ""; + } + + public T Request(string type, string url, object data = null) + { + string json = JsonConvert.SerializeObject(data); + string result = ""; + switch (type) + { + case "Get": + result = Get(url); + break; + case "Post": + result = Post(url, json); + break; + case "Put": + result = Put(url, json); + break; + case "Delete": + result = Delete(url); + break; + } + return JsonConvert.DeserializeObject(result); + } + } + +} diff --git a/BBWY.Client/Models/APIModel/Request/BarCodeRequest.cs b/BBWY.Client/Models/APIModel/Request/BarCodeRequest.cs new file mode 100644 index 00000000..42e69d2d --- /dev/null +++ b/BBWY.Client/Models/APIModel/Request/BarCodeRequest.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.APIModel.Request +{ + public class BarCodeRequest + { + + + ///// + ///// 条形码id + ///// + //public long Id { get; set; } + + /// + /// 品牌 + /// + public string Brand { get; set; } + + /// + /// 品名 + /// + public string BrandName { get; set; } + + /// + /// 货号 + /// + public string ProductNo { get; set; } + + /// + /// sku名称 + /// + public string SkuName { get; set; } + + /// + /// skuId(条形码号=POP+SkuId) + /// + public string SkuId { get; set; } + + /// + /// 条形码模板 + /// + public BarcodeLabelModel LabelModel { get; set; } + + ///// + ///// 型号 + ///// + //public string ModelNo { get; set; } + } +} diff --git a/BBWY.Client/Models/APIModel/Request/CerRequest.cs b/BBWY.Client/Models/APIModel/Request/CerRequest.cs new file mode 100644 index 00000000..76f60bc3 --- /dev/null +++ b/BBWY.Client/Models/APIModel/Request/CerRequest.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.APIModel.Request +{ + public class CerRequest + { + /// + /// skuid + /// + public string SkuId { get; set; } + + /// + /// 品牌 + /// + public string Brand { get; set; } + + /// + /// 品名 + /// + public string BrandName { get; set; } + + /// + /// 材质 + /// + public string Shader { get; set; } + + /// + /// 执行标准 + /// + public string ExcuteStander { get; set; } + + /// + /// 生产商 + /// + public string ProductShop { get; set; } + + /// + /// 地址 + /// + public string ProductAdress { get; set; } + + /// + /// 型号(货号) + /// + public string ProductNo { get; set; } + + /// + /// 是否含3cLogo(0是 ,1否) + /// + public int IsLogo { get; set; } + + /// + /// 工厂编号 + /// + public string FactoryNumber { get; set; } + + /// + /// 合格证模板 + /// + public int LabelModel { get; set; } + } +} diff --git a/BBWY.Client/Models/APIModel/Request/ConsumableRequest.cs b/BBWY.Client/Models/APIModel/Request/ConsumableRequest.cs new file mode 100644 index 00000000..533bc27a --- /dev/null +++ b/BBWY.Client/Models/APIModel/Request/ConsumableRequest.cs @@ -0,0 +1,68 @@ +using BBWY.Client.Models.PackTask; +using BBWY.Client.Views.PackTask; +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.APIModel.Request +{ + + public class ConsumableResponse + { + public int OrderCount { get; set; } + public ConsumableModel[] Consumables { get; set; } + } + + public class ConsumableSearchRequest + { + /// + /// 名称 + /// + public string Name { get; set; } + /// + /// 页面1 + /// + public int? PageIndex { get; set; } + /// + /// 单页数量 + /// + public int? PageSize { get; set; } + } + + public class ConsuableRequest + { + /// + /// id + /// + public long Id { get; set; } + + /// + /// 名称 + /// + public string Name { get; set; } + /// + /// 价格 + /// + public decimal Price { get; set; } + /// + /// 重量 + /// + public double? Weigth { get; set; } + /// + /// 长度 + /// + public double? Length { get; set; } + /// + /// 宽度 + /// + public double? Width { get; set; } + /// + /// 高度 + /// + public double? Heigth { get; set; } + /// + /// 备注 + /// + public string Remark { get; set; } + } +} diff --git a/BBWY.Client/Models/APIModel/Request/CreateTaskRequest.cs b/BBWY.Client/Models/APIModel/Request/CreateTaskRequest.cs new file mode 100644 index 00000000..fd98c6af --- /dev/null +++ b/BBWY.Client/Models/APIModel/Request/CreateTaskRequest.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.APIModel.Request +{ + public class CreateTaskRequest + { + /// + /// skuid + /// + public string SkuId { get; set; } + + /// + /// 品名 + /// + public string BrandName { get; set; } + /// + /// sku数量 + /// + public int SkuCount { get; set; } + /// + /// 到货情况(待收货=0,部分收货=1,已到货=2) + /// + public int Availability { get; set; } + /// + /// 落仓(本地仓=0,齐越仓=1,京东仓=2) + /// + public int PositionType { get; set; } + + /// + /// 打包类型(单件=0,多件=1) + /// + public int PackType { get; set; } + /// + /// 配件数量 + /// + public int GoodsNumber { get; set; } + /// + /// sku配件名称 + /// + public string SkuGoodsTitle { get; set; } + /// + /// 基础包装(快递袋=0,纸箱=1,麻袋=2) + /// + public int BasicPack { get; set; } + /// + /// 增量耗材 + /// + public string Increment1 { get; set; } + /// + /// 增量耗材 + /// + public int Increment2 { get; set; } + + //条形码 合格证数据 + + + /// + /// 注意事项 + /// + public string MarkMessage { get; set; } + /// + /// 店铺 + /// + public string ShopId { get; set; } + /// + /// 需求方创建日期 + /// + public DateTime CreateTime { get; set; } + /// + /// 对接人 + /// + public string UserId { get; set; } + + /// + ///条形码Id + /// + public long? BarCodeId { get; set; } + + /// + /// 合格证Id + /// + public long? CertificateId { get; set; } + /// + /// 合格证位置 + /// + public int? CertificatePosition { get; set; } + + public Worry IsWorry { get; set; } + } +} diff --git a/BBWY.Client/Models/APIModel/Request/PackUserRequest.cs b/BBWY.Client/Models/APIModel/Request/PackUserRequest.cs new file mode 100644 index 00000000..ad5caddc --- /dev/null +++ b/BBWY.Client/Models/APIModel/Request/PackUserRequest.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.APIModel.Request +{ + public class PackUserRequest + { + public long TaskId { get; set; } + public string PackUserId { get; set; } + public int FeesItemId { get; set; } + public int FeesTypeId { get; set; } + public decimal PackNumber { get; set; } + + } +} diff --git a/BBWY.Client/Models/APIModel/Response/PackTask/FeesItemResponse.cs b/BBWY.Client/Models/APIModel/Response/PackTask/FeesItemResponse.cs new file mode 100644 index 00000000..c8c36ab3 --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/PackTask/FeesItemResponse.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows; + +namespace BBWY.Client.Models.APIModel.Response.PackTask +{ + /// + /// 服务数据展示 + /// + public class FeesItemResponse : NotifyObject + { + private List serviceList = new List(); + + public List ServiceList { get => serviceList; set { Set(ref serviceList, value); } } + + public decimal AllFees { get=> allFees; set { Set(ref allFees, value); } } + private decimal allFees; + + public decimal SingleFees { get => singleFees; set { Set(ref singleFees, value); } } + private decimal singleFees; + + + public decimal TaskId { get => taskId; set { Set(ref taskId, value); } } + private decimal taskId; + } + + public enum ServiceType + { + 增值服务 = 0, + 打包服务 = 1, + 耗材服务 = 2 + } + + public class ServiceItemResponse + { + /// + /// 0增值服务 1打包服务 2耗材服务 + /// + public ServiceType ServiceType { get; set; } + /// + /// 服务项目 + /// + public string ItemName { get; set; } + /// + /// 价格 + /// + public decimal? ItemPrice { get; set; } + /// + /// 数量 + /// + public int? ItemCount { get; set; } + + } +} diff --git a/BBWY.Client/Models/APIModel/Response/PackTask/PackServiceResponse.cs b/BBWY.Client/Models/APIModel/Response/PackTask/PackServiceResponse.cs new file mode 100644 index 00000000..93bb247f --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/PackTask/PackServiceResponse.cs @@ -0,0 +1,47 @@ +using BBWY.Client.Models.PackTask; +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.APIModel.Response.PackTask +{ + public class PackServiceResponse + { + /// + /// 增值服务数据 + /// + public List IncreateList { get; set; } + /// + ///工序服务数据 + /// + public List PackList { get; set; } + /// + /// 耗材服务数据 + /// + public List ConsumableServiceList { get; set; } + } + + public class PackItemModelResponse + { + + public string ItemName { get; set; } + /// + /// Member.userId + /// + public string SelectUserId { get; set; } + /// + /// 选中的服务Id + /// + public long SelectId { get; set; } + /// + /// 用户名 + /// + public string MemberName { get; set; } + + /// + /// 数量 + /// + public int ItemCount { get; set; } + } + +} diff --git a/BBWY.Client/Models/APIModel/Response/PackTask/PackTaskResultResponse.cs b/BBWY.Client/Models/APIModel/Response/PackTask/PackTaskResultResponse.cs new file mode 100644 index 00000000..991a4d35 --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/PackTask/PackTaskResultResponse.cs @@ -0,0 +1,423 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Automation.Peers; +using WebSocketSharp; + +namespace BBWY.Client.Models.APIModel.Response.PackTask +{ + public class PackTaskResultResponse + { + /// + /// 查询总数据(判断总页数) + /// + public int TotalCount { get; set; } + + /// + /// 页面返回的数据 + /// + public GetPackTaskDTO[] Items { get; set; } + } + public class GetPackTaskDTO + { + /// + /// SKU标题 + /// + public string SkuName { get; set; } + /// + /// 图片链接 + /// + public string Logo { get; set; } + /// + /// 任务id + /// + public long TaskId { get; set; } + + /// + /// 需求方创建日期 + /// + public DateTime CreateTime { get; set; } + + /// + /// 任务状态(未完成=0,已完成=1,) + /// + public int TaskStatus { get; set; } + + /// + /// 需求方团队 + /// + public string DepartmentName { get; set; } + + /// + /// 需求方店铺 + /// + public string ShopName { get; set; } + + /// + /// 货号 + /// + public string ProductItemNum { get; set; } + + /// + /// 货号品名 + /// + public string BrandName { get; set; } + + /// + /// 对接人 + /// + public string UserName { get; set; } + + /// + /// 打包人 + /// + public string[] PackUserName { get; set; } + + /// + /// skuid + /// + public string SkuId { get; set; } + + /// + /// sku数量 + /// + public int SkuCount { get; set; } + /// + /// 打包类型(单件=0,多件=1) + /// + public int PackType { get; set; } + + /// + /// 落仓(本地仓=0,齐越仓=1,京东仓=2) + /// + public int PositionType { get; set; } + + /// + /// 基础包装(快递袋=0,纸箱=1,麻袋=2) + /// + public int BasicPack { get; set; } + + /// + /// 增量1() + /// + public string Increment1 { get; set; } + + /// + /// 增量2() + /// + public int? Increment2 { get; set; } + + /// + /// 工序道数 + /// + public int? ProcessCount { get; set; } + + /// + /// 到货情况(待收货=0,部分收货=1,已到货=2) + /// + public int Availability { get; set; } + + //todo: 条形码数据 合格证数据 + + ///// + ///// 打包费用 + ///// + //public FeesItemTypeDTO FeesItemTypeDTO { get; set; } + /// + /// + /// + public FeesItemResponse FeesItemResponse { get; set; } + /// + /// 合格证位置(外部包装=0,产品包装=1) + /// + public int? CertificatePosition { get; set; } + + /// + /// 箱子耗材(自带=0,4-13号纸箱=1-10,) + /// + public int? BoxConsumables { get; set; } + + /// + /// sku配件名称 + /// + public string SkuGoodsTitle { get; set; } + + /// + /// 配件数 + /// + public int GoodsNumber { get; set; } + + /// + /// 气泡纸耗材(长=0,宽=1) + /// + public int? AirConsumables { get; set; } + + /// + /// 注意事项(对接备注) + /// + public string MarkMessage { get; set; } + + public BarCodeModel BarCodeDTO { get; set; } + public CertificateModel certificate { get; set; } + } + + //public class FeesItemTypeDTO :NotifyObject + //{ + + + // private bool isPaperBox; + // public bool IsPaperBox { get => isPaperBox; set { Set(ref isPaperBox, value); } } + + // private bool isBoxNumber; + // public bool IsBoxNumber { get => isBoxNumber; set { Set(ref isBoxNumber, value); } } + + // private bool isAcceptGoods; + // public bool IsAcceptGoods { get=>isAcceptGoods; set { Set(ref isAcceptGoods, value); } } + + + // private bool isSendGoods; + // /// + // /// 装箱 送货 + // /// + // public bool IsSendGoods { get=> isSendGoods; set { Set(ref isSendGoods, value); } } + + // private bool isRuturnGoods; + // /// + // /// 退货质检 + // /// + // public bool IsRuturnGoods { get => isRuturnGoods; set { Set(ref isRuturnGoods, value); } } + + // private bool isUpdatePack; + // /// + // /// 更换包装 + // /// + // public bool IsUpdatePack { get => isUpdatePack; set { Set(ref isUpdatePack, value); } } + + // private bool isUnpacking; + // /// + // /// 拆套 + // /// + // public bool IsUnpacking { get => isUnpacking; set { Set(ref isUnpacking, value); } } + + // private bool isBasicPackFees; + // /// + // /// 基础包装费 + // /// + // public bool IsBasicPackFees { get => isBasicPackFees; set { Set(ref isBasicPackFees, value); } } + + // private bool isBoxPackFees; + // /// + // /// 箱子包装费 + // /// + // public bool IsBoxPackFees { get => isBoxPackFees; set { Set(ref isBoxPackFees, value); } } + + // private bool isExpressPackFees; + // /// + // /// 快递袋包装费 + // /// + // public bool IsExpressPackFees { get => isExpressPackFees; set { Set(ref isExpressPackFees, value); } } + + // private bool isExpressCloseSideFees; + // /// + // /// 快递袋封边 + // /// + // public bool IsExpressCloseSideFees { get => isExpressCloseSideFees; set { Set(ref isExpressCloseSideFees, value); } } + + // private bool isAirPaperPackFees; + // /// + // /// 气泡纸包装费 + // /// + // public bool IsAirPaperPackFees { get => isAirPaperPackFees; set { Set(ref isAirPaperPackFees, value); } } + + // private bool isAirBagPackFees; + // /// + // /// 气泡袋包装费 + // /// + // public bool IsAirBagPackFees { get => isAirBagPackFees; set { Set(ref isAirBagPackFees, value); } } + + // private bool isPOPBagPackFees; + // /// + // /// POP包装费 + // /// + // public bool IsPOPBagPackFees { get => isPOPBagPackFees; set { Set(ref isPOPBagPackFees, value); } } + + // private bool isTapePackFees; + // /// + // /// 胶带工序 + // /// + // public bool IsTapePackFees { get => isTapePackFees; set { Set(ref isTapePackFees, value); } } + + // private bool isIncreateGoods; + // /// + // ///增量配件 + // /// + // public bool IsIncreateGoods { get => isIncreateGoods; set { Set(ref isIncreateGoods, value); } } + + + + // private bool isAirPaper; + // /// + // /// 气泡纸 + // /// + // public bool IsAirPaper { get => isAirPaper; set { Set(ref isAirPaper, value); } } + + // private bool isTape; + // /// + // /// 胶带 + // /// + // public bool IsTape { get => isTape; set { Set(ref isTape, value); } } + + // public void SetAllVisitity() + // { + // IsPaperBox = SetVisitity( PaperBox); + // IsBoxNumber = SetVisitity(Convert.ToDecimal(BoxNumber) ); + + // IsAcceptGoods = SetVisitity(AcceptGoods); + // IsSendGoods = SetVisitity(SendGoods); + // IsRuturnGoods = SetVisitity(RuturnGoods); + // IsUpdatePack = SetVisitity(UpdatePack); + // IsUnpacking = SetVisitity(Unpacking); + + + // IsBasicPackFees = SetVisitity(BasicPackFees); + // IsBoxPackFees = SetVisitity(BoxPackFees ); + // IsExpressPackFees = SetVisitity(ExpressPackFees); + // IsExpressCloseSideFees = SetVisitity(ExpressCloseSideFees ); + // IsAirPaperPackFees = SetVisitity(AirPaperPackFees); + // IsAirBagPackFees = SetVisitity(AirBagPackFees); + // IsPOPBagPackFees = SetVisitity(POPBagPackFees); + // IsTapePackFees = SetVisitity(TapePackFees); + // IsIncreateGoods = SetVisitity(IncreateGoods); + // IsAirPaper = SetVisitity(AirPaper); + // IsTape = SetVisitity(Tape); + // } + + // private bool SetVisitity( decimal? item ) + // { + // if (item != null ) + // { + // return false; + // } + // else + // { + // return true;// 无数据隐藏 + // } + // } + + + // /// + // /// 箱子价格 + // /// + // public decimal? PaperBox { get; set; } + // public decimal PaperBoxNo { get; set; } + + // /// + // /// 第几号箱子 + // /// + // public int BoxNumber { get; set; } + + // /// + // /// 收货 卸货 + // /// + // public decimal? AcceptGoods { get; set; } + // public decimal AcceptGoodsNo { get; set; } + + // /// + // /// 装箱 送货 + // /// + // public decimal? SendGoods { get; set; } + // public decimal SendGoodsNo { get; set; } + + // /// + // /// 退货质检 + // /// + // public decimal? RuturnGoods { get; set; } + // public decimal RuturnGoodsNo { get; set; } + + // /// + // /// 更换包装 + // /// + // public decimal? UpdatePack { get; set; } + // public decimal UpdatePackNo { get; set; } + + // /// + // /// 拆套 + // /// + // public decimal? Unpacking { get; set; } + // public decimal UnpackingNo { get; set; } + + + + // /// + // /// 基础包装费 + // /// + // public decimal? BasicPackFees { get; set; } + // public decimal BasicPackFeesNo { get; set; } + + // /// + // /// 箱子包装费 + // /// + // public decimal? BoxPackFees { get; set; } + // public decimal BoxPackFeesNo { get; set; } + // /// + // /// 快递袋包装费 + // /// + // public decimal? ExpressPackFees { get; set; } + // public decimal ExpressPackFeesNo { get; set; } + // /// + // /// 快递袋封边 + // /// + // public decimal? ExpressCloseSideFees { get; set; } + // public decimal ExpressCloseSideFeesNo { get; set; } + // /// + // /// 气泡纸包装费 + // /// + // public decimal? AirPaperPackFees { get; set; } + // public decimal AirPaperPackFeesNo { get; set; } + // /// + // /// 气泡袋包装费 + // /// + // public decimal? AirBagPackFees { get; set; } + // public decimal AirBagPackFeesNo { get; set; } + // /// + // /// POP包装费 + // /// + // public decimal? POPBagPackFees { get; set; } + // public decimal POPBagPackFeesNo { get; set; } + // /// + // /// 胶带工序 + // /// + // public decimal? TapePackFees { get; set; } + // public decimal TapePackFeesNo { get; set; } + // /// + // ///增量配件 + // /// + // public decimal? IncreateGoods { get; set; } + // public decimal IncreateGoodsNo { get; set; } + + // /// + // /// 气泡纸 + // /// + // public decimal? AirPaper { get; set; } + // public decimal AirPaperNo { get; set; } + // /// + // /// 胶带 + // /// + // public decimal? Tape { get; set; } + // public decimal TapeNo { get; set; } + + + // /// + // /// 打包消耗的总费用(总数量) + // /// + // public decimal AllPackFees { get; set; } + + // /// + // /// 总费用(单价) + // /// + // public decimal TotalFees { get; set; } + + //} + + +} diff --git a/BBWY.Client/Models/APIModel/Response/PackTask/ProductSkuCountsResponse.cs b/BBWY.Client/Models/APIModel/Response/PackTask/ProductSkuCountsResponse.cs new file mode 100644 index 00000000..4d7a8813 --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/PackTask/ProductSkuCountsResponse.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.APIModel.Response.PackTask +{ + public class ProductSkuCountsResponse + { + + public int ArrivedCount { get; set; } + + public int NoArrivedCount { get; set; } + + public int SomeArrivedCount { get; set; } + + public int WorryCount { get; set; } + } +} diff --git a/BBWY.Client/Models/APIModel/Response/PackTask/ProductSkuResponse.cs b/BBWY.Client/Models/APIModel/Response/PackTask/ProductSkuResponse.cs new file mode 100644 index 00000000..23351bee --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/PackTask/ProductSkuResponse.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.APIModel.Response.PackTask +{ + + public class ProductSkuResponse + { + /// + /// skuId + /// + public string Id { get; set; } + + /// + /// 图片链接 + /// + public string Logo { get; set; } + /// + /// SKU标题 + /// + public string Title { get; set; } + + /// + /// 品名 + /// + public string BrandName { get; set; } + + /// + /// 商品id + /// + public long ShopId { get; set; } + + /// + /// 货号 + /// + public string ProductItemNum { get; set; } + /// + /// spuId + /// + public string ProductId { get; set; } + + + + + + public BarCodeModel BarCodeModel { get; set; } + + + + /// + /// 合格证信息 + /// + public CertificateModel Certificate { get; set; } + + } + + + +} diff --git a/BBWY.Client/Models/Enums.cs b/BBWY.Client/Models/Enums.cs index 0aa105f0..c70614d1 100644 --- a/BBWY.Client/Models/Enums.cs +++ b/BBWY.Client/Models/Enums.cs @@ -207,4 +207,128 @@ { 初级策略, 中级策略, 高级策略 } + + + /// + /// 快递到货情况 + /// + public enum TaskState + { + 已到货 = 0, + 部分到货 = 1, + 未到货 = 2, + 已完成 = 3, + 全部 = 4, + 加急 = 5 + } + /// + /// 打包类型 + /// + public enum PackType + { + 单件 = 0, + 多件 = 1 + } + /// + /// 基础包装 + /// + public enum BasicPack + { + 快递袋 = 0, + 纸箱 = 1, + 麻袋 = 2 + } + /// + /// 落仓 + /// + public enum PositionType + { + 本地仓 = 0, + 齐越仓 = 1, + 京东仓 = 2 + } + /// + /// 合格证包装位置 + /// + public enum CertificatePosition + { + 外部包装 = 0, + 产品包装 = 1, + 无 =2 + } + + public enum Increment + { + 无 = 0, + 汽泡纸 = 1, + 气泡袋 = 2, + POP袋 = 3, + + } + + /// + /// 条形码模板 + /// + public enum BarcodeLabelModel + { + /// + /// 标准模板 + /// + barstander = 0, + /// + /// 精简模板 + /// + barsimplify = 1, + } + + + + /// + /// 合格证模板 + /// + public enum CertificateLabelModel + { + /// + /// 合格证-标准单行 + /// + CerStanderSingle = 0, + /// + /// 合格证-标准双行 + /// + CerStanderDouble = 1, + /// + /// 合格证 3C 单行 + /// + Cer3CSingle = 2, + /// + /// 合格证 3C 双行 + /// + Cer3CDouble = 3, + } + /// + /// 合格证是否3c + /// + public enum CerHave3C + { + No3C = 0, + Is3C = 1 + } + /// + /// 加急 + /// + public enum Worry + { + 否 = 0, + 是 = 1 + } + /// + /// 任务状态 + /// + public enum TaskStateType + { + 未完成 = 0, + 已完成 = 1 + + } + } diff --git a/BBWY.Client/Models/PackTask/BarCodeModel.cs b/BBWY.Client/Models/PackTask/BarCodeModel.cs new file mode 100644 index 00000000..add20cfb --- /dev/null +++ b/BBWY.Client/Models/PackTask/BarCodeModel.cs @@ -0,0 +1,60 @@ +namespace BBWY.Client.Models +{ + /// + /// 条形码 + /// + public class BarCodeModel:NotifyObject + { + + /// + /// 条形码id + /// + public long Id { get; set; } + + + private string brand; + /// + /// 品牌 + /// + public string Brand { get=>brand; set { Set(ref brand, value); } } + + private string brandName; + /// + /// 品名 + /// + public string BrandName { get => brandName; set { Set(ref brandName, value); } } + + + private string producNo; + /// + /// 货号 + /// + public string ProductNo { get => producNo; set { Set(ref producNo, value); } } + + private string skuName; + /// + /// sku名称 + /// + public string SkuName { get => skuName; set { Set(ref skuName, value); } } + + + private string skuId; + /// + /// skuId(条形码号=POP+SkuId) + /// + public string SkuId { get => skuId; set { Set(ref skuId, value); } } + + + private string modelNo; + /// + /// 型号 + /// + public string ModelNo { get => modelNo; set { Set(ref modelNo, value); } } + + /// + /// 模板标签 + /// + public BarcodeLabelModel LabelModel { get; set; } + + } +} diff --git a/BBWY.Client/Models/PackTask/BarLabelModel.cs b/BBWY.Client/Models/PackTask/BarLabelModel.cs new file mode 100644 index 00000000..236fd6d1 --- /dev/null +++ b/BBWY.Client/Models/PackTask/BarLabelModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.PackTask +{ + public class BarLabelModel + { + /// + /// 选中的模板 + /// + public BarcodeLabelModel BarcodeLabelModel { get; set; } + + /// + /// 模板数据 + /// + Dictionary Data =new Dictionary(); + + } +} diff --git a/BBWY.Client/Models/PackTask/CertificateModel.cs b/BBWY.Client/Models/PackTask/CertificateModel.cs new file mode 100644 index 00000000..c3cc6542 --- /dev/null +++ b/BBWY.Client/Models/PackTask/CertificateModel.cs @@ -0,0 +1,89 @@ +using System; + +namespace BBWY.Client.Models +{ + /// + /// 合格证 + /// + public class CertificateModel : NotifyObject + { + /// + /// 合格证id + /// + public long Id { get; set; } + + /// + /// skuid + /// + public string SkuId { get; set; } + + + private string brand; + /// + /// 品牌 + /// + public string Brand { get => brand; set { Set(ref brand, value); } } + + + private string brandName; + /// + /// 品名 + /// + public string BrandName { get => brandName; set { Set(ref brandName, value); } } + + private string shader; + /// + /// 材质 + /// + public string Shader { get => shader; set { Set(ref shader, value); } } + + private string excuteStander; + /// + /// 执行标准 + /// + public string ExcuteStander { get => excuteStander; set { Set(ref excuteStander, value); } } + + private string productShop; + /// + /// 生产商 + /// + public string ProductShop { get => productShop; set { Set(ref productShop, value); } } + + private string productAdress; + /// + /// 地址 + /// + public string ProductAdress { get => productAdress; set { Set(ref productAdress, value); } } + + private string productNo; + /// + /// 型号(货号) + /// + public string ProductNo { get => productNo; set { Set(ref productNo, value); } } + + /// + /// 生产日期 + /// + public DateTime ProductDate { get; set; } + + /// + /// 经销商 + /// + public string Reseller { get; set; } + + private int isLogo; + /// + /// 是否含3cLogo(0没有 ,1有) + /// + public int IsLogo { get => isLogo; set { Set(ref isLogo, value); } } + + private string factoryNumber; + /// + /// 工厂编号 + /// + public string FactoryNumber { get => factoryNumber; set { Set(ref factoryNumber, value); } } + + private CertificateLabelModel labelModel; + public CertificateLabelModel LabelModel { get => labelModel; set { Set(ref labelModel, value); } } + } +} diff --git a/BBWY.Client/Models/PackTask/ConsumableModel.cs b/BBWY.Client/Models/PackTask/ConsumableModel.cs new file mode 100644 index 00000000..3b86bab8 --- /dev/null +++ b/BBWY.Client/Models/PackTask/ConsumableModel.cs @@ -0,0 +1,128 @@ +using BBWY.Client.APIServices; +using BBWY.Client.Models.APIModel.Request; +using BBWY.Client.ViewModels; +using BBWY.Client.Views.PackTask; +using BBWY.Common.Models; +using GalaSoft.MvvmLight.Command; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Resources; +using System.Text; +using System.Windows.Input; +using System.Windows.Media.TextFormatting; + +namespace BBWY.Client.Models.PackTask +{ + public class ConsumableModel : BaseVM, IDenpendency + { + public ConsumableService consumableService; + public ICommand EditConsumableCommand { get; set; } + public ICommand DeletedConsumableCommand { get; set; } + public ICommand SaveConsumableCommand { get; set; } + public Action ReflashDatas { get; set; } + + public ConsumableModel(ConsumableService consumableService) + { + this.consumableService = consumableService; + EditConsumableCommand = new RelayCommand(EditConsumable); + + DeletedConsumableCommand = new RelayCommand>(DeletedConsumable); + SaveConsumableCommand = new RelayCommand(SaveConsumable); + } + + + public void SaveConsumable(object obj) + { + if (string.IsNullOrEmpty(Name)) + { + new TipsWindow("耗材品名不能为空!").Show(); + return; + } + + if (this.Price == null) + { + new TipsWindow("价格不能为空!").Show(); + return; + } + ApiResponse res = null; + if (Id > 0) + { + res = consumableService.Edit(new ConsuableRequest + { + Id = Id, + Heigth = Heigth, + Length = Length, + Name = Name, + Price = Price.Value, + Remark = Remark, + Weigth = Weigth, + Width = Width + }); + + } + else + { + res = consumableService.Add(new ConsuableRequest + { + + Heigth = Heigth, + Length = Length, + Name = Name, + Price = Price.Value, + Remark = Remark, + Weigth = Weigth, + Width = Width + }); + + } + + if (res != null && res.Success) + { + var win = obj as System.Windows.Window; + if (ReflashDatas != null) ReflashDatas(); + win.Close(); + } + else + { + new TipsWindow(res.Msg).Show(); + } + } + + public void DeletedConsumable(ObservableCollection list) + { + var res = consumableService.Deleted(Id); + if (res.Success) + { + list.Remove(this); + } + } + + + + public void EditConsumable() + { + EditConsumable add = new EditConsumable(this); + add.Show(); + } + + private long id; + public long Id { get => id; set { Set(ref id, value); } } + private string name; + public string Name { get => name; set { Set(ref name, value); } } + private decimal? price; + public decimal? Price { get => price; set { Set(ref price, value); } } + private double? weigth; + public double? Weigth { get => weigth; set { Set(ref weigth, value); } } + private double? length; + public double? Length { get => length; set { Set(ref length, value); } } + private double? width; + public double? Width { get => width; set { Set(ref width, value); } } + private double? heigth; + public double? Heigth { get => heigth; set { Set(ref heigth, value); } } + private string remark; + public string Remark { get => remark; set { Set(ref remark, value); } } + + + } +} diff --git a/BBWY.Client/Models/PackTask/FeesDetailModel.cs b/BBWY.Client/Models/PackTask/FeesDetailModel.cs new file mode 100644 index 00000000..f11c1277 --- /dev/null +++ b/BBWY.Client/Models/PackTask/FeesDetailModel.cs @@ -0,0 +1,29 @@ +namespace BBWY.Client.Models +{ + /// + /// 收费明细表 + /// + public class FeesDetailModel : NotifyObject + { + public long Id { get; set; } + /// + /// 任务id + /// + public long TaskId { get; set; } + + /// + /// 收费分类id(格式 [1,2,2,1]) + /// + public string FeesTypeId { get; set; } + + /// + /// 收费项目id(格式 [1,2,2,1]) + /// + public string FeesItemId { get; set; } + + /// + /// 收费小计(格式 [1,2,2,1]) + /// + public string SingleFees { get; set; } + } +} diff --git a/BBWY.Client/Models/PackTask/FeesItemModel.cs b/BBWY.Client/Models/PackTask/FeesItemModel.cs new file mode 100644 index 00000000..9aa276d2 --- /dev/null +++ b/BBWY.Client/Models/PackTask/FeesItemModel.cs @@ -0,0 +1,25 @@ +namespace BBWY.Client.Models +{ + /// + ///收费项 + /// + public class FeesItemModel : NotifyObject + { + public long Id { get; set; } + /// + /// 分类id + /// + public int TypeId { get; set; } + + /// + /// 项目id + /// + public int ItemId { get; set; } + + /// + /// 收费价格 + /// + public decimal FeesPrice { get; set; } + + } +} diff --git a/BBWY.Client/Models/PackTask/IncreateModel.cs b/BBWY.Client/Models/PackTask/IncreateModel.cs new file mode 100644 index 00000000..53bbe05a --- /dev/null +++ b/BBWY.Client/Models/PackTask/IncreateModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.PackTask +{ + public class IncreateModel:NotifyObject + { + private string increateName; + public string IncreateName { get => increateName; set { Set(ref increateName, value); } } + private bool isSelected; + public bool IsSelected { get => isSelected; set { Set(ref isSelected, value); } } + + public override string ToString() + { + return IncreateName; + } + + } +} diff --git a/BBWY.Client/Models/PackTask/IncreateServiceModel.cs b/BBWY.Client/Models/PackTask/IncreateServiceModel.cs new file mode 100644 index 00000000..5392ed47 --- /dev/null +++ b/BBWY.Client/Models/PackTask/IncreateServiceModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.PackTask +{ + public class IncreateServiceModel + { + public long Id { get; set; } + public string ServiceName { get; set; } + + public decimal ServicePrice { get; set; } + } +} diff --git a/BBWY.Client/Models/PackTask/PackItemModel.cs b/BBWY.Client/Models/PackTask/PackItemModel.cs new file mode 100644 index 00000000..15c9c57b --- /dev/null +++ b/BBWY.Client/Models/PackTask/PackItemModel.cs @@ -0,0 +1,69 @@ +using BBWY.Client.APIServices; +using GalaSoft.MvvmLight.Command; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Input; + +namespace BBWY.Client.Models.PackTask +{ + public class PackItemModel : NotifyObject + { + private string itemName; + public string ItemName { get => itemName; set { Set(ref itemName, value); } } + + private string selectUserId; + /// + /// Member.userId + /// + public string SelectUserId { get => selectUserId; set { Set(ref selectUserId, value); } } + + private long selectId; + /// + /// 选中的Id + /// + public long SelectId { get => selectId; set { Set(ref selectId, value); } } + + private string memberName; + public string MemberName { get => memberName; set { Set(ref memberName, value); } } + + private int itemCount; + public int ItemCount { get => itemCount; set { Set(ref itemCount, value); } } + + + public ObservableCollection IncreateServiceList { get; set; } + public ObservableCollection MemberList { get; set; } + + public ObservableCollection ConsumableList { get; set; } + public ObservableCollection PackServiceList { get; set; } + /// + /// 设置列表的 是否编辑属性 + /// + public bool IsEnable { get; set; } + + public ICommand DeleteServiceCommand { get; set; } + + public PackItemModel(ObservableCollection IncreateServiceList=null, + ObservableCollection MemberList=null, + ObservableCollection ConsumableList=null, + ObservableCollection PackServiceList=null + ) + { + + DeleteServiceCommand = new RelayCommand>(DeleteService); + this. IncreateServiceList = IncreateServiceList; + this.PackServiceList = PackServiceList; + this.MemberList = MemberList; + this.ConsumableList = ConsumableList; + } + + private void DeleteService(ObservableCollection list) + { + list.Remove(this); + + } + } +} diff --git a/BBWY.Client/Models/PackTask/PackTaskModel.cs b/BBWY.Client/Models/PackTask/PackTaskModel.cs new file mode 100644 index 00000000..8ecb804e --- /dev/null +++ b/BBWY.Client/Models/PackTask/PackTaskModel.cs @@ -0,0 +1,501 @@ +using BBWY.Client.APIServices; +using BBWY.Client.Models.APIModel.Response.PackTask; +using BBWY.Client.ViewModels; +using BBWY.Client.Views.PackTask; +using GalaSoft.MvvmLight.Command; +using System; +using System.Collections.Generic; + +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Controls; +using System.Windows.Input; + +namespace BBWY.Client.Models +{ + /// + /// 打包任务 数据绑定 + /// + public class PackTaskModel : BaseVM + { + + private bool isShowFees; + public bool IsShowFees { get => isShowFees; set { Set(ref isShowFees, value); } } + + private long id; + + public long Id { get => id; set { Set(ref id, value); } } + private readonly PackTaskService packTaskService; + WorkProcessService workProcessService; + public ICommand SetTaskStatusCommand { get; set; } + public ICommand PrintBarcodeCommand { get; set; } + + public ICommand PrintCerCommand { get; set; } + public ICommand LookCerCommand { get; set; } + public ICommand LookBarCommand { get; set; } + public ICommand SetServiceCommand { get; set; } + IncreateServiceService increateServiceService; + public ConsumableService consumableService; + + + + + + public PackTaskModel(PackTaskService packTaskService, ConsumableService consumableService, WorkProcessService workProcessService, IncreateServiceService increateServiceService) + { + + SetTaskStatusCommand = new RelayCommand(SetTaskStatus); + PrintBarcodeCommand = new RelayCommand(PrintBarcode); + PrintCerCommand = new RelayCommand(PrintCer); + LookBarCommand = new RelayCommand(LookBar); + LookCerCommand = new RelayCommand(LookCer); + SetServiceCommand = new RelayCommand(SetService); + this.packTaskService = packTaskService; + this.consumableService = consumableService; + this.workProcessService = workProcessService; + this.increateServiceService = increateServiceService; + } + + private void SetService() + { + //加载数据 + ServiceWindow service = new ServiceWindow(packTaskService, TaskId, SkuCount, consumableService, workProcessService, increateServiceService);//设置 + service.model.SetAllFees = new Action>((feesItem, packUsers) => + { + FeesItemResponse = feesItem; + PackUser = string.Join("\r\n", packUsers); + IsShowFees = feesItem.AllFees > 0 ? true : false; + }); + service.Show(); + } + + /// + /// 查看合格证 + /// + private void LookCer() + { + if (CertificateModel == null) + { + new TipsWindow("该任务无设置合格证信息,无法查看!").ShowDialog(); + return; + } + LookCerWindow lookCerWindow = new LookCerWindow(CertificateModel); + lookCerWindow.Show(); + } + + + + /// + /// 查看条形码 + /// + private void LookBar() + { + if (BarCodeModel == null) + { + new TipsWindow("该任务无设置条形码信息,无法查看!").ShowDialog(); + return; + } + LookBarCodeWindow look = new LookBarCodeWindow(new BarCodeModel + { + Brand = BarCodeModel.Brand, + BrandName = BarCodeModel.BrandName, + LabelModel = BarCodeModel.LabelModel, + ProductNo = BarCodeModel.ProductNo, + SkuId = BarCodeModel.SkuId, + SkuName = BarCodeModel.SkuName + }); + look.Show(); + } + + private void PrintCer() + { + if (CertificateModel == null) + { + new TipsWindow("该任务无设置合格证信息,无法打印!").ShowDialog(); + return; + } + PrintWindow printWindow = new PrintWindow(); + printWindow.LabelName = CertificateModel.LabelModel.ToString();//加载模板信息 + + printWindow.certificateModel = certificateModel; + printWindow.LoadData(); + printWindow.Datas = LoadCerLabelModels(); + printWindow.Show(); + } + + /// + /// 打印条形码 + /// + private void PrintBarcode() + { + if (BarCodeModel == null) + { + new TipsWindow("该任务无设置条形码信息,无法打印!").ShowDialog(); + return; + } + + PrintWindow printWindow = new PrintWindow(); + printWindow.LabelName = BarCodeModel.LabelModel.ToString();//加载模板信息 + printWindow.barCodeModel = new BarCodeModel + { + Brand = BarCodeModel.Brand, + BrandName = BarCodeModel.BrandName, + LabelModel = BarCodeModel.LabelModel, + ProductNo = BarCodeModel.ProductNo, + SkuId = BarCodeModel.SkuId, + SkuName = BarCodeModel.SkuName + }; + printWindow.LoadData(); + printWindow.Datas = LoadBarLabelModels(); + printWindow.Show(); + } + + public void SetTaskStatus(long taskId) + { + + if (this.TaskStatus == TaskStateType.已完成) + { + return; + + } + ///修改完成 + var model = packTaskService.UpdateTaskStatus(taskId, 1); + if (model != null && model.Success) + { + this.TaskStatus = TaskStateType.已完成; + new TipsWindow("修改成功").Show(); + } + } + + public Dictionary LoadBarLabelModels() + { + Dictionary data = new Dictionary(); + data.Add("pinming", $"品名: {BarCodeModel.BrandName}"); + data.Add("guige", $"规格: {BarCodeModel.SkuName}"); + data.Add("pop", $"POP{BarCodeModel.SkuId}"); + switch (BarCodeModel.LabelModel) + { + case BarcodeLabelModel.barstander: + data.Add("pinpai", $"品牌: {BarCodeModel.Brand}"); + data.Add("xinghao", $"型号: {BarCodeModel.ProductNo}"); + return data; + case BarcodeLabelModel.barsimplify: + return data; + default: + break; + } + return data; + } + + public Dictionary LoadCerLabelModels() + { + Dictionary data = new Dictionary(); + data.Add("pinming", $"品名: {CertificateModel.BrandName}"); + data.Add("pinpai", $"品牌: {CertificateModel.Brand}"); + data.Add("xinghao", $"型号: {CertificateModel.ProductNo}"); + data.Add("dizhi", $"地址: {CertificateModel.ProductAdress}"); + data.Add("caizhi", $"材质: {CertificateModel.Shader}"); + data.Add("changshang", $"生产商: {CertificateModel.ProductShop}"); + + + switch (CertificateModel.IsLogo) + { + case 0://无图 + data.Add("gongchangid", $"无"); + break; + case 1://有图 + data.Add("gongchangid", $"{CertificateModel.FactoryNumber}"); + break; + default: + break; + } + + string[] excutes = CertificateModel.ExcuteStander.Split(',', StringSplitOptions.RemoveEmptyEntries); + StringBuilder sb = new StringBuilder(); + sb.Append("执行标准: "); + for (int i = 0; i < excutes.Count(); i++) + { + if (i % 2 == 0 && i > 0)//间隔两个换行 + { + sb.Append("\r\n").Append(" "); + } + sb.Append(excutes[i]).Append(" "); + } + sb.Remove(sb.Length - 3, 3); + + + data.Add("biaozhun", sb.ToString()); + + + + return data; + } + + + private DateTime endTime; + /// + /// 提交时间 + /// + public DateTime EndTime { get => endTime; set { Set(ref endTime, value); } } + + + private long taskId; + /// + /// 绑定数据 + /// + public long TaskId { get => taskId; set { Set(ref taskId, value); } } + + + private string departmentName; + /// + /// 部门名称 + /// + public string DepartmentName { get => departmentName; set { Set(ref departmentName, value); } } + + + private string acceptName; + /// + /// 对接人 + /// + public string AcceptName { get => acceptName; set { Set(ref acceptName, value); } } + + + private int skuCount; + /// + /// sku数量 + /// + public int SkuCount { get => skuCount; set { Set(ref skuCount, value); } } + + + private TaskState availability; + /// + /// 到货情况(待收货=0,部分收货=1,已到货=2) + /// + public TaskState Availability { get => availability; set { Set(ref availability, value); } } + + + + private TaskStateType taskStatus; + /// + /// 任务状态(未完成=0,已完成=1) + /// + public TaskStateType TaskStatus { get => taskStatus; set { Set(ref taskStatus, value); } } + + + private PackType packType; + /// + /// 打包类型(单件=0,多件=1) + /// + public PackType PackType { get => packType; set { Set(ref packType, value); } } + + + private int goodsNumber; + /// + /// 配件数 + /// + public int GoodsNumber { get => goodsNumber; set { Set(ref goodsNumber, value); } } + + + private string skuTitle; + /// + /// sku配件商品名称 + /// + public string SkuTitle { get => skuTitle; set { Set(ref skuTitle, value); } } + + + private BasicPack basicPack; + /// + /// 基础包装(快递袋=0,纸箱=1,麻袋=2) + /// + public BasicPack BasicPack { get => basicPack; set { Set(ref basicPack, value); } } + + + + private string increment1; + /// + /// 增量1() + /// + public string Increment1 { get => increment1; set { Set(ref increment1, value); } } + + + private Increment increment2; + /// + /// 增量2() + /// + public Increment Increment2 { get => increment2; set { Set(ref increment2, value); } } + + + private PositionType positionType; + /// + /// 落仓(本地仓=0,齐越仓=1,京东仓=2) + /// + public PositionType PositionType { get => positionType; set { Set(ref positionType, value); } } + + + + + #region 条形码数据 + /// + /// 条形码id + /// + public long BarCodeId { get; set; } + + /// + /// 标签模板 + /// + public BarcodeLabelModel LabelModel { get; set; } + + private string brand; + /// + /// 品牌 + /// + public string Brand { get => brand; set { Set(ref brand, value); } } + + private string brandName; + /// + /// 品名 + /// + public string BrandName { get => brandName; set { Set(ref brandName, value); } } + + + private string producNo; + /// + /// 货号 + /// + public string ProductNo { get => producNo; set { Set(ref producNo, value); } } + + private string skuName; + /// + /// sku名称 + /// + public string SkuName { get => skuName; set { Set(ref skuName, value); } } + + + private string skuId; + /// + /// skuId(条形码号=POP+SkuId) + /// + public string SkuId { get => skuId; set { Set(ref skuId, value); } } + + + private string modelNo; + /// + /// 型号 + /// + public string ModelNo { get => modelNo; set { Set(ref modelNo, value); } } + #endregion + + + private BarCodeModel barCodeModel; + /// + /// 合格证 + /// + public BarCodeModel BarCodeModel { get => barCodeModel; set { Set(ref barCodeModel, value); } } + + private CertificateModel certificateModel; + /// + /// 合格证 + /// + public CertificateModel CertificateModel { get => certificateModel; set { Set(ref certificateModel, value); } } + + /// + /// 合格证位置(外部包装=0,产品包装=1) + /// + private CertificatePosition certificatePosition; + /// + /// 合格证位置(外部包装=0,产品包装=1) + /// + public CertificatePosition CertificatePosition { get => certificatePosition; set { Set(ref certificatePosition, value); } } + + /// + /// 注意事项(对接备注) + /// + private string markMessage; + /// + /// 注意事项(对接备注) + /// + public string MarkMessage { get => markMessage; set { Set(ref markMessage, value); } } + + /// + /// 服务收费 (单个任务id 消耗的总费用) + /// + private decimal feesMoney; + /// + /// 服务收费 (单个任务id 消耗的总费用) + /// + public decimal FeesMoney { get => feesMoney; set { Set(ref feesMoney, value); } } + + /// + /// 打包员 + /// + private string packUser; + /// + /// 打包员 + /// + public string PackUser { get => packUser; set { Set(ref packUser, value); } } + + //public FeesItemTypeDTO FeesItemTypeDTO { get; set; } + + + private FeesItemResponse feesItemResponse; + + public FeesItemResponse FeesItemResponse { get => feesItemResponse; set { Set(ref feesItemResponse, value); } } + + public IList ItemList { get; set; } + } + + public class SkuMessage : NotifyObject + { + private long id; + + public long Id { get => id; set { Set(ref id, value); } } + + /// + /// 店铺Sku图链接 + /// + private string logo; + /// + /// 店铺Sku图链接 + /// + public string Logo { get => logo; set { Set(ref logo, value); } } + + + /// + /// 采购Sku名称 + /// + private string skuName; + /// + /// 采购Sku名称 + /// + public string SkuName { get => skuName; set { Set(ref skuName, value); } } + + /// + /// 货号品名(手写上传) + /// + private string brandName; + /// + /// 货号品名(手写上传) + /// + public string BrandName { get => brandName; set { Set(ref brandName, value); } } + + /// + /// 需求方店铺id + /// + private string shopName; + /// + /// 需求方店铺id + /// + public string ShopName { get => shopName; set { Set(ref shopName, value); } } + + + /// + /// 货号 + /// + private string goodsNo; + /// + /// 货号 + /// + public string GoodsNo { get => goodsNo; set { Set(ref goodsNo, value); } } + } +} diff --git a/BBWY.Client/Models/PackTask/PackUser.cs b/BBWY.Client/Models/PackTask/PackUser.cs new file mode 100644 index 00000000..850e0662 --- /dev/null +++ b/BBWY.Client/Models/PackTask/PackUser.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.PackTask +{ + public class PackUser + { + /// + /// 用户Id + /// + public string Id { get; set; } + /// + /// 用户名 + /// + public string UserName { get; set; } + + /// + /// 团队Id + /// + public string DepartmentId { get; set; } + /// + /// 用户名(花名) + /// + public string UserNick { get; set; } + } +} diff --git a/BBWY.Client/Models/PackTask/TaskPersonModel.cs b/BBWY.Client/Models/PackTask/TaskPersonModel.cs new file mode 100644 index 00000000..d8cb309e --- /dev/null +++ b/BBWY.Client/Models/PackTask/TaskPersonModel.cs @@ -0,0 +1,48 @@ +namespace BBWY.Client.Models +{ + /// + /// 个人任务打包情况 + /// + public class TaskPersonModel : NotifyObject + { + /// + /// 主键 + /// + public long Id { get; set; } + /// + /// 任务id + /// + public long TaskId { get; set; } + + /// + /// 打包人 + /// + public string UserId { get; set; } + + /// + /// 打包数量(格式 1,2,2,1 ) + /// + public string PackNumber { get; set; } + + /// + /// 收费分类id(格式 [1,2,2,1]) + /// + public string FeesTypeId { get; set; } + + /// + /// 收费项目id(格式 [1,2,2,1] ) + /// + public string FeesItemId { get; set; } + + /// + /// 单项小计 (格式 [5,2,2,2]) + /// + public string SingleFees { get; set; } + + /// + /// 总费用 + /// + public decimal AllFees { get; set; } + + } +} diff --git a/BBWY.Client/Models/PackTask/UserDepartment.cs b/BBWY.Client/Models/PackTask/UserDepartment.cs new file mode 100644 index 00000000..3868519e --- /dev/null +++ b/BBWY.Client/Models/PackTask/UserDepartment.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.PackTask +{ + /// + /// 团队名 + /// + /// 团队id + /// 团队名称 + public class UserDepartment + { + + public string Id { get; set; } + public string DePartmentName { get; set; } + + } +} diff --git a/BBWY.Client/Models/PackTask/UserFeesModel.cs b/BBWY.Client/Models/PackTask/UserFeesModel.cs new file mode 100644 index 00000000..d94b610e --- /dev/null +++ b/BBWY.Client/Models/PackTask/UserFeesModel.cs @@ -0,0 +1,30 @@ +using System; + +namespace BBWY.Client.Models +{ + /// + /// 个人收入情况 + /// + public class UserFeesModel : NotifyObject + { + /// + /// 主键 + /// + public long Id { get; set; } + /// + /// 成员id + /// + public string UserId { get; set; } + + /// + /// 收费 + /// + public decimal Fees { get; set; } + + /// + /// 日期 + /// + public DateTime DateTime { get; set; } + + } +} diff --git a/BBWY.Client/Models/PackTask/WorkProcessModel.cs b/BBWY.Client/Models/PackTask/WorkProcessModel.cs new file mode 100644 index 00000000..c28c7519 --- /dev/null +++ b/BBWY.Client/Models/PackTask/WorkProcessModel.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.PackTask +{ + public class WorkProcessModel + { + public long Id { get; set; } + /// + /// 工序名称 + /// + public string ProcessName { get; set; } + /// + /// 价格 + /// + public decimal ProcessPrice { get; set; } + } +} diff --git a/BBWY.Client/Models/Product/Product.cs b/BBWY.Client/Models/Product/Product.cs index 86006ead..d3da7c54 100644 --- a/BBWY.Client/Models/Product/Product.cs +++ b/BBWY.Client/Models/Product/Product.cs @@ -10,6 +10,10 @@ namespace BBWY.Client.Models PurchaserList = new ObservableCollection(); PurchasePlatformList = new List(); } + /// + /// 品牌 + /// + public string BrandName { get; set; } private Platform selectedPurchasePlatformModel; diff --git a/BBWY.Client/Resources/Images/3c.png b/BBWY.Client/Resources/Images/3c.png new file mode 100644 index 00000000..517f9270 Binary files /dev/null and b/BBWY.Client/Resources/Images/3c.png differ diff --git a/BBWY.Client/Resources/Images/barcode.png b/BBWY.Client/Resources/Images/barcode.png new file mode 100644 index 00000000..b8b6e98b Binary files /dev/null and b/BBWY.Client/Resources/Images/barcode.png differ diff --git a/BBWY.Client/Resources/LabelNames/Cer3CDouble.btw b/BBWY.Client/Resources/LabelNames/Cer3CDouble.btw new file mode 100644 index 00000000..3e6444e1 Binary files /dev/null and b/BBWY.Client/Resources/LabelNames/Cer3CDouble.btw differ diff --git a/BBWY.Client/Resources/LabelNames/Cer3CSingle.btw b/BBWY.Client/Resources/LabelNames/Cer3CSingle.btw new file mode 100644 index 00000000..fb9a36cc Binary files /dev/null and b/BBWY.Client/Resources/LabelNames/Cer3CSingle.btw differ diff --git a/BBWY.Client/Resources/LabelNames/CerStanderDouble.btw b/BBWY.Client/Resources/LabelNames/CerStanderDouble.btw new file mode 100644 index 00000000..a2908c02 Binary files /dev/null and b/BBWY.Client/Resources/LabelNames/CerStanderDouble.btw differ diff --git a/BBWY.Client/Resources/LabelNames/CerStanderSingle.btw b/BBWY.Client/Resources/LabelNames/CerStanderSingle.btw new file mode 100644 index 00000000..f3fc73fe Binary files /dev/null and b/BBWY.Client/Resources/LabelNames/CerStanderSingle.btw differ diff --git a/BBWY.Client/Resources/LabelNames/barsimplify.btw b/BBWY.Client/Resources/LabelNames/barsimplify.btw new file mode 100644 index 00000000..07b152a1 Binary files /dev/null and b/BBWY.Client/Resources/LabelNames/barsimplify.btw differ diff --git a/BBWY.Client/Resources/LabelNames/barstander.btw b/BBWY.Client/Resources/LabelNames/barstander.btw new file mode 100644 index 00000000..b96344ff Binary files /dev/null and b/BBWY.Client/Resources/LabelNames/barstander.btw differ diff --git a/BBWY.Client/Resources/Themes/Color.xaml b/BBWY.Client/Resources/Themes/Color.xaml index e537f37a..e725d1e4 100644 --- a/BBWY.Client/Resources/Themes/Color.xaml +++ b/BBWY.Client/Resources/Themes/Color.xaml @@ -22,6 +22,8 @@ + + @@ -31,4 +33,6 @@ + + \ No newline at end of file diff --git a/BBWY.Client/ViewModels/MainViewModel.cs b/BBWY.Client/ViewModels/MainViewModel.cs index 7a8added..7e22b80b 100644 --- a/BBWY.Client/ViewModels/MainViewModel.cs +++ b/BBWY.Client/ViewModels/MainViewModel.cs @@ -114,64 +114,105 @@ namespace BBWY.Client.ViewModels dongdongHelper.StartInJection(); } - + /// + /// 动态创建菜单 + /// private void CreateMenu() { - if (GlobalContext.User.TeamName == "刷单组") + if (GlobalContext.User.TeamName == "打包组" || GlobalContext.User.TeamName == "发货组" || GlobalContext.User.TeamName == "仓储部") { - App.Current.Dispatcher.Invoke(() => MenuList.Add(new MenuModel() + + App.Current.Dispatcher.Invoke(() => { + MenuList.Add(new MenuModel() + { + Name = "齐库", + ChildList = new List() + { + new MenuModel(){ Name="打包任务",Url="/Views/PackTask/WareHouseList.xaml" }, + new MenuModel(){ Name="耗材管理",Url="/Views/PackTask/Consumable.xaml" } + + } + }); + }); + } + else + { + + if (GlobalContext.User.TeamName == "刷单组") { - Name = "订单管理", - ChildList = new List() + App.Current.Dispatcher.Invoke(() => MenuList.Add(new MenuModel() + { + Name = "订单管理", + ChildList = new List() { new MenuModel(){ Name="刷单组",Url="/Views/Order/SDGroup.xaml" } } - })); - return; - } + })); + return; + } - App.Current.Dispatcher.Invoke(() => - { - MenuList.Add(new MenuModel() + App.Current.Dispatcher.Invoke(() => { - Name = "订单管理", - ChildList = new List() + MenuList.Add(new MenuModel() + { + Name = "订单管理", + ChildList = new List() { new MenuModel(){ Name="最近订单",Url="/Views/Order/OrderList.xaml" } } - }); - MenuList.Add(new MenuModel() - { - Name = "商品管理", - ChildList = new List() + }); + + + + + MenuList.Add(new MenuModel() { + Name = "商品管理", + + ChildList = new List() + { new MenuModel(){ Name="货源管理",Url="/Views/Ware/WareManager.xaml" }, new MenuModel(){ Name="产品库存",Url="/Views/Ware/WareStock.xaml" } + } + }); + MenuList.Add(new MenuModel() + { + Name = "齐库", + ChildList = new List() + { + new MenuModel(){ Name="发布任务",Url="/Views/PackTask/TaskList.xaml" }, + + } - }); - MenuList.Add(new MenuModel() - { - Name = "设置", - ChildList = new List() + }); + MenuList.Add(new MenuModel() + { + Name = "设置", + ChildList = new List() { new MenuModel(){ Name="店铺设置",Url="/Views/Setting/ShopSetting.xaml" }, new MenuModel(){ Name="团队配置",Url="/Views/Setting/TeamSetting.xaml" } } + }); }); - }); - if (managerDepartment.Contains(GlobalContext.User.TeamName) || managerDepartment.Any(m => GlobalContext.User.SonDepartmentNames.Contains(m))) - { - App.Current.Dispatcher.Invoke(() => MenuList.Add(new MenuModel() + if (managerDepartment.Contains(GlobalContext.User.TeamName) || managerDepartment.Any(m => GlobalContext.User.SonDepartmentNames.Contains(m))) { - Name = "财务端", - ChildList = new List() + App.Current.Dispatcher.Invoke(() => MenuList.Add(new MenuModel() + { + Name = "财务端", + ChildList = new List() { new MenuModel(){ Name="采购审计",Url="/Views/FinancialTerminal/ProcurementAudit.xaml" }, new MenuModel(){ Name="费用矫正",Url="/Views/BillCorrection/BillCorrectionView.xaml" } } - })); + })); + } + } + + + } private void Exit(System.ComponentModel.CancelEventArgs e) @@ -200,6 +241,12 @@ namespace BBWY.Client.ViewModels //if (GlobalContext.User.TeamName == "刷单组") // return; + + if (GlobalContext.User.TeamName == "打包组" || GlobalContext.User.TeamName == "发货组" || GlobalContext.User.TeamName == "仓储部") + { + return; + } + IList departmentList = null; if (GlobalContext.User.TeamName == "刷单组" || managerDepartment.Contains(GlobalContext.User.TeamName) || @@ -428,7 +475,7 @@ namespace BBWY.Client.ViewModels GlobalContext.ShopServiceGroupList.Add(waiter.Name); GlobalContext.ShopServiceGroupLowerList.Add(waiter.Name.ToLower()); } - + } } #endregion diff --git a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs index 882f7127..1a418503 100644 --- a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs +++ b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs @@ -235,7 +235,10 @@ namespace BBWY.Client.ViewModels OpenSkuDetailCommand = new RelayCommand(OpenSkuDetail); SearchOrderCommand.Execute(null); } - + /// + /// 初始化查询参数 + /// + /// private void InitSearchParam(bool isInitDate = false) { this.OrderState = null; @@ -278,9 +281,14 @@ namespace BBWY.Client.ViewModels OrderCount = 0; } + /// + /// 通过订单状态 筛选订单数据 + /// + /// 订单状态 public void SetOrderState(OrderState? orderState) { - InitSearchParam(orderState == null); + + InitSearchParam(orderState == null); //初始化查询参数 orderState == null 全部 this.OrderState = orderState; Task.Factory.StartNew(() => LoadOrder(1)); //选择状态查询订单 } @@ -375,6 +383,10 @@ namespace BBWY.Client.ViewModels } + /// + ///加载页面数据 + /// + /// private void LoadOrder(int pageIndex) { if (IncludeAfterOrder == true) @@ -425,6 +437,7 @@ namespace BBWY.Client.ViewModels var orderList = response.Data.Items.Map>(); App.Current.Dispatcher.Invoke(() => { + OrderList.Clear(); foreach (var order in orderList) { diff --git a/BBWY.Client/ViewModels/PackTask/ConsumableViewModel.cs b/BBWY.Client/ViewModels/PackTask/ConsumableViewModel.cs new file mode 100644 index 00000000..945d7cda --- /dev/null +++ b/BBWY.Client/ViewModels/PackTask/ConsumableViewModel.cs @@ -0,0 +1,144 @@ +using BBWY.Client.APIServices; +using BBWY.Client.Models.PackTask; +using BBWY.Client.Views.PackTask; +using BBWY.Common.Models; +using BBWY.Controls; +using GalaSoft.MvvmLight.Command; +using GalaSoft.MvvmLight.Messaging; +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.PackTask +{ + public class ConsumableViewModel : BaseVM, IDenpendency + { + + + + private bool isOpenAdd = true; + public bool IsOpenAdd { get => isOpenAdd; set { Set(ref isOpenAdd, value); } } + + + private int pageIndex = 1; + public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } } + + private int pageSize = 10; + public int PageSize { get => pageSize; set { Set(ref pageSize, value); } } + + private int orderCount;//总数量 + public int OrderCount { get => orderCount; set { Set(ref orderCount, value); } } + + private bool isLoading; + public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } + + private string searchName; + public string SearchName { get => searchName; set { Set(ref searchName, value); } } + + public ConsumableModel ConsumableModel { get => consumableModel; set { Set(ref consumableModel, value); } } + + private ConsumableModel consumableModel; + + + private ObservableCollection consumableList; + public ObservableCollection ConsumableList { get => consumableList; set { Set(ref consumableList, value); } } + + + public ICommand TaskPageIndexChangedCommand { get; set; } + public ICommand AddConsumableCommand { get; set; } + public ICommand SearchConsumableCommand { get; set; } + private readonly ConsumableService consumableService; + + + + + // public Action ReflashDatas { get; set; } + + public ConsumableViewModel(ConsumableService consumableService) + { + + + this.consumableService = consumableService; + ConsumableModel = new ConsumableModel(consumableService); + // ConsumableModel.ReflashDatas = ReflashDatas; + ConsumableList = new ObservableCollection(); + AddConsumableCommand = new RelayCommand(AddConsumable); + SearchConsumableCommand = new RelayCommand(SearchConsumable); + TaskPageIndexChangedCommand = new RelayCommand(p => + { + LoadIndex(p.PageIndex); + }); + } + private void LoadIndex(int pageIndex) + { + PageIndex = pageIndex;// + SearchConsumable(); + } + + + private void SearchConsumable() + { + Task.Factory.StartNew(() => + { + isLoading = true; + var res = consumableService.Search(new Models.APIModel.Request.ConsumableSearchRequest + { + Name = searchName, + PageIndex = PageIndex, + PageSize = PageSize, + }); + if (res.Success) + { + ConsumableList = new ObservableCollection(); + if (res.Data != null && res.Data.Consumables != null && res.Data.Consumables.Count() > 0) + { + OrderCount = res.Data.OrderCount; + foreach (var item in res.Data.Consumables) + { + App.Current.Dispatcher.Invoke(() => + { + ConsumableList.Add(new ConsumableModel(consumableService) + { + Heigth = item.Heigth, + Id = item.Id, + Name = item.Name, + Length = item.Length, + Price = item.Price, + Remark = item.Remark, + Weigth = item.Weigth, + Width = item.Width + + }); + }); + } + } + } + + isLoading = false; + }); + + + } + + private void AddConsumable() + { + //ConsumableModel = new ConsumableModel(consumableService); + //IsOpenAdd = true; + var model = new ConsumableModel(consumableService) { //ReflashDatas = ReflashDatas + }; + model.ReflashDatas = new Action(() => { + SearchConsumable(); + Messenger.Default.Send(true, "ReflashList"); + }); + + EditConsumable add = new EditConsumable(model); + add.ShowDialog(); + + } + } +} diff --git a/BBWY.Client/ViewModels/PackTask/CreatePackTaskViewModel.cs b/BBWY.Client/ViewModels/PackTask/CreatePackTaskViewModel.cs new file mode 100644 index 00000000..0a8c7add --- /dev/null +++ b/BBWY.Client/ViewModels/PackTask/CreatePackTaskViewModel.cs @@ -0,0 +1,756 @@ +using BBWY.Client.APIServices; +using BBWY.Client.Helpers; +using BBWY.Client.Models; +using BBWY.Client.Models.APIModel.Request; +using BBWY.Client.Models.PackTask; +using BBWY.Client.Views.PackTask; +using BBWY.Common.Models; +using BBWY.Common.Trigger; +using GalaSoft.MvvmLight.Command; +using NPOI.Util; +using Org.BouncyCastle.Asn1.Crmf; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; + +namespace BBWY.Client.ViewModels.PackTask +{ + public class CreatePackTaskViewModel : BaseVM, IDenpendency + { + private bool isLoading = false; + public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } + + private Worry isWorry; + /// + /// 是否加急 + /// + public Worry IsWorry { get => isWorry; set { Set(ref isWorry, value); } } + + + private DelayTrigger delayTrigger; + private string searchIncrementKeyWord; + /// + /// 增量耗材查询关键字 + /// + public string SearchIncrementKeyWord + { + get => searchIncrementKeyWord; set + { + if (Set(ref searchIncrementKeyWord, value)) + { + delayTrigger.SetKey(value); + } + + } + } + + private ObservableCollection increateList; + /// + /// 增量耗材查询关键字 + /// + public ObservableCollection IncreateList { get => increateList; set { Set(ref increateList, value); } } + + private string searchSkuId; + /// + /// skuId + /// + public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, value); } } + + /// + /// 店铺Sku图链接 + /// + private string logo; + /// + /// 店铺Sku图链接 + /// + public string Logo { get => logo; set { Set(ref logo, value); } } + + + + private string skuName; + /// + /// 采购Sku名称 + /// + public string SkuName { get => skuName; set { Set(ref skuName, value); } } + + + private long barCodeId; + /// + /// 条形码id + /// + public long BarCodeId { get => barCodeId; set { Set(ref barCodeId, value); } } + + private string brand; + /// + /// 品牌 + /// + public string Brand { get => brand; set { Set(ref brand, value); } } + + + private string brandName; + /// + /// 品名(手写上传) + /// + public string BrandName { get => brandName; set { Set(ref brandName, value); } } + + /// + /// 需求方店铺id + /// + private string shopName; + /// + /// 需求方店铺id + /// + public string ShopName { get => shopName; set { Set(ref shopName, value); } } + + + private string modelNo; + /// + /// 货号 + /// + public string ModelNo { get => modelNo; set { Set(ref modelNo, value); } } + /// + /// 货号 + /// + private string productNo; + /// + /// 货号 + /// + public string ProductNo { get => productNo; set { Set(ref productNo, value); } } + + private int goodsNumber; + /// + /// 配件数 + /// + public int GoodsNumber { get => goodsNumber; set { Set(ref goodsNumber, value); } } + + private DateTime endTime; + /// + /// 提交时间 + /// + public DateTime EndTime { get => endTime; set { Set(ref endTime, value); } } + + + private long taskId; + /// + /// 绑定数据 + /// + public long TaskId { get => taskId; set { Set(ref taskId, value); } } + + + private string departmentName; + /// + /// 部门名称 + /// + public string DepartmentName { get => departmentName; set { Set(ref departmentName, value); } } + + + private string acceptName; + /// + /// 对接人 + /// + public string AcceptName { get => acceptName; set { Set(ref acceptName, value); } } + + + private int skuCount; + /// + /// sku数量 + /// + public int SkuCount { get => skuCount; set { Set(ref skuCount, value); } } + + + private TaskState availability; + /// + /// 到货情况(待收货=0,部分收货=1,已到货=2) + /// + public TaskState Availability { get => availability; set { Set(ref availability, value); } } + + + + private int taskStatus; + /// + /// 任务状态(已完成=0,未完成=1) + /// + public int TaskStatus { get => taskStatus; set { Set(ref taskStatus, value); } } + + + private PackType packType; + /// + /// 打包类型(单件=0,多件=1) + /// + public PackType PackType { get => packType; set { Set(ref packType, value); } } + + private string skuTitle; + /// + /// sku配件商品名称 + /// + public string SkuTitle { get => skuTitle; set { Set(ref skuTitle, value); } } + + + private BasicPack basicPack; + /// + /// 基础包装(快递袋=0,纸箱=1,麻袋=2) + /// + public BasicPack BasicPack { get => basicPack; set { Set(ref basicPack, value); } } + + + + private Increment increment1; + /// + /// 增量1() + /// + public Increment Increment1 { get => increment1; set { Set(ref increment1, value); } } + + + private Increment increment2; + /// + /// 增量2() + /// + public Increment Increment2 { get => increment2; set { Set(ref increment2, value); } } + + + private PositionType positionType; + /// + /// 落仓(本地仓=0,齐越仓=1,京东仓=2) + /// + public PositionType PositionType { get => positionType; set { Set(ref positionType, value); } } + + private string isNeedBarCode; + /// + /// 是否需要合格证 + /// + public string IsNeedBarCode { get => isNeedBarCode; set { Set(ref isNeedBarCode, value); } } + + + private string isNeedCertificateModel; + /// + /// 是否需要条形码 + /// + public string IsNeedCertificateModel { get => isNeedCertificateModel; set { Set(ref isNeedCertificateModel, value); } } + + + + + private BarCodeModel barCodeModel; + /// + /// 条形码 + /// + public BarCodeModel BarCodeModel { get => barCodeModel; set { Set(ref barCodeModel, value); } } + + + private bool isSetBarCode; + /// + /// 设置显示(条形码) + /// + public bool IsSetBarCode { get => isSetBarCode; set { Set(ref isSetBarCode, value); } } + + private bool isSetCertificate; + /// + /// 设置显示(合格证) + /// + public bool IsSetCertificate { get => isSetCertificate; set { Set(ref isSetCertificate, value); } } + + + + + + private CertificateModel certificateModel; + /// + /// 合格证 + /// + public CertificateModel CertificateModel { get => certificateModel; set { Set(ref certificateModel, value); } } + + /// + /// 合格证位置(外部包装=0,产品包装=1) + /// + private CertificatePosition certificatePosition; + /// + /// 合格证位置(外部包装=0,产品包装=1) + /// + public CertificatePosition CertificatePosition { get => certificatePosition; set { Set(ref certificatePosition, value); } } + + /// + /// 注意事项(对接备注) + /// + private string markMessage; + /// + /// 注意事项(对接备注) + /// + public string MarkMessage { get => markMessage; set { Set(ref markMessage, value); } } + + /// + /// 服务收费 (单个任务id 消耗的总费用) + /// + private decimal feesMoney; + /// + /// 服务收费 (单个任务id 消耗的总费用) + /// + public decimal FeesMoney { get => feesMoney; set { Set(ref feesMoney, value); } } + + /// + /// 打包员 + /// + private string packUser; + /// + /// 打包员 + /// + public string PackUser { get => packUser; set { Set(ref packUser, value); } } + + private string printName; + /// + /// 选中的打印机名称 + /// + public string PrintName { get => printName; set { Set(ref printName, value); } } + + private List printNames; + /// + /// 选中的打印机名称 + /// + public List PrintNames { get => printNames; set { Set(ref printNames, value); } } + + private int printNums; + /// + /// 打印数 + /// + public int PrintNums { get => printNums; set { Set(ref printNums, value); } } + + + private readonly PackTaskService packTaskService; + private readonly GlobalContext globalContext; + private readonly ProductService productService; + + + private string AccepUserId = "";//对接人 + public ICommand SetBarCodeCommand { get; set; } + public ICommand SetCertificateCommand { get; set; } + public ICommand SearchSkuCommand { get; set; } + public ICommand CreateTaskCommand { get; set; } + public ICommand SaveCerCommand { get; set; } + public ICommand SaveBarCodeCommand { get; set; } + + public ICommand BarLabelCheckCommand { get; set; } + public ICommand CerLabelCheckCommand { get; set; } + + public ICommand LookBarCommand { get; set; } + public ICommand LookCerCommand { get; set; } + + + + public CreatePackTaskViewModel(PackTaskService packTaskService, GlobalContext globalContext, ProductService productService) + { + this.productService = productService; + this.packTaskService = packTaskService; + + AccepUserId = globalContext.User.Id.ToString(); + + IsSetBarCode = true; + IsSetCertificate = true; + //数据库获取增量耗材数据 + + string[] increates = new string[] { "气泡纸", "气泡袋", "POP袋", "折纸箱", "气泡纸封边", "彩盒", "剪胶", "剪彩带", "快递袋", "收纳盒", "纸箱子", "装纸箱", "封边", "胶带", "折彩盒" }; + IncreateList = new ObservableCollection(); + foreach (var item in increates) + { + IncreateList.Add(new IncreateModel + { + IncreateName = item, + IsSelected = false + }); + } + + + + + //查询sku + SearchSkuCommand = new RelayCommand(SearchSku); + CreateTaskCommand = new RelayCommand(CreateTask); + this.globalContext = globalContext; + SetBarCodeCommand = new RelayCommand(SetBarCode); + SetCertificateCommand = new RelayCommand(SetCertificate); + SaveBarCodeCommand = new RelayCommand(SaveBarCode); + + SaveCerCommand = new RelayCommand(SaveCer); + BarLabelCheckCommand = new RelayCommand(BarLabelCheck); + CerLabelCheckCommand = new RelayCommand(CerLabelCheck); + + LookBarCommand = new RelayCommand(LookBar); + LookCerCommand = new RelayCommand(LookCer); + PrintNames = new List(); + delayTrigger = new DelayTrigger(500); + delayTrigger.OnExecute = OnSearchIncreateKeyWordChanged; + BarLabelCheck(BarcodeLabelModel.barsimplify);//默认精简模式 + } + + + + private void OnSearchIncreateKeyWordChanged(string key) + { + foreach (var s in this.IncreateList) + s.IsSelected = false; + + App.Current.Dispatcher.Invoke(() => + { + this.IncreateList.Clear(); + + + string[] increates = new string[] { "气泡纸", "气泡袋", "POP袋", "折纸箱", "气泡纸封边", "彩盒", "剪胶", "剪彩带", "快递袋", "收纳盒", "纸箱子", "装纸箱", "封边", "胶带", "折彩盒" }; + List keyWordShopList = new List(); + foreach (var item in increates) + { + keyWordShopList.Add(new IncreateModel + { + IncreateName = item, + IsSelected = false + }); + } + if (!string.IsNullOrEmpty(key.Trim())) + { + keyWordShopList = keyWordShopList.Where(s => s.IncreateName.Contains(key)).ToList(); + + } + if (keyWordShopList.Count() > 0) + { + foreach (var shop in keyWordShopList) + IncreateList.Add(shop); + } + + }); + } + + /// + /// 查看合格证 + /// + private void LookCer() + { + LookCerWindow lookCerWindow = new LookCerWindow(CertificateModel); + lookCerWindow.Show(); + } + /// + /// 查看条形码 + /// + private void LookBar() + { + LookBarCodeWindow look = new LookBarCodeWindow(new BarCodeModel + { + Brand = Brand, + BrandName = BrandName, + LabelModel = LabelModel, + ProductNo = ProductNo, + SkuId = SkuId, + SkuName = SkuName + }); + look.Show(); + } + + private void CerLabelCheck(CerHave3C cer) + { + CertificateModel.IsLogo = (int)cer; + } + /// + /// + /// + /// + /// + private void BarLabelCheck(BarcodeLabelModel barcodeLabelModel) + { + LabelModel = barcodeLabelModel; + + if (LabelModel == BarcodeLabelModel.barstander)//标准版 判断数据是否异常 + { + if (string.IsNullOrEmpty(ProductNo) || ProductNo == "待填写") + { + TipsWindow tips = new TipsWindow("该SKU无货号信息,将影响条形码打印\r\n请先设置好货号信息或调整打印模板类型"); + tips.ShowDialog(); + } + } + + //throw new NotImplementedException(); + } + + /// + /// 设置合格证 + /// + private void SetCertificate() + { + if (CertificateModel == null) + { + new TipsWindow("请先查询Sku数据").ShowDialog(); + return; + } + CertificateModel.BrandName = BrandName; + setCerWindow = new SetCerWindow(); + setCerWindow.ShowDialog(); + //throw new NotImplementedException(); + } + /// + /// 保存合格证 + /// + private void SaveCer() + { + if (string.IsNullOrEmpty(CertificateModel.ExcuteStander) || string.IsNullOrEmpty(CertificateModel.ProductNo) + || string.IsNullOrEmpty(CertificateModel.Shader) || string.IsNullOrEmpty(CertificateModel.BrandName) + || string.IsNullOrEmpty(CertificateModel.Brand) || string.IsNullOrEmpty(CertificateModel.ProductShop) + || string.IsNullOrEmpty(CertificateModel.ProductAdress)) + { + new TipsWindow("参数出错!请重新填写!").ShowDialog(); + return; + } + var standers = CertificateModel.ExcuteStander.Split(',', StringSplitOptions.RemoveEmptyEntries); + CertificateLabelModel labelModel = CertificateLabelModel.CerStanderSingle; + bool IsTwo = false; + + if (standers.Count() > 2) + { + IsTwo = true; + } + + switch (CertificateModel.IsLogo) + { + case 0://没图 + if (IsTwo) + { + labelModel = CertificateLabelModel.CerStanderDouble; break; + } + labelModel = CertificateLabelModel.CerStanderSingle; + break; + case 1://含3c图 + if (IsTwo) + { + labelModel = CertificateLabelModel.Cer3CDouble; break; + } + labelModel = CertificateLabelModel.Cer3CSingle; + break; + default: + break; + } + CertificateModel.LabelModel = labelModel; + var resData = packTaskService.SaveCer(new CerRequest + { + Brand = CertificateModel.Brand, + BrandName = CertificateModel.BrandName, + ProductNo = CertificateModel.ProductNo, + SkuId = CertificateModel.SkuId, + ExcuteStander = CertificateModel.ExcuteStander, + LabelModel = (int)CertificateModel.LabelModel, + FactoryNumber = CertificateModel.FactoryNumber, + IsLogo = CertificateModel.IsLogo, + ProductAdress = CertificateModel.ProductAdress, + ProductShop = CertificateModel.ProductShop, + Shader = CertificateModel.Shader + + + }); + if (resData == null || !resData.Success) + { + IsSetCertificate = false; + return; + } + CertificateModel.Id = resData.Data; + IsSetCertificate = false; + setCerWindow.Close(); + } + + SetBarCodeWindow setBarCodeWindow = null; SetCerWindow setCerWindow = null; + private void SetBarCode() + { + + if (BarCodeModel == null) + { + new TipsWindow("请先查询sku数据").ShowDialog(); + return; + } + BarCodeModel.BrandName = BrandName; + setBarCodeWindow = new SetBarCodeWindow(); + + setBarCodeWindow.ShowDialog(); + } + + public BarcodeLabelModel LabelModel = BarcodeLabelModel.barsimplify; + + private void SaveBarCode() + { + //保存到服务器中 返回id + var resData = packTaskService.SaveBarCode(new BarCodeRequest + { + Brand = Brand, + BrandName = BrandName, + ProductNo = ProductNo, + SkuId = SkuId, + SkuName = SkuName, + LabelModel = LabelModel + + }); + if (resData == null || !resData.Success) + { + IsSetBarCode = false; + return; + } + BarCodeId = resData.Data; + BarCodeModel.Id = BarCodeId; + IsSetBarCode = false; + setBarCodeWindow.Close(); + } + + public string SkuId { get; set; } + + + + /// + /// 发布任务 + /// + public void CreateTask( object obj) + { + + + if (string.IsNullOrEmpty( SkuId)) + { + new TipsWindow("请先搜索SkuId!").ShowDialog(); + return; + } + string increateStr = ""; + var increates =IncreateList.Where(i => i.IsSelected).Select(i => i.IncreateName); + if (increates!=null&& increates.Count()>0) + { + increateStr = string.Join(",", increates); + } + + + var createTaskModel = new Models.APIModel.Request.CreateTaskRequest + { + BrandName = BrandName, + Availability = (int)Availability, + BasicPack = (int)BasicPack, + SkuId = SkuId, + CreateTime = DateTime.Now, + Increment1 = increateStr, + Increment2 = (int)Increment2, + CertificatePosition = (int)CertificatePosition, + PackType = (int)PackType, + MarkMessage = markMessage, + PositionType = (int)PositionType, + GoodsNumber = GoodsNumber, + SkuGoodsTitle = SkuTitle, + SkuCount = SkuCount, + UserId = AccepUserId, + ShopId = globalContext.User.Shop.ShopId.ToString(), + IsWorry = IsWorry + }; + if (IsNeedBarCode == "需要") + { + if (BarCodeModel==null|| BarCodeModel.Id <= 0) + { + new TipsWindow("请设置条形码模板").ShowDialog(); + return; + } + createTaskModel.BarCodeId = BarCodeId; + } + if (IsNeedCertificateModel == "需要") + { + if (CertificateModel==null|| CertificateModel.Id <= 0) + { + new TipsWindow("请设置合格证模板").ShowDialog(); + return; + } + createTaskModel.CertificateId = CertificateModel.Id;// + } + + var res = packTaskService.CreateTask(createTaskModel); + if (res.Success) + { + // Application.Current.Shutdown(0); + new TipsWindow("发布成功").ShowDialog(); + var win = obj as System.Windows.Window; + win.Close(); + + + + //MessageBox.Success("发布成功"); + } + } + + + /// + /// 搜索 skuId + /// + public void SearchSku() + { + IsLoading = true; + SkuId = searchSkuId; + ApiResponse productApiResponse = null; + var skuResponse = productService.GetProductSkuList(string.Empty, SkuId); + if (skuResponse.Success) + { + if (skuResponse.Data.Count == 0) + { + IsLoading = false; + return; + } + Logo = skuResponse.Data[0].Logo; + SkuName = skuResponse.Data[0].Title; + // ProductNo = skuResponse.Data[0].ProductItemNum; + + + + productApiResponse = productService.GetProductList(skuResponse.Data[0].ProductId, string.Empty, string.Empty, 1); + + if (productApiResponse.Success) + { + if (productApiResponse.Data.Count == 0) + { + IsLoading = false; + return; + } + + ProductNo = productApiResponse.Data.Items[0].ProductItemNum; + Brand = productApiResponse.Data.Items[0].BrandName; + + } + var productSku = packTaskService.GetProductSku(searchSkuId); + if (productSku == null || !productSku.Success) + { + IsLoading = false; + return; + } + BrandName = productSku.Data.BrandName; + + IsSetCertificate = true; + CertificateModel = productSku.Data.Certificate; + if (CertificateModel == null) + { + CertificateModel = new CertificateModel(); + + } + CertificateModel.Brand = Brand; + CertificateModel.BrandName = BrandName; + CertificateModel.ProductNo = ProductNo; + CertificateModel.SkuId = SkuId; + BarCodeModel = productSku.Data.BarCodeModel; + if (BarCodeModel == null) + { + BarCodeModel = new BarCodeModel(); + } + BarCodeModel.Brand = Brand; + BarCodeModel.BrandName = BrandName; + BarCodeModel.ProductNo = ProductNo; + BarCodeModel.SkuId = SkuId; + BarCodeModel.SkuName = SkuName; + IsSetBarCode = true; + } + else + { + IsLoading = false; + App.Current.Dispatcher.Invoke(() => MessageBox.Show(skuResponse.Msg, "加载sku")); + return; + } + + IsLoading = false; + //查看有木有存在 + } + + } +} diff --git a/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs b/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs new file mode 100644 index 00000000..847b2ad7 --- /dev/null +++ b/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs @@ -0,0 +1,587 @@ +using AutoMapper; +using AutoMapper.Internal; +using BBWY.Client.APIServices; +using BBWY.Client.Models; +using BBWY.Client.Models.APIModel.Request; +using BBWY.Client.Models.APIModel.Response.PackTask; +using BBWY.Client.Models.PackTask; +using BBWY.Client.Views.PackTask; +using BBWY.Common.Models; +using GalaSoft.MvvmLight.Command; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection.Metadata.Ecma335; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; + +namespace BBWY.Client.ViewModels.PackTask +{ + public class PackServiceViewModel : BaseVM, IDenpendency + { + + + + + public ICommand AddPackServiceCommand { get; set; } + + public ICommand AddIncreateServiceCommand { get; set; } + + public ICommand AddConsumableCommand { get; set; } + + public ICommand UpLoadPackCommand { get; set; } + + public ICommand SetAllCountCommand { get; set; } + + + PackTaskService packTaskService; + ConsumableService consumableService; + + public ObservableCollection IncreateList { get; set; } = new ObservableCollection(); + + public ObservableCollection PackList { get; set; } = new ObservableCollection(); + + + public ObservableCollection ConsumableServiceList { get; set; } = new ObservableCollection(); + + + //private ObservableCollection increateServiceList = new ObservableCollection(); + public ObservableCollection IncreateServiceList { get; set; } = new ObservableCollection(); + public ObservableCollection MemberList { get; set; } = new ObservableCollection(); + + public ObservableCollection ConsumableList { get; set; } = new ObservableCollection(); + public ObservableCollection PackServiceList { get; set; } = new ObservableCollection(); + + + + IncreateServiceService increateService; + public PackServiceViewModel(PackTaskService packTaskService, ConsumableService consumableService, WorkProcessService workProcessService, IncreateServiceService increateService, long taskId) + { + TaskId = taskId; + this.consumableService = consumableService; + this.packTaskService = packTaskService; + this.workProcessService = workProcessService; + this.increateService = increateService; + + + + + + var increateRes = increateService.SearchAll(); + if (increateRes.Success) + { + if (increateRes.Data != null && increateRes.Data.Count() > 0) + { + foreach (var workProcess in increateRes.Data) + { + App.Current.Dispatcher.Invoke(() => + { + IncreateServiceList.Add(workProcess);//加载增值服务列表 + }); + + } + } + } + var result = workProcessService.SearchAll(); + if (result.Success) + { + if (result.Data != null && result.Data.Count() > 0) + { + foreach (var workProcess in result.Data) + { + App.Current.Dispatcher.Invoke(() => + { + PackServiceList.Add(workProcess);//加载工序服务列表 + }); + + } + } + } + var res = packTaskService.GetPackMembers(); + if (res.Success) + { + foreach (var item in res.Data) + { + App.Current.Dispatcher.Invoke(() => + { + MemberList.Add(item); + }); + + } + + } + var conRes = this.consumableService.SearchAll(); + if (conRes.Success) + { + foreach (var item in conRes.Data) + { + App.Current.Dispatcher.Invoke(() => + { + + ConsumableList.Add(new ConsumableModel(consumableService) + { + Width = item.Width, + Weigth = item.Weigth, + Remark = item.Remark, + Price = item.Price, + Name = item.Name, + Length = item.Length, + Heigth = item.Heigth, + Id = item.Id + + }); + }); + } + + } + + + AddIncreateServiceCommand = new RelayCommand(AddIncreateService); + AddPackServiceCommand = new RelayCommand(AddPackService); + AddConsumableCommand = new RelayCommand(AddConsumable); + UpLoadPackCommand = new RelayCommand(UpLoadPack); + SetAllCountCommand = new RelayCommand(SetAllCount); + //加载数据 + + + + Task.Factory.StartNew(() => + { + var res = packTaskService.GetTaskService(TaskId); + if (res.Success) + { + if (res.Data.IncreateList != null) + { + foreach (var item in res.Data.IncreateList) + { + App.Current.Dispatcher.Invoke(() => + { + IncreateList.Add(new PackItemModel(IncreateServiceList, MemberList) + { + ItemCount = item.ItemCount, + ItemName = item.ItemName, + SelectId = item.SelectId, + SelectUserId = item.SelectUserId, + MemberName = item.MemberName + + }); + }); + } + } + if (res.Data.PackList != null) + { + foreach (var item in res.Data.PackList) + { + App.Current.Dispatcher.Invoke(() => + { + PackList.Add(new PackItemModel(null, MemberList, null, PackServiceList) + { + ItemCount = item.ItemCount, + ItemName = item.ItemName, + SelectId = item.SelectId, + SelectUserId = item.SelectUserId, + MemberName = item.MemberName + + }); + }); + } + } + if (res.Data.ConsumableServiceList != null) + { + foreach (var item in res.Data.ConsumableServiceList) + { + App.Current.Dispatcher.Invoke(() => + { + ConsumableServiceList.Add(new PackItemModel(null, MemberList, ConsumableList) + { + ItemCount = item.ItemCount, + ItemName = item.ItemName, + SelectId = item.SelectId, + // SelectUserId = item.SelectUserId, + //MemberName = item.MemberName + + }); + }); + } + } + } + + }); + + + + + } + /// + /// 批量设置耗材数据 + /// + /// + private void SetAllCount(object obj) + { + + SetCountWindow set = new SetCountWindow(); + set.SetCount = new Action((s) => + { + var lbox = obj as ListBox; + var serviceList = lbox.ItemsSource as ObservableCollection; + foreach (var item in serviceList) + { + if (item.ItemName == null) + { + item.ItemName = ConsumableList.SingleOrDefault(c => c.Id == item.SelectId).Name; + } + + item.ItemCount = s; + } + lbox.ItemsSource = serviceList; + + }); + set.Show(); + + + + } + + private long taskId; + public long TaskId { get => taskId; set { Set(ref taskId, value); } } // + + + private int taskCount; + public int TaskCount { get => taskCount; set { Set(ref taskCount, value); } } // + + private string selectBox; + /// + /// 箱子类型 + /// + public string SelectBox { get => selectBox; set { Set(ref selectBox, value); } } + + + private int boxCount; + /// + /// 箱子数 + /// + public int BoxCount { get => boxCount; set { Set(ref boxCount, value); } } + private int airPaperWidth; + /// + /// 气泡宽 + /// + public int AirPaperWidth { get => airPaperWidth; set { Set(ref airPaperWidth, value); } } + + private decimal airPaperHeigth; + /// + /// 气泡长 + /// + public decimal AirPaperHeigth { get => airPaperHeigth; set { Set(ref airPaperHeigth, value); } } + + private string selectMemberId; + public string SelectMemberId { get => selectMemberId; set { Set(ref selectMemberId, value); } } + + private decimal jiaoDai; + public decimal JiaoDai { get => jiaoDai; set { Set(ref jiaoDai, value); } } + + /// + /// 上传数据 (判断是否超量) 统一上传 + /// + private void UpLoadPack(object obj) + { + UploadServiceRequest uploadService = new UploadServiceRequest(); + uploadService.TaskId = TaskId; + List increateMembers = new List(); + List processMembers = new List(); + // List consumableTasks = new List(); + + List PersonTaskModels = new List(); + + List allIncreateMembers = new List();//所有数据数量不能超过总数据 + List allProcessMembers = new List(); + List allConsumableTasks = new List(); + FeesItemResponse feesItem = new FeesItemResponse(); ; + + //获取打包人员 + List packUsers = new List(); + + decimal singleFees = 0; + decimal AllFees = 0; + decimal price = 0; + foreach (var item in IncreateList)//增值服务上传 + { + if (item.SelectId <= 0 || string.IsNullOrEmpty(item.SelectUserId) || item.ItemCount <= 0) + { + new TipsWindow($"数据输入有误").Show(); + return; + } + var member = MemberList.SingleOrDefault(m => m.Id == item.SelectUserId); + if (member != null && !packUsers.Contains(member.UserName)) + { + packUsers.Add(member.UserName); + } + + if (item.ItemCount > TaskCount) + { + new TipsWindow($"{item.ItemName}:{item.ItemCount}超出任务量{TaskCount}").Show(); + return; + } + price = IncreateServiceList.First(i => i.Id == item.SelectId).ServicePrice; + singleFees += price; + AllFees += item.ItemCount * price; + + + + + if (allIncreateMembers.Select(a => a.IncreateId).Contains(item.SelectId))//相同服务 存在累加 + { + var inMembers = increateMembers.SingleOrDefault(a => a.UserId == item.SelectUserId && a.IncreateId == item.SelectId); + if (inMembers != null) + inMembers.IncreateCount += item.ItemCount; + + + + var data = allIncreateMembers.SingleOrDefault(a => a.IncreateId == item.SelectId); + var feeItem = feesItem.ServiceList.SingleOrDefault(f => f.ItemName == item.ItemName); + if (data != null) data.IncreateCount += item.ItemCount; + if (feeItem != null) feeItem.ItemCount += item.ItemCount; + if (data.IncreateCount > TaskCount)//累积超出任务量 + { + new TipsWindow($"{item.ItemName}:{data.IncreateCount}超出任务量{TaskCount}").Show(); + return; + } + + continue; + } + + increateMembers.Add(new IncreateMemberModel + { + UserId = item.SelectUserId, + IncreateCount = item.ItemCount, + IncreateId = item.SelectId, + Price = price + }); + + + feesItem.ServiceList.Add(new ServiceItemResponse + { + ServiceType = ServiceType.增值服务, + ItemCount = item.ItemCount, + ItemName = item.ItemName, + ItemPrice = price + }); + allIncreateMembers.Add(new IncreateMemberModel + { + UserId = item.SelectUserId, + IncreateCount = item.ItemCount, + IncreateId = item.SelectId + }); + } + + foreach (var item in PackList)//打包服务 + { + if (item.SelectId <= 0 || string.IsNullOrEmpty(item.SelectUserId) || item.ItemCount <= 0) + { + new TipsWindow($"数据输入有误").Show(); + return; + } + if (item.ItemCount > TaskCount) + { + new TipsWindow($"{item.ItemName}:{item.ItemCount}超出任务量{TaskCount}").Show(); + return; + } + var member = MemberList.SingleOrDefault(m => m.Id == item.SelectUserId); + if (member != null && !packUsers.Contains(member.UserName)) + { + packUsers.Add(member.UserName); + } + + + price = PackServiceList.First(i => i.Id == item.SelectId).ProcessPrice; + singleFees += price; + AllFees += item.ItemCount * price; + + if (allProcessMembers.Select(a => a.ProcessId).Contains(item.SelectId))//存在累加 + { + var inMembers = processMembers.SingleOrDefault(a => a.UserId == item.SelectUserId && a.ProcessId == item.SelectId); + if (inMembers != null) + inMembers.ProcessCount += item.ItemCount; + + + var data = allProcessMembers.SingleOrDefault(a => a.ProcessId == item.SelectId); + var feeItem = feesItem.ServiceList.SingleOrDefault(f => f.ItemName == item.ItemName); + feeItem.ItemCount += item.ItemCount; + data.ProcessCount += item.ItemCount; + if (data.ProcessCount > TaskCount)//累积超出任务量 + { + new TipsWindow($"{item.ItemName}:{data.ProcessCount}超出任务量{TaskCount}").Show(); + return; + } + continue; + } + processMembers.Add(new ProcessMemberModel + { + UserId = item.SelectUserId, + ProcessCount = item.ItemCount, + ProcessId = item.SelectId, + Price = price + }); + feesItem.ServiceList.Add(new ServiceItemResponse + { + ServiceType = ServiceType.打包服务, + ItemCount = item.ItemCount, + ItemName = item.ItemName, + ItemPrice = price + }); + allProcessMembers.Add(new ProcessMemberModel + { + UserId = item.SelectUserId, + ProcessCount = item.ItemCount, + ProcessId = item.SelectId + }); + + + } + + foreach (var item in ConsumableServiceList) + { + if (item.SelectId <= 0 || item.ItemCount <= 0) + { + new TipsWindow($"数据输入有误").Show(); + return; + } + if (item.ItemCount > TaskCount) + { + new TipsWindow($"{item.ItemName}:{item.ItemCount}超出任务量{TaskCount}").Show(); + return; + } + price = ConsumableList.First(i => i.Id == item.SelectId).Price.Value; + singleFees += price; + AllFees += item.ItemCount * price; + if (allConsumableTasks.Select(a => a.ConsumableId).Contains(item.SelectId))//存在累加 + { + var data = allConsumableTasks.SingleOrDefault(a => a.ConsumableId == item.SelectId); + var feeItem = feesItem.ServiceList.SingleOrDefault(f => f.ItemName == item.ItemName); + feeItem.ItemCount += item.ItemCount; + data.ConsumableCount += item.ItemCount; + if (data.ConsumableCount > TaskCount)//累积超出任务量 + { + new TipsWindow($"{item.ItemName}:{data.ConsumableCount}超出任务量{TaskCount}").Show(); + return; + } + continue; + } + feesItem.ServiceList.Add(new ServiceItemResponse + { + ServiceType = ServiceType.耗材服务, + ItemCount = item.ItemCount, + ItemName = item.ItemName, + ItemPrice = price + }); + allConsumableTasks.Add(new ConsumableTaskModel + { + ConsumableCount = item.ItemCount, + ConsumableId = item.SelectId + }); + } + uploadService.ConsumableIds = string.Join(",", allConsumableTasks.Select(a => a.ConsumableId)); + uploadService.ConsumableNos = string.Join(",", allConsumableTasks.Select(a => a.ConsumableCount)); + uploadService.WorkProcessIds = string.Join(",", allProcessMembers.Select(a => a.ProcessId)); + uploadService.WorkProcessNos = string.Join(",", allProcessMembers.Select(a => a.ProcessCount)); + uploadService.IncreateServiceIds = string.Join(",", allIncreateMembers.Select(a => a.IncreateId)); + uploadService.IncreateServiceNos = string.Join(",", allIncreateMembers.Select(a => a.IncreateCount)); + + //List increateMembers = new List(); + //List processMembers = new List(); + foreach (var item in increateMembers) + { + var allFees = item.Price * item.IncreateCount; + var person = PersonTaskModels.SingleOrDefault(p => p.PackUserId == item.UserId); + if (person != null) + { + person.AllFees += allFees; + person.IncreateServiceIds += $",{item.IncreateId}"; + person.IncreateServiceNos += $",{item.IncreateCount}"; + continue; + } + + var inMember = new PersonTaskModel(); + inMember.IncreateServiceIds = item.IncreateId.ToString(); + inMember.IncreateServiceNos = item.IncreateCount.ToString(); + inMember.AllFees += allFees; + inMember.TaskId = TaskId; inMember.PackUserId = item.UserId; + + PersonTaskModels.Add(inMember); + + + } + foreach (var item in processMembers) + { + var allFees = item.Price * item.ProcessCount; + var person = PersonTaskModels.SingleOrDefault(p => p.PackUserId == item.UserId); + if (person != null) + { + person.AllFees += allFees; + if (string.IsNullOrEmpty(person.WorkProcessIds)) + { + person.WorkProcessIds += $"{item.ProcessId}"; + person.WorkProcessNos += $"{item.ProcessCount}"; + continue; + } + + + person.WorkProcessIds += $",{item.ProcessId}"; + person.WorkProcessNos += $",{item.ProcessCount}"; + + continue; + } + + var inMember = new PersonTaskModel(); + inMember.WorkProcessNos = item.ProcessCount.ToString(); + inMember.WorkProcessIds = item.ProcessId.ToString(); + inMember.AllFees += allFees; + inMember.TaskId = TaskId; inMember.PackUserId = item.UserId; + PersonTaskModels.Add(inMember); + + + } + uploadService.PersonTaskModels = PersonTaskModels.ToArray(); + + uploadService.AllFees = AllFees; + uploadService.SingleFees = singleFees; + var res = packTaskService.UploadService(uploadService); + if (res != null && res.Success) + { + new TipsWindow("上传成功!").Show(); + var win = obj as System.Windows.Window; + feesItem.AllFees = AllFees; + feesItem.SingleFees = singleFees; + feesItem.TaskId = TaskId; + + + SetAllFees(feesItem, packUsers); + + win.Close(); + } + + } + /// + /// 更新 打包员 和费用数据 + /// + public Action> SetAllFees { get; set; } + + private void AddPackService() + { + PackList.Add(new PackItemModel(null, MemberList, null, PackServiceList)); + } + WorkProcessService workProcessService; + private void AddIncreateService() + { + IncreateList.Add(new PackItemModel(IncreateServiceList, MemberList)); + } + + private void AddConsumable() + { + ConsumableServiceList.Add(new PackItemModel(null, null, ConsumableList)); + } + } +} diff --git a/BBWY.Client/ViewModels/PackTask/SetBarCodeViewModel.cs b/BBWY.Client/ViewModels/PackTask/SetBarCodeViewModel.cs new file mode 100644 index 00000000..62ad3402 --- /dev/null +++ b/BBWY.Client/ViewModels/PackTask/SetBarCodeViewModel.cs @@ -0,0 +1,26 @@ +using BBWY.Client.Models; +using BBWY.Common.Models; +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.ViewModels.PackTask +{ + public class SetBarCodeViewModel : BaseVM, IDenpendency + { + public SetBarCodeViewModel(BarCodeModel model) + { + + BarCodeModel = model; + } + + + + + private BarCodeModel barCodeModel; + /// + /// 绑定数据 + /// + public BarCodeModel BarCodeModel { get => barCodeModel; set { Set(ref barCodeModel, value); } } + } +} diff --git a/BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs b/BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs index 86dd33e5..5f8bec42 100644 --- a/BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs @@ -16,1365 +16,397 @@ using System.Threading; using System.Windows.Input; using System.Windows; using BBWY.Common.Extensions; +using System.Threading.Tasks; +using BBWY.Client.Views.PackTask; +using HandyControl.Tools.Extension; +using Newtonsoft.Json; +using BBWY.Client.Models.APIModel.Response.PackTask; +using BBWY.Client.Models.PackTask; namespace BBWY.Client.ViewModels.PackTask { - - public partial class TaskListViewModel : BaseVM, IDenpendency + /// + /// + /// + public partial class TaskListViewModel : BaseVM, IDenpendency//注入服务 { - private OrderService orderService; - private StatisticsService statisticsService; - private AfterOrderService afterOrderService; - private ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel; - private DongDongHelper dongdongHelper; - private bool isLoading; - - private string searchOrderId; - private DateTime startDate; - private DateTime endDate; - private int pageIndex = 1; - private int pageSize = 10; - private int orderCount; - private OrderState? orderState; - private string searchSku; - private string searchProductId; - private string searchProductNo; - private string searchContactName; - private string searchWaybill; - private bool onlyDF; - private bool excludeSD; - private bool excludeCanceled; - private bool onlyUnhandle; - private Random random; - public GlobalContext globalContext { get; set; } - private bool? includeAfterOrder; - private bool includeExceptionOrder; - //private decimal currentConditionsTotalProfit; - private string searchServiceId; - private long waitPurchaseOrderCount; - private long exceptionOrderCount; - private long waitOutStoreCount; - private long afterSaleOrderUnhandleCount; - - private long? queryShopId; - private string querySDOperator; - private bool isSDGroup; - - - - - - - - /// - /// 需求方创建日期 - /// - private DateTime createTime; + #region 属性绑定 /// - /// 任务状态(已完成=0,未完成=1) + /// 查询时间段 /// - private int taskStatus; + private DateTime startTime; + public DateTime StartTime { get => startTime; set { Set(ref startTime, value); } } - /// - /// 项目完成时间 - /// private DateTime endTime; + public DateTime EndTime { get => endTime; set { Set(ref endTime, value); } } /// - /// 需求方团队id - /// - private string departmentId; - - /// - /// 需求方店铺id - /// - private string shopId; - - /// - /// 货号品名(手写上传) + /// 查询任务id /// - private string brandName; - - /// - /// 对接人 - /// - private string userId; - - /// - /// skuid - /// - private string skuId; - - /// - /// 采购Sku名称 - /// - private string skuName; - - /// - /// sku数量 - /// - private int skuCount; - - /// - /// 店铺Sku图链接 - /// - private string shopSkuImage; - - /// - /// 打包类型(单件=0,多件=1) - /// - private int packType; - - /// - /// 落仓(本地仓=0,齐越仓=1,京东仓=2) - /// - private int positionType; - - /// - /// 基础包装(快递袋=0,纸箱=1,麻袋=2) - /// - private int basicPack; - - /// - /// 增量1() - /// - private int increment1; - - /// - /// 增量2() - /// - private int increment2; - - /// - /// 工序道数 - /// - private int processCount; - - /// - /// 到货情况(待收货=0,部分收货=1,已到货=2) - /// - private int availability; - - /// - /// 条形码id - /// - private long barcodeId; - - /// - /// 合格证 - /// - private long certificateId; - - /// - /// 合格证位置(外部包装=0,产品包装=1) - /// - private int certificatePosition; - - /// - /// 箱子耗材(自带=0,4-13号纸箱=1-10,) - /// - private int boxConsumables; - - /// - /// 配件数 - /// - private int goodsNumber; - - /// - /// 气泡纸耗材(长=0,宽=1) - /// - private int airConsumables; - - /// - /// 注意事项(对接备注) - /// - private string markMessage; - - - - - - - - /// - /// 主键 - /// - public long Id { get; set; } - - /// - /// 需求方创建日期 - /// - public DateTime Createtime { get; set; } - - /// - /// 任务状态(已完成=0,未完成=1) - /// - public int Taskstatus { get; set; } - - /// - /// 项目完成时间 - /// - public DateTime Endtime { get; set; } - - /// - /// 需求方团队id - /// - public string Departmentid { get; set; } - - /// - /// 需求方店铺id - /// - public string Shopid { get; set; } - - /// - /// 货号品名(手写上传) - /// - public string Brandname { get; set; } - - /// - /// 对接人 - /// - public string Userid { get; set; } - - /// - /// skuid - /// - public string Skuid { get; set; } - - /// - /// 采购Sku名称 - /// - public string Skuname { get; set; } - - /// - /// sku数量 - /// - public int Skucount { get; set; } - - /// - /// 店铺Sku图链接 - /// - public string Shopskuimage { get; set; } - - /// - /// 打包类型(单件=0,多件=1) - /// - public int Packtype { get; set; } - - /// - /// 落仓(本地仓=0,齐越仓=1,京东仓=2) - /// - public int Positiontype { get; set; } - - /// - /// 基础包装(快递袋=0,纸箱=1,麻袋=2) - /// - public int Basicpack { get; set; } - - /// - /// 增量1() - /// - public int Increment1 { get; set; } + private string searchTaskId; + public string SearchTaskId + { + get => searchTaskId; set + { + Set(ref searchTaskId, value); + } + } /// - /// 增量2() + /// 查询Sku /// - public int Increment2 { get; set; } + private string searchSkuId; + public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, value); } } + public TaskState? taskState; /// - /// 工序道数 + /// 任务状态 /// - public int Processcount { get; set; } + public TaskState? TaskState + { + get => taskState; private set + { + Set(ref taskState, value); + } + } - /// - /// 到货情况(待收货=0,部分收货=1,已到货=2) - /// - public int Availability { get; set; } + private int pageIndex = 1; + private int pageSize = 10; - /// - /// 条形码id - /// - public long Barcodeid { get; set; } + public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } } - /// - /// 合格证 - /// - public long Certificateid { get; set; } + public int PageSize { get => pageSize; set { Set(ref pageSize, value); } } + private int orderCount;//总数量 + public int OrderCount { get => orderCount; set { Set(ref orderCount, value); } } - /// - /// 合格证位置(外部包装=0,产品包装=1) - /// - public int Certificateposition { get; set; } /// - /// 箱子耗材(自带=0,4-13号纸箱=1-10,) + /// 未到货数量 /// - public int Boxconsumables { get; set; } - + public int NoArrivedCount { get => noArrivedCount; set { Set(ref noArrivedCount, value); } } + private int noArrivedCount; + private int someArrivedCount; /// - /// 配件数 + /// 部分到货数量 /// - public int Goodsnumber { get; set; } + public int SomeArrivedCount { get => someArrivedCount; set { Set(ref someArrivedCount, value); } } + private int arrivedCount; /// - /// 气泡纸耗材(长=0,宽=1) + /// 已到货数量 /// - public int Airconsumables { get; set; } + public int ArrivedCount { get => arrivedCount; set { Set(ref arrivedCount, value); } } + //private int totalCount; + ///// + ///// 全部数量 + ///// + //public int TotalCount { get => totalCount; set { Set(ref totalCount, value); } } - /// - /// 注意事项(对接备注) - /// - public string Markmessage { get; set; } - public IList OrderList { get; set; } - public IList AfterSaleOrderList { get; set; } + private bool isLoading; public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } - public string SearchOrderId { get => searchOrderId; set { Set(ref searchOrderId, 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 OrderState? OrderState { get => orderState; private set { Set(ref orderState, value); } } - - public string SearchSku { get => searchSku; set { Set(ref searchSku, value); } } - public string SearchProductId { get => searchProductId; set { Set(ref searchProductId, value); } } - public string SearchProductNo { get => searchProductNo; set { Set(ref searchProductNo, value); } } - public string SearchContactName { get => searchContactName; set { Set(ref searchContactName, value); } } - public string SearchWaybill { get => searchWaybill; set { Set(ref searchWaybill, value); } } - - public bool OnlyDF { get => onlyDF; set { Set(ref onlyDF, value); } } - public bool ExcludeSD { get => excludeSD; set { Set(ref excludeSD, value); } } - public bool ExcludeCanceled { get => excludeCanceled; set { Set(ref excludeCanceled, value); } } - - public bool? IncludeAfterOrder { get => includeAfterOrder; set { Set(ref includeAfterOrder, value); } } - public string SearchServiceId { get => searchServiceId; set { Set(ref searchServiceId, value); } } + private readonly PackTaskService packTaskService; + WorkProcessService workProcessService; + public int? taskStatus { get; set; } + private ObservableCollection packTaskList; /// - /// 仅显示未处理 + /// 动态数据表 /// - public bool OnlyUnhandle { get => onlyUnhandle; set { Set(ref onlyUnhandle, value); } } - - public ToDayOrderAchievement ToDayOrderAchievement { get; set; } - - public ICommand SetOrderStateCommand { get; set; } - - public ICommand SearchOrderCommand { get; set; } - - public ICommand SyncOrderCommand { get; set; } - - public ICommand ExportCommand { get; set; } - - public ICommand CopyTextCommand { get; set; } - - public ICommand CopyOrderWaybillCommand { get; set; } - - public ICommand SetSearchDateCommand { get; set; } - - public ICommand OrderPageIndexChangedCommand { get; set; } - - public ICommand DecodeConsigneeCommand { get; set; } - - public ICommand GetBuyerAccountCommand { get; set; } - - public ICommand ChooseStorageTypeCommand { get; set; } - - public ICommand EditCostCommand { get; set; } - - public ICommand OutStockCommand { get; set; } - - public ICommand EditVenderRemarkCommand { get; set; } - - public ICommand SetIncludeAfterOrderCommand { get; set; } - - public ICommand FindAfterSaleOrderCommand { get; set; } - - public ICommand EditAfterSaleOrderCommand { get; set; } - - public ICommand EditAfterSaleOrderRefundPurchaseAmountCommand { get; set; } + public ObservableCollection PackTaskList { get => packTaskList; set { Set(ref packTaskList, value); } } - public ICommand SetIncludeExceptionOrderCommand { get; set; } + //private ObservableCollection feesItems; + ///// + ///// 动态数据表 + ///// + //public ObservableCollection FeesItems { get => feesItems; set { Set(ref feesItems, value); } } - public ICommand OpenSkuDetailCommand { get; set; } - /// - /// 当前条件利润汇总 - /// - //public decimal CurrentConditionsTotalProfit { get => currentConditionsTotalProfit; set { Set(ref currentConditionsTotalProfit, value); } } + #endregion - /// - /// 是否包含异常订单 - /// - public bool IncludeExceptionOrder { get => includeExceptionOrder; set { Set(ref includeExceptionOrder, value); } } - public long WaitPurchaseOrderCount { get => waitPurchaseOrderCount; set { Set(ref waitPurchaseOrderCount, value); } } - public long ExceptionOrderCount { get => exceptionOrderCount; set { Set(ref exceptionOrderCount, value); } } - public long WaitOutStoreCount { get => waitOutStoreCount; set { Set(ref waitOutStoreCount, value); } } - public long AfterSaleOrderUnhandleCount { get => afterSaleOrderUnhandleCount; set { Set(ref afterSaleOrderUnhandleCount, value); } } - - /// - /// 是否为刷单组 - /// - public bool IsSDGroup { get => isSDGroup; set { Set(ref isSDGroup, value); } } - public TaskListViewModel(OrderService orderService, StatisticsService statisticsService, AfterOrderService afterOrderService, GlobalContext globalContext, ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel, DongDongHelper dongdongHelper) + public TaskListViewModel(PackTaskService packTaskService, GlobalContext globalContext, ProductService productService, ConsumableService consumableService, WorkProcessService workProcessService, IncreateServiceService increateServiceService) { - IsSDGroup = globalContext.User.TeamName == "刷单组"; - if (IsSDGroup) - { - querySDOperator = globalContext.User.Name; + this.packTaskService = packTaskService; + //TaskState = BBWY.Client.Models. TaskState.全部; + PackTaskList = new ObservableCollection();//初始化数据 - } - else - { - queryShopId = globalContext.User.Shop.ShopId; - } - - random = new Random(); - this.dongdongHelper = dongdongHelper; - this.globalContext = globalContext; - this.orderService = orderService; - this.statisticsService = statisticsService; - this.afterOrderService = afterOrderService; - this.choosePurchaseSchemeViewModel = choosePurchaseSchemeViewModel; - OrderList = new ObservableCollection(); - AfterSaleOrderList = new ObservableCollection(); - EndDate = DateTime.Now; - StartDate = DateTime.Now.Date; - ToDayOrderAchievement = new ToDayOrderAchievement(); - InitSearchParam(); - SetOrderStateCommand = new RelayCommand(SetOrderState); - SearchOrderCommand = new RelayCommand(() => + SetTaskStateCommand = new RelayCommand(SetTaskState); + CreateTaskCommand = new RelayCommand(CreateTask); + SearchTaskCommand = new RelayCommand(() => { PageIndex = 1; - System.Threading.Tasks.Task.Factory.StartNew(() => LoadOrder(1)); //手动点击查询订单 + Task.Factory.StartNew(() => SearchTaskList()); //手动点击查询订单 }); - SyncOrderCommand = new RelayCommand(SyncOrder); - CopyTextCommand = new RelayCommand(s => + TaskPageIndexChangedCommand = new RelayCommand(p => { - try - { - Clipboard.SetText(s); - } - catch (Exception ex) - { - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine(ex); - Console.ResetColor(); - } - } - ); - CopyOrderWaybillCommand = new RelayCommand(o => Clipboard.SetText(o.WaybillNo)); - SetSearchDateCommand = new RelayCommand(d => - { - EndDate = d == 1 ? DateTime.Now.Date.AddDays(-1) : DateTime.Now; - StartDate = DateTime.Now.Date.AddDays(d * -1); - PageIndex = 1; - System.Threading.Tasks.Task.Factory.StartNew(() => LoadOrder(1)); //点击日期查询订单 + LoadIndex(p.PageIndex); }); - OrderPageIndexChangedCommand = new RelayCommand(p => - { - System.Threading.Tasks.Task.Factory.StartNew(() => LoadOrder(p.PageIndex)); - }); - //DecodeConsigneeCommand = new RelayCommand(DecodeConsignee); - GetBuyerAccountCommand = new RelayCommand(GetBuyerAccount); - ChooseStorageTypeCommand = new RelayCommand(ChooseStorageType); - EditCostCommand = new RelayCommand(EditCost); - OutStockCommand = new RelayCommand((o) => OutStock(o)); - EditVenderRemarkCommand = new RelayCommand(EditVenderRemark); - ExportCommand = new RelayCommand(Export); - SetIncludeAfterOrderCommand = new RelayCommand(SetIncludeAfterOrder); - SetIncludeExceptionOrderCommand = new RelayCommand(SetIncludeExceptionOrder); - EditAfterSaleOrderCommand = new RelayCommand(EditAfterSaleOrder); - EditAfterSaleOrderRefundPurchaseAmountCommand = new RelayCommand(EditAfterSaleOrderRefundPurchaseAmount); - FindAfterSaleOrderCommand = new RelayCommand(FindAfterSaleOrder); - OpenSkuDetailCommand = new RelayCommand(OpenSkuDetail); - SearchOrderCommand.Execute(null); - } - - private void InitSearchParam(bool isInitDate = false) - { - this.OrderState = null; - SearchOrderId = string.Empty; - SearchContactName = string.Empty; - SearchProductNo = string.Empty; - SearchSku = string.Empty; - SearchProductId = string.Empty; - SearchWaybill = string.Empty; - if (isInitDate) - { - EndDate = DateTime.Now; - StartDate = DateTime.Now.Date; - } - PageIndex = 1; - IncludeAfterOrder = null; - IncludeExceptionOrder = false; - } - - public override void Refresh() - { - queryShopId = globalContext.User.Shop.ShopId; - OrderList.Clear(); - if (ToDayOrderAchievement != null) - { - ToDayOrderAchievement.AdvCost = 0M; - ToDayOrderAchievement.DeliveryExpressFreight = 0M; - ToDayOrderAchievement.OrderCount = 0; - ToDayOrderAchievement.Profit = 0; - ToDayOrderAchievement.PurchaseAmount = 0; - ToDayOrderAchievement.SaleAmount = 0; - ToDayOrderAchievement.SaleAmount = 0M; - ToDayOrderAchievement.EmployereCost = 0M; - ToDayOrderAchievement.TaxCost = 0M; - ToDayOrderAchievement.SdCost = 0M; - ToDayOrderAchievement.PularizeEndDate = null; - ToDayOrderAchievement.ShoppopularizeList.Clear(); - } - PageIndex = 1; - OrderCount = 0; - } - - public void SetOrderState(OrderState? orderState) - { - InitSearchParam(orderState == null); - this.OrderState = orderState; - System.Threading.Tasks.Task.Factory.StartNew(() => LoadOrder(1)); //选择状态查询订单 - } + StartTime = DateTime.Now.Date; + EndTime = DateTime.Now.Date; + IsLoading = false; - private void SetIncludeExceptionOrder() - { - InitSearchParam(); - IncludeExceptionOrder = true; - System.Threading.Tasks.Task.Factory.StartNew(() => LoadOrder(1)); - } - public void SetIncludeAfterOrder() - { - InitSearchParam(); - IncludeAfterOrder = true; - System.Threading.Tasks.Task.Factory.StartNew(() => LoadOrder(1)); - } - - public void SetIncludeAfterOrder(string orderId, string skuId, DateTime startDate, DateTime endDate) - { - InitSearchParam(); - SearchOrderId = orderId; - SearchSku = skuId; - StartDate = startDate; - EndDate = endDate; - IncludeAfterOrder = true; - System.Threading.Tasks.Task.Factory.StartNew(() => LoadOrder(1)); + //加载数据 + SetTaskState(Models.TaskState.全部); + this.globalContext = globalContext; + this.productService = productService; + this.consumableService = consumableService; + this.workProcessService = workProcessService; + this.increateServiceService = increateServiceService; } - public void RefreshOrder(string orderId, bool isRemoveOrder = false) + private void IsLoadCount() { - //Task.Factory.StartNew(() => LoadOrder(PageIndex)); - var order = OrderList.FirstOrDefault(o => o.Id == orderId); - if (order == null) - { - IsLoading = false; - return; - } - - if (isRemoveOrder) + var packTaskResult = packTaskService.GetAllCount(); + if (packTaskResult != null && packTaskResult.Success) { - IsLoading = false; - Application.Current.Dispatcher.Invoke(() => + App.Current.Dispatcher.Invoke(() => { - OrderList.Remove(order); + ArrivedCount = packTaskResult.Data.ArrivedCount; + NoArrivedCount = packTaskResult.Data.NoArrivedCount; + SomeArrivedCount = packTaskResult.Data.SomeArrivedCount; }); - } - var orderResponse = orderService.GetOrderById(orderId); - IsLoading = false; - if (!orderResponse.Success) - { - Application.Current.Dispatcher.Invoke(() => MessageBox.Show(orderResponse.Msg, "查询订单详情")); - return; - } - var newOrder = orderResponse.Data.Map(); - newOrder.LocalConvert(); + } - Application.Current.Dispatcher.Invoke(() => - { - var orderIndex = OrderList.IndexOf(order); - OrderList.Remove(order); - OrderList.Insert(orderIndex, newOrder); - }); } - public void RefreshAfterOrder(long afterSaleOrderId) + private void LoadIndex(int pageIndex) { - var afterSaleOrder = AfterSaleOrderList.FirstOrDefault(aso => aso.Id == afterSaleOrderId); - if (afterSaleOrder == null) - { - IsLoading = false; - return; - } - var afterSaleOrderResponse = afterOrderService.GetAfterSaleOrderById(afterSaleOrderId); - IsLoading = false; - if (!afterSaleOrderResponse.Success) - { - Application.Current.Dispatcher.Invoke(() => MessageBox.Show(afterSaleOrderResponse.Msg, "查询售后单")); - return; - } - - var newAfterSaleOrder = afterSaleOrderResponse.Data.Map(); - App.Current.Dispatcher.Invoke(() => - { - var index = AfterSaleOrderList.IndexOf(afterSaleOrder); - AfterSaleOrderList.Remove(afterSaleOrder); - AfterSaleOrderList.Insert(index, newAfterSaleOrder); - }); - + PageIndex = pageIndex;// + SearchTaskList(); } - private void LoadOrder(int pageIndex) - { - if (IncludeAfterOrder == true) - LoadAfterSaleOrder(pageIndex); - else - LoadNormalOrder(pageIndex); - if (!IsSDGroup) - { - System.Threading.Tasks.Task.Factory.StartNew(() => LoadTodayAchievement(StartDate, EndDate, queryShopId.Value)); - System.Threading.Tasks.Task.Factory.StartNew(() => LoadOrderCount(queryShopId.Value)); - } - else - { - - } - } - private void LoadNormalOrder(int pageIndex) - { - IsLoading = true; - Thread.Sleep(random.Next(0, 1000)); - var response = orderService.GetOrderList(SearchOrderId, - StartDate, - EndDate, - OrderState, - SearchSku, - SearchProductId, - SearchProductNo, - SearchWaybill, - SearchContactName, - pageIndex, - pageSize, - queryShopId, - OnlyDF, - ExcludeSD, - ExcludeCanceled, - IncludeExceptionOrder, - querySDOperator); - if (!response.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示")); - return; - } - OrderCount = response.Data.Count; - //CurrentConditionsTotalProfit = response.Data.CurrentConditionsTotalProfit; - var orderList = response.Data.Items.Map>(); - App.Current.Dispatcher.Invoke(() => - { - OrderList.Clear(); - foreach (var order in orderList) - { - order.LocalConvert(); - OrderList.Add(order); - } - Messenger.Default.Send(string.Empty, "OrderList_ScrollToTop"); - }); - IsLoading = false; - } + #region 事件绑定 + /// + /// 筛选数据 + /// + public ICommand SetTaskStateCommand { get; set; } + /// + /// 搜索数据 + /// + public ICommand SearchTaskCommand { get; set; } - private void LoadAfterSaleOrder(int pageIndex) - { - IsLoading = true; - Thread.Sleep(random.Next(0, 1000)); - var response = afterOrderService.GetAfterSaleOrderList(globalContext.User.Shop.ShopId, - SearchOrderId, - StartDate, - EndDate, - SearchProductId, - SearchSku, - SearchServiceId, - OnlyUnhandle, - pageIndex, - pageSize); - - if (!response.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示")); - return; - } + /// + /// 创建任务 + /// + public ICommand CreateTaskCommand { get; set; } - OrderCount = response.Data.Count; - var afterOrderList = response.Data.Items.Map>(); - App.Current.Dispatcher.Invoke(() => - { - AfterSaleOrderList.Clear(); - foreach (var aso in afterOrderList) - AfterSaleOrderList.Add(aso); - Messenger.Default.Send(string.Empty, "AfterSaleOrderList_ScrollToTop"); - }); - IsLoading = false; - } + /// + /// 页面改变事件 + /// + public ICommand TaskPageIndexChangedCommand { get; set; } - private void LoadTodayAchievement(DateTime startTime, DateTime endTime, long shopId) - { - var response = statisticsService.GetTodayAchievementStatistics(startTime, endTime, shopId); - if (!response.Success) - return; - ToDayOrderAchievement.AdvCost = response.Data.AdvCost; - ToDayOrderAchievement.DeliveryExpressFreight = response.Data.DeliveryExpressFreight; - ToDayOrderAchievement.EmployereCost = response.Data.EmployeeCost; - ToDayOrderAchievement.PularizeEndDate = response.Data.PularizeEndDate; - ToDayOrderAchievement.OrderCount = response.Data.OrderCount; - ToDayOrderAchievement.PlatformCommissionAmount = response.Data.PlatformCommissionAmount; - ToDayOrderAchievement.Profit = response.Data.Profit; - ToDayOrderAchievement.ProfitRaito = response.Data.ProfitRaito; - ToDayOrderAchievement.PurchaseAmount = response.Data.PurchaseAmount; - ToDayOrderAchievement.SaleAmount = response.Data.SaleAmount; - ToDayOrderAchievement.SdCost = response.Data.SDCost; - ToDayOrderAchievement.TaxCost = response.Data.TaxCost; - ToDayOrderAchievement.TotalCost = response.Data.TotalCost; - - App.Current.Dispatcher.Invoke(() => - { - ToDayOrderAchievement.ShoppopularizeList.Clear(); - if (response.Data.ShoppopularizeList != null && response.Data.ShoppopularizeList.Count() > 0) - { - foreach (var item in response.Data.ShoppopularizeList) - ToDayOrderAchievement.ShoppopularizeList.Add(item); - } - }); - } - private void LoadOrderCount(long shopId) - { - var response = statisticsService.GetOrderCountStatistics(shopId); - if (!response.Success) - return; - WaitPurchaseOrderCount = response.Data.WaitPurchaseCount; - ExceptionOrderCount = response.Data.ExceptionCount; - WaitOutStoreCount = response.Data.WaitOutStoreCount; - AfterSaleOrderUnhandleCount = response.Data.AfterSaleOrderUnhandleCount; - } - private void GetBuyerAccount(Order order) + public void SetTaskState(TaskState? taskState) { - if (string.IsNullOrEmpty(order.BuyerAccount)) + TaskState = taskState; + switch (taskState) { - var buyerAccount = string.Empty; - var grab = new GrabJDMibole(order.Id, globalContext.User.Shop.ShopId.ToString()); - if (grab.ShowDialog() == true) - buyerAccount = grab.Tag.ToString(); - if (string.IsNullOrEmpty(buyerAccount)) - { - MessageBox.Show("未获取到买家账号", "提示"); - return; - } - order.BuyerAccount = buyerAccount; - } + case null: + break; + case Models.TaskState.已到货: + case Models.TaskState.部分到货: //未完成的数据 + case Models.TaskState.未到货: + taskStatus = null; + TaskState = taskState; + taskStatus = 0; + break; + case Models.TaskState.全部: //所有数据 + TaskState = null; + taskStatus = null; + break; + case Models.TaskState.已完成: + TaskState = null; + taskStatus = 1; + break; - //获取本机咚咚客服列表 - var currentMachineServiceGroupList = dongdongHelper.GetAllDongdongUser(); - if (currentMachineServiceGroupList == null || currentMachineServiceGroupList.Count() == 0) - { - MessageBox.Show("未获取到本机咚咚客服账号列表", "提示"); - return; - } - - //匹配客服账号 - var waiter = currentMachineServiceGroupList.Intersect(globalContext.ShopServiceGroupList)?.FirstOrDefault(); - if (string.IsNullOrEmpty(waiter)) - { - waiter = currentMachineServiceGroupList.Intersect(globalContext.ShopServiceGroupLowerList)?.FirstOrDefault(); - if (string.IsNullOrEmpty(waiter)) - { - MessageBox.Show("未匹配到当前店铺客服组和本机咚咚客服账号的交集", "提示"); - return; - } + default: + break; } + SearchTaskList(); - //建立websocket连接 - - - //唤醒咚咚 - dongdongHelper.WakeUpDongDong(waiter, order.BuyerAccount); } - - private void ChooseStorageType(object param) + private ConsumableService consumableService; + private IncreateServiceService increateServiceService; + /// + /// 搜索任务列表 + /// + public void SearchTaskList() { - var paramList = (object[])param; - var orderId = paramList[0].ToString(); - var storageType = (StorageType)paramList[1]; - - var order = OrderList.FirstOrDefault(o => o.Id == orderId); - if (order.StorageType == storageType) - return;//忽略相同的仓储类型 - - if (storageType == StorageType.本地自发) - { - var calculationCostType = new ChooseCalculationCostType(orderId, storageType, true); - calculationCostType.Closed += ChooseCalculationCostType_Closed; - calculationCostType.ShowDialog(); - } - else if (storageType == StorageType.SD) - { - var sd = new SD(orderId, true, order.VenderRemark, order.Flag, string.Empty, null, string.Empty, globalContext.User.Name, 0M, 0M, 0M, IsSDGroup ? SDType.刷单组 : SDType.自刷); - sd.Closed += Sd_Closed; - sd.ShowDialog(); - } - else if (storageType == StorageType.代发) + IsLoading = true; + Task.Factory.StartNew(() => { - IsLoading = true; - System.Threading.Tasks.Task.Factory.StartNew(() => statisticsService.GetSkuRecentSales(order.ItemList.Select(osku => osku.Id).ToList())).ContinueWith(t => + PackTaskList = new ObservableCollection();//初始化数据 + var datas = packTaskService.GetOrderList(SearchSkuId, SearchTaskId, StartTime, EndTime, (this.TaskState), taskStatus, + PageIndex, PageSize); + if (datas != null && datas.Data != null && datas.Success) { - IsLoading = false; - if (t.Result.Success) + var dataModel = datas.Data; + OrderCount = dataModel.TotalCount; + foreach (var item in dataModel.Items) { - var tartgetSkus = t.Result.Data.Where(s => s.SaleCount >= 5).Select(s => s.SkuId).ToList(); - if (tartgetSkus.Count() > 0) + + var data = new PackTaskModel(packTaskService, consumableService, workProcessService, increateServiceService) + { + AcceptName = item.UserName, + Availability = (TaskState)item.Availability, + BasicPack = (BasicPack)item.BasicPack, + DepartmentName = item.DepartmentName, + CertificatePosition = (CertificatePosition)item.CertificatePosition, + + GoodsNumber = item.GoodsNumber, + Increment1 = item.Increment1, + Increment2 = (Increment)item.Increment2, + ItemList = new List() { new SkuMessage + { BrandName = item.BrandName, + GoodsNo = item.ProductItemNum, Logo= item.Logo, + ShopName = item.ShopName, SkuName = item.SkuName + + } }, + MarkMessage = item.MarkMessage, + PackType = (PackType)item.PackType, + + PositionType = (PositionType)item.PositionType, + SkuCount = item.SkuCount, + SkuTitle = item.SkuGoodsTitle, + TaskId = item.TaskId, + TaskStatus = (TaskStateType)item.TaskStatus, + EndTime = item.CreateTime + + + }; + if (item.BarCodeDTO != null && item.BarCodeDTO.Id > 0) { - bool? dialog = false; - App.Current.Dispatcher.Invoke(() => - { - var confirmWindow = new SkuRecentSalesConfirmWindow(tartgetSkus); - dialog = confirmWindow.ShowDialog(); - }); - if (dialog != true) - return; + data.BarCodeModel = item.BarCodeDTO; } - } - - App.Current.Dispatcher.Invoke(() => - { - var chooseDFType = new ChooseDFType(); - if (chooseDFType.ShowDialog() != true) - return; - - if (chooseDFType.DFType == DFType.关联订单) + if (item.certificate != null) { - var relationPurchaseOrder = new RelationPurchaseOrder(orderId, globalContext.User.Shop.PurchaseAccountList, null, null, order.ItemList.Select(osku => new RelationPurchaseOrderSku() - { - Logo = osku.Logo, - ProductId = osku.ProductId, - SkuId = osku.Id, - Quantity = osku.ItemTotal, - Title = osku.Title - }).ToList()); - relationPurchaseOrder.Closed += RelationPurchaseOrder_Closed; - relationPurchaseOrder.ShowDialog(); + data.CertificateModel = item.certificate; } - else if (chooseDFType.DFType == DFType.在线采购) + if (item.FeesItemResponse != null) { - choosePurchaseSchemeViewModel.SetData(order); - var choosePurchaseScheme = new ChoosePurchaseScheme(); - choosePurchaseScheme.ShowDialog(); + data.FeesItemResponse = item.FeesItemResponse; + data.FeesMoney = item.FeesItemResponse.SingleFees; + data.IsShowFees = data.FeesMoney > 0 ? true : false; } - }); - }); - - } - } - - private void RelationPurchaseOrder_Closed(object sender, EventArgs e) - { - var relationPurchaseOrder = sender as RelationPurchaseOrder; - var orderId = relationPurchaseOrder.OrderId; - if (relationPurchaseOrder.IsRePurchase) - { - var order = OrderList.FirstOrDefault(o => o.Id == orderId); - choosePurchaseSchemeViewModel.SetData(order); - var choosePurchaseScheme = new ChoosePurchaseScheme(); - choosePurchaseScheme.ShowDialog(); - return; - } - if (relationPurchaseOrder.DialogResult != true) - return; - var orderDropShippingList = relationPurchaseOrder.OrderDropShippingList; - IsLoading = true; - System.Threading.Tasks.Task.Factory.StartNew(() => orderService.RelationPurchaseOrderV2(orderDropShippingList, globalContext.User.Shop.PlatformCommissionRatio ?? 0.05M)) - .ContinueWith(t => + else { - var response = t.Result; - if (!response.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "关联采购订单")); - return; - } - RefreshOrder(orderId); - }); - } - - private void Sd_Closed(object sender, EventArgs e) - { - var sd = sender as SD; - if (sd.DialogResult != true) - return; - var orderId = sd.OrderId; - var isSetStorageType = sd.IsSetStorageType; - var sdCommissionAmount = sd.SDCommissionAmount; - var sdOrderAmount = sd.SDOrderAmount; - var deliveryExpressFreight = sd.DeliveryExpressFreight; - var sdType = sd.SDType; - var flag = sd.Flag; - var venderRemark = sd.VenderRemark; - var sdKey = sd.SDKey; - var sdPayChannel = sd.PayChannel; - var sdPaybillNo = sd.SdPayBillNo; - var sdOperator = sd.SdOperator; - - var shop = globalContext.User.Shop; - + data.IsShowFees = false; + } - IsLoading = true; - System.Threading.Tasks.Task.Factory.StartNew(() => orderService.SDCalculationCost(orderId, - isSetStorageType, - sdCommissionAmount, - sdOrderAmount, - deliveryExpressFreight, - sdType.Value, - sdKey, - sdPayChannel, - sdPaybillNo, - sdOperator, - flag, - venderRemark, - shop)) - .ContinueWith(r => + + + if (item.PackUserName != null && item.PackUserName.Count() > 0) { - var response = r.Result; - if (!response.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "SD成本")); - return; - } - //LoadOrder(PageIndex); //设置刷单刷新订单列表 - var order = OrderList.FirstOrDefault(o => o.Id == orderId); - if (order != null && order.OrderState == Models.OrderState.待付款) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => - { - OrderList.Remove(order); - MessageBox.Show("已设置SD成本", "SD成本"); - }); - } - else - { - RefreshOrder(orderId); - } - }); - } + data.PackUser = string.Join("\r\n", item.PackUserName); + } - private void EditCost(Order order) - { - if (order.StorageType == null) - return; - if (order.StorageType == StorageType.代发) - { - var relationPurchaseOrder = new RelationPurchaseOrder(order.Id, globalContext.User.Shop.PurchaseAccountList, order.OrderDropShippingList, order.HistoryOrderDropShippingList, order.ItemList.Select(osku => new RelationPurchaseOrderSku() - { - Logo = osku.Logo, - ProductId = osku.ProductId, - SkuId = osku.Id, - Quantity = osku.ItemTotal, - Title = osku.Title, - SingleSkuAmount = (order.OrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == osku.Id)?.SkuAmount / osku.ItemTotal) ?? 0, - SingleSkuAmountStr = ((order.OrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == osku.Id)?.SkuAmount / osku.ItemTotal) ?? 0).ToString(), - OrderDropShippingId = osku.OrderDropShippingId - }).ToList()); - relationPurchaseOrder.Closed += RelationPurchaseOrder_Closed; - relationPurchaseOrder.ShowDialog(); - } - else if (order.StorageType == StorageType.SD) - { - var sd = new SD(order.Id, false, order.VenderRemark, order.Flag, order.SDKey, order.SDPayChannel, order.SDPayBillNo, order.SDOperator, order.OrderCost.SDCommissionAmount, order.OrderCost.SDOrderAmount, order.OrderCost.DeliveryExpressFreight, order.SDType ?? SDType.自刷); - sd.Closed += Sd_Closed; - sd.ShowDialog(); - } - else - { - var calculationCostType = new ChooseCalculationCostType(order.Id, order.StorageType.Value, false); - calculationCostType.Closed += ChooseCalculationCostType_Closed; - calculationCostType.ShowDialog(); - } - } + App.Current.Dispatcher.BeginInvoke(new Action(() => + { + PackTaskList.Add(data); + })); - private void ChooseCalculationCostType_Closed(object sender, EventArgs e) - { - var chooseCalculationCostType = sender as ChooseCalculationCostType; - chooseCalculationCostType.Closed -= ChooseCalculationCostType_Closed; - if (chooseCalculationCostType.DialogResult != true) - return; + } - var orderId = chooseCalculationCostType.OrderId; - var storageType = chooseCalculationCostType.StorageType; - var isSetStorageType = chooseCalculationCostType.IsSetStorageType; - var isAutoCalculation = chooseCalculationCostType.IsAutoCalculation; - if (isAutoCalculation) - { - IsLoading = true; - System.Threading.Tasks.Task.Factory.StartNew(() => orderService.AutoCalculationCost(orderId, isSetStorageType, storageType, globalContext.User.Shop.PlatformCommissionRatio ?? 0.05M)).ContinueWith(r => - { - var response = r.Result; - if (!response.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "自动计算成本")); - return; - } - //LoadOrder(PageIndex); //自动计算成功刷新订单列表 - RefreshOrder(orderId, isSetStorageType); - }); - } - else - { - var order = OrderList.FirstOrDefault(o => o.Id == orderId); - var orderSkuList = order.ItemList.Select(osku => new ManualEditCostOrderSku() - { - Id = osku.Id, - ItemTotal = osku.ItemTotal, - Logo = osku.Logo, - Price = osku.Price, - Title = osku.Title, - ProductId = osku.ProductId, - ProductItemNum = osku.ProductItemNum - }).ToList(); - foreach (var manualEditCostOrderSku in orderSkuList) - { - var orderCostDetailList = order.OrderCostDetailGroupList?.FirstOrDefault(g => g.SkuId == manualEditCostOrderSku.Id)?.Items; - if (orderCostDetailList != null && orderCostDetailList.Count > 0) - { - manualEditCostOrderSku.ConsumableAmount = orderCostDetailList.Sum(ocd => ocd.ConsumableAmount); - manualEditCostOrderSku.DeliveryExpressFreight = orderCostDetailList.Sum(ocd => ocd.DeliveryExpressFreight); - manualEditCostOrderSku.FirstFreight = orderCostDetailList.Sum(ocd => ocd.FirstFreight); - //manualEditCostOrderSku.OperationAmount = orderCostDetailList.Sum(ocd => ocd.OperationAmount); - manualEditCostOrderSku.InStorageAmount = orderCostDetailList.Sum(ocd => ocd.InStorageAmount); - manualEditCostOrderSku.OutStorageAmount = orderCostDetailList.Sum(ocd => ocd.OutStorageAmount); - manualEditCostOrderSku.PurchaseFreight = orderCostDetailList.Sum(ocd => ocd.PurchaseFreight); - manualEditCostOrderSku.SkuAmount = orderCostDetailList.Sum(ocd => ocd.SkuAmount); - manualEditCostOrderSku.StorageAmount = orderCostDetailList.Sum(ocd => ocd.StorageAmount); - manualEditCostOrderSku.TotalCost = orderCostDetailList.Sum(ocd => ocd.TotalCost); - manualEditCostOrderSku.UnitCost = orderCostDetailList.FirstOrDefault().UnitCost; - } - manualEditCostOrderSku.ConsumableAmountStr = manualEditCostOrderSku.ConsumableAmount.ToString(); - manualEditCostOrderSku.DeliveryExpressFreightStr = manualEditCostOrderSku.DeliveryExpressFreight.ToString(); - manualEditCostOrderSku.FirstFreightStr = manualEditCostOrderSku.FirstFreight.ToString(); - //manualEditCostOrderSku.OperationAmountStr = manualEditCostOrderSku.OperationAmount.ToString(); - manualEditCostOrderSku.InStorageAmountStr = manualEditCostOrderSku.InStorageAmount.ToString(); - manualEditCostOrderSku.OutStorageAmountStr = manualEditCostOrderSku.OutStorageAmount.ToString(); - manualEditCostOrderSku.PurchaseFreightStr = manualEditCostOrderSku.PurchaseFreight.ToString(); - manualEditCostOrderSku.SkuAmountStr = manualEditCostOrderSku.SkuAmount.ToString(); - manualEditCostOrderSku.StorageAmountStr = manualEditCostOrderSku.StorageAmount.ToString(); } + else + { + MessageBox.Show("查不到数据"); - var manualCalculationCost = new ManualCalculationCost(orderId, isSetStorageType, storageType, orderSkuList); - manualCalculationCost.Closed += ManualCalculationCost_Closed; - manualCalculationCost.ShowDialog(); - } - } - private void ManualCalculationCost_Closed(object sender, EventArgs e) - { - var manualCalculationCost = sender as ManualCalculationCost; - manualCalculationCost.Closed -= ManualCalculationCost_Closed; - if (manualCalculationCost.DialogResult != true) - return; + } + IsLoadCount(); + IsLoading = false; + }); - var orderId = manualCalculationCost.OrderId; - var storageType = manualCalculationCost.StorageType; - var isSetStorageType = manualCalculationCost.IsSetStorageType; - var manualEditCostOrderSkuList = manualCalculationCost.ManualEditCostOrderSkuList; - IsLoading = true; - System.Threading.Tasks.Task.Factory.StartNew(() => orderService.ManualCalculationCost(orderId, - isSetStorageType, - storageType, - manualEditCostOrderSkuList, - globalContext.User.Shop.PlatformCommissionRatio ?? 0.05M)).ContinueWith(r => - { - var response = r.Result; - if (!response.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "手动计算成本")); - return; - } - //LoadOrder(PageIndex); //手动计算成功刷新订单列表 - RefreshOrder(orderId, isSetStorageType); - }); - } - private void OutStock(Order o) - { - var outStock = new OutStock(o.Id, globalContext.LogisticsResponseList); - outStock.Closed += OutStock_Closed; - outStock.ShowDialog(); } - private void OutStock_Closed(object sender, EventArgs e) + GlobalContext globalContext; + ProductService productService; + /// + /// 展示发布任务页面 + /// + public void CreateTask() { - var outStock = sender as OutStock; - if (outStock.DialogResult != true) - return; - var orderId = outStock.OrderId; - var waybillNo = outStock.WaybillNo; - var logistics = outStock.SelectedLogistics; - var order = OrderList.FirstOrDefault(o => o.Id == orderId); - IsLoading = true; - System.Threading.Tasks.Task.Factory.StartNew(() => orderService.OutStock(orderId, waybillNo, logistics.Id)) - .ContinueWith(r => - { - IsLoading = false; - var response = r.Result; - if (!response.Success) - { - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "出库")); - return; - } - if (order != null) - { - order.OrderState = Models.OrderState.待收货; - order.WaybillNo = waybillNo; - } - - //LoadOrder(PageIndex); - }); + CreatePackTask create = new CreatePackTask(packTaskService, globalContext, productService); + create.Show(); } - private void SyncOrder() - { - IsLoading = true; - System.Threading.Tasks.Task.Factory.StartNew(() => orderService.SyncOrder(globalContext.User.Shop.ShopId, StartDate, EndDate)).ContinueWith(r => - { - IsLoading = false; - var response = r.Result; - if (response.Success) - App.Current.Dispatcher.Invoke(() => MessageBox.Show("同步任务创建成功,该任务会执行一段时间,请稍后查询订单列表观察同步结果", "同步订单")); - else - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "同步订单")); - }); - } - private void EditVenderRemark(Order order) - { - var editWindow = new EditVenderRemark(order.Id, order.VenderRemark, order.Flag); - editWindow.Closed += EditVenderRemarkWindow_Closed; - editWindow.ShowDialog(); - } - private void EditVenderRemarkWindow_Closed(object sender, EventArgs e) - { - var editWindow = sender as EditVenderRemark; - if (editWindow.DialogResult != true) - return; - var orderId = editWindow.OrderId; - var order = OrderList.FirstOrDefault(o => o.Id == orderId); - if (order == null) - return; - var venderRemark = editWindow.VenderRemark; - var flag = editWindow.Flag; - IsLoading = true; - System.Threading.Tasks.Task.Factory.StartNew(() => orderService.EditVenderRemark(orderId, venderRemark, flag)).ContinueWith(r => - { - IsLoading = false; - var response = r.Result; - if (!response.Success) - { - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改商家备注")); - return; - } - if (OrderState == Models.OrderState.等待采购 && order.StorageType == StorageType.代发) - { - App.Current.Dispatcher.Invoke(() => OrderList.Remove(order)); - return; - } - order.VenderRemark = venderRemark; - order.Flag = flag; - }); - } - private void Export() + /// + /// 弹出条形码可视化界面 + /// + public void ShowBarCodeWindow() { - var sfd = new SaveFileDialog() { Filter = "csv files(*.csv)|*.csv" }; - if (sfd.ShowDialog() != true) - return; - var ssaveFileName = sfd.FileName; - IsLoading = true; - Thread.Sleep(random.Next(500, 2000)); - System.Threading.Tasks.Task.Factory.StartNew(() => orderService.ExportOrderList(SearchOrderId, - StartDate, - EndDate, - OrderState, - SearchSku, - SearchProductNo, - SearchWaybill, - SearchContactName, - pageIndex, - pageSize, - queryShopId, - OnlyDF, - ExcludeSD, - ExcludeCanceled, - querySDOperator)).ContinueWith(t => - { - var r = t.Result; - if (!r.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(r.Msg, "导出")); - return; - } - - try - { - var list = r.Data.Select(x => x.ToString()).ToList(); - list.Insert(0, "日期,店铺订单号,SKU编码,订单状态,仓储类型,代发下单单号,售价,商品成本,采购运费,头程费用,仓储服务费,快递费,耗材费,入仓操作费,出仓操作费,刷单/空单号费,平台扣点,补差金额,应付金额,实收金额,利润,利润率,收件人联系方式,商家备注,售后类型,售后与特殊情况备注"); - System.IO.File.WriteAllLines(ssaveFileName, list, Encoding.UTF8); - App.Current.Dispatcher.Invoke(() => MessageBox.Show("导出完成", "导出")); - } - catch (Exception ex) - { - App.Current.Dispatcher.Invoke(() => MessageBox.Show(r.Msg, "导出")); - return; - } - finally - { - IsLoading = false; - } - }); } - private void EditAfterSaleOrder(AfterSaleOrder afterSaleOrder) + + /// + /// 弹出合格证 可视化页面 + /// + public void ShowCertificateWindow() { - var w = new EditAfterSaleOrderSku(afterSaleOrder); - w.Closed += EditAfterSaleOrderSku_Closed; - w.ShowDialog(); } + /// + /// 筛选任务状态数据(根据TaskList数据) + /// + public void SelectTaskStatus() { } + #endregion + //private void OpenSkuDetail(object param) + //{ + // var paramList = (object[])param; + // var orderId = paramList[0].ToString(); + // var skuId = paramList[1].ToString(); + // var task = packTaskList.FirstOrDefault(o => o.TaskId == Convert.ToInt64( SearchTaskId)); + // if (order.Platform == Platform.京东) + // { + // var url = $"https://item.jd.com/{skuId}.html"; + // try + // { + // System.Diagnostics.Process.Start("explorer.exe", url); + // } + // catch (Exception ex) + // { + // Clipboard.SetText(url); + // MessageBox.Show($"{ex.Message}\r\n调用浏览器失败,网页链接已复制到剪切板,请手动打开浏览器访问", "提示"); + // } + // } + // else + // { + + // } + //} + - private void EditAfterSaleOrderSku_Closed(object sender, EventArgs e) - { - var w = sender as EditAfterSaleOrderSku; - if (w.DialogResult != true) - return; - var afterSaleOrder = w.SaleOrder; - IsLoading = true; - System.Threading.Tasks.Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrder(afterSaleOrder.Id, - afterSaleOrder.OrderId, - afterSaleOrder.ProductResult.Value, - afterSaleOrder.ServiceResult.Value, - afterSaleOrder.ProductHealth.Value, - afterSaleOrder.ReissueAfterSaleAmount, - afterSaleOrder.ReissueFreight, - afterSaleOrder.ReissueProductAmount, - afterSaleOrder.SDRefundFreight)).ContinueWith(t => - { - var response = t.Result; - if (!response.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改售后")); - return; - } - RefreshAfterOrder(afterSaleOrder.Id); - }); - } - private void EditAfterSaleOrderRefundPurchaseAmount(AfterSaleOrder afterSaleOrder) - { - var w = new EditAfterSaleOrderRefundPurchaseAmount(afterSaleOrder); - w.Closed += EditAfterSaleOrderRefundPurchaseAmount_Closed; - w.ShowDialog(); - } - private void EditAfterSaleOrderRefundPurchaseAmount_Closed(object sender, EventArgs e) - { - var w = sender as EditAfterSaleOrderRefundPurchaseAmount; - if (w.DialogResult != true) - return; - var afterSaleOrder = w.SaleOrder; - IsLoading = true; - System.Threading.Tasks.Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrderRefundPurchaseAmount(afterSaleOrder.Id, - afterSaleOrder.OrderId, - afterSaleOrder.RefundPurchaseAmount.Value, - afterSaleOrder.RefundMerchantOrderNo, - afterSaleOrder.RefundAlipayOrderNo)) - .ContinueWith(t => - { - var response = t.Result; - if (!response.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改采购退款")); - return; - } - RefreshAfterOrder(afterSaleOrder.Id); - }); - } - private void FindAfterSaleOrder(object param) - { - var paramList = (object[])param; - var orderId = paramList[0].ToString(); - var skuId = paramList[1].ToString(); - var startDate = DateTime.Parse(paramList[2].ToString()).Date; - var endDate = DateTime.Now.Date; - SetIncludeAfterOrder(orderId, skuId, startDate, endDate); - } - private void OpenSkuDetail(object param) - { - var paramList = (object[])param; - var orderId = paramList[0].ToString(); - var skuId = paramList[1].ToString(); - var order = OrderList.FirstOrDefault(o => o.Id == orderId); - if (order.Platform == Platform.京东) - { - var url = $"https://item.jd.com/{skuId}.html"; - try - { - System.Diagnostics.Process.Start("explorer.exe", url); - } - catch (Exception ex) - { - Clipboard.SetText(url); - MessageBox.Show($"{ex.Message}\r\n调用浏览器失败,网页链接已复制到剪切板,请手动打开浏览器访问", "提示"); - } - } - else - { - } - } } } diff --git a/BBWY.Client/ViewModels/PackTask/TipsViewModel.cs b/BBWY.Client/ViewModels/PackTask/TipsViewModel.cs new file mode 100644 index 00000000..b93eb881 --- /dev/null +++ b/BBWY.Client/ViewModels/PackTask/TipsViewModel.cs @@ -0,0 +1,18 @@ +using BBWY.Common.Models; +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.ViewModels.PackTask +{ + public class TipsViewModel : BaseVM, IDenpendency + { + + + + + + + + } +} diff --git a/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs b/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs new file mode 100644 index 00000000..97ab7ca2 --- /dev/null +++ b/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs @@ -0,0 +1,388 @@ +using BBWY.Client.APIServices; +using BBWY.Client.Models.APIModel.Response.PackTask; +using BBWY.Client.Models; +using BBWY.Client.Views.PackTask; +using BBWY.Common.Models; +using BBWY.Controls; +using GalaSoft.MvvmLight.Command; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Input; +using System.Linq; +using System.Windows.Controls; +using System.ComponentModel; +using HandyControl.Controls; +using System.Windows; +using System.Collections; + +namespace BBWY.Client.ViewModels.PackTask +{ + + public partial class WareHouseListViewModel : BaseVM, IDenpendency//注入服务 + { + + #region 属性绑定 + /// + /// 查询时间段 + /// + private DateTime startTime; + public DateTime StartTime { get => startTime; set { Set(ref startTime, value); } } + + private DateTime endTime; + public DateTime EndTime { get => endTime; set { Set(ref endTime, value); } } + + /// + /// 查询任务id + /// + private string searchTaskId; + public string SearchTaskId + { + get => searchTaskId; set + { + Set(ref searchTaskId, value); + } + } + + /// + /// 查询Sku + /// + private string searchSkuId; + public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, value); } } + + public TaskState? taskState; + /// + /// 任务状态 + /// + public TaskState? TaskState + { + get => taskState; private set + { + Set(ref taskState, value); + } + } + + private int pageIndex = 1; + private int pageSize = 10; + private int orderCount;//总数量 + + private Visibility tipVisitity; + /// + /// + /// + public Visibility TipVisitity { get => tipVisitity; set { Set(ref tipVisitity, value); } } + + /// + /// 未到货数量 + /// + public int NoArrivedCount { get => noArrivedCount; set { Set(ref noArrivedCount, value); } } + private int noArrivedCount; + private int someArrivedCount; + /// + /// 部分到货数量 + /// + public int SomeArrivedCount { get => someArrivedCount; set { Set(ref someArrivedCount, value); } } + private int worryCount; + /// + /// 加急数 + /// + public int WorryCount { get => worryCount; set { Set(ref worryCount, value); } } + + + private int arrivedCount; + /// + /// 已到货数量 + /// + public int ArrivedCount { get => arrivedCount; set { Set(ref arrivedCount, value); } } + //private int totalCount; + ///// + ///// 全部数量 + ///// + //public int TotalCount { get => totalCount; set { Set(ref totalCount, 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 bool isLoading; + public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } + + WorkProcessService workProcessService; + private readonly PackTaskService packTaskService; + + private int? IsWorry { get; set; } + public int? taskStatus { get; set; } + private ObservableCollection packTaskList; + /// + /// 动态数据表 + /// + public ObservableCollection PackTaskList { get => packTaskList; set { Set(ref packTaskList, value); } } + + //private ObservableCollection feesItems; + ///// + ///// 动态数据表 + ///// + //public ObservableCollection FeesItems { get => feesItems; set { Set(ref feesItems, value); } } + + + public string searchDepartment; + public string SearchDepartment + { + get => searchDepartment; set + { + Set(ref searchDepartment, value); + + } + } + + ConsumableService consumableService; + #endregion + + + + public WareHouseListViewModel(PackTaskService packTaskService, ConsumableService consumableService, WorkProcessService workProcessService, IncreateServiceService increateServiceService) + { + this.packTaskService = packTaskService; + this.consumableService = consumableService; + PackTaskList = new ObservableCollection();//初始化数据 + + SetTaskStateCommand = new RelayCommand(SetTaskState); + + SearchTaskCommand = new RelayCommand(() => + { + PageIndex = 1; + Task.Factory.StartNew(() => SearchTaskList()); //手动点击查询订单 + }); + TaskPageIndexChangedCommand = new RelayCommand(p => + { + LoadIndex(p.PageIndex); + }); + + + StartTime = DateTime.Now.Date; + EndTime = DateTime.Now.Date; + IsLoading = false; + + + //加载数据 + SetTaskState(Models.TaskState.全部); + this.workProcessService = workProcessService; + this.increateServiceService = increateServiceService; + } + + + + + + private void IsLoadCount() + { + var packTaskResult = packTaskService.GetWareAllCount(); + if (packTaskResult != null && packTaskResult.Success) + { + App.Current.Dispatcher.Invoke(() => + { + ArrivedCount = packTaskResult.Data.ArrivedCount; + NoArrivedCount = packTaskResult.Data.NoArrivedCount; + SomeArrivedCount = packTaskResult.Data.SomeArrivedCount; + WorryCount = packTaskResult.Data.WorryCount; + }); + + + } + + + } + + private void LoadIndex(int pageIndex) + { + PageIndex = pageIndex;// + SearchTaskList(); + } + + + + + #region 事件绑定 + /// + /// 筛选数据 + /// + public ICommand SetTaskStateCommand { get; set; } + + /// + /// 搜索数据 + /// + public ICommand SearchTaskCommand { get; set; } + + /// + /// 创建任务 + /// + public ICommand CreateTaskCommand { get; set; } + + /// + /// 页面改变事件 + /// + public ICommand TaskPageIndexChangedCommand { get; set; } + + + public void SetTaskState(TaskState? taskState) + { + IsWorry = null; + TaskState = null; + taskStatus = null; + switch (taskState) + { + case null: + break; + case Models.TaskState.已到货: + case Models.TaskState.部分到货: //未完成的数据 + case Models.TaskState.未到货: + TaskState = taskState; + taskStatus = 0; + break; + case Models.TaskState.全部: //所有数据 + + break; + case Models.TaskState.已完成: + + taskStatus = 1; + break; + case Models.TaskState.加急: + + IsWorry = 1; + break; + default: + break; + } + SearchTaskList(); + + } + + private IncreateServiceService increateServiceService; + /// + /// 搜索任务列表 + /// + public void SearchTaskList() + { + IsLoading = true; + Task.Factory.StartNew(() => + { + PackTaskList = new ObservableCollection();//初始化数据 + var datas = packTaskService.GetWareHouseList(IsWorry, SearchDepartment, SearchSkuId, SearchTaskId, StartTime, EndTime, (this.TaskState), taskStatus, + PageIndex, PageSize); + if (datas != null && datas.Data != null && datas.Success) + { + var dataModel = datas.Data; + OrderCount = dataModel.TotalCount; + foreach (var item in dataModel.Items) + { + + var data = new PackTaskModel(packTaskService,consumableService,workProcessService, increateServiceService) + { + AcceptName = item.UserName, + Availability = (TaskState)item.Availability, + BasicPack = (BasicPack)item.BasicPack, + DepartmentName = item.DepartmentName, + CertificatePosition = (CertificatePosition)item.CertificatePosition, + + GoodsNumber = item.GoodsNumber, + Increment1 = item.Increment1, + Increment2 = (Increment)item.Increment2, + ItemList = new List() { new SkuMessage + { BrandName = item.BrandName, + GoodsNo = item.ProductItemNum, Logo= item.Logo, + ShopName = item.ShopName, SkuName = item.SkuName + + } }, + MarkMessage = item.MarkMessage, + PackType = (PackType)item.PackType, + + PositionType = (PositionType)item.PositionType, + SkuCount = item.SkuCount, + SkuTitle = item.SkuGoodsTitle, + TaskId = item.TaskId, + TaskStatus = (TaskStateType)item.TaskStatus, + EndTime = item.CreateTime + + + }; + if (item.BarCodeDTO != null && item.BarCodeDTO.Id > 0) + { + + data.BarCodeModel = item.BarCodeDTO; + + } + if (item.certificate != null) + { + data.CertificateModel = item.certificate; + + } + + if (item.FeesItemResponse!=null) + { + data.FeesItemResponse = item.FeesItemResponse; + data.FeesMoney = item.FeesItemResponse.SingleFees; + + data.IsShowFees = data.FeesMoney > 0 ? true : false; + + } + else + { + data.IsShowFees = false; + } + + if (item.PackUserName != null && item.PackUserName.Count() > 0) + { + data.PackUser = string.Join("\r\n", item.PackUserName); + } + + App.Current.Dispatcher.BeginInvoke(new Action(() => + { + PackTaskList.Add(data); + })); + + } + + + + } + else + { + App.Current.Dispatcher.BeginInvoke(new Action(() => + { + new TipsWindow("查不到数据").Show(); + })); + } + IsLoadCount(); + IsLoading = false; + }); + + + + } + + + + + + + + + + #endregion + + + + + + + + + + + } +} diff --git a/BBWY.Client/ViewModels/ViewModelLocator.cs b/BBWY.Client/ViewModels/ViewModelLocator.cs index af91b604..8b3e2d1f 100644 --- a/BBWY.Client/ViewModels/ViewModelLocator.cs +++ b/BBWY.Client/ViewModels/ViewModelLocator.cs @@ -16,6 +16,8 @@ namespace BBWY.Client.ViewModels + + public ViewModelLocator() { sp = (App.Current as App).ServiceProvider; @@ -78,7 +80,17 @@ namespace BBWY.Client.ViewModels } } } - + public ConsumableViewModel Consumable + { + get + { + //IsCreateOrderList = true; + using (var s = sp.CreateScope()) + { + return s.ServiceProvider.GetRequiredService(); + } + } + } public TaskListViewModel TaskList { get @@ -90,7 +102,65 @@ namespace BBWY.Client.ViewModels } } } + public WareHouseListViewModel WareHouseList + { + get + { + //IsCreateOrderList = true; + using (var s = sp.CreateScope()) + { + return s.ServiceProvider.GetRequiredService(); + } + } + } + + + public PackServiceViewModel PackServiceList + { + get + { + //IsCreateOrderList = true; + using (var s = sp.CreateScope()) + { + return s.ServiceProvider.GetRequiredService(); + } + } + } + + public TipsViewModel TipsView + { + get + { + //IsCreateOrderList = true; + using (var s = sp.CreateScope()) + { + return s.ServiceProvider.GetRequiredService(); + } + } + } + + public SetBarCodeViewModel CreateSetBarCodeView + { + get + { + + using (var s = sp.CreateScope()) + { + return s.ServiceProvider.GetRequiredService(); + } + } + } + public CreatePackTaskViewModel CreateTaskView + { + get + { + using (var s = sp.CreateScope()) + { + return s.ServiceProvider.GetRequiredService(); + } + } + } public ChoosePurchaseSchemeViewModel ChoosePurchaseScheme diff --git a/BBWY.Client/Views/MainWindow.xaml.cs b/BBWY.Client/Views/MainWindow.xaml.cs index 2604d3cd..4034f9df 100644 --- a/BBWY.Client/Views/MainWindow.xaml.cs +++ b/BBWY.Client/Views/MainWindow.xaml.cs @@ -1,4 +1,5 @@ -using BBWY.Controls; +using BBWY.Client.Models; +using BBWY.Controls; using System; using System.Windows; diff --git a/BBWY.Client/Views/Order/OrderList.xaml b/BBWY.Client/Views/Order/OrderList.xaml index ce70ff76..53017b49 100644 --- a/BBWY.Client/Views/Order/OrderList.xaml +++ b/BBWY.Client/Views/Order/OrderList.xaml @@ -134,6 +134,7 @@ + diff --git a/BBWY.Client/Views/Order/OrderListControl.xaml b/BBWY.Client/Views/Order/OrderListControl.xaml index 760a4920..9e523bf1 100644 --- a/BBWY.Client/Views/Order/OrderListControl.xaml +++ b/BBWY.Client/Views/Order/OrderListControl.xaml @@ -319,7 +319,6 @@ - diff --git a/BBWY.Client/Views/PackTask/Consumable.xaml b/BBWY.Client/Views/PackTask/Consumable.xaml new file mode 100644 index 00000000..9ce61d20 --- /dev/null +++ b/BBWY.Client/Views/PackTask/Consumable.xaml @@ -0,0 +1,196 @@ + + + + + 0 + 1 + 2 + 6 + 14 + 29 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BBWY.Client/Views/PackTask/Consumable.xaml.cs b/BBWY.Client/Views/PackTask/Consumable.xaml.cs new file mode 100644 index 00000000..96a51ecd --- /dev/null +++ b/BBWY.Client/Views/PackTask/Consumable.xaml.cs @@ -0,0 +1,167 @@ +using BBWY.Client.APIServices; +using BBWY.Client.Helpers; +using BBWY.Client.Models.PackTask; +using BBWY.Client.ViewModels.PackTask; +using BBWY.Common.Models; +using BBWY.Controls; +using GalaSoft.MvvmLight.Messaging; +using HandyControl.Controls; +using Microsoft.Extensions.Configuration; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +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.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace BBWY.Client.Views.PackTask +{ + /// + /// Consumable.xaml 的交互逻辑 + /// + public partial class Consumable : Page + { + + public ConsumableViewModel model; + // public ConsumableService consumableService; + public Consumable() + { + //this.consumableService = consumableService; + InitializeComponent(); + // model = new ConsumableViewModel(consumableService); + //model.ReflashDatas = GetList; + //this.DataContext = model; + + + var applicationPath = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + var builder = new ConfigurationBuilder().SetBasePath(applicationPath).AddJsonFile("BBWYAppSettings.json", false, true); + var Configuration = builder.Build(); + + QKApiHost = Configuration.GetSection("QKApiHost").Value; + + Messenger.Default.Register(this, "ReFlashList", (x) => + { + GetList(); + }); + + this.Unloaded += BindingPurchaseProduct_Unloaded; + } + + private void BindingPurchaseProduct_Unloaded(object sender, RoutedEventArgs e) + { + Messenger.Default.Unregister(this); + } + + + + string QKApiHost = ""; + + + + List consumables = new List(); + + private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + try + { + var list = (ListBox)sender; + if (list.Items.Count <= 0) + { + return; + } + var value = (ListBoxItem)list.SelectedValue; + var content = (Label)value.Content; + consumableName.Text = content.Content.ToString(); + tipBox.Visibility = Visibility.Collapsed; + } + catch (Exception) + { + + + } + } + + private void consumableName_TextChanged(object sender, TextChangedEventArgs e) + { + try + { + var textBoxt = (BTextBox)sender; + //创建一个ListBox + + if (tipBox != null && tipBox.Items.Count > 0) + { + tipBox.Items.Clear(); + + } + + if (consumables.Count <= 0) + { + GetList(); + } + + if (string.IsNullOrEmpty(textBoxt.Text)) + { + tipBox.Visibility = Visibility.Collapsed; + return; + } + foreach (var department in consumables) + { + if (department.Contains(textBoxt.Text)) + { + ListBoxItem item = new ListBoxItem(); + Label lb = new Label(); + lb.Content = department; + item.Content = lb; + tipBox.Items.Add(item); + } + + } + + tipBox.Visibility = Visibility.Visible; + } + catch (Exception) + { + + + } + } + + /// + /// 刷新数据 + /// + private void GetList() + { + HttpClientHelper helper = new HttpClientHelper(QKApiHost); + + string url = $"{QKApiHost}/api/Consumable/SearchAll";//获取所有数据 + var data = helper.Get(url); + var res = JsonConvert.DeserializeObject>(data); + //创建一个ListBoxIem + if (res.Success) + { + if (res.Data != null && res.Data.Count() > 0) + { + foreach (var department in res.Data) + { + if (!consumables.Contains(department.Name)) + { + consumables.Add(department.Name); + } + + + + } + } + } + } + } +} diff --git a/BBWY.Client/Views/PackTask/CreatePackTask.xaml b/BBWY.Client/Views/PackTask/CreatePackTask.xaml new file mode 100644 index 00000000..8ddfe36b --- /dev/null +++ b/BBWY.Client/Views/PackTask/CreatePackTask.xaml @@ -0,0 +1,340 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +