From 4d14b84903bf0277c5e8b9b3138c5e1d981e95db Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周四, 25 4月 2024 11:01:31 +0800 Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/iWare_RawMaterialWarehouse --- iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs | 836 +++++++++++++++++++++++++++++++++------------------------- 1 files changed, 475 insertions(+), 361 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 930edf9..7e2b3d6 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 @@ -27,22 +27,26 @@ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep; private readonly ISysExcelTemplateService _sysExcelTemplateService; private readonly static object _lock = new(); - + private readonly IRepository<WmsMaterialCustomer, MasterDbContextLocator> _wmsMaterialCustomerRep; + private readonly IRepository<WmsSubstituteGood, MasterDbContextLocator> _wmsSubstituteGoodRep; public WmsMaterialService( IRepository<WmsMaterial,MasterDbContextLocator> wmsMaterialRep ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep ,ISysExcelTemplateService sysExcelTemplateService + , IRepository<WmsMaterialCustomer, MasterDbContextLocator> wmsMaterialCustomerRep + , IRepository<WmsSubstituteGood, MasterDbContextLocator> wmsSubstituteGoodRep ) { _wmsMaterialRep = wmsMaterialRep; _sysDictTypeRep = sysDictTypeRep; _sysDictDataRep = sysDictDataRep; _sysExcelTemplateService = sysExcelTemplateService; + _wmsMaterialCustomerRep = wmsMaterialCustomerRep; + _wmsSubstituteGoodRep = wmsSubstituteGoodRep; } - /// <summary> - /// 鍒嗛〉鏌ヨ鐗╂枡淇℃伅琛� + /// 鍒嗛〉鏌ヨ鐗╂枡淇℃伅 /// </summary> /// <param name="input"></param> /// <returns></returns> @@ -50,7 +54,7 @@ public async Task<PageResult<WmsMaterialOutput>> Page([FromQuery] WmsMaterialSearch input) { var wmsMaterials = await _wmsMaterialRep.DetachedEntities - .Where(!string.IsNullOrEmpty(input.MaterialName), u => EF.Functions.Like(u.MaterialName, $"%{input.MaterialName.Trim()}%")) + .Where(!string.IsNullOrEmpty(input.MaterialName), u => u.MaterialName == input.MaterialName) .Where(!string.IsNullOrEmpty(input.MaterialCode), u => u.MaterialCode == input.MaterialCode) .Where(!string.IsNullOrEmpty(input.ErpCode), u => u.ErpCode == input.ErpCode) .Where(!string.IsNullOrEmpty(input.MaterialTypeName), u => u.MaterialTypeName == input.MaterialTypeName) @@ -71,8 +75,8 @@ .Where(input.ControlRuleId != null, u => u.ControlRuleId == input.ControlRuleId) .Where(input.IsDisabled != null, u => u.IsDisabled == input.IsDisabled) .Where(!string.IsNullOrEmpty(input.MaterialDesc), u => u.MaterialDesc == input.MaterialDesc) - .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) - .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) + .Where(input.CreatedTime != null, u => u.CreatedTime >= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime <= Convert.ToDateTime(input.CreatedTime[1])) + .Where(input.UpdatedTime != null, u => u.UpdatedTime >= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime <= Convert.ToDateTime(input.UpdatedTime[1])) .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName) .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName) .OrderBy(PageInputOrder.OrderBuilder<WmsMaterialSearch>(input)) @@ -82,10 +86,10 @@ } /// <summary> - /// 涓嶅垎椤垫煡璇㈢墿鏂欎俊鎭〃鍒楄〃 + /// 涓嶅垎椤垫煡璇㈢墿鏂欎俊鎭垪琛� /// </summary> - /// <param name="input">鐗╂枡淇℃伅琛ㄦ煡璇㈠弬鏁�</param> - /// <returns>(鐗╂枡淇℃伅琛�)瀹炰緥鍒楄〃</returns> + /// <param name="input">鐗╂枡淇℃伅鏌ヨ鍙傛暟</param> + /// <returns>(鐗╂枡淇℃伅)瀹炰緥鍒楄〃</returns> [HttpGet("WmsMaterial/listNonPage")] public async Task<List<WmsMaterialOutput>> ListNonPageAsync([FromQuery] WmsMaterialSearchNonPage input) { @@ -115,7 +119,7 @@ var pCreatedUserName = input.CreatedUserName?.Trim() ?? ""; var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? ""; var wmsMaterials = await _wmsMaterialRep.DetachedEntities - .Where(!string.IsNullOrEmpty(pMaterialName), u => EF.Functions.Like(u.MaterialName, $"%{pMaterialName}%")) + .Where(!string.IsNullOrEmpty(pMaterialName), u => u.MaterialName == pMaterialName) .Where(!string.IsNullOrEmpty(pMaterialCode), u => u.MaterialCode == pMaterialCode) .Where(!string.IsNullOrEmpty(pErpCode), u => u.ErpCode == pErpCode) .Where(!string.IsNullOrEmpty(pMaterialTypeName), u => u.MaterialTypeName == pMaterialTypeName) @@ -136,8 +140,8 @@ .Where(pControlRuleId != null, u => u.ControlRuleId == pControlRuleId) .Where(pIsDisabled != null, u => u.IsDisabled == pIsDisabled) .Where(!string.IsNullOrEmpty(pMaterialDesc), u => u.MaterialDesc == pMaterialDesc) - .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) - .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) + .Where(input.CreatedTime != null, u => u.CreatedTime >= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime <= Convert.ToDateTime(input.CreatedTime[1])) + .Where(input.UpdatedTime != null, u => u.UpdatedTime >= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime <= Convert.ToDateTime(input.UpdatedTime[1])) .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName) .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName) .OrderBy(PageInputOrder.OrderNonPageBuilder(input)) @@ -146,8 +150,8 @@ return wmsMaterials; } - /// <summary> - /// 鑾峰彇鐗╂枡淇℃伅琛� + /// <summary> + /// 鑾峰彇鐗╂枡淇℃伅 /// </summary> /// <param name="input"></param> /// <returns></returns> @@ -158,7 +162,7 @@ } /// <summary> - /// 鑾峰彇鐗╂枡淇℃伅琛ㄥ垪琛� + /// 鑾峰彇鐗╂枡淇℃伅鍒楄〃 /// </summary> /// <param name="input"></param> /// <returns></returns> @@ -177,15 +181,17 @@ /// <param name="input"></param> /// <returns></returns> [HttpPost("WmsMaterial/add")] + [UnitOfWork] public async Task Add(AddWmsMaterialInfoInput input) { - //鐗╂枡淇℃伅 var wmsMaterial = input.MaterialInput.Adapt<WmsMaterial>(); //鎺у埗瑙勫垯淇℃伅 var controlRuleld = input.ControlRuleld; - //瀹㈡埛妗f淇℃伅 + wmsMaterial.ControlRuleId = controlRuleld; + + //寰�鏉ュ叧绯讳俊鎭� var baseCustomerList = input.BaseCustomerList.Adapt<List<BaseCustomer>>(); //鐗╂枡瀹㈡埛鍏宠仈鍏崇郴 var materialCustomerList=new List<WmsMaterialCustomer>(); @@ -208,22 +214,31 @@ UpdatedUserName = CurrentUserInfo.Name }); - } - - //鏇夸唬鍝佷俊鎭� - var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>(); //楠岃瘉 await CheckExisit(wmsMaterial); - wmsMaterial.CreatedUserId = wmsMaterial.UpdatedUserId = SysHelper.GetUserId(); - wmsMaterial.CreatedUserName = wmsMaterial.UpdatedUserName = SysHelper.GetUserName(); - wmsMaterial.CreatedTime = wmsMaterial.UpdatedTime = SysHelper.GetNowTime(); + //鏇夸唬鍝佷俊鎭� + var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>(); + + wmsMaterial.UpdatedUserId = SysHelper.GetUserId(); + wmsMaterial.UpdatedUserName = SysHelper.GetUserName(); + wmsMaterial.UpdatedTime = SysHelper.GetNowTime(); + + await _wmsMaterialRep.InsertAsync(wmsMaterial); + if (materialCustomerList?.Count > 0) + { + await _wmsMaterialCustomerRep.InsertAsync(materialCustomerList); + } + if (substituteGoodList?.Count > 0) + { + await _wmsSubstituteGoodRep.InsertAsync(substituteGoodList); + } } /// <summary> - /// 鍒犻櫎鐗╂枡淇℃伅琛� + /// 鍒犻櫎鐗╂枡淇℃伅 /// </summary> /// <param name="input"></param> /// <returns></returns> @@ -232,28 +247,89 @@ { var wmsMaterial = await _wmsMaterialRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _wmsMaterialRep.DeleteAsync(wmsMaterial); - + } /// <summary> - /// 鏇存柊鐗╂枡淇℃伅琛� + /// 鏇存柊鐗╂枡淇℃伅 /// </summary> /// <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); + 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>>(); + + 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); + await _wmsMaterialRep.UpdateAsync(wmsMaterial, ignoreNullValues: true); + + } #endregion @@ -261,23 +337,23 @@ #region 瀵煎叆 /// <summary> - /// Excel妯℃澘瀵煎叆鐗╂枡淇℃伅琛ㄥ姛鑳� + /// Excel妯℃澘瀵煎叆鐗╂枡淇℃伅鍔熻兘 /// </summary> /// <param name="file">Excel妯℃澘鏂囦欢</param> /// <returns>瀵煎叆鐨勮褰曟暟</returns> [HttpPost("WmsMaterial/importExcel")] public async Task<int> ImportExcelAsync(IFormFile file) - { + { int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕 int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁 DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine); - var addList =await CommonImport(importDataTable, _DataStartLine); + var addList = await CommonImport(importDataTable, _DataStartLine); lock (_lock) { _wmsMaterialRep.InsertAsync(addList); - + } await Task.CompletedTask; return addList.Count; @@ -298,277 +374,278 @@ { index++; - //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛� - - var addItem = new WmsMaterial() - { - CreatedTime = SysHelper.GetNowTime(), - CreatedUserId = SysHelper.GetUserId(), - CreatedUserName = SysHelper.GetUserName(), - UpdatedTime = SysHelper.GetNowTime(), - UpdatedUserId = SysHelper.GetUserId(), - UpdatedUserName = SysHelper.GetUserName() - }; - #region 瀹氫箟鍙橀噺 - 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 = "";//榛樿鍏ュ簱搴撲綅 - var _MaterialUnit = "";//搴撳瓨鍗曚綅 - var _POUnit = "";//閲囪喘鍗曚綅 - var _Color = "";//棰滆壊 - var _Weight = "";//閲嶉噺 - var _SNP = "";//鏍囧寘鏁伴噺 - var _TranslateRate = "";//鎹㈢畻鐜� - var _BatchRuleId = "";//鎵规灞炴�ц鍒� - var _ControlRuleId = "";//鎺у埗灞炴�ц鍒� - var _IsDisabled = "";//鏄惁绂佺敤 - var _MaterialDesc = "";//鎻忚堪 - var _Id = "";//Id涓婚敭 - #endregion - - - #region 鍙栧�� - _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() ; - _MaterialUnit = row["搴撳瓨鍗曚綅"]?.ToString() ; - _POUnit = row["閲囪喘鍗曚綅"]?.ToString() ; - _Color = row["棰滆壊"]?.ToString() ; - _Weight = row["閲嶉噺"]?.ToString() ; - _SNP = row["鏍囧寘鏁伴噺"]?.ToString() ; - _TranslateRate = row["鎹㈢畻鐜�"]?.ToString() ; - _BatchRuleId = row["鎵规灞炴�ц鍒�"]?.ToString() ; - _ControlRuleId = row["鎺у埗灞炴�ц鍒�"]?.ToString() ; - _IsDisabled = row["鏄惁绂佺敤"]?.ToString() ; - _MaterialDesc = row["鎻忚堪"]?.ToString() ; - _Id = row["Id涓婚敭"]?.ToString() ; - #endregion - - - #region 楠岃瘉 - - if (string.IsNullOrEmpty(_MaterialName)) - { - throw Oops.Oh($"绗瑊index}琛孾鐗╂枡鍚嶇О]{_MaterialName}涓嶈兘涓虹┖锛�"); - } - - if(!string.IsNullOrEmpty(_MaterialName)) - { - addItem.MaterialName = (string)_MaterialName; - } - - if (string.IsNullOrEmpty(_MaterialCode)) - { - throw Oops.Oh($"绗瑊index}琛孾鐗╂枡缂栧彿]{_MaterialCode}涓嶈兘涓虹┖锛�"); - } - - if(!string.IsNullOrEmpty(_MaterialCode)) - { - addItem.MaterialCode = (string)_MaterialCode; - } - if(!string.IsNullOrEmpty(_ErpCode)) - { - addItem.ErpCode = (string)_ErpCode; - } - if(!string.IsNullOrEmpty(_MaterialTypeName)) - { - addItem.MaterialTypeName = (string)_MaterialTypeName; - } - if(!string.IsNullOrEmpty(_MaterialTypeDescr)) - { - addItem.MaterialTypeDescr = (string)_MaterialTypeDescr; - } - if(!string.IsNullOrEmpty(_MaterialType)) - { - if (!int.TryParse(_MaterialType, out int outMaterialType)&&!string.IsNullOrEmpty(_MaterialType)) - { - throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷]{_MaterialType}鍊间笉姝g‘锛�"); - } - if (outMaterialType <= 0&&!string.IsNullOrEmpty(_MaterialType)) - { - throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷]{_MaterialType}鍊间笉鑳藉皬浜庣瓑浜�0锛�"); - } - else - { - addItem.MaterialType = outMaterialType; - } - - } - if(!string.IsNullOrEmpty(_MaterialGroup)) - { - addItem.MaterialGroup = (string)_MaterialGroup; - } - if(!string.IsNullOrEmpty(_ABCClassName)) - { - addItem.ABCClassName = (string)_ABCClassName; - } - if(!string.IsNullOrEmpty(_ABCClass)) - { - if (!int.TryParse(_ABCClass, out int outABCClass)&&!string.IsNullOrEmpty(_ABCClass)) - { - throw Oops.Oh($"绗瑊index}琛孾ABC鍒嗙被]{_ABCClass}鍊间笉姝g‘锛�"); - } - if (outABCClass <= 0&&!string.IsNullOrEmpty(_ABCClass)) - { - throw Oops.Oh($"绗瑊index}琛孾ABC鍒嗙被]{_ABCClass}鍊间笉鑳藉皬浜庣瓑浜�0锛�"); - } - else - { - addItem.ABCClass = outABCClass; - } - - } - if(!string.IsNullOrEmpty(_MaterialSpec)) - { - addItem.MaterialSpec = (string)_MaterialSpec; - } - if(!string.IsNullOrEmpty(_InPlaceCode)) - { - addItem.InPlaceCode = (string)_InPlaceCode; - } - if(!string.IsNullOrEmpty(_MaterialUnit)) - { - addItem.MaterialUnit = (string)_MaterialUnit; - } - if(!string.IsNullOrEmpty(_POUnit)) - { - addItem.POUnit = (string)_POUnit; - } - if(!string.IsNullOrEmpty(_Color)) - { - addItem.Color = (string)_Color; - } - if(!string.IsNullOrEmpty(_Weight)) - { - addItem.Weight = (string)_Weight; - } - if(!string.IsNullOrEmpty(_SNP)) - { - if (!decimal.TryParse(_SNP, out decimal outSNP)&&!string.IsNullOrEmpty(_SNP)) - { - throw Oops.Oh($"绗瑊index}琛孾鏍囧寘鏁伴噺]{_SNP}鍊间笉姝g‘锛�"); - } - if (outSNP <= 0&&!string.IsNullOrEmpty(_SNP)) - { - throw Oops.Oh($"绗瑊index}琛孾鏍囧寘鏁伴噺]{_SNP}鍊间笉鑳藉皬浜庣瓑浜�0锛�"); - } - else - { - addItem.SNP = outSNP; - } - - } - if(!string.IsNullOrEmpty(_TranslateRate)) - { - if (!decimal.TryParse(_TranslateRate, out decimal outTranslateRate)&&!string.IsNullOrEmpty(_TranslateRate)) - { - throw Oops.Oh($"绗瑊index}琛孾鎹㈢畻鐜嘳{_TranslateRate}鍊间笉姝g‘锛�"); - } - if (outTranslateRate <= 0&&!string.IsNullOrEmpty(_TranslateRate)) - { - throw Oops.Oh($"绗瑊index}琛孾鎹㈢畻鐜嘳{_TranslateRate}鍊间笉鑳藉皬浜庣瓑浜�0锛�"); - } - else - { - addItem.TranslateRate = outTranslateRate; - } - - } - 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("鍚�")) - { - throw Oops.Oh($"绗瑊index}琛孾鏄惁绂佺敤]{_IsDisabled}鍊间笉姝g‘锛�"); - } - else - { - bool outIsDisabled = _IsDisabled.Equals("鏄�") ? true : false; - addItem.IsDisabled = outIsDisabled; - } - } - - if(!string.IsNullOrEmpty(_MaterialDesc)) - { - addItem.MaterialDesc = (string)_MaterialDesc; - } - if(!string.IsNullOrEmpty(_Id)) - { - if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id)) - { - throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉姝g‘锛�"); - } - if (outId <= 0&&!string.IsNullOrEmpty(_Id)) - { - throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉鑳藉皬浜庣瓑浜�0锛�"); - } - else - { - addItem.Id = outId; - } - - } - #endregion - + //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛� - + var addItem = new WmsMaterial() + { + CreatedTime = SysHelper.GetNowTime(), + CreatedUserId = SysHelper.GetUserId(), + CreatedUserName = SysHelper.GetUserName(), + UpdatedTime = SysHelper.GetNowTime(), + UpdatedUserId = SysHelper.GetUserId(), + UpdatedUserName = SysHelper.GetUserName() + }; + #region 瀹氫箟鍙橀噺 + 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 = "";//榛樿鍏ュ簱搴撲綅 + var _MaterialUnit = "";//搴撳瓨鍗曚綅 + var _POUnit = "";//閲囪喘鍗曚綅 + var _Color = "";//棰滆壊 + var _Weight = "";//閲嶉噺 + var _SNP = "";//鏍囧寘鏁伴噺 + var _TranslateRate = "";//鎹㈢畻鐜� + var _BatchRuleId = "";//鎵规灞炴�ц鍒� + var _ControlRuleId = "";//鎺у埗灞炴�ц鍒� + var _IsDisabled = "";//鏄惁绂佺敤 + var _MaterialDesc = "";//鎻忚堪 + var _Id = "";//Id涓婚敭 + #endregion + + + #region 鍙栧�� + _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(); + _MaterialUnit = row["搴撳瓨鍗曚綅"]?.ToString(); + _POUnit = row["閲囪喘鍗曚綅"]?.ToString(); + _Color = row["棰滆壊"]?.ToString(); + _Weight = row["閲嶉噺"]?.ToString(); + _SNP = row["鏍囧寘鏁伴噺"]?.ToString(); + _TranslateRate = row["鎹㈢畻鐜�"]?.ToString(); + _BatchRuleId = row["鎵规灞炴�ц鍒�"]?.ToString(); + _ControlRuleId = row["鎺у埗灞炴�ц鍒�"]?.ToString(); + _IsDisabled = row["鏄惁绂佺敤"]?.ToString(); + _MaterialDesc = row["鎻忚堪"]?.ToString(); + _Id = row["Id涓婚敭"]?.ToString(); + #endregion + + + #region 楠岃瘉 + + if (string.IsNullOrEmpty(_MaterialName)) + { + throw Oops.Oh($"绗瑊index}琛孾鐗╂枡鍚嶇О]{_MaterialName}涓嶈兘涓虹┖锛�"); + } + + if (!string.IsNullOrEmpty(_MaterialName)) + { + addItem.MaterialName = (string)_MaterialName; + } + + if (string.IsNullOrEmpty(_MaterialCode)) + { + throw Oops.Oh($"绗瑊index}琛孾鐗╂枡缂栧彿]{_MaterialCode}涓嶈兘涓虹┖锛�"); + } + + if (!string.IsNullOrEmpty(_MaterialCode)) + { + addItem.MaterialCode = (string)_MaterialCode; + } + if (!string.IsNullOrEmpty(_ErpCode)) + { + addItem.ErpCode = (string)_ErpCode; + } + if (!string.IsNullOrEmpty(_MaterialTypeName)) + { + addItem.MaterialTypeName = (string)_MaterialTypeName; + } + if (!string.IsNullOrEmpty(_MaterialTypeDescr)) + { + addItem.MaterialTypeDescr = (string)_MaterialTypeDescr; + } + + if (string.IsNullOrEmpty(_MaterialType)) + { + throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷]{_MaterialType}涓嶈兘涓虹┖锛�"); + } + + 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; + } + + } + 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); + + if (!Enum.TryParse < Admin.NET.Core.ABCClassEnum > (_ABCClass, out enumABCClass)&& !string.IsNullOrEmpty(_ABCClass)) + { + throw Oops.Oh($"绗瑊index}琛孾ABC鍒嗙被]{_ABCClass}鍊间笉姝g‘锛�"); + } else + { + addItem.ABCClass = enumABCClass; + } + + } + if (!string.IsNullOrEmpty(_MaterialSpec)) + { + addItem.MaterialSpec = (string)_MaterialSpec; + } + if (!string.IsNullOrEmpty(_InPlaceCode)) + { + addItem.InPlaceCode = (string)_InPlaceCode; + } + if (!string.IsNullOrEmpty(_MaterialUnit)) + { + addItem.MaterialUnit = (string)_MaterialUnit; + } + if (!string.IsNullOrEmpty(_POUnit)) + { + addItem.POUnit = (string)_POUnit; + } + if (!string.IsNullOrEmpty(_Color)) + { + addItem.Color = (string)_Color; + } + if (!string.IsNullOrEmpty(_Weight)) + { + addItem.Weight = (string)_Weight; + } + if (!string.IsNullOrEmpty(_SNP)) + { + if (!decimal.TryParse(_SNP, out decimal outSNP) && !string.IsNullOrEmpty(_SNP)) + { + throw Oops.Oh($"绗瑊index}琛孾鏍囧寘鏁伴噺]{_SNP}鍊间笉姝g‘锛�"); + } + if (outSNP <= 0 && !string.IsNullOrEmpty(_SNP)) + { + throw Oops.Oh($"绗瑊index}琛孾鏍囧寘鏁伴噺]{_SNP}鍊间笉鑳藉皬浜庣瓑浜�0锛�"); + } + else + { + addItem.SNP = outSNP; + } + + } + if (!string.IsNullOrEmpty(_TranslateRate)) + { + if (!decimal.TryParse(_TranslateRate, out decimal outTranslateRate) && !string.IsNullOrEmpty(_TranslateRate)) + { + throw Oops.Oh($"绗瑊index}琛孾鎹㈢畻鐜嘳{_TranslateRate}鍊间笉姝g‘锛�"); + } + if (outTranslateRate <= 0 && !string.IsNullOrEmpty(_TranslateRate)) + { + throw Oops.Oh($"绗瑊index}琛孾鎹㈢畻鐜嘳{_TranslateRate}鍊间笉鑳藉皬浜庣瓑浜�0锛�"); + } + else + { + addItem.TranslateRate = outTranslateRate; + } + + } + 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("鍚�")) + { + throw Oops.Oh($"绗瑊index}琛孾鏄惁绂佺敤]{_IsDisabled}鍊间笉姝g‘锛�"); + } + else + { + bool outIsDisabled = _IsDisabled.Equals("鏄�") ? true : false; + addItem.IsDisabled = outIsDisabled; + } + } + + if (!string.IsNullOrEmpty(_MaterialDesc)) + { + addItem.MaterialDesc = (string)_MaterialDesc; + } + if (!string.IsNullOrEmpty(_Id)) + { + if (!long.TryParse(_Id, out long outId) && !string.IsNullOrEmpty(_Id)) + { + throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉姝g‘锛�"); + } + if (outId <= 0 && !string.IsNullOrEmpty(_Id)) + { + throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉鑳藉皬浜庣瓑浜�0锛�"); + } + else + { + addItem.Id = outId; + } + + } + #endregion + + + details.Add(addItem); } - //楠岄噸 - await CheckExisitForImport(details); - + //楠岄噸 + await CheckExisitForImport(details); + return details; } /// <summary> - /// 鏍规嵁鐗堟湰涓嬭浇鐗╂枡淇℃伅琛ㄧ殑Excel瀵煎叆妯℃澘 + /// 鏍规嵁鐗堟湰涓嬭浇鐗╂枡淇℃伅鐨凟xcel瀵煎叆妯℃澘 /// </summary> /// <param name="version">妯℃澘鐗堟湰</param> /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns> @@ -576,7 +653,7 @@ public IActionResult DownloadExcelTemplate([FromQuery] string version) { string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\WmsMaterial{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx"; - var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(鐗╂枡淇℃伅琛�).xlsx", Encoding.GetEncoding("UTF-8")); + var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(鐗╂枡淇℃伅).xlsx", Encoding.GetEncoding("UTF-8")); return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName }; } @@ -590,80 +667,117 @@ /// <param name="input"></param> /// <param name="isEdit"></param> /// <returns></returns> - private async Task CheckExisit( WmsMaterial input,bool isEdit=false) + private async Task CheckExisit(WmsMaterial input, bool isEdit = false) { - - - bool isExist = false; - if (!isEdit)//鏂板 - { - //鏁版嵁鏄惁瀛樺湪閲嶅 - isExist = await _wmsMaterialRep.AnyAsync(u => - u.MaterialCode.Equals(input.MaterialCode) - ,false); - } - else//缂栬緫 - { - - - //褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅 - isExist = await _wmsMaterialRep.AnyAsync(u => - u.Id != input.Id - &&u.MaterialCode.Equals(input.MaterialCode) - ,false); - } - - + + 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//缂栬緫 + { + + + + //褰撳墠缂栬緫鐗╂枡缂栧彿浠ュ鏄惁瀛樺湪閲嶅 + 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); + } + + if (isExist) throw Oops.Oh(ErrorCode.E0001); - } - + } + /// <summary> /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇� /// </summary> /// <param name="inputs"></param> /// <returns></returns> private async Task CheckExisitForImport(List<WmsMaterial> inputs) - { + { //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹� - if (inputs?.Count <= 0) - { - throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖"); - } - //鏁版嵁鏄惁閲嶅 - var existExcelItem = inputs.GroupBy(g => new { - g.MaterialCode - }) - .Where(g => g.Count() > 1) - .Select(s => new { - s.Key.MaterialCode - }).FirstOrDefault(); - if (existExcelItem != null) - { - var wmsMaterial = existExcelItem.Adapt<WmsMaterial>(); - var item= existExcelItem.Adapt<WmsMaterial>(); - throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,鐗╂枡缂栧彿[{item.MaterialCode}]宸插瓨鍦�"); - } - + if (inputs?.Count <= 0) + { + throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖"); + } + //鏁版嵁鏄惁閲嶅 + var existExcelItem = inputs.GroupBy(g => new { + g.MaterialCode + }) + .Where(g => g.Count() > 1) + .Select(s => new { + s.Key.MaterialCode + }).FirstOrDefault(); + if (existExcelItem != null) + { + var wmsMaterial = existExcelItem.Adapt<WmsMaterial>(); + var item = existExcelItem.Adapt<WmsMaterial>(); + 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}]宸插瓨鍦�"); + } + //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹� + var existDBItem = await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(w => + inputs.Select(s => "" + + s.MaterialCode + ) + .Contains("" + + w.MaterialCode + )); + if (existDBItem != null) + { + var wmsMaterial = existExcelItem.Adapt<WmsMaterial>(); + var item = existExcelItem.Adapt<WmsMaterial>(); + throw Oops.Oh($"绯荤粺涓�,鐗╂枡缂栧彿[{item.MaterialCode}]宸插瓨鍦�"); + } - //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹� - var existDBItem = await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(w=> - inputs.Select(s=>"" - +s.MaterialCode - ) - .Contains("" - +w.MaterialCode - )); - if (existDBItem != null) - { - var wmsMaterial = existExcelItem.Adapt<WmsMaterial>(); - 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