heteng преди 3 години
родител
ревизия
a3bb24d99c

+ 61 - 12
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -13,22 +13,55 @@ using XCZ;
 using Business.ResourceExamineManagement.Dto;
 using Bussiness.Model.MES.IC;
 using AutoMapper.Internal.Mappers;
+using Bussiness.Model.Tech;
+using Bussiness.Model.Production;
+using Business.Core.MongoDBHelper;
+using Business.Core.Utilities;
 
 namespace Business.ResourceExamineManagement
 {
+    /// <summary>
+    /// 资源检查
+    /// </summary>
     public class ResourceExamineAppService : IResourceExamineAppService
     {
+        #region 服务
+        //private IRepository<ic_item, long> _ic_item;
+        //private IRepository<ic_bom, long> _ic_bom;
 
-        private IRepository<ic_item,long> _ic_item;
-        private IRepository<ic_bom, long> _ic_bom;
+        ///// <summary>
+        ///// 工艺路径
+        ///// </summary>
+        //private IRepository<mes_technique, long> _mes_technique;
 
+        ///// <summary>
+        ///// 工序
+        ///// </summary>
+        //private IRepository<mes_process, long> _mes_process;
+
+        ///// <summary>
+        ///// 工艺关联工序
+        ///// </summary>
+        //private IRepository<mes_tech_process, long> _mes_tech_process;
+
+        ///// <summary>
+        ///// 排程占用记录
+        ///// </summary>
+        //private IRepository<mes_schedule_occupy, long> _mes_schedule_occupy;
+
+        private readonly IMongoDB<mes_technique> _mes_technique;
+        #endregion
+
+        /// <summary>
+        /// 构造函数
+        /// </summary>
+        /// <param name="icitem"></param>
+        /// <param name="icbom"></param>
         public ResourceExamineAppService(
-            IRepository<ic_item, long> icitem,
-            IRepository<ic_bom, long> icbom
+            IMongoDB<mes_technique> mes_technique
             )
         {
-            _ic_item = icitem;
-            _ic_bom = icbom;
+            _mes_technique = mes_technique;
         }
 
         /// <summary>
@@ -37,8 +70,14 @@ namespace Business.ResourceExamineManagement
         /// <param name="input"></param>
         /// <returns></returns>
         /// <exception cref="NotImplementedException"></exception>
-        public Task<PschedDto> ReceiveResult(SeorderentryDto input)
+        public async Task<PschedDto> ReceiveResult(SeorderentryDto input)
         {
+            mes_technique info = new mes_technique();
+            SnowFlake snow = new SnowFlake(1,1);
+            info.tech_id = snow.NextId();
+            info.tech_name = "ceshi";
+            info.level = 1;
+            await _mes_technique.InsertOne(info);
             throw new NotImplementedException();
 
         }
@@ -51,12 +90,22 @@ namespace Business.ResourceExamineManagement
         /// <param name="Quantity">需要数量</param>
         public async Task BomPretreatmentAsync(long? BomId, int Quantity)
         {
-            if (BomId == null)
-            {
-                //throw new bu
-            }
+            //if (BomId == null)
+            //{
+            //    //throw new bu
+            //}
 
-            var query = (await _ic_bom.GetQueryableAsync()).WhereIf(true, a => a.bom_id == BomId).ToList();
+            //var query = (await _ic_bom.GetQueryableAsync()).WhereIf(true, a => a.bom_id == BomId).ToList();
+        }
+
+        /// <summary>
+        /// 产能计算
+        /// </summary>
+        /// <param name="BomId">Bom主键</param>
+        /// <param name="Quantity">需要数量</param>
+        public async Task ProductiveExamine(long? BomId, int Quantity)
+        {
+            
         }
     }
 }

+ 35 - 0
MicroServices/Business/Business.Core/Attributes/CollectionNameAttribute.cs

@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Core.Attributes
+{
+    /// <summary>
+    /// 自定义属性
+    /// </summary>
+    public class CollectionNameAttribute : Attribute
+    {
+        /// <summary>
+        /// 数据库
+        /// </summary>
+        public string DatabaseName { get; private set; }
+
+        /// <summary>
+        /// 集合
+        /// </summary>
+        public string CollectionName { get; private set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="databaseName">databaseName</param>
+        /// <param name="collectionName">collection名称</param>
+        public CollectionNameAttribute(string databaseName, string collectionName)
+        {
+            this.DatabaseName = databaseName;
+            this.CollectionName = collectionName;
+        }
+    }
+}

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

@@ -6,4 +6,11 @@
     <Nullable>enable</Nullable>
   </PropertyGroup>
 
+  <ItemGroup>
+    <PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
+    <PackageReference Include="MongoDB.Driver" Version="2.19.0" />
+    <PackageReference Include="MongoDB.Driver.Core" Version="2.19.0" />
+    <PackageReference Include="Newtonsoft.Json.Bson" Version="1.0.2" />
+  </ItemGroup>
+
 </Project>

+ 24 - 0
MicroServices/Business/Business.Core/MongoDBHelper/Config.cs

@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Core.MongoDBHelper
+{
+    /// <summary>
+    /// MongoDB链接配置类
+    /// </summary>
+    public class Config
+    {
+        /// <summary>
+        /// 链接字符串
+        /// </summary>
+        public string? connectstring { get; set; }
+
+        /// <summary>
+        /// 数据库
+        /// </summary>
+        public string? database { get; set; }
+    }
+}

+ 73 - 0
MicroServices/Business/Business.Core/MongoDBHelper/IMongoDB.cs

@@ -0,0 +1,73 @@
+using MongoDB.Driver;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Core.MongoDBHelper
+{
+    /// <summary>
+    /// MongoDB接口
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    public interface IMongoDB<T> where T : class
+    {
+        /// <summary>
+        /// 插入一条数据
+        /// </summary>
+        /// <param name="document"></param>
+        /// <returns></returns>
+        Task InsertOne(T document);
+
+        /// <summary>
+        /// 插入多条数据
+        /// </summary>
+        /// <param name="documents"></param>
+        /// <returns></returns>
+        Task InsertMany(List<T> documents);
+
+        /// <summary>
+        /// 批量插入数据
+        /// </summary>
+        /// <param name="documents"></param>
+        /// <returns></returns>
+        Task<long> BulkInsert(List<T> documents);
+
+        /// <summary>
+        /// 更新一条数据
+        /// </summary>
+        /// <param name="name"></param>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        Task<UpdateResult> UpdateOne(string name, long id);
+
+        /// <summary>
+        /// 更新多个字段
+        /// </summary>
+        /// <param name="document"></param>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        Task<UpdateResult> UpdateMultiFields(T document, long id);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        Task Inc(long id);
+
+        /// <summary>
+        /// 获取所有数据
+        /// </summary>
+        /// <returns></returns>
+        Task<List<T>> GetAll();
+
+        /// <summary>
+        /// 根据ID获取数据
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        Task<T> GetOneByID(long id);
+    }
+}

+ 82 - 0
MicroServices/Business/Business.Core/MongoDBHelper/MongoDBTools.cs

@@ -0,0 +1,82 @@
+using Business.Core.Attributes;
+using Microsoft.Extensions.Options;
+using MongoDB.Driver;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Core.MongoDBHelper
+{
+    /// <summary>
+    /// MongoDB实现
+    /// </summary>
+    public class MongoDBTools<T> : IMongoDB<T> where T : class
+    {
+        public readonly IMongoCollection<T> mongoCollection;
+        public IOptionsSnapshot<Config> _config;
+
+        /// <summary>
+        /// MongoDB帮助类
+        /// </summary>
+        /// <param name="config"></param>
+        /// <exception cref="NotImplementedException"></exception>
+        public MongoDBTools(IOptionsSnapshot<Config> config)
+        {
+            _config = config;
+            //数据库链接
+            MongoClient client = new MongoClient(config.Value.connectstring);
+
+            CollectionNameAttribute collectonName = typeof(T).GetCustomAttributes(typeof(CollectionNameAttribute), true).FirstOrDefault() as CollectionNameAttribute;
+            if (collectonName == null)
+            {
+                throw new NotImplementedException("请配置Attribute属性!");
+            }
+            //数据库
+            var database = client.GetDatabase(collectonName.DatabaseName);
+            //表名
+            mongoCollection = database.GetCollection<T>(collectonName.CollectionName);
+        }
+
+        public Task<long> BulkInsert(List<T> documents)
+        {
+            throw new NotImplementedException();
+        }
+
+        public Task<List<T>> GetAll()
+        {
+            throw new NotImplementedException();
+        }
+
+        public Task<T> GetOneByID(long id)
+        {
+            throw new NotImplementedException();
+        }
+
+        public Task Inc(long id)
+        {
+            throw new NotImplementedException();
+        }
+
+        public Task InsertMany(List<T> documents)
+        {
+            throw new NotImplementedException();
+        }
+
+        public Task InsertOne(T document)
+        {
+            return mongoCollection.InsertOneAsync(document);
+        }
+
+        public Task<UpdateResult> UpdateMultiFields(T document, long id)
+        {
+            throw new NotImplementedException();
+        }
+
+        public Task<UpdateResult> UpdateOne(string name, long id)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

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

@@ -1,4 +1,5 @@
-using Business.EntityFrameworkCore;
+using Business.Core.MongoDBHelper;
+using Business.EntityFrameworkCore;
 using Business.MultiTenancy;
 using Hangfire;
 using Hangfire.Dashboard.BasicAuthorization;
@@ -19,6 +20,7 @@ using System.Collections.Generic;
 using System.Data;
 using System.IO;
 using System.Linq;
+using System.Security.Cryptography.Pkcs;
 using Volo.Abp;
 using Volo.Abp.AspNetCore.MultiTenancy;
 using Volo.Abp.AspNetCore.Mvc;
@@ -63,6 +65,8 @@ namespace Business
             ConfigureCors(context, configuration);
             ConfigureSwaggerServices(context, configuration);
             ConfigureHangfire(context, configuration);
+            //MongoDB依赖注入
+            ConfigureMongoDB(configuration);
         }
 
         private void ConfigureConventionalControllers()
@@ -100,6 +104,19 @@ namespace Business
             });
         }
 
+        /// <summary>
+        /// MongoDB依赖注入
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="configuration"></param>
+        private void ConfigureMongoDB(IConfiguration configuration)
+        {
+            Configure<Config>(options => {
+                options.connectstring = configuration.GetConnectionString("MongoDB");
+                options.database = configuration.GetConnectionString("DBName");
+            });
+        }
+
         private void ConfigureCache(IConfiguration configuration)
         {
             Configure<AbpDistributedCacheOptions>(options =>

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

@@ -1,3 +1,4 @@
+using Business.Core.MongoDBHelper;
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.Extensions.DependencyInjection;
@@ -10,6 +11,9 @@ namespace Business
         public void ConfigureServices(IServiceCollection services)
         {
             services.AddApplication<BusinessHostModule>();
+            //MongoDBHelperÒÀÀµ×¢Èë
+            services.AddScoped(typeof(IMongoDB<>), typeof(MongoDBTools<>));
+            services.AddScoped<Config>();
         }
 
         public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)

+ 3 - 1
MicroServices/Business/Business.Host/appsettings.json

@@ -4,7 +4,9 @@
   },
   "ConnectionStrings": {
     "Default": "Server=123.60.180.165;Database=DOPCore;Uid=root; Pwd=5heng=uN;",
-    "dopbiz": "Server=123.60.180.165;Database=dopbiz;Uid=root; Pwd=5heng=uN;"
+    "dopbiz": "Server=123.60.180.165;Database=dopbiz;Uid=root; Pwd=5heng=uN;",
+    "MongoDB": "mongodb://zzydop:h1Q$us3r@123.60.180.165/dopbase",
+    "DBName": "dopbase"
   },
   "Redis": {
     "Configuration": "192.168.1.191"

+ 1 - 1
MicroServices/Business/Business.HttpApi/Controllers/ResourceExamineController.cs

@@ -16,7 +16,7 @@ namespace Business.Controllers
     /// </summary>
     [RemoteService]
     [Area("Business")]
-    [Route("api/business/resource-check")]
+    [Route("api/business/resourceexamine")]
     public class ResourceExamineController : AbpController
     {
         private readonly IResourceExamineAppService _ResourceExamineAppService;

+ 1 - 0
MicroServices/Business/Bussiness.Model/Bussiness.Model.csproj

@@ -15,6 +15,7 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <PackageReference Include="MongoDB.Driver.Core" Version="2.19.0" />
     <PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="6.0.2" />
     <PackageReference Include="Volo.Abp.Validation" Version="6.0.0" />
   </ItemGroup>

+ 6 - 2
MicroServices/Business/Bussiness.Model/Tech/mes_process.cs

@@ -1,4 +1,5 @@
-using System;
+using Business.Model;
+using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
@@ -6,13 +7,16 @@ using System.Globalization;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using MongoDB.Driver.Core;
+using Business.Core.Attributes;
 
 namespace Bussiness.Model.Tech
 {
     /// <summary>
     /// 工序表
     /// </summary>
-    public class mes_process
+    [CollectionName("dopbase", "mes_process")]
+    public class mes_process : BaseEntity
     {
         /// <summary>
         /// 工序主键

+ 3 - 1
MicroServices/Business/Bussiness.Model/Tech/mes_technique.cs

@@ -1,4 +1,5 @@
-using Business.Model;
+using Business.Core.Attributes;
+using Business.Model;
 using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
 
@@ -7,6 +8,7 @@ namespace Bussiness.Model.Tech
     /// <summary>
     /// 工艺路径表
     /// </summary>
+    [CollectionName("dopbase", "mes_technique")]
     public class mes_technique : BaseEntity
     {
         /// <summary>