Sfoglia il codice sorgente

Merge branch 'dev' of http://123.60.180.165:4647/ZZYDOP/DOPCore into dev

heteng 2 anni fa
parent
commit
8bb59c0450

+ 33 - 23
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 =>
             {
@@ -5506,7 +5506,6 @@ namespace Business.Replenishment
                     {
                         _businessBangDbContext.BulkInsert(purchaseoccupyList);
                     }
-                    _businessBangDbContext.SaveChanges();
                     await unitOfWork.CompleteAsync();
                 }
                 catch (Exception e)
@@ -5565,12 +5564,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 +5578,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 => {
@@ -5601,7 +5600,7 @@ namespace Business.Replenishment
                     }
                 });
                 var moIcitemStokc = ObjectMapper.Map<List<ic_item_stock>, List<mo_ic_item_stock>>(icitemStokc);
-                moIcitemStokc.ForEach(item => { item.GenerateNewId(help.NextId()); });
+                moIcitemStokc.ForEach(item => { item.GenerateNewId(help.NextId());item.create_time = DateTime.Now;});
                 //插入数据
                 await MongoHelper<mo_ic_item_stock>.InsertManyAsync(moIcitemStokc);
             }
@@ -5664,7 +5663,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; });
@@ -5707,7 +5706,7 @@ namespace Business.Replenishment
                     //订单明细--根据在途PO过滤出有效的Po_list
                     srm_po_list = srm_po_list.Where(s => srm_po_main.Select(x => x.Id).Contains(s.po_id.GetValueOrDefault())).ToList();
                     var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list);
-                    moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                    moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid;item.create_time = DateTime.Now; });
                     await MongoHelper<mo_srm_po_list>.InsertManyAsync(moSrm_po_list);
                 }
                 //采购订单明细占用详情
@@ -5715,7 +5714,7 @@ namespace Business.Replenishment
                 if (srm_po_occupy.Count > 0)
                 {
                     var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);
-                    moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                    moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                     await MongoHelper<mo_srm_po_occupy>.InsertManyAsync(moSrm_po_occupy);
                 }
             }
@@ -5735,22 +5734,33 @@ namespace Business.Replenishment
             if (srm_pr_main.Count > 0)
             {
                 var moSrm_pr_main = ObjectMapper.Map<List<srm_pr_main>, List<mo_srm_pr_main>>(srm_pr_main);
-                moSrm_pr_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                moSrm_pr_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                 await MongoHelper<mo_srm_pr_main>.InsertManyAsync(moSrm_pr_main);
 
-                //采购申请占用详情
-                var occupyList = _businessDbContext.srm_po_occupy.Join(_businessDbContext.srm_pr_main.Where(x => x.company_id == companyId && x.factory_id == factoryId && x.state != 0 && itemIds.ToArray().Any(a => a == x.icitem_id.GetValueOrDefault())), p => p.polist_id, pr => pr.Id, (p, pr) => new { p, pr }).ToList();
-                List<srm_po_occupy> srm_pr_occupy = new List<srm_po_occupy>();
-                for (int i = 0; i < occupyList.Count; i++)
+                List<srm_po_occupy> occupylist = new List<srm_po_occupy>();
+                if (string.IsNullOrEmpty(analogCalcVersion))
+                {
+                    var occupyListLINQ = _businessDbContext.srm_po_occupy.Where(x => x.company_id == companyId && x.factory_id == factoryId && !x.IsDeleted).Join(_businessDbContext.srm_pr_main.Where(x => x.company_id == companyId && x.factory_id == factoryId && x.state != 0 && string.IsNullOrEmpty(x.analogcalcversion) && itemIds.Contains(x.icitem_id.GetValueOrDefault())), p => p.polist_id, pr => pr.Id, (p, pr) => new { p, pr }).ToList();
+
+                    for (int i = 0; i < occupyListLINQ.Count; i++)
+                    {
+                        occupylist.Add(occupyListLINQ[i].p);
+                    }
+                }else
                 {
-                    srm_pr_occupy.Add(occupyList[i].p);
+                    var occupyListLINQ = _businessDbContext.srm_po_occupy.Where(x => x.company_id == companyId && x.factory_id == factoryId && !x.IsDeleted).Join(_businessDbContext.srm_pr_main.Where(x => x.company_id == companyId && x.factory_id == factoryId && x.state != 0 && itemIds.Contains(x.icitem_id.GetValueOrDefault())), p => p.polist_id, pr => pr.Id, (p, pr) => new { p, pr }).ToList();
+
+                    for (int i = 0; i < occupyListLINQ.Count; i++)
+                    {
+                        occupylist.Add(occupyListLINQ[i].p);
+                    }
                 }
-                //var srm_pr_occupy=_businessDbContext.srm_po_occupy.Where(x => x.company_id == companyId && x.factory_id == factoryId && srm_pr_main.Select(c => c.Id).Contains(x.polist_id.Value)).ToList();
-                //var srm_pr_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_pr_main.Select(c => c.Id).Any(a=>a==x.polist_id.GetValueOrDefault())).Result;
-                if (srm_pr_occupy.Count > 0)
+                //采购申请占用详情
+                //var srm_pr_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_pr_main.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
+                if (occupylist.Count > 0)
                 {
-                    var moSrm_pr_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_pr_occupy);
-                    moSrm_pr_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                    var moSrm_pr_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(occupylist);
+                    moSrm_pr_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                     await MongoHelper<mo_srm_po_occupy>.InsertManyAsync(moSrm_pr_occupy);
                 }
             }
@@ -5816,7 +5826,7 @@ namespace Business.Replenishment
         /// <exception cref="NotImplementedException"></exception>
         public void DataInitialization(List<mo_ic_bom> boms, long bangid, List<mo_ic_item> icitemlist, List<mo_ic_item_stock> stocklist, List<b_bom_pretreatment> pretreatments, List<mo_ic_item_stockoccupy> sklist)
         {
-            List<long> itemIds = pretreatments.Select(p => p.item_id.GetValueOrDefault()).ToList();
+            List<long> itemIds = pretreatments.Select(p => p.item_id.GetValueOrDefault()).Distinct().ToList();
             icitemlist.AddRange(_ic_item.GetListAsync(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result);
             #region 1、数据准备
             //1.1、获取产能检查相关数据

+ 18 - 16
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -1345,7 +1345,7 @@ namespace Business.ResourceExamineManagement
                         {
                             _businessDbContext.BulkUpdate(occupylist);
                         }
-                        unitOfWork.CompleteAsync();
+                       await unitOfWork.CompleteAsync();
                     }
                     catch (Exception e)
                     {
@@ -1568,6 +1568,7 @@ namespace Business.ResourceExamineManagement
                                     switch (master.USAGE)
                                     {
                                         case "标准":
+                                            break;
                                         case "VMI":
                                             location = "VMI01";
                                             break;
@@ -2083,12 +2084,12 @@ namespace Business.ResourceExamineManagement
             //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;
             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" };
@@ -2126,7 +2127,7 @@ namespace Business.ResourceExamineManagement
                     }*/
                 });
                 var moIcitemStokc = ObjectMapper.Map<List<ic_item_stock>, List<mo_ic_item_stock>>(icitemStokc);
-                moIcitemStokc.ForEach(item => { item.GenerateNewId(help.NextId()); });
+                moIcitemStokc.ForEach(item => { item.GenerateNewId(help.NextId()); item.create_time = DateTime.Now; });
                 //插入数据
                 await MongoHelper<mo_ic_item_stock>.InsertManyAsync(moIcitemStokc);
             }
@@ -2173,7 +2174,7 @@ namespace Business.ResourceExamineManagement
                             {
 
                                 var mo_item_occupy = ObjectMapper.Map<List<ic_item_stockoccupy>, List<mo_ic_item_stockoccupy>>(item_occupy);
-                                mo_item_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                                mo_item_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                                 await MongoHelper<mo_ic_item_stockoccupy>.InsertManyAsync(mo_item_occupy);
                             }
                         }
@@ -2195,7 +2196,7 @@ namespace Business.ResourceExamineManagement
                 {
                     mes_moentry.ForEach(item => { item.bang_id = bangid; });
                     var moMes_moentry = ObjectMapper.Map<List<mes_moentry>, List<mo_mes_moentry>>(mes_moentry);
-                    moMes_moentry.ForEach(item => { item.GenerateNewId(help.NextId()); });
+                    moMes_moentry.ForEach(item => { item.GenerateNewId(help.NextId()); item.create_time = DateTime.Now; });
                     await MongoHelper<mo_mes_moentry>.InsertManyAsync(moMes_moentry);
                 }
 
@@ -2204,7 +2205,7 @@ namespace Business.ResourceExamineManagement
                 if (mes_mooccupy.Count > 0)
                 {
                     var moMes_mooccupy = ObjectMapper.Map<List<mes_mooccupy>, List<mo_mes_mooccupy>>(mes_mooccupy);
-                    moMes_mooccupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                    moMes_mooccupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                     await MongoHelper<mo_mes_mooccupy>.InsertManyAsync(moMes_mooccupy);
                 }
             }
@@ -2219,13 +2220,13 @@ namespace Business.ResourceExamineManagement
                 if (srm_po_main.Count > 0)
                 {
                     var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main);
-                    moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                    moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                     await MongoHelper<mo_srm_po_main>.InsertManyAsync(moSrm_po_main);
 
                     //订单明细--根据在途PO过滤出有效的Po_list
                     srm_po_list = srm_po_list.Where(s => srm_po_main.Select(x => x.Id).Contains(s.po_id.GetValueOrDefault())).ToList();
                     var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list);
-                    moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                    moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                     await MongoHelper<mo_srm_po_list>.InsertManyAsync(moSrm_po_list);
                 }
                 //采购订单明细占用详情
@@ -2233,7 +2234,7 @@ namespace Business.ResourceExamineManagement
                 if (srm_po_occupy.Count > 0)
                 {
                     var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);
-                    moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                    moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                     await MongoHelper<mo_srm_po_occupy>.InsertManyAsync(moSrm_po_occupy);
                 }
             }
@@ -2243,7 +2244,7 @@ namespace Business.ResourceExamineManagement
             if (srm_pr_main.Count > 0)
             {
                 var moSrm_pr_main = ObjectMapper.Map<List<srm_pr_main>, List<mo_srm_pr_main>>(srm_pr_main);
-                moSrm_pr_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                moSrm_pr_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                 await MongoHelper<mo_srm_pr_main>.InsertManyAsync(moSrm_pr_main);
 
 
@@ -2259,7 +2260,7 @@ namespace Business.ResourceExamineManagement
                 if (occupylist.Count > 0)
                 {
                     var moSrm_pr_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(occupylist);
-                    moSrm_pr_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                    moSrm_pr_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
                     await MongoHelper<mo_srm_po_occupy>.InsertManyAsync(moSrm_pr_occupy);
                 }
             }
@@ -3907,7 +3908,7 @@ namespace Business.ResourceExamineManagement
         /// <exception cref="NotImplementedException"></exception>
         public void DataInitialization(List<mo_ic_bom> boms, long bangid, List<mo_ic_item> icitemlist, List<mo_ic_item_stock> stocklist, List<b_bom_pretreatment> pretreatments, List<mo_ic_item_stockoccupy> sklist)
         {
-            List<long> itemIds = pretreatments.Select(p => p.item_id.GetValueOrDefault()).ToList();
+            List<long> itemIds = pretreatments.Select(p => p.item_id.GetValueOrDefault()).Distinct().ToList();
             icitemlist.AddRange(_ic_item.GetListAsync(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result);
             #region 1、数据准备
             //产线明细
@@ -5023,7 +5024,6 @@ namespace Business.ResourceExamineManagement
                             _businessDbContext.BulkInsert(dlist);
                         }
                         await unitOfWork.CompleteAsync();
-                        return "ok";
                     }
                     catch (Exception e)
                     {
@@ -5032,6 +5032,7 @@ namespace Business.ResourceExamineManagement
                         return "保存失败,请联系管理员。";
                     }
                 }
+                return "ok";
             }
             else
             {
@@ -5086,7 +5087,7 @@ namespace Business.ResourceExamineManagement
                             {
                                 _businessDbContext.BulkInsert(dlist);
                             }
-                            return "ok";
+                            await unitOfWork.CompleteAsync();
                         }
                         catch (Exception e)
                         {
@@ -5095,6 +5096,7 @@ namespace Business.ResourceExamineManagement
                             return "保存失败,请联系管理员。";
                         }
                     }
+                    return "ok";
                 }
                 else
                 {
@@ -6481,7 +6483,7 @@ namespace Business.ResourceExamineManagement
                         {
                             _businessDbContext.BulkUpdate(occupylist);
                         }
-                        unitOfWork.CompleteAsync();
+                       await unitOfWork.CompleteAsync();
                     }
                     catch (Exception e)
                     {

+ 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)
         {