소스 검색

扣减库存提交

Murphy 2 년 전
부모
커밋
5c210fb67b

+ 21 - 1
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -2171,7 +2171,8 @@ namespace Business.ResourceExamineManagement
             List<LineMaster> lineMasters = new List<LineMaster>();
             List<string> lines = new List<string>();//产线列表,
             List<NbrMaster> nbrMasterList = new List<NbrMaster>();//需要生成领料单列表
-            List<NbrDetail> nbrDetailList = new List<NbrDetail>();//需要生成领料单列表
+            List<NbrDetail> nbrDetailList = new List<NbrDetail>();//需要生成领料单明细列表
+            Dictionary<string, decimal> dictItemQty = new Dictionary<string, decimal>();
             if (dbPeriodSequences.Any())
             {
                 lines = dbPeriodSequences.Select(a => a.Line).Distinct().ToList();
@@ -2219,6 +2220,13 @@ namespace Business.ResourceExamineManagement
                             Line = i,
                             IsActive = true,
                         });
+                        if(dictItemQty.ContainsKey(a.ComponentItem))
+                        {
+                            dictItemQty[a.ComponentItem] = dictItemQty[a.ComponentItem] + item.OrdQty.Value * a.Qty;
+                        }else
+                        {
+                            dictItemQty.Add(a.ComponentItem, item.OrdQty.Value * a.Qty);
+                        }
                         i++;
                     });
                 }
@@ -2231,6 +2239,18 @@ namespace Business.ResourceExamineManagement
                     c.NbrRecID= nbrList.Where(a=>a.Nbr==c.Nbr).First().RecID;
                 });
                 _nbrDetail.Insert(nbrDetailList);
+                //TODO:
+                //因为我们并没有模拟发料的过程,在自动生成领料单的时候就要扣减库存,实际业务不能这么做。
+                //在有上料和追溯的系统,可以在扫码上料或报工时(从线边仓)扣减。或者在实际发料出库时扣减。
+                List<string> itemKeys= dictItemQty.Keys.ToList();
+                var items=_mysql_ic_item.GetListAsync(a => itemKeys.Contains(a.number) && a.factory_id == 1001 && a.tenant_id == 1000).Result;
+                var itemIds=items.Select(b => b.Id).ToList();
+                var stockList=_mysql_ic_item_stock.GetListAsync(a => itemIds.Contains(a.Id) && a.factory_id == 1001 && a.tenant_id == 1000).Result;
+                stockList?.ForEach(a =>
+                {
+                    a.sqty = a.sqty - dictItemQty[items.First(b => b.Id == a.Id).number];
+                });
+                //_mysql_ic_item_stock.UpdateManyAsync(stockList);
             }
         }
 

+ 31 - 31
MicroServices/Business/Business.Application/SyncDataManagement/SyncMySQLDataAppService.cs

@@ -173,39 +173,39 @@ namespace Business.SyncDataManagement
         public async void SyncBaseDataToMongoDB()
         {
             //同步物料Bom数据
-            var icBoms = _mysql_ic_bom.GetListAsync().Result;
-            if (icBoms.Count > 0)
-            {
-                //先清空表数据
-                await _ic_bom.Delete(p => p.mysql_id != -1);
-                var moIcBoms = ObjectMapper.Map<List<ic_bom>, List<mo_ic_bom>>(icBoms);
-                moIcBoms.ForEach(s => s.id = help.NextId());
-                //插入数据
-                await _ic_bom.InsertMany(moIcBoms);
-            }
+            //var icBoms = _mysql_ic_bom.GetListAsync().Result;
+            //if (icBoms.Count > 0)
+            //{
+            //    //先清空表数据
+            //    await _ic_bom.Delete(p => p.mysql_id != -1);
+            //    var moIcBoms = ObjectMapper.Map<List<ic_bom>, List<mo_ic_bom>>(icBoms);
+            //    moIcBoms.ForEach(s => s.id = help.NextId());
+            //    //插入数据
+            //    await _ic_bom.InsertMany(moIcBoms);
+            //}
 
-            //同步物料BOM明细数据
-            var icbom_childs = _mysql_ic_bom_child.GetListAsync().Result;
-            if (icbom_childs.Count > 0)
-            {
-                //先清空表数据
-                await _ic_bom_child.Delete(p => p.mysql_id != -1);
-                var moIcbom_childs = ObjectMapper.Map<List<ic_bom_child>, List<mo_ic_bom_child>>(icbom_childs);
-                moIcbom_childs.ForEach(s => s.id = help.NextId());
-                //插入数据
-                await _ic_bom_child.InsertMany(moIcbom_childs);
-            }
+            ////同步物料BOM明细数据
+            //var icbom_childs = _mysql_ic_bom_child.GetListAsync().Result;
+            //if (icbom_childs.Count > 0)
+            //{
+            //    //先清空表数据
+            //    await _ic_bom_child.Delete(p => p.mysql_id != -1);
+            //    var moIcbom_childs = ObjectMapper.Map<List<ic_bom_child>, List<mo_ic_bom_child>>(icbom_childs);
+            //    moIcbom_childs.ForEach(s => s.id = help.NextId());
+            //    //插入数据
+            //    await _ic_bom_child.InsertMany(moIcbom_childs);
+            //}
 
-            //工厂物料明细表
-            var ic_factory_details = _mysql_ic_factory_details.GetListAsync().Result;
-            if (ic_factory_details.Count > 0)
-            {
-                //先清空表数据
-                await _ic_factory_details.Delete(p => p.mysql_id != -1);
-                var moIc_factory_details = ObjectMapper.Map<List<ic_factory_details>, List<mo_ic_factory_details>>(ic_factory_details);
-                moIc_factory_details.ForEach(s => s.id = help.NextId());
-                await _ic_factory_details.InsertMany(moIc_factory_details);
-            }
+            ////工厂物料明细表
+            //var ic_factory_details = _mysql_ic_factory_details.GetListAsync().Result;
+            //if (ic_factory_details.Count > 0)
+            //{
+            //    //先清空表数据
+            //    await _ic_factory_details.Delete(p => p.mysql_id != -1);
+            //    var moIc_factory_details = ObjectMapper.Map<List<ic_factory_details>, List<mo_ic_factory_details>>(ic_factory_details);
+            //    moIc_factory_details.ForEach(s => s.id = help.NextId());
+            //    await _ic_factory_details.InsertMany(moIc_factory_details);
+            //}
 
             //同步物料数据
             var icItems = _mysql_ic_item.GetListAsync().Result;

+ 1 - 1
MicroServices/Business/Business.Host/BusinessHostModule.cs

@@ -113,7 +113,7 @@ namespace Business
                 q.AddTrigger(opts => opts
                     .ForJob(jobKey)
                     .WithIdentity("SyncDataJob-trigger")
-                    .WithCronSchedule("0 54 15 * * ?")
+                    .WithCronSchedule("0 29 1 * * ?")
                     .WithDescription("定时同步MySQL基础数据到MongoDB"));
 
                 var NLogJobKey = new JobKey("NLogJob");