From 81ec65b31b86ca9d5590573485f3617b5d069c0a Mon Sep 17 00:00:00 2001
From: payne <bzrlw2012@163.com>
Date: 周三, 24 4月 2024 23:02:42 +0800
Subject: [PATCH] 物料编辑 新增 接口物料客户关系、控制属性、替代品 可为空

---
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialInput.cs             |   18 +++++-
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/IWmsMaterialService.cs              |    2 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/BaseCustomer/Dto/BaseCustomerInput.cs           |    3 -
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsSubstituteGood/Dto/WmsSubstituteGoodInput.cs |    7 --
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs               |  118 ++++++++++++++++++++++++++++++++++++---
 5 files changed, 124 insertions(+), 24 deletions(-)

diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/BaseCustomer/Dto/BaseCustomerInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/BaseCustomer/Dto/BaseCustomerInput.cs
index 0ff0c25..d179e9d 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/BaseCustomer/Dto/BaseCustomerInput.cs
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/BaseCustomer/Dto/BaseCustomerInput.cs
@@ -207,13 +207,11 @@
         /// <summary>
         /// 瀹㈡埛缂栧彿
         /// </summary>
-        [Required(ErrorMessage = "瀹㈡埛缂栧彿涓嶈兘涓虹┖")]
         public virtual string CustCode { get; set; }
         
         /// <summary>
         /// 瀹㈡埛涓枃鍚嶇О
         /// </summary>
-        [Required(ErrorMessage = "瀹㈡埛涓枃鍚嶇О涓嶈兘涓虹┖")]
         public virtual string CustChinaName { get; set; }
         
         /// <summary>
@@ -229,7 +227,6 @@
         /// <summary>
         /// 绫诲瀷
         /// </summary>
-        [Required(ErrorMessage = "绫诲瀷涓嶈兘涓虹┖")]
         public virtual int CustType { get; set; }
         
         /// <summary>
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 7245cc1..3ef7770 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
@@ -413,6 +413,18 @@
     }
 
     /// <summary>
+    /// 缂栬緫鐗╂枡涓氬姟淇℃伅瀹炰綋鍏ュ弬--鍖呭惈鐗╂枡銆佺墿鏂欏鎴峰叧绯汇�佹帶鍒跺睘鎬с�佹浛浠e搧
+    /// </summary>
+    public class UpdateWmsMaterialInfoInput : AddWmsMaterialInfoInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long? Id { get; set; }
+    }
+
+    /// <summary>
     /// 鐗╂枡淇℃伅琛ㄨ幏鍙栧崟涓弬鏁�
     /// </summary>
     public class QueryeWmsMaterialInput : BaseId
@@ -433,17 +445,17 @@
         /// <summary>
         /// 鎺у埗灞炴�ц鍒橧D
         /// </summary>
-        public long ControlRuleld { get; set; }
+        public long? ControlRuleld { get; set; }
 
         /// <summary>
         /// 鏇夸唬鍝�
         /// </summary>
-        public List<WmsSubstituteGood> SubstituteGoodList { get; set; }
+        public List<AddWmsSubstituteGoodInput> SubstituteGoodList { get; set; }
 
         /// <summary>
         /// 瀹㈡埛妗f
         /// </summary>
-        public List<BaseCustomer> BaseCustomerList   { get; set; }
+        public List<BaseCustomerInput> BaseCustomerList   { get; set; }
     }
 
 }
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/IWmsMaterialService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/IWmsMaterialService.cs
index 7b873a7..2b885b8 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/IWmsMaterialService.cs
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/IWmsMaterialService.cs
@@ -14,7 +14,7 @@
         Task<List<WmsMaterialOutput>> ListNonPageAsync([FromQuery] WmsMaterialSearchNonPage input);
         
         Task Add(AddWmsMaterialInfoInput input);
-        Task Update(UpdateWmsMaterialInput input);
+        Task Update(UpdateWmsMaterialInfoInput input);
         Task Delete(DeleteWmsMaterialInput input);
         Task<int> ImportExcelAsync(IFormFile file);
         IActionResult DownloadExcelTemplate(string version);
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..83c63b7 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
@@ -221,9 +221,9 @@
             //鏇夸唬鍝佷俊鎭�
             var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
 
-            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 +256,80 @@
         /// <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);
+            }
+
+
+            //瀹㈡埛妗f淇℃伅
+            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);
+
+
         }
 
         #endregion
@@ -614,9 +675,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 +690,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 +734,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 +763,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
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 32c1005..7cd66bd 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,43 +137,36 @@
         /// <summary>
         /// 鏇夸唬缂栧彿
         /// </summary>
-        [Required(ErrorMessage = "鏇夸唬缂栧彿涓嶈兘涓虹┖")]
         public virtual string SubstituteCode { get; set; }
         
         /// <summary>
         /// 鐗╂枡缂栧彿
         /// </summary>
-        [Required(ErrorMessage = "鐗╂枡缂栧彿涓嶈兘涓虹┖")]
         public virtual string MaterialCode { get; set; }
         
         /// <summary>
         /// 鐗╂枡鍚嶇О
         /// </summary>
-        [Required(ErrorMessage = "鐗╂枡鍚嶇О涓嶈兘涓虹┖")]
         public virtual string MaterialName { get; set; }
         
         /// <summary>
         /// 鏇夸唬鍝佺墿鏂欑紪鍙�
         /// </summary>
-        [Required(ErrorMessage = "鏇夸唬鍝佺墿鏂欑紪鍙蜂笉鑳戒负绌�")]
         public virtual string SubstituteMaterialCode { get; set; }
         
         /// <summary>
         /// 鏇夸唬鍝佺墿鏂欏悕绉�
         /// </summary>
-        [Required(ErrorMessage = "鏇夸唬鍝佺墿鏂欏悕绉颁笉鑳戒负绌�")]
         public virtual string SubstituteMaterialName { get; set; }
         
         /// <summary>
         /// 鏇夸唬娆″簭
         /// </summary>
-        [Required(ErrorMessage = "鏇夸唬娆″簭涓嶈兘涓虹┖")]
         public virtual int SubstituteIndex { get; set; }
         
         /// <summary>
         /// 鏄惁绂佺敤
         /// </summary>
-        [Required(ErrorMessage = "鏄惁绂佺敤涓嶈兘涓虹┖")]
         public virtual bool IsDisabled { get; set; }
         
     }

--
Gitblit v1.9.3