From 07562e1627ef14d4a946d352739d2f8d17d6360b Mon Sep 17 00:00:00 2001
From: liuying <1427574514@qq.com>
Date: 周四, 25 4月 2024 13:42:29 +0800
Subject: [PATCH] 细节
---
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs | 168 +++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 155 insertions(+), 13 deletions(-)
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs
index db9d7b2..7b882f7 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs
@@ -28,14 +28,18 @@
private readonly ISysExcelTemplateService _sysExcelTemplateService;
private readonly static object _lock = new();
private readonly IRepository<WmsMaterialCustomer, MasterDbContextLocator> _wmsMaterialCustomerRep;
+ private readonly IRepository<BaseCustomer, MasterDbContextLocator> _baseCustomerRep;
private readonly IRepository<WmsSubstituteGood, MasterDbContextLocator> _wmsSubstituteGoodRep;
+ private readonly IRepository<WmsControlRuleDetail, MasterDbContextLocator> _wmsControlRuleDetailRep;
public WmsMaterialService(
IRepository<WmsMaterial,MasterDbContextLocator> wmsMaterialRep
,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
,ISysExcelTemplateService sysExcelTemplateService
, IRepository<WmsMaterialCustomer, MasterDbContextLocator> wmsMaterialCustomerRep
+ , IRepository<BaseCustomer, MasterDbContextLocator> baseCustomerRep
, IRepository<WmsSubstituteGood, MasterDbContextLocator> wmsSubstituteGoodRep
+ , IRepository<WmsControlRuleDetail, MasterDbContextLocator> wmsControlRuleDetailRep
)
{
_wmsMaterialRep = wmsMaterialRep;
@@ -43,7 +47,9 @@
_sysDictDataRep = sysDictDataRep;
_sysExcelTemplateService = sysExcelTemplateService;
_wmsMaterialCustomerRep = wmsMaterialCustomerRep;
+ _baseCustomerRep = baseCustomerRep;
_wmsSubstituteGoodRep = wmsSubstituteGoodRep;
+ _wmsControlRuleDetailRep = wmsControlRuleDetailRep;
}
/// <summary>
/// 鍒嗛〉鏌ヨ鐗╂枡淇℃伅
@@ -156,9 +162,39 @@
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("WmsMaterial/detail")]
- public async Task<WmsMaterialOutput> Get([FromQuery] QueryeWmsMaterialInput input)
+ public async Task<WmsMaterialInfoOutput> Get([FromQuery] QueryeWmsMaterialInput input)
{
- return (await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsMaterialOutput>();
+ WmsMaterialInfoOutput resultInfo = new WmsMaterialInfoOutput();
+ //鑾峰彇鐗╂枡淇℃伅
+ var wmsMaterialInfo =(await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsMaterialOutput>();
+ //鑾峰彇鏇挎崲鐗╂枡淇℃伅
+ var wmsSubstituteGoods = await _wmsSubstituteGoodRep.DetachedEntities
+ .Where(u => u.MaterialCode == wmsMaterialInfo.MaterialName)
+ .Where(u => u.IsDeleted == false)
+ .Where(u => u.IsDisabled == false)
+ .OrderBy(o => o.CreatedTime)
+ .ProjectToType<WmsSubstituteGoodOutput>()
+ .ToListAsync();
+ //鑾峰彇鎺у埗灞炴�ц鍒�
+ var wmsControlRuleDetails = await _wmsControlRuleDetailRep.DetachedEntities
+ .Where(u => u.Id == wmsMaterialInfo.ControlRuleId)
+ .Where(u => u.IsDeleted == false)
+ .Where(u => u.IsDisabled == false)
+ .OrderBy(o=>o.CreatedTime)
+ .ProjectToType<WmsControlRuleDetailOutput>()
+ .ToListAsync();
+
+ //鏍规嵁鐗╂枡瀹㈡埛鍏宠仈琛ㄨ幏鍙栧線鏉ヤ俊鎭�
+ var baseCustomers = await _baseCustomerRep.DetachedEntities.Join(_wmsMaterialCustomerRep.DetachedEntities, bc => bc.Id, mc => mc.CustId, (bc, mc) => new { bc, mc })
+ .Where(p =>p.mc.MaterialId== wmsMaterialInfo.Id)
+ .OrderBy(o => o.mc.CreatedTime)
+ .ProjectToType<BaseCustomerOutput>()
+ .ToListAsync();
+
+ resultInfo.MaterialInfo = wmsMaterialInfo;
+ resultInfo.SubstituteGoodList = wmsSubstituteGoods;
+ resultInfo.ControlRuleDetailList = wmsControlRuleDetails;
+ return resultInfo;
}
/// <summary>
@@ -191,7 +227,7 @@
var controlRuleld = input.ControlRuleld;
wmsMaterial.ControlRuleId = controlRuleld;
- //瀹㈡埛妗f淇℃伅
+ //寰�鏉ュ叧绯讳俊鎭�
var baseCustomerList = input.BaseCustomerList.Adapt<List<BaseCustomer>>();
//鐗╂枡瀹㈡埛鍏宠仈鍏崇郴
var materialCustomerList=new List<WmsMaterialCustomer>();
@@ -220,10 +256,14 @@
//鏇夸唬鍝佷俊鎭�
var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
+ foreach (var item in substituteGoodList)
+ {
+ item.SubstituteCode = Yitter.IdGenerator.YitIdHelper.NextId().ToString();//TODO 瑕佽皟鐢ㄧ敓鎴� 缂栧彿鐨勬柟娉� 鍏堢敤闆姳ID
+ }
- wmsMaterial.CreatedUserId = wmsMaterial.UpdatedUserId = SysHelper.GetUserId();
- wmsMaterial.CreatedUserName = wmsMaterial.UpdatedUserName = SysHelper.GetUserName();
- wmsMaterial.CreatedTime = wmsMaterial.UpdatedTime = SysHelper.GetNowTime();
+ wmsMaterial.UpdatedUserId = SysHelper.GetUserId();
+ wmsMaterial.UpdatedUserName = SysHelper.GetUserName();
+ wmsMaterial.UpdatedTime = SysHelper.GetNowTime();
await _wmsMaterialRep.InsertAsync(wmsMaterial);
@@ -256,19 +296,84 @@
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("WmsMaterial/edit")]
- public async Task Update(UpdateWmsMaterialInput input)
+ [UnitOfWork]
+ public async Task Update(UpdateWmsMaterialInfoInput input)
{
- var isExist = await _wmsMaterialRep.AnyAsync(u => u.Id == input.Id, false);
+ //鐗╂枡淇℃伅
+ var wmsMaterial = input.MaterialInput.Adapt<WmsMaterial>();
+ var isExist = await _wmsMaterialRep.AnyAsync(u => u.Id == wmsMaterial.Id, false);
if (!isExist) throw Oops.Oh(ErrorCode.D1002);
-
- var wmsMaterial = input.Adapt<WmsMaterial>();
//楠岃瘉
await CheckExisit(wmsMaterial, true);
+
+ //鎺у埗瑙勫垯淇℃伅
+ var controlRuleld = input.ControlRuleld;
+ wmsMaterial.ControlRuleId = controlRuleld;
+
+
+ //鍒犻櫎鐗╂枡瀹㈡埛鍏宠仈鍏崇郴
+ var oldaterialCustomerList = await _wmsMaterialCustomerRep.DetachedEntities.Where(w => w.MaterialId == wmsMaterial.Id).ToListAsync();
+ if (oldaterialCustomerList?.Count > 0)
+ {
+ await _wmsMaterialCustomerRep.DeleteAsync(oldaterialCustomerList);
+ }
+
+
+ //寰�鏉ュ叧绯讳俊鎭�
+ var baseCustomerList = input.BaseCustomerList.Adapt<List<BaseCustomer>>();
+ //鐗╂枡瀹㈡埛鍏宠仈鍏崇郴
+ var materialCustomerList = new List<WmsMaterialCustomer>();
+ foreach (var baseCustomer in baseCustomerList)
+ {
+ materialCustomerList.Add(new WmsMaterialCustomer()
+ {
+ CreatedTime = DateTime.Now,
+ CreatedUserId = CurrentUserInfo.UserId,
+ CreatedUserName = CurrentUserInfo.Name,
+ CustChinaName = baseCustomer.CustChinaName,
+ CustCode = baseCustomer.CustCode,
+ CustEnglishName = baseCustomer.CustEnglishName,
+ CustId = baseCustomer.Id,
+ MaterialCode = wmsMaterial.MaterialCode,
+ MaterialId = wmsMaterial.Id,
+ MaterialName = wmsMaterial.MaterialName,
+ UpdatedTime = DateTime.Now,
+ UpdatedUserId = CurrentUserInfo.UserId,
+ UpdatedUserName = CurrentUserInfo.Name
+
+ });
+ }
+
+ //鍒犻櫎鏇夸唬鍝佷俊鎭�
+ var oldSubstituteGoodList = await _wmsSubstituteGoodRep.DetachedEntities.Where(w => w.MaterialCode == wmsMaterial.MaterialCode).ToListAsync();
+ if (oldSubstituteGoodList?.Count > 0)
+ {
+ await _wmsSubstituteGoodRep.DeleteAsync(oldSubstituteGoodList);
+ }
+
+
+ //鏇夸唬鍝佷俊鎭�
+ var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
+ foreach (var item in substituteGoodList)
+ {
+ item.SubstituteCode = Yitter.IdGenerator.YitIdHelper.NextId().ToString();//TODO 瑕佽皟鐢ㄧ敓鎴� 缂栧彿鐨勬柟娉� 鍏堢敤闆姳ID
+ }
+
+ if (materialCustomerList?.Count > 0)
+ {
+ await _wmsMaterialCustomerRep.InsertAsync(materialCustomerList);
+ }
+ if (substituteGoodList?.Count > 0)
+ {
+ await _wmsSubstituteGoodRep.InsertAsync(substituteGoodList);
+ }
wmsMaterial.UpdatedUserId = SysHelper.GetUserId();
wmsMaterial.UpdatedUserName = SysHelper.GetUserName();
wmsMaterial.UpdatedTime = SysHelper.GetNowTime();
await _wmsMaterialRep.UpdateAsync(wmsMaterial, ignoreNullValues: true);
+
+
}
#endregion
@@ -614,9 +719,14 @@
bool isExist = false;
if (!isEdit)//鏂板
{
- //鏁版嵁鏄惁瀛樺湪閲嶅
+ //鐗╂枡缂栧彿鏄惁瀛樺湪閲嶅
isExist = await _wmsMaterialRep.AnyAsync(u =>
u.MaterialCode.Equals(input.MaterialCode)
+ , false);
+
+ //鐗╂枡鍚嶇О鏄惁瀛樺湪閲嶅
+ isExist = await _wmsMaterialRep.AnyAsync(u =>
+ u.MaterialName.Equals(input.MaterialName)
, false);
}
else//缂栬緫
@@ -624,10 +734,15 @@
- //褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅
+ //褰撳墠缂栬緫鐗╂枡缂栧彿浠ュ鏄惁瀛樺湪閲嶅
isExist = await _wmsMaterialRep.AnyAsync(u =>
u.Id != input.Id
&& u.MaterialCode.Equals(input.MaterialCode)
+ , false);
+ //褰撳墠缂栬緫鐗╂枡鍚嶇О浠ュ鏄惁瀛樺湪閲嶅
+ isExist = await _wmsMaterialRep.AnyAsync(u =>
+ u.Id != input.Id
+ && u.MaterialName.Equals(input.MaterialName)
, false);
}
@@ -663,7 +778,19 @@
throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,鐗╂枡缂栧彿[{item.MaterialCode}]宸插瓨鍦�");
}
-
+ var existExcelItem2 = inputs.GroupBy(g => new {
+ g.MaterialName
+ })
+ .Where(g => g.Count() > 1)
+ .Select(s => new {
+ s.Key.MaterialName
+ }).FirstOrDefault();
+ if (existExcelItem2 != null)
+ {
+ var wmsMaterial = existExcelItem2.Adapt<WmsMaterial>();
+ var item = existExcelItem2.Adapt<WmsMaterial>();
+ throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,鐗╂枡鍚嶇О[{item.MaterialName}]宸插瓨鍦�");
+ }
//鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
@@ -680,6 +807,21 @@
var item = existExcelItem.Adapt<WmsMaterial>();
throw Oops.Oh($"绯荤粺涓�,鐗╂枡缂栧彿[{item.MaterialCode}]宸插瓨鍦�");
}
+
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ var existDBItem2 = await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(w =>
+ inputs.Select(s => ""
+ + s.MaterialName
+ )
+ .Contains(""
+ + w.MaterialName
+ ));
+ if (existDBItem2 != null)
+ {
+ var wmsMaterial = existExcelItem2.Adapt<WmsMaterial>();
+ var item = existExcelItem.Adapt<WmsMaterial>();
+ throw Oops.Oh($"绯荤粺涓�,鐗╂枡缂栧彿[{item.MaterialName}]宸插瓨鍦�");
+ }
}
#endregion
--
Gitblit v1.9.3