zhengly 3 лет назад
Родитель
Сommit
1c8ffb2315

+ 116 - 33
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -45,6 +45,7 @@ using Amazon.Runtime.Internal.Transform;
 using System.IO.Compression;
 using System.Collections;
 using System.Data.SqlTypes;
+using Microsoft.EntityFrameworkCore.Diagnostics;
 
 namespace Business.ResourceExamineManagement
 {
@@ -336,16 +337,93 @@ namespace Business.ResourceExamineManagement
             SnowFlake snow = new SnowFlake();
             long bangid = snow.NextId();
 
+            input.tenantId = 102;
+            input.factoryId = 10201;
+
+            //数据准备
+            //await SaveChangesCompletedEventData()
+
             //数据库快照-同步mysql库数据到mongoDB中
-            await SyncData(input.tenantId,input.factoryId,bangid);
+            //await SyncData(input.tenantId, input.factoryId, bangid);
 
             //产能检查
-            await ProductiveExamine(1353957529328291842, 1000);
-
-            //await GenerateMorder(14);
+            //await ProductiveExamine(1353957529328291842, 1000);
+            var id = Save(input.tenantId, input.factoryId);
+            await GenerateMorder(id);
             return null;
             throw new NotImplementedException();
         }
+        public long Save(long tenantId, long factoryId)
+        {
+            //销售订单
+            crm_seorder crm_Seorder = new crm_seorder()
+            {
+                IsDeleted = false,
+                bill_no = "SO201900000020",
+                order_type = 1,
+                trade_type = 1,
+                sale_style = 1,
+                custom_id = 1001,
+                custom_name = "温州正泰电器科技有限公司",
+                custom_no = "01.0098",
+                date = DateTime.Now.Date,
+                currency = 1,
+                exchange_rate = 1,
+                biller = "张晓延",
+                emp_no = "8604",
+                emp_name = "王劲松",
+                auditor = "邹晓燕",
+                audit_date = DateTime.Now.Date,
+                status = 1,
+                closed = true,
+                op_time = DateTime.Now.Date,
+                tenant_id = tenantId,
+                factory_id = factoryId,
+                org_id = tenantId
+            };
+            crm_Seorder.GenerateNewId();
+            crm_seorderentry crm_Seorderentry = new crm_seorderentry()
+            {
+                IsDeleted = false,
+                seorder_id = crm_Seorder.Id,
+                bill_no = "SO201900000020",
+                entry_seq = 1,
+                map_name = "自动转换开关电器",
+                map_number = "L6.733036.5",
+                item_number = "9.1.03.01.0541",
+                item_name = "自动转换开关电器",
+                fms_number = "988123",
+                specification = "FDQ3-RMQ6-63/4JC1R_基本型",
+                bom_number = "BOM00042070",
+                unit = "台",
+                qty = 1000,
+                price = 100,
+                tax_price = 0,
+                amount = 0,
+                tax_rate = 13,
+                discount_amount = 0,
+                discount_rate = 0,
+                aux_price_discount = 70,
+                total_amount = 0,
+                plan_date = DateTime.Parse("2023-04-29 00:00:00"),
+                planner_name = "钱萍萍",
+                planner_no = "9022",
+                state = true,
+                rstate = 0,
+                is_checked = true,
+                deliver_count = 0,
+                deliver_notice_count = 0,
+                tenant_id = tenantId,
+                factory_id = factoryId,
+                org_id = tenantId,
+            };
+            crm_Seorderentry.GenerateNewId();
+
+            _mysql_crm_seorder.InsertAsync(crm_Seorder);
+            _mysql_crm_seorderentry.InsertAsync(crm_Seorderentry);
+
+            return crm_Seorderentry.Id;
+        }
 
         /// <summary>
         /// 数据库快照
@@ -358,31 +436,31 @@ namespace Business.ResourceExamineManagement
             if (icitemStokc.Count > 0)
             {
                 //设置当前计算bangid
-                icitemStokc.ForEach(item => { item.bang_id = bangid; });
+                //icitemStokc.ForEach(item => { item.bang_id = bangid; });
                 //插入数据
                 await _ic_item_stock.InsertMany(icitemStokc);
             }
-            ////在制工单占用记录表
-            //var mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
-            //if (mes_mooccupy.Count > 0)
-            //{
-            //    mes_mooccupy.ForEach(item => { item.bang_id = bangid; });
-            //    await _mes_mooccupy.InsertMany(mes_mooccupy);
-            //}
-            ////工单主表
-            //var mes_morder = _mysql_mes_morder.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
-            //if (mes_morder.Count > 0)
-            //{
-            //    mes_morder.ForEach(item => { item.bang_id = bangid; });
-            //    await _mes_morder.InsertMany(mes_morder);
-            //}
-            ////工单子表
-            //var mes_moentry = _mysql_mes_moentry.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
-            //if (mes_moentry.Count > 0)
-            //{
-            //    mes_moentry.ForEach(item => { item.bang_id = bangid; });
-            //    await _mes_moentry.InsertMany(mes_moentry);
-            //}
+            //在制工单占用记录表
+            var mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
+            if (mes_mooccupy.Count > 0)
+            {
+                //mes_mooccupy.ForEach(item => { item.bang_id = bangid; });
+                await _mes_mooccupy.InsertMany(mes_mooccupy);
+            }
+            //工单主表
+            var mes_morder = _mysql_mes_morder.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
+            if (mes_morder.Count > 0)
+            {
+                //mes_morder.ForEach(item => { item.bang_id = bangid; });
+                await _mes_morder.InsertMany(mes_morder);
+            }
+            //工单子表
+            var mes_moentry = _mysql_mes_moentry.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
+            if (mes_moentry.Count > 0)
+            {
+                //mes_moentry.ForEach(item => { item.bang_id = bangid; });
+                await _mes_moentry.InsertMany(mes_moentry);
+            }
         }
 
         /// <summary>
@@ -528,7 +606,9 @@ namespace Business.ResourceExamineManagement
             //获取销售订单信息
             var seorder = await _mysql_crm_seorder.FindAsync(x => x.Id == seorderentry.seorder_id);
             //物料BOM
-            var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number && x.factory_id == seorderentry.factory_id).Result.FirstOrDefault();
+            // var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number && x.factory_id == seorderentry.factory_id).Result.FirstOrDefault();
+
+            var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number).Result.FirstOrDefault();
 
             mes_morder mes_Morder = new mes_morder();
             mes_Morder.GenerateNewId();
@@ -914,7 +994,8 @@ namespace Business.ResourceExamineManagement
                                         //递归将替代关系组装出来。
                                         SubstitutePretreatment(sl, sal, dtl, item, returnlist, icitemlist, bomlist, bomchildlist, type);
                                     }
-                                    else {
+                                    else
+                                    {
                                         //将主料赋值上属性
                                         var dtlitem = returnlist.Find(s => s.item_id == dtl.icitem_id && s.level == item.level);
                                         dtlitem.substitute_all_num = sal.order_num;//群组优先级
@@ -1022,7 +1103,7 @@ namespace Business.ResourceExamineManagement
             }
         }
 
-        
+
 
         public void calcTest(List<BomChildExamineDto> returnlist, long bangid, long orderid)
         {
@@ -1092,7 +1173,7 @@ namespace Business.ResourceExamineManagement
                 }
             }
         }
-        
+
 
         public void calcTest2(BomChildExamineDto parent, List<BomChildExamineDto> bzlist, List<BomChildExamineDto> returnlist, List<ic_item_stockoccupy> sockoccupyList)
         {
@@ -1109,7 +1190,7 @@ namespace Business.ResourceExamineManagement
                     //循环计算群组,看哪个群组满足要求,然后使用此群组,将群组的库存和子物料占用掉。
                     //计算此次群组是否有符合
                     MaterialCalc(sublist, returnlist, sockoccupyList);
-                    
+
                 }
             }
         }
@@ -1151,13 +1232,15 @@ namespace Business.ResourceExamineManagement
                                 }
                             }
                         }
-                        else {
+                        else
+                        {
                             g.kz = Math.Floor(g.sqty / g.qty);//自己不是BOM的情况下,算一下自己可制父级可以制造多少个,这个可制只是基于父级BOM才用来运算。
                             //todo:申老师说,如果是苏州工厂,原材料有可能也是自制的。
                             //所以这里在计算时,还可以直接拿缺料数量,去丢给苏州计算方法,得出原材料的库存加可制。
                         }
                     }
-                    else {
+                    else
+                    {
                         boolCount++;
                     }
                 }