Forráskód Böngészése

查询条件去重减少数据量传输

Murphy 2 éve
szülő
commit
7b92a27a19

+ 7 - 7
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -4747,7 +4747,7 @@ namespace Business.Replenishment
             //删除同步Mysql后旧数据
             await DeleteMySqlOldData(sentrys);
 
-            List<mo_ic_bom> boms = _ic_bom.GetListAsync(p => mo_Mes_Morders.Select(m => m.bom_number).Contains(p.bom_number) && p.factory_id == input.factoryId && !p.IsDeleted).Result.ToList();
+            List<mo_ic_bom> boms = _ic_bom.GetListAsync(p => mo_Mes_Morders.Select(m => m.bom_number).Distinct().ToList().Contains(p.bom_number) && p.factory_id == input.factoryId && !p.IsDeleted).Result.ToList();
 
             //物料bom
             List<mo_ic_bom> bomlist = new List<mo_ic_bom>();
@@ -4765,7 +4765,7 @@ namespace Business.Replenishment
             List<mo_ic_item_stockoccupy> sklist = new List<mo_ic_item_stockoccupy>();
 
             //sorder=null  是因为齐套检查不需要生成工单、采购、委外等信息,所以不需要关联的工单信息传递进去。
-            var pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
+            var pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => boms.Select(c => c.mysql_id).Distinct().ToList().Contains(s.sourceid)).Result;
             List<mo_ic_bom> autoCreates = new List<mo_ic_bom>();
             boms.ForEach(p =>
             {
@@ -5565,12 +5565,12 @@ namespace Business.Replenishment
             //TODO:申老师明确后续需要调整 根据需要使用的字段,来同步表数据。
 
             //同步物料库存数据  根据预处理,来只找出部分数据同步。
-            List<long> itemIds = pretreatments.Select(s => s.item_id.GetValueOrDefault()).ToList();
+            List<long> itemIds = pretreatments.Select(s => s.item_id.GetValueOrDefault()).Distinct().ToList();
             //var icitemStokc = _mysql_ic_item_stock.GetListAsync(p => p.tenant_id == tenantId && p.factory_id == factoryId).Result;
-            var icitemStokc = _mysql_ic_item_stock.GetListAsync(p => p.company_id == companyId && itemIds.Contains(p.icitem_id)).Result;
+            var icitemStokc = _mysql_ic_item_stock.GetListAsync(p => itemIds.Contains(p.icitem_id) && p.company_id == companyId).Result;
             if (icitemStokc.Count > 0)
             {
-                List<string> numbers = pretreatments.Select(s => s.item_number).ToList();
+                List<string> numbers = pretreatments.Select(s => s.item_number).Distinct().ToList();
                 var locationRange = _configurationItem.Select(x => x.FldName == "MRPLocationRange" && x.Domain == factoryId.ToString()).FirstOrDefault();
 
                 List<string> locationList = new List<string> { "1000", "1001", "5008", "8000", "8001" };
@@ -5579,7 +5579,7 @@ namespace Business.Replenishment
                     locationList = locationRange.Val.SplitToArray(",").ToList();
                 }
                 var locStock = _invMaster.Select(a => numbers.Contains(a.ItemNum) && a.IsActive && a.Domain == factoryId.ToString() && locationList.Contains(a.Location));
-                var sapInvList = _SAPInv.Select(a => a.WERKS == factoryId.ToString() && numbers.Contains(a.MATNR) && (a.SOBKZ.ToUpper() == "O" || locationList.Contains(a.LGORT)));
+                var sapInvList = _SAPInv.Select(a => numbers.Contains(a.MATNR) && a.WERKS == factoryId.ToString() && (a.SOBKZ.ToUpper() == "O" || locationList.Contains(a.LGORT)));
 
                 //设置当前计算bangid
                 icitemStokc.ForEach(item => {
@@ -5664,7 +5664,7 @@ namespace Business.Replenishment
                 }
 
                 //工单主表
-                var mes_morder = _mysql_mes_morder.GetListAsync(x => string.IsNullOrEmpty(x.morder_state) == false && x.morder_state != "完成" && x.company_id == companyId && string.IsNullOrEmpty(x.analogcalcversion) == true && x.factory_id == factoryId && workordmsters.Select(c => c.WorkOrd).Contains(x.morder_no)).Result;
+                var mes_morder = _mysql_mes_morder.GetListAsync(x => string.IsNullOrEmpty(x.morder_state) == false && x.morder_state != "完成" && x.company_id == companyId && string.IsNullOrEmpty(x.analogcalcversion) && x.factory_id == factoryId && workordmsters.Select(c => c.WorkOrd).Contains(x.morder_no)).Result;
                 if (mes_morder.Count > 0)
                 {
                     mes_morder.ForEach(item => { item.bang_id = bangid; });

+ 1 - 1
MicroServices/Business/Business.Core/Utilities/MongoHelper.cs

@@ -20,7 +20,7 @@ namespace Business.Core.Utilities
         }
         public static async Task InsertManyAsync(IEnumerable<T> documents, CancellationToken cancellationToken = default(CancellationToken))
         {
-            await GetMongoCollection().InsertManyAsync(documents, new InsertManyOptions() { IsOrdered = false });
+            await GetMongoCollection().InsertManyAsync(documents, new InsertManyOptions() { IsOrdered = true });
         }
         public static async Task DeleteManyAsync(Expression<Func<T, bool>> expression)
         {