From 3fa9d2b0420f4d39849f72e6a04b5cb40823fa0d Mon Sep 17 00:00:00 2001
From: payne <bzrlw2012@163.com>
Date: 周四, 25 4月 2024 15:31:14 +0800
Subject: [PATCH] 物料新增调整

---
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialInput.cs             |    2 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodInput.cs |    2 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SerialSN/EnumSerialType.cs                         |   13 ++++
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsMaterialImport.xlsx                  |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs               |  104 +++++++++++++---------------------
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SerialSN/SerialUtil.cs                             |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialOutput.cs            |    2 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs                                          |    2 
 8 files changed, 55 insertions(+), 71 deletions(-)

diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SerialSN/EnumSerialType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SerialSN/EnumSerialType.cs
index dfbaeed..e960468 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SerialSN/EnumSerialType.cs
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SerialSN/EnumSerialType.cs
@@ -13,7 +13,18 @@
         /// </summary>
         [Description("娴嬭瘯缂栧彿")]
         娴嬭瘯缂栧彿 = 10,
-       
+
+
+        /// <summary>
+        /// 鏇夸唬鍝佺紪鍙�
+        /// </summary>
+        [Description("鏇夸唬鍝佺紪鍙�")]
+        鏇夸唬鍝佺紪鍙� = 20,
+        /// <summary>
+        /// 瀹㈡埛缂栧彿
+        /// </summary>
+        [Description("瀹㈡埛缂栧彿")]
+        瀹㈡埛缂栧彿 = 30,
 
 
     }
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SerialSN/SerialUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SerialSN/SerialUtil.cs
index 4e52ce2..2d46ba4 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SerialSN/SerialUtil.cs
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SerialSN/SerialUtil.cs
@@ -29,6 +29,7 @@
                     {
                         return GetSerialDetails(SerialType).Result;
                     };
+
                 default:
                     lock (_lockPublic)
                     {//涓轰簡閬垮厤澶氱嚎绋嬪嚭鐜扮紪鍙蜂竴鑷寸殑鎯呭喌锛屽姞涓婇攣锛屾澶勪负鍏叡閿侊紝鍙敤浜庝笉棰戠箒鐢熸垚缂栧彿鐨勶紝鑻ラ渶瑕侀绻佺敓鎴愶紝璇峰弬鑰冧笂闈est璁剧疆鍗曠嫭閿�
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialInput.cs
index a6c6aec..8fa596f 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialInput.cs
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialInput.cs
@@ -306,7 +306,7 @@
         /// <summary>
         /// 鐗╂枡绫诲瀷
         /// </summary>
-        public virtual int? MaterialType { get; set; }
+        public virtual long? MaterialType { get; set; }
         
         /// <summary>
         /// 鐗╂枡缁�
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialOutput.cs
index a9f7638..697f97c 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialOutput.cs
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialOutput.cs
@@ -36,7 +36,7 @@
         /// <summary>
         /// 鐗╂枡绫诲瀷
         /// </summary>
-        public int? MaterialType { get; set; }
+        public long? MaterialType { get; set; }
         
         /// <summary>
         /// 鐗╂枡缁�
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 7b882f7..1986e68 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>
@@ -31,6 +32,8 @@
         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
@@ -40,6 +43,8 @@
             , IRepository<BaseCustomer, MasterDbContextLocator> baseCustomerRep
             , IRepository<WmsSubstituteGood, MasterDbContextLocator> wmsSubstituteGoodRep
             , IRepository<WmsControlRuleDetail, MasterDbContextLocator> wmsControlRuleDetailRep
+            , IRepository<WmsMaterialType, MasterDbContextLocator> wmsMaterialTypeRep
+            , IRepository<WmsUnit, MasterDbContextLocator> wmsUnitRep
         )
         {
             _wmsMaterialRep = wmsMaterialRep;
@@ -50,6 +55,8 @@
             _baseCustomerRep = baseCustomerRep;
             _wmsSubstituteGoodRep = wmsSubstituteGoodRep;
             _wmsControlRuleDetailRep = wmsControlRuleDetailRep;
+            _wmsMaterialTypeRep = wmsMaterialTypeRep;
+            _wmsUnitRep = wmsUnitRep;
         }
         /// <summary>
         /// 鍒嗛〉鏌ヨ鐗╂枡淇℃伅
@@ -226,6 +233,12 @@
             //鎺у埗瑙勫垯淇℃伅
             var controlRuleld = input.ControlRuleld;
             wmsMaterial.ControlRuleId = controlRuleld;
+            
+            //鑾峰彇鐗╂枡绫诲瀷
+            var wmsMaterialType = (await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsMaterial.MaterialType)).Adapt<WmsMaterialTypeOutput>();
+            if(wmsMaterialType==null) throw Oops.Oh($"ID{wmsMaterial.MaterialType}鐗╂枡绫诲瀷涓嶅瓨鍦�");
+
+            wmsMaterial.MaterialTypeName = wmsMaterialType.MaterialTypeName;  
 
             //寰�鏉ュ叧绯讳俊鎭�
             var baseCustomerList = input.BaseCustomerList.Adapt<List<BaseCustomer>>();
@@ -233,13 +246,15 @@
             var materialCustomerList=new List<WmsMaterialCustomer>();
             foreach (var baseCustomer in baseCustomerList)
             {
+
+                var _custCode= await SerialUtil.GetSerial(EnumSerialType.瀹㈡埛缂栧彿);
                 materialCustomerList.Add(new WmsMaterialCustomer()
                 {
                     CreatedTime = DateTime.Now,
                     CreatedUserId = CurrentUserInfo.UserId,
                     CreatedUserName = CurrentUserInfo.Name,
                     CustChinaName = baseCustomer.CustChinaName,
-                    CustCode = baseCustomer.CustCode,
+                    CustCode = _custCode,
                     CustEnglishName = baseCustomer.CustEnglishName,
                     CustId = baseCustomer.Id,
                     MaterialCode = wmsMaterial.MaterialCode,
@@ -256,9 +271,13 @@
 
             //鏇夸唬鍝佷俊鎭�
             var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
+            List<string> materialCodes = substituteGoodList.Select(s => s.SubstituteMaterialCode).ToList();
+            var wmsSubstituteMaterialInfoList = await _wmsMaterialRep.DetachedEntities.Where(u => materialCodes.Contains(u.MaterialCode)&&u.IsDeleted==false&&u.IsDisabled==false).ProjectToType<WmsMaterialOutput>().ToListAsync();
             foreach (var item in substituteGoodList)
             {
-                item.SubstituteCode = Yitter.IdGenerator.YitIdHelper.NextId().ToString();//TODO 瑕佽皟鐢ㄧ敓鎴� 缂栧彿鐨勬柟娉� 鍏堢敤闆姳ID
+                var substituteMaterialInfo = wmsSubstituteMaterialInfoList.FirstOrDefault(f=>f.MaterialCode== item.SubstituteMaterialCode);
+                item.SubstituteCode =  await SerialUtil.GetSerial(EnumSerialType.鏇夸唬鍝佺紪鍙�); 
+                item.SubstituteMaterialName = substituteMaterialInfo.MaterialName;//鏇夸唬鍝佺墿鏂欏悕绉�
             }
 
             wmsMaterial.UpdatedUserId = SysHelper.GetUserId();
@@ -309,7 +328,11 @@
             //鎺у埗瑙勫垯淇℃伅
             var controlRuleld = input.ControlRuleld;
             wmsMaterial.ControlRuleId = controlRuleld;
+            //鑾峰彇鐗╂枡绫诲瀷
+            var wmsMaterialType = (await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsMaterial.MaterialType)).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();
@@ -325,13 +348,14 @@
             var materialCustomerList = new List<WmsMaterialCustomer>();
             foreach (var baseCustomer in baseCustomerList)
             {
+                var _custCode = await SerialUtil.GetSerial(EnumSerialType.瀹㈡埛缂栧彿);
                 materialCustomerList.Add(new WmsMaterialCustomer()
                 {
                     CreatedTime = DateTime.Now,
                     CreatedUserId = CurrentUserInfo.UserId,
                     CreatedUserName = CurrentUserInfo.Name,
                     CustChinaName = baseCustomer.CustChinaName,
-                    CustCode = baseCustomer.CustCode,
+                    CustCode = _custCode,
                     CustEnglishName = baseCustomer.CustEnglishName,
                     CustId = baseCustomer.Id,
                     MaterialCode = wmsMaterial.MaterialCode,
@@ -354,10 +378,15 @@
 
             //鏇夸唬鍝佷俊鎭�
             var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
+            List<string> materialCodes = substituteGoodList.Select(s => s.SubstituteMaterialCode).ToList();
+            var wmsSubstituteMaterialInfoList = await _wmsMaterialRep.DetachedEntities.Where(u => materialCodes.Contains(u.MaterialCode) && u.IsDeleted == false && u.IsDisabled == false).ProjectToType<WmsMaterialOutput>().ToListAsync();
             foreach (var item in substituteGoodList)
             {
-                item.SubstituteCode = Yitter.IdGenerator.YitIdHelper.NextId().ToString();//TODO 瑕佽皟鐢ㄧ敓鎴� 缂栧彿鐨勬柟娉� 鍏堢敤闆姳ID
+                var substituteMaterialInfo = wmsSubstituteMaterialInfoList.FirstOrDefault(f => f.MaterialCode == item.SubstituteMaterialCode);
+                item.SubstituteCode = await SerialUtil.GetSerial(EnumSerialType.鏇夸唬鍝佺紪鍙�);
+                item.SubstituteMaterialName = substituteMaterialInfo.MaterialName;//鏇夸唬鍝佺墿鏂欏悕绉�
             }
+
 
             if (materialCustomerList?.Count > 0)
             {
@@ -433,11 +462,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 = "";//榛樿鍏ュ簱搴撲綅
@@ -459,11 +485,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();
@@ -506,14 +529,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))
                 {
@@ -522,26 +538,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);
@@ -611,38 +616,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("鍚�"))
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodInput.cs
index e28c139..2cbd141 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodInput.cs
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodInput.cs
@@ -137,7 +137,6 @@
         /// <summary>
         /// 鏇夸唬缂栧彿
         /// </summary>
-        [Required(ErrorMessage = "鏇夸唬缂栧彿涓嶈兘涓虹┖")]
         public virtual string SubstituteCode { get; set; }
 
         /// <summary>
@@ -161,7 +160,6 @@
         /// <summary>
         /// 鏇夸唬鍝佺墿鏂欏悕绉�
         /// </summary>
-        [Required(ErrorMessage = "鏇夸唬鍝佺墿鏂欏悕绉颁笉鑳戒负绌�")]
         public virtual string SubstituteMaterialName { get; set; }
 
         /// <summary>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs
index 9376174..cc923af 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs
@@ -67,7 +67,7 @@
         [Comment("鐗╂枡绫诲瀷")]
         [Required]
 
-        public int MaterialType { get; set; }
+        public long MaterialType { get; set; }
 
 
         /// <summary>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsMaterialImport.xlsx b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsMaterialImport.xlsx
index 3b153c7..749b35e 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsMaterialImport.xlsx
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/WmsMaterialImport.xlsx
Binary files differ

--
Gitblit v1.9.3