|
|
@ -1,4 +1,5 @@ |
|
|
|
using BBWYB.Common.Log; |
|
|
|
using BBWYB.Common.Extensions; |
|
|
|
using BBWYB.Common.Log; |
|
|
|
using BBWYB.Common.Models; |
|
|
|
using BBWYB.Server.Model; |
|
|
|
using BBWYB.Server.Model.Db; |
|
|
@ -23,6 +24,21 @@ namespace BBWYB.Server.Business |
|
|
|
this.timeLimitRules = timeLimitRules; |
|
|
|
} |
|
|
|
|
|
|
|
private (User user, Userdepartment department) GetYiJiaDepartmentByUserId(string userId) |
|
|
|
{ |
|
|
|
var user = fsqlManager.MDSfsql.Select<User>(userId).ToOne(); |
|
|
|
if (user == null) |
|
|
|
throw new BusinessException("用户不存在"); |
|
|
|
if (string.IsNullOrEmpty(user.DepartmentId)) |
|
|
|
throw new BusinessException("该用户没有归属部门"); |
|
|
|
var department = fsqlManager.MDSfsql.Select<Userdepartment>(user.DepartmentId).ToOne(); |
|
|
|
if (department == null) |
|
|
|
throw new BusinessException("部门不存在"); |
|
|
|
if (department.ParentDepartmentId != "1760971468360912896") |
|
|
|
throw new BusinessException("该用户所在部门不属于议价组"); |
|
|
|
return (user, department); |
|
|
|
} |
|
|
|
|
|
|
|
public Enums.TriggerOptimizationReason? GetOptimizationReason(SpuTotalSaleInfo s) |
|
|
|
{ |
|
|
|
if (s.IsFirstPurchaseCompleted == false) |
|
|
@ -36,6 +52,11 @@ namespace BBWYB.Server.Business |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 良库预警
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="request"></param>
|
|
|
|
/// <exception cref="BusinessException"></exception>
|
|
|
|
public void LKInventoryAlertNotification(BatchLKInventoryAlertRequest request) |
|
|
|
{ |
|
|
|
nLogManager.Default().Info($"LKInventoryAlertNotification {JsonConvert.SerializeObject(request)}"); |
|
|
@ -203,27 +224,18 @@ namespace BBWYB.Server.Business |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 获取用户和部门信息
|
|
|
|
var user = fsqlManager.MDSfsql.Select<User>(userId).ToOne(); |
|
|
|
if (user == null) |
|
|
|
throw new BusinessException("用户不存在"); |
|
|
|
if (string.IsNullOrEmpty(user.DepartmentId)) |
|
|
|
throw new BusinessException("该用户没有归属部门"); |
|
|
|
var department = fsqlManager.MDSfsql.Select<Userdepartment>(user.DepartmentId).ToOne(); |
|
|
|
if (department == null) |
|
|
|
throw new BusinessException("部门不存在"); |
|
|
|
if (department.ParentDepartmentId != "1760971468360912896") |
|
|
|
throw new BusinessException("该用户所在部门不属于议价组"); |
|
|
|
var uInfo = GetYiJiaDepartmentByUserId(userId); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 验证待议价子任务
|
|
|
|
var optimazaionChildTaskList = fsql.Select<SkuOptimizationChildTask>() |
|
|
|
.Where(sc => sc.OptimizationTaskId == optimazaionTask.Id) |
|
|
|
.ToList(); |
|
|
|
var currentOptimazaionChildTaskList = optimazaionChildTaskList.FirstOrDefault(sc => sc.BelongTeamId == department.Id); |
|
|
|
var currentOptimazaionChildTaskList = optimazaionChildTaskList.FirstOrDefault(sc => sc.BelongTeamId == uInfo.department.Id); |
|
|
|
if (currentOptimazaionChildTaskList == null) |
|
|
|
throw new BusinessException($"未找到议价组{department.DepartmentName}的议价子任务"); |
|
|
|
throw new BusinessException($"未找到议价组{uInfo.department.DepartmentName}的议价子任务"); |
|
|
|
if (currentOptimazaionChildTaskList.IsOptimizationCompleted == true) |
|
|
|
throw new BusinessException($"{department.DepartmentName}的议价子任务已完成"); |
|
|
|
throw new BusinessException($"{uInfo.department.DepartmentName}的议价子任务已完成"); |
|
|
|
|
|
|
|
currentOptimazaionChildTaskList.IsOptimizationCompleted = true; |
|
|
|
#endregion
|
|
|
@ -284,5 +296,66 @@ namespace BBWYB.Server.Business |
|
|
|
updateTimeLimitTask?.ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public ListResponse<SkuOptimizationTaskResponse> GetNoCompletionSkuOptimizationTask(PageRequest request, string userId) |
|
|
|
{ |
|
|
|
var uInfo = GetYiJiaDepartmentByUserId(userId); |
|
|
|
var taskList = fsql.Select<SkuOptimizationTask, TimeLimitTask>() |
|
|
|
.InnerJoin((t, tt) => t.Id == tt.TaskId) |
|
|
|
.Where((t, tt) => t.IsOptimizationCompleted == false) |
|
|
|
.OrderByDescending((t, tt) => t.CreateTime) |
|
|
|
.Count(out var total) |
|
|
|
.Page(request.PageIndex, request.PageSize) |
|
|
|
.ToList((t, tt) => new SkuOptimizationTask |
|
|
|
{ |
|
|
|
Id = t.Id, |
|
|
|
ShopId = t.ShopId, |
|
|
|
BelongShopName = t.BelongShopName, |
|
|
|
JDSkuId = t.JDSkuId, |
|
|
|
ProductId = t.ProductId, |
|
|
|
SkuId = t.SkuId, |
|
|
|
PreItemCount = t.PreItemCount, |
|
|
|
PrePurchasedAmount = t.PrePurchasedAmount, |
|
|
|
SafeWarningRemainingDay = t.SafeWarningRemainingDay, |
|
|
|
IsOptimizationCompleted = t.IsOptimizationCompleted, |
|
|
|
IsPurchasementCompleted = t.IsPurchasementCompleted, |
|
|
|
CreateTime = t.CreateTime, |
|
|
|
CompletionTime = t.CompletionTime, |
|
|
|
TriggerOptimizationReason = t.TriggerOptimizationReason, |
|
|
|
LastOptimizationRatio = t.LastOptimizationRatio, |
|
|
|
LastPurchasePrice = t.LastPurchasePrice, |
|
|
|
LastOptimizationTime = t.LastOptimizationTime, |
|
|
|
|
|
|
|
TimeLimitTaskId = tt.Id, |
|
|
|
TimeLimitTaskBelongTaskId = tt.TaskId, |
|
|
|
TimeLimitTaskCompletionTime = tt.CompletionTime, |
|
|
|
TimeLimitTaskCreateTme = tt.CreateTme, |
|
|
|
TimeLimitTaskExpirationTime = tt.ExpirationTime, |
|
|
|
TimeLimitTaskIsTimely = tt.IsTimely, |
|
|
|
TimeLimitTaskOrderId = tt.OrderId, |
|
|
|
TimeLimitTaskOrderSn = tt.OrderSn, |
|
|
|
TimeLimitTaskPayTime = tt.PayTime, |
|
|
|
TimeLimitTaskRemark = tt.Remark, |
|
|
|
TimeLimitTaskShopId = tt.ShopId, |
|
|
|
TimeLimitTaskSkuId = tt.SkuId, |
|
|
|
TimeLimitTaskTaskType = tt.TaskType |
|
|
|
}).Map<List<SkuOptimizationTaskResponse>>(); |
|
|
|
|
|
|
|
List<long> taskIdList = taskList.Select(t => t.Id).ToList(); |
|
|
|
var childTaskList = fsql.Select<SkuOptimizationChildTask>().Where(ct => taskIdList.Contains(ct.OptimizationTaskId)).ToList<SkuOptimizationChildTaskResponse>(); |
|
|
|
|
|
|
|
foreach (var task in taskList) |
|
|
|
{ |
|
|
|
task.ChildTaskList = childTaskList.Where(ct => ct.OptimizationTaskId == task.Id).ToList(); |
|
|
|
var currentChildTask = task.ChildTaskList.FirstOrDefault(ct => ct.BelongTeamId == uInfo.user.DepartmentId); |
|
|
|
task.IsOptimizationCompletedByCurrentTeam = currentChildTask?.IsOptimizationCompleted ?? false; |
|
|
|
} |
|
|
|
|
|
|
|
return new ListResponse<SkuOptimizationTaskResponse>() |
|
|
|
{ |
|
|
|
Items = taskList, |
|
|
|
TotalCount = total |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|