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 |  183 ++++++++++++++++++++++++++++++---------------
 1 files changed, 123 insertions(+), 60 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 2f34e10..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
@@ -191,16 +191,26 @@
                                               .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.Join(_wmsMaterialCustomerRep.DetachedEntities, bc => bc.Id, mc => mc.CustId, (bc, mc) => new { bc, mc })
-                                      .Where(p =>p.mc.MaterialId== wmsMaterialInfo.Id)
-                                      .OrderBy(o => o.mc.CreatedTime)
+            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;
         }
 
@@ -235,48 +245,76 @@
             wmsMaterial.ControlRuleId = controlRuleld;
             
             //鑾峰彇鐗╂枡绫诲瀷
-            var wmsMaterialType = (await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsMaterial.MaterialType)).Adapt<WmsMaterialTypeOutput>();
+            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 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();
-            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)
+
+            if (materialCodes?.Count > 0)
             {
-                var substituteMaterialInfo = wmsSubstituteMaterialInfoList.FirstOrDefault(f=>f.MaterialCode== item.SubstituteMaterialCode);
-                item.SubstituteCode =  await SerialUtil.GetSerial(EnumSerialType.鏇夸唬鍝佺紪鍙�); 
-                item.SubstituteMaterialName = substituteMaterialInfo.MaterialName;//鏇夸唬鍝佺墿鏂欏悕绉�
+                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();
@@ -327,7 +365,7 @@
             var controlRuleld = input.ControlRuleld;
             wmsMaterial.ControlRuleId = controlRuleld;
             //鑾峰彇鐗╂枡绫诲瀷
-            var wmsMaterialType = (await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsMaterial.MaterialType)).Adapt<WmsMaterialTypeOutput>();
+            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;
@@ -339,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();
@@ -376,15 +427,27 @@
             //鏇夸唬鍝佷俊鎭�
             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)
+
+            if(materialCodes?.Count > 0)
             {
-                var substituteMaterialInfo = wmsSubstituteMaterialInfoList.FirstOrDefault(f => f.MaterialCode == item.SubstituteMaterialCode);
-                item.SubstituteCode = await SerialUtil.GetSerial(EnumSerialType.鏇夸唬鍝佺紪鍙�);
-                item.SubstituteMaterialName = substituteMaterialInfo.MaterialName;//鏇夸唬鍝佺墿鏂欏悕绉�
+                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);

--
Gitblit v1.9.3