Przeglądaj źródła

新增快照数据表

zhengly 3 lat temu
rodzic
commit
87c92b880a

+ 76 - 32
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -165,13 +165,26 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         private readonly IMongoDB<mes_mooccupy> _mes_mooccupy;
         /// <summary>
+        /// mysql在制工单占用表
+        /// </summary>
+        private readonly IRepository<mes_mooccupy, long> _mysql_mes_mooccupy;
+        /// <summary>
         /// 销售工单
         /// </summary>
-        private readonly IRepository<crm_seorder> _mysql_crm_seorder;
+        private readonly IRepository<crm_seorder, long> _mysql_crm_seorder;
         /// <summary>
         /// 销售工单
         /// </summary>
-        private readonly IRepository<crm_seorderentry> _mysql_crm_seorderentry;
+        private readonly IRepository<crm_seorderentry, long> _mysql_crm_seorderentry;
+
+        /// <summary>
+        /// 生产工单主表
+        /// </summary>
+        private readonly IRepository<mes_morder, long> _mysql_mes_morder;
+        /// <summary>
+        /// 生产工单子表
+        /// </summary>
+        private readonly IRepository<mes_moentry, long> _mysql_mes_moentry;
         #endregion
 
         /// <summary>
@@ -208,7 +221,10 @@ namespace Business.ResourceExamineManagement
             IRepository<ic_item_stock, long> mysql_ic_item_stock,
             IRepository<ic_factory_details, long> mysql_ic_factory_details,
             IRepository<mes_oorder, long> mysql_mes_oorder,
-            IRepository<srm_pr_main, long> mysql_srm_pr_main
+            IRepository<srm_pr_main, long> mysql_srm_pr_main,
+            IRepository<mes_mooccupy, long> mysql_mes_mooccupy,
+            IRepository<mes_morder, long> mysql_mes_morder,
+            IRepository<mes_moentry, long> mysql_mes_moentry
 
 
             )
@@ -222,9 +238,9 @@ namespace Business.ResourceExamineManagement
             _ic_bom_child = ic_bom_child;
             _ic_item_stock = ic_item_stock;
             _ic_check = ic_check;
-            _ic_factory_details= ic_factory_details;
-            _mes_oorder= mes_oorder;
-            _srm_pr_main= srm_pr_main;
+            _ic_factory_details = ic_factory_details;
+            _mes_oorder = mes_oorder;
+            _srm_pr_main = srm_pr_main;
             //_ic_substitute = ic_substitute;
             //_ic_substitute_all = ic_substitute_all;
             //_ic_substitute_all_dtl = ic_substitute_all_dtl;
@@ -239,9 +255,12 @@ namespace Business.ResourceExamineManagement
             _mysql_crm_seorderentry = mysql_crm_seorderentry;
             _mysql_mes_technique = mysql_mes_technique;
             _mysql_ic_item_stock = mysql_ic_item_stock;
-            _mysql_ic_factory_details= mysql_ic_factory_details;
-            _mysql_mes_oorder= mysql_mes_oorder;
-            _mysql_srm_pr_main= mysql_srm_pr_main;
+            _mysql_ic_factory_details = mysql_ic_factory_details;
+            _mysql_mes_oorder = mysql_mes_oorder;
+            _mysql_srm_pr_main = mysql_srm_pr_main;
+            _mysql_mes_mooccupy = mysql_mes_mooccupy;
+            _mysql_mes_morder = mysql_mes_morder;
+            _mysql_mes_moentry = mysql_mes_moentry;
         }
 
         /// <summary>
@@ -306,16 +325,16 @@ namespace Business.ResourceExamineManagement
         public async Task<PschedDto> ReceiveResult(SeorderentryDto input)
         {
             //数据库快照-同步mysql库数据到mongoDB中
-            //await SyncData(input.factoryId);
+            await SyncData(input.factoryId);
             //生成当前计算bangid
             //SnowFlake snow = new SnowFlake();
             //long bangid = snow.NextId();
-            
+
             //产能检查
-            await ProductiveExamine(1735281284746956800, 1000);
+            // await ProductiveExamine(1735281284746956800, 1000);
             //await ProductiveExamine(1733221167209762816, 100);
 
-            await GenerateMorder(14);
+            //await GenerateMorder(14);
             return null;
             throw new NotImplementedException();
         }
@@ -332,8 +351,30 @@ namespace Business.ResourceExamineManagement
             {
                 await _ic_item_stock.InsertMany(icitemStokc);
             }
-
-
+            //物料BOM
+            var icBom = _mysql_ic_bom.GetListAsync(x => x.factory_id == factoryId).Result;
+            if (icBom.Count > 0)
+            {
+                await _ic_bom.InsertMany(icBom);
+            }
+            //在制工单占用记录表
+            var mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => x.factory_id == factoryId).Result;
+            if (mes_mooccupy.Count > 0)
+            {
+                await _mes_mooccupy.InsertMany(mes_mooccupy);
+            }
+            //工单主表
+            var mes_morder = _mysql_mes_morder.GetListAsync(x => x.factory_id == factoryId).Result;
+            if (mes_morder.Count > 0)
+            {
+                await _mes_morder.InsertMany(mes_morder);
+            }
+            //工单子表
+            var mes_moentry = _mysql_mes_moentry.GetListAsync(x => x.factory_id == factoryId).Result;
+            if (mes_moentry.Count > 0)
+            {
+                await _mes_moentry.InsertMany(mes_moentry);
+            }
         }
 
         /// <summary>
@@ -351,7 +392,8 @@ namespace Business.ResourceExamineManagement
             #region 1、数据准备
             //1.1、获取工艺路径数据
             mes_technique tech = await _mes_technique.GetOneByID(tech_id);
-            if (tech == null) {
+            if (tech == null)
+            {
                 throw new NotImplementedException("请先配置工艺路径!");
             }
 
@@ -366,11 +408,11 @@ namespace Business.ResourceExamineManagement
             //FilterDefinition<mes_process> filter = Builders<mes_process>.Filter.In(s => s.Id, tech_Processes.Select(m => m.proc_id).ToList());
             //List<mes_process> process = await _mes_process.GetManyByIds(filter);
             List<long> procIds = tech_Processes.Select(m => m.proc_id).ToList();
-            List<mes_process> process = await _mes_process.GetManyByCondition(p=> procIds.Contains(p.Id));
+            List<mes_process> process = await _mes_process.GetManyByCondition(p => procIds.Contains(p.Id));
 
             //1.3、获取工艺工序关联工位信息
             List<long> techProcIds = tech_Processes.Select(m => m.Id).ToList();
-            List<mes_tech_proc_workshop> tech_Proc_Workshops = await _mes_tech_proc_workshop.GetManyByCondition(p=> techProcIds.Contains(p.tech_proc_id));
+            List<mes_tech_proc_workshop> tech_Proc_Workshops = await _mes_tech_proc_workshop.GetManyByCondition(p => techProcIds.Contains(p.tech_proc_id));
             #endregion
 
             #region 计算产能,得到耗时
@@ -452,11 +494,11 @@ namespace Business.ResourceExamineManagement
 
             //2.每一个销售订单行对应一个工单。
             //查询销售订单子表数据
-            var seorderentry = _mysql_crm_seorderentry.GetListAsync(x => x.Id == seorderentry_id).Result.FirstOrDefault();
+            var seorderentry = await _mysql_crm_seorderentry.FindAsync(x => x.Id == seorderentry_id);
             //获取销售订单信息
             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.tenant_id == seorderentry.tenant_id).Result.FirstOrDefault();
+            var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number && x.factory_id == seorderentry.factory_id).Result.FirstOrDefault();
 
             mes_morder mes_Morder = new mes_morder();
             mes_Morder.GenerateNewId();
@@ -479,6 +521,7 @@ namespace Business.ResourceExamineManagement
             mes_Morder.morder_need_time = ProductiveDate.Result;
             mes_Morder.moentry_startup_status = 0;
             mes_Morder.tenant_id = seorderentry.tenant_id;
+            mes_Morder.factory_id = seorderentry.factory_id;
             mes_Morder.product_code = seorderentry.item_number;
             mes_Morder.product_name = seorderentry.item_name;
             mes_Morder.project_name = seorder.project_name;
@@ -508,6 +551,7 @@ namespace Business.ResourceExamineManagement
             mes_Moentry.morder_production_number = seorderentry.qty;
             mes_Moentry.need_number = seorderentry.qty;
             mes_Moentry.remaining_number = 0;
+            mes_Moentry.factory_id = seorderentry.factory_id;
             using (TransactionScope scope = new TransactionScope())
             {
                 await _mes_morder.InsertOne(mes_Morder);
@@ -866,7 +910,7 @@ namespace Business.ResourceExamineManagement
 
             //List<BomChildExamineDto> returnlist = new List<BomChildExamineDto>();
             var dto = new BomChildExamineDto();
-            var bom = bomlist.WhereIf(true,s => s.icitem_id == dtl.icitem_id).FirstOrDefault();
+            var bom = bomlist.WhereIf(true, s => s.icitem_id == dtl.icitem_id).FirstOrDefault();
             var icitem = icitemlist.Find(s => s.Id == dtl.icitem_id);
             if (icitem == null)
             {
@@ -1091,13 +1135,13 @@ namespace Business.ResourceExamineManagement
         }
 
         //根据物料id获取物料3个提前期
-        private Task<List<ICItemLeadTimeDto>> GetLeadTime(List<BomChildExamineDto> returnlist,long factoryid)
+        private Task<List<ICItemLeadTimeDto>> GetLeadTime(List<BomChildExamineDto> returnlist, long factoryid)
         {
             //ToDo:企业Id
             ProjectionDefinitionBuilder<ic_factory_details> project = new ProjectionDefinitionBuilder<ic_factory_details>();
             return _ic_factory_details.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.factory_id == factoryid,
                 project.Include(p => p.icitem_id).Include(p => p.production_leadtime).Include(p => p.stock_leadtime).Include(p => p.transportation_leadtime)).Result.
-                Select(x => new ICItemLeadTimeDto { item_id = x.icitem_id,transportation_leadtime=x.transportation_leadtime,stock_leadtime=x.stock_leadtime,production_leadtime=x.production_leadtime }).AsQueryable<ICItemLeadTimeDto>().ToListAsync();
+                Select(x => new ICItemLeadTimeDto { item_id = x.icitem_id, transportation_leadtime = x.transportation_leadtime, stock_leadtime = x.stock_leadtime, production_leadtime = x.production_leadtime }).AsQueryable<ICItemLeadTimeDto>().ToListAsync();
         }
 
         /// <summary>
@@ -1112,7 +1156,7 @@ namespace Business.ResourceExamineManagement
             {
                 mes_oorder oOrder = new mes_oorder();
                 oOrder.GenerateNewId();
-                oOrder.oorder_no =getOrderNum("WW");//生产工单编号
+                oOrder.oorder_no = getOrderNum("WW");//生产工单编号
                 oOrder.oorder_type = "委外工单";//生产工单类型
                 oOrder.oorder_date = DateTime.Now;//委外订单日期
                 oOrder.oorder_state = "已提交";//订单状态
@@ -1127,10 +1171,10 @@ namespace Business.ResourceExamineManagement
                 oOrder.product_code = "产品代码";//产品代码
                 oOrder.ffms_number = "1000";//fms旧料号
                 oOrder.product_name = "test";//产品名称
-                oOrder.specification_model ="";//规格型号
+                oOrder.specification_model = "";//规格型号
                 oOrder.bom_number = "";//bom编码
-                oOrder.unit ="";//单位
-                oOrder.morder_progress ="";//工单进度
+                oOrder.unit = "";//单位
+                oOrder.morder_progress = "";//工单进度
                 oOrder.morder_production_number = 120;//工单生产数量(计划数量)
                 oOrder.need_number = 11;//需求数量
                 oOrder.remaining_number = 11;//剩余可用数量
@@ -1140,14 +1184,14 @@ namespace Business.ResourceExamineManagement
                 oOrder.inventory_number = 22;//入库数量
                 oOrder.notice_qty = 22;//已开通知单数量
                 oOrder.moentry_on = 22;//启动状态
-                oOrder.start_time =DateTime.Now;//开始时间
+                oOrder.start_time = DateTime.Now;//开始时间
                 oOrder.pause_time = DateTime.Now;//最近暂停时间
                 oOrder.restart_time = DateTime.Now;//最近重启时间
                 oOrder.project_name = "22";//项目名称
                 oOrder.sent_status = 22;//发料状态 1-待发料  2-已发料
                 oOrder.production_unit = "ge";//加工单位
                 oOrder.production_unit_code = "元";//加工单位编码
-                oOrder.need_icitem_status =1;//所需物料是否充足  1-充足 0-缺料
+                oOrder.need_icitem_status = 1;//所需物料是否充足  1-充足 0-缺料
                 oOderList.Add(oOrder);
             }
             _mes_oorder.InsertMany(oOderList);
@@ -1160,10 +1204,10 @@ namespace Business.ResourceExamineManagement
         /// <param name="returnlist"></param>
         /// <param name="factoryid"></param>
         /// <param name="orderType">1委外采购申请单,2采购申请单</param>
-        private  void CreateSRMPR(List<BomChildExamineDto> returnlist, long factoryid,int orderType)
+        private void CreateSRMPR(List<BomChildExamineDto> returnlist, long factoryid, int orderType)
         {
-            List<srm_pr_main> prList=new List<srm_pr_main>();
-            foreach(var item in returnlist)
+            List<srm_pr_main> prList = new List<srm_pr_main>();
+            foreach (var item in returnlist)
             {
                 srm_pr_main srm_Pr = new srm_pr_main();
                 srm_Pr.GenerateNewId();

+ 14 - 0
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/BusinessDbContext.cs

@@ -34,6 +34,20 @@ namespace Business.EntityFrameworkCore
         /// 种忮隆等赽桶
         /// </summary>
         public DbSet<crm_seorderentry> crm_seorderentry { get; set; }
+        #region 馱等
+        /// <summary>
+        /// 婓秶馱等梩蚚暮翹桶
+        /// </summary>
+        public DbSet<mes_mooccupy> mes_mooccupy { get; set; }
+        /// <summary>
+        /// 馱等翋桶
+        /// </summary>
+        public DbSet<mes_morder> mes_morder { get; set; }
+        /// <summary>
+        /// 馱等赽桶
+        /// </summary>
+        public DbSet<mes_moentry> mes_moentry { get; set; }
+        #endregion
         #region 昜蹋
         /// <summary>
         /// 昜蹋砆ロ