oyq28 11 kuukautta sitten
vanhempi
commit
096d699a0f

+ 1 - 1
WCS/Controllers/WcsDeviceController.cs

@@ -4,7 +4,7 @@ using Microsoft.EntityFrameworkCore;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
-using WCS.entity;
+using WCS.Entitys;
 using WCS.Common;
 namespace WCS.Controllers;
 [ApiController]

+ 36 - 0
WCS/Entitys/Project.cs

@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace WCS.Entitys
+{
+    /// <summary>
+    /// 项目管理
+    /// </summary>
+    public class Project
+    {
+
+        /// <summary>
+        /// 项目Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 项目名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        public DateTime CreateTime { get; set; }
+
+
+    }
+}

+ 115 - 0
WCS/Entitys/TaskCallback.cs

@@ -0,0 +1,115 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace WCS.Entitys
+{
+    [Table("wcs_task_callback")]
+    public class TaskCallback
+    {
+        [Key]
+        [Column("id")]
+        [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
+        public int Id { get; set; }
+
+        /// <summary>
+        /// ip
+        /// </summary>
+        [Column("ip")] 
+        public string IP { get; set; }
+
+        [Column("port")] 
+        public string Port { get; set; }
+
+        [Column("task_id")] 
+        public string TaskId { get; set; }
+  
+        [Column("task_node_id")] 
+        public string TaskNodeId { get; set; }
+ 
+        [Column("data")]
+        public string Data { get; set; }
+
+        [Column("address")]
+        public string Address { get; set; }
+
+        [Column("address2")]
+        public string Address2 { get; set; }
+
+        [Column("address3")]
+        public string Address3 { get; set; }
+
+        [Column("fail_address")]
+        public string FailAddress { get; set; }
+
+        [Column("fail_address2")]
+        public string FailAddress2 { get; set; }
+
+        [Column("fail_address3")]
+        public string FailAddress3 { get; set; }
+
+        [Column("success_reset_address")]
+        public string SuccessResetAddress { get; set; }
+
+        [Column("success_reset_address2")]
+        public string SuccessResetAddress2 { get; set; }
+
+        [Column("success_reset_value")]
+        public string SuccessResetValue { get; set; }
+
+        [Column("success_reset_value2")]
+        public string SuccessResetValue2 { get; set; }
+
+        [Column("operate_type")]
+        public string OperateType { get; set; }
+
+        [Column("operate_name")]
+        public string OperateName { get; set; }
+
+        [Column("callback_value")]
+        public string CallbackValue { get; set; }
+
+        [Column("callback_value2")]
+        public string CallbackValue2 { get; set; }
+
+        [Column("callback_value3")]
+        public string CallbackValue3 { get; set; }
+
+        [Column("callback_fail_value")]
+        public string CallbackFailValue { get; set; }
+
+        [Column("callback_fail_value2")]
+        public string CallbackFailValue2 { get; set; }
+
+        [Column("callback_fail_value3")]
+        public string CallbackFailValue3 { get; set; }
+
+        [Column("state")]
+        public bool State { get; set; } = true;
+
+        [Column("create_time")]
+        public DateTime CreateTime { get; set; } = DateTime.Now;
+
+        [Column("update_time")]
+        public DateTime UpdateTime { get; set; } = DateTime.Now;
+
+        [Column("description")]
+        public string Description { get; set; }
+
+       
+        public TaskCallback(string IP, string OperateType, string OperateName, string TaskId, string TaskNodeId)
+        {
+            this.TaskNodeId = TaskNodeId;
+            this.OperateType = OperateType;
+            this.OperateName = OperateName;
+            this.IP = IP;
+            this.Port = Port;
+            this.TaskId = TaskId;
+        }
+        public TaskCallback()
+        {
+           
+        }
+    } 
+  
+}

+ 11 - 5
WCS/entity/WcsAction.cs → WCS/Entitys/WcsAction.cs

@@ -1,9 +1,9 @@
-
+using WCS.Utils;
 using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema;
  
 
-namespace WCS.entity
+namespace WCS.Entitys
 {
     [Table("wcs_action")]
     public class WcsAction
@@ -17,7 +17,7 @@ namespace WCS.entity
         public string? ProtocolType { get; set; }
 
         [Column("ip")]
-        public string Ip { get; set; }
+        public string? Ip { get; set; }
 
         [Column("operate_type")] 
         public string? OperateType { get; set; }
@@ -38,9 +38,15 @@ namespace WCS.entity
         public string? Description { get; set; }
     }
 
+
+
+
     public enum WcsActionType
     {
-        GetSend
+        [EnumDescription("取托盘")]
+        Get,
+        [EnumDescription("放托盘")]
+        Send
+
     }
-    
 }

+ 4 - 4
WCS/entity/WcsActionAddress.cs → WCS/Entitys/WcsActionAddress.cs

@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema;
  
 
-namespace WCS.entity
+namespace WCS.Entitys
 {
     [Table("wcs_action_address")]
     public class WcsActionAddress
@@ -17,13 +17,13 @@ namespace WCS.entity
         public int ActionId { get; set; }
 
         [Column("type")]
-        public string Type { get; set; }
+        public string? Type { get; set; }
 
         [Column("address")] 
-        public string Address { get; set; }
+        public string? Address { get; set; }
 
         [Column("value")] 
-        public string Value { get; set; }
+        public string? Value { get; set; }
          
         [Column("check_type")] 
         public bool CheckType { get; set; } 

+ 2 - 2
WCS/entity/WcsDevice.cs → WCS/Entitys/WcsDevice.cs

@@ -1,4 +1,4 @@
-namespace WCS.entity;
+namespace WCS.Entitys;
 
 using Microsoft.EntityFrameworkCore;
 using System;
@@ -29,7 +29,7 @@ public class WcsDevice
     public bool UseState { get; set; } = false;
 
     [StringLength(100)]
-    public string Description { get; set; }
+    public string? Description { get; set; }
 
     [Column("disconnect_update_time")]
     public DateTime? DisconnectUpdateTime { get; set; }

+ 2 - 1
WCS/Model/RequestData.cs

@@ -39,7 +39,6 @@
 
     public class LocationData
     {
-        public string taskCode { get; set; }
         public string startPosition { get; set; }
 
 
@@ -49,5 +48,7 @@
 
         //0 取  1 放
         public int type {  get; set; }
+
+        public string operateType { get; set; }
     }
 }

+ 93 - 7
WCS/Program.cs

@@ -1,10 +1,24 @@
+using IMCS.CCS.Services;
 using Microsoft.EntityFrameworkCore;
+using Quartz.Impl;
+using Quartz;
 using StackExchange.Redis;
+using System.ComponentModel.Design;
 using WCS.Common;
+using WCS.Common.Redis;
+using WCS.Config;
+using WCS.Repository;
+using WCS.Service;
+using WCS.Service.Impl;
+using WCS.Service.Jobs;
+using WCS.Services;
 var builder = WebApplication.CreateBuilder(args);
 
+
+
+
 // Add services to the container.
-// 配置 Redis 连接
+// 锟斤拷锟斤拷 Redis 锟斤拷锟斤拷
 var redisConfiguration = builder.Configuration.GetConnectionString("Redis");
 builder.Services.AddSingleton<IConnectionMultiplexer>(ConnectionMultiplexer.Connect(redisConfiguration));
 
@@ -19,19 +33,91 @@ builder.Services.AddSwaggerGen();
 
 
 
+// 注锟斤拷 Repository
+builder.Services.AddScoped<IDeviceRepository, DeviceRepository>();
+builder.Services.AddScoped<ITaskCallbackRepository, TaskCallbackRepository>();
+builder.Services.AddScoped<IWcsActionAddressRepository, WcsActionAddressRepository>();
+builder.Services.AddScoped<IWcsActionRepository, WcsActionRepository>();
+
+// 注锟斤拷 Service
+builder.Services.AddScoped<ITTaskService, TTaskService>();
+builder.Services.AddScoped<ITaskCallbackService, TaskCallbackService>();
+builder.Services.AddScoped<IWcsActionAddressService, WcsActionAddressService>();
+builder.Services.AddScoped<IWcsActionService, WcsActionService>();
+
+/*builder.Services.AddAutoMapper(typeof(AutoMapperConfig));
+//锟侥硷拷锟斤拷锟捷凤拷锟斤拷
+builder.Services.AddTransient<IDataService, DataService>();
+//锟斤拷目锟斤拷锟斤拷
+builder.Services.AddTransient<IProjectService, ProjectService>();
+//锟斤拷锟斤拷锟斤拷锟�
+builder.Services.AddTransient<ITaskService, TaskService>();
+//锟斤拷时锟斤拷锟斤拷 锟斤拷锟斤拷
+builder.Services.AddTransient<IQuartzJobService, QuartzJobService>();
+//注锟斤拷ISchedulerFactory锟斤拷实锟斤拷锟斤拷
+builder.Services.AddTransient<ISchedulerFactory, StdSchedulerFactory>();
+//web api 锟斤拷锟斤拷锟斤拷锟�
+builder.Services.AddTransient<IApiRequestService, ApiRequestService>();
+//Job 实锟斤拷锟斤拷锟斤拷锟斤拷
+builder.Services.AddSingleton<ResultfulApiJobFactory>();
+//Reultful 锟斤拷锟� api 锟斤拷锟斤拷 锟斤拷锟斤拷
+builder.Services.AddTransient<ResultfulApiJob>();
+//锟斤拷锟斤拷锟斤拷志
+builder.Services.AddSingleton<IJobLoggerService, JobLoggerService>();
+//锟斤拷目锟斤拷锟斤拷锟斤拷息
+builder.Services.AddSingleton<IDataStorageConfigurationService, DataStorageConfigurationService>();*/
+//redis 注锟斤拷
+//RepositoryRedisModule.RegisterRedisRepository(services, Configuration["RedisConnectionString"]);
+//services.AddScoped<IRedisService, RedisService>();
+
+//builder.Services.AddTransient<IUserService, UserService>();
+//builder.Services.AddTransient<IUserRepository, UserRepository>();
+//builder.Services.AddScoped<IDeviceService, DeviceService>();
+//builder.Services.AddScoped<IHttpRequestService, HttpRequestService>();
+//builder.Services.AddScoped<IEquipmentMonitorService, EquipmentMonitorService>();
+builder.Services.AddScoped<ITaskCallbackService, TaskCallbackService>();
+//builder.Services.AddScoped<IDictionaryService, DictionaryService>();
+builder.Services.AddScoped<IWcsActionService, WcsActionService>();
+//builder.Services.AddScoped<IWcsTagValueService, WcsTagValueService>();
+//builder.Services.AddScoped<ITaskJobService, TaskJobService>();
+builder.Services.AddScoped<IWcsActionAddressService, WcsActionAddressService>();
+
+builder.Services.AddScoped<IDeviceRepository, DeviceRepository>();
+//builder.Services.AddScoped<IEquipmentMonitorRepository, EquipmentMonitorRepository>();
+builder.Services.AddScoped<ITaskCallbackRepository, TaskCallbackRepository>();
+//builder.Services.AddScoped<IDictionaryRepository, DictionaryRepository>();
+builder.Services.AddScoped<IWcsActionRepository, WcsActionRepository>();
+//builder.Services.AddScoped<ICcsTagValueRepository, CcsTagValueRepository>();
+builder.Services.AddScoped<IWcsActionAddressRepository, WcsActionAddressRepository>();
+
 var app = builder.Build();
 
-// Configure the HTTP request pipeline.
+
 if (app.Environment.IsDevelopment())
 {
+    app.UseDeveloperExceptionPage();
     app.UseSwagger();
-    app.UseSwaggerUI();
+    app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Your API V1"));
 }
 
-app.UseHttpsRedirection();
+// 锟斤拷锟矫撅拷态锟侥硷拷锟叫硷拷锟�
+app.UseStaticFiles();
 
-app.UseAuthorization();
+// 锟斤拷锟斤拷默锟斤拷锟侥硷拷锟叫硷拷锟�
+app.UseDefaultFiles();
 
-app.MapControllers();
+// 锟斤拷锟斤拷路锟斤拷
+app.UseRouting();
+
+// 锟斤拷锟斤拷锟斤拷锟斤拷锟截讹拷锟斤拷 HTML 页锟斤拷
+app.UseEndpoints(endpoints =>
+{
+    endpoints.MapControllers();
+    endpoints.MapGet("/", context =>
+    {
+        context.Response.Redirect("/client/index.html");
+        return Task.CompletedTask;
+    });
+});
 
-app.Run();
+app.Run();

+ 1 - 1
WCS/Repository/DeviceRepository.cs

@@ -1,5 +1,5 @@
 
-using WCS.entity; 
+using WCS.Entitys;
 using Microsoft.EntityFrameworkCore;
 using System;
 using System.Collections.Generic;

+ 1 - 1
WCS/Repository/IDeviceRepository.cs

@@ -1,4 +1,4 @@
-using WCS.entity;
+using WCS.Entitys;
 using System;
 using System.Collections.Generic;
 using System.Linq;

+ 1 - 1
WCS/Repository/ITaskCallbackRepository.cs

@@ -1,4 +1,4 @@
-using WCS.entity;
+using WCS.Entitys;
 using System.Collections.Generic;
 using System.Threading.Tasks;
 

+ 1 - 1
WCS/Repository/IWcsActionAddressRepository.cs

@@ -1,4 +1,4 @@
-using WCS.entity;
+using WCS.Entitys;
 using System;
 using System.Collections.Generic;
 using System.Linq;

+ 1 - 1
WCS/Repository/IWcsActionRepository.cs

@@ -1,4 +1,4 @@
-using WCS.entity;
+using WCS.Entitys;
 using System;
 using System.Collections.Generic;
 using System.Linq;

+ 2 - 2
WCS/Repository/TaskCallbackRepository.cs

@@ -1,4 +1,4 @@
-using WCS.entity;
+using WCS.Entitys;
 using Microsoft.EntityFrameworkCore;
 using System;
 using System.Collections.Generic;
@@ -79,7 +79,7 @@ namespace WCS.Repository
             {
                 list = list.Where(x => x.Description == vo.Description);
             }
-            list = list.Where(x => x.OperateType == WcsActionType.GetSend.ToString() ); 
+            list = list.Where(x => x.OperateType == vo.OperateType.ToString() ); 
 
             return await list.OrderByDescending(o => o.CreateTime).FirstOrDefaultAsync();
 

+ 4 - 2
WCS/Repository/WcsActionAddressRepository.cs

@@ -1,5 +1,5 @@
 
-using WCS.entity;
+using WCS.Entitys;
 using Microsoft.EntityFrameworkCore;
 using System;
 using System.Collections.Generic;
@@ -25,11 +25,13 @@ namespace WCS.Repository
             {
                 actions = actions.Where(x => x.ActionId == vo.ActionId);
             }
+
+            actions = actions.Where(x => x.Sort == vo.Sort);
             if (!string.IsNullOrEmpty(vo.Type))
             {
                 actions = actions.Where(x => x.Type == vo.Type);
             } 
-            return actions.OrderBy(x => x.Sort).ToList();
+            return actions.ToList();
 
         } 
 

+ 1 - 1
WCS/Repository/WcsActionRepository.cs

@@ -6,7 +6,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
 using WCS.Common;
-using WCS.entity;
+using WCS.Entitys;
 
 namespace WCS.Repository
 {

+ 1 - 1
WCS/Service/ITaskCallbackService.cs

@@ -1,4 +1,4 @@
-using WCS.entity;
+using WCS.Entitys;
 using System.Collections.Generic;
 using System.Threading.Tasks;
 

+ 57 - 3
WCS/Service/ITaskService.cs

@@ -1,10 +1,64 @@
-using Microsoft.AspNetCore.Mvc;
-using WCS.Model;
+using WCS.Entitys;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
 
 namespace WCS.Service
 {
+    /// <summary>
+    /// 任务 Job 服务
+    /// </summary>
     public interface ITaskService
     {
-        Task<ResponseData> ExcuteTask(RequestData<LocationData> data);
+
+        /// <summary>
+        /// 查询列表
+        /// </summary>
+        /// <returns></returns>
+        Task<IEnumerable<Tasks>> FindListAsync(Guid? projectId = null);
+
+        /// <summary>
+        /// 保存数据
+        /// </summary>
+        /// <param name="form"></param>
+        /// <returns></returns>
+        Task<Tasks> SaveAsync(Tasks form);
+
+        /// <summary>
+        /// 删除数据
+        /// </summary>
+        /// <returns></returns>
+        Task<bool> DeleteAsync(Guid id);
+
+        /// <summary>
+        /// 根据Id 查询 任务
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        Task<Tasks> FindByIdAsync(Guid id);
+
+        /// <summary>
+        /// 根据任务id 运行任务调度
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        Task<bool> RunByIdAsync(Guid id);
+
+        /// <summary>
+        /// 根据任务id 关闭任务调度
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        Task<bool> CloseByIdAsync(Guid id);
+
+        /// <summary>
+        /// 更新执行时间
+        /// </summary>
+        /// <param name="tasksId"></param>
+        /// <param name="dateTime"></param>
+        /// <returns></returns>
+        Task<bool> UpdateExecuteTime(Guid tasksId, DateTime dateTime);
+
+
     }
 }

+ 1 - 1
WCS/Service/IWcsActionAddressService.cs

@@ -1,4 +1,4 @@
-using WCS.entity;
+using WCS.Entitys;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;

+ 1 - 1
WCS/Service/IWcsActionService.cs

@@ -1,4 +1,4 @@
-using WCS.entity;
+using WCS.Entitys;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;

+ 2 - 1
WCS/Service/Impl/TaskCallbackService.cs

@@ -1,5 +1,6 @@
 
-using WCS.entity;
+
+using WCS.Entitys;
 using WCS.Repository;
 using Newtonsoft.Json;
 using StackExchange.Redis;

+ 1 - 1
WCS/Service/Impl/WcsActionAddressService.cs

@@ -1,4 +1,4 @@
-using WCS.entity;
+using WCS.Entitys;
 using WCS.Repository;
 using System;
 using System.Collections.Generic;

+ 1 - 1
WCS/Service/Impl/WcsActionService.cs

@@ -1,4 +1,4 @@
-using WCS.entity;
+using WCS.Entitys;
 using WCS.Repository;
 using System;
 using System.Collections.Generic;

+ 20 - 0
WCS/Util/Enum/EnumHelper.cs

@@ -23,5 +23,25 @@ namespace WCS.Utils
             }
             return description;
         }
+
+
+
+        public static string GetEnumDescription<T>(string enumName) where T : Enum
+        {
+            Type enumType = typeof(T);
+            if (!enumType.IsEnum)
+            {
+                throw new ArgumentException("T must be an enumerated type");
+            }
+
+            var enumField = enumType.GetField(enumName);
+            if (enumField == null)
+            {
+                throw new ArgumentException($"No enum found with name {enumName} in {enumType}");
+            }
+
+            var attributes = (EnumDescriptionAttribute[])enumField.GetCustomAttributes(typeof(EnumDescriptionAttribute), false);
+            return attributes.Length > 0 ? attributes[0].Description : enumName;
+        }
     }
 }