From 6cf702e02f4c3d47b65dbbba7be376d5473e8e4c Mon Sep 17 00:00:00 2001
From: shanji <18996038927@163.com>
Date: Mon, 4 Mar 2024 03:04:49 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=87=87=E8=B4=AD=E6=96=B9?=
=?UTF-8?q?=E6=A1=88=E9=99=90=E5=88=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/PurchaseSchemeController.cs | 4 +-
.../PurchaseScheme/PurchaseSchemeBusiness.cs | 68 +++++++++++++++++--
.../SkuOptimizationBusiness.cs | 22 ++----
BBWYB.Server.Business/Users/userBusiness.cs | 37 ++++++++++
.../Db/PurchaseScheme/PurchaseScheme.cs | 30 ++++++++
BBWYB.Server.Model/Db/Purchaser/Purchaser.cs | 18 +++++
BBWYB.Server.Model/Enums.cs | 8 +++
7 files changed, 163 insertions(+), 24 deletions(-)
create mode 100644 BBWYB.Server.Business/Users/userBusiness.cs
diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
index 0e4b68f..58a3631 100644
--- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
+++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
@@ -33,7 +33,7 @@ namespace BBWYB.Server.API.Controllers
[HttpPost]
public void EditPurchaseSchemeV2([FromBody] BatchCURDSchemeRequest batchCURDSchemeRequest)
{
- purchaseSchemeBusiness.EditPurchaseSchemeV2(batchCURDSchemeRequest);
+ purchaseSchemeBusiness.EditPurchaseSchemeV2(batchCURDSchemeRequest, GetUserId());
}
///
@@ -206,7 +206,7 @@ namespace BBWYB.Server.API.Controllers
[HttpPost]
public void BatchEditPurchaseSkuActualPrice([FromBody] BatchEditPurchaseSkuActualPriceRequest request)
{
- purchaseSchemeBusiness.BatchEditPurchaseSkuActualPrice(request);
+ purchaseSchemeBusiness.BatchEditPurchaseSkuActualPrice(request, GetUserId());
}
}
}
diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
index 0a9db9d..1bb343b 100644
--- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
@@ -7,6 +7,7 @@ using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto;
using FreeSql;
using Newtonsoft.Json;
+using System.Linq;
using Yitter.IdGenerator;
namespace BBWYB.Server.Business
@@ -16,6 +17,9 @@ namespace BBWYB.Server.Business
private PurchaseProductAPIService purchaseProductAPIService;
private RestApiService restApiService;
private AggregionPurchaserBusiness aggregionPurchaserBusiness;
+ private UserBusiness userBusiness;
+
+
private IList invalidOrderStateList;
public PurchaseSchemeBusiness(IFreeSql fsql,
@@ -23,7 +27,8 @@ namespace BBWYB.Server.Business
IIdGenerator idGenerator,
PurchaseProductAPIService purchaseProductAPIService,
RestApiService restApiService,
- AggregionPurchaserBusiness aggregionPurchaserBusiness) : base(fsql, nLogManager, idGenerator)
+ AggregionPurchaserBusiness aggregionPurchaserBusiness,
+ UserBusiness userBusiness) : base(fsql, nLogManager, idGenerator)
{
this.purchaseProductAPIService = purchaseProductAPIService;
this.restApiService = restApiService;
@@ -35,6 +40,7 @@ namespace BBWYB.Server.Business
Enums.OrderState.部分采购
};
this.aggregionPurchaserBusiness = aggregionPurchaserBusiness;
+ this.userBusiness = userBusiness;
}
private void ExtractNewPurchaser(IList purchaserSchemeList, IList addPurchaserList) where T : InputPurchaseSchemeRequest
@@ -211,9 +217,9 @@ namespace BBWYB.Server.Business
});
}
- public void EditPurchaseSchemeV2(BatchCURDSchemeRequest batchCURDSchemeRequest)
+ public void EditPurchaseSchemeV2(BatchCURDSchemeRequest batchCURDSchemeRequest, string userId)
{
- nLogManager.Default().Info($"EditPurchaseSchemeV2 {JsonConvert.SerializeObject(batchCURDSchemeRequest)}");
+ //nLogManager.Default().Info($"EditPurchaseSchemeV2 {JsonConvert.SerializeObject(batchCURDSchemeRequest)}");
List dbSchemeGroupList = null;
List dbPurchaseSchemeList = null;
@@ -339,6 +345,56 @@ namespace BBWYB.Server.Business
}
}
+ var uInfo = userBusiness.GetisBargainTeamByUserId(userId);
+ if (uInfo.isBargainTeam)
+ {
+ #region 检测是否存在被其他议价组分配的采购商
+ {
+ var tempPurchaseScmemeList = (batchCURDSchemeRequest.AddPurchaseSchemeList ?? new List()).Union(batchCURDSchemeRequest.EditPurchaseSchemeList ?? new List()).ToList();
+ var allPurchaserList = tempPurchaseScmemeList.SelectMany(ps => ps.PurchaseSchemeProductList.Select(psp => new { psp.PurchaserId, psp.PurchaserName })).ToList();
+
+ var allPurchaserIdList = allPurchaserList.Select(p => p.PurchaserId).Distinct().ToList();
+ var dbPurchaserList = fsql.Select(allPurchaserIdList).ToList(p => new Purchaser()
+ {
+ Id = p.Id,
+ Name = p.Name,
+ BelongBargainTeamId = p.BelongBargainTeamId,
+ BelongType = p.BelongType
+ });
+ var noCurrentBargainTeamList = dbPurchaserList.Where(dp => !string.IsNullOrEmpty(dp.BelongBargainTeamId) &&
+ dp.BelongBargainTeamId != uInfo.user.DepartmentId).ToList();
+ if (noCurrentBargainTeamList.Count() > 0)
+ throw new BusinessException($"不能包含被其他议价组使用的采购商 [{string.Join(",", noCurrentBargainTeamList.Select(x => x.Name))}]");
+ }
+ #endregion
+
+ #region 检测同sku在该议价组下的数量是否超过3个
+ {
+ if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count() > 0)
+ {
+ var addSchemeSkuList = batchCURDSchemeRequest.AddPurchaseSchemeList.Select(ps => ps.SkuId).Distinct().ToList();
+ var dbSkuSchemeCountList = fsql.Select().Where(ps => ps.BelongBargainTeamId == uInfo.user.DepartmentId &&
+ addSchemeSkuList.Contains(ps.SkuId))
+ .GroupBy(ps => ps.SkuId)
+ .ToList(g => new
+ {
+ SkuId = g.Key,
+ Count = g.Count()
+ });
+ var skuCountList = dbSkuSchemeCountList.Select(x => new
+ {
+ x.SkuId,
+ Count = x.Count + batchCURDSchemeRequest.AddPurchaseSchemeList.Count(ps => ps.SkuId == x.SkuId)
+ }).ToList();
+
+ var over3CountList = skuCountList.Where(x => x.Count > 3).ToList();
+ if (over3CountList.Count() > 0)
+ throw new BusinessException($"sku在同一个议价组内不能超过3个采购方案 [{string.Join(",", over3CountList.Select(x => x.SkuId))}]");
+ }
+ }
+ #endregion
+ }
+
#endregion
List addPurchaseSchemeList = new List();
@@ -1445,7 +1501,9 @@ namespace BBWYB.Server.Business
/// 批量修改采购配件实际单价
///
///
- public void BatchEditPurchaseSkuActualPrice(BatchEditPurchaseSkuActualPriceRequest request)
+ ///
+ ///
+ public void BatchEditPurchaseSkuActualPrice(BatchEditPurchaseSkuActualPriceRequest request, string userId)
{
if (request.ItemList == null || request.ItemList.Count() == 0)
throw new BusinessException("缺少参数");
@@ -1520,7 +1578,7 @@ namespace BBWYB.Server.Business
}).ToList()
}).ToList()
}).ToList()
- });
+ }, userId);
}
}
diff --git a/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs
index fb27cd6..ccbf601 100644
--- a/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs
+++ b/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs
@@ -16,28 +16,16 @@ namespace BBWYB.Server.Business
private FreeSqlMultiDBManager fsqlManager;
private VenderBusiness venderBusiness;
private TimeLimitRules timeLimitRules;
+ private UserBusiness userBusiness;
- public SkuOptimizationBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, FreeSqlMultiDBManager fsqlManager, VenderBusiness venderBusiness, TimeLimitRules timeLimitRules) : base(fsql, nLogManager, idGenerator)
+ public SkuOptimizationBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, FreeSqlMultiDBManager fsqlManager, VenderBusiness venderBusiness, TimeLimitRules timeLimitRules, UserBusiness userBusiness) : base(fsql, nLogManager, idGenerator)
{
this.fsqlManager = fsqlManager;
this.venderBusiness = venderBusiness;
this.timeLimitRules = timeLimitRules;
+ this.userBusiness = userBusiness;
}
- private (User user, Userdepartment department) GetYiJiaDepartmentByUserId(string userId)
- {
- var user = fsqlManager.MDSfsql.Select(userId).ToOne();
- if (user == null)
- throw new BusinessException("用户不存在");
- if (string.IsNullOrEmpty(user.DepartmentId))
- throw new BusinessException("该用户没有归属部门");
- var department = fsqlManager.MDSfsql.Select(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)
{
@@ -236,7 +224,7 @@ namespace BBWYB.Server.Business
#endregion
#region 获取用户和部门信息
- var uInfo = GetYiJiaDepartmentByUserId(userId);
+ var uInfo = userBusiness.GetisBargainTeamByUserId(userId, true);
#endregion
#region 验证待议价子任务
@@ -311,7 +299,7 @@ namespace BBWYB.Server.Business
public ListResponse GetNoCompletionSkuOptimizationTask(PageRequest request, string userId)
{
- var uInfo = GetYiJiaDepartmentByUserId(userId);
+ var uInfo = userBusiness.GetisBargainTeamByUserId(userId, true);
var taskList = fsql.Select()
.InnerJoin((t, tt) => t.Id == tt.TaskId)
.Where((t, tt) => t.IsOptimizationCompleted == false)
diff --git a/BBWYB.Server.Business/Users/userBusiness.cs b/BBWYB.Server.Business/Users/userBusiness.cs
new file mode 100644
index 0000000..2c2ff64
--- /dev/null
+++ b/BBWYB.Server.Business/Users/userBusiness.cs
@@ -0,0 +1,37 @@
+using BBWYB.Common.Models;
+using BBWYB.Server.Model.Db;
+
+namespace BBWYB.Server.Business
+{
+ public class UserBusiness : IDenpendency
+ {
+ private FreeSqlMultiDBManager fsqlManager;
+
+ public UserBusiness(FreeSqlMultiDBManager fsqlManager)
+ {
+ this.fsqlManager = fsqlManager;
+ }
+
+ ///
+ /// 获取指定用户的议价组信息
+ ///
+ ///
+ /// 当用户不属于议价组团队是否抛出错误
+ ///
+ ///
+ public (User user, Userdepartment department, bool isBargainTeam) GetisBargainTeamByUserId(string userId, bool throwExWhenUserNotBelongYJ = false)
+ {
+ var user = fsqlManager.MDSfsql.Select(userId).ToOne();
+ if (user == null)
+ throw new BusinessException("用户不存在");
+ if (string.IsNullOrEmpty(user.DepartmentId))
+ throw new BusinessException("该用户没有归属部门");
+ var department = fsqlManager.MDSfsql.Select(user.DepartmentId).ToOne();
+ if (department == null)
+ throw new BusinessException("部门不存在");
+ if (throwExWhenUserNotBelongYJ && department.ParentDepartmentId != "1760971468360912896")
+ throw new BusinessException("该用户所在部门不属于议价组");
+ return (user, department, department.ParentDepartmentId == "1760971468360912896");
+ }
+ }
+}
diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs
index a655694..7fc66b4 100644
--- a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs
+++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs
@@ -110,6 +110,36 @@ namespace BBWYB.Server.Model
/// 采购件数
///
public int? PurchasedItemCount { get; set; } = 0;
+
+ ///
+ /// 归属议价组Id
+ ///
+ [Column(StringLength = 50)]
+ public string BelongBargainTeamId { get; set; }
+
+ ///
+ /// 归属议价组名称
+ ///
+ [Column(StringLength = 50)]
+ public string BelongBargainTeamName { get; set; }
+
+ ///
+ /// 更新人Id
+ ///
+ [Column(StringLength = 50)]
+ public string UpdateUserId { get; set; }
+
+ ///
+ /// 更新人团队Id
+ ///
+ [Column(StringLength = 50)]
+ public string UpdateTeamId { get; set; }
+
+ ///
+ /// 是否为议价组更新
+ ///
+ [Column(DbType = "bit")]
+ public bool? IsBargainTeamUpdate { get; set; } = false;
}
}
diff --git a/BBWYB.Server.Model/Db/Purchaser/Purchaser.cs b/BBWYB.Server.Model/Db/Purchaser/Purchaser.cs
index 07509c7..7d14bf6 100644
--- a/BBWYB.Server.Model/Db/Purchaser/Purchaser.cs
+++ b/BBWYB.Server.Model/Db/Purchaser/Purchaser.cs
@@ -113,6 +113,24 @@ namespace BBWYB.Server.Model.Db
///
[Column(DbType = "decimal(18,2)")]
public decimal? Recent90dPurchasedCount { get; set; } = 0.00M;
+
+ ///
+ /// 归属议价组Id
+ ///
+ [Column(StringLength = 50)]
+ public string BelongBargainTeamId { get; set; }
+
+ ///
+ /// 归属议价组名称
+ ///
+ [Column(StringLength = 50)]
+ public string BelongBargainTeamName { get; set; }
+
+ ///
+ /// 临时=0, 永久=1
+ ///
+ [Column(MapType = typeof(int?))]
+ public Enums.PurchaserBelongType? BelongType { get; set; }
}
}
diff --git a/BBWYB.Server.Model/Enums.cs b/BBWYB.Server.Model/Enums.cs
index 04e9a1e..736bbb9 100644
--- a/BBWYB.Server.Model/Enums.cs
+++ b/BBWYB.Server.Model/Enums.cs
@@ -355,5 +355,13 @@
{
大于 = 0, 小于 = 1, 等于 = 2, 介于 = 3
}
+
+ ///
+ /// 采购商归属类型 临时 = 0, 永久 = 1
+ ///
+ public enum PurchaserBelongType
+ {
+ 临时 = 0, 永久 = 1
+ }
}
}