Compare commits

...

6 Commits

Author SHA1 Message Date
506583276@qq.com 7bdf10863e 1 1 year ago
506583276@qq.com 41b5a0f735 使用工作时倒计时,添加超时赔付结算 1 year ago
506583276@qq.com 76f36566db 添加超时赔付 1 year ago
506583276@qq.com d3af990dc6 1 1 year ago
506583276@qq.com 739d83a6a2 1 2 years ago
506583276@qq.com 0dd7da6412 1 2 years ago
  1. 86
      BBWY.Client/APIServices/QiKu/PackTaskOverTimeDetailService.cs
  2. 53
      BBWY.Client/APIServices/QiKu/PackTaskService.cs
  3. 8
      BBWY.Client/APIServices/QiKu/PackUserService.cs
  4. 4
      BBWY.Client/APIServices/QiKu/PackagingTaskService.cs
  5. 2
      BBWY.Client/App.xaml.cs
  6. 4
      BBWY.Client/BBWYAppSettings.json
  7. 19
      BBWY.Client/GlobalContext.cs
  8. 183
      BBWY.Client/Helpers/PackTaskTimerHelper.cs
  9. 11
      BBWY.Client/Models/APIModel/Response/PackTask/FeesItemResponse.cs
  10. 21
      BBWY.Client/Models/APIModel/Response/PackTask/SearchWaitFallWareResponse.cs
  11. 20
      BBWY.Client/Models/APIModel/Response/PackUser/SearchPackerSalaryResponse.cs
  12. 22
      BBWY.Client/Models/APIModel/Response/PackUser/SearchPackerTaskResponse.cs
  13. 16
      BBWY.Client/Models/APIModel/Response/PackagingTask/SearchPackagingTaskListResponse.cs
  14. 18
      BBWY.Client/Models/Enums.cs
  15. 19
      BBWY.Client/Models/PackTask/PackTaskModel.cs
  16. 17
      BBWY.Client/Models/PackTask/ShopTotal.cs
  17. 18
      BBWY.Client/Models/PackUser/PackagingStile.cs
  18. 14
      BBWY.Client/Models/PackUser/PackerTaskModel.cs
  19. 10
      BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs
  20. 330
      BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs
  21. 263
      BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs
  22. 15
      BBWY.Client/ViewModels/PackerTask/PackerSalaryViewModel.cs
  23. 53
      BBWY.Client/ViewModels/PackerTask/PackerTaskViewModel.cs
  24. 4
      BBWY.Client/ViewModels/TotalPackTask/PackUserSalaryViewModel.cs
  25. 10
      BBWY.Client/ViewModels/TotalPackTask/ShopPackTaskTotalViewModel.cs
  26. 73
      BBWY.Client/Views/FallWare/WaitFallWareControl.xaml
  27. 2
      BBWY.Client/Views/FallWare/WareFallWareListControl.xaml
  28. 53
      BBWY.Client/Views/PackTask/FeesExcelV2Control.xaml.cs
  29. 2
      BBWY.Client/Views/PackTask/PackDetailWindow.xaml
  30. 51
      BBWY.Client/Views/PackagingTask/ShopWaitPackingTaskControl.xaml
  31. 51
      BBWY.Client/Views/PackagingTask/WaitPackingTaskControl.xaml
  32. 34
      BBWY.Client/Views/PackerTask/PackerPackCompletedControl.xaml
  33. 54
      BBWY.Client/Views/PackerTask/PackerSalaryControl.xaml
  34. 36
      BBWY.Client/Views/PackerTask/PackerWaitPackageControl.xaml
  35. 28
      BBWY.Client/Views/TaskOverTime/SubmitOverTimeMarkMsgWindow.xaml.cs
  36. 2
      BBWY.Client/Views/TotalPackTask/PackUserSalaryControl.xaml.cs

86
BBWY.Client/APIServices/QiKu/PackTaskOverTimeDetailService.cs

@ -0,0 +1,86 @@
using BBWY.Client.Models;
using BBWY.Client.Models.APIModel;
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.QiKu
{
public class PackTaskOverTimeDetailService : BaseApiService, IDenpendency
{
public PackTaskOverTimeDetailService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext)
{
}
public ApiResponse<SearchTaskListResponse> SearchTaskList(string skuId = null, string taskId = null
, string spuId = null, string orderSn = null,
TaskState? TaskState = null,
int pageIndex = 1,
int pageSize = 10
)
{
return SendRequest<SearchTaskListResponse>(globalContext.QKApiHost, "api/PackTask/SearchTaskList", new
{
orderSn,
spuId,
skuId,
taskId,
TaskState,
pageIndex,
pageSize,
ShopId = globalContext.User.Shop.ShopId.ToString(),
}, null, HttpMethod.Post);
}
/// <summary>
/// 查询超时任务列表
/// </summary>
/// <param name="taskId"></param>
/// <returns></returns>
public ApiResponse<SearchOverTimeTaskResponse> SearchOverTimeTaskList(string ShopId, DateTime? StartTime, DateTime? EndTime, OverTimeTaskState? overTimeTaskState, OverTimeTaskType? OverTimeType, int? PageIndex, int? PageSize = 20)
{
return SendRequest<SearchOverTimeTaskResponse>(globalContext.QKApiHost, $"api/PackTaskOverTimeDetail/SearchOverTimeTaskList", new
{
ShopId,
StartTime,
EndTime,
OverTimeType= OverTimeType==0?null: OverTimeType,
PageIndex,
PageSize,
OverTimeTaskState= (overTimeTaskState == OverTimeTaskState.) ? null : overTimeTaskState,
}, null, HttpMethod.Post);
}
// <summary>
/// 任务超时提交备注(解释超时原因)
/// </summary>
/// <param name="submitOverTimeMarkMsgRequest"></param>
/// <returns></returns>
public ApiResponse<object> SubmitOverTimeMarkMsg(TaskMessageType TaskType, long OverTimeTaskId, OverTimeType OverTimeType, string OverTimeRemarkMsg)
{
return SendRequest<object>(globalContext.QKApiHost, "api/PackTaskOverTimeDetail/SubmitOverTimeMarkMsg", new
{
TaskType,
OverTimeTaskId,
OverTimeType,
OverTimeRemarkMsg,
UserName=globalContext.User.Name,
}, null, HttpMethod.Post);
}
}
}

53
BBWY.Client/APIServices/QiKu/PackTaskService.cs

@ -25,7 +25,7 @@ namespace BBWY.Client.APIServices
public ApiResponse<SearchTaskListResponse> SearchTaskList(string skuId = null, string taskId = null
public ApiResponse<SearchTaskListResponse> SearchTaskListV2(string skuId = null, string taskId = null
, string spuId = null, string orderSn = null,
TaskState? TaskState = null,
int pageIndex = 1,
@ -35,7 +35,7 @@ namespace BBWY.Client.APIServices
{
return SendRequest<SearchTaskListResponse>(globalContext.QKApiHost, "api/PackTask/SearchTaskList", new
return SendRequest<SearchTaskListResponse>(globalContext.QKApiHost, "api/PackTask/SearchTaskListV2", new
{
orderSn,
@ -49,7 +49,7 @@ namespace BBWY.Client.APIServices
}, null, HttpMethod.Post);
}
public ApiResponse<SearchTaskListResponse> SearchTaskList(string WayBillNo = null, string SourceExpressName = null, string departmentName = null, string skuId = null, string taskId = null,
public ApiResponse<SearchTaskListResponse> SearchTaskListV2(string WayBillNo = null, string SourceExpressName = null, string departmentName = null, string skuId = null, string taskId = null,
string spuId = null, string orderSn = null,
TaskState? TaskState = null,
string ShopName = null,
@ -61,7 +61,7 @@ namespace BBWY.Client.APIServices
)
{
return SendRequest<SearchTaskListResponse>(globalContext.QKApiHost, "api/PackTask/SearchTaskList", new
return SendRequest<SearchTaskListResponse>(globalContext.QKApiHost, "api/PackTask/SearchTaskListV2", new
{
SkuTitle,
SpuTitle,
@ -212,7 +212,7 @@ namespace BBWY.Client.APIServices
//}
public ApiResponse<ShopTotalResponse> ShopTotalV2(string skuId,
public ApiResponse<ShopTotalResponse> ShopTotalV3(string skuId,
string taskId,
string shopId,
DateTime? startTime,
@ -223,7 +223,7 @@ namespace BBWY.Client.APIServices
int pageSize = 10
)
{
return SendRequest<ShopTotalResponse>(globalContext.QKApiHost, "api/PackTask/ShopTotalV2", new
return SendRequest<ShopTotalResponse>(globalContext.QKApiHost, "api/PackTask/ShopTotalV3", new
{
shopId,
skuId,
@ -273,10 +273,10 @@ namespace BBWY.Client.APIServices
/// </summary>
/// <param name="orderId"></param>
/// <returns></returns>
public ApiResponse<TotalPackUserSalaryResponse> TotalPackUserSalary(string PackUserName = null, DateTime? StartTime = null, DateTime? EndTime = null, int PageIndex = 1
public ApiResponse<TotalPackUserSalaryResponse> TotalPackUserSalaryV1(string PackUserName = null, DateTime? StartTime = null, DateTime? EndTime = null, int PageIndex = 1
, int PageSize = 10)
{
return SendRequest<TotalPackUserSalaryResponse>(globalContext.QKApiHost, "api/PackTask/TotalPackUserSalary", new
return SendRequest<TotalPackUserSalaryResponse>(globalContext.QKApiHost, "api/PackTask/TotalPackUserSalaryV1", new
{
PackUserName,
StartTime,
@ -332,34 +332,17 @@ namespace BBWY.Client.APIServices
return SendRequest<object>("http://bbwyb.qiyue666.com", $"api/purchaseorder/batchmanualsign", new { wayBillNoList }, null, HttpMethod.Post);
}
/// <summary>
/// 查询超时任务列表
/// </summary>
/// <param name="taskId"></param>
/// <returns></returns>
public ApiResponse<SearchOverTimeTaskResponse> SearchOverTimeTaskList(string ShopId, DateTime? StartTime, DateTime? EndTime, OverTimeTaskState overTimeTaskState, OverTimeTaskType? OverTimeTaskType, int? PageIndex, int? PageSize = 20)
{
return SendRequest<SearchOverTimeTaskResponse>(globalContext.QKApiHost, $"api/PackTask/SearchOverTimeTaskList", new
{
ShopId,
StartTime,
EndTime,
OverTimeTaskType,
PageIndex,
PageSize,
overTimeTaskState
}, null, HttpMethod.Post);
}
public ApiResponse<object> SubmitOverTimeMarkMsg(OverTimeTaskType OverTimeTaskType, long Id, string MarkMsg)
{
return SendRequest<object>(globalContext.QKApiHost, $"api/PackTask/SubmitOverTimeMarkMsg", new
{
OverTimeTaskType,
Id,
MarkMsg,
}, null, HttpMethod.Post);
}
//public ApiResponse<object> SubmitOverTimeMarkMsg(OverTimeTaskType OverTimeTaskType, long Id, string MarkMsg)
//{
// return SendRequest<object>(globalContext.QKApiHost, $"api/PackTask/SubmitOverTimeMarkMsg", new
// {
// OverTimeTaskType,
// Id,
// MarkMsg,
// }, null, HttpMethod.Post);
//}
public ApiResponse<object> SendToSetSkuConfigure(long taskId)
{

8
BBWY.Client/APIServices/QiKu/PackUserService.cs

@ -18,7 +18,7 @@ namespace BBWY.Client.APIServices.QiKu
}
public ApiResponse<SearchPackerTaskResponse> SearchPackerTask(PackTaskState? PackTaskState, string WayBillNo = null, string SourceExpressName = null, string departmentName = null, string skuId = null, string taskId = null,
public ApiResponse<SearchPackerTaskResponse> SearchPackerTaskV2(PackTaskState? PackTaskState, string WayBillNo = null, string SourceExpressName = null, string departmentName = null, string skuId = null, string taskId = null,
string spuId = null, string orderSn = null,
string ShopName = null,
@ -29,7 +29,7 @@ namespace BBWY.Client.APIServices.QiKu
PackagingTaskExceptionState? PackagingTaskExceptionState =null
)
{
return SendRequest<SearchPackerTaskResponse>(globalContext.QKApiHost, $"api/PackUser/SearchPackerTask",
return SendRequest<SearchPackerTaskResponse>(globalContext.QKApiHost, $"api/PackUser/SearchPackerTaskV2",
new
{
PackTaskState,
@ -64,10 +64,10 @@ namespace BBWY.Client.APIServices.QiKu
}
public ApiResponse<SearchPackerSalaryResponse> SearchPackerSalary(DateTime? StartTime, DateTime? EndTime, int pageIndex = 1,
public ApiResponse<SearchPackerSalaryResponse> SearchPackerSalaryV2(DateTime? StartTime, DateTime? EndTime, int pageIndex = 1,
int pageSize = 10)
{
return SendRequest<SearchPackerSalaryResponse>(globalContext.QKApiHost, $"api/PackUser/SearchPackerSalary",
return SendRequest<SearchPackerSalaryResponse>(globalContext.QKApiHost, $"api/PackUser/SearchPackerSalaryV2",
new
{
UserId = globalContext.User.Id.ToString(),

4
BBWY.Client/APIServices/QiKu/PackagingTaskService.cs

@ -16,7 +16,7 @@ namespace BBWY.Client.APIServices.QiKu
}
public ApiResponse<SearchPackagingTaskListResponse> SearchPackagingTaskList(string WayBillNo = null, string SourceExpressName = null, string departmentName = null, string skuId = null, string taskId = null,
public ApiResponse<SearchPackagingTaskListResponse> SearchPackagingTaskListV2(string WayBillNo = null, string SourceExpressName = null, string departmentName = null, string skuId = null, string taskId = null,
string spuId = null, string orderSn = null,
PackagingTaskExceptionState? PackagingTaskExceptionState = null,
string ShopName = null,
@ -29,7 +29,7 @@ namespace BBWY.Client.APIServices.QiKu
)
{
return SendRequest<SearchPackagingTaskListResponse>(globalContext.QKApiHost, "api/PackagingTask/SearchPackagingTaskList", new
return SendRequest<SearchPackagingTaskListResponse>(globalContext.QKApiHost, "api/PackagingTask/SearchPackagingTaskListV2", new
{
SkuTitle,
SpuTitle,

2
BBWY.Client/App.xaml.cs

@ -75,7 +75,7 @@ namespace BBWY.Client
//userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjY4NDI2OTQyNTY0NTM2MzIwIiwidGVhbUlkIjoiMTUxNjcxNTM3MjQ0NTcwMDA5NiIsInNvblRlYW1JZHMiOiIxNzE4NTQxMDYzMzk3ODM4ODQ4LDE1MTY3MTUzNzI0NDU3MDAwOTYiLCJleHAiOjE3MzAyODcxNjh9.6vXadZWQfhnxbR3320RloKv3LqqbNdZ7wDDfO3tY_5U";
//齐越季夏
// userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjIyNzY3NTkzODM0MTU2MDMyIiwidGVhbUlkIjoiMTUxNjcxNTM3MjQ0NTcwMDA5NiIsInNvblRlYW1JZHMiOiIxNTE2NzE1MzcyNDQ1NzAwMDk2LDE3MTg1NDEwNjMzOTc4Mzg4NDgiLCJleHAiOjE3MzAyODcxNjh9.ZGBU0MoJbKdkgqe9x2e3l6q-AVZwfAkUwa3oB47PWhY";
//userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjIyNzY3NTkzODM0MTU2MDMyIiwidGVhbUlkIjoiMTUxNjcxNTM3MjQ0NTcwMDA5NiIsInNvblRlYW1JZHMiOiIxNTE2NzE1MzcyNDQ1NzAwMDk2LDE3MTg1NDEwNjMzOTc4Mzg4NDgiLCJleHAiOjE3MzAyODcxNjh9.ZGBU0MoJbKdkgqe9x2e3l6q-AVZwfAkUwa3oB47PWhY";
//店铺自打包
// userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNzE5Nzc5OTU4MTYwNjI1NjY0IiwidGVhbUlkIjoiMTU0MDg4NTU3MDYyNzA0NzQyNCIsInNvblRlYW1JZHMiOiIxNzE4NTQxMDYzMzk3ODM4ODQ4IiwiZXhwIjoxNzMxNzI1NDA2fQ.VV6k8nDqTtQOY6_ma6QcX6geMU_kaswl16BGXF89so8";

4
BBWY.Client/BBWYAppSettings.json

@ -4,6 +4,6 @@
"MDSApiHost": "http://mdsapi.qiyue666.com",
"JOSApiHost": "",
"1688ApiHost": "",
// "QKApiHost": "http://localhost:8080"
"QKApiHost": "http://qiku.qiyue666.com"
"QKApiHost": "http://localhost:8080"
// "QKApiHost": "http://qiku.qiyue666.com"
}

19
BBWY.Client/GlobalContext.cs

@ -1,4 +1,5 @@
using BBWY.Client.Models;
using BBWY.Client.Models.PackUser;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Runtime.InteropServices;
@ -13,19 +14,19 @@ namespace BBWY.Client
{
ShopServiceGroupList = new List<string>();
ShopServiceGroupLowerList = new List<string>();
ClientVersion = "10229";
ClientVersion = "10230";
}
private string title;
public string Title { get=> title; set { Set(ref title, value); } }
public string Title { get => title; set { Set(ref title, value); } }
private User user;
public User User { get => user; set { Set(ref user, value); } }
@ -44,6 +45,18 @@ namespace BBWY.Client
/// </summary>
public List<string> ExpressNameList { get; set; }
/// <summary>
/// 打包赔付系数列表
/// </summary>
public List<PackagingStile> PackagingStileList { get; set; } = new List<PackagingStile>() {
new PackagingStile(){ MinNumber=0,MaxNumber=4,DisCount=0.1M},// 0<x<=4
new PackagingStile(){ MinNumber=4,MaxNumber=24,DisCount=0.15M},// 4<x<=8
new PackagingStile(){ MinNumber=24,MaxNumber=48,DisCount=0.2M},
new PackagingStile(){ MinNumber=48,MaxNumber=72,DisCount=0.3M},
new PackagingStile(){ MinNumber=72,MaxNumber=2147483647,DisCount=0.5M},
};
/// <summary>
/// JD客户端
/// </summary>

183
BBWY.Client/Helpers/PackTaskTimerHelper.cs

@ -0,0 +1,183 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace BBWY.Client.Helpers
{
public class PackTaskTimerHelper
{
/// <summary>
/// 是否停止倒计时
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static bool IsStopTimer(DateTime dateTime)
{
var hour = dateTime.Hour;
if (hour < 9 || hour >= 18 || (hour == 12))
return true;
return false;
}
/// <summary>
/// 计算有效超时时间
/// </summary>
/// <param name="startTime"></param>
/// <returns></returns>
public static DateTime AccountEffectiveOverTime(DateTime overTime)
{
var userStartTime = overTime;//有效开始时间
if (overTime.Hour < 9)
{
userStartTime = overTime.Date.AddHours(9);//未到9店 按9点计时
}
if (overTime.Hour >= 18)//从隔天9点开始计时
{
userStartTime = overTime.Date.AddHours(18);//超过18点 按次日9点计时
}
if (overTime.Hour == 12)
{
userStartTime = overTime.Date.AddHours(13);//中午未到13点 按13点计时
}
if (userStartTime.DayOfWeek == DayOfWeek.Sunday)
{
userStartTime = userStartTime.Date.AddDays(1).AddHours(9);//周日算周1 9点开始
}
return userStartTime;
}
/// <summary>
/// 计算有效当前时间
/// </summary>
/// <param name="endTime">完成时间</param>
/// <returns></returns>
public static DateTime AccountEffectiveNowTime(DateTime nowTime)
{
var userEndTime = nowTime;//有效开始时间
if (nowTime.Hour < 9)
{
userEndTime = nowTime.Date.AddDays(-1).AddHours(18);//未到9店 按前一天 18点完成
}
if (nowTime.Hour >= 18)
{
userEndTime = nowTime.Date.AddHours(18);//超过18点 按18点完成
}
if (nowTime.Hour == 12)
{
userEndTime = nowTime.Date.AddHours(12);//中午未到13点 按12点计时
}
if (userEndTime.DayOfWeek == DayOfWeek.Sunday)
{
userEndTime = userEndTime.Date.AddDays(-1).AddHours(18);//周日算周六 18点完成
}
return userEndTime;
}
/// <summary>
/// 计算有效剩余时长
/// </summary>
/// <param name="startTime">开始时间</param>
/// <param name="completedTime">完成时间</param>
/// <returns></returns>
public static TimeSpan AccountEffectiveRemainDuration(DateTime nowTime, DateTime overTime)
{
var effectiveNowTime = AccountEffectiveNowTime(nowTime);
var effectiveOverTime = AccountEffectiveOverTime(overTime);
if (effectiveNowTime < effectiveOverTime)
{
return AccountEffectiveDuration(effectiveNowTime , effectiveOverTime);
}
return -AccountEffectiveDuration( effectiveOverTime, effectiveNowTime);
}
/// <summary>
/// 计算有效时长(任务耗时)
/// </summary>
/// <param name="startTime">开始时间</param>
/// <param name="completedTime">完成时间</param>
/// <returns></returns>
public static TimeSpan AccountEffectiveDuration(DateTime effectiveStartTime, DateTime effectiveCompletedTime)
{
var timespan = effectiveCompletedTime - effectiveStartTime;
var hoursTimeSpan = timespan.Add(TimeSpan.FromDays(-CountSundays(effectiveStartTime, effectiveCompletedTime)));//计算小时差
//1. 开始时间 12点 结束时间 10点
if (effectiveStartTime.TimeOfDay > effectiveCompletedTime.TimeOfDay)
{
if (effectiveStartTime.Hour <= 12)//-16小时
return hoursTimeSpan.Add(TimeSpan.FromHours(-16));
else
{
if (effectiveCompletedTime.Hour <= 12)
return hoursTimeSpan.Add(TimeSpan.FromHours(-15));
else
return hoursTimeSpan.Add(TimeSpan.FromHours(-16));
}
}
else//2. 开始时间 10点 结束时间 11点/ 14点
{
if (effectiveCompletedTime.Hour > 12)
if (effectiveStartTime.Hour <= 12)
return hoursTimeSpan.Add(TimeSpan.FromHours(-1));
return hoursTimeSpan;
}
}
/// <summary>
/// 判断两个日期之间有多少个星期日
/// </summary>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
private static int CountSundays(DateTime startDate, DateTime endDate)
{
int sundays = 0;
while (startDate <= endDate)
{
if (startDate.DayOfWeek == DayOfWeek.Sunday)
{
sundays++;
}
startDate = startDate.AddDays(1);
}
return sundays;
}
}
}

11
BBWY.Client/Models/APIModel/Response/PackTask/FeesItemResponse.cs

@ -139,6 +139,17 @@ namespace BBWY.Client.Models.APIModel.Response.PackTask
/// 工序套餐任务量
/// </summary>
public int ProcessComboTaskCount { get; set; }
/// <summary>
/// 赔付费用
/// </summary>
public decimal? CompensateFees { get; set; }
/// <summary>
/// 实际打包费用
/// </summary>
public decimal? ActualPackFees { get; set; }
}
public class PackItemResponse

21
BBWY.Client/Models/APIModel/Response/PackTask/SearchWaitFallWareResponse.cs

@ -78,6 +78,11 @@ namespace BBWY.Client.Models.APIModel
/// 提交采购单过期时间
/// </summary>
public DateTime? SetPurchaseOrderOverTime { get; set; }
public DateTime? SetWaybillNoOverTime { get; set; }
/// <summary>
/// 贴单超时时间备注
/// </summary>
public string SetWaybillNoOverTimeMsg { get; set; }
}
public class WaitFallWareModel:NotifyObject
@ -154,6 +159,22 @@ namespace BBWY.Client.Models.APIModel
public bool IsFallWareOverTime { get => isFallWareOverTime; set { Set(ref isFallWareOverTime, value); } }
/// <summary>
/// 贴单过期时间
/// </summary>
public DateTime? SetWaybillNoOverTime { get; set; }
/// <summary>
/// 贴单超时时间备注
/// </summary>
public string SetWaybillNoOverTimeMsg { get; set; }
private string setWaybillNoRemainTime;
public string SetWaybillNoRemainTime { get => setWaybillNoRemainTime; set { Set(ref setWaybillNoRemainTime, value); } }
private bool isSetWaybillNoOverTime;
public bool IsSetWaybillNoOverTime { get => isSetWaybillNoOverTime; set { Set(ref isSetWaybillNoOverTime, value); } }
}
public class BoxConfigureData
{

20
BBWY.Client/Models/APIModel/Response/PackUser/SearchPackerSalaryResponse.cs

@ -65,6 +65,16 @@ namespace BBWY.Client.Models.APIModel
/// 当日总日新
/// </summary>
public decimal DaySalary { get; set; }
/// <summary>
/// 超时赔付金额
/// </summary>
public decimal DayOverTimeCompensateFees { get; set; }
/// <summary>
/// 实际收益
/// </summary>
public decimal DayActualSalary { get; set; }
/// <summary>
/// 当日任务量
/// </summary>
@ -95,5 +105,15 @@ namespace BBWY.Client.Models.APIModel
/// 任务件数
/// </summary>
public int TaskSkuItemCount { get; set; }
/// <summary>
/// 超时赔付金额
/// </summary>
public decimal OverTimeCompensateFees { get; set; }
/// <summary>
/// 实际收益
/// </summary>
public decimal ActualSalary { get; set; }
}
}

22
BBWY.Client/Models/APIModel/Response/PackUser/SearchPackerTaskResponse.cs

@ -179,6 +179,28 @@ namespace BBWY.Client.Models.APIModel
/// </summary>
public Models.PackagingTaskExceptionState PackagingTaskExceptionState { get; set; }
/// <summary>
/// 包装是否超时
/// </summary>
public bool IsPackOverTime { get; set; }
/// <summary>
/// 实际收益
/// </summary>
public decimal ActualIncome { get; set; }
/// <summary>
/// 赔付金额
/// </summary>
public string CompensationFee { get; set; }
/// <summary>
/// 打包任务耗时时长
/// </summary>
public string PackTaskDurationTime { get; set; }
}
public class MarkMessageModel

16
BBWY.Client/Models/APIModel/Response/PackagingTask/SearchPackagingTaskListResponse.cs

@ -249,5 +249,21 @@ namespace BBWY.Client.Models.APIModel
public string AbortRemark { get; set; }
public string OrderId { get; set; }
/// <summary>
/// 实际收益
/// </summary>
public decimal ActualIncome { get; set; }
/// <summary>
/// 赔付金额
/// </summary>
public string CompensationFee { get; set; }
/// <summary>
/// 是否打包超时
/// </summary>
public bool IsPackOverTime { get; set; }
}
}

18
BBWY.Client/Models/Enums.cs

@ -519,9 +519,25 @@
= 2,//已到货
= 3,
= 4,
= 8,
= 8,
= 11,
=13,
= 15,
}
/// <summary>
/// 超时任务类型 (待验收 = 2, 待包装 = 3,待封箱 = 4,待设置采购单 = 8,待转运 = 11,待排单 = 13,待贴单 = 15)
/// </summary>
public enum OverTimeType
{
= 0,
= 2,
= 3,
= 4,
= 8,
= 11,
= 13,
= 15,
}
/// <summary>

19
BBWY.Client/Models/PackTask/PackTaskModel.cs

@ -560,10 +560,12 @@ namespace BBWY.Client.Models
public decimal ConsumableFees { get; set; }
private decimal packTotalFees;
/// <summary>
/// 总计
/// </summary>
public decimal PackTotalFees { get; set; }
public decimal PackTotalFees { get => packTotalFees; set { Set(ref packTotalFees, value); } }
@ -602,6 +604,21 @@ namespace BBWY.Client.Models
/// </summary>
public string PackRemainTime { get => packRemainTime; set { Set(ref packRemainTime, value); } }
private decimal actualIncome;
/// <summary>
/// 预估收益
/// </summary>
public decimal ActualIncome { get => actualIncome; set { Set(ref actualIncome, value); } }
private string compensationFee;
/// <summary>
/// 赔付金额
/// </summary>
public string CompensationFee { get => compensationFee; set { Set(ref compensationFee, value); } }
/// <summary>
/// 打包完成时间(超时时间)
/// </summary>

17
BBWY.Client/Models/PackTask/ShopTotal.cs

@ -7,14 +7,14 @@ using System.Text;
namespace BBWY.Client.Models.PackTask
{
public class ShopTotal :NotifyObject
public class ShopTotal : NotifyObject
{
private FeesItemResponse feesItemResponse;
public FeesItemResponse FeesItemResponse { get => feesItemResponse; set { Set(ref feesItemResponse, value); } }
private long id;
public long Id { get => id; set { Set(ref id, value); } }
@ -75,6 +75,17 @@ namespace BBWY.Client.Models.PackTask
/// 打包费用折扣价
/// </summary>
public decimal? PackDisCountFees { get; set; }
/// <summary>
/// 赔付费用
/// </summary>
public decimal? CompensateFees { get; set; }
/// <summary>
/// 实际打包费用
/// </summary>
public decimal? ActualPackFees { get; set; }
///// <summary>
///// 折扣类型
///// </summary>
@ -112,7 +123,7 @@ namespace BBWY.Client.Models.PackTask
ConsumableStr = string.Join(",", ConsumableList.Select(x => $"{x.ItemName} {x.ItemPrice}*{x.ItemCount}"));
return $"{TaskId},{CreateTime?.ToString("MM-dd")},{IsSettle},{DepartmentName},{ShopName}" +
$",{SkuCount},{ArrivalQuantity},\"{ConsumableStr}\" ,{ConsumableFees},{ProcessTypeName},{ProcessComboName},{ProcessComboPrice},{PackFees},{DiscountFactor},{PackDisCountFees},{AllFees}";
$",{SkuCount},{ArrivalQuantity},\"{ConsumableStr}\" ,{ConsumableFees},{ProcessTypeName},{ProcessComboName},{ProcessComboPrice},{PackFees},{DiscountFactor},{PackDisCountFees},{CompensateFees},{ActualPackFees},{AllFees}";
}
}

18
BBWY.Client/Models/PackUser/PackagingStile.cs

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace BBWY.Client.Models.PackUser
{
/// <summary>
/// 打包超时赔付系数
/// </summary>
public class PackagingStile
{
public int MinNumber { get; set; }
public int MaxNumber { get; set; }
public decimal DisCount { get; set; }
}
}

14
BBWY.Client/Models/PackUser/PackerTaskModel.cs

@ -46,7 +46,19 @@ namespace BBWY.Client.Models.PackUser
private decimal actualIncome ;
/// <summary>
/// 实际收益
/// </summary>
public decimal ActualIncome { get => actualIncome; set { Set(ref actualIncome, value); } }
private string compensationFee;
/// <summary>
/// 赔付金额
/// </summary>
public string CompensationFee { get => compensationFee; set { Set(ref compensationFee, value); } }
}
}

10
BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs

@ -143,12 +143,12 @@ namespace BBWY.Client.ViewModels.PackTask
Task.Factory.StartNew(() =>
{
IsLoading = true;
var res = packTaskService.ShopTotalV2(SearchSkuId, SearchTaskId, null, StartDate, EndDate, SearchShopName,
var res = packTaskService.ShopTotalV3(SearchSkuId, SearchTaskId, null, StartDate, EndDate, SearchShopName,
SearchDepartment, 0, 0);//获取全部数据
if (res.Success)
{
//string title = "任务ID,日期,是否结清,部门,店铺,对接人,sku名称,sku数量,增值服务,打包服务,耗材服务,原价,促销折扣,结算价格,对接备注";
string title = "任务ID,日期,是否结清,所属部门,所属店铺,包装数量,收货数量,耗材明细,耗材总价,工序类型,工序套餐,工序单价,包装原价,包装折扣系数,包装折扣价,总收费";
string title = "任务ID,日期,是否结清,所属部门,所属店铺,包装数量,收货数量,耗材明细,耗材总价,工序类型,工序套餐,工序单价,包装原价,包装折扣系数,包装折扣价,包装赔付费用,实际打包费用,总收费";
var excelList = res.Data.ShopTotals.Select(x => x.ToString()).ToList();
excelList.Insert(0, title);
System.IO.File.WriteAllLines(fileName, excelList, Encoding.UTF8);
@ -219,7 +219,7 @@ namespace BBWY.Client.ViewModels.PackTask
Task.Factory.StartNew(() =>
{
IsLoading = true;
var res = packTaskService.ShopTotalV2(SearchSkuId, SearchTaskId, null, StartDate, EndDate, SearchShopName,
var res = packTaskService.ShopTotalV3(SearchSkuId, SearchTaskId, null, StartDate, EndDate, SearchShopName,
SearchDepartment, PageIndex, PageSize);
if (res != null && res.Success)
{
@ -241,7 +241,9 @@ namespace BBWY.Client.ViewModels.PackTask
ConsumableList = shopTotal.ConsumableList,
ProcessComboPrice = shopTotal.ProcessComboPrice,
ProcessComboTaskCount = shopTotal.ProcessComboTaskCount,
DiscountFoctor = shopTotal.DiscountFactor
DiscountFoctor = shopTotal.DiscountFactor,
ActualPackFees=shopTotal.ActualPackFees,
CompensateFees=shopTotal.CompensateFees,
};
App.Current.Dispatcher.Invoke(() =>

330
BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs

@ -40,7 +40,7 @@ namespace BBWY.Client.ViewModels.PackTask
public partial class TaskListViewModel : BaseVM, IDenpendency//注入服务
{
private QualityTaskExceptionState? qualityTaskExceptionState= Models.QualityTaskExceptionState.;
private QualityTaskExceptionState? qualityTaskExceptionState = Models.QualityTaskExceptionState.;
/// <summary>
/// 任务状态
/// </summary>
@ -309,7 +309,7 @@ namespace BBWY.Client.ViewModels.PackTask
/// </summary>
public string QualityTaskCount { get => qualityTaskCount; set { Set(ref qualityTaskCount, value); } }
private PackagingTaskExceptionState? packagingTaskExceptionState;
@ -406,7 +406,7 @@ namespace BBWY.Client.ViewModels.PackTask
public TaskListViewModel(PackTaskService packTaskService, GlobalContext globalContext, SealBoxService sealBoxService, ProductService productService, MarkMessageService markMessageService, PackagingTaskService packagingTaskService, QualityTaskService qualityTaskService)
public TaskListViewModel(PackTaskService packTaskService, GlobalContext globalContext, SealBoxService sealBoxService, ProductService productService, MarkMessageService markMessageService, PackagingTaskService packagingTaskService, QualityTaskService qualityTaskService, PackTaskOverTimeDetailService packTaskOverTimeDetailService)
{
this.globalContext = globalContext;
this.markMessageService = markMessageService;
@ -494,6 +494,7 @@ namespace BBWY.Client.ViewModels.PackTask
else
PageIndex = 1;
});
this.packTaskOverTimeDetailService = packTaskOverTimeDetailService;
}
MarkMessageService markMessageService;
@ -684,12 +685,13 @@ namespace BBWY.Client.ViewModels.PackTask
addProductWindow.ShowDialog();
}
PackTaskOverTimeDetailService packTaskOverTimeDetailService;
private void SubmitOverTimeMarkMsg(object param)
{
var paramList = (object[])param;
var id = (long)paramList[0];
var markMsg = paramList[1].ToString();
SubmitOverTimeMarkMsgWindow submitOverTimeMarkMsgWindow = new SubmitOverTimeMarkMsgWindow(OverTimeTaskType., id, markMsg, packTaskService, ReflashTask);
var markMsg = paramList[1]?.ToString();
SubmitOverTimeMarkMsgWindow submitOverTimeMarkMsgWindow = new SubmitOverTimeMarkMsgWindow(packTaskOverTimeDetailService , id, markMsg, TaskMessageType.ID, OverTimeType., ReflashTask);
submitOverTimeMarkMsgWindow.ShowDialog();
}
@ -881,7 +883,7 @@ namespace BBWY.Client.ViewModels.PackTask
public void SearchTaskList()
{
IsStartThread = false;
IsLoading = true;
@ -890,7 +892,7 @@ namespace BBWY.Client.ViewModels.PackTask
Task.Factory.StartNew(() =>
{
try
@ -898,8 +900,8 @@ namespace BBWY.Client.ViewModels.PackTask
if (TaskState == Models.TaskState.)
{
PackTaskList = new ObservableCollection<PackTaskModel>();//初始化数据
var datas = qualityTaskService.SearchQualityTaskList( skuId:SearchSkuId,taskId: SearchTaskId,spuId: SearchSpuId, orderSn: SearchOrderSn, QualityTaskExceptionState: this.QualityTaskExceptionState, shopId: globalContext.User.Shop.ShopId.ToString(),
pageIndex: PageIndex,pageSize: PageSize);
var datas = qualityTaskService.SearchQualityTaskList(skuId: SearchSkuId, taskId: SearchTaskId, spuId: SearchSpuId, orderSn: SearchOrderSn, QualityTaskExceptionState: this.QualityTaskExceptionState, shopId: globalContext.User.Shop.ShopId.ToString(),
pageIndex: PageIndex, pageSize: PageSize);
@ -963,13 +965,16 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in packtasks)
{
TimeSpan datetime;
if (item.SendToSetSkuConfigureTime != null)
datetime = item.QualityCompletionOverTime.Value.Subtract(item.SendToSetSkuConfigureTime.Value);
else
datetime = item.QualityCompletionOverTime.Value.Subtract(DateTime.Now);
//TimeSpan datetime;
//if (item.SendToSetSkuConfigureTime != null)
// datetime = item.QualityCompletionOverTime.Value.Subtract(item.SendToSetSkuConfigureTime.Value);
//else
// datetime = item.QualityCompletionOverTime.Value.Subtract(DateTime.Now);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.QualityCompletionOverTime.Value);
item.QualityRemainTime = OverTimeHelper.GetTimeString(datetime);
if (datetime.TotalMilliseconds > 0)
if (datetime.TotalMilliseconds >= 0)
{
item.IsQualityOverTime = false;
@ -1004,10 +1009,10 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in packtasks)
{
TimeSpan datetime;
datetime = item.QualityCompletionOverTime.Value.Subtract(item.TaskAbortTime.Value);
//TimeSpan datetime = item.QualityCompletionOverTime.Value.Subtract(item.TaskAbortTime.Value);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(item.TaskAbortTime.Value, item.QualityCompletionOverTime.Value);
item.QualityRemainTime = OverTimeHelper.GetTimeString(datetime);
if (datetime.TotalMilliseconds > 0)
if (datetime.TotalMilliseconds >= 0)
{
item.IsQualityOverTime = false;
@ -1064,11 +1069,12 @@ namespace BBWY.Client.ViewModels.PackTask
{
}
}
else if (TaskState == Models.TaskState.) {
else if (TaskState == Models.TaskState.)
{
PackTaskList = new ObservableCollection<PackTaskModel>();//初始化数据
var datas = packagingTaskService.SearchPackagingTaskList(skuId: SearchSkuId, taskId: SearchTaskId, spuId: SearchSpuId, orderSn: SearchOrderSn, PackagingTaskExceptionState: this.PackagingTaskExceptionState, shopId: globalContext.User.Shop.ShopId.ToString(),
var datas = packagingTaskService.SearchPackagingTaskListV2(skuId: SearchSkuId, taskId: SearchTaskId, spuId: SearchSpuId, orderSn: SearchOrderSn, PackagingTaskExceptionState: this.PackagingTaskExceptionState, shopId: globalContext.User.Shop.ShopId.ToString(),
pageIndex: PageIndex, pageSize: PageSize);
if (datas != null && datas.Data != null && datas.Success)
{
@ -1122,47 +1128,102 @@ namespace BBWY.Client.ViewModels.PackTask
}
if (TaskState == Models.TaskState.)
var packCompletedTasks = PackTaskList.Where(p => p.TaskState == Models.TaskState. && p.PackCompletionOverTime != null && p.TaskAbortTime == null).ToList();
if (packCompletedTasks.Count() > 0)
{
var packCompletedTasks = PackTaskList.Where(p => p.TaskState == Models.TaskState. && p.PackCompletionOverTime != null).ToList();
if (packCompletedTasks.Count() > 0)
{
packOverTimeThread = new Thread(() =>
packOverTimeThread = new Thread(() =>
{
Thread.Sleep(1000);
IsStartThread = true;
while (IsStartThread)
{
IsStartThread = true;
while (IsStartThread)
App.Current.Dispatcher.BeginInvoke(new Action(() =>
{
App.Current.Dispatcher.BeginInvoke(new Action(() =>
foreach (var item in packCompletedTasks)
{
foreach (var item in packCompletedTasks)
//var datetime = item.PackCompletionOverTime.Value.Subtract(DateTime.Now);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.PackCompletionOverTime.Value);
if (datetime.TotalMilliseconds >= 0)
{
var datetime = item.PackCompletionOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
{
item.IsPackOverTime = false;
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
}
else
{
item.IsPackOverTime = true;
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
}
item.IsPackOverTime = false;
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
}
else
{
item.IsPackOverTime = true;
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
//获取 datetime 的小时数 的绝对值
var hours = Math.Abs(datetime.TotalHours);
var packagingStile = globalContext.PackagingStileList.SingleOrDefault(p => p.MinNumber < hours && p.MaxNumber >= hours);//获取折扣系数
var discount = packagingStile?.DisCount ?? 0;
//赔付费用
var compensationFee = Math.Round(item.PackageFees * discount, 2);
item.CompensationFee = $"{Math.Round(item.PackageFees, 2)}*{discount}={compensationFee}";
//实际收益
item.ActualIncome = item.PackageFees - compensationFee;
item.PackTotalFees = item.ActualIncome + item.ConsumableFees;
}
}));
Thread.Sleep(1000);
}
});
//任务倒计时数据
packOverTimeThread.IsBackground = true;
packOverTimeThread.Start();
}
}));
Thread.Sleep(1000);
}
});
//任务倒计时数据
packOverTimeThread.IsBackground = true;
packOverTimeThread.Start();
}
}
//任务状态为待打包
var packtasks = PackTaskList.Where(p => p.TaskState == Models.TaskState. && p.TaskAbortTime != null).ToList();
App.Current.Dispatcher.BeginInvoke(new Action(() =>
{
foreach (var item in packtasks)
{
//TimeSpan datetime = item.PackCompletionOverTime.Value.Subtract(item.TaskAbortTime.Value);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(item.TaskAbortTime.Value, item.PackCompletionOverTime.Value);
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
if (datetime.TotalMilliseconds >= 0)
{
item.IsPackOverTime = false;
}
else
{
item.IsPackOverTime = true;
//获取 datetime 的小时数 的绝对值
var hours = Math.Abs(datetime.TotalHours);
var packagingStile = globalContext.PackagingStileList.SingleOrDefault(p => p.MinNumber < hours && p.MaxNumber >= hours);//获取折扣系数
var discount = packagingStile?.DisCount ?? 0;
//赔付费用
var compensationFee = Math.Round(item.PackageFees * discount, 2);
item.CompensationFee = $"{Math.Round(item.PackageFees, 2)}*{discount}={compensationFee}";
//实际收益
item.ActualIncome = item.PackageFees - compensationFee;
item.PackTotalFees = item.ActualIncome + item.ConsumableFees;
}
}
}));
@ -1185,6 +1246,7 @@ namespace BBWY.Client.ViewModels.PackTask
});
item.ExpressOrderList = expressData.Data;
}));
@ -1206,7 +1268,7 @@ namespace BBWY.Client.ViewModels.PackTask
else
{
PackTaskList = new ObservableCollection<PackTaskModel>();//初始化数据
var datas = packTaskService.SearchTaskList(SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, this.TaskState,
var datas = packTaskService.SearchTaskListV2(SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, this.TaskState,
PageIndex, PageSize);
if (datas != null && datas.Data != null && datas.Success)
{
@ -1228,18 +1290,20 @@ namespace BBWY.Client.ViewModels.PackTask
data.SkuTitle = item.SkuGoodsTitle;
data.AcceptName = item.UserName;
if (!item.OrderId.IsNullOrEmpty() && !item.SkuId.IsNullOrEmpty())//加载物流信息
{
var expressData = packTaskService.GetPurchaseExpressOrderList(item.OrderId, item.SkuId);
if (expressData != null && expressData.Success && expressData.Data != null)
{
expressData.Data.ForEach(e =>
{
e.ExpressState = ExpressOrderHelper.GetExpressStateName(e.ExpressState);
});
data.ExpressOrderList = expressData.Data;
}
}
//if (!item.OrderId.IsNullOrEmpty() && !item.SkuId.IsNullOrEmpty())//加载物流信息
//{
// var expressData = packTaskService.GetPurchaseExpressOrderList(item.OrderId, item.SkuId);
// if (expressData != null && expressData.Success && expressData.Data != null)
// {
// expressData.Data.ForEach(e =>
// {
// e.ExpressState = ExpressOrderHelper.GetExpressStateName(e.ExpressState);
// });
// data.ExpressOrderList = expressData.Data;
// }
//}
if (item.BarCodeDTO != null && item.BarCodeDTO.Id > 0)
{
data.BarCodeModel = item.BarCodeDTO;
@ -1278,62 +1342,17 @@ namespace BBWY.Client.ViewModels.PackTask
}
//任务状态为待验收
if (TaskState == Models.TaskState.)
if (TaskState == Models.TaskState.)
{
var packtasks = PackTaskList.Where(p => p.TaskState == Models.TaskState. && p.QualityCompletionOverTime != null).ToList();
if (packtasks.Count() > 0)
var packCompletedTasks = PackTaskList.Where(p => p.TaskState == Models.TaskState. && p.ScheduleOverTime != null).ToList();
if (packCompletedTasks.Count() > 0)
{
//if (qualityOverTimeThread!=null)
//if (packOverTimeThread!=null)
//{
// qualityOverTimeThread.Abort();
// packOverTimeThread.Abort();
//}
qualityOverTimeThread = new Thread(() =>
{
IsStartThread = true;
while (IsStartThread)
{
App.Current.Dispatcher.BeginInvoke(new Action(() =>
{
foreach (var item in packtasks)
{
TimeSpan datetime;
if (item.SendToSetSkuConfigureTime != null)
datetime = item.QualityCompletionOverTime.Value.Subtract(item.SendToSetSkuConfigureTime.Value);
else
datetime = item.QualityCompletionOverTime.Value.Subtract(DateTime.Now);
item.QualityRemainTime = OverTimeHelper.GetTimeString(datetime);
if (datetime.TotalMilliseconds > 0)
item.IsQualityOverTime = false;
else
item.IsQualityOverTime = true;
}
}));
Thread.Sleep(1000);
}
});
//任务倒计时数据
qualityOverTimeThread.IsBackground = true;
qualityOverTimeThread.Start();
}
}
//任务状态为待打包
if (TaskState == Models.TaskState.)
{
var packCompletedTasks = PackTaskList.Where(p => p.TaskState == Models.TaskState. && p.PackCompletionOverTime != null).ToList();
if (packCompletedTasks.Count() > 0)
{
packOverTimeThread = new Thread(() =>
scheduleOverTimeThread = new Thread(() =>
{
IsStartThread = true;
while (IsStartThread)
@ -1342,16 +1361,18 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in packCompletedTasks)
{
var datetime = item.PackCompletionOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
//var datetime = item.ScheduleOverTime.Value.Subtract(DateTime.Now);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.ScheduleOverTime.Value);
if (datetime.TotalMilliseconds >= 0)
{
item.IsPackOverTime = false;
item.PackRemainTime = $"{datetime.Days}天{datetime.Hours}小时{datetime.Minutes}分";
item.IsScheduleOverTime = false;
item.ScheduleRemainTime = OverTimeHelper.GetTimeString(datetime);
}
else
{
item.IsPackOverTime = true;
item.PackRemainTime = $"{-datetime.Days}天{-datetime.Hours}小时{-datetime.Minutes}分";
item.IsScheduleOverTime = true;
item.ScheduleRemainTime = OverTimeHelper.GetTimeString(datetime);
}
}
@ -1361,59 +1382,45 @@ namespace BBWY.Client.ViewModels.PackTask
});
//任务倒计时数据
packOverTimeThread.IsBackground = true;
packOverTimeThread.Start();
scheduleOverTimeThread.IsBackground = true;
scheduleOverTimeThread.Start();
}
}
if (TaskState == Models.TaskState.)
Task.Factory.StartNew(() =>
{
var packCompletedTasks = PackTaskList.Where(p => p.TaskState == Models.TaskState. && p.ScheduleOverTime != null).ToList();
if (packCompletedTasks.Count() > 0)
foreach (var item in PackTaskList)
{
//if (packOverTimeThread!=null)
//{
// packOverTimeThread.Abort();
//}
scheduleOverTimeThread = new Thread(() =>
if (!item.OrderId.IsNullOrEmpty() && !item.SkuId.IsNullOrEmpty())
{
IsStartThread = true;
while (IsStartThread)
var expressData = packTaskService.GetPurchaseExpressOrderList(item.OrderId, item.SkuId);
if (expressData != null && expressData.Success && expressData.Data != null)
{
App.Current.Dispatcher.BeginInvoke(new Action(() =>
{
foreach (var item in packCompletedTasks)
expressData.Data.ForEach(e =>
{
var datetime = item.ScheduleOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
{
item.IsScheduleOverTime = false;
item.ScheduleRemainTime = OverTimeHelper.GetTimeString(datetime);
}
else
{
item.IsScheduleOverTime = true;
item.ScheduleRemainTime = OverTimeHelper.GetTimeString(datetime);
}
e.ExpressState = ExpressOrderHelper.GetExpressStateName(e.ExpressState);
}
});
item.ExpressOrderList = expressData.Data;
}));
Thread.Sleep(1000);
}
});
//任务倒计时数据
scheduleOverTimeThread.IsBackground = true;
scheduleOverTimeThread.Start();
}
}
}
}
});
}
else
{
@ -1508,8 +1515,9 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in sealboxTasks)
{
var datetime = item.SealBoxPackOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.SealBoxPackOverTime.Value);
//var datetime = item.SealBoxPackOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds >= 0)
{
item.IsSealBoxOverTime = false;
item.SealBoxRemainTime = $"{datetime.Hours}小时{datetime.Minutes}分";
@ -1595,8 +1603,9 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in fallWareTasks)
{
var datetime = item.SetPurchaseOrderOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
//var datetime = item.SetPurchaseOrderOverTime.Value.Subtract(DateTime.Now);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.SetPurchaseOrderOverTime.Value);
if (datetime.TotalMilliseconds >= 0)
{
item.IsFallWareOverTime = false;
item.FallWareRemainTime = $"{datetime.Hours}小时{datetime.Minutes}分";
@ -1758,8 +1767,9 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in sealboxTasks)
{
var datetime = item.TransportOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
// var datetime = item.TransportOverTime.Value.Subtract(DateTime.Now);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.TransportOverTime.Value);
if (datetime.TotalMilliseconds >= 0)
{
item.IsWaitTransportOverTime = false;
item.WaitTransportRemainTime = OverTimeHelper.GetTimeString(datetime);

263
BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs

@ -248,7 +248,7 @@ namespace BBWY.Client.ViewModels.PackTask
public ObservableCollection<OverTimeTaskResponse> OverTimeTaskList { get => overTimeTaskList; set { Set(ref overTimeTaskList, value); } }
private ObservableCollection<OverTimeTaskType> overTimeTaskTypeList = new ObservableCollection<OverTimeTaskType> {
OverTimeTaskType., OverTimeTaskType., OverTimeTaskType., OverTimeTaskType., OverTimeTaskType., OverTimeTaskType., OverTimeTaskType.
OverTimeTaskType., OverTimeTaskType., OverTimeTaskType., OverTimeTaskType., OverTimeTaskType., OverTimeTaskType., OverTimeTaskType., OverTimeTaskType.
};
/// <summary>
///超时任务类型
@ -813,7 +813,7 @@ namespace BBWY.Client.ViewModels.PackTask
/// </summary>
public ICommand PrintShelvesCommand { get; set; }
public WareHouseListViewModel(PackTaskService packTaskService, GlobalContext globalContext, SealBoxService sealBoxService, PackUserService packUserService, MarkMessageService markMessageService, QualityTaskService qualityTaskService, PackagingTaskService packagingTaskService, PackTaskAbortService packTaskAbortService)
public WareHouseListViewModel(PackTaskService packTaskService, GlobalContext globalContext, SealBoxService sealBoxService, PackUserService packUserService, MarkMessageService markMessageService, QualityTaskService qualityTaskService, PackagingTaskService packagingTaskService, PackTaskAbortService packTaskAbortService, PackTaskOverTimeDetailService packTaskOverTimeDetailService)
{
@ -958,6 +958,7 @@ namespace BBWY.Client.ViewModels.PackTask
PrintShelvesCommand = new RelayCommand<PackTaskModel>(PrintShelves);
LoadSplitDatas();
this.packTaskOverTimeDetailService = packTaskOverTimeDetailService;
}
private void LoadSplitDatas()
@ -1431,6 +1432,7 @@ namespace BBWY.Client.ViewModels.PackTask
}
}
PackTaskOverTimeDetailService packTaskOverTimeDetailService;
private void SubmitOverTimeMarkMsg(object param)
{
@ -1439,30 +1441,30 @@ namespace BBWY.Client.ViewModels.PackTask
var markMsg = paramList[1]?.ToString();
OverTimeTaskType overTimeTaskType = OverTimeTaskType.;
OverTimeType overTimeType = OverTimeType.;
TaskMessageType taskMessageType = TaskMessageType.ID;
switch (TaskState.Value)
{
case Models.TaskState.:
overTimeTaskType = Models.OverTimeTaskType.;
overTimeType = Models.OverTimeType.; taskMessageType = TaskMessageType.ID;
break;
case Models.TaskState.:
overTimeTaskType = Models.OverTimeTaskType.;
overTimeType = Models.OverTimeType.; taskMessageType = TaskMessageType.ID;
break;
case Models.TaskState.:
overTimeTaskType = Models.OverTimeTaskType.;
overTimeType = Models.OverTimeType.; taskMessageType = TaskMessageType.ID;
break;
case Models.TaskState.:
overTimeTaskType = Models.OverTimeTaskType.;
overTimeType = Models.OverTimeType.; taskMessageType = TaskMessageType.ID;
break;
case Models.TaskState.:
overTimeTaskType = Models.OverTimeTaskType.;
overTimeType = Models.OverTimeType.; taskMessageType = TaskMessageType.ID;
break;
case Models.TaskState.:
overTimeTaskType = Models.OverTimeTaskType.;
overTimeType = Models.OverTimeType.; taskMessageType = TaskMessageType.ID;
break;
}
SubmitOverTimeMarkMsgWindow submitOverTimeMarkMsgWindow = new SubmitOverTimeMarkMsgWindow(overTimeTaskType, id, markMsg, packTaskService, ReflashTask);
SubmitOverTimeMarkMsgWindow submitOverTimeMarkMsgWindow =new SubmitOverTimeMarkMsgWindow(packTaskOverTimeDetailService, id, markMsg, taskMessageType, overTimeType, ReflashTask);
submitOverTimeMarkMsgWindow.ShowDialog();
}
@ -2058,7 +2060,7 @@ namespace BBWY.Client.ViewModels.PackTask
{
PageSize = 20;
OverTimeTaskList = new ObservableCollection<OverTimeTaskResponse>();
var datas = packTaskService.SearchOverTimeTaskList(null, StartTime, EndTime, OverTimeTaskState, OverTimeTaskType, PageIndex, PageSize);
var datas = packTaskOverTimeDetailService.SearchOverTimeTaskList(null, StartTime, EndTime, OverTimeTaskState, OverTimeTaskType, PageIndex, PageSize);
if (datas != null && datas.Data != null && datas.Success)
{
var dataModel = datas.Data;
@ -2113,8 +2115,9 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in sealboxTasks)
{
var datetime = item.TransportOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
// var datetime = item.TransportOverTime.Value.Subtract(DateTime.Now);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.TransportOverTime.Value);
if (datetime.TotalMilliseconds >= 0)
{
item.IsWaitTransportOverTime = false;
item.WaitTransportRemainTime = OverTimeHelper.GetTimeString(datetime);
@ -2178,11 +2181,57 @@ namespace BBWY.Client.ViewModels.PackTask
BoxConfigureData = item.BoxConfigureData,
ProductCount = item.ProductCount,
WareType = item.WareType,
SetPurchaseOrderOverTime = item.SetPurchaseOrderOverTime
SetPurchaseOrderOverTime = item.SetPurchaseOrderOverTime,
SetWaybillNoOverTime=item.SetWaybillNoOverTime,
SetWaybillNoOverTimeMsg=item.SetWaybillNoOverTimeMsg,
});
}));
}
if (PositionState== PositionState.)
{
var sealboxTasks = WaitFallWareList.Where(p => p.SetWaybillNoOverTime != null).ToList();
if (sealboxTasks.Count() > 0 && TaskState == Models.TaskState.)
{
fallwareOverTimeThread = new Thread(() =>
{
IsStartThread = true;
Thread.Sleep(1000);
while (IsStartThread)
{
App.Current.Dispatcher.BeginInvoke(new Action(() =>
{
foreach (var item in sealboxTasks)
{
// var datetime = item.TransportOverTime.Value.Subtract(DateTime.Now);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.SetWaybillNoOverTime.Value);
if (datetime.TotalMilliseconds >= 0)
{
item.IsSetWaybillNoOverTime = false;
item.SetWaybillNoRemainTime = OverTimeHelper.GetTimeString(datetime);
}
else
{
item.IsSetWaybillNoOverTime = true;
item.SetWaybillNoRemainTime = OverTimeHelper.GetTimeString(datetime);
}
}
}));
Thread.Sleep(1000);
}
});
//任务倒计时数据
fallwareOverTimeThread.IsBackground = true;
fallwareOverTimeThread.Start();
}
}
}
else
{
@ -2233,8 +2282,10 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in sealboxTasks)
{
var datetime = item.SealBoxPackOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
//var datetime = item.SealBoxPackOverTime.Value.Subtract(DateTime.Now);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.SealBoxPackOverTime.Value);
if (datetime.TotalMilliseconds >= 0)
{
item.IsSealBoxOverTime = false;
item.SealBoxRemainTime = OverTimeHelper.GetTimeString(datetime);
@ -2387,6 +2438,7 @@ namespace BBWY.Client.ViewModels.PackTask
var packtasks = PackTaskList.Where(p => p.TaskState == Models.TaskState. && p.QualityCompletionOverTime != null && p.TaskAbortTime == null).ToList();
if (packtasks.Count() > 0)
{
Thread.Sleep(1000);
IsStartThread = true;
while (IsStartThread)
{
@ -2394,13 +2446,26 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in packtasks)
{
TimeSpan datetime;
if (item.SendToSetSkuConfigureTime != null)
datetime = item.QualityCompletionOverTime.Value.Subtract(item.SendToSetSkuConfigureTime.Value);
else
datetime = item.QualityCompletionOverTime.Value.Subtract(DateTime.Now);
//TimeSpan datetime;
//if (item.SendToSetSkuConfigureTime != null)
// datetime = item.QualityCompletionOverTime.Value.Subtract(item.SendToSetSkuConfigureTime.Value);
//else
// datetime = item.QualityCompletionOverTime.Value.Subtract(DateTime.Now);
//item.QualityRemainTime = OverTimeHelper.GetTimeString(datetime);
//if (datetime.TotalMilliseconds >= 0)
//{
// item.IsQualityOverTime = false;
//}
//else
//{
// item.IsQualityOverTime = true;
//}
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.QualityCompletionOverTime.Value);
item.QualityRemainTime = OverTimeHelper.GetTimeString(datetime);
if (datetime.TotalMilliseconds > 0)
if (datetime.TotalMilliseconds >= 0)
{
item.IsQualityOverTime = false;
@ -2435,10 +2500,11 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in packtasks)
{
TimeSpan datetime;
datetime = item.QualityCompletionOverTime.Value.Subtract(item.TaskAbortTime.Value);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(item.TaskAbortTime.Value, item.QualityCompletionOverTime.Value);
//datetime = item.QualityCompletionOverTime.Value.Subtract(item.TaskAbortTime.Value);
item.QualityRemainTime = OverTimeHelper.GetTimeString(datetime);
if (datetime.TotalMilliseconds > 0)
if (datetime.TotalMilliseconds >= 0)
{
item.IsQualityOverTime = false;
@ -2499,7 +2565,7 @@ namespace BBWY.Client.ViewModels.PackTask
{
PackTaskList = new ObservableCollection<PackTaskModel>();//初始化数据
var datas = packagingTaskService.SearchPackagingTaskList(SearchWayBillNo, SearchExpressName, SearchDepartment, SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, this.PackagingTaskExceptionState, SearchShopName,
var datas = packagingTaskService.SearchPackagingTaskListV2(SearchWayBillNo, SearchExpressName, SearchDepartment, SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, this.PackagingTaskExceptionState, SearchShopName,
PageIndex, PageSize, SearchSkuTitle, SearchSpuTitle, SearchPackUserName);
if (datas != null && datas.Data != null && datas.Success)
@ -2512,8 +2578,6 @@ namespace BBWY.Client.ViewModels.PackTask
{
var data = JsonConvert.DeserializeObject<PackTaskModel>(JsonConvert.SerializeObject(item));
data.ItemList = new List<SkuMessage>() { new SkuMessage
{ BrandName = item.BrandName,
Logo= item.Logo,
@ -2546,6 +2610,8 @@ namespace BBWY.Client.ViewModels.PackTask
data.PackUser = string.Join("\r\n", item.PackUserName);
}
App.Current.Dispatcher.Invoke(new Action(() =>
{
PackTaskList.Add(data);
@ -2561,6 +2627,7 @@ namespace BBWY.Client.ViewModels.PackTask
packOverTimeThread = new Thread(() =>
{
Thread.Sleep(1000);
IsStartThread = true;
while (IsStartThread)
{
@ -2568,8 +2635,10 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in packCompletedTasks)
{
var datetime = item.PackCompletionOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
//var datetime = item.PackCompletionOverTime.Value.Subtract(DateTime.Now);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.PackCompletionOverTime.Value);
if (datetime.TotalMilliseconds >= 0)
{
item.IsPackOverTime = false;
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
@ -2578,6 +2647,21 @@ namespace BBWY.Client.ViewModels.PackTask
{
item.IsPackOverTime = true;
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
//获取 datetime 的小时数 的绝对值
var hours = Math.Abs(datetime.TotalHours);
var packagingStile = globalContext.PackagingStileList.SingleOrDefault(p => p.MinNumber < hours && p.MaxNumber >= hours);//获取折扣系数
var discount = packagingStile?.DisCount ?? 0;
//赔付费用
var compensationFee = Math.Round(item.PackageFees * discount, 2);
item.CompensationFee = $"{Math.Round(item.PackageFees, 2)}*{discount}={compensationFee}";
//实际收益
item.ActualIncome = item.PackageFees - compensationFee;
item.PackTotalFees = item.ActualIncome + item.ConsumableFees;
}
}
@ -2604,10 +2688,11 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in packtasks)
{
TimeSpan datetime;
datetime = item.PackCompletionOverTime.Value.Subtract(item.TaskAbortTime.Value);
//TimeSpan datetime = item.PackCompletionOverTime.Value.Subtract(item.TaskAbortTime.Value);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(item.TaskAbortTime.Value, item.PackCompletionOverTime.Value);
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
if (datetime.TotalMilliseconds > 0)
if (datetime.TotalMilliseconds >= 0)
{
item.IsPackOverTime = false;
@ -2615,6 +2700,20 @@ namespace BBWY.Client.ViewModels.PackTask
else
{
item.IsPackOverTime = true;
//获取 datetime 的小时数 的绝对值
var hours = Math.Abs(datetime.TotalHours);
var packagingStile = globalContext.PackagingStileList.SingleOrDefault(p => p.MinNumber < hours && p.MaxNumber >= hours);//获取折扣系数
var discount = packagingStile?.DisCount ?? 0;
//赔付费用
var compensationFee = Math.Round(item.PackageFees * discount, 2);
item.CompensationFee = $"{Math.Round(item.PackageFees, 2)}*{discount}={compensationFee}";
//实际收益
item.ActualIncome = item.PackageFees - compensationFee;
item.PackTotalFees = item.ActualIncome + item.ConsumableFees;
}
}
@ -2667,7 +2766,7 @@ namespace BBWY.Client.ViewModels.PackTask
else
{
PackTaskList = new ObservableCollection<PackTaskModel>();//初始化数据
var datas = packTaskService.SearchTaskList(SearchWayBillNo, SearchExpressName, SearchDepartment, SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, this.TaskState, SearchShopName,
var datas = packTaskService.SearchTaskListV2(SearchWayBillNo, SearchExpressName, SearchDepartment, SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, this.TaskState, SearchShopName,
PageIndex, PageSize, SearchSkuTitle, SearchSpuTitle, SearchPackUserName);
if (datas != null && datas.Data != null && datas.Success)
@ -2731,94 +2830,6 @@ namespace BBWY.Client.ViewModels.PackTask
}));
}
if (TaskState == Models.TaskState.)
{
qualityOverTimeThread = new Thread(() =>
{
var packtasks = PackTaskList.Where(p => p.TaskState == Models.TaskState. && p.QualityCompletionOverTime != null).ToList();
if (packtasks.Count() > 0)
{
IsStartThread = true;
while (IsStartThread)
{
App.Current.Dispatcher.BeginInvoke(new Action(() =>
{
foreach (var item in packtasks)
{
TimeSpan datetime;
if (item.SendToSetSkuConfigureTime != null)
datetime = item.QualityCompletionOverTime.Value.Subtract(item.SendToSetSkuConfigureTime.Value);
else
datetime = item.QualityCompletionOverTime.Value.Subtract(DateTime.Now);
item.QualityRemainTime = OverTimeHelper.GetTimeString(datetime);
if (datetime.TotalMilliseconds > 0)
{
item.IsQualityOverTime = false;
}
else
{
item.IsQualityOverTime = true;
}
}
}));
Thread.Sleep(1000);
}
}
});
//任务倒计时数据
qualityOverTimeThread.IsBackground = true;
qualityOverTimeThread.Start();
//任务状态为待验收
}
if (TaskState == Models.TaskState.)
{
var packCompletedTasks = PackTaskList.Where(p => p.TaskState == Models.TaskState. && p.PackCompletionOverTime != null).ToList();
if (packCompletedTasks.Count() > 0)
{
packOverTimeThread = new Thread(() =>
{
IsStartThread = true;
while (IsStartThread)
{
App.Current.Dispatcher.BeginInvoke(new Action(() =>
{
foreach (var item in packCompletedTasks)
{
var datetime = item.PackCompletionOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
{
item.IsPackOverTime = false;
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
}
else
{
item.IsPackOverTime = true;
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
}
}
}));
Thread.Sleep(1000);
}
});
//任务倒计时数据
packOverTimeThread.IsBackground = true;
packOverTimeThread.Start();
}
}
if (TaskState == Models.TaskState.)
{
@ -2827,6 +2838,7 @@ namespace BBWY.Client.ViewModels.PackTask
{
scheduleOverTimeThread = new Thread(() =>
{
Thread.Sleep(1000);
IsStartThread = true;
while (IsStartThread)
{
@ -2834,8 +2846,9 @@ namespace BBWY.Client.ViewModels.PackTask
{
foreach (var item in packCompletedTasks)
{
var datetime = item.ScheduleOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
//var datetime = item.ScheduleOverTime.Value.Subtract(DateTime.Now);
TimeSpan datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.ScheduleOverTime.Value);
if (datetime.TotalMilliseconds >= 0)
{
item.IsScheduleOverTime = false;
item.ScheduleRemainTime = OverTimeHelper.GetTimeString(datetime);

15
BBWY.Client/ViewModels/PackerTask/PackerSalaryViewModel.cs

@ -56,6 +56,15 @@ namespace BBWY.Client.ViewModels.PackerTask
public DateTime EndTime { get => endTime; set { Set(ref endTime, value); } }
//统计开始日期
public DateTime totalStartDate;
public DateTime TotalStartDate { get => totalStartDate; set { Set(ref totalStartDate, value); } }
//统计结束日期
public DateTime totalEndDate;
public DateTime TotalEndDate { get => totalEndDate; set { Set(ref totalEndDate, value); } }
public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } }
public int PageSize { get => pageSize; set { Set(ref pageSize, value); } }
@ -109,13 +118,15 @@ namespace BBWY.Client.ViewModels.PackerTask
IsLoading = true;
try
{
var res = packUserService.SearchPackerSalary(StartTime.Date, EndTime.Date, PageIndex, PageSize);
var res = packUserService.SearchPackerSalaryV2(StartTime.Date, EndTime.Date, PageIndex, PageSize);
if (res != null && res.Success)
{
OrderCount = res.Data.TotalCount;
TotalSalary = res.Data.TotalSalary;
TotalSkuItemCount = res.Data.TotalSkuItemCount;
TotalTaskCount = res.Data.TotalTaskCount;
TotalEndDate = EndTime.Date;
TotalStartDate = StartTime.Date;
App.Current.Dispatcher.Invoke(() =>
{
PackUserSalaryList = res.Data.PackerDaySalaries;
@ -169,7 +180,7 @@ namespace BBWY.Client.ViewModels.PackerTask
Task.Factory.StartNew(() =>
{
IsLoading = true;
var res = packTaskService.TotalPackUserSalary(SearchUserName, StartTime, EndTime, 0, 0);//获取全部数据
var res = packTaskService.TotalPackUserSalaryV1(SearchUserName, StartTime, EndTime, 0, 0);//获取全部数据
if (res.Success)
{
//string title = "任务ID,日期,是否结清,部门,店铺,对接人,sku名称,sku数量,增值服务,打包服务,耗材服务,原价,促销折扣,结算价格,对接备注";

53
BBWY.Client/ViewModels/PackerTask/PackerTaskViewModel.cs

@ -408,7 +408,7 @@ namespace BBWY.Client.ViewModels.PackerTask
/// <summary>
/// 构造函数
/// </summary>
public PackerTaskViewModel(PackUserService packUserService, PackTaskService packTaskService, MarkMessageService markMessageService, GlobalContext globalContext, QualityTaskService qualityTaskService)
public PackerTaskViewModel(PackUserService packUserService, PackTaskService packTaskService, MarkMessageService markMessageService, GlobalContext globalContext, QualityTaskService qualityTaskService, PackTaskOverTimeDetailService packTaskOverTimeDetailService)
{
this.packUserService = packUserService;
@ -460,9 +460,7 @@ namespace BBWY.Client.ViewModels.PackerTask
PackagingTaskExceptionCommand = new RelayCommand<long>(PackagingTaskException);
this.qualityTaskService = qualityTaskService;
this.packTaskOverTimeDetailService = packTaskOverTimeDetailService;
}
QualityTaskService qualityTaskService;
private void PackagingTaskException(long taskId)
@ -646,7 +644,7 @@ namespace BBWY.Client.ViewModels.PackerTask
Task.Factory.StartNew(() =>
{
var res = packUserService.SearchPackerTask(PackTaskState: PackTaskState, WayBillNo: SearchWayBillNo, SourceExpressName: SearchExpressName,
var res = packUserService.SearchPackerTaskV2(PackTaskState: PackTaskState, WayBillNo: SearchWayBillNo, SourceExpressName: SearchExpressName,
departmentName: SearchDepartment, SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, SearchShopName, PageIndex, PageSize, SearchSkuTitle, SearchSpuTitle,
PackagingTaskExceptionState
);
@ -665,16 +663,15 @@ namespace BBWY.Client.ViewModels.PackerTask
if (PackTaskState == Models.PackTaskState.)
{
if (item.PackCompletionOverTime < item.PackCompletionTime)//超时
{
data.IsPackOverTime = true;
data.PackRemainTime = OverTimeHelper.GetTimeString(item.PackCompletionTime.Value.Subtract(item.PackCompletionOverTime.Value));
data.PackRemainTime = OverTimeHelper.GetTimeString(PackTaskTimerHelper.AccountEffectiveRemainDuration(item.PackCompletionOverTime.Value, item.PackCompletionTime.Value));
}
else
{
data.IsPackOverTime = false;
data.PackRemainTime = OverTimeHelper.GetTimeString(item.PackCompletionTime.Value.Subtract(item.SetPackUserTaskTime.Value));
data.PackRemainTime = data.PackTaskDurationTime;// OverTimeHelper.GetTimeString(PackTaskTimerHelper.AccountEffectiveRemainDuration(item.SetPackUserTaskTime.Value, item.PackCompletionTime.Value));
}
}
@ -692,11 +689,6 @@ namespace BBWY.Client.ViewModels.PackerTask
if (PackTaskState == Models.PackTaskState.)
{
if (PackagingTaskExceptionState == Models.PackagingTaskExceptionState.)
{
var packCompletedTasks = PackerTaskModelList.Where(p => p.TaskState == Models.TaskState. && p.PackCompletionOverTime != null && p.TaskAbortTime == null).ToList();
@ -712,16 +704,37 @@ namespace BBWY.Client.ViewModels.PackerTask
{
foreach (var item in packCompletedTasks)
{
var datetime = item.PackCompletionOverTime.Value.Subtract(DateTime.Now);
if (datetime.TotalMilliseconds > 0)
var datetime = PackTaskTimerHelper.AccountEffectiveRemainDuration(DateTime.Now, item.PackCompletionOverTime.Value);
if (datetime.TotalMilliseconds >= 0)
{
item.IsPackOverTime = false;
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
}
//todo:超时赔付 包装超时赔付系数
}
else
{
item.IsPackOverTime = true;
item.PackRemainTime = OverTimeHelper.GetTimeString(datetime);
//获取 datetime 的小时数 的绝对值
var hours = Math.Abs(datetime.TotalHours);
var packagingStile = globalContext.PackagingStileList.SingleOrDefault(p => p.MinNumber < hours && p.MaxNumber >= hours);//获取折扣系数
var discount = packagingStile?.DisCount ?? 0;
//赔付费用
var compensationFee = Math.Round( item.PackerFee * discount,2);
item.CompensationFee = $"{Math.Round(item.PackerFee, 2)}*{discount}={compensationFee}";
//实际收益
item.ActualIncome = item.PackerFee - compensationFee;
}
}
@ -791,7 +804,7 @@ namespace BBWY.Client.ViewModels.PackerTask
}
}
PackTaskOverTimeDetailService packTaskOverTimeDetailService;
private void SubmitOverTimeMarkMsg(object param)
{
@ -799,10 +812,10 @@ namespace BBWY.Client.ViewModels.PackerTask
var id = (long)paramList[0];
var markMsg = paramList[1]?.ToString();
var overTimeTaskType = Models.OverTimeTaskType.;
var overTimeTaskType = Models.OverTimeType.;
var taskMessageType = TaskMessageType.ID;
SubmitOverTimeMarkMsgWindow submitOverTimeMarkMsgWindow = new SubmitOverTimeMarkMsgWindow(overTimeTaskType, id, markMsg, packTaskService, ReflashTask);
SubmitOverTimeMarkMsgWindow submitOverTimeMarkMsgWindow = new SubmitOverTimeMarkMsgWindow(packTaskOverTimeDetailService, id, markMsg, taskMessageType, overTimeTaskType, ReflashTask);
submitOverTimeMarkMsgWindow.ShowDialog();
}
public void ReflashTask()//刷新界面

4
BBWY.Client/ViewModels/TotalPackTask/PackUserSalaryViewModel.cs

@ -92,7 +92,7 @@ namespace BBWY.Client.ViewModels.TotalPackTask
Task.Factory.StartNew(() =>
{
IsLoading = true;
var res = packTaskService.TotalPackUserSalary(searchUserName, StartTime, EndTime, PageIndex, PageSize);
var res = packTaskService.TotalPackUserSalaryV1(searchUserName, StartTime, EndTime, PageIndex, PageSize);
if (res != null && res.Success)
{
OrderCount = res.Data.TotalCount;
@ -142,7 +142,7 @@ namespace BBWY.Client.ViewModels.TotalPackTask
Task.Factory.StartNew(() =>
{
IsLoading = true;
var res = packTaskService.TotalPackUserSalary(SearchUserName, StartTime, EndTime, 0, 0);//获取全部数据
var res = packTaskService.TotalPackUserSalaryV1(SearchUserName, StartTime, EndTime, 0, 0);//获取全部数据
if (res.Success)
{
//string title = "任务ID,日期,是否结清,部门,店铺,对接人,sku名称,sku数量,增值服务,打包服务,耗材服务,原价,促销折扣,结算价格,对接备注";

10
BBWY.Client/ViewModels/TotalPackTask/ShopPackTaskTotalViewModel.cs

@ -129,12 +129,12 @@ namespace BBWY.Client.ViewModels.TotalPackTask
Task.Factory.StartNew(() =>
{
IsLoading = true;
var res = packTaskService.ShopTotalV2(SearchSkuId, SearchTaskId, globalContext.User.Shop.ShopId.ToString(), StartDate, EndDate, null,
var res = packTaskService.ShopTotalV3(SearchSkuId, SearchTaskId, globalContext.User.Shop.ShopId.ToString(), StartDate, EndDate, null,
null, 0, 0);//获取全部数据
if (res.Success)
{
//string title = "任务ID,日期,是否结清,部门,店铺,对接人,sku名称,sku数量,增值服务,打包服务,耗材服务,原价,促销折扣,结算价格,对接备注";
string title = "任务ID,日期,是否结清,所属部门,所属店铺,包装数量,收货数量,耗材明细,耗材总价,工序类型,工序套餐,工序单价,包装原价,包装折扣系数,包装折扣价,总收费";
string title = "任务ID,日期,是否结清,所属部门,所属店铺,包装数量,收货数量,耗材明细,耗材总价,工序类型,工序套餐,工序单价,包装原价,包装折扣系数,包装折扣价,包装赔付费用,实际打包费用,总收费";
var excelList = res.Data.ShopTotals.Select(x => x.ToString()).ToList();
excelList.Insert(0, title);
System.IO.File.WriteAllLines(fileName, excelList, Encoding.UTF8);
@ -154,7 +154,7 @@ namespace BBWY.Client.ViewModels.TotalPackTask
Task.Factory.StartNew(() =>
{
IsLoading = true;
var res = packTaskService.ShopTotalV2(SearchSkuId, SearchTaskId, globalContext.User.Shop.ShopId.ToString(), StartDate, EndDate, null,
var res = packTaskService.ShopTotalV3(SearchSkuId, SearchTaskId, globalContext.User.Shop.ShopId.ToString(), StartDate, EndDate, null,
null, PageIndex, PageSize);
if (res != null && res.Success)
{
@ -176,7 +176,9 @@ namespace BBWY.Client.ViewModels.TotalPackTask
ConsumableList = shopTotal.ConsumableList,
ProcessComboPrice = shopTotal.ProcessComboPrice,
ProcessComboTaskCount = shopTotal.ProcessComboTaskCount,
DiscountFoctor = shopTotal.DiscountFactor
DiscountFoctor = shopTotal.DiscountFactor,
ActualPackFees = shopTotal.ActualPackFees,
CompensateFees = shopTotal.CompensateFees,
};
App.Current.Dispatcher.Invoke(() =>

73
BBWY.Client/Views/FallWare/WaitFallWareControl.xaml

@ -36,7 +36,7 @@
<ColumnDefinition Width="400"/>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="110"/>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="{Binding SealBoxConfigureType,Converter={StaticResource objConverter},ConverterParameter=已配置:150:0}"/>
<!--<ColumnDefinition Width="{Binding DataContext.SealBoxConfigureType,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}},Converter={StaticResource objConverter},ConverterParameter=待配置:150:0}"/>-->
<ColumnDefinition MinWidth="80"/>
<ColumnDefinition Width="100"/>
@ -118,6 +118,42 @@
<TextBlock VerticalAlignment="Center" Text="对接人:" Margin="16,0,0,0" />
<TextBlock VerticalAlignment="Center" Text="{Binding AcceptUserNames}" Margin="5,0,0,0" />
<Grid Grid.Column="3" Margin="50 0 0 0" Visibility="{Binding DataContext.SealBoxConfigureType,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}},Converter={StaticResource objConverter},ConverterParameter=已配置:Visible:Collapsed}">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal"
Visibility="{Binding SetWaybillNoRemainTime,Converter={StaticResource objConverter},ConverterParameter=#null:Collapsed:Visible}"
>
<StackPanel Margin="10,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"
Visibility="{Binding IsSetWaybillNoOverTime,Converter={StaticResource objConverter},ConverterParameter=false:Visible:Collapsed}"
>
<TextBlock Text="剩余: " />
<TextBlock Text="{Binding SetWaybillNoRemainTime}"/>
</StackPanel>
<StackPanel Margin="10,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"
Visibility="{Binding IsSetWaybillNoOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}"
>
<TextBlock Foreground="Red" Text="超时: "/>
<TextBlock Foreground="Red" Text="{Binding SetWaybillNoRemainTime}"/>
</StackPanel>
<c:BButton Margin="0 0 0 0" Content="{Binding SetWaybillNoOverTimeMsg ,Converter={StaticResource objConverter},ConverterParameter=#null:提交备注:修改备注}" Style="{StaticResource LinkButton}"
>
<b:Interaction.Triggers>
<b:EventTrigger EventName="PreviewMouseLeftButtonDown">
<b:InvokeCommandAction Command="{Binding DataContext.SubmitOverTimeMarkMsgCommand,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}">
<b:InvokeCommandAction.CommandParameter>
<MultiBinding Converter="{StaticResource mptConverter}">
<Binding Path="SealBoxId"/>
<Binding Path="SetWaybillNoOverTimeMsg"/>
</MultiBinding>
</b:InvokeCommandAction.CommandParameter>
</b:InvokeCommandAction>
</b:EventTrigger>
</b:Interaction.Triggers>
</c:BButton>
</StackPanel>
</Grid>
</StackPanel>
<c:BButton Grid.Column="0" Grid.ColumnSpan="5" Background="Transparent" HorizontalAlignment="Stretch" BorderThickness="0" Panel.ZIndex="-1"
Command="{Binding DataContext.LoadFallWareSkuDataCommand,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
@ -138,8 +174,8 @@
<ColumnDefinition Width="400"/>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="110"/>
<ColumnDefinition Width="0"/>
<!--<ColumnDefinition Width="{Binding DataContext.SealBoxConfigureType,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}},Converter={StaticResource objConverter},ConverterParameter=待配置:150:0}"/>-->
<!--<ColumnDefinition Width="{Binding SealBoxConfigureType,Converter={StaticResource objConverter},ConverterParameter=已配置:120:0}"/>-->
<ColumnDefinition Width="{Binding DataContext.SealBoxConfigureType,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}},Converter={StaticResource objConverter},ConverterParameter=已配置:150:0}"/>
<ColumnDefinition MinWidth="80"/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
@ -315,25 +351,42 @@
</StackPanel>
</StackPanel>
</Grid>
<!--<Grid Grid.Column="3" >
<Grid Grid.Column="3" Visibility="{Binding DataContext.SealBoxConfigureType,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}},Converter={StaticResource objConverter},ConverterParameter=已配置:Visible:Collapsed}">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"
Visibility="{Binding FallWareRemainTime,Converter={StaticResource objConverter},ConverterParameter=#null:Collapsed:Visible}"
Visibility="{Binding SetWaybillNoRemainTime,Converter={StaticResource objConverter},ConverterParameter=#null:Collapsed:Visible}"
>
<StackPanel Margin="10,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"
Visibility="{Binding IsFallWareOverTime,Converter={StaticResource objConverter},ConverterParameter=false:Visible:Collapsed}"
Visibility="{Binding IsSetWaybillNoOverTime,Converter={StaticResource objConverter},ConverterParameter=false:Visible:Collapsed}"
>
<TextBlock Text="剩余: " />
<TextBlock Text="{Binding FallWareRemainTime}"/>
<TextBlock Text="{Binding SetWaybillNoRemainTime}"/>
</StackPanel>
<StackPanel Margin="10,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"
Visibility="{Binding IsFallWareOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}"
Visibility="{Binding IsSetWaybillNoOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}"
>
<TextBlock Foreground="Red" Text="超时: "/>
<TextBlock Foreground="Red" Text="{Binding FallWareRemainTime}"/>
<TextBlock Foreground="Red" Text="{Binding SetWaybillNoRemainTime}"/>
</StackPanel>
<c:BButton Margin="0 5 0 0" Content="{Binding SetWaybillNoOverTimeMsg ,Converter={StaticResource objConverter},ConverterParameter=#null:提交备注:修改备注}" Style="{StaticResource LinkButton}"
>
<b:Interaction.Triggers>
<b:EventTrigger EventName="PreviewMouseLeftButtonDown">
<b:InvokeCommandAction Command="{Binding DataContext.SubmitOverTimeMarkMsgCommand,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}">
<b:InvokeCommandAction.CommandParameter>
<MultiBinding Converter="{StaticResource mptConverter}">
<Binding Path="SealBoxId"/>
<Binding Path="SetWaybillNoOverTimeMsg"/>
</MultiBinding>
</b:InvokeCommandAction.CommandParameter>
</b:InvokeCommandAction>
</b:EventTrigger>
</b:Interaction.Triggers>
</c:BButton>
</StackPanel>
</Grid>-->
</Grid>
<Grid Grid.Column="4" >

2
BBWY.Client/Views/FallWare/WareFallWareListControl.xaml

@ -114,7 +114,7 @@
Background="{StaticResource Button.Selected.Background}" BorderThickness="0" Foreground="White"/>
</Grid>
</Grid>
<StackPanel Orientation="Horizontal" Grid.Row="1">
<RadioButton Content="{Binding TaskState,Converter={StaticResource objConverter},ConverterParameter=待落仓:待贴单:待封箱}" Height="35" Width="130" Tag="{Binding FallWareConfiguredCount,Mode=TwoWay}" IsChecked="{Binding SealBoxConfigureType,Converter={StaticResource objConverter},ConverterParameter=已配置:True:False}"
Command="{Binding SetSealBoxConfigureTypeCommand}" CommandParameter="{x:Static cmodel:SealBoxConfigureType.已配置}"

53
BBWY.Client/Views/PackTask/FeesExcelV2Control.xaml.cs

@ -76,6 +76,12 @@ namespace BBWY.Client.Views.PackTask
string xaml = @" <Grid xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
<Grid.ColumnDefinitions >
<ColumnDefinition [:IsShopTotal:] />
<ColumnDefinition Width=""120""/>
<ColumnDefinition Width=""120""/>
<ColumnDefinition Width=""120""/>
<ColumnDefinition Width=""120""/>
<ColumnDefinition Width=""120""/>
<ColumnDefinition Width=""120""/>
[:Columns:]
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
@ -145,13 +151,33 @@ namespace BBWY.Client.Views.PackTask
<RowDefinition Height=""*""/>
</Grid.RowDefinitions>
<Border Width=""1"" HorizontalAlignment=""Left"" BorderBrush=""#D7D7D7"" Grid.RowSpan=""2"" BorderThickness=""0,0,1,0""/>
<TextBlock Text="""" Grid.Row=""0"" VerticalAlignment=""Center"" HorizontalAlignment=""Center""/>
<TextBlock Text="""" Grid.Row=""0"" VerticalAlignment=""Center"" HorizontalAlignment=""Center""/>
<TextBlock Text=""[:PackFees:]"" Grid.Row=""1"" VerticalAlignment=""Center"" HorizontalAlignment=""Center""/>
</Grid>";
//赔付金额
string compensationFeesStr = @" <Grid Grid.Column=""5"" MinWidth=""84"" Grid.Row=""1"" Grid.RowSpan=""3"" >
<Grid.RowDefinitions>
<RowDefinition Height=""2*""/>
<RowDefinition Height=""*""/>
</Grid.RowDefinitions>
<Border Width=""1"" HorizontalAlignment=""Left"" BorderBrush=""#D7D7D7"" Grid.RowSpan=""2"" BorderThickness=""0,0,1,0""/>
<TextBlock Text="""" Grid.Row=""0"" VerticalAlignment=""Center"" HorizontalAlignment=""Center""/>
<TextBlock Text=""[:CompensationFees:]"" Grid.Row=""1"" VerticalAlignment=""Center"" HorizontalAlignment=""Center""/>
</Grid>";
//实际收益
string actualIncomeStr = @" <Grid Grid.Column=""6"" MinWidth=""84"" Grid.Row=""1"" Grid.RowSpan=""3"" >
<Grid.RowDefinitions>
<RowDefinition Height=""2*""/>
<RowDefinition Height=""*""/>
</Grid.RowDefinitions>
<Border Width=""1"" HorizontalAlignment=""Left"" BorderBrush=""#D7D7D7"" Grid.RowSpan=""2"" BorderThickness=""0,0,1,0""/>
<TextBlock Text="""" Grid.Row=""0"" VerticalAlignment=""Center"" HorizontalAlignment=""Center""/>
<TextBlock Text=""[:ActualIncome:]"" Grid.Row=""1"" VerticalAlignment=""Center"" HorizontalAlignment=""Center""/>
</Grid>";
string columnStr = "<ColumnDefinition Width=\"[:Width:]\"/>";
string workProcess = "<TextBlock Text=\"包装服务\" Grid.Column=\"1\" Grid.ColumnSpan=\"[:ProcessCount:]\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\"/>\r\n <Border Width=\"1\" HorizontalAlignment=\"Left\" BorderBrush=\"#D7D7D7\" Grid.Column=\"[:1+ProcessCount:]\" Grid.Row=\"0\" Grid.RowSpan=\"4\" BorderThickness=\"1,0,0,0\"/>\r\n ";
string workProcess = "<TextBlock Text=\"包装服务\" Grid.Column=\"1\" Grid.ColumnSpan=\"[:ProcessCount:]\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\"/>\r\n <Border Width=\"1\" HorizontalAlignment=\"Left\" BorderBrush=\"#D7D7D7\" Grid.Column=\"[:1+ProcessCount:]\" Grid.Row=\"0\" Grid.RowSpan=\"6\" BorderThickness=\"1,0,0,0\"/>\r\n ";
string consumableService = "<TextBlock Text=\"包装耗材\" Grid.Column=\"[:1+ProcessCount:]\" Grid.ColumnSpan=\"[:ConsumableCount:]\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\"/>\r\n <Border Width=\"1\" HorizontalAlignment=\"Left\" BorderBrush=\"#D7D7D7\" Grid.Column=\"[:1+ProcessCount:+ConsumableCount]\" Grid.Row=\"0\" Grid.RowSpan=\"4\" BorderThickness=\"1,0,0,0\"/>\r\n ";
@ -197,20 +223,32 @@ namespace BBWY.Client.Views.PackTask
var consumableList = FeesItem.ConsumableList;
var processCount = 4;
var processCount = 6;
var consumableCount = consumableList.Count();
if (consumableCount > 0)
{
consumableCount++;
}
columnStr = columnStr.Replace("[:Width:]", "*");
var columnCount = consumableCount + processCount + 2;
var columnCount = consumableCount + 2;
StringBuilder columns = new StringBuilder();
for (int i = 1; i < columnCount; i++)
{
columns.AppendLine(columnStr);
}
columnCount += processCount;
StringBuilder serviceData = new StringBuilder();
int allCount = consumableCount + processCount;
@ -226,8 +264,13 @@ namespace BBWY.Client.Views.PackTask
serviceData.AppendLine(discountFactorStr.Replace("[:DiscountFactor:]", FeesItem.DiscountFoctor?.ToString()));
serviceData.AppendLine(processFeesStr.Replace("[:PackFees:]", FeesItem.PackFees.ToString("0.00")));
//赔付金额
serviceData.AppendLine(compensationFeesStr.Replace("[:CompensationFees:]", FeesItem.CompensateFees?.ToString("0.00")));
//实际收益
serviceData.AppendLine(actualIncomeStr.Replace("[:ActualIncome:]", FeesItem.ActualPackFees?.ToString("0.00")));
int rowIndex = 4;
int rowIndex = 6;
if (consumableList.Count > 0)
{

2
BBWY.Client/Views/PackTask/PackDetailWindow.xaml

@ -612,7 +612,7 @@
<ColumnDefinition/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<TextBlock Margin="0 0 0 0" FontSize="15" FontWeight="Bold">
<TextBlock Margin="0 0 0 0" FontSize="15" FontWeight="Bold" TextWrapping="Wrap">
<Run Text="包装员:"/>
<Run Text="{Binding PackUserName}"/>
</TextBlock>

51
BBWY.Client/Views/PackagingTask/ShopWaitPackingTaskControl.xaml

@ -391,10 +391,53 @@
</Grid>
<StackPanel Orientation="Vertical" Grid.Column="8" VerticalAlignment="Center">
<TextBlock Style="{StaticResource middleTextBlock}">
<Run Text="人工:"/>
<Run Text="{Binding PackageFees,StringFormat=0.00}"/>
</TextBlock>
<StackPanel Visibility="{Binding IsPackOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Collapsed:Visible}">
<TextBlock Style="{StaticResource middleTextBlock}">
<Run Text="人工:"/>
<Run Text="{Binding PackageFees,StringFormat=0.00}"/>
</TextBlock>
</StackPanel>
<StackPanel Visibility="{Binding IsPackOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}" Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock Style="{StaticResource middleTextBlock}">
<Run Text="人工:"/>
<Run Text="{Binding ActualIncome,StringFormat=0.00}"/>
</TextBlock>
<Path x:Name="path_fees_name"
Style="{StaticResource path_question}"
Width="14" Margin="0,0,0,0" Fill="{StaticResource Text.Pink}"
ToolTipService.InitialShowDelay="0" ToolTipService.ShowDuration="20000"
>
<!--Visibility="{Binding FeesItemResponse,Converter={StaticResource objConverter},ConverterParameter=#null:Collapsed:Visible }"-->
<Path.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<Grid>
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left" Visibility="{Binding IsPackOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}">
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="原收益:"/>
<TextBlock Text="{Binding PackageFees,StringFormat=0.00}"/>
</StackPanel>
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="超时赔付:"/>
<TextBlock Text="{Binding CompensationFee,StringFormat=0.00}"/>
</StackPanel>
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="预估收益:"/>
<TextBlock Text="{Binding ActualIncome,StringFormat=0.00}"/>
</StackPanel>
</StackPanel>
</Grid>
</ToolTip>
</Path.ToolTip>
</Path>
</StackPanel>
<TextBlock Style="{StaticResource middleTextBlock}" Margin="0 8 0 8">
<Run Text="耗材:"/>
<Run Text="{Binding ConsumableFees,StringFormat=0.00}"/>

51
BBWY.Client/Views/PackagingTask/WaitPackingTaskControl.xaml

@ -425,10 +425,53 @@ Command="{Binding DataContext. UpdateShelvesNumberCommand,RelativeSource={Relati
</Grid>
<StackPanel Orientation="Vertical" Grid.Column="8" VerticalAlignment="Center">
<TextBlock Style="{StaticResource middleTextBlock}">
<Run Text="人工:"/>
<Run Text="{Binding PackageFees,StringFormat=0.00}"/>
</TextBlock>
<StackPanel Visibility="{Binding IsPackOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Collapsed:Visible}">
<TextBlock Style="{StaticResource middleTextBlock}">
<Run Text="人工:"/>
<Run Text="{Binding PackageFees,StringFormat=0.00}"/>
</TextBlock>
</StackPanel>
<StackPanel Visibility="{Binding IsPackOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}" Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock Style="{StaticResource middleTextBlock}">
<Run Text="人工:"/>
<Run Text="{Binding ActualIncome,StringFormat=0.00}"/>
</TextBlock>
<Path x:Name="path_fees_name"
Style="{StaticResource path_question}"
Width="14" Margin="0,0,0,0" Fill="{StaticResource Text.Pink}"
ToolTipService.InitialShowDelay="0" ToolTipService.ShowDuration="20000"
>
<!--Visibility="{Binding FeesItemResponse,Converter={StaticResource objConverter},ConverterParameter=#null:Collapsed:Visible }"-->
<Path.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<Grid>
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left" Visibility="{Binding IsPackOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}">
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="原收益:"/>
<TextBlock Text="{Binding PackageFees,StringFormat=0.00}"/>
</StackPanel>
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="超时赔付:"/>
<TextBlock Text="{Binding CompensationFee,StringFormat=0.00}"/>
</StackPanel>
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="预估收益:"/>
<TextBlock Text="{Binding ActualIncome,StringFormat=0.00}"/>
</StackPanel>
</StackPanel>
</Grid>
</ToolTip>
</Path.ToolTip>
</Path>
</StackPanel>
<TextBlock Style="{StaticResource middleTextBlock}" Margin="0 8 0 8">
<Run Text="耗材:"/>
<Run Text="{Binding ConsumableFees,StringFormat=0.00}"/>

34
BBWY.Client/Views/PackerTask/PackerPackCompletedControl.xaml

@ -170,7 +170,7 @@
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="140"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition MinWidth="100"/>
@ -228,7 +228,7 @@
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="140"/>
<ColumnDefinition MinWidth="100"/>
<ColumnDefinition MinWidth="200"/>
<ColumnDefinition Width="150"/>
<ColumnDefinition MinWidth="200"/>
<ColumnDefinition Width="0"/>
@ -259,7 +259,7 @@
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="140"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition MinWidth="100"/>
@ -373,10 +373,30 @@
</Grid>
<Grid Grid.Column="3" >
<TextBlock Style="{StaticResource middleTextBlock}"
Text="{Binding PackerFee,StringFormat=0.00}"
TextWrapping="Wrap"
/>
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center" Visibility="{Binding IsPackOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Collapsed:Visible}">
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" >
<TextBlock Text="实际收益:"/>
<TextBlock Text="{Binding PackerFee,StringFormat=0.00}"/>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left" Visibility="{Binding IsPackOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}">
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="原收益:"/>
<TextBlock Text="{Binding PackerFee,StringFormat=0.00}"/>
</StackPanel>
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="超时赔付:"/>
<TextBlock Text="{Binding CompensationFee,StringFormat=0.00}"/>
</StackPanel>
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="实际收益:"/>
<TextBlock Text="{Binding ActualIncome,StringFormat=0.00}"/>
</StackPanel>
</StackPanel>
</Grid>
<Grid Grid.Column="4" >

54
BBWY.Client/Views/PackerTask/PackerSalaryControl.xaml

@ -113,9 +113,9 @@
</StackPanel>
<TextBlock HorizontalAlignment="Left" Foreground="White" Grid.Row="1" Grid.ColumnSpan="3" Margin="20 0 0 0">
<Run Text="统计区间:"/>
<Run Text="{Binding StartTime,StringFormat=yyyy-MM-dd}"/>
<Run Text="{Binding TotalStartDate,StringFormat=yyyy-MM-dd}"/>
<Run Text="至"/>
<Run Text="{Binding EndTime,StringFormat=yyyy-MM-dd}"/>
<Run Text="{Binding TotalEndDate,StringFormat=yyyy-MM-dd}"/>
</TextBlock>
</Grid>
@ -125,7 +125,7 @@
<Grid Grid.Row="1" Width="555" HorizontalAlignment="Left">
<Grid Grid.Row="1" Width="770" HorizontalAlignment="Left">
<Grid.RowDefinitions>
<RowDefinition Height="35"/>
<RowDefinition Height="*"/>
@ -139,14 +139,18 @@
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<TextBlock Text="日期" Grid.Column="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="花名" Grid.Column="2" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="收益" Grid.Column="3" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="任务数" Grid.Column="4" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="件数" Grid.Column="5" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="原收益" Grid.Column="3" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="超时赔付金额" Grid.Column="4" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="实际收益" Grid.Column="5" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="任务数" Grid.Column="6" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="件数" Grid.Column="7" Style="{StaticResource middleTextBlock}"/>
<Border Width="1" HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Grid.Column="0" />
<Border Width="1" HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Grid.Column="1" />
@ -154,8 +158,9 @@
<Border Width="1" HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Grid.Column="3" />
<Border Width="1" HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Grid.Column="4" />
<Border Width="1" HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Grid.Column="5" />
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="5" />
<Border Width="1" HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Grid.Column="6" />
<Border Width="1" HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Grid.Column="7" />
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="7" />
<Border Height="1" VerticalAlignment="Top" Grid.ColumnSpan="18" Background="{StaticResource Border.Brush}" Grid.Row="0"/>
<Border Height="1" VerticalAlignment="Bottom" Grid.ColumnSpan="18" Background="{StaticResource Border.Brush}" Grid.Row="0"/>
</Grid>
@ -184,25 +189,33 @@
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<c:BButton Grid.Column="0" Panel.ZIndex="100" Background="Transparent" HorizontalAlignment="Stretch" BorderThickness="0" Grid.ColumnSpan="6" Command="{Binding HideCommand}" CommandParameter="{Binding}"/>
<c:BButton Grid.Column="0" Panel.ZIndex="100" Background="Transparent" HorizontalAlignment="Stretch" BorderThickness="0" Grid.ColumnSpan="8" Command="{Binding HideCommand}" CommandParameter="{Binding}"/>
<Border Margin="8" Grid.Row="1" BorderBrush="{StaticResource Border.Brush}" BorderThickness="1" >
<c:BButton HorizontalAlignment="Center" Grid.Column="0" Content="{Binding IsHide ,Converter={StaticResource objConverter},ConverterParameter=True:+:-}" Style="{StaticResource LinkButton}" Foreground="{StaticResource Border.Brush}" HorizontalContentAlignment="Center" />
</Border>
<TextBlock Text="{Binding Date,StringFormat=yyyy-MM-dd}" Grid.Column="1" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding UserName}" Grid.Column="2" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding DaySalary}" Grid.Column="3" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding DayTaskCount}" Grid.Column="4" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding DayTaskSkuItemCount}" Grid.Column="5" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding DaySalary,StringFormat=0.00}" Grid.Column="3" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding DayOverTimeCompensateFees,StringFormat=0.00}" Grid.Column="4" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding DayActualSalary,StringFormat=0.00}" Grid.Column="5" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding DayTaskCount}" Grid.Column="6" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding DayTaskSkuItemCount}" Grid.Column="7" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="0" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="1" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="2" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="3" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="4" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="5" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="6" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="7" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="8" Grid.Row="0"/>
</Grid>
<Border Height="1" VerticalAlignment="Bottom" Background="{StaticResource Border.Brush}" Grid.Column="4" Grid.Row="0"/>
<Border Height="1" VerticalAlignment="Bottom" Background="{StaticResource Border.Brush}" Grid.Column="6" Grid.Row="0"/>
<ListBox Name="listbox_orerSku" Grid.Row="1" Visibility="{Binding IsHide ,Converter={StaticResource objConverter},ConverterParameter=True:Collapsed:Visible}"
ItemsSource="{Binding PackerTaskSalaries}"
@ -222,6 +235,8 @@ Foreground="{StaticResource Text.Color}"
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
@ -229,12 +244,15 @@ Foreground="{StaticResource Text.Color}"
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="2" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="3" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="4" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="5" Grid.Row="0"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="6" Grid.Row="0"/>
<TextBlock Text="{Binding TaskSalary,StringFormat=0.00}" Grid.Column="3" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding OverTimeCompensateFees,StringFormat=0.00}" Grid.Column="4" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding ActualSalary,StringFormat=0.00}" Grid.Column="5" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding TaskSalary}" Grid.Column="3" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<StackPanel Orientation="Horizontal" Grid.Column="4" Grid.Row="1" HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" Grid.Column="6" Grid.Row="1" HorizontalAlignment="Center">
<TextBlock VerticalAlignment="Center" Text="ID:" Margin="16,0,0,0" />
<c:BButton Content="{Binding TaskIdRemark}" Style="{StaticResource LinkButton}" HorizontalAlignment="Left" VerticalAlignment="Center"
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
@ -243,7 +261,7 @@ Foreground="{StaticResource Text.Color}"
</StackPanel>
<TextBlock Text="{Binding TaskSkuItemCount}" Grid.Column="5" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding TaskSkuItemCount}" Grid.Column="7" Grid.Row="1" Style="{StaticResource middleTextBlock}"/>
</Grid>

36
BBWY.Client/Views/PackerTask/PackerWaitPackageControl.xaml

@ -171,7 +171,7 @@
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="140"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition MinWidth="100"/>
@ -229,7 +229,7 @@
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="140"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition MinWidth="100"/>
@ -261,7 +261,7 @@
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="140"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition MinWidth="100"/>
@ -379,10 +379,30 @@
</Grid>
<Grid Grid.Column="3" >
<TextBlock Style="{StaticResource middleTextBlock}"
Text="{Binding PackerFee,StringFormat=0.00}"
TextWrapping="Wrap"
/>
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center" Visibility="{Binding IsPackOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Collapsed:Visible}">
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" >
<TextBlock Text="预估收益:"/>
<TextBlock Text="{Binding PackerFee,StringFormat=0.00}"/>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left" Visibility="{Binding IsPackOverTime,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}">
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="原收益:"/>
<TextBlock Text="{Binding PackerFee,StringFormat=0.00}"/>
</StackPanel>
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="超时赔付:"/>
<TextBlock Text="{Binding CompensationFee,StringFormat=0.00}"/>
</StackPanel>
<StackPanel Margin="20,5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" >
<TextBlock Text="预估收益:"/>
<TextBlock Text="{Binding ActualIncome,StringFormat=0.00}"/>
</StackPanel>
</StackPanel>
</Grid>
<Grid Grid.Column="4" >
@ -619,7 +639,7 @@ Foreground="{StaticResource Text.Color}">
<c:BButton Grid.Column="10" Content="提交备注" Width="80" Command="{Binding DataContext.AppendMarkMessageCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}}}"
CommandParameter="{Binding TaskId}"/>
</Grid>
<Border Grid.Row="1" VerticalAlignment="Top" Height="1" Background="{StaticResource Border.Brush}" Grid.ColumnSpan="100"/>

28
BBWY.Client/Views/TaskOverTime/SubmitOverTimeMarkMsgWindow.xaml.cs

@ -1,4 +1,5 @@
using BBWY.Client.APIServices;
using BBWY.Client.APIServices.QiKu;
using BBWY.Client.Models;
using BBWY.Controls;
using System;
@ -22,27 +23,32 @@ namespace BBWY.Client.Views.TaskOverTime
/// </summary>
public partial class SubmitOverTimeMarkMsgWindow : BWindow
{
public SubmitOverTimeMarkMsgWindow(OverTimeTaskType overTimeTaskType, long id, string msg, PackTaskService packTaskService, Action reflashWindow)
public SubmitOverTimeMarkMsgWindow(PackTaskOverTimeDetailService packTaskOverTimeDetailService, long id, string msg, TaskMessageType taskMessageType, OverTimeType overTimeType, Action reflashWindow)
{
InitializeComponent();
this.OverTimeTaskType = overTimeTaskType;
this.Id = id;
MarkMsg = msg;
this.reflashWindow = reflashWindow;
this.packTaskService = packTaskService;
this.DataContext = this;
this.packTaskOverTimeDetailService = packTaskOverTimeDetailService;
TaskMessageType = taskMessageType;
OverTimeType = overTimeType;
}
Action reflashWindow;
PackTaskService packTaskService { get; set; }
/// <summary>
/// 超时任务类型(待验收 = 2,待打包 = 3,待封箱 = 4, 待落仓 = 8,待转运 = 11,)
/// </summary>
public OverTimeTaskType OverTimeTaskType { get; set; }
PackTaskOverTimeDetailService packTaskOverTimeDetailService { get; set; }
/// <summary>
/// 任务id 或者 封箱id
/// 超时任务类型
/// </summary>
public long Id { get; set; }
public TaskMessageType TaskMessageType { get; set; }
public OverTimeType OverTimeType{ get; set; }
/// <summary>
/// 任务id 或者 封箱id
/// </summary>
public long Id { get; set; }
/// <summary>
/// 备注信息
/// </summary>
@ -56,7 +62,7 @@ namespace BBWY.Client.Views.TaskOverTime
return;
}
var res = packTaskService.SubmitOverTimeMarkMsg(OverTimeTaskType, Id, MarkMsg);
var res = packTaskOverTimeDetailService.SubmitOverTimeMarkMsg(TaskMessageType, Id, OverTimeType, MarkMsg);
if (res == null)
{
MessageBox.Show("网络异常");

2
BBWY.Client/Views/TotalPackTask/PackUserSalaryControl.xaml.cs

@ -186,7 +186,7 @@ namespace BBWY.Client.Views.TotalPackTask
for (int j = 0; j < PackUserSalaries[i].IncomeItems.Count; j++)
{
var columnIndex = 4 + j;//[:HeaderPriceList:]
headerPriceListSB.AppendLine(serviceText.Replace("[:ServicePrice:]", PackUserSalaries[i].IncomeItems[j].TotalPrice.ToString())
headerPriceListSB.AppendLine(serviceText.Replace("[:ServicePrice:]", PackUserSalaries[i].IncomeItems[j].TotalPrice.ToString("0.00"))
.Replace("[:ColumnIndex:]", columnIndex.ToString())
.Replace("[:RowIndex:]", rowIndex.ToString()));

Loading…
Cancel
Save