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.
604 lines
23 KiB
604 lines
23 KiB
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 Microsoft.Extensions.Logging;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Diagnostics;
|
|
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<PackItemModel> IncreateList { get; set; } = new ObservableCollection<PackItemModel>();
|
|
public ObservableCollection<PackItemModel> PackList { get; set; } = new ObservableCollection<PackItemModel>();
|
|
public ObservableCollection<PackItemModel> ConsumableServiceList { get; set; } = new ObservableCollection<PackItemModel>();
|
|
|
|
|
|
|
|
public ObservableCollection<IncreateServiceModel> IncreateServiceList { get; set; } = new ObservableCollection<IncreateServiceModel>();
|
|
public ObservableCollection<PackUser> MemberList { get; set; } = new ObservableCollection<PackUser>();
|
|
public ObservableCollection<ConsumableModel> ConsumableList { get; set; } = new ObservableCollection<ConsumableModel>();
|
|
public ObservableCollection<WorkProcessModel> PackServiceList { get; set; } = new ObservableCollection<WorkProcessModel>();
|
|
|
|
|
|
|
|
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<object>(UpLoadPack);
|
|
SetAllCountCommand = new RelayCommand<object>(SetAllCount);
|
|
|
|
|
|
|
|
//加载数据
|
|
LoadPackDatas();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载任务数据
|
|
/// </summary>
|
|
private void LoadPackDatas()
|
|
{
|
|
Task task = Task.Factory.StartNew(() =>
|
|
{
|
|
var res = this.packTaskService.GetTaskService(TaskId);
|
|
if (res.Success)
|
|
{
|
|
if (res.Data.IncreateList != null)
|
|
{
|
|
IncreateList = new ObservableCollection<PackItemModel>();
|
|
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)
|
|
{
|
|
PackList = new ObservableCollection<PackItemModel>();
|
|
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)
|
|
{
|
|
ConsumableServiceList = new ObservableCollection<PackItemModel>();
|
|
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
|
|
|
|
});
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量设置耗材数量
|
|
/// </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); } } //
|
|
|
|
//private string selectBox;
|
|
///// <summary>
|
|
///// 箱子类型
|
|
///// </summary>
|
|
//public string SelectBox { get => selectBox; set { Set(ref selectBox, value); } }
|
|
|
|
|
|
//private int boxCount;
|
|
///// <summary>
|
|
///// 箱子数
|
|
///// </summary>
|
|
//public int BoxCount { get => boxCount; set { Set(ref boxCount, value); } }
|
|
//private int airPaperWidth;
|
|
///// <summary>
|
|
///// 气泡宽
|
|
///// </summary>
|
|
//public int AirPaperWidth { get => airPaperWidth; set { Set(ref airPaperWidth, value); } }
|
|
|
|
//private decimal airPaperHeigth;
|
|
///// <summary>
|
|
///// 气泡长
|
|
///// </summary>
|
|
//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); } }
|
|
|
|
/// <summary>
|
|
/// 上传数据 (判断是否超量) 统一上传
|
|
/// </summary>
|
|
private void UpLoadPack(object obj)
|
|
{
|
|
UploadServiceRequest uploadService = new UploadServiceRequest();
|
|
uploadService.TaskId = TaskId;
|
|
List<IncreateMemberModel> increateMembers = new List<IncreateMemberModel>();
|
|
List<ProcessMemberModel> processMembers = new List<ProcessMemberModel>();
|
|
// List<ConsumableTaskModel> consumableTasks = new List<ConsumableTaskModel>();
|
|
|
|
List<PersonTaskModel> PersonTaskModels = new List<PersonTaskModel>();
|
|
|
|
List<IncreateMemberModel> allIncreateMembers = new List<IncreateMemberModel>();//所有数据数量不能超过总数据
|
|
List<ProcessMemberModel> allProcessMembers = new List<ProcessMemberModel>();
|
|
List<ConsumableTaskModel> allConsumableTasks = new List<ConsumableTaskModel>();
|
|
FeesItemResponse feesItem = new FeesItemResponse(); ;
|
|
|
|
//获取打包人员
|
|
List<string> packUsers = new List<string>();
|
|
|
|
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<IncreateMemberModel> increateMembers = new List<IncreateMemberModel>();
|
|
//List<ProcessMemberModel> processMembers = new List<ProcessMemberModel>();
|
|
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();
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 更新 打包员 和费用数据
|
|
/// </summary>
|
|
public Action<FeesItemResponse, List<string>> SetAllFees { get; set; }
|
|
|
|
private void AddPackService()
|
|
{
|
|
PackList.Add(new PackItemModel(null, MemberList, null, PackServiceList)
|
|
{
|
|
ItemCount = TaskCount
|
|
});
|
|
}
|
|
WorkProcessService workProcessService;
|
|
private void AddIncreateService()
|
|
{
|
|
IncreateList.Add(new PackItemModel(IncreateServiceList, MemberList)
|
|
{
|
|
ItemCount = TaskCount
|
|
});
|
|
}
|
|
|
|
private void AddConsumable()
|
|
{
|
|
ConsumableServiceList.Add(new PackItemModel(null, null, ConsumableList)
|
|
{
|
|
ItemCount = TaskCount
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|