From 09542900534645e28c23f16caa94aa8a2c20cc5b Mon Sep 17 00:00:00 2001 From: payne <bzrlw2012@163.com> Date: 周五, 03 5月 2024 16:10:02 +0800 Subject: [PATCH] 往来单位助记码功能调整为 中文名称输入立即调用接口实现 --- iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs | 286 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 182 insertions(+), 104 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 7e2b3d6..16f4aee 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 @@ -13,6 +13,7 @@ using System.Web; using System.ComponentModel; using System.Data; +using Microsoft.CodeAnalysis; namespace Admin.NET.Application { /// <summary> @@ -28,14 +29,22 @@ 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; + private readonly IRepository<WmsMaterialType, MasterDbContextLocator> _wmsMaterialTypeRep; + private readonly IRepository<WmsUnit, MasterDbContextLocator> _wmsUnitRep; 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 + , IRepository<WmsMaterialType, MasterDbContextLocator> wmsMaterialTypeRep + , IRepository<WmsUnit, MasterDbContextLocator> wmsUnitRep ) { _wmsMaterialRep = wmsMaterialRep; @@ -43,7 +52,11 @@ _sysDictDataRep = sysDictDataRep; _sysExcelTemplateService = sysExcelTemplateService; _wmsMaterialCustomerRep = wmsMaterialCustomerRep; + _baseCustomerRep = baseCustomerRep; _wmsSubstituteGoodRep = wmsSubstituteGoodRep; + _wmsControlRuleDetailRep = wmsControlRuleDetailRep; + _wmsMaterialTypeRep = wmsMaterialTypeRep; + _wmsUnitRep = wmsUnitRep; } /// <summary> /// 鍒嗛〉鏌ヨ鐗╂枡淇℃伅 @@ -156,9 +169,49 @@ /// <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.MaterialCode) + .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 wmsMaterialCustomerList = await _wmsMaterialCustomerRep.DetachedEntities + .Where(u => u.MaterialId == wmsMaterialInfo.Id) + .Where(u => u.IsDeleted == false) + .OrderBy(o => o.CreatedTime) + .ProjectToType<WmsMaterialCustomerOutput>() + .ToListAsync(); + List<long> custIds = wmsMaterialCustomerList.Select(s => s.CustId).ToList(); + //鏍规嵁鐗╂枡瀹㈡埛鍏宠仈琛ㄨ幏鍙栧線鏉ヤ俊鎭� + var baseCustomers = await _baseCustomerRep.DetachedEntities + .Where(p => custIds.Contains(p.Id)) + .OrderBy(o => o.CreatedTime) + .ProjectToType<BaseCustomerOutput>() + .ToListAsync(); + + + resultInfo.MaterialInfo = wmsMaterialInfo; + resultInfo.SubstituteGoodList = wmsSubstituteGoods; + resultInfo.ControlRuleDetailList = wmsControlRuleDetails; + resultInfo.BaseCustomerList = baseCustomers; + return resultInfo; } /// <summary> @@ -190,36 +243,78 @@ //鎺у埗瑙勫垯淇℃伅 var controlRuleld = input.ControlRuleld; wmsMaterial.ControlRuleId = controlRuleld; + + //鑾峰彇鐗╂枡绫诲瀷 + var wmsMaterialType = (await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsMaterial.MaterialType && u.IsDeleted == false)).Adapt<WmsMaterialTypeOutput>(); + if(wmsMaterialType==null) throw Oops.Oh($"ID{wmsMaterial.MaterialType}鐗╂枡绫诲瀷涓嶅瓨鍦�"); - //寰�鏉ュ叧绯讳俊鎭� - var baseCustomerList = input.BaseCustomerList.Adapt<List<BaseCustomer>>(); - //鐗╂枡瀹㈡埛鍏宠仈鍏崇郴 - var materialCustomerList=new List<WmsMaterialCustomer>(); - foreach (var baseCustomer in baseCustomerList) + wmsMaterial.MaterialTypeName = wmsMaterialType.MaterialTypeName; + var materialCustomerList = new List<WmsMaterialCustomer>(); + if (input.BaseCustomerList?.Count > 0) { - materialCustomerList.Add(new WmsMaterialCustomer() + //寰�鏉ュ崟浣� + var wmsBaseCustomerList = await _baseCustomerRep.DetachedEntities.Where(u => input.BaseCustomerList.Contains(u.Id) && u.IsDeleted == false).ProjectToType<BaseCustomerOutput>().ToListAsync(); + if (wmsBaseCustomerList?.Count() <= 0) { - 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 - - }); + throw Oops.Oh($"寰�鏉ュ崟浣嶄笉瀛樺湪"); + } + + //鐗╂枡瀹㈡埛鍏宠仈鍏崇郴 + materialCustomerList = new List<WmsMaterialCustomer>(); + foreach (var baseCustomer in wmsBaseCustomerList) + { + if (baseCustomer.IsDisabled == true) + { + throw Oops.Oh($"涓嶈兘浣跨敤宸茬鐢ㄧ殑寰�鏉ュ崟浣�"); + } + 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 + + }); + } } + //楠岃瘉 await CheckExisit(wmsMaterial); //鏇夸唬鍝佷俊鎭� var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>(); + List<string> materialCodes = substituteGoodList.Select(s => s.SubstituteMaterialCode).ToList(); + + if (materialCodes?.Count > 0) + { + var wmsSubstituteMaterialInfoList = await _wmsMaterialRep.DetachedEntities.Where(u => materialCodes.Contains(u.MaterialCode) && u.IsDeleted == false).ProjectToType<WmsMaterialOutput>().ToListAsync(); + if (wmsSubstituteMaterialInfoList?.Count <= 0) + { + throw Oops.Oh($"鏇夸唬鍝佺墿鏂欎笉瀛樺湪"); + } + + foreach (var item in substituteGoodList) + { + if (item.IsDisabled == true) + { + throw Oops.Oh($"涓嶈兘浣跨敤宸茬鐢ㄧ殑鏇夸唬鍝佺墿鏂�"); + } + + var substituteMaterialInfo = wmsSubstituteMaterialInfoList.FirstOrDefault(f => f.MaterialCode == item.SubstituteMaterialCode); + item.SubstituteCode = await SerialUtil.GetSerial(EnumSerialType.鏇夸唬鍝佺紪鍙�); + item.SubstituteMaterialName = substituteMaterialInfo.MaterialName;//鏇夸唬鍝佺墿鏂欏悕绉� + } + } + wmsMaterial.UpdatedUserId = SysHelper.GetUserId(); wmsMaterial.UpdatedUserName = SysHelper.GetUserName(); @@ -269,7 +364,11 @@ //鎺у埗瑙勫垯淇℃伅 var controlRuleld = input.ControlRuleld; wmsMaterial.ControlRuleId = controlRuleld; + //鑾峰彇鐗╂枡绫诲瀷 + var wmsMaterialType = (await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsMaterial.MaterialType && u.IsDeleted == false)).Adapt<WmsMaterialTypeOutput>(); + if (wmsMaterialType == null) throw Oops.Oh($"ID{wmsMaterial.MaterialType}鐗╂枡绫诲瀷涓嶅瓨鍦�"); + wmsMaterial.MaterialTypeName = wmsMaterialType.MaterialTypeName; //鍒犻櫎鐗╂枡瀹㈡埛鍏宠仈鍏崇郴 var oldaterialCustomerList = await _wmsMaterialCustomerRep.DetachedEntities.Where(w => w.MaterialId == wmsMaterial.Id).ToListAsync(); @@ -278,31 +377,44 @@ await _wmsMaterialCustomerRep.DeleteAsync(oldaterialCustomerList); } - - //寰�鏉ュ叧绯讳俊鎭� - var baseCustomerList = input.BaseCustomerList.Adapt<List<BaseCustomer>>(); - //鐗╂枡瀹㈡埛鍏宠仈鍏崇郴 var materialCustomerList = new List<WmsMaterialCustomer>(); - foreach (var baseCustomer in baseCustomerList) + if (input.BaseCustomerList?.Count > 0) { - materialCustomerList.Add(new WmsMaterialCustomer() + //寰�鏉ュ崟浣� + var wmsBaseCustomerList = await _baseCustomerRep.DetachedEntities.Where(u => input.BaseCustomerList.Contains(u.Id) && u.IsDeleted == false).ProjectToType<BaseCustomerOutput>().ToListAsync(); + if (wmsBaseCustomerList?.Count() <= 0) { - 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 + throw Oops.Oh($"寰�鏉ュ崟浣嶄笉瀛樺湪"); + } - }); + //鐗╂枡瀹㈡埛鍏宠仈鍏崇郴 + materialCustomerList = new List<WmsMaterialCustomer>(); + foreach (var baseCustomer in wmsBaseCustomerList) + { + if (baseCustomer.IsDisabled == true) + { + throw Oops.Oh($"涓嶈兘浣跨敤宸茬鐢ㄧ殑寰�鏉ュ崟浣�"); + } + 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(); @@ -314,7 +426,28 @@ //鏇夸唬鍝佷俊鎭� var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>(); + List<string> materialCodes = substituteGoodList.Select(s => s.SubstituteMaterialCode).ToList(); + if(materialCodes?.Count > 0) + { + var wmsSubstituteMaterialInfoList = await _wmsMaterialRep.DetachedEntities.Where(u => materialCodes.Contains(u.MaterialCode) && u.IsDeleted == false).ProjectToType<WmsMaterialOutput>().ToListAsync(); + if (wmsSubstituteMaterialInfoList?.Count <= 0) + { + throw Oops.Oh($"鏇夸唬鍝佺墿鏂欎笉瀛樺湪"); + } + foreach (var item in substituteGoodList) + { + if (item.IsDisabled == true) + { + throw Oops.Oh($"涓嶈兘浣跨敤宸茬鐢ㄧ殑鏇夸唬鍝佺墿鏂�"); + } + var substituteMaterialInfo = wmsSubstituteMaterialInfoList.FirstOrDefault(f => f.MaterialCode == item.SubstituteMaterialCode); + item.SubstituteCode = await SerialUtil.GetSerial(EnumSerialType.鏇夸唬鍝佺紪鍙�); + item.SubstituteMaterialName = substituteMaterialInfo.MaterialName;//鏇夸唬鍝佺墿鏂欏悕绉� + } + } + + if (materialCustomerList?.Count > 0) { await _wmsMaterialCustomerRep.InsertAsync(materialCustomerList); @@ -389,11 +522,8 @@ var _MaterialName = "";//鐗╂枡鍚嶇О var _MaterialCode = "";//鐗╂枡缂栧彿 var _ErpCode = "";//ERP缂栧彿 - var _MaterialTypeName = "";//鐗╂枡绫诲瀷鍚嶇О - var _MaterialTypeDescr = "";//鐗╂枡绫诲瀷鎻忚堪 var _MaterialType = "";//鐗╂枡绫诲瀷 var _MaterialGroup = "";//鐗╂枡缁� - var _ABCClassName = "";//ABC鍒嗙被鍚嶇О var _ABCClass = "";//ABC鍒嗙被 var _MaterialSpec = "";//鐗╂枡瑙勬牸 var _InPlaceCode = "";//榛樿鍏ュ簱搴撲綅 @@ -415,11 +545,8 @@ _MaterialName = row["鐗╂枡鍚嶇О"]?.ToString(); _MaterialCode = row["鐗╂枡缂栧彿"]?.ToString(); _ErpCode = row["ERP缂栧彿"]?.ToString(); - _MaterialTypeName = row["鐗╂枡绫诲瀷鍚嶇О"]?.ToString(); - _MaterialTypeDescr = row["鐗╂枡绫诲瀷鎻忚堪"]?.ToString(); _MaterialType = row["鐗╂枡绫诲瀷"]?.ToString(); _MaterialGroup = row["鐗╂枡缁�"]?.ToString(); - _ABCClassName = row["ABC鍒嗙被鍚嶇О"]?.ToString(); _ABCClass = row["ABC鍒嗙被"]?.ToString(); _MaterialSpec = row["鐗╂枡瑙勬牸"]?.ToString(); _InPlaceCode = row["榛樿鍏ュ簱搴撲綅"]?.ToString(); @@ -462,14 +589,7 @@ { addItem.ErpCode = (string)_ErpCode; } - if (!string.IsNullOrEmpty(_MaterialTypeName)) - { - addItem.MaterialTypeName = (string)_MaterialTypeName; - } - if (!string.IsNullOrEmpty(_MaterialTypeDescr)) - { - addItem.MaterialTypeDescr = (string)_MaterialTypeDescr; - } + if (string.IsNullOrEmpty(_MaterialType)) { @@ -478,26 +598,15 @@ if (!string.IsNullOrEmpty(_MaterialType)) { - System.Int32 enumMaterialType = default(System.Int32); - - if (!Enum.TryParse<System.Int32>(_MaterialType, out enumMaterialType) && !string.IsNullOrEmpty(_MaterialType)) - { - throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷]{_MaterialType}鍊间笉姝g‘锛�"); - } - else - { - addItem.MaterialType = enumMaterialType; - } - + //TODO 鏍规嵁鐗╂枡绫诲瀷ID鑾峰彇鐗╂枡绫诲瀷 + addItem.MaterialType = 0; + addItem.MaterialTypeName = ""; } if (!string.IsNullOrEmpty(_MaterialGroup)) { addItem.MaterialGroup = (string)_MaterialGroup; } - if (!string.IsNullOrEmpty(_ABCClassName)) - { - addItem.ABCClassName = (string)_ABCClassName; - } + if (!string.IsNullOrEmpty(_ABCClass)) { Admin.NET.Core.ABCClassEnum enumABCClass = default(Admin.NET.Core.ABCClassEnum); @@ -567,38 +676,7 @@ } } - if (!string.IsNullOrEmpty(_BatchRuleId)) - { - if (!long.TryParse(_BatchRuleId, out long outBatchRuleId) && !string.IsNullOrEmpty(_BatchRuleId)) - { - throw Oops.Oh($"绗瑊index}琛孾鎵规灞炴�ц鍒橾{_BatchRuleId}鍊间笉姝g‘锛�"); - } - if (outBatchRuleId <= 0 && !string.IsNullOrEmpty(_BatchRuleId)) - { - throw Oops.Oh($"绗瑊index}琛孾鎵规灞炴�ц鍒橾{_BatchRuleId}鍊间笉鑳藉皬浜庣瓑浜�0锛�"); - } - else - { - addItem.BatchRuleId = outBatchRuleId; - } - - } - if (!string.IsNullOrEmpty(_ControlRuleId)) - { - if (!long.TryParse(_ControlRuleId, out long outControlRuleId) && !string.IsNullOrEmpty(_ControlRuleId)) - { - throw Oops.Oh($"绗瑊index}琛孾鎺у埗灞炴�ц鍒橾{_ControlRuleId}鍊间笉姝g‘锛�"); - } - if (outControlRuleId <= 0 && !string.IsNullOrEmpty(_ControlRuleId)) - { - throw Oops.Oh($"绗瑊index}琛孾鎺у埗灞炴�ц鍒橾{_ControlRuleId}鍊间笉鑳藉皬浜庣瓑浜�0锛�"); - } - else - { - addItem.ControlRuleId = outControlRuleId; - } - - } + if (!string.IsNullOrEmpty(_IsDisabled)) { if (!_IsDisabled.Equals("鏄�") && !_IsDisabled.Equals("鍚�")) -- Gitblit v1.9.3