Procházet zdrojové kódy

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

# Conflicts:
#	MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs
#	MicroServices/Business/Business.Host/Migrations/BusinessMigrationDbContextModelSnapshot.cs
tangdi před 2 roky
rodič
revize
3a1366a739
52 změnil soubory, kde provedl 6210 přidání a 655 odebrání
  1. 0 3
      MicroServices/Business/Business.Application/Quartz/ExtJobService.cs
  2. 1 1
      MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs
  3. 33 324
      MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs
  4. 238 1
      MicroServices/Business/Business.Application/SaleForecastManagement/MonthlyCapacityLoadAppService.cs
  5. 1 0
      MicroServices/Business/Business.Core/Business.Core.csproj
  6. 411 0
      MicroServices/Business/Business.Core/Utilities/Encrypt.cs
  7. 70 0
      MicroServices/Business/Business.Core/Utilities/StringExtensions.cs
  8. 101 0
      MicroServices/Business/Business.Domain/MoBaseEntity.cs
  9. 23 0
      MicroServices/Business/Business.Domain/User.cs
  10. 0 8
      MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/BusinessDbContextModelCreatingExtensions.cs
  11. 30 1
      MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/DOP/BusinessDbContext.cs
  12. 2 0
      MicroServices/Business/Business.Host/Business.Host.csproj
  13. 17 9
      MicroServices/Business/Business.Host/BusinessHostModule.cs
  14. 4489 0
      MicroServices/Business/Business.Host/Migrations/20230619062335_AddIndex.Designer.cs
  15. 297 0
      MicroServices/Business/Business.Host/Migrations/20230619062335_AddIndex.cs
  16. 61 132
      MicroServices/Business/Business.Host/Migrations/BusinessMigrationDbContextModelSnapshot.cs
  17. 1 0
      MicroServices/Business/Business.Host/Program.cs
  18. 2 0
      MicroServices/Business/Business.Host/Startup.cs
  19. 9 9
      MicroServices/Business/Business.Host/appsettings.json
  20. 6 0
      MicroServices/Business/Business.sln
  21. 0 9
      MicroServices/Business/Bussiness.Model/Base/BaseEntity.cs
  22. 91 0
      MicroServices/Business/Bussiness.Model/MES/IC/GeneralizedCodeMaster.cs
  23. 1 9
      MicroServices/Business/Bussiness.Model/MES/IC/ic_bom.cs
  24. 1 4
      MicroServices/Business/Bussiness.Model/MES/IC/ic_bom_child.cs
  25. 1 2
      MicroServices/Business/Bussiness.Model/MES/IC/ic_item.cs
  26. 0 100
      MicroServices/Business/Bussiness.Model/MES/IC/ic_item_inventory.cs
  27. 20 9
      MicroServices/Business/Bussiness.Model/MES/IC/ic_item_stock.cs
  28. 18 9
      MicroServices/Business/Bussiness.Model/MES/IC/ic_item_stockoccupy.cs
  29. 6 0
      MicroServices/Business/Bussiness.Model/MES/IC/ic_substitute_group_detail.cs
  30. 11 0
      MicroServices/Business/Bussiness.Model/Production/MonthlyProdCapacityDtl.cs
  31. 12 1
      MicroServices/Business/Bussiness.Model/Production/MonthlyProdCapacityMain.cs
  32. 7 1
      MicroServices/Business/Bussiness.Model/Production/OverallDemandPlanDtl.cs
  33. 58 0
      MicroServices/Business/Bussiness.Model/Production/StandardItemModelSet.cs
  34. 1 0
      MicroServices/Business/Bussiness.Model/SRM/srm_po_list.cs
  35. 1 0
      MicroServices/Business/Bussiness.Model/SRM/srm_po_main.cs
  36. 1 2
      MicroServices/Business/Bussiness.Model/SRM/srm_pr_main.cs
  37. 9 2
      MicroServices/Business/Bussiness.Model/SRM/srm_purchase.cs
  38. 1 0
      MicroServices/Business/Bussiness.Model/SRM/srm_supplier.cs
  39. 1 2
      MicroServices/Business/Bussiness.Model/Sale/crm_customer.cs
  40. 1 1
      MicroServices/Business/Bussiness.Model/Sale/crm_seorder.cs
  41. 1 1
      MicroServices/Business/Bussiness.Model/Sale/crm_seorderentry.cs
  42. 27 0
      MicroServices/Business/Bussiness.MongoDB/BusinessMongoDbContextModelCreatingExtensions.cs
  43. 19 0
      MicroServices/Business/Bussiness.MongoDB/Bussiness.MongoDB.csproj
  44. 22 0
      MicroServices/Business/Bussiness.MongoDB/BussinessMongoDbContext.cs
  45. 37 0
      MicroServices/Business/Bussiness.MongoDB/BussinessMongoDbModule.cs
  46. 16 0
      MicroServices/Business/Bussiness.MongoDB/MongoDbConsts.cs
  47. 0 9
      MicroServices/Business/Bussiness.MongoModel/Base/MoBaseEntity.cs
  48. 17 6
      MicroServices/Business/Bussiness.MongoModel/MES/IC/mo_ic_item_stock.cs
  49. 14 0
      MicroServices/Business/Bussiness.MongoModel/MES/IC/mo_ic_item_stockoccupy.cs
  50. 15 0
      MicroServices/Business/Bussiness.MongoModel/MES/IC/mo_ic_substitute_group_detail.cs
  51. 8 0
      MicroServices/Business/Bussiness.MongoModel/SRM/mo_srm_purchase.cs
  52. 1 0
      MicroServices/Business/QuartzSettings/task_job.json

+ 0 - 3
MicroServices/Business/Business.Application/Quartz/ExtJobService.cs

@@ -19,7 +19,6 @@ namespace Business.Quartz
         SnowFlake help = new SnowFlake();
         private IRepository<in_kd_material, long> _kd_material;
         private IRepository<ic_item, long> _ic_item;
-        private IRepository<ic_item_inventory, long> _ic_item_inventory;
         private IRepository<srm_purchase, long> _srm_purchase;
         private IRepository<ic_item_stock, long> _ic_item_stock;
 
@@ -40,7 +39,6 @@ namespace Business.Quartz
         public ExtJobService(
          IRepository<in_kd_material, long> kd_material,
          IRepository<ic_item, long> ic_item,
-         IRepository<ic_item_inventory, long> ic_item_inventory,
          IRepository<srm_purchase, long> srm_purchase,
          IRepository<ic_item_stock, long> ic_item_stock,
          IRepository<in_kd_bom, long> kd_bom,
@@ -56,7 +54,6 @@ namespace Business.Quartz
         {
             _kd_material= kd_material;
             _ic_item= ic_item;
-            _ic_item_inventory = ic_item_inventory;
             _srm_purchase = srm_purchase;
             _ic_item_stock = ic_item_stock;
             _kd_bom = kd_bom;

+ 1 - 1
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -1266,7 +1266,7 @@ namespace Business.ResourceExamineManagement
         {
             mo_mes_oorder oOrder = new mo_mes_oorder();
             oOrder.id = help.NextId();
-            oOrder.GenerateNewId();
+            oOrder.mysql_id=help.NextId();
             oOrder.oorder_no = getOrderNum("WW");//生产工单编号
             oOrder.oorder_type = "委外工单";//生产工单类型
             oOrder.oorder_date = DateTime.Now;//委外订单日期

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

@@ -1,8 +1,8 @@
 using Business.Core.Enum;
 using Business.Core.MongoDBHelper;
 using Business.Core.Utilities;
+using Business.Dto;
 using Business.EntityFrameworkCore;
-using Business.ResourceExamineManagement.Dto;
 using Business.EntityFrameworkCore.SqlRepositories;
 using Business.Model.Bang;
 using Business.Model.MES.IC;
@@ -14,10 +14,15 @@ using Business.MongoModel.MES.IC;
 using Business.MongoModel.Production;
 using Business.MongoModel.SRM;
 using Business.MongoModel.Tech;
+using Business.PriorityManagement;
+using Business.Quartz;
+using Business.ResourceExamineManagement.Dto;
+using EFCore.BulkExtensions;
 using Microsoft.EntityFrameworkCore;
 using MongoDB.Driver;
 using MongoDB.Driver.Linq;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -27,14 +32,8 @@ using Volo.Abp.Application.Services;
 using Volo.Abp.DependencyInjection;
 using Volo.Abp.Domain.Repositories;
 using Volo.Abp.MultiTenancy;
-using EFCore.BulkExtensions;
-using Business.Quartz;
-using MongoDB.Bson.Serialization.Attributes;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.ComponentModel.DataAnnotations;
-using System.Diagnostics.CodeAnalysis;
-using System.Diagnostics;
 using Volo.Abp.Uow;
+<<<<<<< HEAD
 using Spire.Pdf.Exporting.XPS.Schema;
 using Business.PriorityManagement;
 using Newtonsoft.Json.Linq;
@@ -54,6 +53,8 @@ using System.Runtime.Serialization.Formatters.Binary;
 using System.Drawing.Drawing2D;
 using Spire.Pdf.Lists;
 using System.Globalization;
+=======
+>>>>>>> 77f337b0a4bd0a0ff4f2e65d6a9dfd2ee3c0997c
 
 namespace Business.ResourceExamineManagement
 {
@@ -310,6 +311,7 @@ namespace Business.ResourceExamineManagement
         private ISqlRepository<PurOrdMaster> _purOrdMaster;
         private ISqlRepository<PurOrdDetail> _purOrdDetail;
         private ISqlRepository<ItemPackMaster> _itemPackMaster;
+        private ISqlRepository<GeneralizedCodeMaster> _generalizedCodeMaster;
         /// <summary>
         /// 生产排产
         /// </summary>
@@ -444,6 +446,7 @@ namespace Business.ResourceExamineManagement
             ISqlRepository<rf_serialnumber> rf_serialnumber,
             ISqlRepository<LocationDetail> locationDetail,
             ISqlRepository<ItemPackMaster> itemPackMaster,
+            ISqlRepository<GeneralizedCodeMaster> generalizedCodeMaster,
             IUnitOfWorkManager unitOfWorkManager
             )
         {
@@ -524,6 +527,7 @@ namespace Business.ResourceExamineManagement
             _productExamineAppService = productExamineAppService;
             _locationDetail = locationDetail;
             _itemPackMaster = itemPackMaster;
+            _generalizedCodeMaster = generalizedCodeMaster;
             _unitOfWorkManager = unitOfWorkManager;
         }
         #endregion
@@ -1804,16 +1808,25 @@ namespace Business.ResourceExamineManagement
             var zcPr = list.Where(a => a.pr_billno.StartsWith("PR")).ToList();
             if (zcPr.Any())
             {
-                AutoCreateZCPOFromPR(zcPr, bangid, icitemlist, itemsupplierList, poaction);
+                AutoCreatePOFromPRByType(zcPr, bangid, icitemlist, itemsupplierList, poaction,1);
             }
 
             var wwPr = list.Where(a => a.pr_billno.StartsWith("WWPR")).ToList();
             if (wwPr.Any())
             {
-                AutoCreateWWPOFromPR(wwPr, bangid, icitemlist, itemsupplierList, poaction);
+                AutoCreatePOFromPRByType(wwPr, bangid, icitemlist, itemsupplierList, poaction,2);
             }
         }
-        private void AutoCreateZCPOFromPR(List<mo_srm_pr_main> list, long bangid, List<mo_ic_item> itemList, List<mo_srm_supplier> itemsupplierList, PoActionListDto poaction)
+        /// <summary>
+        /// 根据PR生成PO
+        /// </summary>
+        /// <param name="list"></param>
+        /// <param name="bangid"></param>
+        /// <param name="itemList"></param>
+        /// <param name="itemsupplierList"></param>
+        /// <param name="poaction"></param>
+        /// <param name="poType">1正常PO,2是委外</param>
+        private void AutoCreatePOFromPRByType(List<mo_srm_pr_main> list, long bangid, List<mo_ic_item> itemList, List<mo_srm_supplier> itemsupplierList, PoActionListDto poaction,int poType)
         {
             List<mo_srm_po_main> polist = new List<mo_srm_po_main>();
             List<mo_srm_po_list> podetaillist = new List<mo_srm_po_list>();
@@ -1824,7 +1837,7 @@ namespace Business.ResourceExamineManagement
             list = list.OrderBy(a => a.pr_purchaseid).ThenBy(b => b.pr_rarrive_date).ToList();
             long? supplierId = -1;
             DateTime supplierDate = DateTime.Now;
-            foreach (mo_srm_pr_main item in list)
+            foreach (var item in list)
             {
                 mo_srm_po_occupy srm_Po_Occupy = new mo_srm_po_occupy();
                 srm_Po_Occupy.id = help.NextId();
@@ -1841,7 +1854,7 @@ namespace Business.ResourceExamineManagement
                     mo_srm_po_main po_Main = new mo_srm_po_main();
                     po_Main.id = help.NextId();
                     po_Main.mysql_id = help.NextId();
-                    po_Main.po_billno = GetMaxSerialNumber(416188684804165);
+                    po_Main.po_billno = poType==1? GetMaxSerialNumber(416188684804165) : GetMaxSerialNumber(416555323363397);
                     po_Main.po_purchaser = item.pr_purchaser;
                     po_Main.po_purchaser_no = item.pr_purchaser_num;
                     po_Main.po_ssend_date = DateTime.Now;
@@ -1852,7 +1865,7 @@ namespace Business.ResourceExamineManagement
                     po_Main.po_note = "PR自动转PO";
                     po_Main.po_order_type = 1;
                     po_Main.currency = item.currencytype;
-                    po_Main.bill_type = 1;
+                    po_Main.bill_type = poType;
                     po_Main.supplier_id = item.pr_purchaseid;
                     po_Main.supplier_name = item.pr_purchasename;
                     po_Main.supplier_no = item.pr_purchasenumber;
@@ -1965,8 +1978,8 @@ namespace Business.ResourceExamineManagement
                             podetail.factory_id = param.factoryId;
                             podetail.tenant_id = param.tenantId;
                             podetail.bang_id = bangid;
-                            podetaillist.Add(podetail);
                             podetail.stock_id = 1;
+                            podetaillist.Add(podetail);
 
                             srm_Po_Occupy.polist_id = podetail.mysql_id;
                             srm_Po_Occupy.polist_row = podetail.polist_row;
@@ -1985,7 +1998,7 @@ namespace Business.ResourceExamineManagement
                         mo_srm_po_main po_Main = new mo_srm_po_main();
                         po_Main.id = help.NextId();
                         po_Main.mysql_id = help.NextId();
-                        po_Main.po_billno = GetMaxSerialNumber(416188684804165);
+                        po_Main.po_billno = poType == 1 ? GetMaxSerialNumber(416188684804165) : GetMaxSerialNumber(416555323363397);
                         po_Main.po_purchaser = item.pr_purchaser;
                         po_Main.po_purchaser_no = item.pr_purchaser_num;
                         po_Main.po_ssend_date = DateTime.Now;
@@ -1996,7 +2009,7 @@ namespace Business.ResourceExamineManagement
                         po_Main.po_note = "PR自动转PO";
                         po_Main.po_order_type = 1;
                         po_Main.currency = item.currencytype;
-                        po_Main.bill_type = 1;
+                        po_Main.bill_type = poType;
                         po_Main.supplier_id = item.pr_purchaseid;
                         po_Main.supplier_name = item.pr_purchasename;
                         po_Main.supplier_no = item.pr_purchasenumber;
@@ -2078,7 +2091,7 @@ namespace Business.ResourceExamineManagement
                 purOrdMasters.Add(new PurOrdMaster
                 {
                     Domain = "1001",
-                    Potype = "po",
+                    Potype = poType==1?"po":"pw",
                     PurOrd = a.po_billno,
                     Buyer = a.po_purchaser,
                     OrdDate = a.po_ssend_date,
@@ -2100,7 +2113,7 @@ namespace Business.ResourceExamineManagement
                 purOrdDetails.Add(new PurOrdDetail
                 {
                     Domain = "1001",
-                    Potype = "po",
+                    Potype = poType == 1 ? "po" : "pw",
                     PurOrd = a.po_billno,
                     IsActive = true,
                     CreateTime = a.create_time,
@@ -2117,310 +2130,6 @@ namespace Business.ResourceExamineManagement
             });
             poaction.poDetailList.AddRange(purOrdDetails);
         }
-        private void AutoCreateWWPOFromPR(List<mo_srm_pr_main> list, long bangid, List<mo_ic_item> itemList, List<mo_srm_supplier> itemsupplierList, PoActionListDto poaction)
-        {
-            List<mo_srm_po_main> polist = new List<mo_srm_po_main>();
-            List<mo_srm_po_list> podetaillist = new List<mo_srm_po_list>();
-            //var itemList = _ic_item.Find(a => a.tenant_id == input.tenantId && a.factory_id == input.factoryId).Result;
-            //将PR按供应商和物料和日期(一周内)进行合并,生成PO
-            //1.按照供应商、需求日期排序
-            //2.判断是不是同一个供应商,不是的话就新建一个PO;是的话判断是不是同一周,不是的话就新建一个PO,是的话判断有没有相同物料,有的话合并物料数量价格,没有的话新建一条明细
-            list = list.OrderBy(a => a.pr_purchaseid).ThenBy(b => b.pr_rarrive_date).ToList();
-            long? supplierId = -1;
-            DateTime supplierDate = DateTime.Now;
-            foreach (var item in list)
-            {
-                mo_srm_po_occupy srm_Po_Occupy = new mo_srm_po_occupy();
-                srm_Po_Occupy.id = help.NextId();
-                srm_Po_Occupy.mysql_id = help.NextId();
-                srm_Po_Occupy.bang_id = bangid;
-                srm_Po_Occupy.morder_mo = item.pr_mono;
-                srm_Po_Occupy.qty = item.pr_aqty;
-                srm_Po_Occupy.eid = item.sentry_id;
-
-                if (item.pr_purchaseid != supplierId)
-                {
-                    var itemsupplier = itemsupplierList.Find(a => a.mysql_id == item.pr_purchaseid && a.tenant_id == param.tenantId && a.factory_id == param.factoryId);
-                    //新建一个PO
-                    mo_srm_po_main po_Main = new mo_srm_po_main();
-                    po_Main.id = help.NextId();
-                    po_Main.mysql_id = help.NextId();
-                    po_Main.po_billno = GetMaxSerialNumber(416555323363397);//WWPO
-                    po_Main.po_purchaser = item.pr_purchaser;
-                    po_Main.po_purchaser_no = item.pr_purchaser_num;
-                    po_Main.po_ssend_date = DateTime.Now;
-                    po_Main.po_total = item.pr_orderprice;
-                    po_Main.po_tax_rate = item.pr_rate;
-                    po_Main.po_express = 1;
-                    po_Main.state = 0;
-                    po_Main.po_note = "PR自动转PO";
-                    po_Main.po_order_type = 1;
-                    po_Main.currency = item.currencytype;
-                    po_Main.bill_type = 2;
-                    po_Main.supplier_id = item.pr_purchaseid;
-                    po_Main.supplier_name = item.pr_purchasename;
-                    po_Main.supplier_no = item.pr_purchasenumber;
-                    po_Main.contact = itemsupplier is null ? "" : itemsupplier.contact;
-                    po_Main.suppliertelephone = itemsupplier is null ? "" : itemsupplier.telephone;
-                    po_Main.deliveryaddress = "";
-                    po_Main.supplierdddress = itemsupplier is null ? "" : itemsupplier.supplier_address;
-                    po_Main.confirmstate = 1;
-                    po_Main.logisticsstate = 0;
-                    po_Main.financialstate = 0;
-                    po_Main.create_time = DateTime.Now;
-                    po_Main.factory_id = param.factoryId;
-                    po_Main.tenant_id = param.tenantId;
-                    po_Main.bang_id = bangid;
-                    po_Main.po_delivery = 1;
-                    polist.Add(po_Main);
-
-                    mo_srm_po_list podetail = new mo_srm_po_list();
-                    podetail.id = help.NextId();
-                    podetail.mysql_id = help.NextId();
-                    podetail.po_id = po_Main.mysql_id;
-                    podetail.po_billno = po_Main.po_billno;
-                    podetail.polist_row = podetaillist.Where(a => a.po_billno == po_Main.po_billno).Count() + 1;
-                    podetail.pr_id = item.mysql_id;
-                    podetail.pr_billno = item.pr_billno;
-                    podetail.pr_purchase_id = po_Main.supplier_id;
-                    podetail.pr_purchase_name = po_Main.supplier_name;
-                    podetail.icitem_id = item.icitem_id;
-                    podetail.ItemNum = itemList.First(a => a.mysql_id == item.icitem_id).number;
-                    podetail.icitem_name = item.icitem_name;
-                    podetail.qty = item.pr_aqty;
-                    podetail.netprice = item.pr_price;
-                    podetail.rate = item.pr_rate;
-                    podetail.price = item.pr_orderprice / item.pr_aqty;
-                    podetail.total_price = item.pr_orderprice;
-                    podetail.plan_qty = item.pr_aqty;
-                    podetail.unit = item.pr_unit;
-                    podetail.state = item.state;
-                    podetail.rarrdate = item.pr_rarrive_date;
-                    podetail.rnumber = 0;
-                    podetail.currencytype = item.currencytype;
-                    podetail.create_time = DateTime.Now;
-                    podetail.factory_id = param.factoryId;
-                    podetail.tenant_id = param.tenantId;
-                    podetail.bang_id = bangid;
-                    podetail.stock_id = 1;
-                    podetaillist.Add(podetail);
-
-                    srm_Po_Occupy.polist_id = podetail.mysql_id;
-                    srm_Po_Occupy.polist_row = podetail.polist_row;
-                    srm_Po_Occupy.type = MorderEnum.Zyjc_Type;//TODO:类型未知
-                    srm_Po_Occupy.stime = podetail.create_time;
-                    srm_Po_Occupy.etime = podetail.rarrdate;
-
-                    supplierId = item.pr_purchaseid;
-                    supplierDate = item.pr_rarrive_date.Value;
-                }
-                else
-                {
-                    //同一个供应商先判断需求日期是否在同一周
-                    if (IsSameWeek(supplierDate, item.pr_rarrive_date.Value))
-                    {
-                        var pomain = polist.FindAll(x => x.supplier_id == item.pr_purchaseid).OrderByDescending(b => b.create_time).First();
-                        List<mo_srm_po_list> detail = podetaillist.FindAll(a => a.po_billno == pomain.po_billno && a.icitem_id == item.icitem_id);
-                        if (detail.Count > 0)
-                        {
-                            //TODO:只能记录一条PR,可能需要先合PR
-                            //存在同一种物料,存在就计算数量和价格,
-                            detail[0].qty = detail[0].qty + item.pr_aqty;
-                            detail[0].netprice = detail[0].netprice + item.pr_price;
-                            detail[0].total_price = detail[0].total_price + item.pr_orderprice;
-                            detail[0].plan_qty = detail[0].plan_qty + item.pr_aqty;
-                            detail[0].rarrdate = item.pr_rarrive_date;
-                            pomain.po_total = pomain.po_total + item.pr_orderprice;
-
-                            srm_Po_Occupy.polist_id = detail[0].mysql_id;
-                            srm_Po_Occupy.polist_row = detail[0].polist_row;
-                            srm_Po_Occupy.type = MorderEnum.Zyjc_Type;//TODO:类型未知
-                            srm_Po_Occupy.stime = detail[0].create_time;
-                            srm_Po_Occupy.etime = detail[0].rarrdate;
-                        }
-                        else
-                        {
-                            //不存在同一种物料新增一条明细
-                            mo_srm_po_list podetail = new mo_srm_po_list();
-                            podetail.id = help.NextId();
-                            podetail.mysql_id = help.NextId();
-                            podetail.po_id = pomain.mysql_id;
-                            podetail.po_billno = pomain.po_billno;
-                            podetail.polist_row = podetaillist.Where(a => a.po_billno == pomain.po_billno).Count() + 1;
-                            podetail.pr_id = item.mysql_id;
-                            podetail.pr_billno = item.pr_billno;
-                            podetail.pr_purchase_id = pomain.supplier_id;
-                            podetail.pr_purchase_name = pomain.supplier_name;
-                            podetail.icitem_id = item.icitem_id;
-                            podetail.ItemNum = itemList.First(a => a.mysql_id == item.icitem_id).number;
-                            podetail.icitem_name = item.icitem_name;
-                            podetail.qty = item.pr_aqty;
-                            podetail.netprice = item.pr_price;
-                            podetail.rate = item.pr_rate;
-                            podetail.price = item.pr_orderprice / item.pr_aqty;
-                            podetail.total_price = item.pr_orderprice;
-                            podetail.plan_qty = item.pr_aqty;
-                            podetail.unit = item.pr_unit;
-                            podetail.state = item.state;
-                            podetail.rarrdate = item.pr_rarrive_date;
-                            podetail.rnumber = 0;
-                            podetail.currencytype = item.currencytype;
-                            podetail.create_time = DateTime.Now;
-                            podetail.factory_id = param.factoryId;
-                            podetail.tenant_id = param.tenantId;
-                            podetail.bang_id = bangid;
-                            podetail.stock_id = 1;
-                            podetaillist.Add(podetail);
-                            pomain.po_total = pomain.po_total + item.pr_orderprice;
-
-                            srm_Po_Occupy.polist_id = podetail.mysql_id;
-                            srm_Po_Occupy.polist_row = podetail.polist_row;
-                            srm_Po_Occupy.type = MorderEnum.Zyjc_Type;//TODO:类型未知
-                            srm_Po_Occupy.stime = podetail.create_time;
-                            srm_Po_Occupy.etime = podetail.rarrdate;
-                        }
-
-                    }
-                    else
-                    {
-                        //不在同一周需要新建一张PO
-                        var itemsupplier = itemsupplierList.Find(a => a.mysql_id == item.pr_purchaseid && a.tenant_id == param.tenantId && a.factory_id == param.factoryId);
-                        //新建一个PO单
-                        mo_srm_po_main po_Main = new mo_srm_po_main();
-                        po_Main.id = help.NextId();
-                        po_Main.mysql_id = help.NextId();
-                        po_Main.po_billno = GetMaxSerialNumber(416555323363397);
-                        po_Main.po_purchaser = item.pr_purchaser;
-                        po_Main.po_purchaser_no = item.pr_purchaser_num;
-                        po_Main.po_ssend_date = DateTime.Now;
-                        po_Main.po_total = item.pr_orderprice;
-                        po_Main.po_tax_rate = item.pr_rate;
-                        po_Main.po_express = 1;
-                        po_Main.state = 0;
-                        po_Main.po_note = "PR自动转PO";
-                        po_Main.po_order_type = 1;
-                        po_Main.currency = item.currencytype;
-                        po_Main.bill_type = 2;
-                        po_Main.supplier_id = item.pr_purchaseid;
-                        po_Main.supplier_name = item.pr_purchasename;
-                        po_Main.supplier_no = item.pr_purchasenumber;
-                        po_Main.contact = itemsupplier is null ? "" : itemsupplier.contact;
-                        po_Main.suppliertelephone = itemsupplier is null ? "" : itemsupplier.telephone;
-                        po_Main.deliveryaddress = "";
-                        po_Main.supplierdddress = itemsupplier is null ? "" : itemsupplier.supplier_address;
-                        po_Main.confirmstate = 1;
-                        po_Main.logisticsstate = 0;
-                        po_Main.financialstate = 0;
-                        po_Main.create_time = DateTime.Now;
-                        po_Main.factory_id = param.factoryId;
-                        po_Main.tenant_id = param.tenantId;
-                        po_Main.bang_id = bangid;
-                        po_Main.po_delivery = 1;
-                        polist.Add(po_Main);
-
-                        mo_srm_po_list podetail = new mo_srm_po_list();
-                        podetail.id = help.NextId();
-                        podetail.mysql_id = help.NextId();
-                        podetail.po_id = po_Main.mysql_id;
-                        podetail.po_billno = po_Main.po_billno;
-                        podetail.polist_row = podetaillist.Where(a => a.po_billno == po_Main.po_billno).Count() + 1;
-                        podetail.pr_id = item.mysql_id;
-                        podetail.pr_billno = item.pr_billno;
-                        podetail.pr_purchase_id = po_Main.supplier_id;
-                        podetail.pr_purchase_name = po_Main.supplier_name;
-                        podetail.icitem_id = item.icitem_id;
-                        podetail.ItemNum = itemList.First(a => a.mysql_id == item.icitem_id).number;
-                        podetail.icitem_name = item.icitem_name;
-                        podetail.qty = item.pr_aqty;
-                        podetail.netprice = item.pr_price;
-                        podetail.rate = item.pr_rate;
-                        podetail.price = item.pr_orderprice / item.pr_aqty;
-                        podetail.total_price = item.pr_orderprice;
-                        podetail.plan_qty = item.pr_aqty;
-                        podetail.unit = item.pr_unit;
-                        podetail.state = item.state;
-                        podetail.rarrdate = item.pr_rarrive_date;
-                        podetail.rnumber = 0;
-                        podetail.currencytype = item.currencytype;
-                        podetail.create_time = DateTime.Now;
-                        podetail.factory_id = param.factoryId;
-                        podetail.tenant_id = param.tenantId;
-                        podetail.bang_id = bangid;
-                        podetail.stock_id = 1;
-                        podetaillist.Add(podetail);
-
-                        srm_Po_Occupy.polist_id = podetail.mysql_id;
-                        srm_Po_Occupy.polist_row = podetail.polist_row;
-                        srm_Po_Occupy.type = MorderEnum.Zyjc_Type;//TODO:类型未知
-                        srm_Po_Occupy.stime = podetail.create_time;
-                        srm_Po_Occupy.etime = podetail.rarrdate;
-
-                        supplierId = item.pr_purchaseid;
-                        supplierDate = item.pr_rarrive_date.Value;
-                    }
-                }
-                srm_Po_Occupy.state = 1;
-                srm_Po_Occupy.tenant_id = param.tenantId;//取销售子表企业ID
-                srm_Po_Occupy.factory_id = param.factoryId;
-                srm_Po_Occupy.create_time = DateTime.Now;
-                srm_Po_Occupy.create_by_name = "admin";
-                srm_Po_Occupy.update_time = DateTime.Now;
-                srm_Po_Occupy.update_by_name = "admin";
-                poaction.poOccupiesList.Add(srm_Po_Occupy);
-            }
-
-            List<srm_po_main> po_mainlist = ObjectMapper.Map<List<mo_srm_po_main>, List<srm_po_main>>(polist);
-            var po_listlist = ObjectMapper.Map<List<mo_srm_po_list>, List<srm_po_list>>(podetaillist);
-
-            poaction.poMain.AddRange(po_mainlist);
-            poaction.polist.AddRange(po_listlist);
-            poaction.mopoMain.AddRange(polist);
-            poaction.mopolist.AddRange(podetaillist);
-            List<PurOrdMaster> purOrdMasters = new List<PurOrdMaster>();
-            po_mainlist.ForEach(a =>
-            {
-                purOrdMasters.Add(new PurOrdMaster
-                {
-                    Domain = "1001",
-                    Potype = "pw",
-                    PurOrd = a.po_billno,
-                    Buyer = a.po_purchaser,
-                    OrdDate = a.po_ssend_date,
-                    Curr = "CNY",
-                    Supp = a.supplier_no,
-                    Tax1 = a.po_tax_rate,
-                    Department = a.purchasing_orgname,
-                    CustPhone = a.suppliertelephone,
-                    CustAddress = a.supplierdddress,
-                    IsActive = true,
-                    CreateTime = a.create_time,
-                    UpdateTime = a.update_time
-                });
-            });
-            poaction.poMasterList.AddRange(purOrdMasters);
-            List<PurOrdDetail> purOrdDetails = new List<PurOrdDetail>();
-            po_listlist.ForEach(a =>
-            {
-                purOrdDetails.Add(new PurOrdDetail
-                {
-                    Domain = "1001",
-                    Potype = "pw",
-                    PurOrd = a.po_billno,
-                    IsActive = true,
-                    CreateTime = a.create_time,
-                    UpdateTime = a.update_time,
-                    Line = a.polist_row,
-                    ItemNum = a.ItemNum,
-                    QtyOrded = a.qty.GetValueOrDefault(),
-                    QtyReceived = a.rqty.GetValueOrDefault(),
-                    PurCost = a.price,
-                    StdCost= a.price/(1+ a.rate),
-                    TaxRate = a.rate,
-                    DueDate = a.rarrdate
-                });
-            });
-            poaction.poDetailList.AddRange(purOrdDetails);
-        }
 
         /// <summary>
         /// 计划工单齐套检查
@@ -3366,7 +3075,7 @@ namespace Business.ResourceExamineManagement
                         else
                         {
                             ic_item_stock stock = new ic_item_stock();
-                            stock.GenerateNewId();
+                            stock.GenerateNewId(help.NextId());
                             stock.factory_id = 1001;
                             stock.tenant_id = 1000;
                             stock.icitem_id = num.Id;

+ 238 - 1
MicroServices/Business/Business.Application/SaleForecastManagement/MonthlyCapacityLoadAppService.cs

@@ -1,13 +1,27 @@
 using Abp.Application.Services;
+using Business.Core.Utilities;
 using Business.Dto;
+using Business.EntityFrameworkCore;
+using Business.EntityFrameworkCore.SqlRepositories;
+using Business.Model.MES.IC;
+using Business.Model.Production;
+using Business.Model.SRM;
+using Business.MongoModel.MES.IC;
+using Business.MongoModel.Production;
+using Business.MongoModel.SRM;
 using Business.ResourceExamineManagement;
 using Business.SaleForecast;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+using Microsoft.EntityFrameworkCore.Migrations;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using Volo.Abp.DependencyInjection;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.MultiTenancy;
+using Volo.Abp.Uow;
 
 namespace Business.SaleForecastManagement
 {
@@ -16,6 +30,100 @@ namespace Business.SaleForecastManagement
     /// </summary>
     public class MonthlyCapacityLoadAppService : ApplicationService, IMonthlyCapacityLoadAppService, ITransientDependency
     {
+        #region 服务
+        /// <summary>
+        /// 物料
+        /// </summary>
+        private IRepository<ic_item, long> _ic_item;
+
+        /// <summary>
+        /// 整体需求计划明细
+        /// </summary>
+        private ISqlRepository<OverallDemandPlanDtl> _overallDemandPlanDtl;
+
+        /// <summary>
+        /// 生产线明细
+        /// </summary>
+        private ISqlRepository<ProdLineDetail> _prodLineDetail;
+
+        /// <summary>
+        /// 工作日历数据
+        /// </summary>
+        private ISqlRepository<ShopCalendarWorkCtr> _shopCalendarWorkCtr;
+
+        /// <summary>
+        /// 产线休息时间记录表
+        /// </summary>
+        private ISqlRepository<QualityLineWorkDetail> _qualityLineWorkDetail;
+
+        /// <summary>
+        /// 节假日记录表
+        /// </summary>
+        private ISqlRepository<HolidayMaster> _holidayMaster;
+
+        /// <summary>
+        /// 月度产能共识主表
+        /// </summary>
+        private ISqlRepository<MonthlyProdCapacityMain> _monthlyProdCapacityMain;
+
+        /// <summary>
+        /// 月度产能共识明细表
+        /// </summary>
+        private ISqlRepository<MonthlyProdCapacityDtl> _monthlyProdCapacityDtl;
+
+        /// <summary>
+        /// 标准物料规格型号设置表
+        /// </summary>
+        private ISqlRepository<StandardItemModelSet> _standardItemModelSet;
+
+        /// <summary>
+        /// 工作单元
+        /// </summary>
+        private readonly IUnitOfWorkManager _unitOfWorkManager;
+
+        /// <summary>
+        /// 日志
+        /// </summary>
+        private readonly ICurrentTenant _currentTenant;
+
+        /// <summary>
+        /// 雪花算法
+        /// </summary>
+        SnowFlake help = new SnowFlake();
+        #endregion
+
+        #region 构造函数
+        /// <summary>
+        /// 构造函数
+        /// </summary>
+        public MonthlyCapacityLoadAppService(
+            IRepository<ic_item, long> ic_item,
+            ISqlRepository<OverallDemandPlanDtl> overallDemandPlanDtl,
+            ISqlRepository<ProdLineDetail> prodLineDetail,
+            ISqlRepository<ShopCalendarWorkCtr> shopCalendarWorkCtr,
+            ISqlRepository<QualityLineWorkDetail> qualityLineWorkDetail,
+            ISqlRepository<HolidayMaster> holidayMaster,
+            ISqlRepository<MonthlyProdCapacityMain> monthlyProdCapacityMain,
+            ISqlRepository<MonthlyProdCapacityDtl> monthlyProdCapacityDtl,
+            IUnitOfWorkManager unitOfWorkManager,
+            ICurrentTenant currentTenant,
+            ISqlRepository<StandardItemModelSet> standardItemModelSet
+            ) 
+        { 
+            _ic_item= ic_item;
+            _overallDemandPlanDtl= overallDemandPlanDtl;
+            _prodLineDetail= prodLineDetail;
+            _shopCalendarWorkCtr= shopCalendarWorkCtr;
+            _qualityLineWorkDetail= qualityLineWorkDetail;
+            _holidayMaster= holidayMaster;
+            _monthlyProdCapacityMain= monthlyProdCapacityMain;
+            _monthlyProdCapacityDtl= monthlyProdCapacityDtl;
+            _unitOfWorkManager= unitOfWorkManager;
+            _currentTenant= currentTenant;
+            _standardItemModelSet= standardItemModelSet;
+        }
+        #endregion
+
         /// <summary>
         /// 产能分析
         /// </summary>
@@ -24,7 +132,136 @@ namespace Business.SaleForecastManagement
         /// <exception cref="NotImplementedException"></exception>
         public async Task<string> CapacityAnalysis(InputDto input)
         {
-            return "ok";
+            //1、获取数据
+            //1.1 根据年、月、版本号获取整体需求计划明细
+            List<OverallDemandPlanDtl> planDtls = _overallDemandPlanDtl.Select(p=>p.Year == input.year && p.Month == input.month && p.Version == input.version && p.tenant_id == input.tenant_id && p.factory_id == input.factory_id).OrderBy(p=>p.ProdLine).ThenBy(p=>p.ProdRange).ThenBy(p=>p.Model).ThenBy(p=>p.PlanDate).ToList();
+            //1.2 根据规格型号获取物料数据
+            List<string> models = planDtls.Select(p => p.Model).Distinct().ToList();
+            List<StandardItemModelSet> standards = _standardItemModelSet.Select(p=> models.Contains(p.Model) && p.tenant_id == input.tenant_id && p.factory_id == input.factory_id);
+            //1.3 根据物料编码获取产线数据
+            List<ProdLineDetail> lines = _prodLineDetail.Select(p => standards.Select(m => m.ItemNumber).Contains(p.Part) && p.Domain == input.factory_id.ToString() && p.IsActive);
+            //1.4 根据产线获取工作日历数据和产线休息配置数据
+            List<ShopCalendarWorkCtr> calendars = _shopCalendarWorkCtr.Select(p=> lines.Select(m=>m.Line).Contains(p.ProdLine) && p.Domain == input.factory_id.ToString() && p.IsActive);
+            List<QualityLineWorkDetail> lineWorks = _qualityLineWorkDetail.Select(p => lines.Select(m => m.Line).Contains(p.ProdLine) && p.Domain == input.factory_id.ToString() && p.IsActive);
+            //1.5 获取当前年和下一年的节假日配置数据
+            List<HolidayMaster> holidays = _holidayMaster.Select(p => (p.Dated.Value.Year == input.year || p.Dated.Value.Year == (input.year + 1)) && p.Domain == input.factory_id.ToString() && p.IsActive);
+
+            //月度产能共识主表
+            List<MonthlyProdCapacityMain> capacityMains = new List<MonthlyProdCapacityMain>();
+            //月度产能共识明细表
+            List<MonthlyProdCapacityDtl> capacityDtls = new List<MonthlyProdCapacityDtl>();
+            foreach (var item in planDtls)
+            {
+                //获取当前产品的生产线
+                var std = standards.FirstOrDefault(p => p.Model == item.Model);
+                if (std == null)
+                {
+                    new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("CapacityAnalysis", "规格型号【" + item.Model + "】没有维护标准物料数据", _currentTenant.Id.ToString());
+                    return "NO|规格型号【" + item.Model + "】没有维护标准物料数据,请维护后再发布!";
+                }
+                var curLines = lines.Where(p=>p.Part == std.ItemNumber).OrderBy(p => p.Line).ToList();
+                //过滤产线
+                var distLines = curLines.Select(p => p.Line).Distinct().ToList();
+                if (distLines.Count() == 0)
+                {
+                    new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("CapacityAnalysis", "物料【" + std.ItemNumber + "】没有维护产线数据", _currentTenant.Id.ToString());
+                    return "NO|物料【" + std.ItemNumber + "】没有维护产线数据,请维护后再发布!";
+                }
+                foreach (var dl in distLines)
+                {
+                    //添加月度产能共识主表数据
+                    MonthlyProdCapacityMain main = new MonthlyProdCapacityMain();
+                    main.Id = help.NextId();
+                    main.Version = input.version;//整体需求计划版本号
+                    main.Year = Convert.ToInt16(item.PlanDate.Substring(0, 4));
+                    main.Month = Convert.ToInt16(item.PlanDate.Substring(4, 2));
+                    main.ProdRange = item.ProdRange;
+                    main.Model = item.Model;
+                    main.ProdQty = item.Qty;
+                    main.ProdLine = dl;
+                    main.Qty = item.Qty;
+                    main.tenant_id = item.tenant_id;
+                    main.factory_id = item.factory_id;
+                    main.Version = item.Version;
+                    main.CreateTime = DateTime.Now;
+                    capacityMains.Add(main);
+
+                    //添加月度产能共识产能效率数据
+                    MonthlyProdCapacityDtl dtl = new MonthlyProdCapacityDtl();
+                    dtl.MainId = main.Id;
+                    dtl.Version = input.version;
+                    dtl.Year = main.Year;
+                    dtl.Month = main.Month;
+                    dtl.ProdLine = dl;
+                    //计算每天工作时间
+                    var curCal = calendars.FirstOrDefault(p => p.ProdLine == dl);
+                    if (curCal == null) {
+                        continue;
+                    }
+                    dtl.DailyWorks = curCal.ShiftsHours1;
+                    dtl.FlightQty = 1;
+                    //计算当月工作天数
+                    var curHoildays = holidays.Where(p => p.Dated.Value.Year == main.Year && p.Dated.Value.Month == main.Month).ToList();
+                    //当月天数
+                    int days = DateTime.DaysInMonth(main.Year.Value, main.Month.Value);
+                    //当月周末天数
+                    int weekDays = CalcWeekDays(days,Convert.ToDateTime(main.Year.ToString()+"-"+main.Month.ToString()+"-01"));
+                    dtl.YearWorks= days-weekDays-curHoildays.Where(p=>p.Ufld1 == "休假").Count() + curHoildays.Where(p=>p.Ufld1 == "调班").Count();
+                    dtl.AvailableTimes= dtl.DailyWorks * dtl.FlightQty * dtl.YearWorks;
+                    //计算产线耗时
+                    var line = curLines.Where(p => p.Line == dl).OrderByDescending(p=>p.Op).First();
+                    dtl.NeedWorks= line.Rate == 0? 0:( Math.Ceiling(main.Qty.GetValueOrDefault() / line.Rate));
+                    dtl.ProdRate= 100;
+                    dtl.Rate= dtl.AvailableTimes == 0? 0: Math.Floor(dtl.NeedWorks.GetValueOrDefault()/ dtl.AvailableTimes.GetValueOrDefault() * 100);
+                    dtl.IsOverTime = dtl.NeedWorks > dtl.YearWorks ? "是" : "否";
+                    dtl.OverTimes = dtl.IsOverTime == "是" ? (dtl.NeedWorks - dtl.YearWorks) : 0;
+                    dtl.tenant_id = main.tenant_id;
+                    dtl.factory_id = main.factory_id;
+                    capacityDtls.Add(dtl);
+                }
+            }
+            //保存数据
+            using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
+            {
+                try
+                {
+                    //先删除数据
+                    _monthlyProdCapacityMain.Delete(p =>p.tenant_id == input.tenant_id && p.factory_id == input.factory_id && p.Version.Contains(input.version.Substring(0, 7)));
+                    _monthlyProdCapacityDtl.Delete(p => p.tenant_id == input.tenant_id && p.factory_id == input.factory_id && p.Version.Contains(input.version.Substring(0, 7)));
+
+                    //插入数据
+                    _monthlyProdCapacityMain.Insert(capacityMains);
+                    _monthlyProdCapacityDtl.Insert(capacityDtls);
+                    await unitOfWork.CompleteAsync();
+                }
+                catch (Exception e)
+                {
+                    unitOfWork.Dispose();
+                    new NLogHelper("MonthlyCapacityLoadAppService").WriteLog("CapacityAnalysis", "生成【"+input.year+"年"+input.month+"月】月度产能共识失败:" + e.Message, _currentTenant.Id.ToString());
+                    return "NO|" + e.Message;
+                };
+            }
+            return "OK|发布成功!";
+        }
+
+        /// <summary>
+        /// 计算当月有多少个周末
+        /// </summary>
+        /// <param name="days"></param>
+        /// <param name="startDay"></param>
+        /// <returns></returns>
+        private int CalcWeekDays(int days, DateTime startDay)
+        {
+            int sumDays = 0;
+            for (int i = 0; i < days; i++)
+            {
+                int weekDays = (int)startDay.AddDays(i).DayOfWeek;
+                if (weekDays == 0 || weekDays == 6)
+                {
+                    sumDays++;
+                }
+            }
+            return sumDays;
         }
     }
 }

+ 1 - 0
MicroServices/Business/Business.Core/Business.Core.csproj

@@ -14,6 +14,7 @@
     <PackageReference Include="NLog" Version="5.1.2" />
     <PackageReference Include="NLog.Extensions.Logging" Version="5.2.2" />
     <PackageReference Include="NLog.Web.AspNetCore" Version="5.2.2" />
+    <PackageReference Include="RSAExtensions" Version="1.1.1" />
     <PackageReference Include="Spire.Barcode" Version="3.5.0" />
     <PackageReference Include="Spire.PDF" Version="4.11.3" />
     <PackageReference Include="ThoughtWorks.QRCode" Version="1.1.0" />

+ 411 - 0
MicroServices/Business/Business.Core/Utilities/Encrypt.cs

@@ -0,0 +1,411 @@
+using System.Text;
+using System;
+using System.Security.Cryptography;
+using System.Linq;
+using RSAExtensions;
+using Microsoft.AspNetCore.DataProtection.KeyManagement;
+
+namespace Business.Core.Utilities
+{
+    /// <summary>
+    /// 加密操作
+    /// </summary>
+    public static class Encrypt
+    {
+
+        #region Md5加密
+
+        /// <summary>
+        /// Md5加密,返回16位结果
+        /// </summary>
+        /// <param name="value">值</param>
+        public static string Md5By16(string value)
+        {
+            return Md5By16(value, Encoding.UTF8);
+        }
+
+        /// <summary>
+        /// Md5加密,返回16位结果
+        /// </summary>
+        /// <param name="value">值</param>
+        /// <param name="encoding">字符编码</param>
+        public static string Md5By16(string value, Encoding encoding)
+        {
+            return Md5(value, encoding, 4, 8);
+        }
+
+        /// <summary>
+        /// Md5加密
+        /// </summary>
+        private static string Md5(string value, Encoding encoding, int? startIndex, int? length)
+        {
+            if (string.IsNullOrWhiteSpace(value))
+                return string.Empty;
+            var md5 = MD5.Create();
+            string result;
+            try
+            {
+                var hash = md5.ComputeHash(encoding.GetBytes(value));
+                result = startIndex == null ? BitConverter.ToString(hash) : BitConverter.ToString(hash, startIndex.SafeValue(), length.SafeValue());
+            }
+            finally
+            {
+                md5.Clear();
+            }
+            return result.Replace("-", "");
+        }
+
+        /// <summary>
+        /// Md5加密,返回32位结果
+        /// </summary>
+        /// <param name="value">值</param>
+        public static string Md5By32(string value)
+        {
+            return Md5By32(value, Encoding.UTF8);
+        }
+
+        /// <summary>
+        /// Md5加密,返回32位结果
+        /// </summary>
+        /// <param name="value">值</param>
+        /// <param name="encoding">字符编码</param>
+        public static string Md5By32(string value, Encoding encoding)
+        {
+            return Md5(value, encoding, null, null);
+        }
+
+        #endregion
+
+        #region DES加密
+
+        /// <summary>
+        /// DES密钥,24位字符串
+        /// </summary>
+        public static string DesKey = "#s^un2ye21fcv%|f0XpR,+vh";
+
+        /// <summary>
+        /// DES加密
+        /// </summary>
+        /// <param name="value">待加密的值</param>
+        public static string DesEncrypt(object value)
+        {
+            return DesEncrypt(value, DesKey);
+        }
+
+        /// <summary>
+        /// DES加密
+        /// </summary>
+        /// <param name="value">待加密的值</param>
+        /// <param name="key">密钥,24位</param>
+        /// <param name="encoding">编码</param>
+        /// <param name="cipherMode">加密模式</param>
+        /// <param name="paddingMode">填充模式</param>
+        public static string DesEncrypt(object value, string key, Encoding encoding = null, CipherMode cipherMode = CipherMode.ECB, PaddingMode paddingMode = PaddingMode.PKCS7)
+        {
+            string text = value.SafeString();
+            if (ValidateDes(text, key) == false)
+                return string.Empty;
+            using var transform = CreateDesProvider(key, cipherMode, paddingMode).CreateEncryptor();
+            return GetEncryptResult(text, encoding, transform);
+        }
+
+        /// <summary>
+        /// 验证Des加密参数
+        /// </summary>
+        private static bool ValidateDes(string text, string key)
+        {
+            if (text.IsEmpty() || key.IsEmpty())
+                return false;
+            return key.Length == 24;
+        }
+
+        /// <summary>
+        /// 创建Des加密服务提供程序
+        /// </summary>
+        private static TripleDES CreateDesProvider(string key, CipherMode cipherMode, PaddingMode paddingMode)
+        {
+            var result = TripleDES.Create();
+            result.Key = Encoding.ASCII.GetBytes(key);
+            result.Mode = cipherMode;
+            result.Padding = paddingMode;
+            return result;
+        }
+
+        /// <summary>
+        /// 获取加密结果
+        /// </summary>
+        private static string GetEncryptResult(string value, Encoding encoding, ICryptoTransform transform)
+        {
+            encoding ??= Encoding.UTF8;
+            var bytes = encoding.GetBytes(value);
+            var result = transform.TransformFinalBlock(bytes, 0, bytes.Length);
+            return System.Convert.ToBase64String(result);
+        }
+
+        /// <summary>
+        /// DES解密
+        /// </summary>
+        /// <param name="value">加密后的值</param>
+        public static string DesDecrypt(object value)
+        {
+            return DesDecrypt(value, DesKey);
+        }
+
+        /// <summary>
+        /// DES解密
+        /// </summary>
+        /// <param name="value">加密后的值</param>
+        /// <param name="key">密钥,24位</param>
+        /// <param name="encoding">编码</param>
+        /// <param name="cipherMode">加密模式</param>
+        /// <param name="paddingMode">填充模式</param>
+        public static string DesDecrypt(object value, string key, Encoding encoding = null, CipherMode cipherMode = CipherMode.ECB, PaddingMode paddingMode = PaddingMode.PKCS7)
+        {
+            string text = value.SafeString();
+            if (!ValidateDes(text, key))
+                return string.Empty;
+            using var transform = CreateDesProvider(key, cipherMode, paddingMode).CreateDecryptor();
+            return GetDecryptResult(text, encoding, transform);
+        }
+
+        /// <summary>
+        /// 获取解密结果
+        /// </summary>
+        private static string GetDecryptResult(string value, Encoding encoding, ICryptoTransform transform)
+        {
+            encoding ??= Encoding.UTF8;
+            var bytes = System.Convert.FromBase64String(value);
+            var result = transform.TransformFinalBlock(bytes, 0, bytes.Length);
+            return encoding.GetString(result);
+        }
+
+        #endregion
+
+        #region AES加密
+
+        /// <summary>
+        /// 128位0向量
+        /// </summary>
+        private static byte[] _iv;
+        /// <summary>
+        /// 128位0向量
+        /// </summary>
+        private static byte[] Iv
+        {
+            get
+            {
+                if (_iv == null)
+                {
+                    var size = 16;
+                    _iv = new byte[size];
+                    for (int i = 0; i < size; i++)
+                        _iv[i] = 0;
+                }
+                return _iv;
+            }
+        }
+
+        /// <summary>
+        /// AES密钥
+        /// </summary>
+        public static string AesKey = "QaP1AF8utIarcBqdhYTZpVGbiNQ9M6IL";
+
+        /// <summary>
+        /// AES加密
+        /// </summary>
+        /// <param name="value">待加密的值</param>
+        public static string AesEncrypt(string value)
+        {
+            return AesEncrypt(value, AesKey);
+        }
+
+        /// <summary>
+        /// AES加密
+        /// </summary>
+        /// <param name="value">待加密的值</param>
+        /// <param name="key">密钥</param>
+        /// <param name="encoding">编码</param>
+        /// <param name="cipherMode">加密模式</param>
+        /// <param name="paddingMode">填充模式</param>
+        /// <param name="iv">初始化向量</param>
+        public static string AesEncrypt(string value, string key, Encoding encoding = null, CipherMode cipherMode = CipherMode.CBC, PaddingMode paddingMode = PaddingMode.PKCS7, byte[] iv = null)
+        {
+            if (value.IsEmpty() || key.IsEmpty())
+                return string.Empty;
+            iv ??= Iv;
+            var aes = CreateAes(key, cipherMode, paddingMode, iv);
+            using var transform = aes.CreateEncryptor(aes.Key, aes.IV);
+            return GetEncryptResult(value, encoding, transform);
+        }
+
+        /// <summary>
+        /// 创建Aes
+        /// </summary>
+        private static Aes CreateAes(string key, CipherMode cipherMode, PaddingMode paddingMode, byte[] iv)
+        {
+            var result = Aes.Create();
+            result.Key = Encoding.ASCII.GetBytes(key);
+            result.Mode = cipherMode;
+            result.Padding = paddingMode;
+            result.IV = iv;
+            return result;
+        }
+
+        /// <summary>
+        /// AES解密
+        /// </summary>
+        /// <param name="value">加密后的值</param>
+        public static string AesDecrypt(string value)
+        {
+            return AesDecrypt(value, AesKey);
+        }
+
+        /// <summary>
+        /// AES解密
+        /// </summary>
+        /// <param name="value">加密后的值</param>
+        /// <param name="key">密钥</param>
+        /// <param name="encoding">编码</param>
+        /// <param name="cipherMode">加密模式</param>
+        /// <param name="paddingMode">填充模式</param>
+        /// <param name="iv">初始化向量</param>
+        public static string AesDecrypt(string value, string key, Encoding encoding = null, CipherMode cipherMode = CipherMode.CBC, PaddingMode paddingMode = PaddingMode.PKCS7, byte[] iv = null)
+        {
+            if (value.IsEmpty() || key.IsEmpty())
+                return string.Empty;
+            iv ??= Iv;
+            var aes = CreateAes(key, cipherMode, paddingMode, iv);
+            using var transform = aes.CreateDecryptor(aes.Key, aes.IV);
+            return GetDecryptResult(value, encoding, transform);
+        }
+
+        #endregion
+
+        #region HmacSha256加密
+
+        /// <summary>
+        /// HMACSHA256加密
+        /// </summary>
+        /// <param name="value">值</param>
+        /// <param name="key">密钥</param>
+        /// <param name="encoding">字符编码</param>
+        public static string HmacSha256(string value, string key, Encoding encoding = null)
+        {
+            if (value.IsEmpty() || key.IsEmpty())
+                return string.Empty;
+            encoding ??= Encoding.UTF8;
+            var sha256 = new HMACSHA256(Encoding.ASCII.GetBytes(key));
+            var hash = sha256.ComputeHash(encoding.GetBytes(value));
+            return string.Join("", hash.ToList().Select(t => t.ToString("x2")).ToArray());
+        }
+
+        #endregion
+
+        #region RSA加密
+
+        /// <summary>
+        /// RSA签名
+        /// </summary>
+        /// <param name="value">待加密的值</param>
+        /// <param name="privateKey">私钥</param>
+        /// <param name="encoding">编码</param>
+        /// <param name="hashAlgorithm">加密算法,默认值: HashAlgorithmName.SHA1</param>
+        /// <param name="rsaKeyType">Rsa密钥类型,默认值: Pkcs1</param>
+        public static string RsaSign(string value, string privateKey, Encoding encoding = null, HashAlgorithmName? hashAlgorithm = null, RSAKeyType rsaKeyType = RSAKeyType.Pkcs1)
+        {
+            if (value.IsEmpty() || privateKey.IsEmpty())
+                return string.Empty;
+            var rsa = RSA.Create();
+            ImportPrivateKey(rsa, privateKey, rsaKeyType);
+            encoding ??= Encoding.UTF8;
+            hashAlgorithm ??= HashAlgorithmName.SHA1;
+            var result = rsa.SignData(encoding.GetBytes(value), hashAlgorithm.Value, RSASignaturePadding.Pkcs1);
+            return System.Convert.ToBase64String(result);
+        }
+
+        /// <summary>
+        /// 导入私钥
+        /// </summary>
+        private static void ImportPrivateKey(RSA rsa, string privateKey, RSAKeyType rsaKeyType)
+        {
+            rsa.ImportPrivateKey(rsaKeyType, privateKey);
+        }
+
+        /// <summary>
+        /// Rsa验签
+        /// </summary>
+        /// <param name="value">待验签的值</param>
+        /// <param name="publicKey">公钥</param>
+        /// <param name="sign">签名</param>
+        /// <param name="encoding">编码</param>
+        /// <param name="hashAlgorithm">加密算法,默认值: HashAlgorithmName.SHA1</param>
+        public static bool RsaVerify(string value, string publicKey, string sign, Encoding encoding = null, HashAlgorithmName? hashAlgorithm = null)
+        {
+            if (value.IsEmpty() || publicKey.IsEmpty() || sign.IsEmpty())
+                return false;
+            var rsa = RSA.Create();
+            ImportPublicKey(rsa, publicKey);
+            encoding ??= Encoding.UTF8;
+            var signData = System.Convert.FromBase64String(sign);
+            hashAlgorithm ??= HashAlgorithmName.SHA1;
+            return rsa.VerifyData(encoding.GetBytes(value), signData, hashAlgorithm.Value, RSASignaturePadding.Pkcs1);
+        }
+
+        /// <summary>
+        /// 导入公钥
+        /// </summary>
+        private static void ImportPublicKey(RSA rsa, string publicKey)
+        {
+            var key = System.Convert.FromBase64String(publicKey);
+            rsa.ImportSubjectPublicKeyInfo(key, out _);
+        }
+
+        /// <summary>
+        /// RSA加密
+        /// </summary>
+        /// <param name="value">待加密的值</param>
+        /// <param name="publicKey">公钥</param>
+        public static string RsaEncrypt(string value, string publicKey)
+        {
+            if (value.IsEmpty() || publicKey.IsEmpty())
+                return string.Empty;
+            var rsa = RSA.Create();
+            ImportPublicKey(rsa, publicKey);
+            return rsa.EncryptBigData(value, RSAEncryptionPadding.Pkcs1);
+        }
+
+        /// <summary>
+        /// RSA解密
+        /// </summary>
+        /// <param name="value">加密后的值</param>
+        /// <param name="privateKey">私钥</param>
+        public static string RsaDecrypt(string value, string privateKey)
+        {
+            if (value.IsEmpty() || privateKey.IsEmpty())
+                return string.Empty;
+            var rsa = RSA.Create();
+            ImportPrivateKey(rsa, privateKey, RSAKeyType.Pkcs1);
+            return rsa.DecryptBigData(value, RSAEncryptionPadding.Pkcs1);
+        }
+
+        /// <summary>
+        /// 密码解密之后的mongo连接地址
+        /// </summary>
+        public static string GetMongoDBConnectionSM4DecryptString(string connectionString)
+        {
+            if (connectionString.IndexOf("@") > 0)
+            {
+                var strAry = connectionString.Split("@");
+                var userInfo = strAry[0].Substring(10).Split(new char[1] { ':' });
+                string userInfoStr = string.Format("{0}:{1}", userInfo[0], AesDecrypt(userInfo[1]));
+                return string.Format("mongodb://{0}@{1}", userInfoStr, strAry[1]);
+            }
+            else
+            {
+                return connectionString;
+            }
+        }
+
+        #endregion
+    }
+}

+ 70 - 0
MicroServices/Business/Business.Core/Utilities/StringExtensions.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Text;
 using System.Text.RegularExpressions;
@@ -642,5 +643,74 @@ namespace Business.Core.Utilities
         {
             return string.IsNullOrWhiteSpace(url) ? string.Empty : Uri.UnescapeDataString(url).Replace("%27", "'");
         }
+
+        /// <summary>
+        /// 检测对象是否为null,为null则抛出<see cref="ArgumentNullException"/>异常
+        /// </summary>
+        /// <param name="obj">对象</param>
+        /// <param name="parameterName">参数名</param>
+        public static void CheckNull(this object obj, string parameterName)
+        {
+            if (obj == null)
+                throw new ArgumentNullException(parameterName);
+        }
+
+        /// <summary>
+        /// 是否为空
+        /// </summary>
+        /// <param name="value">值</param>
+        public static bool IsEmpty([NotNullWhen(false)] this string? value)
+        {
+            return string.IsNullOrWhiteSpace(value);
+        }
+
+        /// <summary>
+        /// 是否为空
+        /// </summary>
+        /// <param name="value">值</param>
+        public static bool IsEmpty(this Guid value)
+        {
+            return value == Guid.Empty;
+        }
+
+        /// <summary>
+        /// 是否为空
+        /// </summary>
+        /// <param name="value">值</param>
+        public static bool IsEmpty([NotNullWhen(false)] this Guid? value)
+        {
+            if (value == null)
+                return true;
+            return value == Guid.Empty;
+        }
+
+        /// <summary>
+        /// 是否为空
+        /// </summary>
+        /// <param name="value">值</param>
+        public static bool IsEmpty<T>(this IEnumerable<T> value)
+        {
+            if (value == null)
+                return true;
+            return !value.Any();
+        }
+
+        /// <summary>
+        /// 安全转换为字符串,去除两端空格,当值为null时返回""
+        /// </summary>
+        /// <param name="input">输入值</param>
+        public static string SafeString(this object input)
+        {
+            return input?.ToString()?.Trim() ?? string.Empty;
+        }
+
+        /// <summary>
+        /// 安全获取值,当值为null时,不会抛出异常
+        /// </summary>
+        /// <param name="value">可空值</param>
+        public static T SafeValue<T>(this T? value) where T : struct
+        {
+            return value ?? default;
+        }
     }
 }

+ 101 - 0
MicroServices/Business/Business.Domain/MoBaseEntity.cs

@@ -0,0 +1,101 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.MultiTenancy;
+using Volo.Abp;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel;
+using Volo.Abp.Domain.Entities.Auditing;
+using Volo.Abp.Domain.Entities;
+using Microsoft.EntityFrameworkCore;
+using MongoDB.Bson.Serialization.Attributes;
+using Business.Core.Utilities;
+using MongoDB.Bson;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Business.Domain
+{
+    public abstract class MoBaseEntity: Entity<long>
+    {
+        /// <summary>
+        /// 生成新的Id
+        /// </summary>
+        public void GenerateNewId(long id)
+        {
+            Id = id;
+        }
+        /// <summary>
+        /// mysql表id
+        /// </summary>
+        [Comment("mysql表id")]
+        [NotMapped]
+        public virtual long mysql_id { get; set; }
+
+        /// <summary>
+        /// 创建人
+        /// </summary>
+        [Comment("创建人id")]
+        public virtual long? create_by { get; set; }
+
+        /// <summary>
+        /// 创建人名称
+        /// </summary>
+        [StringLength(50)]
+        [Comment("创建人名称")]
+        public virtual string? create_by_name { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [Comment("创建时间")]
+        public virtual DateTime? create_time { get; set; }
+
+        /// <summary>
+        /// 修改人
+        /// </summary>
+        [Comment("修改人")]
+        public virtual long? update_by { get; set; }
+
+        /// <summary>
+        /// 修改人名称
+        /// </summary>
+        [StringLength(50)]
+        [Comment("修改人名称")]
+        public virtual string? update_by_name { get; set; }
+
+        /// <summary>
+        /// 修改时间
+        /// </summary>
+        [Comment("修改时间")]
+        public virtual DateTime? update_time { get; set; }
+
+        /// <summary>
+        /// 企业ID
+        /// </summary>
+        [Required]
+        [Comment("企业ID")]
+        public virtual long tenant_id { get; set; }
+
+        /// <summary>
+        /// 工厂ID
+        /// </summary>
+        [Comment("工厂ID")]
+        public virtual long? factory_id { get; set; }
+
+        /// <summary>
+        /// 组织ID
+        /// </summary>
+        [Comment("组织ID")]
+        public virtual long? org_id { get; set; }
+
+        /// <summary>
+        /// 删除标识
+        /// </summary>
+        [DefaultValue(false)]
+        [Comment("删除标识")]
+        public bool IsDeleted { get; set; }
+
+    }
+}

+ 23 - 0
MicroServices/Business/Business.Domain/User.cs

@@ -0,0 +1,23 @@
+using System;
+
+namespace Business.Domain
+{
+    public class User: MoBaseEntity
+    {
+        public string Username { get; set; }
+
+        public string Password { get; set; }
+
+        public string Type { get; set; }
+
+        public string Identity { get; set; }
+
+        public string Name { get; set; }
+
+        public string Avatar { get; set; }
+
+        public string Email { get; set; }
+
+        public bool IsAdmin { get; set; } = false;
+    }
+}

+ 0 - 8
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/BusinessDbContextModelCreatingExtensions.cs

@@ -41,14 +41,6 @@ namespace Business.EntityFrameworkCore
                 b.Property(x => x.Id).ValueGeneratedNever();//迁移sqlserver默认是自增,需要配置一下
             });
 
-            builder.Entity<ic_item_inventory>(b =>
-            {
-                b.ToTable("ic_item_inventory");
-                b.HasIndex(b => new { b.stock_id, b.stock_place_id, b.tenant_id, b.factory_id });
-                b.ConfigureByConvention();
-                b.Property(x => x.Id).ValueGeneratedNever();//迁移sqlserver默认是自增,需要配置一下
-            });
-
             builder.Entity<ic_item_stock>(b =>
             {
                 b.ToTable("ic_item_stock");

+ 30 - 1
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/DOP/BusinessDbContext.cs

@@ -20,7 +20,6 @@ namespace Business.EntityFrameworkCore
         public DbSet<ic_bom> ic_bom { get; set; }
         public DbSet<ic_bom_child> ic_bom_child { get; set; }
         public DbSet<ic_item> ic_item { get; set; }
-        public DbSet<ic_item_inventory> ic_item_inventory { get; set; }
         public DbSet<ic_item_stock> ic_item_stock { get; set; }
         public DbSet<ic_item_stockoccupy> ic_item_stockoccupy { get; set; }
         public DbSet<ic_substitute> ic_substitute { get; set; }
@@ -148,6 +147,36 @@ namespace Business.EntityFrameworkCore
         public DbSet<LocationDetail> LocationDetail { get; set; }
 
         public DbSet<ItemPackMaster> ItemPackMaster { get; set; }
+
+        /// <summary>
+        /// 月度共识产能主表
+        /// </summary>
+        public DbSet<MonthlyProdCapacityMain> MonthlyProdCapacityMain { get; set; }
+
+        /// <summary>
+        /// 月度共识产能明细表
+        /// </summary>
+        public DbSet<MonthlyProdCapacityDtl> MonthlyProdCapacityDtl { get; set; }
+
+        /// <summary>
+        /// 整体需求计划主表
+        /// </summary>
+        public DbSet<OverallDemandPlanMain> OverallDemandPlanMain { get; set; }
+
+        /// <summary>
+        /// 整体需求计划明细表
+        /// </summary>
+        public DbSet<OverallDemandPlanDtl> OverallDemandPlanDtl { get; set; }
+
+        /// <summary>
+        /// 标准物料规格型号设置表
+        /// </summary>
+        public DbSet<StandardItemModelSet> StandardItemModelSet { get; set; }
+
+        /// <summary>
+        /// 系统配置表
+        /// </summary>
+        public DbSet<GeneralizedCodeMaster> GeneralizedCodeMaster { get; set; }
         #endregion
 
         //Code generation...

+ 2 - 0
MicroServices/Business/Business.Host/Business.Host.csproj

@@ -9,6 +9,7 @@
   </PropertyGroup>
 
   <ItemGroup>
+	 <PackageReference Include="GZY.Quartz.MUI" Version="2.3.0" />
 	 <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.3" />
     <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="6.0.3" />
     <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.5">
@@ -37,6 +38,7 @@
     <ProjectReference Include="..\Business.Core\Business.Core.csproj" />
     <ProjectReference Include="..\Business.EntityFrameworkCore\Business.EntityFrameworkCore.csproj" />
     <ProjectReference Include="..\Business.HttpApi\Business.HttpApi.csproj" />
+    <ProjectReference Include="..\Bussiness.MongoDB\Bussiness.MongoDB.csproj" />
   </ItemGroup>
 
   <ItemGroup>

+ 17 - 9
MicroServices/Business/Business.Host/BusinessHostModule.cs

@@ -4,11 +4,14 @@ using Business.Core.Utilities;
 using Business.EntityFrameworkCore;
 using Business.MultiTenancy;
 using Business.Quartz;
+using GZY.Quartz.MUI.EFContext;
+using GZY.Quartz.MUI.Extensions;
 using Microsoft.AspNetCore.Authentication.JwtBearer;
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Cors;
 using Microsoft.AspNetCore.DataProtection;
 using Microsoft.AspNetCore.Hosting;
+using Microsoft.EntityFrameworkCore;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
@@ -39,6 +42,7 @@ using Volo.Abp.Modularity;
 using Volo.Abp.MultiTenancy;
 using Volo.Abp.Threading;
 using Volo.Abp.VirtualFileSystem;
+using Bussiness.MongoDB;
 
 namespace Business
 {
@@ -48,6 +52,7 @@ namespace Business
         typeof(BusinessHttpApiModule),
         typeof(BusinessApplicationModule),
         typeof(BusinessEntityFrameworkCoreModule),
+        typeof(BussinessMongoDbModule),
         typeof(AbpAspNetCoreMultiTenancyModule),
         typeof(AbpAspNetCoreSerilogModule)
     )]
@@ -157,6 +162,8 @@ namespace Business
                 // when shutting down we want jobs to complete gracefully
                 options.WaitForJobsToComplete = true;
             });
+            context.Services.AddQuartzUI();
+            //context.Services.AddQuartzClassJobs(); //添加本地调度任务访问
             //context.Services.AddQuartzHostedService(options =>
             //{
             //    // when shutting down we want jobs to complete gracefully
@@ -336,15 +343,16 @@ namespace Business
             app.UseAbpSerilogEnrichers();
             app.UseUnitOfWork();
             app.UseConfiguredEndpoints();
-            AsyncHelper.RunSync(async () =>
-            {
-                using (var scope = context.ServiceProvider.CreateScope())
-                {
-                    await scope.ServiceProvider
-                        .GetRequiredService<IDataSeeder>()
-                        .SeedAsync();
-                }
-            });
+            app.UseQuartz();
+            //AsyncHelper.RunSync(async () =>
+            //{
+            //    using (var scope = context.ServiceProvider.CreateScope())
+            //    {
+            //        await scope.ServiceProvider
+            //            .GetRequiredService<IDataSeeder>()
+            //            .SeedAsync();
+            //    }
+            //});
         }
     }
 }

+ 4489 - 0
MicroServices/Business/Business.Host/Migrations/20230619062335_AddIndex.Designer.cs

@@ -0,0 +1,4489 @@
+// <auto-generated />
+using System;
+using Business.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Volo.Abp.EntityFrameworkCore;
+
+#nullable disable
+
+namespace Business.Migrations
+{
+    [DbContext(typeof(BusinessMigrationDbContext))]
+    [Migration("20230619062335_AddIndex")]
+    partial class AddIndex
+    {
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
+                .HasAnnotation("ProductVersion", "6.0.5")
+                .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
+
+            modelBuilder.Entity("Business.Model.Bang.b_bom_pretreatment", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<int>("backflush")
+                        .HasColumnType("int")
+                        .HasComment("是否倒冲");
+
+                    b.Property<long?>("bom_child_id")
+                        .HasColumnType("bigint")
+                        .HasComment("bom明细主键");
+
+                    b.Property<long?>("bom_id")
+                        .HasColumnType("bigint")
+                        .HasComment("BOMid");
+
+                    b.Property<string>("bom_number")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("bom编号");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<int>("erp_cls")
+                        .HasColumnType("int")
+                        .HasComment("物料属性");
+
+                    b.Property<string>("erp_cls_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料属性名称");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<long>("fid")
+                        .HasColumnType("bigint")
+                        .HasComment("本级id");
+
+                    b.Property<int>("haveicsubs")
+                        .HasColumnType("int")
+                        .HasComment("存在替代关系");
+
+                    b.Property<long?>("item_id")
+                        .HasColumnType("bigint")
+                        .HasComment("物料id");
+
+                    b.Property<string>("item_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料名称");
+
+                    b.Property<string>("item_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料编号");
+
+                    b.Property<int>("level")
+                        .HasColumnType("int")
+                        .HasComment("level");
+
+                    b.Property<string>("model")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("规格型号");
+
+                    b.Property<string>("num")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("项次号");
+
+                    b.Property<long?>("num_order")
+                        .HasColumnType("bigint")
+                        .HasComment("供排序使用");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<long?>("parent_id")
+                        .HasColumnType("bigint")
+                        .HasComment("父级");
+
+                    b.Property<decimal?>("qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("单位用量");
+
+                    b.Property<long>("sourceid")
+                        .HasColumnType("bigint")
+                        .HasComment("所属BOM");
+
+                    b.Property<string>("substitute_code")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("群组代码");
+
+                    b.Property<int>("substitute_mode")
+                        .HasColumnType("int")
+                        .HasComment("替代方式");
+
+                    b.Property<int>("substitute_strategy")
+                        .HasColumnType("int")
+                        .HasComment("替代策略");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<int>("type")
+                        .HasColumnType("int")
+                        .HasComment("类型");
+
+                    b.Property<string>("unit")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("单位");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<string>("version")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("版本");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("b_bom_pretreatment", (string)null);
+
+                    b.HasComment("Bom预处理");
+                });
+
+            modelBuilder.Entity("Business.Model.MES.IC.ic_bom", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<DateTime?>("begin_day")
+                        .HasColumnType("datetime2")
+                        .HasComment("生效日期");
+
+                    b.Property<string>("biller")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("图片");
+
+                    b.Property<int?>("bom_num")
+                        .HasColumnType("int")
+                        .HasComment("序号");
+
+                    b.Property<string>("bom_number")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("bom单编号");
+
+                    b.Property<string>("chartnumber")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("图表编号");
+
+                    b.Property<DateTime?>("check_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("检验时间");
+
+                    b.Property<string>("checker")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("检验人");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<DateTime?>("end_day")
+                        .HasColumnType("datetime2")
+                        .HasComment("失效日期");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<long>("icitem_id")
+                        .HasColumnType("bigint")
+                        .HasComment("物料id");
+
+                    b.Property<string>("item_name")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("物料名称");
+
+                    b.Property<string>("item_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料代码");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("product_designer")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("产品设计员");
+
+                    b.Property<string>("product_principal")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("生产负责人");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<string>("unit")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("单位");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<DateTime?>("use_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("bom创建时间");
+
+                    b.Property<int?>("use_status")
+                        .HasColumnType("int")
+                        .HasComment("使用状态");
+
+                    b.Property<string>("user")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("bom创建人");
+
+                    b.Property<string>("version")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("版本");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("bom_number", "item_number", "version", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[bom_number] IS NOT NULL AND [item_number] IS NOT NULL AND [version] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.ToTable("ic_bom", (string)null);
+
+                    b.HasComment("物料BOM");
+                });
+
+            modelBuilder.Entity("Business.Model.MES.IC.ic_bom_child", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<int?>("backflush")
+                        .HasColumnType("int")
+                        .HasComment("是否倒冲");
+
+                    b.Property<DateTime?>("begin_day")
+                        .HasColumnType("datetime2")
+                        .HasComment("生效日期");
+
+                    b.Property<long?>("bom_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("bom主键");
+
+                    b.Property<string>("bom_number")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("bom单编号");
+
+                    b.Property<int?>("child_num")
+                        .HasColumnType("int")
+                        .HasComment("序号");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<DateTime?>("end_day")
+                        .HasColumnType("datetime2")
+                        .HasComment("失效日期");
+
+                    b.Property<int?>("entryid")
+                        .HasColumnType("int")
+                        .HasComment("顺序号");
+
+                    b.Property<int?>("erp_cls")
+                        .HasColumnType("int")
+                        .HasComment("物料属性");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<int?>("haveicsubs")
+                        .HasColumnType("int")
+                        .HasComment("存在替代关系");
+
+                    b.Property<long?>("icitem_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("物料id");
+
+                    b.Property<string>("icitem_ids")
+                        .HasMaxLength(2000)
+                        .HasColumnType("nvarchar(2000)")
+                        .HasComment("组合模式");
+
+                    b.Property<int?>("is_bom")
+                        .HasColumnType("int")
+                        .HasComment("是否是BOM");
+
+                    b.Property<int?>("is_replace")
+                        .HasColumnType("int")
+                        .HasComment("是否群组替代");
+
+                    b.Property<int?>("iskeyitem")
+                        .HasColumnType("int")
+                        .HasComment("是否关键件");
+
+                    b.Property<string>("item_name")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("物料名称");
+
+                    b.Property<string>("item_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料代码");
+
+                    b.Property<string>("note")
+                        .HasMaxLength(1000)
+                        .HasColumnType("nvarchar(1000)")
+                        .HasComment("备注");
+
+                    b.Property<DateTime?>("op_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("操作时间");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<decimal?>("qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("用量");
+
+                    b.Property<decimal?>("scrap")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("损耗率");
+
+                    b.Property<string>("substitute_code")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("群组代码");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<int?>("type")
+                        .HasColumnType("int")
+                        .HasComment("物料类型");
+
+                    b.Property<string>("unit")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("单位");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<int?>("use_status")
+                        .HasColumnType("int")
+                        .HasComment("使用状态");
+
+                    b.Property<string>("version")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("版本");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("bom_number", "item_number", "version", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[bom_number] IS NOT NULL AND [item_number] IS NOT NULL AND [version] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.HasIndex("bom_id", "bom_number", "item_number", "version", "tenant_id", "factory_id");
+
+                    b.ToTable("ic_bom_child", (string)null);
+
+                    b.HasComment("物料BOM明细");
+                });
+
+            modelBuilder.Entity("Business.Model.MES.IC.ic_item", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<decimal?>("Shipping_date")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("发运提前期");
+
+                    b.Property<decimal?>("Warehousing_date")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("入库提前期");
+
+                    b.Property<string>("abc")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("ABC分类");
+
+                    b.Property<int?>("allowbatch")
+                        .HasColumnType("int")
+                        .HasComment("批号管理");
+
+                    b.Property<int?>("allowmanu")
+                        .HasColumnType("int")
+                        .HasComment("允许生产");
+
+                    b.Property<int?>("allowout")
+                        .HasColumnType("int")
+                        .HasComment("允许委外");
+
+                    b.Property<int?>("allowpur")
+                        .HasColumnType("int")
+                        .HasComment("允许采购");
+
+                    b.Property<int?>("allowsale")
+                        .HasColumnType("int")
+                        .HasComment("允许销售");
+
+                    b.Property<int?>("allowserial")
+                        .HasColumnType("int")
+                        .HasComment("序列号管理");
+
+                    b.Property<decimal?>("bat_change_economy")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("变动提前期批量");
+
+                    b.Property<int>("batch_manager")
+                        .HasColumnType("int")
+                        .HasComment("是否采用业务批次管理");
+
+                    b.Property<string>("box_model")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("盒贴规格");
+
+                    b.Property<string>("chart_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("图号");
+
+                    b.Property<decimal?>("clean_leadtime")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("预处理提前期");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<string>("cubic_measure")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("长度单位");
+
+                    b.Property<int?>("enable_warning")
+                        .HasColumnType("int")
+                        .HasComment("启用预警");
+
+                    b.Property<int?>("erp_cls")
+                        .HasColumnType("int")
+                        .HasComment("物料属性");
+
+                    b.Property<string>("erp_cls_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料属性");
+
+                    b.Property<string>("erp_oldnumber")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("erp旧料号");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<decimal?>("fix_leadtime")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("固定提前期(天)");
+
+                    b.Property<string>("fmr")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("FMR分类");
+
+                    b.Property<string>("fms_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("fms旧料号");
+
+                    b.Property<string>("full_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("全名");
+
+                    b.Property<string>("fversion")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("版本号");
+
+                    b.Property<decimal?>("gross_weight")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("毛重");
+
+                    b.Property<decimal?>("height")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("高度");
+
+                    b.Property<int?>("is_clean")
+                        .HasColumnType("int")
+                        .HasComment("是否备料前预处理");
+
+                    b.Property<int?>("is_equipment")
+                        .HasColumnType("int")
+                        .HasComment("是否为设备");
+
+                    b.Property<int?>("isbackflush")
+                        .HasColumnType("int")
+                        .HasComment("是否倒冲");
+
+                    b.Property<int?>("isfixedreorder")
+                        .HasColumnType("int")
+                        .HasComment("设置为固定再订货点");
+
+                    b.Property<int?>("iskeyitem")
+                        .HasColumnType("int")
+                        .HasComment("是否关键件");
+
+                    b.Property<long?>("item_level")
+                        .HasColumnType("bigint")
+                        .HasComment("物料等级");
+
+                    b.Property<decimal?>("lead_time")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("变动提前期");
+
+                    b.Property<decimal?>("length")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("长度");
+
+                    b.Property<int?>("life_state")
+                        .HasColumnType("int")
+                        .HasComment("生命周期状态");
+
+                    b.Property<decimal?>("maq")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("最大生产批量");
+
+                    b.Property<string>("maund")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("重量单位");
+
+                    b.Property<decimal?>("minorderqty")
+                        .IsRequired()
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("最小订单量");
+
+                    b.Property<decimal?>("minpackqty")
+                        .IsRequired()
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("最小包装量");
+
+                    b.Property<string>("model")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("规格型号");
+
+                    b.Property<decimal?>("moq")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("经济生产批量");
+
+                    b.Property<string>("name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料名称");
+
+                    b.Property<decimal?>("net_weight")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("净重");
+
+                    b.Property<string>("number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料编码");
+
+                    b.Property<decimal?>("order_inter_val")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("订货间隔期_天");
+
+                    b.Property<decimal?>("order_leadtime")
+                        .IsRequired()
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("下单前置期_天");
+
+                    b.Property<decimal?>("order_point")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("再订货点");
+
+                    b.Property<int?>("order_trategy")
+                        .HasColumnType("int")
+                        .HasComment("订货策略");
+
+                    b.Property<decimal?>("ordissu_days")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("工单发料时间/天");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<long?>("output_type_id")
+                        .HasColumnType("bigint")
+                        .HasComment("出库类型");
+
+                    b.Property<string>("photo")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("图片");
+
+                    b.Property<long?>("picktype")
+                        .HasColumnType("bigint")
+                        .HasComment("领料类型");
+
+                    b.Property<int?>("plan_trategy")
+                        .HasColumnType("int")
+                        .HasComment("计划策略");
+
+                    b.Property<string>("product_line")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("产品线");
+
+                    b.Property<decimal?>("production_leadtime")
+                        .IsRequired()
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("生产中提前期_天");
+
+                    b.Property<int?>("put_integer")
+                        .HasColumnType("int")
+                        .HasComment("投料自动取整");
+
+                    b.Property<decimal?>("secinv")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("安全库存数量");
+
+                    b.Property<decimal?>("secinv_ratio")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("安全库存触发采购比例");
+
+                    b.Property<decimal?>("self_inspection_date")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("自检提前期");
+
+                    b.Property<decimal?>("size")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("体积");
+
+                    b.Property<string>("source")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("来源");
+
+                    b.Property<decimal?>("standard_manhour")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("单位标准工时_小时");
+
+                    b.Property<decimal?>("standard_period")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("标准工期");
+
+                    b.Property<decimal?>("sterilize_leadtime")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("工序委外提前期");
+
+                    b.Property<decimal?>("stock_leadtime")
+                        .IsRequired()
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("仓库中提前期_天");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<decimal?>("total_tqq")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("累计提前期");
+
+                    b.Property<decimal?>("transfer_leadtime")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("平台调拨提前期");
+
+                    b.Property<decimal?>("transportation_leadtime")
+                        .IsRequired()
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("运输中提前期_天");
+
+                    b.Property<string>("unit")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("单位");
+
+                    b.Property<decimal?>("unit_qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("单位包装数量");
+
+                    b.Property<decimal?>("unititem_amount")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("单位材料定额_元");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<decimal?>("width")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("宽度");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("number", "fversion", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[number] IS NOT NULL AND [fversion] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.HasIndex("number", "name", "tenant_id", "factory_id");
+
+                    b.ToTable("ic_item", (string)null);
+
+                    b.HasComment("物料详情");
+                });
+
+            modelBuilder.Entity("Business.Model.MES.IC.ic_item_stock", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("fversion")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("版本号");
+
+                    b.Property<long>("icitem_id")
+                        .HasColumnType("bigint")
+                        .HasComment("物料id");
+
+                    b.Property<string>("icitem_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料名称");
+
+                    b.Property<string>("icitem_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料编码");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<decimal?>("quantity_in_transit")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("调拨在途数量");
+
+                    b.Property<decimal?>("sqty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("物料库存量");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("icitem_id", "icitem_name", "tenant_id", "factory_id");
+
+                    b.HasIndex("icitem_number", "fversion", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[icitem_number] IS NOT NULL AND [fversion] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.ToTable("ic_item_stock", (string)null);
+
+                    b.HasComment("物料库存表");
+                });
+
+            modelBuilder.Entity("Business.Model.MES.IC.ic_substitute", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("substitute_code")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("群组代码");
+
+                    b.Property<int?>("substitute_mode")
+                        .HasColumnType("int")
+                        .HasComment("替代方式");
+
+                    b.Property<int?>("substitute_strategy")
+                        .HasColumnType("int")
+                        .HasComment("替代策略");
+
+                    b.Property<int?>("substitute_type")
+                        .HasColumnType("int")
+                        .HasComment("替代类型");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("substitute_code", "tenant_id", "factory_id");
+
+                    b.ToTable("ic_substitute", (string)null);
+
+                    b.HasComment("替代群组");
+                });
+
+            modelBuilder.Entity("Business.Model.MES.IC.ic_substitute_group", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<int?>("main_material")
+                        .HasColumnType("int")
+                        .HasComment("主料/替代料");
+
+                    b.Property<int?>("order_num")
+                        .HasColumnType("int")
+                        .HasComment("群组优先级");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("product_line")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("产品线");
+
+                    b.Property<string>("replace_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("替代名称");
+
+                    b.Property<string>("replace_relation")
+                        .HasMaxLength(2000)
+                        .HasColumnType("nvarchar(2000)")
+                        .HasComment("替代关系");
+
+                    b.Property<string>("replace_way")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("替代方式");
+
+                    b.Property<string>("substitute_code")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("群组代码");
+
+                    b.Property<long>("substitute_group_id")
+                        .HasColumnType("bigint")
+                        .HasComment("群组主键");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<string>("use_model")
+                        .HasMaxLength(5000)
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("使用机型");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("substitute_code", "tenant_id", "factory_id");
+
+                    b.ToTable("ic_substitute_group", (string)null);
+
+                    b.HasComment("物料替代多群组");
+                });
+
+            modelBuilder.Entity("Business.Model.MES.IC.ic_substitute_group_detail", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("fversion")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("版本号");
+
+                    b.Property<long>("icitem_id")
+                        .HasColumnType("bigint")
+                        .HasComment("物料主键");
+
+                    b.Property<string>("icitem_number")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("物料编码");
+
+                    b.Property<int?>("ismain")
+                        .HasColumnType("int")
+                        .HasComment("主/替");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<decimal?>("replace_qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("替代数量");
+
+                    b.Property<int?>("seq")
+                        .HasColumnType("int")
+                        .HasComment("序号");
+
+                    b.Property<string>("substitute_code")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("群组代码");
+
+                    b.Property<long>("substitute_group_id")
+                        .HasColumnType("bigint")
+                        .HasComment("替代多群组主键");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("substitute_code", "icitem_number", "tenant_id", "factory_id");
+
+                    b.ToTable("ic_substitute_group_detail", (string)null);
+
+                    b.HasComment("物料替代多群组明细");
+                });
+
+            modelBuilder.Entity("Business.Model.Production.mes_moentry", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("fbill_no")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("订单编号");
+
+                    b.Property<long?>("fentry_id")
+                        .HasColumnType("bigint")
+                        .HasComment("订单行号");
+
+                    b.Property<long?>("moentry_moid")
+                        .HasColumnType("bigint")
+                        .HasComment("工单主表id");
+
+                    b.Property<string>("moentry_mono")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("工单编号");
+
+                    b.Property<decimal?>("morder_production_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("工单生产数量(计划数量)");
+
+                    b.Property<decimal?>("need_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("需求数量");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<decimal?>("remaining_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("剩余可用数量");
+
+                    b.Property<long?>("soentry_id")
+                        .HasColumnType("bigint")
+                        .HasComment("订单行id");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<string>("unit")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("单位");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("moentry_moid", "moentry_mono", "tenant_id", "factory_id");
+
+                    b.ToTable("mes_moentry", (string)null);
+
+                    b.HasComment("生成工单子表");
+                });
+
+            modelBuilder.Entity("Business.Model.Production.mes_mooccupy", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("fbill_no")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("订单号");
+
+                    b.Property<long?>("fentry_id")
+                        .HasColumnType("bigint")
+                        .HasComment("行号");
+
+                    b.Property<string>("fitem_name")
+                        .IsRequired()
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("物料名称");
+
+                    b.Property<string>("fitem_number")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("物料编码");
+
+                    b.Property<string>("fmodel")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("规格型号");
+
+                    b.Property<string>("moo_cbr")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("变更人");
+
+                    b.Property<string>("moo_creason")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("变更原因");
+
+                    b.Property<DateTime?>("moo_ctime")
+                        .HasColumnType("datetime2")
+                        .HasComment("变更时间");
+
+                    b.Property<DateTime?>("moo_etime")
+                        .HasColumnType("datetime2")
+                        .HasComment("结束时间");
+
+                    b.Property<long?>("moo_id_billid")
+                        .HasColumnType("bigint")
+                        .HasComment("订单id");
+
+                    b.Property<string>("moo_id_type")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("类型--原始,分配");
+
+                    b.Property<string>("moo_mo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("工单号");
+
+                    b.Property<long?>("moo_moid")
+                        .HasColumnType("bigint")
+                        .HasComment("工单id");
+
+                    b.Property<decimal?>("moo_qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("占用量");
+
+                    b.Property<int?>("moo_state")
+                        .HasColumnType("int")
+                        .HasComment("占用状态-1占用  默认0");
+
+                    b.Property<DateTime?>("moo_stime")
+                        .HasColumnType("datetime2")
+                        .HasComment("开始时间");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("moo_id_billid", "tenant_id", "factory_id");
+
+                    b.ToTable("mes_mooccupy", (string)null);
+
+                    b.HasComment("在制工单占用记录表");
+                });
+
+            modelBuilder.Entity("Business.Model.Production.mes_morder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<string>("bom_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("bom编码");
+
+                    b.Property<DateTime?>("convey_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("下达日期");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("fmodel")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("规格型号");
+
+                    b.Property<string>("fms_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("fms旧料号");
+
+                    b.Property<decimal?>("inspection_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("报检数量");
+
+                    b.Property<decimal?>("inventory_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("入库数量");
+
+                    b.Property<DateTime?>("mat_end_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("基于物料结束时间");
+
+                    b.Property<DateTime?>("mat_start_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("基于物料开始时间");
+
+                    b.Property<DateTime?>("moentry_etime")
+                        .HasColumnType("datetime2")
+                        .HasComment("生产工单结束日期");
+
+                    b.Property<long?>("moentry_prd")
+                        .HasColumnType("bigint")
+                        .HasComment("生产组织id");
+
+                    b.Property<string>("moentry_prdname")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("生产组织名称");
+
+                    b.Property<int?>("moentry_startup_status")
+                        .HasColumnType("int")
+                        .HasComment("启动状态");
+
+                    b.Property<DateTime?>("moentry_stime")
+                        .HasColumnType("datetime2")
+                        .HasComment("生产工单开始日期");
+
+                    b.Property<DateTime?>("moentry_sys_etime")
+                        .HasColumnType("datetime2")
+                        .HasComment("系统建议完工时间");
+
+                    b.Property<DateTime?>("moentry_sys_stime")
+                        .HasColumnType("datetime2")
+                        .HasComment("系统建议开工时间");
+
+                    b.Property<long?>("moentry_wrkc")
+                        .HasColumnType("bigint")
+                        .HasComment("工作中心id");
+
+                    b.Property<string>("moentry_wrkcname")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("工作中心名称");
+
+                    b.Property<string>("morder_batchno")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("工单批号--(批号管理的物料出入库要使用)");
+
+                    b.Property<DateTime?>("morder_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("生产工单日期");
+
+                    b.Property<string>("morder_fstate")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("前状态--计划、下达、完成、关闭");
+
+                    b.Property<string>("morder_icitem_type")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("工单所属物料类型");
+
+                    b.Property<decimal?>("morder_need_time")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("工单所需工时");
+
+                    b.Property<string>("morder_no")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("生产工单编号");
+
+                    b.Property<decimal?>("morder_production_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("工单生产数量(计划数量)");
+
+                    b.Property<string>("morder_progress")
+                        .HasMaxLength(1000)
+                        .HasColumnType("nvarchar(1000)")
+                        .HasComment("工单进度");
+
+                    b.Property<string>("morder_state")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("生产工单状态(订单状态:初始,下达,暂停、完成)");
+
+                    b.Property<string>("morder_type")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("生产工单类型(类型:计划工单、销售工单、委外工单、预测工单)");
+
+                    b.Property<decimal?>("need_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("需求数量");
+
+                    b.Property<decimal?>("notice_qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("已开入库通知单数量");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("overdue_Remark")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("逾期原因备注");
+
+                    b.Property<long?>("parent_id")
+                        .HasColumnType("bigint")
+                        .HasComment("上级工单id");
+
+                    b.Property<DateTime?>("pause_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("最近暂停时间");
+
+                    b.Property<decimal?>("picking_qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("已领料数量");
+
+                    b.Property<DateTime?>("planner_end_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("计划员设定结束时间");
+
+                    b.Property<string>("planner_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("计划员名称");
+
+                    b.Property<string>("planner_num")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("计划员工号");
+
+                    b.Property<DateTime?>("planner_start_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("计划员设定开始时间");
+
+                    b.Property<string>("product_code")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("产品代码");
+
+                    b.Property<string>("product_name")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("产品名称");
+
+                    b.Property<string>("project_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("项目名称");
+
+                    b.Property<decimal?>("qualified_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("合格数量");
+
+                    b.Property<DateTime?>("reality_end_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("实际结束时间");
+
+                    b.Property<DateTime?>("reality_start_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("实际开始时间");
+
+                    b.Property<long?>("relation_moid")
+                        .HasColumnType("bigint")
+                        .HasComment("关联工单id");
+
+                    b.Property<string>("relation_mono")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("关联编号");
+
+                    b.Property<decimal?>("remaining_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("剩余可用数量");
+
+                    b.Property<DateTime?>("restart_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("最近重启时间");
+
+                    b.Property<DateTime?>("start_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("开始时间");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<string>("unit")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("单位");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<int>("urgent")
+                        .HasColumnType("int")
+                        .HasComment("加急级别");
+
+                    b.Property<decimal?>("work_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("报工数量");
+
+                    b.Property<string>("work_order_type")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("工单类型(类型:发货工单、试产工单、备库工单、常规工单、返工工单)");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("morder_no", "tenant_id", "factory_id");
+
+                    b.ToTable("mes_morder", (string)null);
+
+                    b.HasComment("工单主表");
+                });
+
+            modelBuilder.Entity("Business.Model.Production.mes_oorder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<string>("bom_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("bom编码");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("ffms_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("fms旧料号");
+
+                    b.Property<decimal?>("inspection_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("报检数量");
+
+                    b.Property<decimal?>("inventory_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("入库数量");
+
+                    b.Property<int?>("moentry_on")
+                        .HasColumnType("int")
+                        .HasComment("启动状态");
+
+                    b.Property<decimal?>("morder_production_number")
+                        .HasPrecision(20, 10)
+                        .HasColumnType("decimal(20,10)")
+                        .HasComment("工单生产数量(计划数量)");
+
+                    b.Property<string>("morder_progress")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("工单进度");
+
+                    b.Property<int?>("need_icitem_status")
+                        .HasColumnType("int")
+                        .HasComment("所需物料是否充足  1-充足 0-缺料");
+
+                    b.Property<decimal?>("need_number")
+                        .HasPrecision(20, 10)
+                        .HasColumnType("decimal(20,10)")
+                        .HasComment("需求数量");
+
+                    b.Property<decimal?>("notice_qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("已开通知单数量");
+
+                    b.Property<DateTime?>("ooentry_etime")
+                        .HasColumnType("datetime2")
+                        .HasComment("计划完工日期");
+
+                    b.Property<long?>("ooentry_prd")
+                        .HasColumnType("bigint")
+                        .HasComment("生产组织");
+
+                    b.Property<string>("ooentry_prdname")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("生产组织名称");
+
+                    b.Property<DateTime?>("ooentry_stime")
+                        .HasColumnType("datetime2")
+                        .HasComment("计划开工日期");
+
+                    b.Property<long?>("ooentry_wrkc")
+                        .HasColumnType("bigint")
+                        .HasComment("工作中心id");
+
+                    b.Property<string>("ooentry_wrkcname")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("工作中心名称");
+
+                    b.Property<DateTime?>("oorder_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("委外订单日期");
+
+                    b.Property<string>("oorder_no")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("生产工单编号");
+
+                    b.Property<string>("oorder_state")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("订单状态");
+
+                    b.Property<string>("oorder_type")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("生产工单类型");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<DateTime?>("pause_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("最近暂停时间");
+
+                    b.Property<string>("planner_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("计划员名称");
+
+                    b.Property<string>("planner_num")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("计划员工号");
+
+                    b.Property<string>("product_code")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("产品代码");
+
+                    b.Property<string>("product_name")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("产品名称");
+
+                    b.Property<string>("production_unit")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("加工单位");
+
+                    b.Property<string>("production_unit_code")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("加工单位编码");
+
+                    b.Property<string>("project_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("项目名称");
+
+                    b.Property<decimal?>("qualified_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("合格数量");
+
+                    b.Property<decimal?>("remaining_number")
+                        .HasPrecision(20, 10)
+                        .HasColumnType("decimal(20,10)")
+                        .HasComment("剩余可用数量");
+
+                    b.Property<DateTime?>("restart_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("最近重启时间");
+
+                    b.Property<int?>("sent_status")
+                        .HasColumnType("int")
+                        .HasComment("发料状态 1-待发料  2-已发料");
+
+                    b.Property<long?>("sentry_id")
+                        .HasColumnType("bigint")
+                        .HasComment("订单行id");
+
+                    b.Property<string>("specification_model")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("规格型号");
+
+                    b.Property<DateTime?>("start_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("开始时间");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<string>("unit")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("单位");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<decimal?>("work_number")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("报工数量");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("mes_oorder", (string)null);
+
+                    b.HasComment("委外订单表");
+                });
+
+            modelBuilder.Entity("Business.Model.Production.mes_stockoccupy", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("fbill_no")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("订单编号");
+
+                    b.Property<long?>("fentry_id")
+                        .HasColumnType("bigint")
+                        .HasComment("订单行号");
+
+                    b.Property<string>("fitem_name")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("物料名称");
+
+                    b.Property<string>("fitem_number")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("物料编码");
+
+                    b.Property<string>("fmodel")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("规格型号");
+
+                    b.Property<decimal?>("occupyqty")
+                        .HasPrecision(20, 2)
+                        .HasColumnType("decimal(20,2)")
+                        .HasComment("占用量");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("soccupy_cby")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("变更人");
+
+                    b.Property<string>("soccupy_creason")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("变更原因");
+
+                    b.Property<DateTime?>("soccupy_ctime")
+                        .HasColumnType("datetime2")
+                        .HasComment("变更时间");
+
+                    b.Property<DateTime?>("soccupy_etime")
+                        .HasColumnType("datetime2")
+                        .HasComment("结束时间");
+
+                    b.Property<string>("soccupy_state")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("占用状态");
+
+                    b.Property<DateTime?>("soccupy_stime")
+                        .HasColumnType("datetime2")
+                        .HasComment("开始时间");
+
+                    b.Property<string>("soccupy_type")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("类型");
+
+                    b.Property<long?>("soentry_id")
+                        .HasColumnType("bigint")
+                        .HasComment("订单行id");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<long>("warehouse_id")
+                        .HasColumnType("bigint")
+                        .HasComment("仓库id");
+
+                    b.Property<string>("warehouse_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("仓库名称");
+
+                    b.Property<string>("warehouse_type")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("仓库类型");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("fbill_no", "fitem_number", "tenant_id", "factory_id");
+
+                    b.ToTable("mes_stockoccupy", (string)null);
+
+                    b.HasComment("成品库存占用表");
+                });
+
+            modelBuilder.Entity("Business.Model.Sale.crm_customer", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<string>("address")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("地址");
+
+                    b.Property<int?>("carrying_aos")
+                        .IsRequired()
+                        .HasColumnType("int")
+                        .HasComment("默认运输提前期_天");
+
+                    b.Property<string>("city")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("城市");
+
+                    b.Property<string>("contact")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("联系人");
+
+                    b.Property<string>("corperate")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("法人代表");
+
+                    b.Property<string>("country")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("国别地区");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<string>("currency")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("结算币种");
+
+                    b.Property<string>("cust_group_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("客户分组名称");
+
+                    b.Property<string>("cust_group_number")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("客户分组编号");
+
+                    b.Property<string>("cust_type")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("客户类别");
+
+                    b.Property<string>("cust_type_number")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("客户类别编码");
+
+                    b.Property<int?>("customer_level")
+                        .HasMaxLength(255)
+                        .HasColumnType("int")
+                        .HasComment("客户级别");
+
+                    b.Property<string>("customer_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("客户名称");
+
+                    b.Property<string>("customer_no")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("客户编号");
+
+                    b.Property<string>("email")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("邮件地址");
+
+                    b.Property<string>("employee_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("专营业务员");
+
+                    b.Property<string>("employee_no")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("专营业务员_工号");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("mobile")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("手机号码");
+
+                    b.Property<DateTime?>("op_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("操作时间");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("post_code")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("邮政编码");
+
+                    b.Property<string>("province")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("省份");
+
+                    b.Property<string>("region")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("区");
+
+                    b.Property<string>("sale_mode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("销售模式");
+
+                    b.Property<string>("short_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("客户简称");
+
+                    b.Property<string>("short_number")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("客户简码");
+
+                    b.Property<string>("state")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("状态");
+
+                    b.Property<string>("telephone")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("电话号码");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<decimal?>("value_add_rate")
+                        .HasPrecision(18, 10)
+                        .HasColumnType("decimal(18,10)")
+                        .HasComment("增值税率");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("customer_no", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[customer_no] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.ToTable("crm_customer", (string)null);
+
+                    b.HasComment("客户");
+                });
+
+            modelBuilder.Entity("Business.Model.Sale.crm_seorder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<DateTime?>("audit_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("审核日期");
+
+                    b.Property<string>("auditor")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("审核人");
+
+                    b.Property<string>("bill_from")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("订单来源");
+
+                    b.Property<string>("bill_no")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("订单编号");
+
+                    b.Property<string>("biller")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("制单人");
+
+                    b.Property<bool>("closed")
+                        .HasColumnType("bit")
+                        .HasComment("是否关闭1关闭0未关闭");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<long?>("create_dept")
+                        .HasColumnType("bigint")
+                        .HasComment("创建部门id");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<int?>("currency")
+                        .HasMaxLength(50)
+                        .HasColumnType("int")
+                        .HasComment("币种");
+
+                    b.Property<int?>("custom_id")
+                        .HasColumnType("int")
+                        .HasComment("客户id");
+
+                    b.Property<int?>("custom_level")
+                        .HasMaxLength(80)
+                        .HasColumnType("int")
+                        .HasComment("客户级别");
+
+                    b.Property<string>("custom_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("客户名称");
+
+                    b.Property<string>("custom_no")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("客户编码");
+
+                    b.Property<DateTime?>("date")
+                        .HasColumnType("datetime2")
+                        .HasComment("签订日期");
+
+                    b.Property<string>("emp_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("业务员名称");
+
+                    b.Property<string>("emp_no")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("业务员工号");
+
+                    b.Property<decimal?>("exchange_rate")
+                        .HasPrecision(20, 8)
+                        .HasColumnType("decimal(20,8)")
+                        .HasComment("汇率");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<DateTime?>("op_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("操作时间");
+
+                    b.Property<int?>("order_type")
+                        .HasColumnType("int")
+                        .HasComment("订单类别(销售、计划)");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<int?>("out_stock_type")
+                        .HasColumnType("int")
+                        .HasComment("销售出库类型");
+
+                    b.Property<string>("project_code")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("项目编号");
+
+                    b.Property<string>("project_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("项目名称");
+
+                    b.Property<DateTime?>("rdate")
+                        .HasColumnType("datetime2")
+                        .HasComment("采购下单日期");
+
+                    b.Property<string>("sale_dept_code")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("销售部门编号");
+
+                    b.Property<long?>("sale_dept_id")
+                        .HasColumnType("bigint")
+                        .HasComment("销售部门id");
+
+                    b.Property<string>("sale_dept_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("销售部门名称");
+
+                    b.Property<int?>("sale_style")
+                        .HasColumnType("int")
+                        .HasComment("销售订单类型");
+
+                    b.Property<string>("sale_style_no")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("销售订单类型编码");
+
+                    b.Property<int?>("status")
+                        .HasColumnType("int")
+                        .HasComment("订单状态");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<int?>("trade_type")
+                        .HasColumnType("int")
+                        .HasComment("贸易类型");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<int>("urgent")
+                        .HasColumnType("int")
+                        .HasComment("加急级别");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("bill_no", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[bill_no] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.ToTable("crm_seorder", (string)null);
+
+                    b.HasComment("销售订单表");
+                });
+
+            modelBuilder.Entity("Business.Model.Sale.crm_seorderentry", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<DateTime?>("adjust_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("调整建议交期");
+
+                    b.Property<decimal?>("amount")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("金额");
+
+                    b.Property<decimal?>("aux_price_discount")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("实际含税单价");
+
+                    b.Property<string>("bill_no")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("销售订单编号");
+
+                    b.Property<string>("bom_number")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("BOM编号");
+
+                    b.Property<string>("contract_no")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("合同编号");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<long?>("create_dept")
+                        .HasColumnType("bigint")
+                        .HasComment("创建部门id");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<string>("custom_order_bill_no")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("客户订单号");
+
+                    b.Property<int?>("custom_order_entryid")
+                        .HasColumnType("int")
+                        .HasComment("客户订单行号");
+
+                    b.Property<string>("custom_order_itemno")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("客户料号");
+
+                    b.Property<DateTime?>("date")
+                        .HasColumnType("datetime2")
+                        .HasComment("最终交货日期");
+
+                    b.Property<decimal?>("deliver_count")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("发货数量(已出库数量)");
+
+                    b.Property<decimal?>("deliver_notice_count")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("发货通知单数量");
+
+                    b.Property<decimal?>("discount_amount")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("折扣额");
+
+                    b.Property<decimal?>("discount_rate")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("折扣率");
+
+                    b.Property<int?>("entry_seq")
+                        .HasColumnType("int")
+                        .HasComment("行号");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("fms_number")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("FMS旧料号");
+
+                    b.Property<bool?>("is_checked")
+                        .HasColumnType("bit")
+                        .HasComment("是否完成检测,0未完成,1完成");
+
+                    b.Property<string>("item_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("产品名称");
+
+                    b.Property<string>("item_number")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("产品代码");
+
+                    b.Property<string>("map_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("代码名称");
+
+                    b.Property<string>("map_number")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("对应代码");
+
+                    b.Property<bool?>("mrp_closed")
+                        .HasColumnType("bit")
+                        .HasComment("mrp关闭");
+
+                    b.Property<DateTime?>("op_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("操作时间");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("out_stock_type")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("出库类型");
+
+                    b.Property<DateTime?>("plan_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("客户要求交期");
+
+                    b.Property<string>("planner_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("计划员");
+
+                    b.Property<string>("planner_no")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("计划员_工号");
+
+                    b.Property<decimal?>("price")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("单价");
+
+                    b.Property<string>("progress")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("订单进度");
+
+                    b.Property<decimal?>("qty")
+                        .HasPrecision(20, 8)
+                        .HasColumnType("decimal(20,8)")
+                        .HasComment("订单数量");
+
+                    b.Property<string>("remark")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("备注");
+
+                    b.Property<int?>("rnumber")
+                        .HasColumnType("int")
+                        .HasComment("评审次数");
+
+                    b.Property<int?>("rstate")
+                        .HasColumnType("int")
+                        .HasComment("评审状态");
+
+                    b.Property<string>("se_reject_reason")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("业务员工号");
+
+                    b.Property<long?>("seorder_id")
+                        .HasColumnType("bigint")
+                        .HasComment("销售订单id");
+
+                    b.Property<string>("soure_bill_no")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("源单编号");
+
+                    b.Property<string>("specification")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("规格型号");
+
+                    b.Property<bool?>("state")
+                        .HasColumnType("bit")
+                        .HasComment("数据状态标识 0停用 1启用");
+
+                    b.Property<DateTime?>("sys_capacity_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("系统建议交期(产能)");
+
+                    b.Property<DateTime?>("sys_material_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("系统建议交期(物料)");
+
+                    b.Property<decimal?>("tax_amtount")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("销项税额");
+
+                    b.Property<decimal?>("tax_price")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("含税单价");
+
+                    b.Property<decimal?>("tax_rate")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("税率");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<decimal?>("total_amount")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("价税合计");
+
+                    b.Property<string>("unit")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("单位");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<int?>("urgent")
+                        .HasColumnType("int")
+                        .HasComment("加急级别");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("bill_no", "entry_seq", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[bill_no] IS NOT NULL AND [entry_seq] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.HasIndex("seorder_id", "bill_no", "item_number", "tenant_id", "factory_id");
+
+                    b.ToTable("crm_seorderentry", (string)null);
+
+                    b.HasComment("销售订单明细表");
+                });
+
+            modelBuilder.Entity("Business.Model.SRM.srm_po_list", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<string>("ItemNum")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("物料编码");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("currencytype")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("币别");
+
+                    b.Property<int?>("deliveryconfirmstate")
+                        .HasColumnType("int")
+                        .HasComment("交期确认状态");
+
+                    b.Property<decimal?>("esqty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("已入库数量");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<long?>("icitem_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("物料id");
+
+                    b.Property<string>("icitem_name")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("物料名称");
+
+                    b.Property<int?>("logisticsstate")
+                        .HasColumnType("int")
+                        .HasComment("物流状态");
+
+                    b.Property<string>("model")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("规格型号");
+
+                    b.Property<decimal?>("netprice")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("净价");
+
+                    b.Property<string>("number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料编码");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<decimal?>("plan_qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("计划数量");
+
+                    b.Property<string>("po_billno")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("po单号");
+
+                    b.Property<long?>("po_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("po单id");
+
+                    b.Property<string>("po_mono")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("关联工单号");
+
+                    b.Property<int?>("polist_row")
+                        .HasColumnType("int")
+                        .HasComment("行号");
+
+                    b.Property<string>("pr_billno")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("pr申请单号");
+
+                    b.Property<long?>("pr_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("pr申请单id");
+
+                    b.Property<long?>("pr_purchase_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("供应商id");
+
+                    b.Property<string>("pr_purchase_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商名称");
+
+                    b.Property<decimal?>("price")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("含税单价");
+
+                    b.Property<DateTime?>("procurement_rarr_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("采购到货日期");
+
+                    b.Property<DateTime?>("pur_affirmdate")
+                        .HasColumnType("datetime2")
+                        .HasComment("采购确认到货日期");
+
+                    b.Property<DateTime?>("purchase_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("供应商交期");
+
+                    b.Property<decimal?>("qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("订单数量");
+
+                    b.Property<DateTime?>("rarrdate")
+                        .HasColumnType("datetime2")
+                        .HasComment("需求到货日期");
+
+                    b.Property<decimal?>("rate")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("税率");
+
+                    b.Property<int>("rnumber")
+                        .HasColumnType("int")
+                        .HasComment("评审次数");
+
+                    b.Property<DateTime?>("rparrive_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("再计划到货日期");
+
+                    b.Property<decimal?>("rqty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("已收货数量");
+
+                    b.Property<int?>("rstate")
+                        .HasColumnType("int")
+                        .HasComment("评审状态");
+
+                    b.Property<decimal?>("shippedqty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("已发货数量");
+
+                    b.Property<int?>("state")
+                        .HasColumnType("int")
+                        .HasComment("数据状态标识");
+
+                    b.Property<long?>("stock_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("收货仓库id");
+
+                    b.Property<string>("stock_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("收货仓库名称");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<decimal?>("total_price")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("总价");
+
+                    b.Property<string>("unit")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("单位");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("po_billno", "number", "tenant_id", "factory_id");
+
+                    b.HasIndex("po_billno", "polist_row", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[po_billno] IS NOT NULL AND [polist_row] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.ToTable("srm_po_list", (string)null);
+
+                    b.HasComment("采购订单明细详情");
+                });
+
+            modelBuilder.Entity("Business.Model.SRM.srm_po_main", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<int?>("bill_type")
+                        .HasColumnType("int")
+                        .HasComment("金蝶单据类型值");
+
+                    b.Property<int?>("confirmstate")
+                        .HasColumnType("int")
+                        .HasComment("确认状态");
+
+                    b.Property<string>("contact")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商联系人");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("currency")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("币别");
+
+                    b.Property<string>("deliveryaddress")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("收货地址");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<int?>("financialstate")
+                        .HasColumnType("int")
+                        .HasComment("财务状态");
+
+                    b.Property<int?>("logisticsstate")
+                        .HasColumnType("int")
+                        .HasComment("物流状态");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("po_billno")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("PO单号");
+
+                    b.Property<long?>("po_delivery")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("交货方式");
+
+                    b.Property<int?>("po_express")
+                        .HasColumnType("int")
+                        .HasComment("是否加急");
+
+                    b.Property<string>("po_note")
+                        .HasMaxLength(1000)
+                        .HasColumnType("nvarchar(1000)")
+                        .HasComment("备注");
+
+                    b.Property<int?>("po_order_type")
+                        .HasColumnType("int")
+                        .HasComment("单据类型");
+
+                    b.Property<string>("po_purchaser")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购员");
+
+                    b.Property<string>("po_purchaser_no")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购员工号");
+
+                    b.Property<DateTime?>("po_ssend_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("下单日期");
+
+                    b.Property<decimal?>("po_tax_rate")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("税率");
+
+                    b.Property<decimal?>("po_total")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("订单总价");
+
+                    b.Property<long?>("purchasing_orgid")
+                        .HasColumnType("bigint")
+                        .HasComment("采购组织id");
+
+                    b.Property<string>("purchasing_orgname")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("采购组织名称");
+
+                    b.Property<DateTime?>("review_rtime")
+                        .HasColumnType("datetime2")
+                        .HasComment("评审通过时间");
+
+                    b.Property<decimal?>("rnumber")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("评审次数");
+
+                    b.Property<int?>("rstate")
+                        .HasColumnType("int")
+                        .HasComment("评审状态");
+
+                    b.Property<int?>("state")
+                        .HasColumnType("int")
+                        .HasComment("数据状态");
+
+                    b.Property<long?>("supplier_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("供应商id");
+
+                    b.Property<string>("supplier_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商名称");
+
+                    b.Property<string>("supplier_no")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商编号");
+
+                    b.Property<string>("supplierdddress")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("供应地址");
+
+                    b.Property<string>("suppliertelephone")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商联系人电话");
+
+                    b.Property<string>("telephone")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购联系人电话");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("po_billno", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[po_billno] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.ToTable("srm_po_main", (string)null);
+
+                    b.HasComment("采购订单");
+                });
+
+            modelBuilder.Entity("Business.Model.SRM.srm_po_occupy", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("bill_no")
+                        .HasColumnType("bigint")
+                        .HasComment("客户订单id");
+
+                    b.Property<string>("cby")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("变更人");
+
+                    b.Property<string>("creason")
+                        .HasMaxLength(1000)
+                        .HasColumnType("nvarchar(1000)")
+                        .HasComment("变更原因");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<DateTime?>("ctime")
+                        .HasColumnType("datetime2")
+                        .HasComment("变更时间");
+
+                    b.Property<long?>("eid")
+                        .HasColumnType("bigint")
+                        .HasComment("客户订单行id");
+
+                    b.Property<int>("entry_id")
+                        .HasColumnType("int")
+                        .HasComment("行号");
+
+                    b.Property<DateTime?>("etime")
+                        .HasColumnType("datetime2")
+                        .HasComment("结束时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<long?>("morder_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工单ID");
+
+                    b.Property<string>("morder_mo")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("工单编号");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<long?>("polist_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("采购订单id");
+
+                    b.Property<int?>("polist_row")
+                        .HasColumnType("int")
+                        .HasComment("采购订单行号");
+
+                    b.Property<decimal?>("qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("占用量");
+
+                    b.Property<int?>("state")
+                        .HasColumnType("int")
+                        .HasComment("占用状态");
+
+                    b.Property<DateTime?>("stime")
+                        .HasColumnType("datetime2")
+                        .HasComment("开始时间");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<string>("type")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("类型");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("polist_id", "tenant_id", "factory_id");
+
+                    b.ToTable("srm_po_occupy", (string)null);
+
+                    b.HasComment("采购订单占用详情");
+                });
+
+            modelBuilder.Entity("Business.Model.SRM.srm_pr_main", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("currencytype")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("币种");
+
+                    b.Property<int?>("entity_id")
+                        .HasColumnType("int")
+                        .HasComment("工单行号");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<long?>("icitem_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("物料id");
+
+                    b.Property<string>("icitem_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料名称");
+
+                    b.Property<decimal?>("old_apply_aqty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("已申请数量");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<decimal?>("pr_aqty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("申请数量");
+
+                    b.Property<string>("pr_billno")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("pr单号");
+
+                    b.Property<DateTime?>("pr_bsarrive_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("采购员建议到货日期");
+
+                    b.Property<string>("pr_mono")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("关联工单号");
+
+                    b.Property<DateTime?>("pr_oarrive_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("订单到货日期");
+
+                    b.Property<int?>("pr_order_type")
+                        .HasColumnType("int")
+                        .HasComment("单据类型");
+
+                    b.Property<decimal?>("pr_orderprice")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("订单价格(含税)");
+
+                    b.Property<DateTime?>("pr_parrive_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("计划到达日期");
+
+                    b.Property<decimal?>("pr_price")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("采购净价(不含税)");
+
+                    b.Property<DateTime?>("pr_psend_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("计划下单日期");
+
+                    b.Property<DateTime?>("pr_pur_affirm_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("采购确认到货日期");
+
+                    b.Property<long?>("pr_purchaseid")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("供应商id");
+
+                    b.Property<string>("pr_purchasename")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商名称");
+
+                    b.Property<string>("pr_purchasenumber")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商编码");
+
+                    b.Property<string>("pr_purchaser")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购员");
+
+                    b.Property<string>("pr_purchaser_num")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购员工号");
+
+                    b.Property<DateTime?>("pr_rarrive_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("需求到货日期");
+
+                    b.Property<decimal?>("pr_rate")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("税率");
+
+                    b.Property<DateTime?>("pr_rparrive_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("再计划到货日期");
+
+                    b.Property<decimal?>("pr_rqty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("需求数量");
+
+                    b.Property<string>("pr_rreason")
+                        .HasMaxLength(1000)
+                        .HasColumnType("nvarchar(1000)")
+                        .HasComment("拒绝原因");
+
+                    b.Property<DateTime?>("pr_sarrive_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("系统建议到达日期");
+
+                    b.Property<decimal?>("pr_sqty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("建议数量");
+
+                    b.Property<DateTime?>("pr_ssend_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("系统建议下单日期");
+
+                    b.Property<decimal?>("pr_sysprice")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("系统价格(含税)");
+
+                    b.Property<int?>("pr_type")
+                        .HasColumnType("int")
+                        .HasComment("申请类型");
+
+                    b.Property<string>("pr_unit")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("单位");
+
+                    b.Property<string>("remark")
+                        .HasMaxLength(1000)
+                        .HasColumnType("nvarchar(1000)")
+                        .HasComment("备注");
+
+                    b.Property<decimal?>("secInv_ratio")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("安全库存触发采购比例");
+
+                    b.Property<long?>("sentry_id")
+                        .HasColumnType("bigint")
+                        .HasComment("订单行id");
+
+                    b.Property<int?>("state")
+                        .HasColumnType("int")
+                        .HasComment("状态");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("pr_billno", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[pr_billno] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.HasIndex("pr_billno", "pr_purchasenumber", "tenant_id", "factory_id");
+
+                    b.ToTable("srm_pr_main", (string)null);
+
+                    b.HasComment("采购申请单");
+                });
+
+            modelBuilder.Entity("Business.Model.SRM.srm_purchase", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<decimal?>("batch_append_qty")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("批量增量");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("currency_type")
+                        .HasColumnType("bigint")
+                        .HasComment("币种");
+
+                    b.Property<string>("factory_code")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("工厂编码");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<long>("icitem_id")
+                        .HasColumnType("bigint")
+                        .HasComment("物料id");
+
+                    b.Property<string>("icitem_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料名称");
+
+                    b.Property<string>("icitem_number")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("物料编码");
+
+                    b.Property<decimal?>("netpurchase_price")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("采购净价(不含税)");
+
+                    b.Property<string>("order_dept")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购部门");
+
+                    b.Property<decimal?>("order_price")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("采购单价");
+
+                    b.Property<string>("order_rector_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购负责人");
+
+                    b.Property<string>("order_rector_num")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购负责人_工号");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("purchase_unit")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购计量单位");
+
+                    b.Property<string>("purcher")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购员");
+
+                    b.Property<string>("purchgroup")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购组");
+
+                    b.Property<decimal?>("qty_min")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("最小订货量");
+
+                    b.Property<decimal?>("sale_price")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("销售单价");
+
+                    b.Property<string>("sourcelist_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("货源清单编号");
+
+                    b.Property<long?>("supplier_id")
+                        .HasColumnType("bigint")
+                        .HasComment("供应商id");
+
+                    b.Property<string>("supplier_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商名称");
+
+                    b.Property<string>("supplier_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商编码");
+
+                    b.Property<decimal?>("taxrate")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("税率");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("icitem_id", "supplier_number", "tenant_id", "factory_id");
+
+                    b.HasIndex("sourcelist_number", "icitem_number", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[sourcelist_number] IS NOT NULL AND [icitem_number] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.ToTable("srm_purchase", (string)null);
+
+                    b.HasComment("物料采购报价单");
+                });
+
+            modelBuilder.Entity("Business.Model.SRM.srm_supplier", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<string>("addr_en")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("英文地址");
+
+                    b.Property<DateTime?>("approve_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("批准日期");
+
+                    b.Property<bool?>("auto_create_mr")
+                        .HasColumnType("bit")
+                        .HasComment("交货自动生成收货单据");
+
+                    b.Property<bool?>("auto_validate_order")
+                        .HasColumnType("bit")
+                        .HasComment("自动确认订单");
+
+                    b.Property<string>("bank")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("开户银行");
+
+                    b.Property<string>("bank_account")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("银行账号");
+
+                    b.Property<DateTime?>("begin_day")
+                        .HasColumnType("datetime2")
+                        .HasComment("生效日期");
+
+                    b.Property<string>("branch_info")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("分支机构信息");
+
+                    b.Property<string>("checker")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("审核人");
+
+                    b.Property<string>("company_type")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("公司类别");
+
+                    b.Property<string>("contact")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("联系人");
+
+                    b.Property<string>("country")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("国别地区");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<string>("currency")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("结算币种");
+
+                    b.Property<string>("department")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("分管部门");
+
+                    b.Property<string>("email")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("邮件地址");
+
+                    b.Property<string>("employee_name")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("专营业务员");
+
+                    b.Property<string>("employee_no")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("专营业务员_工号");
+
+                    b.Property<DateTime?>("end_day")
+                        .HasColumnType("datetime2")
+                        .HasComment("失效日期");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("fax")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("传真号码");
+
+                    b.Property<bool?>("isuse_supplier_portal")
+                        .HasColumnType("bit")
+                        .HasComment("启用供应商门户");
+
+                    b.Property<string>("licence")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("营业执照");
+
+                    b.Property<string>("mobile")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("移动电话");
+
+                    b.Property<string>("name_en")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("英文名称");
+
+                    b.Property<DateTime?>("op_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("操作时间");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("po_mode")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("采购模式");
+
+                    b.Property<string>("post_code")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("邮政编码");
+
+                    b.Property<string>("region")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("区域");
+
+                    b.Property<string>("regmark")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("注册商标");
+
+                    b.Property<DateTime?>("regster_date")
+                        .HasColumnType("datetime2")
+                        .HasComment("注册日期");
+
+                    b.Property<string>("settlement")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("结算方式");
+
+                    b.Property<string>("state")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("状态");
+
+                    b.Property<string>("stockid_assignee")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("受托代销虚仓");
+
+                    b.Property<string>("supplier_address")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("供应商地址");
+
+                    b.Property<string>("supplier_full_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("供应商全称");
+
+                    b.Property<string>("supplier_help_code")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商助记码");
+
+                    b.Property<string>("supplier_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("供应商名称");
+
+                    b.Property<string>("supplier_no")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商编号");
+
+                    b.Property<string>("supplier_short_name")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("供应商简称");
+
+                    b.Property<string>("supply_grade")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商等级");
+
+                    b.Property<string>("supply_type")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应类别");
+
+                    b.Property<string>("taxid")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("税务登记号");
+
+                    b.Property<string>("telephone")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("联系电话");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<string>("trade")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("行业");
+
+                    b.Property<string>("type")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("供应商分类");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<decimal?>("value_add_rate")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("增值税率");
+
+                    b.Property<string>("vmi_stock")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("VMI仓");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("supplier_no", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[supplier_no] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+                    b.ToTable("srm_supplier", (string)null);
+
+                    b.HasComment("供应商");
+                });
+
+            modelBuilder.Entity("Business.Model.Tech.mes_process", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("long_desc")
+                        .HasMaxLength(2000)
+                        .HasColumnType("nvarchar(2000)")
+                        .HasComment("详细描述");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("proc_name")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("工序名称");
+
+                    b.Property<string>("short_desc")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("简述");
+
+                    b.Property<string>("subids")
+                        .HasMaxLength(2000)
+                        .HasColumnType("nvarchar(2000)")
+                        .HasComment("组合工序id");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("mes_process", (string)null);
+
+                    b.HasComment("工序表");
+                });
+
+            modelBuilder.Entity("Business.Model.Tech.mes_tech_process", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<decimal?>("ct")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("节拍时间");
+
+                    b.Property<decimal?>("effect_ratio")
+                        .HasPrecision(10, 4)
+                        .HasColumnType("decimal(10,4)")
+                        .HasComment("效率系数");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<int?>("is_schedule")
+                        .IsRequired()
+                        .HasColumnType("int")
+                        .HasComment("是否需要排产:1-是;0-否");
+
+                    b.Property<int?>("level")
+                        .IsRequired()
+                        .HasColumnType("int")
+                        .HasComment("组合层级");
+
+                    b.Property<decimal?>("lq")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("前置最小数量");
+
+                    b.Property<decimal?>("lqt")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("前置等待时间");
+
+                    b.Property<int?>("maxworkshop")
+                        .HasColumnType("int")
+                        .HasComment("最大并行工位数");
+
+                    b.Property<int?>("mototrack")
+                        .HasColumnType("int")
+                        .HasComment("是否需要跟踪工序");
+
+                    b.Property<int?>("needqc")
+                        .HasColumnType("int")
+                        .HasComment("是否需要质检");
+
+                    b.Property<long?>("nextprocid")
+                        .HasColumnType("bigint")
+                        .HasComment("下一工序id");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<long?>("parentprocid")
+                        .HasColumnType("bigint")
+                        .HasComment("父级工序id");
+
+                    b.Property<long?>("proc_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("工序主键");
+
+                    b.Property<decimal?>("readytime")
+                        .HasPrecision(20, 8)
+                        .HasColumnType("decimal(20,8)")
+                        .HasComment("前置准备时间");
+
+                    b.Property<long?>("tech_id")
+                        .IsRequired()
+                        .HasColumnType("bigint")
+                        .HasComment("工艺主键");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<decimal?>("upe")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("一次可加工数量");
+
+                    b.Property<decimal?>("uph")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("UPH");
+
+                    b.Property<decimal?>("upp")
+                        .HasPrecision(23, 10)
+                        .HasColumnType("decimal(23,10)")
+                        .HasComment("子工序加工数量");
+
+                    b.Property<int?>("wctype")
+                        .HasColumnType("int")
+                        .HasComment("工作中心类型");
+
+                    b.Property<int?>("wsinuse")
+                        .HasColumnType("int")
+                        .HasComment("实际运行工位数");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("mes_tech_process", (string)null);
+
+                    b.HasComment("工艺关联工序表");
+                });
+
+            modelBuilder.Entity("Business.Model.Tech.mes_technique", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<string>("bom")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("产品");
+
+                    b.Property<string>("bomver")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("产品版本");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<string>("desc")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("描述");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<int?>("level")
+                        .HasColumnType("int")
+                        .HasComment("效率计算层级");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("tech_name")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("工艺路径名称");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("mes_technique", (string)null);
+
+                    b.HasComment("工艺路径表");
+                });
+
+            modelBuilder.Entity("Business.Model.Tech.mes_workshop", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bit")
+                        .HasDefaultValue(false)
+                        .HasColumnName("IsDeleted")
+                        .HasComment("删除标识");
+
+                    b.Property<string>("building")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("楼栋");
+
+                    b.Property<long?>("create_by")
+                        .HasColumnType("bigint")
+                        .HasComment("创建人id");
+
+                    b.Property<string>("create_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("创建人名称");
+
+                    b.Property<DateTime?>("create_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("创建时间");
+
+                    b.Property<long?>("factory_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工厂ID");
+
+                    b.Property<string>("floor")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("楼层");
+
+                    b.Property<string>("geoinfo")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("坐标");
+
+                    b.Property<string>("name")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("工位名称");
+
+                    b.Property<long?>("org_id")
+                        .HasColumnType("bigint")
+                        .HasComment("组织ID");
+
+                    b.Property<string>("subids")
+                        .HasMaxLength(2000)
+                        .HasColumnType("nvarchar(2000)")
+                        .HasComment("组合工位ids");
+
+                    b.Property<long>("tenant_id")
+                        .HasColumnType("bigint")
+                        .HasComment("企业ID");
+
+                    b.Property<long?>("update_by")
+                        .HasColumnType("bigint")
+                        .HasComment("修改人");
+
+                    b.Property<string>("update_by_name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("修改人名称");
+
+                    b.Property<DateTime?>("update_time")
+                        .HasColumnType("datetime2")
+                        .HasComment("修改时间");
+
+                    b.Property<long?>("work_calendar_id")
+                        .HasColumnType("bigint")
+                        .HasComment("工作日历id");
+
+                    b.Property<string>("zone")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("区域");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("mes_workshop", (string)null);
+
+                    b.HasComment("工位表(工作中心)");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}

+ 297 - 0
MicroServices/Business/Business.Host/Migrations/20230619062335_AddIndex.cs

@@ -0,0 +1,297 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Business.Migrations
+{
+    public partial class AddIndex : Migration
+    {
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "ic_item_inventory");
+
+            migrationBuilder.DropIndex(
+                name: "IX_srm_supplier_supplier_no_tenant_id_factory_id",
+                table: "srm_supplier");
+
+            migrationBuilder.DropIndex(
+                name: "IX_srm_po_main_po_billno_tenant_id_factory_id",
+                table: "srm_po_main");
+
+            migrationBuilder.DropIndex(
+                name: "IX_ic_bom_bom_number_item_number_version_tenant_id_factory_id",
+                table: "ic_bom");
+
+            migrationBuilder.DropIndex(
+                name: "IX_crm_seorder_bill_no_tenant_id_factory_id",
+                table: "crm_seorder");
+
+            migrationBuilder.DropIndex(
+                name: "IX_crm_customer_customer_no_tenant_id_factory_id",
+                table: "crm_customer");
+
+            migrationBuilder.DropColumn(
+                name: "factory_fode",
+                table: "ic_item_stock");
+
+            migrationBuilder.AddColumn<string>(
+                name: "number",
+                table: "srm_purchase",
+                type: "nvarchar(20)",
+                maxLength: 20,
+                nullable: true,
+                comment: "物料编码");
+
+            migrationBuilder.AddColumn<string>(
+                name: "fversion",
+                table: "ic_substitute_group_detail",
+                type: "nvarchar(80)",
+                maxLength: 80,
+                nullable: true,
+                comment: "版本号");
+
+            migrationBuilder.AddColumn<string>(
+                name: "fversion",
+                table: "ic_item_stock",
+                type: "nvarchar(80)",
+                maxLength: 80,
+                nullable: true,
+                comment: "版本号");
+
+            migrationBuilder.AddColumn<string>(
+                name: "icitem_number",
+                table: "ic_item_stock",
+                type: "nvarchar(80)",
+                maxLength: 80,
+                nullable: true,
+                comment: "物料编码");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_srm_supplier_supplier_no_tenant_id_factory_id",
+                table: "srm_supplier",
+                columns: new[] { "supplier_no", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[supplier_no] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_srm_purchase_supplier_number_number_tenant_id_factory_id",
+                table: "srm_purchase",
+                columns: new[] { "supplier_number", "number", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[supplier_number] IS NOT NULL AND [number] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_srm_pr_main_pr_billno_tenant_id_factory_id",
+                table: "srm_pr_main",
+                columns: new[] { "pr_billno", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[pr_billno] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_srm_po_main_po_billno_tenant_id_factory_id",
+                table: "srm_po_main",
+                columns: new[] { "po_billno", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[po_billno] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_srm_po_list_po_billno_polist_row_tenant_id_factory_id",
+                table: "srm_po_list",
+                columns: new[] { "po_billno", "polist_row", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[po_billno] IS NOT NULL AND [polist_row] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ic_item_stock_icitem_number_fversion_tenant_id_factory_id",
+                table: "ic_item_stock",
+                columns: new[] { "icitem_number", "fversion", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[icitem_number] IS NOT NULL AND [fversion] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ic_item_number_fversion_tenant_id_factory_id",
+                table: "ic_item",
+                columns: new[] { "number", "fversion", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[number] IS NOT NULL AND [fversion] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ic_bom_child_bom_number_item_number_version_tenant_id_factory_id",
+                table: "ic_bom_child",
+                columns: new[] { "bom_number", "item_number", "version", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[bom_number] IS NOT NULL AND [item_number] IS NOT NULL AND [version] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ic_bom_bom_number_item_number_version_tenant_id_factory_id",
+                table: "ic_bom",
+                columns: new[] { "bom_number", "item_number", "version", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[bom_number] IS NOT NULL AND [item_number] IS NOT NULL AND [version] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_crm_seorderentry_bill_no_entry_seq_tenant_id_factory_id",
+                table: "crm_seorderentry",
+                columns: new[] { "bill_no", "entry_seq", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[bill_no] IS NOT NULL AND [entry_seq] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_crm_seorder_bill_no_tenant_id_factory_id",
+                table: "crm_seorder",
+                columns: new[] { "bill_no", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[bill_no] IS NOT NULL AND [factory_id] IS NOT NULL");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_crm_customer_customer_no_tenant_id_factory_id",
+                table: "crm_customer",
+                columns: new[] { "customer_no", "tenant_id", "factory_id" },
+                unique: true,
+                filter: "[customer_no] IS NOT NULL AND [factory_id] IS NOT NULL");
+        }
+
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropIndex(
+                name: "IX_srm_supplier_supplier_no_tenant_id_factory_id",
+                table: "srm_supplier");
+
+            migrationBuilder.DropIndex(
+                name: "IX_srm_purchase_sourcelist_number_icitem_number_tenant_id_factory_id",
+                table: "srm_purchase");
+
+            migrationBuilder.DropIndex(
+                name: "IX_srm_pr_main_pr_billno_tenant_id_factory_id",
+                table: "srm_pr_main");
+
+            migrationBuilder.DropIndex(
+                name: "IX_srm_po_main_po_billno_tenant_id_factory_id",
+                table: "srm_po_main");
+
+            migrationBuilder.DropIndex(
+                name: "IX_srm_po_list_po_billno_polist_row_tenant_id_factory_id",
+                table: "srm_po_list");
+
+            migrationBuilder.DropIndex(
+                name: "IX_ic_item_stock_icitem_number_fversion_tenant_id_factory_id",
+                table: "ic_item_stock");
+
+            migrationBuilder.DropIndex(
+                name: "IX_ic_item_number_fversion_tenant_id_factory_id",
+                table: "ic_item");
+
+            migrationBuilder.DropIndex(
+                name: "IX_ic_bom_child_bom_number_item_number_version_tenant_id_factory_id",
+                table: "ic_bom_child");
+
+            migrationBuilder.DropIndex(
+                name: "IX_ic_bom_bom_number_item_number_version_tenant_id_factory_id",
+                table: "ic_bom");
+
+            migrationBuilder.DropIndex(
+                name: "IX_crm_seorderentry_bill_no_entry_seq_tenant_id_factory_id",
+                table: "crm_seorderentry");
+
+            migrationBuilder.DropIndex(
+                name: "IX_crm_seorder_bill_no_tenant_id_factory_id",
+                table: "crm_seorder");
+
+            migrationBuilder.DropIndex(
+                name: "IX_crm_customer_customer_no_tenant_id_factory_id",
+                table: "crm_customer");
+
+            migrationBuilder.DropColumn(
+                name: "icitem_number",
+                table: "srm_purchase");
+
+            migrationBuilder.DropColumn(
+                name: "fversion",
+                table: "ic_substitute_group_detail");
+
+            migrationBuilder.DropColumn(
+                name: "fversion",
+                table: "ic_item_stock");
+
+            migrationBuilder.DropColumn(
+                name: "icitem_number",
+                table: "ic_item_stock");
+
+            migrationBuilder.AddColumn<string>(
+                name: "factory_fode",
+                table: "ic_item_stock",
+                type: "nvarchar(80)",
+                maxLength: 80,
+                nullable: true,
+                comment: "工厂编码");
+
+            migrationBuilder.CreateTable(
+                name: "ic_item_inventory",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false, comment: "删除标识"),
+                    bal = table.Column<decimal>(type: "decimal(23,10)", precision: 23, scale: 10, nullable: true, comment: "金额"),
+                    batch_no = table.Column<string>(type: "nvarchar(80)", maxLength: 80, nullable: true, comment: "批次号"),
+                    create_by = table.Column<long>(type: "bigint", nullable: true, comment: "创建人id"),
+                    create_by_name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "创建人名称"),
+                    create_time = table.Column<DateTime>(type: "datetime2", nullable: true, comment: "创建时间"),
+                    factory_id = table.Column<long>(type: "bigint", nullable: true, comment: "工厂ID"),
+                    icitem_stock_id = table.Column<long>(type: "bigint", nullable: false, comment: "物料库存主键"),
+                    kf_date = table.Column<DateTime>(type: "datetime2", nullable: true, comment: "保质期时间"),
+                    kf_period = table.Column<decimal>(type: "decimal(23,10)", precision: 23, scale: 10, nullable: true, comment: "保质期时长"),
+                    org_id = table.Column<long>(type: "bigint", nullable: true, comment: "组织ID"),
+                    qty = table.Column<decimal>(type: "decimal(23,10)", precision: 23, scale: 10, nullable: true, comment: "数量"),
+                    qty_lock = table.Column<decimal>(type: "decimal(23,10)", precision: 23, scale: 10, nullable: true, comment: "锁定库存"),
+                    rq = table.Column<DateTime>(type: "datetime2", nullable: true, comment: "日期"),
+                    sec_qty = table.Column<decimal>(type: "decimal(23,10)", precision: 23, scale: 10, nullable: true, comment: "安全库存"),
+                    stock_id = table.Column<long>(type: "bigint", nullable: false, comment: "仓库id"),
+                    stock_name = table.Column<string>(type: "nvarchar(80)", maxLength: 80, nullable: true, comment: "仓库名称"),
+                    stock_place_code = table.Column<string>(type: "nvarchar(80)", maxLength: 80, nullable: true, comment: "库位编码"),
+                    stock_place_id = table.Column<long>(type: "bigint", nullable: false, comment: "库位id"),
+                    tenant_id = table.Column<long>(type: "bigint", nullable: false, comment: "企业ID"),
+                    unit = table.Column<string>(type: "nvarchar(80)", maxLength: 80, nullable: true, comment: "单位"),
+                    update_by = table.Column<long>(type: "bigint", nullable: true, comment: "修改人"),
+                    update_by_name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "修改人名称"),
+                    update_time = table.Column<DateTime>(type: "datetime2", nullable: true, comment: "修改时间")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ic_item_inventory", x => x.Id);
+                },
+                comment: "物料库存明细表");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_srm_supplier_supplier_no_tenant_id_factory_id",
+                table: "srm_supplier",
+                columns: new[] { "supplier_no", "tenant_id", "factory_id" });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_srm_po_main_po_billno_tenant_id_factory_id",
+                table: "srm_po_main",
+                columns: new[] { "po_billno", "tenant_id", "factory_id" });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ic_bom_bom_number_item_number_version_tenant_id_factory_id",
+                table: "ic_bom",
+                columns: new[] { "bom_number", "item_number", "version", "tenant_id", "factory_id" });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_crm_seorder_bill_no_tenant_id_factory_id",
+                table: "crm_seorder",
+                columns: new[] { "bill_no", "tenant_id", "factory_id" });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_crm_customer_customer_no_tenant_id_factory_id",
+                table: "crm_customer",
+                columns: new[] { "customer_no", "tenant_id", "factory_id" });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ic_item_inventory_stock_id_stock_place_id_tenant_id_factory_id",
+                table: "ic_item_inventory",
+                columns: new[] { "stock_id", "stock_place_id", "tenant_id", "factory_id" });
+        }
+    }
+}

+ 61 - 132
MicroServices/Business/Business.Host/Migrations/BusinessMigrationDbContextModelSnapshot.cs

@@ -322,7 +322,9 @@ namespace Business.Migrations
 
                     b.HasKey("Id");
 
-                    b.HasIndex("bom_number", "item_number", "version", "tenant_id", "factory_id");
+                    b.HasIndex("bom_number", "item_number", "version", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[bom_number] IS NOT NULL AND [item_number] IS NOT NULL AND [version] IS NOT NULL AND [factory_id] IS NOT NULL");
 
                     b.ToTable("ic_bom", (string)null);
 
@@ -493,6 +495,10 @@ namespace Business.Migrations
 
                     b.HasKey("Id");
 
+                    b.HasIndex("bom_number", "item_number", "version", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[bom_number] IS NOT NULL AND [item_number] IS NOT NULL AND [version] IS NOT NULL AND [factory_id] IS NOT NULL");
+
                     b.HasIndex("bom_id", "bom_number", "item_number", "version", "tenant_id", "factory_id");
 
                     b.ToTable("ic_bom_child", (string)null);
@@ -895,6 +901,10 @@ namespace Business.Migrations
 
                     b.HasKey("Id");
 
+                    b.HasIndex("number", "fversion", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[number] IS NOT NULL AND [fversion] IS NOT NULL AND [factory_id] IS NOT NULL");
+
                     b.HasIndex("number", "name", "tenant_id", "factory_id");
 
                     b.ToTable("ic_item", (string)null);
@@ -902,7 +912,7 @@ namespace Business.Migrations
                     b.HasComment("物料详情");
                 });
 
-            modelBuilder.Entity("Business.Model.MES.IC.ic_item_inventory", b =>
+            modelBuilder.Entity("Business.Model.MES.IC.ic_item_stock", b =>
                 {
                     b.Property<long>("Id")
                         .HasColumnType("bigint");
@@ -914,16 +924,6 @@ namespace Business.Migrations
                         .HasColumnName("IsDeleted")
                         .HasComment("删除标识");
 
-                    b.Property<decimal?>("bal")
-                        .HasPrecision(23, 10)
-                        .HasColumnType("decimal(23,10)")
-                        .HasComment("金额");
-
-                    b.Property<string>("batch_no")
-                        .HasMaxLength(80)
-                        .HasColumnType("nvarchar(80)")
-                        .HasComment("批次号");
-
                     b.Property<long?>("create_by")
                         .HasColumnType("bigint")
                         .HasComment("创建人id");
@@ -941,124 +941,10 @@ namespace Business.Migrations
                         .HasColumnType("bigint")
                         .HasComment("工厂ID");
 
-                    b.Property<long>("icitem_stock_id")
-                        .HasColumnType("bigint")
-                        .HasComment("物料库存主键");
-
-                    b.Property<DateTime?>("kf_date")
-                        .HasColumnType("datetime2")
-                        .HasComment("保质期时间");
-
-                    b.Property<decimal?>("kf_period")
-                        .HasPrecision(23, 10)
-                        .HasColumnType("decimal(23,10)")
-                        .HasComment("保质期时长");
-
-                    b.Property<long?>("org_id")
-                        .HasColumnType("bigint")
-                        .HasComment("组织ID");
-
-                    b.Property<decimal?>("qty")
-                        .HasPrecision(23, 10)
-                        .HasColumnType("decimal(23,10)")
-                        .HasComment("数量");
-
-                    b.Property<decimal?>("qty_lock")
-                        .HasPrecision(23, 10)
-                        .HasColumnType("decimal(23,10)")
-                        .HasComment("锁定库存");
-
-                    b.Property<DateTime?>("rq")
-                        .HasColumnType("datetime2")
-                        .HasComment("日期");
-
-                    b.Property<decimal?>("sec_qty")
-                        .HasPrecision(23, 10)
-                        .HasColumnType("decimal(23,10)")
-                        .HasComment("安全库存");
-
-                    b.Property<long>("stock_id")
-                        .HasColumnType("bigint")
-                        .HasComment("仓库id");
-
-                    b.Property<string>("stock_name")
-                        .HasMaxLength(80)
-                        .HasColumnType("nvarchar(80)")
-                        .HasComment("仓库名称");
-
-                    b.Property<string>("stock_place_code")
-                        .HasMaxLength(80)
-                        .HasColumnType("nvarchar(80)")
-                        .HasComment("库位编码");
-
-                    b.Property<long>("stock_place_id")
-                        .HasColumnType("bigint")
-                        .HasComment("库位id");
-
-                    b.Property<long>("tenant_id")
-                        .HasColumnType("bigint")
-                        .HasComment("企业ID");
-
-                    b.Property<string>("unit")
-                        .HasMaxLength(80)
-                        .HasColumnType("nvarchar(80)")
-                        .HasComment("单位");
-
-                    b.Property<long?>("update_by")
-                        .HasColumnType("bigint")
-                        .HasComment("修改人");
-
-                    b.Property<string>("update_by_name")
-                        .HasMaxLength(50)
-                        .HasColumnType("nvarchar(50)")
-                        .HasComment("修改人名称");
-
-                    b.Property<DateTime?>("update_time")
-                        .HasColumnType("datetime2")
-                        .HasComment("修改时间");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("stock_id", "stock_place_id", "tenant_id", "factory_id");
-
-                    b.ToTable("ic_item_inventory", (string)null);
-
-                    b.HasComment("物料库存明细表");
-                });
-
-            modelBuilder.Entity("Business.Model.MES.IC.ic_item_stock", b =>
-                {
-                    b.Property<long>("Id")
-                        .HasColumnType("bigint");
-
-                    b.Property<bool>("IsDeleted")
-                        .ValueGeneratedOnAdd()
-                        .HasColumnType("bit")
-                        .HasDefaultValue(false)
-                        .HasColumnName("IsDeleted")
-                        .HasComment("删除标识");
-
-                    b.Property<long?>("create_by")
-                        .HasColumnType("bigint")
-                        .HasComment("创建人id");
-
-                    b.Property<string>("create_by_name")
-                        .HasMaxLength(50)
-                        .HasColumnType("nvarchar(50)")
-                        .HasComment("创建人名称");
-
-                    b.Property<DateTime?>("create_time")
-                        .HasColumnType("datetime2")
-                        .HasComment("创建时间");
-
-                    b.Property<string>("factory_fode")
+                    b.Property<string>("fversion")
                         .HasMaxLength(80)
                         .HasColumnType("nvarchar(80)")
-                        .HasComment("工厂编码");
-
-                    b.Property<long?>("factory_id")
-                        .HasColumnType("bigint")
-                        .HasComment("工厂ID");
+                        .HasComment("版本号");
 
                     b.Property<long>("icitem_id")
                         .HasColumnType("bigint")
@@ -1069,6 +955,11 @@ namespace Business.Migrations
                         .HasColumnType("nvarchar(80)")
                         .HasComment("物料名称");
 
+                    b.Property<string>("icitem_number")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("物料编码");
+
                     b.Property<long?>("org_id")
                         .HasColumnType("bigint")
                         .HasComment("组织ID");
@@ -1104,6 +995,10 @@ namespace Business.Migrations
 
                     b.HasIndex("icitem_id", "icitem_name", "tenant_id", "factory_id");
 
+                    b.HasIndex("icitem_number", "fversion", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[icitem_number] IS NOT NULL AND [fversion] IS NOT NULL AND [factory_id] IS NOT NULL");
+
                     b.ToTable("ic_item_stock", (string)null);
 
                     b.HasComment("物料库存表");
@@ -1315,6 +1210,11 @@ namespace Business.Migrations
                         .HasColumnType("bigint")
                         .HasComment("工厂ID");
 
+                    b.Property<string>("fversion")
+                        .HasMaxLength(80)
+                        .HasColumnType("nvarchar(80)")
+                        .HasComment("版本号");
+
                     b.Property<long>("icitem_id")
                         .HasColumnType("bigint")
                         .HasComment("物料主键");
@@ -2470,7 +2370,9 @@ namespace Business.Migrations
 
                     b.HasKey("Id");
 
-                    b.HasIndex("customer_no", "tenant_id", "factory_id");
+                    b.HasIndex("customer_no", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[customer_no] IS NOT NULL AND [factory_id] IS NOT NULL");
 
                     b.ToTable("crm_customer", (string)null);
 
@@ -2665,7 +2567,9 @@ namespace Business.Migrations
 
                     b.HasKey("Id");
 
-                    b.HasIndex("bill_no", "tenant_id", "factory_id");
+                    b.HasIndex("bill_no", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[bill_no] IS NOT NULL AND [factory_id] IS NOT NULL");
 
                     b.ToTable("crm_seorder", (string)null);
 
@@ -2943,6 +2847,10 @@ namespace Business.Migrations
 
                     b.HasKey("Id");
 
+                    b.HasIndex("bill_no", "entry_seq", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[bill_no] IS NOT NULL AND [entry_seq] IS NOT NULL AND [factory_id] IS NOT NULL");
+
                     b.HasIndex("seorder_id", "bill_no", "item_number", "tenant_id", "factory_id");
 
                     b.ToTable("crm_seorderentry", (string)null);
@@ -3172,6 +3080,10 @@ namespace Business.Migrations
 
                     b.HasIndex("po_billno", "number", "tenant_id", "factory_id");
 
+                    b.HasIndex("po_billno", "polist_row", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[po_billno] IS NOT NULL AND [polist_row] IS NOT NULL AND [factory_id] IS NOT NULL");
+
                     b.ToTable("srm_po_list", (string)null);
 
                     b.HasComment("采购订单明细详情");
@@ -3363,7 +3275,9 @@ namespace Business.Migrations
 
                     b.HasKey("Id");
 
-                    b.HasIndex("po_billno", "tenant_id", "factory_id");
+                    b.HasIndex("po_billno", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[po_billno] IS NOT NULL AND [factory_id] IS NOT NULL");
 
                     b.ToTable("srm_po_main", (string)null);
 
@@ -3718,6 +3632,10 @@ namespace Business.Migrations
 
                     b.HasKey("Id");
 
+                    b.HasIndex("pr_billno", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[pr_billno] IS NOT NULL AND [factory_id] IS NOT NULL");
+
                     b.HasIndex("pr_billno", "pr_purchasenumber", "tenant_id", "factory_id");
 
                     b.ToTable("srm_pr_main", (string)null);
@@ -3787,6 +3705,11 @@ namespace Business.Migrations
                         .HasColumnType("bit")
                         .HasComment("是否周期合并");
 
+                    b.Property<string>("icitem_number")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("物料编码");
+
                     b.Property<decimal?>("netpurchase_price")
                         .HasPrecision(23, 10)
                         .HasColumnType("decimal(23,10)")
@@ -3886,6 +3809,10 @@ namespace Business.Migrations
 
                     b.HasIndex("icitem_id", "supplier_number", "tenant_id", "factory_id");
 
+                    b.HasIndex("sourcelist_number", "icitem_number", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[sourcelist_number] IS NOT NULL AND [icitem_number] IS NOT NULL AND [factory_id] IS NOT NULL");
+
                     b.ToTable("srm_purchase", (string)null);
 
                     b.HasComment("物料采购报价单");
@@ -4165,7 +4092,9 @@ namespace Business.Migrations
 
                     b.HasKey("Id");
 
-                    b.HasIndex("supplier_no", "tenant_id", "factory_id");
+                    b.HasIndex("supplier_no", "tenant_id", "factory_id")
+                        .IsUnique()
+                        .HasFilter("[supplier_no] IS NOT NULL AND [factory_id] IS NOT NULL");
 
                     b.ToTable("srm_supplier", (string)null);
 

+ 1 - 0
MicroServices/Business/Business.Host/Program.cs

@@ -60,6 +60,7 @@ namespace Business
                 .ConfigureWebHostDefaults(webBuilder =>
                 {
                     webBuilder.UseStartup<Startup>();
+                    webBuilder.UseStaticWebAssets();
                 })
                 .UseAutofac()
                 //.UseSerilog()

+ 2 - 0
MicroServices/Business/Business.Host/Startup.cs

@@ -1,6 +1,7 @@
 using Business.Core.MongoDBHelper;
 using Business.EntityFrameworkCore.SqlRepositories;
 using Business.Quartz;
+using GZY.Quartz.MUI.Extensions;
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.Extensions.DependencyInjection;
@@ -18,6 +19,7 @@ namespace Business
             services.AddScoped(typeof(ISqlRepository<>), typeof(SqlRepository<>));
             services.AddScoped<Config>();
             services.AddScoped<LogHostedService>();
+            services.AddScoped<GZY.Quartz.MUI.Areas.MyFeature.Pages.MainModel>();
         }
 
         public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)

+ 9 - 9
MicroServices/Business/Business.Host/appsettings.json

@@ -8,16 +8,16 @@
     //"DOPBang": "Server=123.60.180.165;Database=dopbang;Uid=root; Pwd=5heng=uN;Allow User Variables=true",
     //"DOPExt": "Server=123.60.180.165;Database=dopext;Uid=root; Pwd=5heng=uN;Allow User Variables=true",
 
-    //"Default": "Server=123.60.180.165;Database=dopdesign;uid=sa;pwd=5heng)uN;Trusted_Connection=false;TrustServerCertificate=True",
-    //"DOPLog": "Server=123.60.180.165;Database=dopdesign;uid=sa;pwd=5heng)uN;Trusted_Connection=false;TrustServerCertificate=True",
-    //"DOPBang": "Server=123.60.180.165;Database=dopdesign;uid=sa;pwd=5heng)uN;Trusted_Connection=false;TrustServerCertificate=True",
-    //"DOPExt": "Server=123.60.180.165;Database=dopdesign;uid=sa;pwd=5heng)uN;Trusted_Connection=false;TrustServerCertificate=True",
-
-    "Default": "Server=123.60.181.157;Database=dopbiz;uid=sa;pwd=5heng)uN;Trusted_Connection=false;TrustServerCertificate=True",
-    "DOPLog": "Server=123.60.181.157;Database=dopbiz;uid=sa;pwd=5heng)uN;Trusted_Connection=false;TrustServerCertificate=True",
-    "DOPBang": "Server=123.60.181.157;Database=dopbiz;uid=sa;pwd=5heng)uN;Trusted_Connection=false;TrustServerCertificate=True",
-    "DOPExt": "Server=123.60.181.157;Database=dopbiz;uid=sa;pwd=5heng)uN;Trusted_Connection=false;TrustServerCertificate=True",
+    //"Default": "Server=123.60.180.165;Database=dopdesign;uid=sa;pwd=5h3n9)uN;Trusted_Connection=false;TrustServerCertificate=True",
+    //"DOPLog": "Server=123.60.180.165;Database=dopdesign;uid=sa;pwd=5h3n9)uN;Trusted_Connection=false;TrustServerCertificate=True",
+    //"DOPBang": "Server=123.60.180.165;Database=dopdesign;uid=sa;pwd=5h3n9)uN;Trusted_Connection=false;TrustServerCertificate=True",
+    //"DOPExt": "Server=123.60.180.165;Database=dopdesign;uid=sa;pwd=5h3n9)uN;Trusted_Connection=false;TrustServerCertificate=True",
 
+    "Default": "Server=123.60.181.157;Database=dopbiz;uid=sa;pwd=5h3n9)uN;Trusted_Connection=false;TrustServerCertificate=True",
+    "DOPLog": "Server=123.60.181.157;Database=dopbiz;uid=sa;pwd=5h3n9)uN;Trusted_Connection=false;TrustServerCertificate=True",
+    "DOPBang": "Server=123.60.181.157;Database=dopbiz;uid=sa;pwd=5h3n9)uN;Trusted_Connection=false;TrustServerCertificate=True",
+    "DOPExt": "Server=123.60.181.157;Database=dopbiz;uid=sa;pwd=5h3n9)uN;Trusted_Connection=false;TrustServerCertificate=True",
+    "MongoDBTest": "mongodb://zzydop:h1Q$us3r@123.60.181.157/dopbase",
     "MongoDB": "mongodb://zzydop:h1Q$us3r@123.60.181.157/",
     "DBName": "dopbase"
   },

+ 6 - 0
MicroServices/Business/Business.sln

@@ -35,6 +35,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Business.Domain.Test", "Bus
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Business.EntityFrameworkCore.Test", "Bussiness.EntityFrameworkCore.Test\Business.EntityFrameworkCore.Test.csproj", "{F55D18B1-65B3-4417-9EA1-032630A2201A}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bussiness.MongoDB", "Bussiness.MongoDB\Bussiness.MongoDB.csproj", "{F75F1412-2392-4625-9CAB-2AD1F8D2EFCC}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -101,6 +103,10 @@ Global
 		{F55D18B1-65B3-4417-9EA1-032630A2201A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{F55D18B1-65B3-4417-9EA1-032630A2201A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{F55D18B1-65B3-4417-9EA1-032630A2201A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F75F1412-2392-4625-9CAB-2AD1F8D2EFCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F75F1412-2392-4625-9CAB-2AD1F8D2EFCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F75F1412-2392-4625-9CAB-2AD1F8D2EFCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F75F1412-2392-4625-9CAB-2AD1F8D2EFCC}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 0 - 9
MicroServices/Business/Bussiness.Model/Base/BaseEntity.cs

@@ -23,15 +23,6 @@ namespace Business.Model
         public BaseEntity(long Id) : base(Id)
         {
         }
-        /// <summary>
-        /// 生成新的Id
-        /// </summary>
-        public void GenerateNewId()
-        { 
-            SnowFlake snow = new SnowFlake();
-            Id = snow.NextId();
-        }
-
         /// <summary>
         /// 生成新的Id
         /// </summary>

+ 91 - 0
MicroServices/Business/Bussiness.Model/MES/IC/GeneralizedCodeMaster.cs

@@ -0,0 +1,91 @@
+using Business.Model;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Model.MES.IC
+{
+    /// <summary>
+    /// 通用代码表
+    /// </summary>
+    [Comment("通用代码表")]
+    public class GeneralizedCodeMaster
+    {
+        /// <summary>
+        /// 主键
+        /// </summary>
+        [Comment("主键")]
+        [Key]
+        public int RecID { get; set; }
+
+        /// <summary>
+        /// 域名
+        /// </summary>
+        [Comment("域名")]
+        public string? Domain { get; set; }
+
+        /// <summary>
+        /// 配置模块,DOP用DopConfig
+        /// </summary>
+        [Comment("配置模块")]
+        public string? FldName { get; set; }
+
+        /// <summary>
+        /// 配置项的值
+        /// </summary>
+        [Comment("配置项的值")]
+        public string? Comments { get; set; }
+
+        /// <summary>
+        /// 配置项描述
+        /// </summary>
+        [Comment("配置项描述")]
+        public string? Ufld1 { get; set; }
+
+        /// <summary>
+        /// 配置项Key
+        /// </summary>
+        [Comment("配置项Key")]
+        public string? Val { get; set; }
+
+        /// <summary>
+        /// 是否有效:1-有效;0-无效
+        /// </summary>
+        [Comment("是否有效")]
+        public Boolean IsActive { get; set; }
+
+        /// <summary>
+        /// 是否确认:1-已确认;0-没确认
+        /// </summary>
+        [Comment("是否有效")]
+        public Boolean IsConfirm { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [Comment("创建时间")]
+        public DateTime? CreateTime { get; set; }
+
+        /// <summary>
+        /// 创建人
+        /// </summary>
+        [Comment("创建人")]
+        public string? CreateUser { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [Comment("修改时间")]
+        public DateTime? UpdateTime { get; set; }
+
+        /// <summary>
+        /// 修改人
+        /// </summary>
+        [Comment("修改人")]
+        public string? UpdateUser { get; set; }
+    }
+}

+ 1 - 9
MicroServices/Business/Bussiness.Model/MES/IC/ic_bom.cs

@@ -1,15 +1,6 @@
 using Business.Core.Attributes;
-using Business.Model;
 using Microsoft.EntityFrameworkCore;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Volo.Abp;
 
 namespace Business.Model.MES.IC
 {
@@ -18,6 +9,7 @@ namespace Business.Model.MES.IC
     /// </summary>
     [CollectionName("dopbase", "ic_bom")]
     [Comment("物料BOM")]
+    [Index(nameof(bom_number), nameof(item_number), nameof(version), nameof(tenant_id),nameof(factory_id),IsUnique =true)]
     public class ic_bom : BaseEntity
     {
         public ic_bom(long Id) : base(Id)

+ 1 - 4
MicroServices/Business/Bussiness.Model/MES/IC/ic_bom_child.cs

@@ -1,10 +1,6 @@
 using Business.Core.Attributes;
-using Business.Model;
 using Microsoft.EntityFrameworkCore;
-using MongoDB.Bson.Serialization.Attributes;
-using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
 
 namespace Business.Model.MES.IC
 {
@@ -13,6 +9,7 @@ namespace Business.Model.MES.IC
     /// </summary>
     [CollectionName("dopbase", "ic_bom_child")]
     [Comment("物料BOM明细")]
+    [Index(nameof(bom_number),nameof(item_number), nameof(version), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class ic_bom_child : BaseEntity
     {
         public ic_bom_child(long Id) : base(Id)

+ 1 - 2
MicroServices/Business/Bussiness.Model/MES/IC/ic_item.cs

@@ -1,9 +1,7 @@
 using Business.Core.Attributes;
-using Business.Model;
 using Microsoft.EntityFrameworkCore;
 using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
 
 namespace Business.Model.MES.IC
 {
@@ -12,6 +10,7 @@ namespace Business.Model.MES.IC
     /// </summary>
     [CollectionName("dopbase", "ic_item")]
     [Comment("物料详情")]
+    [Index(nameof(number), nameof(fversion),nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class ic_item : BaseEntity
     {
         public ic_item(long Id) : base(Id)

+ 0 - 100
MicroServices/Business/Bussiness.Model/MES/IC/ic_item_inventory.cs

@@ -1,100 +0,0 @@
-using Business.Core.Attributes;
-using Business.Model;
-using Microsoft.EntityFrameworkCore;
-using System.ComponentModel;
-using System.ComponentModel.DataAnnotations;
-
-namespace Business.Model.MES.IC
-{
-    /// <summary>
-    /// 物料库存明细表
-    /// </summary>
-    [CollectionName("dopbase", "ic_item_inventory")]
-    [Comment("物料库存明细表")]
-    public class ic_item_inventory:BaseEntity
-    {
-        /// <summary>
-        /// 物料库存主键
-        /// </summary>
-        [Required]
-        [Comment("物料库存主键")]
-        public long icitem_stock_id { get; set; }
-        /// <summary>
-        /// 仓库id
-        /// </summary>
-        [Required]
-        [Comment("仓库id")]
-        public long stock_id { get; set; }
-        /// <summary>
-        /// 仓库名称
-        /// </summary>
-        [StringLength(80)]
-        [Comment("仓库名称")]
-        public string? stock_name { get; set; }
-        /// <summary>
-        /// 库位id
-        /// </summary>
-        [Required]
-        [Comment("库位id")]
-        public long stock_place_id { get; set; }
-        /// <summary>
-        /// 库位编码
-        /// </summary>
-        [StringLength(80)]
-        [Comment("库位编码")]
-        public string? stock_place_code { get; set; }
-        /// <summary>
-        /// 批次号
-        /// </summary>
-        [StringLength(80)]
-        [Comment("批次号")]
-        public string? batch_no { get; set; }
-        /// <summary>
-        /// 数量
-        /// </summary>
-        [Precision(23, 10)]
-        [Comment("数量")]
-        public decimal? qty { get; set; }
-        /// <summary>
-        /// 金额
-        /// </summary>
-        [Precision(23, 10)]
-        [Comment("金额")]
-        public decimal? bal { get; set; }
-        /// <summary>
-        /// 保质期时长
-        /// </summary>
-        [Precision(23, 10)]
-        [Comment("保质期时长")]
-        public decimal? kf_period { get; set; }
-        /// <summary>
-        /// 保质期时间
-        /// </summary>
-        [Comment("保质期时间")]
-        public DateTime? kf_date { get; set; }
-        /// <summary>
-        /// 锁定库存
-        /// </summary>
-        [Precision(23, 10)]
-        [Comment("锁定库存")]
-        public decimal? qty_lock { get; set; }
-        /// <summary>
-        /// 安全库存
-        /// </summary>
-        [Precision(23, 10)]
-        [Comment("安全库存")]
-        public decimal? sec_qty { get; set; }
-        /// <summary>
-        /// 单位
-        /// </summary>
-        [StringLength(80)]
-        [Comment("单位")]
-        public string? unit { get; set; }
-        /// <summary>
-        /// 日期
-        /// </summary>
-        [Comment("日期")]
-        public DateTime? rq { get; set; }
-
-    }
-}

+ 20 - 9
MicroServices/Business/Bussiness.Model/MES/IC/ic_item_stock.cs

@@ -1,8 +1,5 @@
 using Business.Core.Attributes;
-using Business.Model;
 using Microsoft.EntityFrameworkCore;
-using MongoDB.Bson.Serialization.Attributes;
-using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema;
 
@@ -13,6 +10,7 @@ namespace Business.Model.MES.IC
     /// </summary>
     [CollectionName("dopbase", "ic_item_stock")]
     [Comment("物料库存表")]
+    [Index(nameof(icitem_number), nameof(fversion), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class ic_item_stock : BaseEntity
     {
         /// <summary>
@@ -21,12 +19,31 @@ namespace Business.Model.MES.IC
         [Required]
         [Comment("物料id")]
         public long icitem_id { get; set; }
+
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        [StringLength(80)]
+        [Comment("物料编码")]
+        public string? icitem_number { get; set; }
+
+
         /// <summary>
         /// 物料名称
         /// </summary>
         [StringLength(80)]
         [Comment("物料名称")]
         public string? icitem_name { get; set; }
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [StringLength(80)]
+        [Comment("版本号")]
+        public string? fversion { get; set; }
+
+
         /// <summary>
         /// 物料库存量
         /// </summary>
@@ -39,12 +56,6 @@ namespace Business.Model.MES.IC
         [Precision(23, 10)]
         [Comment("调拨在途数量")]
         public decimal? quantity_in_transit { get; set; }
-        /// <summary>
-        /// 工厂编码
-        /// </summary>
-        [StringLength(80)]
-        [Comment("工厂编码")]
-        public string? factory_fode { get; set; }
 
         /// <summary>
         /// 计算id

+ 18 - 9
MicroServices/Business/Bussiness.Model/MES/IC/ic_item_stockoccupy.cs

@@ -1,13 +1,6 @@
-using Business.Model;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Business.Core.Attributes;
+using Business.Core.Attributes;
 using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema;
 
 namespace Business.Model.MES.IC
@@ -17,6 +10,7 @@ namespace Business.Model.MES.IC
     /// </summary>
     [CollectionName("dopbase", "ic_item_stockoccupy")]
     [Comment("资源检查物料占用明细表")]
+    [Index(nameof(orderentry_id),nameof(icitem_number), nameof(fversion), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class ic_item_stockoccupy:BaseEntity
     {
         /// <summary>
@@ -56,6 +50,21 @@ namespace Business.Model.MES.IC
         [Comment("物料id")]
         public long icitem_id { get; set; }
 
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        [StringLength(80)]
+        [Comment("物料编码")]
+        public string? icitem_number { get; set; }
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [StringLength(80)]
+        [Comment("版本号")]
+        public string? fversion { get; set; }
+
         /// <summary>
         /// 占用数量
         /// </summary>

+ 6 - 0
MicroServices/Business/Bussiness.Model/MES/IC/ic_substitute_group_detail.cs

@@ -46,6 +46,12 @@ namespace Business.Model.MES.IC
         [Comment("物料编码")]
         public string? icitem_number { get; set; }
 
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [StringLength(80)]
+        [Comment("版本号")]
+        public string? fversion { get; set; }
 
         /// <summary>
         /// 主/替

+ 11 - 0
MicroServices/Business/Bussiness.Model/Production/MonthlyProdCapacityDtl.cs

@@ -24,6 +24,11 @@ namespace Business.Model.Production
         [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
         public long Id { get; set; }
 
+        /// <summary>
+        /// 主表id
+        /// </summary>
+        public long MainId { get; set; }
+
         /// <summary>
         /// 年
         /// </summary>
@@ -107,5 +112,11 @@ namespace Business.Model.Production
         /// </summary>
         [Comment("工厂id")]
         public long? factory_id { get; set; }
+
+        /// <summary>
+        /// 整体需求计划版本号
+        /// </summary>
+        [Comment("整体需求计划版本号")]
+        public string? Version { get; set; }
     }
 }

+ 12 - 1
MicroServices/Business/Bussiness.Model/Production/MonthlyProdCapacityMain.cs

@@ -21,7 +21,6 @@ namespace Business.Model.Production
         /// </summary>
         [Comment("主键")]
         [Key]
-        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
         public long Id { get; set; }
 
         /// <summary>
@@ -77,5 +76,17 @@ namespace Business.Model.Production
         /// </summary>
         [Comment("工厂id")]
         public long? factory_id { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [Comment("创建时间")]
+        public DateTime? CreateTime { get; set; }
+
+        /// <summary>
+        /// 整体需求计划版本号
+        /// </summary>
+        [Comment("整体需求计划版本号")]
+        public string? Version { get; set; }
     }
 }

+ 7 - 1
MicroServices/Business/Bussiness.Model/Production/OverallDemandPlanDtl.cs

@@ -61,11 +61,17 @@ namespace Business.Model.Production
         public string? Model { get; set; }
 
         /// <summary>
-        /// 计划月份:M0,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11
+        /// 计划月份
         /// </summary>
         [Comment("计划月份")]
         public string? PlanDate { get; set; }
 
+        /// <summary>
+        /// 月份计数:M0,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11
+        /// </summary>
+        [Comment("月份计数")]
+        public string? MonthTimes { get; set; }
+
         /// <summary>
         /// 计划数量
         /// </summary>

+ 58 - 0
MicroServices/Business/Bussiness.Model/Production/StandardItemModelSet.cs

@@ -0,0 +1,58 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Model.Production
+{
+    /// <summary>
+    /// 标准物料规格型号设置表
+    /// </summary>
+    [Comment("标准物料规格型号设置表")]
+    [Index(nameof(Model), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
+    public class StandardItemModelSet
+    {
+        /// <summary>
+        /// 主键
+        /// </summary>
+        [Comment("主键")]
+        [Key]
+        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 规格型号
+        /// </summary>
+        [Comment("规格型号")]
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        [Comment("物料编码")]
+        public string ItemNumber { get; set; }
+
+        /// <summary>
+        /// 集团id
+        /// </summary>
+        [Comment("集团id")]
+        public long tenant_id { get; set; }
+
+        /// <summary>
+        /// 工厂id
+        /// </summary>
+        [Comment("工厂id")]
+        public long factory_id { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [Comment("创建时间")]
+        public DateTime CreateTime { get; set; }
+    }
+}

+ 1 - 0
MicroServices/Business/Bussiness.Model/SRM/srm_po_list.cs

@@ -10,6 +10,7 @@ namespace Business.Model.SRM
     /// </summary>
     [CollectionName("dopbase", "srm_po_list")]
     [Comment("采购订单明细详情")]
+    [Index(nameof(po_billno),nameof(polist_row), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class srm_po_list : BaseEntity
     {
         /// <summary>

+ 1 - 0
MicroServices/Business/Bussiness.Model/SRM/srm_po_main.cs

@@ -10,6 +10,7 @@ namespace Business.Model.SRM
     /// </summary>
     [CollectionName("dopbase", "srm_po_main")]
     [Comment("采购订单")]
+    [Index(nameof(po_billno), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class srm_po_main : BaseEntity
     {
         /// <summary>

+ 1 - 2
MicroServices/Business/Bussiness.Model/SRM/srm_pr_main.cs

@@ -1,7 +1,5 @@
 using Business.Core.Attributes;
-using Business.Model;
 using Microsoft.EntityFrameworkCore;
-using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema;
 
@@ -12,6 +10,7 @@ namespace Business.Model.SRM
     /// </summary>
     [CollectionName("dopbase", "srm_pr_main")]
     [Comment("采购申请单")]
+    [Index(nameof(pr_billno),nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class srm_pr_main : BaseEntity
     {
         /// <summary>

+ 9 - 2
MicroServices/Business/Bussiness.Model/SRM/srm_purchase.cs

@@ -1,7 +1,5 @@
 using Business.Core.Attributes;
-using Business.Model;
 using Microsoft.EntityFrameworkCore;
-using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema;
 
@@ -12,6 +10,7 @@ namespace Business.Model.SRM
     /// </summary>
     [CollectionName("dopbase", "srm_purchase")]
     [Comment("物料采购报价单")]
+    [Index(nameof(number),nameof(supplier_number), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class srm_purchase : BaseEntity
     {
 
@@ -24,6 +23,14 @@ namespace Business.Model.SRM
         [Required]
         [Comment("物料id")]
         public long icitem_id { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>]
+        [StringLength(20)]
+        [Comment("物料编码")]
+        public string? number { get; set; }
+
         /// <summary>
         /// 物料名称
         /// </summary>

+ 1 - 0
MicroServices/Business/Bussiness.Model/SRM/srm_supplier.cs

@@ -11,6 +11,7 @@ namespace Business.Model.SRM
     /// </summary>
     [Comment("供应商")]
     [CollectionName("dopbase", "srm_supplier")]
+    [Index(nameof(supplier_no), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class srm_supplier : BaseEntity
     {
         ///// <summary>

+ 1 - 2
MicroServices/Business/Bussiness.Model/Sale/crm_customer.cs

@@ -1,7 +1,5 @@
 using Business.Core.Attributes;
-using Business.Model;
 using Microsoft.EntityFrameworkCore;
-using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
 
 namespace Business.Model.Sale
@@ -11,6 +9,7 @@ namespace Business.Model.Sale
     /// </summary>
     [Comment("客户")]
     [CollectionName("dopbase", "crm_customer")]
+    [Index(nameof(customer_no), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class crm_customer : BaseEntity
     {
         ///// <summary>

+ 1 - 1
MicroServices/Business/Bussiness.Model/Sale/crm_seorder.cs

@@ -1,5 +1,4 @@
 using Business.Core.Attributes;
-using Business.Model;
 using Microsoft.EntityFrameworkCore;
 using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
@@ -12,6 +11,7 @@ namespace Business.Model.Sale
     /// </summary>
     [Comment("销售订单表")]
     [CollectionName("dopbase", "crm_seorder")]
+    [Index(nameof(bill_no),nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class crm_seorder : BaseEntity
     {
         ///// <summary>

+ 1 - 1
MicroServices/Business/Bussiness.Model/Sale/crm_seorderentry.cs

@@ -1,5 +1,4 @@
 using Business.Core.Attributes;
-using Business.Model;
 using Microsoft.EntityFrameworkCore;
 using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
@@ -12,6 +11,7 @@ namespace Business.Model.Sale
     /// </summary>
     [Comment("销售订单明细表")]
     [CollectionName("dopbase", "crm_seorderentry")]
+    [Index(nameof(bill_no),nameof(entry_seq), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
     public class crm_seorderentry : BaseEntity
     {
         ///// <summary>

+ 27 - 0
MicroServices/Business/Bussiness.MongoDB/BusinessMongoDbContextModelCreatingExtensions.cs

@@ -0,0 +1,27 @@
+using Business.Domain;
+using Microsoft.Extensions.Hosting;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Cryptography.Xml;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.MongoDB;
+using Volo.Abp;
+
+namespace Bussiness.MongoDB
+{
+    public static class BusinessMongoDbContextModelCreatingExtensions
+    {
+        public static void Configure(this IMongoModelBuilder builder)
+        {
+            Check.NotNull(builder, nameof(builder));
+            builder.Entity<User>(b =>
+            {
+                b.CollectionName = MongoDbConsts.User;
+                b.BsonMap.AutoMap();
+                b.BsonMap.SetIgnoreExtraElements(true);
+            });
+        }
+    }
+}

+ 19 - 0
MicroServices/Business/Bussiness.MongoDB/Bussiness.MongoDB.csproj

@@ -0,0 +1,19 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Volo.Abp.AuditLogging.MongoDB" Version="6.0.2" />
+    <PackageReference Include="Volo.Abp.PermissionManagement.MongoDB" Version="6.0.2" />
+    <PackageReference Include="Volo.Abp.TenantManagement.MongoDB" Version="6.0.2" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\Business.Domain\Business.Domain.csproj" />
+  </ItemGroup>
+
+</Project>

+ 22 - 0
MicroServices/Business/Bussiness.MongoDB/BussinessMongoDbContext.cs

@@ -0,0 +1,22 @@
+using Business.Domain;
+using MongoDB.Driver;
+using Volo.Abp.Data;
+using Volo.Abp.MongoDB;
+
+namespace Bussiness.MongoDB
+{
+    [ConnectionStringName("MongoDBTest")]
+    public class BussinessMongoDbContext : AbpMongoDbContext
+    {
+        /* Add mongo collections here. Example:
+         * public IMongoCollection<Question> Questions => Collection<Question>();
+         */
+        public IMongoCollection<User> Users => Collection<User>();
+        protected override void CreateModel(IMongoModelBuilder modelBuilder)
+        {
+            base.CreateModel(modelBuilder);
+
+            modelBuilder.Configure();
+        }
+    }
+}

+ 37 - 0
MicroServices/Business/Bussiness.MongoDB/BussinessMongoDbModule.cs

@@ -0,0 +1,37 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Auditing;
+using Volo.Abp.AuditLogging.MongoDB;
+using Volo.Abp.Modularity;
+using Volo.Abp.PermissionManagement.MongoDB;
+using Volo.Abp.TenantManagement.MongoDB;
+using Volo.Abp.Uow;
+
+namespace Bussiness.MongoDB
+{
+    [DependsOn(
+    typeof(AbpPermissionManagementMongoDbModule),
+    typeof(AbpAuditLoggingMongoDbModule),
+    typeof(AbpTenantManagementMongoDbModule)
+    )]
+    public class BussinessMongoDbModule: AbpModule
+    {
+        public override void ConfigureServices(ServiceConfigurationContext context)
+        {
+            context.Services.AddMongoDbContext<BussinessMongoDbContext>(options =>
+            {
+                options.AddDefaultRepositories(includeAllEntities: true);
+            });
+
+            Configure<AbpUnitOfWorkDefaultOptions>(options =>
+            {
+                options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+            });
+
+            Configure<AbpAuditingOptions>(options =>
+            {
+                options.IsEnabledForGetRequests = true;
+            });
+        }
+    }
+   
+}

+ 16 - 0
MicroServices/Business/Bussiness.MongoDB/MongoDbConsts.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Bussiness.MongoDB
+{
+    public static class MongoDbConsts
+    {
+        /// <summary>
+        /// User
+        /// </summary>
+        public const string User = "dop_users";
+    }
+}

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

@@ -17,15 +17,6 @@ namespace Business.MongoModel
 {
     public abstract class MoBaseEntity 
     {
-        /// <summary>
-        /// 生成新的mysqlId
-        /// </summary>
-        public void GenerateNewId()
-        {
-            SnowFlake snow = new SnowFlake();
-            mysql_id = snow.NextId();
-        }
-
         /// <summary>
         /// id
         /// </summary>

+ 17 - 6
MicroServices/Business/Bussiness.MongoModel/MES/IC/mo_ic_item_stock.cs

@@ -21,12 +21,29 @@ namespace Business.MongoModel.MES.IC
         [Required]
         [Comment("物料id")]
         public long icitem_id { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        [StringLength(80)]
+        [Comment("物料编码")]
+        public string? icitem_number { get; set; }
+
         /// <summary>
         /// 物料名称
         /// </summary>
         [StringLength(80)]
         [Comment("物料名称")]
         public string? icitem_name { get; set; }
+
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [StringLength(80)]
+        [Comment("版本号")]
+        public string? fversion { get; set; }
+
         /// <summary>
         /// 物料库存量
         /// </summary>
@@ -39,12 +56,6 @@ namespace Business.MongoModel.MES.IC
         [Precision(23, 10)]
         [Comment("调拨在途数量")]
         public decimal? quantity_in_transit { get; set; }
-        /// <summary>
-        /// 工厂编码
-        /// </summary>
-        [StringLength(80)]
-        [Comment("工厂编码")]
-        public string? factory_fode { get; set; }
 
         /// <summary>
         /// 计算id

+ 14 - 0
MicroServices/Business/Bussiness.MongoModel/MES/IC/mo_ic_item_stockoccupy.cs

@@ -55,6 +55,20 @@ namespace Business.MongoModel.MES.IC
         [Comment("物料id")]
         public long icitem_id { get; set; }
 
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        [StringLength(80)]
+        [Comment("物料编码")]
+        public string? icitem_number { get; set; }
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [StringLength(80)]
+        [Comment("版本号")]
+        public string? fversion { get; set; }
+
         /// <summary>
         /// 占用数量
         /// </summary>

+ 15 - 0
MicroServices/Business/Bussiness.MongoModel/MES/IC/mo_ic_substitute_group_detail.cs

@@ -38,6 +38,21 @@ namespace Business.MongoModel.MES.IC
         [Required]
         [Comment("物料主键")]
         public long icitem_id { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>]
+        [StringLength(20)]
+        [Comment("物料编码")]
+        public string? icitem_number { get; set; }
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [StringLength(80)]
+        [Comment("版本号")]
+        public string? fversion { get; set; }
+
         /// <summary>
         /// 主/替
         /// </summary>

+ 8 - 0
MicroServices/Business/Bussiness.MongoModel/SRM/mo_srm_purchase.cs

@@ -20,6 +20,14 @@ namespace Business.Model.SRM
         [Required]
         [Comment("物料id")]
         public long icitem_id { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>]
+        [StringLength(20)]
+        [Comment("物料编码")]
+        public string? number { get; set; }
+
         /// <summary>
         /// 物料名称
         /// </summary>

+ 1 - 0
MicroServices/Business/QuartzSettings/task_job.json

@@ -0,0 +1 @@
+[{"TaskName":"测试定时任务","GroupName":"测试","Interval":"0 0 0 * * ?","ApiUrl":"http://123.60.180.165:8028/api/business/serialnumber","Describe":null,"LastRunTime":"2023-06-12T15:32:57","Status":6,"TaskType":2,"ApiRequestType":"GET","ApiAuthKey":null,"ApiAuthValue":null,"ApiParameter":"421240081346629","DllClassName":null,"DllActionName":null,"id":1,"timeflag":null,"changetime":null},{"TaskName":"定时任务","GroupName":"分组2","Interval":"0 0 10,14,16 * * ? ","ApiUrl":"http://123.60.180.165:8028/api/business/addon/demo","Describe":"测试定时任务,勿删","LastRunTime":"2023-06-12T15:31:30","Status":6,"TaskType":2,"ApiRequestType":"GET","ApiAuthKey":null,"ApiAuthValue":null,"ApiParameter":null,"DllClassName":null,"DllActionName":null,"id":2,"timeflag":null,"changetime":null}]