步步为盈
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

717 lines
28 KiB

2 years ago
using AutoMapper;
using AutoMapper.Internal;
using BBWY.Client.APIServices;
2 years ago
using BBWY.Client.Helpers;
2 years ago
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;
2 years ago
using Microsoft.Extensions.Logging;
2 years ago
using NPOI.Util;
2 years ago
using Org.BouncyCastle.Asn1.Crmf;
2 years ago
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
2 years ago
using System.Diagnostics;
2 years ago
using System.Drawing.Printing;
using System.IO;
2 years ago
using System.Linq;
2 years ago
using System.Reflection;
2 years ago
using System.Reflection.Metadata.Ecma335;
2 years ago
using System.Runtime.CompilerServices;
2 years ago
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
2 years ago
using System.Windows.Media.Imaging;
2 years ago
namespace BBWY.Client.ViewModels.PackTask
{
public class PackServiceViewModel : BaseVM, IDenpendency
{
2 years ago
private decimal? directionalFees;
/// <summary>
/// 定向费用
/// </summary>
public decimal? DirectionalFees { get => directionalFees; set { Set(ref directionalFees, value); } }
2 years ago
private BitmapImage barcodeImage;
/// <summary>
/// 任务Id条形码
/// </summary>
public BitmapImage BarcodeImage { get => barcodeImage; set { Set(ref barcodeImage, value); } }
private BitmapImage taskImage;
/// <summary>
/// 任务Id条形码
/// </summary>
public BitmapImage TaskImage { get => taskImage; set { Set(ref taskImage, value); } }
private string printName;
public string PrintName { get => printName; set { Set(ref printName, value); } }
private ObservableCollection<string> printList;
/// <summary>
/// 打印机列表
/// </summary>
public ObservableCollection<string> PrintList { get => printList; set { Set(ref printList, value); } }
2 years ago
private ObservableCollection<PackTaskModel> packTaskList;
/// <summary>
/// 动态数据表
/// </summary>
public ObservableCollection<PackTaskModel> PackTaskList { get => packTaskList; set { Set(ref packTaskList, value); } }
private PackTaskModel packTaskModel;
public PackTaskModel PackTaskModel { get => packTaskModel; set { Set(ref packTaskModel, value); } } //
2 years ago
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; }
2 years ago
public ICommand PrintCommand { get; set; }
2 years ago
readonly PackTaskService packTaskService;
readonly ConsumableService consumableService;
2 years ago
readonly PackDetailService packDetailService;
2 years ago
readonly BatchPurchaseService batchPurchaseService;
2 years ago
private ObservableCollection<PackItemModel> increateList = new ObservableCollection<PackItemModel>();
public ObservableCollection<PackItemModel> IncreateList { get => increateList; set { Set(ref increateList, value); } } //
2 years ago
2 years ago
private ObservableCollection<PackItemModel>
packList = new ObservableCollection<PackItemModel>();
2 years ago
public ObservableCollection<PackItemModel> PackList { get => packList; set { Set(ref packList, value); } } //
2 years ago
2 years ago
private ObservableCollection<PackItemModel>
consumableServiceList = new ObservableCollection<PackItemModel>();
public ObservableCollection<PackItemModel> ConsumableServiceList { get => consumableServiceList; set { Set(ref consumableServiceList, value); } } //
2 years ago
2 years ago
private string discount = "1";
/// <summary>
/// 折扣
/// </summary>
public string Discount { get => discount; set { Set(ref discount, value); } } //
2 years ago
2 years ago
2 years ago
public ObservableCollection<PackServiceDTO> IncreateServiceList { get; set; } = new ObservableCollection<PackServiceDTO>();
2 years ago
public ObservableCollection<PackUser> MemberList { get; set; } = new ObservableCollection<PackUser>();
public ObservableCollection<ConsumableModel> ConsumableList { get; set; } = new ObservableCollection<ConsumableModel>();
2 years ago
public ObservableCollection<PackServiceDTO> PackServiceList { get; set; } = new ObservableCollection<PackServiceDTO>();
private readonly PackServiceService packServiceService;
2 years ago
2 years ago
/// <summary>
/// 加载原数据
/// </summary>
public List<PackItemModel> LoadList = new List<PackItemModel>();
2 years ago
2 years ago
public void InitPrintList()
{
TaskImage = MyPrintHelper.GetBarcodeImage(TaskId.ToString(),300,60);
BarcodeImage = MyPrintHelper.GetBarcodeImage(SkuId, 300, 60);
PrintList = new ObservableCollection<string>();
var printingNames = PrinterSettings.InstalledPrinters;//获取本机的打印机数据
int index = -1;
int selectIndex = 0;
foreach (string name in printingNames)
{
if (name == "Microsoft XPS Document Writer" || name == "Microsoft Print to PDF" || name == "Fax")
{
continue;
}
index++;
if (name.Contains("Deli"))
{
selectIndex = index;
}
PrintList.Add(name);
}
try
{
var applicationPath = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string printNames = Path.Combine(applicationPath, "printName.init");
if (File.Exists(printNames))
{
PrintName = File.ReadAllText(printNames);
}
else
{
if (PrintList.Count > 0)
{
PrintName = PrintList[0].ToString();
}
}
}
catch (Exception)
{
}
}
2 years ago
public PackServiceViewModel(PackTaskService packTaskService, ConsumableService consumableService, PackServiceService packServiceService, PackDetailService packDetailService, BatchPurchaseService batchPurchaseService)//, long taskId
2 years ago
{
2 years ago
//TaskId = taskId;
2 years ago
this.consumableService = consumableService;
this.packTaskService = packTaskService;
2 years ago
this.packServiceService = packServiceService;
this.packDetailService = packDetailService;
2 years ago
2 years ago
var packServiceRes = this.packServiceService.SearchAll();
2 years ago
2 years ago
2 years ago
if (packServiceRes.Success)
2 years ago
{
2 years ago
if (packServiceRes.Data != null && packServiceRes.Data.Count() > 0)
2 years ago
{
2 years ago
foreach (var packService in packServiceRes.Data)
{
if (packService.ServiceType == ServiceType.)
App.Current.Dispatcher.Invoke(() =>
{
IncreateServiceList.Add(packService);//加载增值服务列表
});
if (packService.ServiceType == ServiceType.)
App.Current.Dispatcher.Invoke(() =>
{
PackServiceList.Add(packService);//加载工序服务列表
});
2 years ago
}
}
}
2 years ago
2 years ago
var res = this.packTaskService.GetPackMembers();//成员表
2 years ago
if (res.Success)
{
foreach (var item in res.Data)
{
App.Current.Dispatcher.Invoke(() =>
{
MemberList.Add(item);
});
}
}
2 years ago
2 years ago
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<object>(UpLoadPack);
SetAllCountCommand = new RelayCommand<object>(SetAllCount);
2 years ago
this.batchPurchaseService = batchPurchaseService;
2 years ago
2 years ago
2 years ago
//加载数据
2 years ago
//LoadPackDatas();
2 years ago
}
2 years ago
2 years ago
/// <summary>
/// 加载任务数据
/// </summary>
2 years ago
public void LoadPackDatas()
2 years ago
{
2 years ago
try
{
InitPrintList();
}
catch (Exception)
{
}
2 years ago
LoadList = new List<PackItemModel>();
2 years ago
Task task = Task.Factory.StartNew(() =>
2 years ago
{
2 years ago
var res = this.packDetailService.GetTaskService(TaskId);
2 years ago
if (res.Success)
{
if (res.Data.IncreateList != null)
{
2 years ago
IncreateList = new ObservableCollection<PackItemModel>();
2 years ago
2 years ago
foreach (var item in res.Data.IncreateList)
{
App.Current.Dispatcher.Invoke(() =>
{
2 years ago
IncreateList.Add(new PackItemModel()
2 years ago
{
2 years ago
MemberList = MemberList,
IncreateServiceList = IncreateServiceList,
2 years ago
ItemCount = item.ItemCount,
ItemName = item.ItemName,
SelectId = item.SelectId,
SelectUserId = item.SelectUserId,
MemberName = item.MemberName
});
});
}
2 years ago
2 years ago
}
if (res.Data.PackList != null)
{
2 years ago
PackList = new ObservableCollection<PackItemModel>();
2 years ago
foreach (var item in res.Data.PackList)
{
App.Current.Dispatcher.Invoke(() =>
{
2 years ago
PackList.Add(new PackItemModel()
2 years ago
{
2 years ago
PackServiceList = PackServiceList,
MemberList = MemberList,
2 years ago
ItemCount = item.ItemCount,
ItemName = item.ItemName,
SelectId = item.SelectId,
SelectUserId = item.SelectUserId,
MemberName = item.MemberName
});
});
}
}
if (res.Data.ConsumableServiceList != null)
{
2 years ago
ConsumableServiceList = new ObservableCollection<PackItemModel>();
2 years ago
foreach (var item in res.Data.ConsumableServiceList)
{
App.Current.Dispatcher.Invoke(() =>
{
2 years ago
ConsumableServiceList.Add(new PackItemModel()
2 years ago
{
2 years ago
MemberList = MemberList,
ConsumableList = ConsumableList,
2 years ago
ItemCount = item.ItemCount,
ItemName = item.ItemName,
SelectId = item.SelectId,
2 years ago
2 years ago
});
});
}
}
2 years ago
LoadList.AddRange(IncreateList);
LoadList.AddRange(PackList);
2 years ago
Discount = res.Data.Discount.ToString();
2 years ago
}
});
}
2 years ago
2 years ago
/// <summary>
2 years ago
/// 批量设置耗材数量
2 years ago
/// </summary>
/// <param name="obj"></param>
private void SetAllCount(object obj)
{
SetCountWindow set = new SetCountWindow();
set.SetCount = new Action<int>((s) =>
{
var lbox = obj as ListBox;
var serviceList = lbox.ItemsSource as ObservableCollection<PackItemModel>;
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); } } //
2 years ago
public string OrderId { get; set; }
public string SkuId { get; set; }
2 years ago
/// <summary>
/// 上传数据 (判断是否超量) 统一上传
/// </summary>
private void UpLoadPack(object obj)
{
2 years ago
decimal upDisCount = 1;
if (string.IsNullOrEmpty(Discount)) upDisCount = 1;
decimal.TryParse(Discount, out upDisCount);
if (upDisCount == 0)
{
new TipsWindow("折扣输入有误");
return;
}
2 years ago
UploadServiceRequest uploadService = new UploadServiceRequest();
2 years ago
uploadService.Discount = upDisCount;
List<PackItemModel> packServiceList = new List<PackItemModel>();
2 years ago
uploadService.TaskId = TaskId;
2 years ago
List<PackServiceDTO> uploadServices = new List<PackServiceDTO>();
2 years ago
// List<ConsumableTaskModel> consumableTasks = new List<ConsumableTaskModel>();
2 years ago
///上传 删除的数据 //上传保存数据 //上传总数据
List<PersonTaskModel> addDatas = new List<PersonTaskModel>();
List<PersonTaskModel> delDatas = new List<PersonTaskModel>();
2 years ago
List<PersonTaskModel> PersonTaskModels = new List<PersonTaskModel>();
2 years ago
List<PackServiceMemberModel> allPackServiceTasks = new List<PackServiceMemberModel>();
2 years ago
List<ConsumableTaskModel> allConsumableTasks = new List<ConsumableTaskModel>();
FeesItemResponse feesItem = new FeesItemResponse(); ;
2 years ago
List<PackServiceMemberModel> PackServiceMembers = new List<PackServiceMemberModel>();
2 years ago
//获取打包人员
List<string> packUsers = new List<string>();
decimal singleFees = 0;
decimal AllFees = 0;
decimal price = 0;
2 years ago
2 years ago
decimal IncreateFees = 0, PackFees = 0, ConsumableFees = 0, DiscountPrice = 0;
2 years ago
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;
}
2 years ago
price = IncreateServiceList.First(i => i.Id == item.SelectId).Price;
2 years ago
singleFees += price;
AllFees += item.ItemCount * price;
2 years ago
IncreateFees += item.ItemCount * price;
2 years ago
2 years ago
if (PackServiceMembers.Select(a => a.PackServiceId).Contains(item.SelectId))//相同服务 存在累加
2 years ago
{
2 years ago
var inMembers = PackServiceMembers.SingleOrDefault(a => a.UserId == item.SelectUserId && a.PackServiceId == item.SelectId);
2 years ago
if (inMembers != null)
2 years ago
inMembers.PackServiceCount += item.ItemCount;
2 years ago
2 years ago
var data = PackServiceMembers.SingleOrDefault(a => a.PackServiceId == item.SelectId);
2 years ago
var feeItem = feesItem.ServiceList.SingleOrDefault(f => f.ItemName == item.ItemName);
2 years ago
if (data != null) data.PackServiceCount += item.ItemCount;
2 years ago
if (feeItem != null) feeItem.ItemCount += item.ItemCount;
2 years ago
if (data.PackServiceCount > TaskCount)//累积超出任务量
2 years ago
{
2 years ago
new TipsWindow($"{item.ItemName}:{data.PackServiceCount}超出任务量{TaskCount}").Show();
2 years ago
return;
}
continue;
}
2 years ago
PackServiceMembers.Add(new PackServiceMemberModel
2 years ago
{
UserId = item.SelectUserId,
2 years ago
PackServiceCount = item.ItemCount,
PackServiceId = item.SelectId,
Price = price,
ServiceType = ServiceType.
2 years ago
});
feesItem.ServiceList.Add(new ServiceItemResponse
{
ServiceType = ServiceType.,
ItemCount = item.ItemCount,
ItemName = item.ItemName,
ItemPrice = price
});
2 years ago
2 years ago
}
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);
}
2 years ago
price = PackServiceList.First(i => i.Id == item.SelectId).Price;
2 years ago
singleFees += price;
AllFees += item.ItemCount * price;
2 years ago
PackFees += item.ItemCount * price;
2 years ago
if (PackServiceMembers.Select(a => a.PackServiceId).Contains(item.SelectId))//存在累加
2 years ago
{
2 years ago
var inMembers = PackServiceMembers.SingleOrDefault(a => a.UserId == item.SelectUserId && a.PackServiceId == item.SelectId);
2 years ago
if (inMembers != null)
2 years ago
inMembers.PackServiceCount += item.ItemCount;
2 years ago
2 years ago
var data = PackServiceMembers.SingleOrDefault(a => a.PackServiceId == item.SelectId);
2 years ago
var feeItem = feesItem.ServiceList.SingleOrDefault(f => f.ItemName == item.ItemName);
feeItem.ItemCount += item.ItemCount;
2 years ago
data.PackServiceCount += item.ItemCount;
if (data.PackServiceCount > TaskCount)//累积超出任务量
2 years ago
{
2 years ago
new TipsWindow($"{item.ItemName}:{data.PackServiceCount}超出任务量{TaskCount}").Show();
2 years ago
return;
}
continue;
}
2 years ago
PackServiceMembers.Add(new PackServiceMemberModel
2 years ago
{
UserId = item.SelectUserId,
2 years ago
PackServiceCount = item.ItemCount,
PackServiceId = item.SelectId,
Price = price,
ServiceType = ServiceType.
2 years ago
});
feesItem.ServiceList.Add(new ServiceItemResponse
{
ServiceType = ServiceType.,
ItemCount = item.ItemCount,
ItemName = item.ItemName,
ItemPrice = price
});
2 years ago
2 years ago
}
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;
2 years ago
ConsumableFees += item.ItemCount * price;
2 years ago
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));
2 years ago
uploadService.WorkProcessIds = string.Join(",", PackServiceMembers.Where(p => p.ServiceType == ServiceType.).Select(a => a.PackServiceId));
uploadService.WorkProcessNos = string.Join(",", PackServiceMembers.Where(p => p.ServiceType == ServiceType.).Select(a => a.PackServiceCount));
uploadService.IncreateServiceIds = string.Join(",", PackServiceMembers.Where(p => p.ServiceType == ServiceType.).Select(a => a.PackServiceId));
uploadService.IncreateServiceNos = string.Join(",", PackServiceMembers.Where(p => p.ServiceType == ServiceType.).Select(a => a.PackServiceCount));
2 years ago
2 years ago
uploadService.PackServiceIds = string.Join(",", PackServiceMembers.Select(a => a.PackServiceId));
uploadService.PackServiceNos = string.Join(",", PackServiceMembers.Select(a => a.PackServiceCount));
2 years ago
//var orgIds = LoadList.Select(p => p.SelectId).ToList();
//var nowIds = PackServiceMembers.Select(p => p.PackServiceId).ToList();
2 years ago
2 years ago
//var add = nowIds.Except(orgIds);
2 years ago
foreach (var item in LoadList)
{
if (!PackServiceMembers.Any(p => p.UserId == item.SelectUserId && p.PackServiceId == item.SelectId))
{
delDatas.Add(new PersonTaskModel
{
TaskId = taskId,
PackUserId = item.SelectUserId,
ServiceId = item.SelectId
});
}
}
//var del = orgIds.Except(nowIds).ToList();
2 years ago
2 years ago
foreach (var PackServiceMember in PackServiceMembers)
2 years ago
{
2 years ago
addDatas.Add(new PersonTaskModel
2 years ago
{
2 years ago
TaskId = taskId,
CreateTime = DateTime.Now,
IsDeleted = false,
ServiceCount = PackServiceMember.PackServiceCount,
PackUserId = PackServiceMember.UserId,
ServiceId = PackServiceMember.PackServiceId,
ServiceType = PackServiceMember.ServiceType
});
2 years ago
}
2 years ago
uploadService.AddPackServices = addDatas;
2 years ago
uploadService.DelPackServices = delDatas;
//uploadService.DeletedPackServices = del;
//uploadService.DeletedPackServices
2 years ago
uploadService.SkuId = SkuId;
2 years ago
uploadService.OrderId = OrderId;
uploadService.AllFees = Convert.ToDecimal(AllFees.ToString("0.00"));
2 years ago
uploadService.SingleFees = singleFees;
2 years ago
uploadService.IncreaseFees = Convert.ToDecimal((IncreateFees).ToString("0.00"));
uploadService.PackFees = Convert.ToDecimal((PackFees).ToString("0.00"));
uploadService.ConsumableFees = Convert.ToDecimal((ConsumableFees).ToString("0.00"));
2 years ago
uploadService.DiscountPrice = Convert.ToDecimal((AllFees * upDisCount).ToString("0.00"));
2 years ago
var res = packDetailService.UploadService(uploadService);
2 years ago
if (res != null && res.Success)
{
2 years ago
// new TipsWindow("上传成功!").Show();
2 years ago
var win = obj as System.Windows.Window;
feesItem.AllFees = AllFees;
feesItem.SingleFees = singleFees;
feesItem.TaskId = TaskId;
2 years ago
feesItem.DisCount = upDisCount;
2 years ago
feesItem.DiscountAllFees = upDisCount * AllFees;
feesItem.DiscountSingleFees = singleFees * upDisCount;
2 years ago
if (SetAllFees != null)
SetAllFees(feesItem, packUsers);
2 years ago
win.Close();
}
}
/// <summary>
/// 更新 打包员 和费用数据
/// </summary>
public Action<FeesItemResponse, List<string>> SetAllFees { get; set; }
private void AddPackService()
{
2 years ago
PackList.Add(new PackItemModel()
2 years ago
{
2 years ago
ItemCount = TaskCount,
MemberList = MemberList,
PackServiceList = PackServiceList
2 years ago
});
2 years ago
}
2 years ago
2 years ago
private void AddIncreateService()
{
2 years ago
IncreateList.Add(new PackItemModel()
2 years ago
{
2 years ago
ItemCount = TaskCount,
IncreateServiceList = IncreateServiceList,
MemberList = MemberList,
2 years ago
});
2 years ago
}
private void AddConsumable()
{
2 years ago
ConsumableServiceList.Add(new PackItemModel()
2 years ago
{
2 years ago
ItemCount = TaskCount,
2 years ago
ConsumableList = ConsumableList
2 years ago
});
2 years ago
}
}
}