diff --git a/.gitignore b/.gitignore
index 36e9ce1..56c82aa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,3 +29,4 @@ bin-release/
/API/Wood.Admin.WebApi/wwwroot/uploads
bin/
obj/
+/.vs/VSWorkspaceState.json
diff --git a/API/TaskManager.Contracts/TaskManager.Contracts.csproj b/API/TaskManager.Contracts/TaskManager.Contracts.csproj
index 3b5b170..c4d09d0 100644
--- a/API/TaskManager.Contracts/TaskManager.Contracts.csproj
+++ b/API/TaskManager.Contracts/TaskManager.Contracts.csproj
@@ -10,4 +10,8 @@
+
+
+
+
diff --git a/API/TaskManager.EntityFramework/IRepository/IRepository.cs b/API/TaskManager.EntityFramework/IRepository/IRepository.cs
new file mode 100644
index 0000000..ef47734
--- /dev/null
+++ b/API/TaskManager.EntityFramework/IRepository/IRepository.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+using TaskManager.Entity;
+using TaskManager.EntityFramework.Repository;
+
+namespace TaskManager.EntityFramework
+{
+ public interface IRepository where TEntity : BaseEntity
+ {
+ Task GetByIdAsync(int id);
+ Task> GetAllAsync();
+ Task AddAsync(TEntity entity);
+ Task UpdateAsync(TEntity entity);
+ Task DeleteAsync(int id);
+
+ Task> GetPagedAsync(PagingParams pagingParams);
+
+
+ Task> GetPagedAsync(
+ Expression> filter = null,
+ PagingParams pagingParams = null);
+
+ }
+}
\ No newline at end of file
diff --git a/API/TaskManager.EntityFramework/Repository/Repository.cs b/API/TaskManager.EntityFramework/Repository/Repository.cs
new file mode 100644
index 0000000..196a0fd
--- /dev/null
+++ b/API/TaskManager.EntityFramework/Repository/Repository.cs
@@ -0,0 +1,234 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using TaskManager.Entity;
+using TaskManager.EntityFramework;
+using Wood.Util;
+
+namespace TaskManager.EntityFramework.Repository
+{
+
+
+
+
+ public class Repository : IRepository
+ where TEntity : BaseEntity
+ {
+ private readonly DbContext _context;
+ private readonly DbSet _dbSet;
+
+ public Repository(DbContext context)
+ {
+ _context = context;
+ _dbSet = context.Set();
+ }
+
+ public async Task GetByIdAsync(int id)
+ {
+ return await _dbSet.FindAsync(id);
+ }
+
+ public async Task> GetAllAsync()
+ {
+ return await _dbSet.ToListAsync();
+ }
+
+ public async Task AddAsync(TEntity entity)
+ {
+ entity.CreationTime = DateTime.UtcNow;
+ await _dbSet.AddAsync(entity);
+ await _context.SaveChangesAsync();
+ return entity;
+ }
+
+ public async Task UpdateAsync(TEntity entity)
+ {
+
+ _dbSet.Update(entity);
+ await _context.SaveChangesAsync();
+ }
+
+ public async Task DeleteAsync(int id)
+ {
+ var entity = await _dbSet.FindAsync(id);
+ if (entity != null)
+ {
+ _dbSet.Remove(entity);
+ await _context.SaveChangesAsync();
+ }
+ }
+
+ public async Task> GetPagedAsync(PagingParams pagingParams)
+ {
+ return await _dbSet.AsNoTracking().ToPagedListAsync(pagingParams);
+ }
+
+
+ public async Task> GetPagedAsync(
+ Expression> filter = null,
+ PagingParams pagingParams = null)
+ {
+ IQueryable query = _dbSet.AsNoTracking();
+
+ // 应用过滤条件
+ if (filter != null)
+ {
+ query = query.Where(filter);
+ }
+
+ // 应用动态过滤
+ if (pagingParams?.Filters != null && pagingParams.Filters.Any())
+ {
+ query = query.ApplyFilters(pagingParams.Filters);
+ }
+
+ // 应用分页和排序
+ pagingParams ??= new PagingParams();
+ return await query.ToPagedListAsync(pagingParams);
+ }
+
+
+
+
+
+
+ }
+ public class PagedResult
+ {
+ public List Data { get; set; }
+ public int TotalCount { get; set; }
+ public int PageNumber { get; set; }
+ public int PageSize { get; set; }
+ public int TotalPages => (int)Math.Ceiling(TotalCount / (double)PageSize);
+
+ public PagedResult()
+ {
+ Data = new List();
+ }
+ }
+
+
+
+ public class PagingParams
+ {
+ private const int MaxPageSize = 50;
+ private int _pageSize = 10;
+
+ public int PageNumber { get; set; } = 1;
+ public int PageSize
+ {
+ get => _pageSize;
+ set => _pageSize = (value > MaxPageSize) ? MaxPageSize : value;
+ }
+ public string SortBy { get; set; }
+ public bool IsAscending { get; set; } = true;
+
+ // 新增:过滤条件(键值对)
+ public Dictionary Filters { get; set; } = new();
+ }
+
+
+
+
+
+ public static class QueryableExtensions
+ {
+ public static IQueryable ApplySort(this IQueryable query, string sortBy, bool isAscending)
+ {
+ if (string.IsNullOrEmpty(sortBy)) return query;
+
+ var parameter = Expression.Parameter(typeof(T), "x");
+ var property = Expression.Property(parameter, sortBy);
+ var lambda = Expression.Lambda(property, parameter);
+
+ var methodName = isAscending ? "OrderBy" : "OrderByDescending";
+ var resultExpression = Expression.Call(
+ typeof(Queryable),
+ methodName,
+ new[] { typeof(T), property.Type },
+ query.Expression,
+ Expression.Quote(lambda));
+
+ return query.Provider.CreateQuery(resultExpression);
+ }
+
+
+ public static IQueryable ApplyFilters(this IQueryable query, Dictionary filters)
+ {
+ if (filters == null || !filters.Any()) return query;
+
+ foreach (var filter in filters)
+ {
+ var property = typeof(T).GetProperty(filter.Key,
+ BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
+
+ if (property != null)
+ {
+ var parameter = Expression.Parameter(typeof(T), "x");
+ var propertyAccess = Expression.Property(parameter, property);
+ var constant = Expression.Constant(
+ Convert.ChangeType(filter.Value, property.PropertyType));
+
+ var equalExpression = Expression.Equal(propertyAccess, constant);
+ var lambda = Expression.Lambda>(equalExpression, parameter);
+
+ query = query.Where(lambda);
+ }
+ }
+
+ return query;
+ }
+
+
+
+ public static IQueryable ApplyStringFilter(this IQueryable query,
+ string propertyName, string value)
+ {
+ var property = typeof(T).GetProperty(propertyName,
+ BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
+
+ if (property != null && property.PropertyType == typeof(string) && !string.IsNullOrEmpty(value))
+ {
+ var parameter = Expression.Parameter(typeof(T), "x");
+ var propertyAccess = Expression.Property(parameter, property);
+ var containsMethod = typeof(string).GetMethod("Contains", new[] { typeof(string) });
+ var constant = Expression.Constant(value);
+
+ var containsExpression = Expression.Call(propertyAccess, containsMethod, constant);
+ var lambda = Expression.Lambda>(containsExpression, parameter);
+
+ query = query.Where(lambda);
+ }
+
+ return query;
+ }
+
+
+
+
+
+ public static async Task> ToPagedListAsync(this IQueryable source, PagingParams pagingParams)
+ {
+ var count = await source.CountAsync();
+ var items = await source
+ .ApplySort(pagingParams.SortBy, pagingParams.IsAscending)
+ .Skip((pagingParams.PageNumber - 1) * pagingParams.PageSize)
+ .Take(pagingParams.PageSize)
+ .ToListAsync();
+
+ return new PagedResult
+ {
+ Data = items,
+ TotalCount = count,
+ PageNumber = pagingParams.PageNumber,
+ PageSize = pagingParams.PageSize
+ };
+ }
+ }
+
+}
diff --git a/API/TaskManager.EntityFramework/Repository/Uow/Uow.cs b/API/TaskManager.EntityFramework/Repository/Uow/Uow.cs
new file mode 100644
index 0000000..4540751
--- /dev/null
+++ b/API/TaskManager.EntityFramework/Repository/Uow/Uow.cs
@@ -0,0 +1,50 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TaskManager.Entity;
+using TaskManager.EntityFramework;
+
+namespace TaskManager.EntityFramework.Repository
+{
+ public interface ITaskUnitOfWork : IDisposable
+ {
+ IRepository GetRepository() where TEntity : BaseEntity;
+ Task SaveChangesAsync();
+ }
+
+ public class TaskUnitOfWork : ITaskUnitOfWork
+ {
+ private readonly DbContext _context;
+ private readonly Dictionary _repositories = new();
+
+ public TaskUnitOfWork(DbContext context)
+ {
+ _context = context;
+ }
+
+ public IRepository GetRepository() where TEntity : BaseEntity
+ {
+ if (_repositories.TryGetValue(typeof(TEntity), out var repo))
+ {
+ return (IRepository)repo;
+ }
+
+ var newRepo = new Repository(_context);
+ _repositories[typeof(TEntity)] = newRepo;
+ return newRepo;
+ }
+
+ public async Task SaveChangesAsync()
+ {
+ return await _context.SaveChangesAsync();
+ }
+
+ public void Dispose()
+ {
+ _context.Dispose();
+ }
+ }
+}
diff --git a/API/Wood.Admin.WebApi/Program.cs b/API/Wood.Admin.WebApi/Program.cs
index e60b116..c73a4f0 100644
--- a/API/Wood.Admin.WebApi/Program.cs
+++ b/API/Wood.Admin.WebApi/Program.cs
@@ -55,7 +55,14 @@ namespace Wood.Admin.WebApi
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
- });
+ webBuilder.ConfigureKestrel(options =>
+ {
+ // 配置HTTP端口
+ options.ListenAnyIP(7629);
+ // 配置HTTPS端口
+ //options.ListenLocalhost(5002, configure => configure.UseHttps());
+ });
+ });
}
}
diff --git a/API/Wood.Admin.WebApi/Properties/launchSettings.json b/API/Wood.Admin.WebApi/Properties/launchSettings.json
index 008eead..0c2a01b 100644
--- a/API/Wood.Admin.WebApi/Properties/launchSettings.json
+++ b/API/Wood.Admin.WebApi/Properties/launchSettings.json
@@ -3,7 +3,7 @@
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
- "applicationUrl": "http://localhost:7001",
+ "applicationUrl": "http://localhost:8888",
"sslPort": 0
}
},
@@ -16,7 +16,7 @@
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
- "applicationUrl": "http://localhost:7001"
+ "applicationUrl": "http://localhost:8888"
}
}
}
\ No newline at end of file
diff --git a/API/Wood.Admin.WebApi/Startup.cs b/API/Wood.Admin.WebApi/Startup.cs
index 90d9121..fa255b8 100644
--- a/API/Wood.Admin.WebApi/Startup.cs
+++ b/API/Wood.Admin.WebApi/Startup.cs
@@ -21,8 +21,11 @@ using System.Reflection;
using System.Text;
using TaskManager.Controllers;
using TaskManager.EntityFramework;
+using TaskManager.EntityFramework.Repository;
+using TaskManager.EntityFramework.Repository;
using Wood.Admin.WebApi.Filter;
using Wood.Admin.WebApi.Middleware;
+using Wood.Data.Repository;
using Wood.Util;
namespace Wood.Admin.WebApi
@@ -106,7 +109,8 @@ namespace Wood.Admin.WebApi
//options.Queues = builder.Configuration.GetSection("Hangfire:ServerOptions:Queues").Get() ?? new[] { "default" };
});
-
+ services.AddScoped();
+ services.AddScoped(typeof(TaskManager.EntityFramework.IRepository<>), typeof(Repository<>));
@@ -144,11 +148,14 @@ namespace Wood.Admin.WebApi
//options.SerializerSettings.Converters.Add(new IsoDateTimeConverter { DateTimeStyles = System.Globalization.DateTimeStyles.AssumeUniversal }); // 解决DateTimeOffset异常
});
- //添加跨域
- services.AddCors();
+ //添加跨域
+ //services.AddCors();
+
+ services.AddCors();
+
- //添加缓存支持
- services.AddMemoryCache();
+ //添加缓存支持
+ services.AddMemoryCache();
//初始化缓存
services.AddCache();
diff --git a/API/Wood.Admin.WebApi/appsettings.json b/API/Wood.Admin.WebApi/appsettings.json
index 2d7fd71..31b9f30 100644
--- a/API/Wood.Admin.WebApi/appsettings.json
+++ b/API/Wood.Admin.WebApi/appsettings.json
@@ -29,4 +29,21 @@
"RefreshTokenExpire": 15, //刷新token有效期限 天
"TokenExpire": 30 //token有效期限 分钟
}
+
+ //"Kestrel": {
+ // "EndPoints": {
+ // "Http": {
+ // "Url": "http://localhost:60075"
+ // }
+ // //"Https": {
+ // // "Url": "https://localhost:5009"
+ // //}
+ // }
+ //}
+
+
+
+
+
+
}
diff --git a/API/Wood.Service/Controllers/RecurringJobBaseController.cs b/API/Wood.Service/Controllers/RecurringJobBaseController.cs
index 1921819..b58ac02 100644
--- a/API/Wood.Service/Controllers/RecurringJobBaseController.cs
+++ b/API/Wood.Service/Controllers/RecurringJobBaseController.cs
@@ -15,6 +15,7 @@ using System.Text.RegularExpressions;
using System.Threading.Tasks;
using TaskManager.Entity;
using TaskManager.EntityFramework;
+using TaskManager.EntityFramework;
@@ -31,6 +32,10 @@ namespace TaskManager.Controllers
protected string Url { set; get; } = "/v2/get/supplierProPlaning";
protected virtual string TaskName { set; get; } = "SupplierProPlaning";
protected readonly LogController _logger;
+
+
+
+
public RecurringJobBaseController(
HttpClient httpClient,
JobDbContext jobDbContext,
@@ -150,6 +155,13 @@ namespace TaskManager.Controllers
return Regex.Replace(input, @"[\s]+", "");
}
+
+
+
+
+
+
+
}
diff --git a/API/Wood.Service/Controllers/RecurringJobInputPageController.cs b/API/Wood.Service/Controllers/RecurringJobInputPageController.cs
index 2af1428..bf2ccc2 100644
--- a/API/Wood.Service/Controllers/RecurringJobInputPageController.cs
+++ b/API/Wood.Service/Controllers/RecurringJobInputPageController.cs
@@ -1,6 +1,6 @@
namespace TaskManager.Controllers
{
- public class RecurringJobInputPageController
- {
- }
+ //public class RecurringJobInputPageController: RecurringJobBaseController
+ //{
+ //}
}
diff --git a/API/Wood.Service/Controllers/RecurringJobOutPageController.cs b/API/Wood.Service/Controllers/RecurringJobOutPageController.cs
index 5e15069..132b1d2 100644
--- a/API/Wood.Service/Controllers/RecurringJobOutPageController.cs
+++ b/API/Wood.Service/Controllers/RecurringJobOutPageController.cs
@@ -1,20 +1,26 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Omu.ValueInjecter;
-
+using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using TaskManager.Contracts.Dtos;
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
+using TaskManager.EntityFramework;
+using TaskManager.EntityFramework.Repository;
namespace TaskManager.Controllers
{
public class RecurringJobOutPageController : RecurringJobBaseController where T : CherryReadBaseEntity, new() where ToutputDetial : CherryReadBaseEntityDto
{
- public RecurringJobOutPageController(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+
+
+ protected readonly IRepository _repository;
+ public RecurringJobOutPageController(HttpClient httpClient, JobDbContext jobDbContext, LogController log,IRepository repository) : base(httpClient, jobDbContext, log)
{
+ _repository = repository;
}
public async Task> FetchAllDataAsync(string inputdate)
@@ -31,12 +37,6 @@ namespace TaskManager.Controllers
-
-
-
-
-
-
if (firstResponse == null || firstResponse.Code != 200)
{
await _logger.AddError("首次请求失败,无法获取分页信息。", TaskName);
@@ -155,9 +155,6 @@ namespace TaskManager.Controllers
return allData;
}
-
-
-
private async Task> GetPageAsync(PAGE_DTO input)
{
try
@@ -182,8 +179,6 @@ namespace TaskManager.Controllers
new CustomDateTimeConverter("yyyy-MM-dd HH:mm:ss") // 日期转换
}
};
-
-
return JsonSerializer.Deserialize>(content, options);
}
else
@@ -198,35 +193,6 @@ namespace TaskManager.Controllers
return null;
}
-
-
-
-
-
-
-
-
- //try
- //{
- // var url = $"{_apiUrl}?pageNum={pageNum}";
- // var response = await _httpClient.GetAsync(url);
-
- // if (response.IsSuccessStatusCode)
- // {
- // var content = await response.Content.ReadAsStringAsync();
- // return JsonSerializer.Deserialize>(content);
- // }
- // else
- // {
- // Console.WriteLine($"请求失败,状态码: {response.StatusCode}");
- // return null;
- // }
- //}
- //catch (Exception ex)
- //{
- // Console.WriteLine($"请求发生异常: {ex.Message}");
- // return null;
- //}
}
[HttpGet("Test")]
public async Task TestAsync(string url, string path, string taskName, string inputdate)
@@ -244,12 +210,69 @@ namespace TaskManager.Controllers
await FetchAllDataAsync(string.Empty);
}
+ [HttpGet]
+ public async Task>> GetAll()
+ {
+ return await _repository.GetAllAsync() as List;
+ }
+
+ [HttpGet("{id}")]
+ public async Task> GetById(int id)
+ {
+ var entity = await _repository.GetByIdAsync(id);
+ if (entity == null) return NotFound();
+ return entity;
+ }
+
+ [HttpPost]
+ public async Task> Create(T entity)
+ {
+ var createdEntity = await _repository.AddAsync(entity);
+ return CreatedAtAction(nameof(GetById), new { id = createdEntity.Id }, createdEntity);
+ }
+ [HttpPut("{id}")]
+ public async Task Update(int id, T entity)
+ {
+ if (id != entity.UId) return BadRequest();
+
+ await _repository.UpdateAsync(entity);
+ return NoContent();
+ }
+ [HttpDelete("{id}")]
+ public async Task Delete(int id)
+ {
+ await _repository.DeleteAsync(id);
+ return NoContent();
+ }
+ [HttpGet]
+ public async Task>> GetPaged(
+ [FromQuery] int pageNumber = 1,
+ [FromQuery] int pageSize = 10,
+ [FromQuery] string sortBy = "",
+ [FromQuery] bool isAscending = true,
+ [FromQuery] Dictionary filters = null)
+ {
+ var pagingParams = new PagingParams
+ {
+ PageNumber = pageNumber,
+ PageSize = pageSize,
+ SortBy = sortBy,
+ IsAscending = isAscending,
+ Filters = filters
+ };
+
+ // 可以在这里构建表达式树过滤条件
+ Expression> filter = null;
+
+ var pagedResult = await _repository.GetPagedAsync(filter, pagingParams);
+ return Ok(pagedResult);
+ }
+ //GET /api/products?pageNumber=1&pageSize=10&filters[name]=Phone&filters[price]=999
- // 反序列化时使用
diff --git a/API/Wood.Service/Controllers/SUPPLIER_DEL_STATE_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_DEL_STATE_Service.cs
index 2e7cc45..94625e3 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_DEL_STATE_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_DEL_STATE_Service.cs
@@ -2,13 +2,14 @@
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
+using TaskManager.EntityFramework;
namespace TaskManager.Controllers
{
//看板配送单
public class SUPPLIER_DEL_STATE_Service : RecurringJobOutPageController
{
- public SUPPLIER_DEL_STATE_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_DEL_STATE_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_INV_DATA_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_INV_DATA_Service.cs
index 520ad2a..bd7a6af 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_INV_DATA_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_INV_DATA_Service.cs
@@ -2,13 +2,14 @@
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
+using TaskManager.EntityFramework;
namespace TaskManager.Controllers
{
//奇瑞RDC共享库存
public class SUPPLIER_INV_DATA_Service : RecurringJobOutPageController
{
- public SUPPLIER_INV_DATA_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_INV_DATA_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_MRP_DATE_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_MRP_DATE_Service.cs
index e3948e6..eae6951 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_MRP_DATE_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_MRP_DATE_Service.cs
@@ -2,13 +2,14 @@
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
+using TaskManager.EntityFramework;
namespace TaskManager.Controllers
{
//日物料需求计划
public class SUPPLIER_MRP_DATE_Service : RecurringJobOutPageController
{
- public SUPPLIER_MRP_DATE_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_MRP_DATE_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_MRP_MONTH_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_MRP_MONTH_Service.cs
index 212ec6c..bd68306 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_MRP_MONTH_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_MRP_MONTH_Service.cs
@@ -2,12 +2,13 @@
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
+using TaskManager.EntityFramework;
namespace TaskManager.Controllers
{
public class SUPPLIER_MRP_MONTH_Service : RecurringJobOutPageController
{
- public SUPPLIER_MRP_MONTH_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_MRP_MONTH_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_MRP_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_MRP_Service.cs
index c67512f..6c0b5cf 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_MRP_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_MRP_Service.cs
@@ -2,13 +2,14 @@
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
+using TaskManager.EntityFramework;
namespace TaskManager.Controllers
{
//日MRP状态监控
public class SUPPLIER_MRP_Service : RecurringJobOutPageController
{
- public SUPPLIER_MRP_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_MRP_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_MRP_WARNING_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_MRP_WARNING_Service.cs
index 462476f..a55a4ad 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_MRP_WARNING_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_MRP_WARNING_Service.cs
@@ -3,12 +3,13 @@ using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
+
namespace TaskManager.Controllers
{
//日MRP预警推移
public class SUPPLIER_MRP_WARNING_Service : RecurringJobOutPageController
{
- public SUPPLIER_MRP_WARNING_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_MRP_WARNING_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_PO_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_PO_Service.cs
index 42e45ec..13d868e 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_PO_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_PO_Service.cs
@@ -3,11 +3,12 @@ using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
+
namespace TaskManager.Controllers
{
public class SUPPLIER_PO_Service : RecurringJobOutPageController
{
- public SUPPLIER_PO_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_PO_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_PRO_CSCHEDUL_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_PRO_CSCHEDUL_Service.cs
index 012a488..85f1065 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_PRO_CSCHEDUL_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_PRO_CSCHEDUL_Service.cs
@@ -3,11 +3,12 @@ using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
+
namespace TaskManager.Controllers
{
public class SUPPLIER_PRO_CSCHEDUL_Service : RecurringJobOutPageController
{
- public SUPPLIER_PRO_CSCHEDUL_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_PRO_CSCHEDUL_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_PRO_HSCHEDUL_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_PRO_HSCHEDUL_Service.cs
index 1545a5b..5f73b3c 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_PRO_HSCHEDUL_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_PRO_HSCHEDUL_Service.cs
@@ -8,7 +8,7 @@ namespace TaskManager.Controllers
//过焊装未过总装
public class SUPPLIER_PRO_HSCHEDUL_Service : RecurringJobOutPageController
{
- public SUPPLIER_PRO_HSCHEDUL_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_PRO_HSCHEDUL_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_PRO_PLANING_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_PRO_PLANING_Service.cs
index 24f4879..4b7cb6f 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_PRO_PLANING_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_PRO_PLANING_Service.cs
@@ -6,12 +6,9 @@ using TaskManager.EntityFramework;
namespace TaskManager.Controllers
{
//整车月度生产计划
-
-
-
public class SupplierProPlaningService : RecurringJobOutPageController
{
- public SupplierProPlaningService(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SupplierProPlaningService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_PRO_TSCHEDUL_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_PRO_TSCHEDUL_Service.cs
index 7581659..957d512 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_PRO_TSCHEDUL_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_PRO_TSCHEDUL_Service.cs
@@ -8,7 +8,7 @@ namespace TaskManager.Controllers
//过涂装未过总装
public class SUPPLIER_PRO_TSCHEDUL_Service : RecurringJobOutPageController
{
- public SUPPLIER_PRO_TSCHEDUL_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_PRO_TSCHEDUL_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_RETURN_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_RETURN_Service.cs
index 134beb1..3c68714 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_RETURN_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_RETURN_Service.cs
@@ -8,7 +8,7 @@ namespace TaskManager.Controllers
//退货单
public class SUPPLIER_RETURN_Service : RecurringJobOutPageController
{
- public SUPPLIER_RETURN_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_RETURN_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_SA_WEEK_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_SA_WEEK_Service.cs
index 6f4aec1..bc605a6 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_SA_WEEK_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_SA_WEEK_Service.cs
@@ -10,7 +10,7 @@ namespace TaskManager.Controllers
///
public class SUPPLIER_SA_WEEK_Service : RecurringJobOutPageController
{
- public SUPPLIER_SA_WEEK_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_SA_WEEK_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Service/Controllers/SUPPLIER_SINV_DATA_Service.cs b/API/Wood.Service/Controllers/SUPPLIER_SINV_DATA_Service.cs
index 38b96cc..d761c21 100644
--- a/API/Wood.Service/Controllers/SUPPLIER_SINV_DATA_Service.cs
+++ b/API/Wood.Service/Controllers/SUPPLIER_SINV_DATA_Service.cs
@@ -7,7 +7,7 @@ namespace TaskManager.Controllers
{
public class SUPPLIER_SINV_DATA_Service : RecurringJobOutPageController
{
- public SUPPLIER_SINV_DATA_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
+ public SUPPLIER_SINV_DATA_Service(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
diff --git a/API/Wood.Util/EntityHelper.cs b/API/Wood.Util/EntityHelper.cs
new file mode 100644
index 0000000..1e2f7ad
--- /dev/null
+++ b/API/Wood.Util/EntityHelper.cs
@@ -0,0 +1,75 @@
+using Serilog;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Security.Cryptography;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace Wood.Util
+{
+
+ public class PagedResult
+ {
+ public List Items { get; set; }
+ public int TotalItems { get; set; }
+ public int PageNumber { get; set; }
+ public int PageSize { get; set; }
+ public int TotalPages => (int)Math.Ceiling(TotalItems / (double)PageSize);
+ public bool HasPreviousPage => PageNumber > 1;
+ public bool HasNextPage => PageNumber < TotalPages;
+
+ public PagedResult()
+ {
+ Items = new List();
+ }
+ }
+
+
+ public static class QueryableExtensions
+ {
+ public static PagedResult ToPagedResult(this IQueryable query, int pageNumber, int pageSize)
+ {
+ var result = new PagedResult
+ {
+ PageNumber = pageNumber,
+ PageSize = pageSize,
+ TotalItems = query.Count()
+ };
+
+ result.Items = query
+ .Skip((pageNumber - 1) * pageSize)
+ .Take(pageSize)
+ .ToList();
+
+ return result;
+ }
+
+ public static IQueryable ApplySorting(this IQueryable query, string sortField, string sortDirection)
+ {
+ if (string.IsNullOrEmpty(sortField))
+ return query;
+
+ var parameter = Expression.Parameter(typeof(T), "x");
+ var property = Expression.Property(parameter, sortField);
+ var lambda = Expression.Lambda(property, parameter);
+
+ string methodName = sortDirection?.ToLower() == "desc" ? "OrderByDescending" : "OrderBy";
+ var resultExpression = Expression.Call(
+ typeof(Queryable),
+ methodName,
+ new[] { typeof(T), property.Type },
+ query.Expression,
+ Expression.Quote(lambda));
+
+ return query.Provider.CreateQuery(resultExpression);
+ }
+ }
+
+
+
+
+
+}