From b331d820b30bdff8eb868ad18837aaffe3d2158b Mon Sep 17 00:00:00 2001
From: payne <bzrlw2012@163.com>
Date: 周五, 26 4月 2024 10:25:55 +0800
Subject: [PATCH] 物料ABC类型 返回枚举值名称

---
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs |  179 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 143 insertions(+), 36 deletions(-)

diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs
index c2759c1..958d0a1 100644
--- a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsContainerPackaging/WmsContainerPackagingService.cs
@@ -13,10 +13,12 @@
 using System.Web;
 using System.ComponentModel;
 using System.Data;
+using NetTopologySuite.Algorithm;
+using Pipelines.Sockets.Unofficial.Arenas;
 namespace Admin.NET.Application
 {
     /// <summary>
-    /// 鍖呰鍏崇郴鍩虹琛ㄦ湇鍔�
+    /// 瀹瑰櫒鍏崇郴鏈嶅姟
     /// </summary>
     [ApiDescriptionSettings("WmsBase", Name = "WmsContainerPackaging", Order = 100)]
     [Route("api")]
@@ -27,22 +29,27 @@
         private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
         private readonly ISysExcelTemplateService _sysExcelTemplateService;
         private readonly static object _lock = new();
-
+        private readonly IRepository<WmsMaterialType, MasterDbContextLocator> _wmsMaterialTypeRep;
+        private readonly IRepository<WmsContainerType, MasterDbContextLocator> _wmsContainerTypeRep;
         public WmsContainerPackagingService(
             IRepository<WmsContainerPackaging,MasterDbContextLocator> wmsContainerPackagingRep
             ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
             ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
             ,ISysExcelTemplateService sysExcelTemplateService
+            , IRepository<WmsMaterialType, MasterDbContextLocator> wmsMaterialTypeRep
+            , IRepository<WmsContainerType, MasterDbContextLocator> wmsContainerTypeRep
         )
         {
             _wmsContainerPackagingRep = wmsContainerPackagingRep;
          _sysDictTypeRep = sysDictTypeRep;
          _sysDictDataRep = sysDictDataRep;
          _sysExcelTemplateService = sysExcelTemplateService;
+            _wmsMaterialTypeRep = wmsMaterialTypeRep;
+            _wmsContainerTypeRep = wmsContainerTypeRep;
         }
 
         /// <summary>
-        /// 鍒嗛〉鏌ヨ鍖呰鍏崇郴鍩虹琛�
+        /// 鍒嗛〉鏌ヨ瀹瑰櫒鍏崇郴
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
@@ -67,10 +74,10 @@
         }
 
         /// <summary>
-        /// 涓嶅垎椤垫煡璇㈠寘瑁呭叧绯诲熀纭�琛ㄥ垪琛�
+        /// 涓嶅垎椤垫煡璇㈠鍣ㄥ叧绯诲垪琛�
         /// </summary>
-        /// <param name="input">鍖呰鍏崇郴鍩虹琛ㄦ煡璇㈠弬鏁�</param>
-        /// <returns>(鍖呰鍏崇郴鍩虹琛�)瀹炰緥鍒楄〃</returns>
+        /// <param name="input">瀹瑰櫒鍏崇郴鏌ヨ鍙傛暟</param>
+        /// <returns>(瀹瑰櫒鍏崇郴)瀹炰緥鍒楄〃</returns>
         [HttpGet("WmsContainerPackaging/listNonPage")]
         public async Task<List<WmsContainerPackagingOutput>> ListNonPageAsync([FromQuery] WmsContainerPackagingSearchNonPage input)
         {
@@ -102,7 +109,7 @@
         }
 
          /// <summary>
-        /// 鑾峰彇鍖呰鍏崇郴鍩虹琛�
+        /// 鑾峰彇瀹瑰櫒鍏崇郴
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
@@ -113,7 +120,7 @@
         }
 
         /// <summary>
-        /// 鑾峰彇鍖呰鍏崇郴鍩虹琛ㄥ垪琛�
+        /// 鑾峰彇瀹瑰櫒鍏崇郴鍒楄〃
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
@@ -126,7 +133,7 @@
         #region 澧炪�佸垹銆佹敼
 
         /// <summary>
-        /// 澧炲姞鍖呰鍏崇郴鍩虹琛�
+        /// 澧炲姞瀹瑰櫒鍏崇郴
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
@@ -134,7 +141,29 @@
         public async Task Add(AddWmsContainerPackagingInput input)
         {
             var wmsContainerPackaging = input.Adapt<WmsContainerPackaging>();
-                        //楠岃瘉
+
+           var wmsMaterialType=(await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.MaterialTypeId&&u.IsDeleted==false)).Adapt<WmsMaterialTypeOutput>();
+            if (wmsMaterialType == null)
+            {
+                throw Oops.Oh($"鐗╂枡绫诲瀷涓嶅瓨鍦�");
+            }
+            if (wmsMaterialType.IsDisabled == true)
+            {
+                throw Oops.Oh($"鐗╂枡绫诲瀷宸茬鐢�");
+            }
+            var wmsContainerType=(await _wmsContainerTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.ContainerTypeId&& u.IsDeleted == false)).Adapt<WmsContainerTypeOutput>();
+            if (wmsContainerType == null)
+            {
+                throw Oops.Oh($"瀹瑰櫒绫诲瀷涓嶅瓨鍦�");
+            }
+            if (wmsContainerType.IsDisabled == true)
+            {
+                throw Oops.Oh($"瀹瑰櫒绫诲瀷宸茬鐢�");
+            }
+            wmsContainerPackaging.ContainerTypeName = wmsContainerType.TypeName;
+            wmsContainerPackaging.MaterialTypeName= wmsMaterialType.MaterialTypeName;
+            wmsContainerPackaging.MaterialTypeCode = wmsMaterialType.MaterialTypeCode;
+            //楠岃瘉
             await CheckExisit(wmsContainerPackaging);
 
             wmsContainerPackaging.CreatedUserId = wmsContainerPackaging.UpdatedUserId = SysHelper.GetUserId();
@@ -144,7 +173,7 @@
         }
 
         /// <summary>
-        /// 鍒犻櫎鍖呰鍏崇郴鍩虹琛�
+        /// 鍒犻櫎瀹瑰櫒鍏崇郴
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
@@ -157,7 +186,7 @@
         }
 
         /// <summary>
-        /// 鏇存柊鍖呰鍏崇郴鍩虹琛�
+        /// 鏇存柊瀹瑰櫒鍏崇郴
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
@@ -182,7 +211,7 @@
         #region 瀵煎叆
 
         /// <summary>
-        /// Excel妯℃澘瀵煎叆鍖呰鍏崇郴鍩虹琛ㄥ姛鑳�
+        /// Excel妯℃澘瀵煎叆瀹瑰櫒鍏崇郴鍔熻兘
         /// </summary>
         /// <param name="file">Excel妯℃澘鏂囦欢</param>
         /// <returns>瀵煎叆鐨勮褰曟暟</returns>
@@ -237,7 +266,6 @@
                            var _MaterialTypeCode = "";//鐗╂枡绫诲瀷缂栧彿
                            var _MaterialTypeName = "";//鐗╂枡绫诲瀷鍚嶇О
                            var _BoxQty = "";//鐗╂枡瀹瑰櫒瀹归噺
-                           var _Id = "";//Id涓婚敭
                           #endregion
                           
                           
@@ -248,11 +276,16 @@
                            _MaterialTypeCode = row["鐗╂枡绫诲瀷缂栧彿"]?.ToString() ;
                            _MaterialTypeName = row["鐗╂枡绫诲瀷鍚嶇О"]?.ToString() ;
                            _BoxQty = row["鐗╂枡瀹瑰櫒瀹归噺"]?.ToString() ;
-                           _Id = row["Id涓婚敭"]?.ToString() ;
                           #endregion
                           
                           
                           #region 楠岃瘉
+                          
+                          if (string.IsNullOrEmpty(_ContainerTypeId))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾瀹瑰櫒绫诲瀷ID]{_ContainerTypeId}涓嶈兘涓虹┖锛�");
+                          }
+                          
                           if(!string.IsNullOrEmpty(_ContainerTypeId))
                           {
                               if (!long.TryParse(_ContainerTypeId, out long outContainerTypeId)&&!string.IsNullOrEmpty(_ContainerTypeId))
@@ -269,10 +302,22 @@
                               }
                           
                           }
+                          
+                          if (string.IsNullOrEmpty(_ContainerTypeName))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾瀹瑰櫒绫诲瀷鍚嶇О]{_ContainerTypeName}涓嶈兘涓虹┖锛�");
+                          }
+                          
                           if(!string.IsNullOrEmpty(_ContainerTypeName))
                           {
                                 addItem.ContainerTypeName = (string)_ContainerTypeName;
                            }
+                          
+                          if (string.IsNullOrEmpty(_MaterialTypeId))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷ID]{_MaterialTypeId}涓嶈兘涓虹┖锛�");
+                          }
+                          
                           if(!string.IsNullOrEmpty(_MaterialTypeId))
                           {
                               if (!long.TryParse(_MaterialTypeId, out long outMaterialTypeId)&&!string.IsNullOrEmpty(_MaterialTypeId))
@@ -289,14 +334,32 @@
                               }
                           
                           }
+                          
+                          if (string.IsNullOrEmpty(_MaterialTypeCode))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷缂栧彿]{_MaterialTypeCode}涓嶈兘涓虹┖锛�");
+                          }
+                          
                           if(!string.IsNullOrEmpty(_MaterialTypeCode))
                           {
                                 addItem.MaterialTypeCode = (string)_MaterialTypeCode;
                            }
+                          
+                          if (string.IsNullOrEmpty(_MaterialTypeName))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾鐗╂枡绫诲瀷鍚嶇О]{_MaterialTypeName}涓嶈兘涓虹┖锛�");
+                          }
+                          
                           if(!string.IsNullOrEmpty(_MaterialTypeName))
                           {
                                 addItem.MaterialTypeName = (string)_MaterialTypeName;
                            }
+                          
+                          if (string.IsNullOrEmpty(_BoxQty))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾鐗╂枡瀹瑰櫒瀹归噺]{_BoxQty}涓嶈兘涓虹┖锛�");
+                          }
+                          
                           if(!string.IsNullOrEmpty(_BoxQty))
                           {
                               if (!decimal.TryParse(_BoxQty, out decimal outBoxQty)&&!string.IsNullOrEmpty(_BoxQty))
@@ -313,22 +376,7 @@
                               }
                           
                           }
-                          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
                           
 
@@ -342,7 +390,7 @@
         }
 
         /// <summary>
-        /// 鏍规嵁鐗堟湰涓嬭浇鍖呰鍏崇郴鍩虹琛ㄧ殑Excel瀵煎叆妯℃澘
+        /// 鏍规嵁鐗堟湰涓嬭浇瀹瑰櫒鍏崇郴鐨凟xcel瀵煎叆妯℃澘
         /// </summary>
         /// <param name="version">妯℃澘鐗堟湰</param>
         /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
@@ -350,7 +398,7 @@
         public IActionResult DownloadExcelTemplate([FromQuery] string version)
         {
             string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\WmsContainerPackaging{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 };
         }
 
@@ -366,16 +414,43 @@
         /// <returns></returns>
         private async Task CheckExisit( WmsContainerPackaging input,bool isEdit=false)
         {
-           
 
-           
+
+            string erorMsg = string.Empty;
+            bool isExist = false;
+           if (!isEdit)//鏂板
+           {
+                   //鏁版嵁鏄惁瀛樺湪閲嶅
+                   isExist = await _wmsContainerPackagingRep.AnyAsync(u =>
+                                   u.ContainerTypeId.Equals(input.ContainerTypeId)
+                                   &&u.MaterialTypeId.Equals(input.MaterialTypeId)
+                   ,false);
+                if (isExist)
+                {
+                    erorMsg = $"绯荤粺涓�,瀹瑰櫒绫诲瀷[{input.ContainerTypeName}]-鐗╂枡绫诲瀷[{input.MaterialTypeName}]鍏崇郴宸插瓨鍦�";
+                    throw Oops.Oh(erorMsg);
+                }
+            }
+           else//缂栬緫 
+          {
 
           
                 
+                 //褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅
+                  isExist = await _wmsContainerPackagingRep.AnyAsync(u => 
+                                    u.Id != input.Id
+                                   &&u.ContainerTypeId.Equals(input.ContainerTypeId)
+                                   && u.MaterialTypeId.Equals(input.MaterialTypeId)
+                    , false);
+                if (isExist)
+                {
+                    erorMsg = $"绯荤粺涓�,瀹瑰櫒绫诲瀷[{input.ContainerTypeName}]-鐗╂枡绫诲瀷[{input.MaterialTypeName}]鍏崇郴宸插瓨鍦�";
+                    throw Oops.Oh(erorMsg);
+                }
+            }
                
         
 
-            //娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
        }
         
         /// <summary>
@@ -386,10 +461,42 @@
         private async Task CheckExisitForImport(List<WmsContainerPackaging> inputs)
         { 
             //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�  
+                 if (inputs?.Count <= 0)
+                 {
+                     throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+                 }
+                 //鏁版嵁鏄惁閲嶅
+                 var existExcelItem = inputs.GroupBy(g => new {
+                                               g.ContainerTypeId
+                                               })
+                                               .Where(g => g.Count() > 1)
+                                               .Select(s => new {
+                                               s.Key.ContainerTypeId
+                                               }).FirstOrDefault();
+                 if (existExcelItem != null)
+                 {
+                   var wmsContainerPackaging = existExcelItem.Adapt<WmsContainerPackaging>();
+                   var item= existExcelItem.Adapt<WmsContainerPackaging>();
+                   throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,瀹瑰櫒绫诲瀷ID[{item.ContainerTypeId}]宸插瓨鍦�");
+                 }
                       
 
 
 
+    //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+                 var existDBItem = await _wmsContainerPackagingRep.DetachedEntities.FirstOrDefaultAsync(w=> 
+                                                                         inputs.Select(s=>""
+                                                                           +s.ContainerTypeId
+                                                                        )
+                                                                        .Contains(""
+                                                                         +w.ContainerTypeId
+                  ));
+                  if (existDBItem != null)
+                 {
+                   var wmsContainerPackaging = existExcelItem.Adapt<WmsContainerPackaging>();
+                   var item= existExcelItem.Adapt<WmsContainerPackaging>();
+                   throw Oops.Oh($"绯荤粺涓�,瀹瑰櫒绫诲瀷ID[{item.ContainerTypeId}]宸插瓨鍦�");
+                 }
         }
 
         #endregion

--
Gitblit v1.9.3