Explorar el Código

Merge branch 'master' of http://123.60.180.165:4647/ZZYDOP/DOPCore

heteng hace 3 años
padre
commit
377b6dd51c

+ 1 - 0
MicroServices/Business/Business.Application.Contracts/Business.Application.Contracts.csproj

@@ -39,6 +39,7 @@
 
   <ItemGroup>
     <ProjectReference Include="..\Bussiness.Model\Bussiness.Model.csproj" />
+    <ProjectReference Include="..\Bussiness.MongoModel\Bussiness.MongoModel.csproj" />
   </ItemGroup>
 
 </Project>

+ 8 - 2
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/GenerateMorderDto.cs

@@ -1,5 +1,7 @@
 using Bussiness.Model.MES.IC;
 using Bussiness.Model.Sale;
+using Bussiness.MongoModel.MES.IC;
+using Bussiness.MongoModel.Sale;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -13,11 +15,11 @@ namespace Business.ResourceExamineManagement.Dto
         /// <summary>
         /// 销售订单子表
         /// </summary>
-        public crm_seorderentry seorderentry { get; set; }
+        public mo_crm_seorderentry seorderentry { get; set; }
         /// <summary>
         /// 物料详情
         /// </summary>
-        public ic_item ic_Item { get; set; }
+        public mo_ic_item ic_Item { get; set; }
         /// <summary>
         /// Bom编码
         /// </summary>
@@ -54,5 +56,9 @@ namespace Business.ResourceExamineManagement.Dto
         /// 工单建议开始时间
         /// </summary>
         public DateTime? moentry_sys_stime { get; set; } = null;
+        /// <summary>
+        /// 计算ID
+        /// </summary>
+        public long bang_id { get; set; }
     }
 }

+ 3 - 2
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/Mes_MorderDto.cs

@@ -1,4 +1,5 @@
 using Bussiness.Model.Production;
+using Bussiness.MongoModel.Production;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -12,11 +13,11 @@ namespace Business.ResourceExamineManagement.Dto
         /// <summary>
         /// 工单主表
         /// </summary>
-        public List<mes_morder> mes_Morders { get; set; }
+        public List<mo_mes_morder> mes_Morders { get; set; }
         /// <summary>
         /// 工单子表
         /// </summary>
-        public List<mes_moentry> mes_Moentries { get; set; }
+        public List<mo_mes_moentry> mes_Moentries { get; set; }
 
     }
 }

+ 4 - 2
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/PschedDto.cs

@@ -4,6 +4,8 @@ using Volo.Abp.Application.Dtos;
 using System.ComponentModel.DataAnnotations;
 using Bussiness.Model.MES.IC;
 using Bussiness.Model.Production;
+using Bussiness.MongoModel.MES.IC;
+using Bussiness.MongoModel.Production;
 
 namespace Business.ResourceExamineManagement.Dto
 {
@@ -25,7 +27,7 @@ namespace Business.ResourceExamineManagement.Dto
         /// <summary>
         /// 物料占用记录
         /// </summary>
-        public List<ic_item_stockoccupy> sklist { get; set; }
+        public List<mo_ic_item_stockoccupy> sklist { get; set; }
 
         /// <summary>
         /// 采购申请
@@ -35,7 +37,7 @@ namespace Business.ResourceExamineManagement.Dto
         /// <summary>
         /// 委外订单
         /// </summary>
-        public List<mes_oorder> order_list { get; set; }
+        public List<mo_mes_oorder> order_list { get; set; }
     }
 
     /// <summary>

+ 2 - 1
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/SRMPRDto.cs

@@ -1,4 +1,5 @@
 using Bussiness.Model.SRM;
+using Bussiness.MongoModel.SRM;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -12,6 +13,6 @@ namespace Business.ResourceExamineManagement.Dto
     {
         public DateTime lastStartTmie { get; set; }
 
-        public srm_pr_main srm_Pr_Main { get; set; }
+        public mo_srm_pr_main srm_Pr_Main { get; set; }
     }
 }

+ 29 - 26
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -4,6 +4,9 @@ using Bussiness.Model.MES.IC;
 using Bussiness.Model.Production;
 using Bussiness.Model.Sale;
 using Bussiness.Model.SRM;
+using Bussiness.MongoModel.MES.IC;
+using Bussiness.MongoModel.Production;
+using Bussiness.MongoModel.Sale;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -20,17 +23,17 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         public SeorderentryDto param = new SeorderentryDto();
 
-        public List<ic_plan> planList { get; set; }
+        public List<mo_ic_plan> planList { get; set; }
 
         public List<ICItemLeadTimeDto> leadTimeList = new List<ICItemLeadTimeDto>();
-        public List<ic_item_pur> supplierList = new List<ic_item_pur>();
+        public List<mo_ic_item_pur> supplierList = new List<mo_ic_item_pur>();
 
         public List<SRMPRDto> SRMPRDtoList = new List<SRMPRDto>();
-        public List<mes_oorder> orderList = new List<mes_oorder>();
+        public List<mo_mes_oorder> orderList = new List<mo_mes_oorder>();
 
-        public List<mes_morder> mordersList = new List<mes_morder>();
-        public List<mes_moentry> moentriesList = new List<mes_moentry>();
-        public List<mes_mooccupy> mooccupyAllList = new List<mes_mooccupy>();
+        public List<mo_mes_morder> mordersList = new List<mo_mes_morder>();
+        public List<mo_mes_moentry> moentriesList = new List<mo_mes_moentry>();
+        public List<mo_mes_mooccupy> mooccupyAllList = new List<mo_mes_mooccupy>();
 
         /// <summary>
         /// 工单App
@@ -58,7 +61,7 @@ namespace Business.ResourceExamineManagement
         /// 计算物料库存量
         /// </summary>
         /// <param name="returnlist"></param>
-        public void BomStock(List<BomChildExamineDto> returnlist, List<ic_item_stock> _ic_item_stock)
+        public void BomStock(List<BomChildExamineDto> returnlist, List<mo_ic_item_stock> _ic_item_stock)
         {
             returnlist = returnlist.OrderBy(s => s.num_order).ToList();
             //获取当前工厂下物料库存数据
@@ -88,7 +91,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="input"></param>
         /// <param name="plan_date"></param>
         public void CalcView(List<BomChildExamineDto> returnlist, long bangid, decimal count, SeorderentryDto input, DateTime
-            ? plan_date, List<ic_item_stockoccupy> sklist, crm_seorderentry sentrys, List<ic_item> icitemlist)
+            ? plan_date, List<mo_ic_item_stockoccupy> sklist, mo_crm_seorderentry sentrys, List<mo_ic_item> icitemlist)
         {
             //第一级
             returnlist = returnlist.OrderBy(s => s.num_order).ToList();
@@ -110,7 +113,7 @@ namespace Business.ResourceExamineManagement
             if (level1Dto.lack_qty > 0)
             {
                 //获取物料详情
-                var ic_item = icitemlist.Find(s => s.Id == level1Dto.item_id);
+                var ic_item = icitemlist.Find(s => s.mysql_id == level1Dto.item_id);
                 var mooccupylist = _morderAppService.CheckMorder(level1Dto.bom_number, level1Dto.lack_qty, plan_date.GetValueOrDefault(), sentrys, ic_item).Result;
 
                 if (mooccupylist.Any())
@@ -240,7 +243,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="bzlist"></param>
         /// <param name="returnlist"></param>
         /// <param name="sockoccupyList"></param>
-        public void CaleLackItem(BomChildExamineDto parent, List<BomChildExamineDto> bzlist, List<BomChildExamineDto> returnlist, List<ic_item_stockoccupy> sockoccupyList)
+        public void CaleLackItem(BomChildExamineDto parent, List<BomChildExamineDto> bzlist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sockoccupyList)
         {
             //从第二级开始循环
             foreach (var item in bzlist)
@@ -259,7 +262,7 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         /// <param name="item"></param>
         /// <param name="sockoccupyList"></param>
-        public void Calczykc(BomChildExamineDto item, BomChildExamineDto parent, List<ic_item_stockoccupy> sockoccupyList)
+        public void Calczykc(BomChildExamineDto item, BomChildExamineDto parent, List<mo_ic_item_stockoccupy> sockoccupyList)
         {
             //找到当前物料的占用记录
             var itemSockoccupy = sockoccupyList.Where(s => s.icitem_id == item.item_id).ToList();
@@ -292,8 +295,8 @@ namespace Business.ResourceExamineManagement
         /// <param name="input"></param>
         /// <param name="sklist"></param>
         /// <param name="plan_date"></param>
-        public void CalcIcitem(List<BomChildExamineDto> childList, List<BomChildExamineDto> returnlist, long bangid, SeorderentryDto input, List<ic_item_stockoccupy> sklist, DateTime
-            ? plan_date, List<ic_item> icitemlist, crm_seorderentry sentrys)
+        public void CalcIcitem(List<BomChildExamineDto> childList, List<BomChildExamineDto> returnlist, long bangid, SeorderentryDto input, List<mo_ic_item_stockoccupy> sklist, DateTime
+            ? plan_date, List<mo_ic_item> icitemlist, mo_crm_seorderentry sentrys)
         {
             foreach (var item in childList)
             {
@@ -311,7 +314,7 @@ namespace Business.ResourceExamineManagement
                         Calczykc(item, parent, sklist);
 
                         //直接占用库存,缺料就生成采购
-                        ic_item_stockoccupy itemStockoccupyDto = new ic_item_stockoccupy();
+                        mo_ic_item_stockoccupy itemStockoccupyDto = new mo_ic_item_stockoccupy();
                         itemStockoccupyDto.bang_id = bangid;
                         itemStockoccupyDto.icitem_id = item.item_id;
                         itemStockoccupyDto.item_no = item.num;
@@ -335,8 +338,8 @@ namespace Business.ResourceExamineManagement
         /// <param name="itemStockoccupyDto"></param>
         /// <param name="bangid"></param>
         /// <param name="input"></param>
-        public void StartProcessing(BomChildExamineDto item, List<ic_item> icitemlist, List<BomChildExamineDto> returnlist, DateTime
-            ? plan_date, crm_seorderentry sentrys, List<ic_item_stockoccupy> sklist, ic_item_stockoccupy itemStockoccupyDto, long bangid, SeorderentryDto input)
+        public void StartProcessing(BomChildExamineDto item, List<mo_ic_item> icitemlist, List<BomChildExamineDto> returnlist, DateTime
+            ? plan_date, mo_crm_seorderentry sentrys, List<mo_ic_item_stockoccupy> sklist, mo_ic_item_stockoccupy itemStockoccupyDto, long bangid, SeorderentryDto input)
         {
             var parent = returnlist.Find(s => s.id == item.parent_id);
             if (item.lack_qty > 0)
@@ -435,8 +438,8 @@ namespace Business.ResourceExamineManagement
         /// <param name="sklist"></param>
         /// <param name="input"></param>
         /// <param name="plan_date"></param>
-        public void CalcStrategy(BomChildExamineDto item, List<BomChildExamineDto> returnlist, long bangid, List<ic_item_stockoccupy> sklist, SeorderentryDto input, DateTime
-            ? plan_date, List<ic_item> icitemlist, crm_seorderentry sentrys)
+        public void CalcStrategy(BomChildExamineDto item, List<BomChildExamineDto> returnlist, long bangid, List<mo_ic_item_stockoccupy> sklist, SeorderentryDto input, DateTime
+            ? plan_date, List<mo_ic_item> icitemlist, mo_crm_seorderentry sentrys)
         {
             //提取群组关系
             var sublist = returnlist.Where(s => s.parent_id == item.parent_id && s.num == item.num && s.level == item.level).OrderBy(c => c.substitute_all_num).ToList();
@@ -474,7 +477,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="returnlist"></param>
         /// <param name="sklist"></param>
         /// <param name="select"></param>
-        public void WholeBatchCheck(List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<ic_item_stockoccupy> sklist, List<BomChildExamineDto> select)
+        public void WholeBatchCheck(List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist, List<BomChildExamineDto> select)
         {
             for (int idx = 0; idx < 99; idx++)
             {
@@ -514,8 +517,8 @@ namespace Business.ResourceExamineManagement
         /// <param name="parent"></param>
         /// <param name="input"></param>
         /// <param name="plan_date"></param>
-        public void WholeBatch(BomChildExamineDto item, List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<ic_item_stockoccupy> sklist, List<BomChildExamineDto> select, long bangid, BomChildExamineDto parent, SeorderentryDto input, DateTime
-            ? plan_date, List<ic_item> icitemlist, crm_seorderentry sentrys)
+        public void WholeBatch(BomChildExamineDto item, List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist, List<BomChildExamineDto> select, long bangid, BomChildExamineDto parent, SeorderentryDto input, DateTime
+            ? plan_date, List<mo_ic_item> icitemlist, mo_crm_seorderentry sentrys)
         {
             if (select.Count() == 0)
             {
@@ -535,7 +538,7 @@ namespace Business.ResourceExamineManagement
             //占用库存
             foreach (var slt in select)
             {
-                ic_item_stockoccupy itemStockoccupyDto = new ic_item_stockoccupy();
+                mo_ic_item_stockoccupy itemStockoccupyDto = new mo_ic_item_stockoccupy();
                 itemStockoccupyDto.bang_id = bangid;
                 itemStockoccupyDto.icitem_id = slt.item_id;
                 itemStockoccupyDto.item_no = slt.num;
@@ -556,8 +559,8 @@ namespace Business.ResourceExamineManagement
         /// <param name="parent"></param>
         /// <param name="input"></param>
         /// <param name="plan_date"></param>
-        public void MixedUse(BomChildExamineDto item, List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<ic_item_stockoccupy> sklist, long bangid, BomChildExamineDto parent, SeorderentryDto input, DateTime
-            ? plan_date, List<ic_item> icitemlist, crm_seorderentry sentrys)
+        public void MixedUse(BomChildExamineDto item, List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist, long bangid, BomChildExamineDto parent, SeorderentryDto input, DateTime
+            ? plan_date, List<mo_ic_item> icitemlist, mo_crm_seorderentry sentrys)
         {
 
             decimal parent_lack = 0;
@@ -631,7 +634,7 @@ namespace Business.ResourceExamineManagement
                         {
                             zy.stock_state = 1;
                         }
-                        ic_item_stockoccupy itemStockoccupyDto = new ic_item_stockoccupy();
+                        mo_ic_item_stockoccupy itemStockoccupyDto = new mo_ic_item_stockoccupy();
                         itemStockoccupyDto.bang_id = bangid;
                         itemStockoccupyDto.icitem_id = zy.item_id;
                         /*decimal moo_qty = use_p_num * zy.qty - zy.sqty;
@@ -721,7 +724,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="item"></param>
         /// <param name="returnlist"></param>
         /// <param name="sklist"></param>
-        public void RecalculationStock(BomChildExamineDto item, List<BomChildExamineDto> returnlist, List<ic_item_stockoccupy> sklist)
+        public void RecalculationStock(BomChildExamineDto item, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist)
         {
             //再计算一边占用情况,这里根据父级产品额缺料量*当前子料的使用数量-子料库存量。得出当前子物料的缺料数量
             var parent = returnlist.Find(s => s.id == item.parent_id);

+ 38 - 27
MicroServices/Business/Business.Application/ResourceExamineManagement/MorderAppService.cs

@@ -1,11 +1,15 @@
 using Business.Core.Enum;
 using Business.Core.MongoDBHelper;
+using Business.Core.Utilities;
 using Business.ResourceExamineManagement.Dto;
 using Bussiness.Model.MES.IC;
 using Bussiness.Model.Production;
 using Bussiness.Model.Sale;
 using Bussiness.Model.SRM;
 using Bussiness.Model.Tech;
+using Bussiness.MongoModel.MES.IC;
+using Bussiness.MongoModel.Production;
+using Bussiness.MongoModel.Sale;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -23,16 +27,16 @@ namespace Business.ResourceExamineManagement
         /// <summary>
         /// 生产工单主表
         /// </summary>
-        private readonly IMongoDB<mes_morder> _mes_morder;
+        private readonly IMongoDB<mo_mes_morder> _mo_mes_morder;
         /// <summary>
         /// 生产工单子表
         /// </summary>
-        private readonly IMongoDB<mes_moentry> _mes_moentry;
+        private readonly IMongoDB<mo_mes_moentry> _mo_mes_moentry;
 
         /// <summary>
         /// 在制工单占用记录表
         /// </summary>
-        private readonly IMongoDB<mes_mooccupy> _mes_mooccupy;
+        private readonly IMongoDB<mo_mes_mooccupy> _mo_mes_mooccupy;
         /// <summary>
         /// 销售订单
         /// </summary>
@@ -45,6 +49,10 @@ namespace Business.ResourceExamineManagement
         /// 产能检查
         /// </summary>
         private readonly ProductExamineAppService _productExamineAppService;
+        /// <summary>
+        ///  雪花算法
+        /// </summary>
+        SnowFlake snowFlake = new SnowFlake();
 
         #endregion
         #region 构造函数
@@ -54,18 +62,18 @@ namespace Business.ResourceExamineManagement
         /// <param name="icitem"></param>
         /// <param name="icbom"></param>
         public MorderAppService(
-            IMongoDB<mes_morder> mes_morder,
-            IMongoDB<mes_moentry> mes_moentry,
-            IMongoDB<mes_mooccupy> mes_mooccupy,
+            IMongoDB<mo_mes_morder> mo_mes_morder,
+            IMongoDB<mo_mes_moentry> mo_mes_moentry,
+            IMongoDB<mo_mes_mooccupy> mo_mes_mooccupy,
             IRepository<crm_seorder, long> mysql_crm_seorder,
             IRepository<crm_seorderentry, long> mysql_crm_seorderentry,
             ProductExamineAppService productExamineAppService
             )
         {
 
-            _mes_morder = mes_morder;
-            _mes_moentry = mes_moentry;
-            _mes_mooccupy = mes_mooccupy;
+            _mo_mes_morder = mo_mes_morder;
+            _mo_mes_moentry = mo_mes_moentry;
+            _mo_mes_mooccupy = mo_mes_mooccupy;
             _mysql_crm_seorder = mysql_crm_seorder;
             _mysql_crm_seorderentry = mysql_crm_seorderentry;
             _productExamineAppService = productExamineAppService;
@@ -91,8 +99,9 @@ namespace Business.ResourceExamineManagement
             //获取销售订单信息
             var seorder = _mysql_crm_seorder.FindAsync(x => x.Id == generateMorderDto.seorderentry.seorder_id).Result;
 
-            mes_morder mes_Morder = new mes_morder();
-            mes_Morder.GenerateNewId();
+            mo_mes_morder mes_Morder = new mo_mes_morder();
+            mes_Morder.mysql_id = snowFlake.NextId();
+            mes_Morder.bang_id = generateMorderDto.bang_id;
             mes_Morder.morder_type = generateMorderDto.morder_type;
             mes_Morder.parent_id = generateMorderDto.ParentId;
             //mes_Morder.morder_icitem_type
@@ -147,9 +156,10 @@ namespace Business.ResourceExamineManagement
             mes_Morder.need_number = generateMorderDto.Quantity;
             mes_Morder.remaining_number = 0;
             //生成工单子表数据
-            mes_moentry mes_Moentry = new mes_moentry();
-            mes_Moentry.GenerateNewId();
-            mes_Moentry.moentry_moid = mes_Morder.Id;
+            mo_mes_moentry mes_Moentry = new mo_mes_moentry();
+            mes_Moentry.mysql_id = snowFlake.NextId();
+            mes_Moentry.bang_id = generateMorderDto.bang_id;
+            mes_Moentry.moentry_moid = mes_Morder.mysql_id;
             mes_Moentry.moentry_mono = mes_Morder.morder_no;
             mes_Moentry.soentry_id = generateMorderDto.seorderentry.Id;
             mes_Moentry.fbill_no = generateMorderDto.seorderentry.bill_no;
@@ -161,8 +171,8 @@ namespace Business.ResourceExamineManagement
             mes_Moentry.factory_id = generateMorderDto.seorderentry.factory_id;
 
             Mes_MorderDto mes_MorderDto = new Mes_MorderDto();
-            mes_MorderDto.mes_Morders = new List<mes_morder>();
-            mes_MorderDto.mes_Moentries = new List<mes_moentry>();
+            mes_MorderDto.mes_Morders = new List<mo_mes_morder>();
+            mes_MorderDto.mes_Moentries = new List<mo_mes_moentry>();
             mes_MorderDto.mes_Morders.Add(mes_Morder);
             mes_MorderDto.mes_Moentries.Add(mes_Moentry);
 
@@ -184,7 +194,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="DeliverDate">交付日期</param>
         /// <param name="seorderentry_id">销售订单子表ID</param>
         /// <returns></returns>
-        public async Task<List<mes_mooccupy>> CheckMorder(string bomNumber, decimal Quantity, DateTime DeliverDate, crm_seorderentry seorderentry, ic_item ic_Item, bool flag = true)
+        public async Task<List<mo_mes_mooccupy>> CheckMorder(string bomNumber, decimal Quantity, DateTime DeliverDate, crm_seorderentry seorderentry, mo_ic_item ic_Item, long bang_id, bool flag = true)
         {
             if (string.IsNullOrEmpty(bomNumber))
             {
@@ -196,21 +206,21 @@ namespace Business.ResourceExamineManagement
             //var seorderentry = await _mysql_crm_seorderentry.FindAsync(x => x.Id == seorderentry_id);
             //根据Bom编码查询出对应工单并且状态不为完成、关闭,非委外工单。
             //TODO:工单类型;
-            var morderList = await _mes_morder.GetManyByCondition(x => x.bom_number == bomNumber && (x.morder_state != MorderEnum.Accomplish_state || x.morder_state != MorderEnum.Close_state
+            var morderList = await _mo_mes_morder.GetManyByCondition(x => x.bom_number == bomNumber && (x.morder_state != MorderEnum.Accomplish_state || x.morder_state != MorderEnum.Close_state
             && x.morder_icitem_type != MorderEnum.XgwyMorder) && !x.IsDeleted && x.tenant_id == seorderentry.tenant_id);
 
             //获取物料详情
             //var ic_item = _ic_item.GetManyByCondition(x => x.number == seorderentry.item_number && x.tenant_id == seorderentry.tenant_id).Result.FirstOrDefault();
 
             //工单已被占用后要与占用表关联查询...减去占用量后 剩下生产数量可供下个销售工单使用。
-            var mes_mooccupyList = await _mes_mooccupy.GetManyByCondition(x => x.moo_state == 1 && !x.IsDeleted && x.tenant_id == seorderentry.tenant_id
+            var mes_mooccupyList = await _mo_mes_mooccupy.GetManyByCondition(x => x.moo_state == 1 && !x.IsDeleted && x.tenant_id == seorderentry.tenant_id
             && x.fitem_number == ic_Item.number);
 
             //首先满足需求数量工单其次判断是否满足交付日期、当数量不满足时继续查找最早交付日期订单 工单数量累加。
             //当前工单计划日期-1天 小于交付日期 && 计算生产数量-入库数据并且大于需求产品数量。
             var morderDataList = morderList.Where(x => x.moentry_sys_etime.GetValueOrDefault().AddDays(-1) < DeliverDate &&
             (x.morder_production_number - x.inventory_number) > Quantity).OrderByDescending(x => x.planner_end_date).ToList();
-            List<mes_mooccupy> mes_Mooccupies = new List<mes_mooccupy>();
+            List<mo_mes_mooccupy> mes_Mooccupies = new List<mo_mes_mooccupy>();
             //当数量或日期不满足的时候,寻找最早日期的工单
             if (morderDataList.Count == 0)
             {
@@ -221,7 +231,7 @@ namespace Business.ResourceExamineManagement
             foreach (var item in morderDataList)
             {
                 //查询当前工单是否存在占用情况
-                var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == item.Id).ToList();
+                var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == item.mysql_id).ToList();
                 //已占用数据
                 var Sumqty = mooccupies.Count > 0 ? mooccupies.Sum(x => x.moo_qty) : 0.00m;
                 //判断此工单剩余可占用数量
@@ -281,7 +291,7 @@ namespace Business.ResourceExamineManagement
                         //工单可占用数量满足 需求数量时直接占用需求数量
                         QuantityNumber = Quantity;
                     }
-                    var mes_Mooccupy = GetMooccupies(seorderentry, ic_Item, item, QuantityNumber);
+                    var mes_Mooccupy = GetMooccupies(seorderentry, ic_Item, item, QuantityNumber, bang_id);
                     mes_Mooccupies.Add(mes_Mooccupy);
                     //当剩余需要数量大于0则继续寻找可占用工单,已满足需要数量停止循环查找
                     if (Quantity - Sum <= 0)
@@ -388,19 +398,20 @@ namespace Business.ResourceExamineManagement
         /// <param name="item">工单表</param>
         /// <param name="mes_mooccupy">占用工单表</param>
         /// <returns></returns>
-        public mes_mooccupy GetMooccupies(crm_seorderentry seorderentry, ic_item ic_item, mes_morder item, decimal? number)
+        public mo_mes_mooccupy GetMooccupies(crm_seorderentry seorderentry, mo_ic_item ic_item, mo_mes_morder item, decimal? number, long bang_id)
         {
             //生成mes_mooccupy工单占用表数据,代表多个工单被某个销售订单已占用。 
-            mes_mooccupy mes_Mooccupy = new mes_mooccupy();
-            mes_Mooccupy.GenerateNewId();
-            mes_Mooccupy.moo_id_type = "资源检查";
+            mo_mes_mooccupy mes_Mooccupy = new mo_mes_mooccupy();
+            mes_Mooccupy.mysql_id = snowFlake.NextId();
+            mes_Mooccupy.bang_id = bang_id;
+            mes_Mooccupy.moo_id_type = MorderEnum.Zyjc_Type;
             mes_Mooccupy.moo_id_billid = seorderentry.seorder_id;//销售订单ID
             mes_Mooccupy.fbill_no = seorderentry.bill_no;//销售订单号
             mes_Mooccupy.fentry_id = seorderentry.entry_seq.Value;//销售订单行
             mes_Mooccupy.fitem_name = ic_item.name;//物料名称
             mes_Mooccupy.fitem_number = ic_item.number;
             mes_Mooccupy.fmodel = ic_item.model;//规格型号
-            mes_Mooccupy.moo_moid = item.Id;
+            mes_Mooccupy.moo_moid = item.mysql_id;
             mes_Mooccupy.moo_mo = item.morder_no;
             //占用量=生产计划数量-入库数量-已被占用数量
             mes_Mooccupy.moo_qty = number;

+ 22 - 21
MicroServices/Business/Business.Application/ResourceExamineManagement/PretreatmentAppService.cs

@@ -3,6 +3,7 @@ using Business.Core.Utilities;
 using Business.ResourceExamineManagement.Dto;
 using Bussiness.Model.MES.IC;
 using Bussiness.Model.Production;
+using Bussiness.MongoModel.MES.IC;
 using SixLabors.ImageSharp;
 using System;
 using System.Collections.Generic;
@@ -27,7 +28,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="orderid"></param>
         /// <param name="BomId"></param>
         /// <param name="Quantity"></param>
-        public List<BomChildExamineDto> BomPretreatment(long? BomId, List<ic_bom> bomlist, List<ic_bom_child> bomchildlist, List<ic_item> icitemlist)
+        public List<BomChildExamineDto> BomPretreatment(long? BomId, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, List<mo_ic_item> icitemlist)
         {
             if (BomId == null)
             {
@@ -35,7 +36,7 @@ namespace Business.ResourceExamineManagement
             }
             List<BomChildExamineDto> returnlist = new List<BomChildExamineDto>();
 
-            var bom = bomlist.Find(s => s.Id == BomId);
+            var bom = bomlist.Find(s => s.mysql_id == BomId);
             if (bom == null)
             {
                 return returnlist;
@@ -69,25 +70,25 @@ namespace Business.ResourceExamineManagement
         /// <param name="icitemlist"></param>
         /// <param name="dto"></param>
         /// <param name="returnlist"></param>
-        public void GetBomList(List<ic_bom> bomlist, List<ic_bom_child> bomchildlist, List<ic_item> icitemlist, BomChildExamineDto dto, List<BomChildExamineDto> returnlist, int type)
+        public void GetBomList(List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, List<mo_ic_item> icitemlist, BomChildExamineDto dto, List<BomChildExamineDto> returnlist, int type)
         {
             int level = dto.level + 1;//初始化定义level层级
 
-            var bom = bomlist.Where(s => s.Id == dto.bom_id).FirstOrDefault();
-            ic_item item = new ic_item();
+            var bom = bomlist.Where(s => s.mysql_id == dto.bom_id).FirstOrDefault();
+            mo_ic_item item = new mo_ic_item();
             if (bom != null)
             {
-                item = icitemlist.Where(a => a.Id == bom.icitem_id).FirstOrDefault();
+                item = icitemlist.Where(a => a.mysql_id == bom.icitem_id).FirstOrDefault();
             }
             else
             {
-                item = icitemlist.Where(a => a.Id == dto.item_id).FirstOrDefault();
+                item = icitemlist.Where(a => a.mysql_id == dto.item_id).FirstOrDefault();
             }
             if (item == null)
             {
                 return;
             }
-            dto.item_id = item.Id;
+            dto.item_id = item.mysql_id;
             dto.item_name = bom.item_name;
             dto.item_code = bom.item_number;
             dto.model = item.model;
@@ -99,7 +100,7 @@ namespace Business.ResourceExamineManagement
 
             //var bdto = ObjectMapper.Map<ic_bom,BomChildExamineDto>(bom);
             returnlist.Add(dto);
-            var childlist = bomchildlist.Where(a => a.bom_id == bom.Id).ToList();
+            var childlist = bomchildlist.Where(a => a.bom_id == bom.mysql_id).ToList();
 
             int idx = 1;
             foreach (var c in childlist)
@@ -107,7 +108,7 @@ namespace Business.ResourceExamineManagement
                 string childNum = dto.num + "." + idx.ToString();
                 long order_num = long.Parse(dto.num_order.ToString() + (idx.ToString().PadLeft(3, '0')));
 
-                var icitem = icitemlist.Where(a => a.Id == c.icitem_id).FirstOrDefault();
+                var icitem = icitemlist.Where(a => a.mysql_id == c.icitem_id).FirstOrDefault();
                 var childBom = bomlist.Where(a => a.icitem_id == c.icitem_id).FirstOrDefault();
                 //如果此明细查的到BOM信息,则代表此child是一个子BOM。
                 if (childBom != null)
@@ -116,7 +117,7 @@ namespace Business.ResourceExamineManagement
                     cdto.id = help.NextId();
                     cdto.level = level;
                     cdto.parent_id = dto.id;
-                    cdto.bom_child_id = c.Id;
+                    cdto.bom_child_id = c.mysql_id;
                     cdto.qty = c.qty.Value;
                     cdto.backflush = c.backflush;
                     cdto.num = childNum;
@@ -128,7 +129,7 @@ namespace Business.ResourceExamineManagement
                     cdto.icitem_ids = c.icitem_ids;
                     cdto.type = type;
                     cdto.item_id = childBom.icitem_id;
-                    cdto.bom_id = childBom.Id;
+                    cdto.bom_id = childBom.mysql_id;
                     cdto.bom_number = childBom.bom_number;
                     //递归寻找子级
                     GetBomList(bomlist, bomchildlist, icitemlist, cdto, returnlist, type);
@@ -140,10 +141,10 @@ namespace Business.ResourceExamineManagement
                         var childDto = new BomChildExamineDto();
                         childDto.level = level;
                         childDto.bom_id = dto.bom_id;
-                        childDto.bom_child_id = c.Id;
+                        childDto.bom_child_id = c.mysql_id;
                         childDto.id = help.NextId();
                         childDto.parent_id = dto.id;
-                        childDto.item_id = icitem.Id;
+                        childDto.item_id = icitem.mysql_id;
                         childDto.item_name = icitem.name;
                         childDto.item_code = icitem.number;
                         childDto.num = childNum;
@@ -179,7 +180,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="sublist"></param>
         /// <param name="suballlist"></param>
         /// <param name="subdtllist"></param>
-        public void BomSubstitute(List<BomChildExamineDto> returnlist, List<ic_bom> bomlist, List<ic_bom_child> bomchildlist, List<ic_item> icitemlist, List<ic_substitute> sublist, List<ic_substitute_all> suballlist, List<ic_substitute_all_dtl> subdtllist)
+        public void BomSubstitute(List<BomChildExamineDto> returnlist, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, List<mo_ic_item> icitemlist, List<mo_ic_substitute> sublist, List<mo_ic_substitute_all> suballlist, List<mo_ic_substitute_all_dtl> subdtllist)
         {
             List<long> childidList = new List<long>();
             int type = 1;
@@ -216,10 +217,10 @@ namespace Business.ResourceExamineManagement
                 var sl = sublist.Find(s => s.substitute_code == item.substitute_code);
                 if (sl != null)
                 {
-                    var sall = suballlist.Where(s => s.substitute_id == sl.Id).ToList();
+                    var sall = suballlist.Where(s => s.substitute_id == sl.mysql_id).ToList();
                     foreach (var sal in sall)
                     {
-                        var sadl = subdtllist.Where(s => s.substitute_allid == sal.Id).ToList();
+                        var sadl = subdtllist.Where(s => s.substitute_allid == sal.mysql_id).ToList();
                         foreach (var dtl in sadl)
                         {
                             if (sal.main_material.GetValueOrDefault() != 1)
@@ -253,14 +254,14 @@ namespace Business.ResourceExamineManagement
         /// <param name="icitemlist"></param>
         /// <param name="bomlist"></param>
         /// <param name="bomchildlist"></param>
-        public void SubstitutePretreatment(ic_substitute sl, ic_substitute_all sal, ic_substitute_all_dtl dtl, BomChildExamineDto toDto, List<BomChildExamineDto> returnlist, List<ic_item> icitemlist, List<ic_bom> bomlist, List<ic_bom_child> bomchildlist, int type)
+        public void SubstitutePretreatment(mo_ic_substitute sl, mo_ic_substitute_all sal, mo_ic_substitute_all_dtl dtl, BomChildExamineDto toDto, List<BomChildExamineDto> returnlist, List<mo_ic_item> icitemlist, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, int type)
         {
             //如果dtl对应的icitem是BOM,还需要向下继续展开。
 
             //List<BomChildExamineDto> returnlist = new List<BomChildExamineDto>();
             var dto = new BomChildExamineDto();
             var bom = bomlist.Where(s => s.icitem_id == dtl.icitem_id).FirstOrDefault();
-            var icitem = icitemlist.Find(s => s.Id == dtl.icitem_id);
+            var icitem = icitemlist.Find(s => s.mysql_id == dtl.icitem_id);
             if (icitem == null)
             {
                 return;
@@ -268,7 +269,7 @@ namespace Business.ResourceExamineManagement
             dto.id = help.NextId();
             dto.level = toDto.level;
             dto.parent_id = toDto.parent_id;
-            dto.item_id = icitem.Id;
+            dto.item_id = icitem.mysql_id;
             dto.item_name = icitem.name;
             dto.item_code = icitem.number;
             dto.num = toDto.num;
@@ -291,7 +292,7 @@ namespace Business.ResourceExamineManagement
             dto.substitute_all_num = sal.order_num;//群组优先级
             if (bom != null)
             {
-                dto.bom_id = bom.Id;
+                dto.bom_id = bom.mysql_id;
 
                 dto.qty = dtl.replace_amount == null ? 1 : dtl.replace_amount.Value;
                 dto.isbom = 1;

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

@@ -56,6 +56,7 @@ using Bussiness.MongoModel.MES.IC;
 using Bussiness.MongoModel.Production;
 using Bussiness.MongoModel.SRM;
 using Bussiness.MongoModel.Tech;
+using Bussiness.MongoModel.Sale;
 
 namespace Business.ResourceExamineManagement
 {
@@ -223,13 +224,13 @@ namespace Business.ResourceExamineManagement
 
         private List<ICItemLeadTimeDto> leadTimeList;
 
-        private List<ic_item_pur> supplierList;
+        private List<mo_ic_item_pur> supplierList;
 
-        private List<ic_plan> planList;
+        private List<mo_ic_plan> planList;
 
         private List<SRMPRDto> SRMPRDtoList = new List<SRMPRDto>();
 
-        private List<mes_oorder> orderList = new List<mes_oorder>();
+        private List<mo_mes_oorder> orderList = new List<mo_mes_oorder>();
         #endregion
 
         #region 构造函数
@@ -382,10 +383,10 @@ namespace Business.ResourceExamineManagement
             List<string> codeList = bomchildlist.Select(c => c.substitute_code).ToList();
             var sublist = _ic_substitute.GetManyByCondition(p => codeList.Contains(p.substitute_code) && !p.IsDeleted).Result;
 
-            List<long> subidlist = sublist.Select(c => c.mysql_id.GetValueOrDefault()).ToList();
+            List<long> subidlist = sublist.Select(c => c.mysql_id).ToList();
             var suballlist = _ic_substitute_all.GetManyByCondition(p => subidlist.Contains(p.substitute_id) && !p.IsDeleted).Result;
 
-            List<long> suballidlist = suballlist.Select(c => c.Id).ToList();
+            List<long> suballidlist = suballlist.Select(c => c.mysql_id).ToList();
             var subdtllist = _ic_substitute_all_dtl.GetManyByCondition(p => suballidlist.Contains(p.substitute_allid) && !p.IsDeleted).Result;
 
 
@@ -396,7 +397,7 @@ namespace Business.ResourceExamineManagement
             List<long> itemIds = bomlist.Select(p => p.icitem_id).ToList();
             itemIds.AddRange(bomchildlist.Select(p => p.icitem_id).ToList());
             itemIds.AddRange(subdtllist.Select(p => p.icitem_id).ToList());
-            List<mo_ic_item> icitemlist = _ic_item.GetManyByCondition(p => itemIds.Contains(p.Id) && !p.IsDeleted).Result;
+            List<mo_ic_item> icitemlist = _ic_item.GetManyByCondition(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result;
 
             //物料库存
             var stocklist = _ic_item_stock.GetManyByCondition(p => p.factory_id == param.factoryId && itemIds.Contains(p.icitem_id)).Result;
@@ -421,7 +422,7 @@ namespace Business.ResourceExamineManagement
                 //获取当前物料bom数据
                 var childBom = boms.Where(p => p.item_number == item.item_number).FirstOrDefault();
                 //bom层级组装
-                var getBomList = _pretreatmentAppService.BomPretreatment(childBom.Id, bomlist, bomchildlist, icitemlist);
+                var getBomList = _pretreatmentAppService.BomPretreatment(childBom.mysql_id, bomlist, bomchildlist, icitemlist);
                 //bom替代关系组装
                 _pretreatmentAppService.BomSubstitute(getBomList, bomlist, bomchildlist, icitemlist, sublist, suballlist, subdtllist);
                 //库存初始化
@@ -468,7 +469,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="icBoms"></param>
         /// <param name="bomlist"></param>
         /// <param name="bomchildlist"></param>
-        public void GetIcBomData(List<ic_bom> icBoms, List<ic_bom> bomlist, List<ic_bom_child> bomchildlist)
+        public void GetIcBomData(List<mo_ic_bom> icBoms, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist)
         {
             if (icBoms.Count() == 0)
             {
@@ -477,7 +478,7 @@ namespace Business.ResourceExamineManagement
             //添加物料bom数据
             bomlist.AddRange(icBoms);
             //获取物料bom明细数据
-            List<ic_bom_child> childList = _ic_bom_child.GetManyByCondition(p => icBoms.Select(m => m.Id).Contains(p.bom_id) && p.use_status == 1 && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
+            List<mo_ic_bom_child> childList = _ic_bom_child.GetManyByCondition(p => icBoms.Select(m => m.mysql_id).Contains(p.bom_id) && p.use_status == 1 && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
             //没有明细数据,终止
             if (childList.Count == 0)
             {
@@ -636,20 +637,20 @@ namespace Business.ResourceExamineManagement
         /// <returns></returns>
         private List<ICItemLeadTimeDto> GetLeadTime(List<long> icItemIds, long tenantId, long factoryid)
         {
-            ProjectionDefinitionBuilder<ic_factory_details> project = new ProjectionDefinitionBuilder<ic_factory_details>();
+            ProjectionDefinitionBuilder<mo_ic_factory_details> project = new ProjectionDefinitionBuilder<mo_ic_factory_details>();
             return _ic_factory_details.Find(p => icItemIds.Contains(p.icitem_id) && p.factory_id == factoryid && p.tenant_id == tenantId && !p.IsDeleted,
                 project.Include(p => p.icitem_id).Include(p => p.production_leadtime).Include(p => p.stock_leadtime).Include(p => p.transportation_leadtime).Include(p => p.order_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, order_leadtime = x.order_leadtime }).AsQueryable<ICItemLeadTimeDto>().ToList();
         }
 
         //根据物料id获取物料供应商
-        private List<ic_item_pur> GetSupplier(List<long> icItemIds, long tenantId, long factoryid)
+        private List<mo_ic_item_pur> GetSupplier(List<long> icItemIds, long tenantId, long factoryid)
         {
             return _ic_item_pur.Find(p => icItemIds.Contains(p.icitem_id) && p.tenant_id == tenantId && p.factory_id == factoryid && !p.IsDeleted).Result;
         }
 
         //根据物料id获取物料采购计划表
-        private List<ic_plan> GetICPlan(List<long> icItemIds, long tenantId, long factoryid)
+        private List<mo_ic_plan> GetICPlan(List<long> icItemIds, long tenantId, long factoryid)
         {
             return _ic_plan.Find(p => icItemIds.Contains(p.icitem_id) && p.tenant_id == tenantId && p.factory_id == factoryid && !p.IsDeleted).Result;
         }
@@ -701,7 +702,7 @@ namespace Business.ResourceExamineManagement
                             {
                                 //在途满足,写占用表
                                 itemlist.Add(new ICItemDateDto { item_id = itemPO[i].icitem_id.Value, dateTime = itemPO[i].rarrdate });
-                                srm_po_occupy po_Occupy = new srm_po_occupy();
+                                mo_srm_po_occupy po_Occupy = new mo_srm_po_occupy();
                                 po_Occupy.GenerateNewId();
                                 po_Occupy.polist_id = itemPO[i].po_id;//采购订单id
                                 po_Occupy.polist_row = itemPO[i].polist_row;//采购订单行号
@@ -724,7 +725,7 @@ namespace Business.ResourceExamineManagement
                             {
                                 //不满足逐步扣减
                                 itemPOQty = itemPOQty + itemPO[i].qty - itemPO[i].esqty;
-                                srm_po_occupy po_Occupy = new srm_po_occupy();
+                                mo_srm_po_occupy po_Occupy = new mo_srm_po_occupy();
                                 po_Occupy.GenerateNewId();
                                 po_Occupy.polist_id = itemPO[i].po_id;//采购订单id
                                 po_Occupy.polist_row = itemPO[i].polist_row;//采购订单行号
@@ -806,9 +807,9 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         /// <param name="returnlist"></param>
         /// <param name="factoryid"></param>
-        private mes_oorder CreateMesOOder(BomChildExamineDto returnlist, long tenantId, long factoryid, long bangId, List<ICItemLeadTimeDto> iCItemLeadTimes, List<ic_item_pur> supplierList, DateTime deliveryDate)
+        private mo_mes_oorder CreateMesOOder(BomChildExamineDto returnlist, long tenantId, long factoryid, long bangId, List<ICItemLeadTimeDto> iCItemLeadTimes, List<ic_item_pur> supplierList, DateTime deliveryDate)
         {
-            mes_oorder oOrder = new mes_oorder();
+            mo_mes_oorder oOrder = new mo_mes_oorder();
             oOrder.GenerateNewId();
             oOrder.oorder_no = getOrderNum("WW");//生产工单编号
             oOrder.oorder_type = "委外工单";//生产工单类型
@@ -917,7 +918,7 @@ namespace Business.ResourceExamineManagement
         private SRMPRDto CreateSRMPR(BomChildExamineDto returnlist, long tenantId, long factoryid, long bangId, int orderType, List<ICItemLeadTimeDto> iCItemLeadTimes, List<ic_item_pur> supplierList, List<ic_plan> planList, DateTime deliveryDate)
         {
             SRMPRDto sRMPR = new SRMPRDto();
-            srm_pr_main srm_Pr = new srm_pr_main();
+            mo_srm_pr_main srm_Pr = new mo_srm_pr_main();
             var leadTime = iCItemLeadTimes.Find(x => x.item_id == returnlist.item_id);
             var supplier = supplierList.Find(x => x.icitem_id == returnlist.item_id);//默认取第一个供应商
             var plan = planList.Find(x => x.icitem_id == returnlist.item_id);

+ 4 - 0
MicroServices/Business/Business.Core/Enum/MorderEnum.cs

@@ -68,5 +68,9 @@ namespace Business.Core.Enum
         /// 关闭
         /// </summary>
         public const string Close_state = "关闭";
+        /// <summary>
+        /// 资源检查
+        /// </summary>
+        public const string Zyjc_Type = "资源检查";
     }
 }

+ 10 - 0
MicroServices/Business/Bussiness.MongoModel/Base/MoBaseEntity.cs

@@ -11,11 +11,21 @@ using Volo.Abp.Domain.Entities.Auditing;
 using Volo.Abp.Domain.Entities;
 using Microsoft.EntityFrameworkCore;
 using MongoDB.Bson.Serialization.Attributes;
+using Business.Core.Utilities;
 
 namespace Bussiness.MongoModel
 {
     public abstract class MoBaseEntity 
     {
+        /// <summary>
+        /// 生成新的mysqlId
+        /// </summary>
+        public void GenerateNewId()
+        {
+            SnowFlake snow = new SnowFlake();
+            mysql_id = snow.NextId();
+        }
+
         /// <summary>
         /// mongodb表id
         /// </summary>