From 814074bb017eba80096dc07b1831921fb2547928 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 14:43:22 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... SUPPLIER_PRO_PROCESS_EQUIPMENT_DT_DTO.cs} | 2 +- .../CheryRecurringJobInputPageController.cs | 6 +- .../CherySupplierConMmrpService.cs | 67 ++++++++++++++++++- .../CherySupplierMrpMonthService.cs | 16 +++-- 4 files changed, 80 insertions(+), 11 deletions(-) rename API/TaskManager.Contracts/Dtos/10_17/{SUPPLIER_PRO_PROCESS_EQUIPMENT_DT.cs => SUPPLIER_PRO_PROCESS_EQUIPMENT_DT_DTO.cs} (99%) diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT_DTO.cs similarity index 99% rename from API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT.cs rename to API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT_DTO.cs index 3e0f034..0a63fd4 100644 --- a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT.cs +++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT_DTO.cs @@ -5,7 +5,7 @@ namespace TaskManager.Entity.Entitys /// /// 工艺装备 /// - public class SUPPLIER_PRO_PROCESS_EQUIPMENT_DT + public class SUPPLIER_PRO_PROCESS_EQUIPMENT_DT_DTO { /// /// 供应商代码 diff --git a/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs index 82fc756..f3a74de 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs @@ -145,13 +145,13 @@ namespace TaskManager.Controllers await _logger.AddError("任务名称或客户端不能为空",taskName); return; } - var sublist = _jobDbContext.TaskSub.Where(p => p.TaskName == taskName && p.WriteState == false && p.Subscriber == client).ToList(); + var sublist = _jobDbContext.TaskSub.Where(p => p.TaskName == taskName && p.WriteState == false && p.Subscriber == client ).ToList(); int pageSize = 1000; if (!sublist.Any()) { foreach (var sub in sublist) { - string querystr = $"select * from {sub.TableName} where TaskId='{sub.TaskId}' and WriteState=0 order by uid";//任务表 + string querystr = $"select * from {sub.TableName} where TaskId='{sub.TaskId}' and WriteState=0 and ReadState=1 order by uid";//任务表 var entites = _jobDbContext.Database.GetDbConnection().Query(querystr);//明细表 if (entites.Any()) @@ -164,7 +164,7 @@ namespace TaskManager.Controllers var records = entites.Skip((i - 1) * pageSize) .Take(pageSize).ToList(); - #region dto转换作为参数发给 + #region dto转换作为参数发给客户API 因为实体比DTO字段多 List dtos = new List(); foreach (var itm in records) { diff --git a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs index 988869a..c1be7f4 100644 --- a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs @@ -1,4 +1,12 @@ -using TaskManager.Entity.Entitys; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; +using Org.BouncyCastle.Bcpg.Sig; +using SkiaSharp; +using System.Xml; +using TaskManager.Entity; +using TaskManager.Entity.Entitys; using TaskManager.EntityFramework; namespace TaskManager.Controllers @@ -8,5 +16,62 @@ namespace TaskManager.Controllers public CherySupplierConMmrpService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) { } + /// + /// 审批通过 + /// + /// + /// + public async Task Confirm([FromBody] List entites) + { + + var taskId = Guid.NewGuid(); + var task = new TaskSub(); + task.TaskId = taskId; + task.TaskName = TaskName; + task.Subscriber = Client; + task.TableName = "SUPPLIER_CON_MMRP"; + task.DataCount = entites.Count; + task.Domain = "1"; + task.Site = "1"; + task.FailedCount = 0; + task.CreateTime = DateTime.Now; + task.CreateUser = "admin"; + task.CreationTime = DateTime.Now; + task.SyncedPageCount = 0; + + entites.ForEach(p => + { + p.ReadState = true; + p.TaskId = taskId; + + + }); + + using (var transaction = await _jobDbContext.Database.BeginTransactionAsync()) + { + var tran = transaction.GetDbTransaction(); + try + { + await _jobDbContext.BulkUpdateAsync(entites, options => { options.Transaction = tran; }); + await _jobDbContext.AddAsync(task); + _jobDbContext.SaveChanges(); + + // 提交事务 + await transaction.CommitAsync(); + } + catch (Exception ex) + { + await transaction.RollbackAsync(); + new JsonResult(new { Code = 400, Message = ex.Message }); + } + } + + return new JsonResult(new { Code = 200, Message = "修改成功!" }); + + + } + + + } } diff --git a/API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs b/API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs index 150fc9d..7daf384 100644 --- a/API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs +++ b/API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs @@ -21,12 +21,8 @@ namespace TaskManager.Controllers } protected override async Task CreateTaskAsync(List plist, JobDbContext dbContext) { - var taskId = Guid.NewGuid(); - var task = new TaskSub(); - task.TaskId = taskId; - task.TaskName = TaskName; - task.Subscriber = Client; - task.TableName = "SUPPLIER_CON_MMRP"; + + if (plist.Count > 0) { List list = new List(); @@ -56,8 +52,16 @@ namespace TaskManager.Controllers con.QuantityMeet12 = p.QuantityDemand12; list.Add(con); }); + dbContext.BulkInsert(list, new BulkOperationOptions() { UseTableLock = false }); } + + + + + + + return; } } From ddfd6b5674a46f7d8e14dc16ca1c4ff6f0ff1f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 15:13:16 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CheryRecurringJobOutPageController.cs | 86 ++++++++++++------- .../CherySupplierMrpMonthService.cs | 19 ++-- 2 files changed, 61 insertions(+), 44 deletions(-) diff --git a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs index 397557b..f727f32 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs @@ -1,8 +1,4 @@ -using System.Data; -using System.Linq.Expressions; -using System.Text.Json; -using System.Text.Json.Serialization; -using Magicodes.ExporterAndImporter.Core.Extension; +using Magicodes.ExporterAndImporter.Core.Extension; using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -11,11 +7,17 @@ using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage; using Microsoft.Extensions.DependencyInjection; using Omu.ValueInjecter; +using System.Data; +using System.Data.Common; +using System.Linq.Expressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.Threading.Tasks; using TaskManager.Contracts.Dtos; using TaskManager.Controllers; - using TaskManager.Entity; using TaskManager.EntityFramework; using TaskManager.EntityFramework.Repository; @@ -31,10 +33,34 @@ namespace TaskManager.Controllers { _repository = repository; } - protected virtual async Task CreateTaskAsync(List plist,JobDbContext dbContext) + protected virtual async Task ConfirmDataInsertAsync(List plist,JobDbContext dbContext, DbTransaction dbTransaction) { + } + private async Task InsertDataAsync(List list) + { + if (list.Any()) + { + using (var transaction = await _jobDbContext.Database.BeginTransactionAsync()) + { + var tran = transaction.GetDbTransaction(); + try + { + _jobDbContext.BulkInsert(list); + await ConfirmDataInsertAsync(list, _jobDbContext, tran); + + // 提交事务 + await transaction.CommitAsync(); + } + catch (Exception ex) + { + await transaction.RollbackAsync(); + new JsonResult(new { Code = 400, Message = ex.Message }); + } + } + } + } [NonAction] public async Task> FetchAllDataAsync(string inputdate) @@ -57,11 +83,11 @@ namespace TaskManager.Controllers } if (firstResponse.Data.Total == "0") { - await _logger.AddError("首次请求失败,Total为0是否已经全部读取过。", TaskName); + await _logger.AddInfo("首次请求失败,Total为0是否已经全部读取过。", TaskName); return allData; } - + if (readedcount != int.Parse(firstResponse.Data.Total))//记录数不相等 { var ids = _jobDbContext.Set().Where(p => p.RequestDate == inputdate).Select(p => p.Id).ToList();//已经同步的ID @@ -93,8 +119,10 @@ namespace TaskManager.Controllers } } - _jobDbContext.BulkInsert(pagefirstList); - await CreateTaskAsync(pagefirstList,_jobDbContext); + if (pagefirstList.Any()) + { + await InsertDataAsync(pagefirstList); + } // 计算总页数 @@ -110,7 +138,6 @@ namespace TaskManager.Controllers if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0) { List pageList = new List(); - if (readedcount > 0) { var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id)); @@ -121,12 +148,10 @@ namespace TaskManager.Controllers entity.CreationTime = DateTime.Now; pageList.Add(entity); allData.Add(itm); - } } else { - foreach (var itm in pageResponse.Data.Rows) { T entity = new T(); @@ -136,25 +161,22 @@ namespace TaskManager.Controllers allData.Add(itm); } } - - _jobDbContext.BulkInsert(pageList); - await CreateTaskAsync(pageList, _jobDbContext); - await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName); + if (pageList.Any()) + { + await InsertDataAsync(pageList); + } } else { - await _logger.AddError($"第 {currentPage} 页未返回数据", TaskName); + await _logger.AddInfo($"第 {currentPage} 页未返回数据", TaskName); } // 简单的请求间隔,避免过于频繁 await Task.Delay(200); } - - await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName); } - } else { @@ -191,7 +213,6 @@ namespace TaskManager.Controllers } else { - foreach (var itm in firstResponse.Data.Rows) { T entity = new T(); @@ -201,8 +222,10 @@ namespace TaskManager.Controllers allData.Add(itm); } } - _jobDbContext.BulkInsert(pagefirstList); - await CreateTaskAsync(pagefirstList, _jobDbContext); + if (pagefirstList.Any()) + { + await InsertDataAsync(pagefirstList); + } //Console.WriteLine($"总记录数: {totalItems}, 每页大小: {pageSize}"); // 计算总页数 int totalPages = (int)Math.Ceiling((double)totalItems / pageSize); @@ -231,7 +254,6 @@ namespace TaskManager.Controllers } else { - foreach (var itm in pageResponse.Data.Rows) { T entity = new T(); @@ -241,9 +263,12 @@ namespace TaskManager.Controllers allData.Add(itm); } } - _jobDbContext.BulkInsert(pageList); - await CreateTaskAsync(pageList, _jobDbContext); - await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName); + if (pageList.Any()) + { + await InsertDataAsync(pageList); + } + + //await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName); } else { @@ -256,11 +281,8 @@ namespace TaskManager.Controllers } } - // 首次请求获取总条数和分页信息 - - return allData; } diff --git a/API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs b/API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs index 7daf384..b34f612 100644 --- a/API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs +++ b/API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs @@ -1,4 +1,5 @@ using Magicodes.ExporterAndImporter.Core; +using System.Data.Common; using TaskManager.Contracts.Dtos; using TaskManager.Controllers; using TaskManager.Entity; @@ -18,11 +19,10 @@ namespace TaskManager.Controllers public CherySupplierMrpMonthService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) { + } - protected override async Task CreateTaskAsync(List plist, JobDbContext dbContext) + protected override async Task ConfirmDataInsertAsync(List plist, JobDbContext dbContext, DbTransaction dbTransaction) { - - if (plist.Count > 0) { List list = new List(); @@ -52,17 +52,12 @@ namespace TaskManager.Controllers con.QuantityMeet12 = p.QuantityDemand12; list.Add(con); }); - - dbContext.BulkInsert(list, new BulkOperationOptions() { UseTableLock = false }); - } - - - - - - + await dbContext.BulkInsertAsync(list, options=> { options.Transaction = dbTransaction; options.UseTableLock = false; }); + } return; } + + } } From e7fde7945acff98093ba697a30d04a981f56a764 Mon Sep 17 00:00:00 2001 From: zhouhongjun <565221961@qq.com> Date: Wed, 4 Jun 2025 15:24:25 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0Filter=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRepository/IRepository.cs | 5 + .../Repository/Repository.cs | 44 ++- .../CheryRecurringJobOutPageController.cs | 25 ++ API/Wood.Util/Filters/Condition.cs | 13 + API/Wood.Util/Filters/EnumFilterAction.cs | 69 ++++ API/Wood.Util/Filters/EnumFilterLogic.cs | 21 ++ API/Wood.Util/Filters/Filter.cs | 48 +++ API/Wood.Util/Filters/FilterExtensions.cs | 337 ++++++++++++++++++ API/Wood.Util/Filters/RequestInputBase.cs | 23 ++ 9 files changed, 583 insertions(+), 2 deletions(-) create mode 100644 API/Wood.Util/Filters/Condition.cs create mode 100644 API/Wood.Util/Filters/EnumFilterAction.cs create mode 100644 API/Wood.Util/Filters/EnumFilterLogic.cs create mode 100644 API/Wood.Util/Filters/Filter.cs create mode 100644 API/Wood.Util/Filters/FilterExtensions.cs create mode 100644 API/Wood.Util/Filters/RequestInputBase.cs diff --git a/API/TaskManager.EntityFramework/IRepository/IRepository.cs b/API/TaskManager.EntityFramework/IRepository/IRepository.cs index e6cfd74..2244f0e 100644 --- a/API/TaskManager.EntityFramework/IRepository/IRepository.cs +++ b/API/TaskManager.EntityFramework/IRepository/IRepository.cs @@ -7,6 +7,7 @@ using System.Text; using System.Threading.Tasks; using TaskManager.Entity; using TaskManager.EntityFramework.Repository; +using Wood.Util.Filters; namespace TaskManager.EntityFramework { @@ -25,5 +26,9 @@ namespace TaskManager.EntityFramework Expression> filter = null, PagingParams pagingParams = null); + Task> GetDataPagedAsync( + Expression> filter = null, + PagingParams pagingParams = null,Condition condition = null); + } } \ No newline at end of file diff --git a/API/TaskManager.EntityFramework/Repository/Repository.cs b/API/TaskManager.EntityFramework/Repository/Repository.cs index 406c071..6a34dfa 100644 --- a/API/TaskManager.EntityFramework/Repository/Repository.cs +++ b/API/TaskManager.EntityFramework/Repository/Repository.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; using TaskManager.Entity; using TaskManager.EntityFramework; using Wood.Util; +using Wood.Util.Filters; namespace TaskManager.EntityFramework.Repository { @@ -82,7 +83,7 @@ namespace TaskManager.EntityFramework.Repository // 应用动态过滤 if (pagingParams?.Filters != null && pagingParams.Filters.Any()) { - query = query.ApplyFilters(pagingParams.Filters); + query = query.ApplyFilters(pagingParams.Filters); } // 应用分页和排序 @@ -94,6 +95,36 @@ namespace TaskManager.EntityFramework.Repository return page; } + public async Task> GetDataPagedAsync( + Expression> filter = null, + PagingParams pagingParams = null,Condition condition = null) + { + IQueryable query = _dbSet.AsNoTracking(); + + // 应用过滤条件 + if (filter != null) + { + query = query.Where(filter); + } + + // 应用动态过滤 + if (condition?.Filters != null && condition.Filters.Any()) + { + query = query.ApplyConditionFilters(condition); + } + + // 应用分页和排序 + pagingParams ??= new PagingParams(); + + var page = await query.ToPagedListAsync(pagingParams); + + + return page; + } + + + + } public class PagedResult { @@ -181,9 +212,18 @@ namespace TaskManager.EntityFramework.Repository return query; } + public static IQueryable ApplyConditionFilters(this IQueryable query, Condition condition) + { + if (condition.Filters == null || !condition.Filters.Any()) return query; + + query = query.Where(condition.Filters.ToLambda()); + + return query; + } + - public static IQueryable ApplyStringFilter(this IQueryable query, + public static IQueryable ApplyStringFilter(this IQueryable query, string propertyName, string value) { var property = typeof(T).GetProperty(propertyName, diff --git a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs index 719c98d..862e7fd 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs @@ -18,6 +18,7 @@ using TaskManager.Controllers; using TaskManager.Entity; using TaskManager.EntityFramework; using TaskManager.EntityFramework.Repository; +using Wood.Util.Filters; namespace TaskManager.Controllers { @@ -411,6 +412,30 @@ namespace TaskManager.Controllers return Ok(pagedResult); } + /// + /// 分页New + /// + /// + /// + [HttpPost] + public async Task>> GetDataPaged(RequestInputBase input) + { + var pagingParams = new PagingParams + { + PageNumber = input.pageNumber, + PageSize = input.pageSize, + SortBy = input.sortBy, + IsAscending = input.isAscending, + }; + + // 可以在这里构建表达式树过滤条件 + Expression> filter = null; + + var pagedResult = await _repository.GetDataPagedAsync(filter, pagingParams, input.Condition); + return Ok(pagedResult); + } + + /// /// 导出 /// diff --git a/API/Wood.Util/Filters/Condition.cs b/API/Wood.Util/Filters/Condition.cs new file mode 100644 index 0000000..a3a1a59 --- /dev/null +++ b/API/Wood.Util/Filters/Condition.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Wood.Util.Filters +{ + public class Condition + { + public ICollection Filters { get; set; } = new List(); + } +} diff --git a/API/Wood.Util/Filters/EnumFilterAction.cs b/API/Wood.Util/Filters/EnumFilterAction.cs new file mode 100644 index 0000000..385480f --- /dev/null +++ b/API/Wood.Util/Filters/EnumFilterAction.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Wood.Util.Filters +{ + /// + /// 过滤条件 + /// + public enum EnumFilterAction + { + /// + /// equal + /// + [Description("等于")] Equal = 0, + + /// + /// Not equal + /// + [Description("不等于")] NotEqual = 1, + + /// + /// Bigger + /// + [Description("大于")] BiggerThan = 2, + + /// + /// Smaller + /// + [Description("小于")] SmallThan = 3, + + /// + /// Bigger or equal + /// + [Description("大于等于")] BiggerThanOrEqual = 4, + + /// + /// Small or equal + /// + [Description("小于等于")] SmallThanOrEqual = 5, + + /// + /// Like + /// + [Description("类似于")] Like = 6, + + /// + /// Not like + /// + [Description("不类似于")] NotLike = 7, + + /// + /// Contained in + /// List items = new List(); + /// string value = JsonSerializer.Serialize(items);//转成Json字符串 + ///FilterCondition filterCondition = new FilterCondition() { Column = "Name", Value = value, Action = EnumFilterAction.In, Logic = EnumFilterLogic.And }; + /// + [Description("包含于")] In = 8, + + /// + /// Not contained in + /// + [Description("不包含于")] NotIn = 9, + } + +} diff --git a/API/Wood.Util/Filters/EnumFilterLogic.cs b/API/Wood.Util/Filters/EnumFilterLogic.cs new file mode 100644 index 0000000..8075b69 --- /dev/null +++ b/API/Wood.Util/Filters/EnumFilterLogic.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Wood.Util.Filters +{ + public enum EnumFilterLogic + { + /// + /// 与 + /// + And = 0, + + /// + /// 或 + /// + Or = 1 + } +} diff --git a/API/Wood.Util/Filters/Filter.cs b/API/Wood.Util/Filters/Filter.cs new file mode 100644 index 0000000..ce792fc --- /dev/null +++ b/API/Wood.Util/Filters/Filter.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Wood.Util.Filters +{ + public class Filter + { + public Filter() + { + Logic = "And"; + } + + public Filter(string column, string value, + string action = "==", + string logic = "And") + { + Column = column; + Action = action; + Value = value; + Logic = logic; + } + + /// + /// 过滤条件之间的逻辑关系:AND和OR + /// + public string Logic { get; set; } = "And"; + + /// + /// 过滤条件中使用的数据列 + /// + public string Column { get; set; } + + /// + /// 过滤条件中的操作:==,!=,>,<,>=,<=,In,NotIn,Like,NotLike + /// Equal、NotEqual、BiggerThan、SmallThan、BiggerThanOrEqual、SmallThanOrEqual、In、NotIn + /// + public string Action { get; set; } = "=="; + + /// + /// 过滤条件中的操作的值 + /// + public string Value { get; set; } + } + +} diff --git a/API/Wood.Util/Filters/FilterExtensions.cs b/API/Wood.Util/Filters/FilterExtensions.cs new file mode 100644 index 0000000..b2ccfb6 --- /dev/null +++ b/API/Wood.Util/Filters/FilterExtensions.cs @@ -0,0 +1,337 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Text.Json; +using System.Threading.Tasks; + +namespace Wood.Util.Filters +{ + public static class FilterExtensions + { + public static Expression> ToLambda(this string jsonFilter) + { + if (string.IsNullOrWhiteSpace(jsonFilter)) + { + return p => true; + } + + var filterConditions = JsonSerializer.Deserialize>(jsonFilter); + return filterConditions.ToLambda(); + } + + public static Expression> ToLambda(this Filter filter) + { + var filterConditions = new List { filter }; + return filterConditions.ToLambda(); + } + + public static Expression> ToLambda(this ICollection filterConditionList) + { + Expression> condition = null; + try + { + if (!filterConditionList.Any()) + { + //创建默认表达式 + return p => true; + } + + foreach (var filterCondition in filterConditionList) + { + var tempCondition = CreateLambda(filterCondition); + if (condition == null) + { + condition = tempCondition; + } + else + { + condition = filterCondition.Logic switch + { + "And" => condition.And(tempCondition), + "Or" => condition.Or(tempCondition), + _ => condition + }; + } + } + } + catch (Exception ex) + { + throw new Exception($"获取筛选条件异常:{ex.Message}"); + } + + return condition; + } + + private static Expression> CreateLambda(Filter filter) + { + Expression> expression = p => false; + try + { + var parameter = Expression.Parameter(typeof(T), "p"); //创建参数p + var member = Expression.PropertyOrField(parameter, filter.Column); //创建表达式中的属性或字段 + // var propertyType = member.Type; //取属性类型,常量constant按此类型进行转换 + //var constant = Expression.Constant(filterCondition.Value);//创建常数 + + ConstantExpression constant = null; + if (filter.Action != "In" && filter.Action != "NotIn") + { + constant = CreateConstantExpression(member.Type, filter.Value); + } + + switch (filter.Action.ToLower()) + { + case "==": + expression = Expression.Lambda>(Expression.Equal(member, constant), parameter); + break; + + case "!=": + expression = Expression.Lambda>(Expression.NotEqual(member, constant), parameter); + break; + + case ">": + expression = Expression.Lambda>(Expression.GreaterThan(member, constant), parameter); + break; + + case "<": + expression = Expression.Lambda>(Expression.LessThan(member, constant), parameter); + break; + + case ">=": + expression = Expression.Lambda>(Expression.GreaterThanOrEqual(member, constant), parameter); + break; + + case "<=": + expression = Expression.Lambda>(Expression.LessThanOrEqual(member, constant), parameter); + break; + + case "like": + expression = GetExpressionLikeMethod("Contains", filter); + break; + + case "notlike": + expression = GetExpressionNotLikeMethod("Contains", filter); + break; + + case "in": + expression = GetExpressionInMethod("Contains", member.Type, filter); + break; + + case "notin": + expression = GetExpressionNotInMethod("Contains", member.Type, filter); + break; + + default: + break; + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + + return expression; + } + + /// + /// + /// + /// + /// + /// + private static ConstantExpression CreateConstantExpression(Type propertyType, string value) + { + ConstantExpression constant; + try + { + if (propertyType.IsGenericType && + propertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + var objValue = Convert.ChangeType(value, propertyType.GetGenericArguments()[0], CultureInfo.InvariantCulture); + constant = Expression.Constant(objValue); + } + else if (propertyType.IsEnum) + { + var enumValue = (Enum)Enum.Parse(propertyType, value, true); + constant = Expression.Constant(enumValue); + } + else + { + constant = propertyType.Name switch + { + "Guid" => Expression.Constant(Guid.Parse(value)), + _ => Expression.Constant(Convert.ChangeType(value, propertyType, CultureInfo.InvariantCulture)) + }; + } + } + catch (Exception ex) + { + throw new Exception($"获取ConstantExpression异常:{ex.Message}"); + } + + return constant; + } + + private static Expression> GetExpressionLikeMethod(string methodName, Filter filter) + { + var parameterExpression = Expression.Parameter(typeof(T), "p"); + // MethodCallExpression methodExpression = GetMethodExpression(methodName, filterCondition.Column, filterCondition.Value, parameterExpression); + var methodExpression = GetMethodExpression(methodName, filter.Column, filter.Value, + parameterExpression); + return Expression.Lambda>(methodExpression, parameterExpression); + } + + private static Expression> GetExpressionNotLikeMethod(string methodName, Filter filter) + { + var parameterExpression = Expression.Parameter(typeof(T), "p"); + var methodExpression = GetMethodExpression(methodName, filter.Column, filter.Value, + parameterExpression); + var notMethodExpression = Expression.Not(methodExpression); + return Expression.Lambda>(notMethodExpression, parameterExpression); + } + + /// + /// 生成guidList.Contains(p=>p.GUId); + /// 除String类型,其他类型涉及到类型转换.如GUID + /// + /// + /// Contains + /// PropertyType/typeof(GUId) + /// PropertyName/PropertyValue + /// + private static Expression> GetExpressionInMethod(string methodName, Type propertyType, Filter filter) + { + var parameterExpression = Expression.Parameter(typeof(T), "p"); + Type lstType = typeof(List<>).MakeGenericType(propertyType); + + //转换枚举 + //if (propertyType.IsEnum) + //{ + // var valueArrayStrings = JsonSerializer.Deserialize>(filter.Value); + // List newValues = new List(); + + // var enumValues = propertyType.GetEnumValues(); + + // foreach (var valueArray in valueArrayStrings) + // { + // foreach (var enumValue in enumValues) + // { + // if (enumValue.ToString() == valueArray) + // { + // newValues.Add(enumValue); + // break; + // } + // } + // } + // var newValue = JsonSerializer.Serialize(newValues); + // filter.Value = newValue; + //} + + object propertyValue = JsonSerializer.Deserialize(filter.Value, lstType); + if (propertyValue != null) + { + var methodExpression = GetListMethodExpression(methodName, propertyType, filter.Column, propertyValue, parameterExpression); + var expression = Expression.Lambda>(methodExpression, parameterExpression); + return expression; + } + else + { + return p => false; + } + } + + private static Expression> GetExpressionNotInMethod(string methodName, Type propertyType, Filter filter) + { + var parameterExpression = Expression.Parameter(typeof(T), "p"); + Type lstType = typeof(List<>).MakeGenericType(propertyType); + object propertyValue = JsonSerializer.Deserialize(filter.Value, lstType); + if (propertyValue != null) + { + var methodExpression = GetListMethodExpression(methodName, propertyType, filter.Column, propertyValue, parameterExpression); + var notMethodExpression = Expression.Not(methodExpression); + return Expression.Lambda>(notMethodExpression, parameterExpression); + } + else + { + return p => false; + } + } + + private static MethodCallExpression GetListMethodExpression(string methodName, Type propertyType, string propertyName, object propertyValue, ParameterExpression parameterExpression) + { + var propertyExpression = Expression.Property(parameterExpression, propertyName); //p.GUID + Type type = typeof(List<>).MakeGenericType(propertyType); + var method = type.GetMethod(methodName);//获取 List.Contains() + var someValue = Expression.Constant(propertyValue);//Value + return Expression.Call(someValue, method, propertyExpression); + } + + /// + /// 生成类似于p=>p.Code.Contains("xxx");的lambda表达式 + /// parameterExpression标识p,propertyName表示values,propertyValue表示"Code",methodName表示Contains + /// 仅处理p的属性类型为string这种情况 + /// + /// + /// + /// + /// + /// + private static MethodCallExpression GetMethodExpression(string methodName, string propertyName, + string propertyValue, ParameterExpression parameterExpression) + { + var propertyExpression = Expression.Property(parameterExpression, propertyName); + var method = typeof(string).GetMethod(methodName, new[] { typeof(string) }); + var someValue = Expression.Constant(propertyValue, typeof(string)); + return Expression.Call(propertyExpression, method, someValue); + } + + /// + /// 默认True条件 + /// + /// + /// + public static Expression> True() + { + return f => true; + } + + /// + /// 默认False条件 + /// + /// + /// + public static Expression> False() + { + return f => false; + } + + /// + /// 拼接 OR 条件 + /// + /// + /// + /// + /// + private static Expression> Or(this Expression> exp, Expression> condition) + { + var inv = Expression.Invoke(condition, exp.Parameters); + return Expression.Lambda>(Expression.Or(exp.Body, inv), exp.Parameters); + } + + /// + /// 拼接And条件 + /// + /// + /// + /// + /// + private static Expression> And(this Expression> exp, Expression> condition) + { + var inv = Expression.Invoke(condition, exp.Parameters); + return Expression.Lambda>(Expression.And(exp.Body, inv), exp.Parameters); + } + } + +} diff --git a/API/Wood.Util/Filters/RequestInputBase.cs b/API/Wood.Util/Filters/RequestInputBase.cs new file mode 100644 index 0000000..c9e4d5e --- /dev/null +++ b/API/Wood.Util/Filters/RequestInputBase.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Wood.Util.Filters +{ + public class RequestInputBase + { + public int pageNumber { get; set; } + + public int pageSize { get; set; } + + public string sortBy { get; set; } + + public bool isAscending { get; set; } + /// + /// 条件 + /// + public Condition Condition { get; set; } = new(); + } +} From 4470a0cd5dc71aaedaaed7725bb362289170ff61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 15:34:33 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CherySupplierConDateService.cs | 62 ++++++++++++++++++- .../CherySupplierMrpDataService.cs | 62 ++++++++++++++++++- 2 files changed, 121 insertions(+), 3 deletions(-) diff --git a/API/Wood.Service/Controllers/CherySupplierConDateService.cs b/API/Wood.Service/Controllers/CherySupplierConDateService.cs index f621d30..e9d64eb 100644 --- a/API/Wood.Service/Controllers/CherySupplierConDateService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConDateService.cs @@ -1,4 +1,7 @@ -using TaskManager.Contracts.Dtos; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore.Storage; +using TaskManager.Contracts.Dtos; +using TaskManager.Entity; using TaskManager.Entity.Entitys; using TaskManager.EntityFramework; @@ -9,7 +12,62 @@ namespace TaskManager.Controllers public SupplierConDateService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) { } - + /// + /// 审批通过 + /// + /// + /// + [HttpPost] + public async Task Confirm([FromBody] List entites) + { + + var taskId = Guid.NewGuid(); + var task = new TaskSub(); + task.TaskId = taskId; + task.TaskName = TaskName; + task.Subscriber = Client; + task.TableName = "SUPPLIER_CON_DATE"; + task.DataCount = entites.Count; + task.Domain = "1"; + task.Site = "1"; + task.FailedCount = 0; + task.CreateTime = DateTime.Now; + task.CreateUser = "admin"; + task.CreationTime = DateTime.Now; + task.SyncedPageCount = 0; + + entites.ForEach(p => + { + p.ReadState = true; + p.TaskId = taskId; + + + }); + + using (var transaction = await _jobDbContext.Database.BeginTransactionAsync()) + { + var tran = transaction.GetDbTransaction(); + try + { + await _jobDbContext.BulkUpdateAsync(entites, options => { options.Transaction = tran; }); + await _jobDbContext.AddAsync(task); + _jobDbContext.SaveChanges(); + + // 提交事务 + await transaction.CommitAsync(); + } + catch (Exception ex) + { + await transaction.RollbackAsync(); + new JsonResult(new { Code = 400, Message = ex.Message }); + } + } + + return new JsonResult(new { Code = 200, Message = "修改成功!" }); + + + } + } diff --git a/API/Wood.Service/Controllers/CherySupplierMrpDataService.cs b/API/Wood.Service/Controllers/CherySupplierMrpDataService.cs index 884a267..e4f69e0 100644 --- a/API/Wood.Service/Controllers/CherySupplierMrpDataService.cs +++ b/API/Wood.Service/Controllers/CherySupplierMrpDataService.cs @@ -1,6 +1,8 @@ -using TaskManager.Contracts.Dtos; +using System.Data.Common; +using TaskManager.Contracts.Dtos; using TaskManager.Controllers; using TaskManager.Entity; +using TaskManager.Entity.Entitys; using TaskManager.EntityFramework; using TaskManager.EntityFramework; @@ -12,5 +14,63 @@ namespace TaskManager.Controllers public CherySupplierMrpDataService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) { } + protected override async Task ConfirmDataInsertAsync(List plist, JobDbContext dbContext, DbTransaction dbTransaction) + { + if (plist.Count > 0) + { + List list = new List(); + plist.ForEach(p => + { + var con = new SUPPLIER_CON_DATE(); + con.SupplierCode = "8EG"; + con.ReleaseEdition = p.ReleaseEdition; + con.MaterialCode = p.MaterialCode; + con.PlantId = p.PlantId; + con.FeedbackResults = ""; + con.VentureType = ""; + con.VentureSpecific = ""; + con.Measures = ""; + con.StartDate = p.StartDate.ToString(); + con.QuantityMeet1 =p.QuantityDemand1 ; + con.QuantityMeet2 =p.QuantityDemand2 ; + con.QuantityMeet3 =p.QuantityDemand3 ; + con.QuantityMeet4 =p.QuantityDemand4 ; + con.QuantityMeet5 =p.QuantityDemand5 ; + con.QuantityMeet6 =p.QuantityDemand6 ; + con.QuantityMeet7 =p.QuantityDemand7 ; + con.QuantityMeet8 =p.QuantityDemand8 ; + con.QuantityMeet9 =p.QuantityDemand9 ; + con.QuantityMeet10 =p.QuantityDemand10 ; + con.QuantityMeet11 =p.QuantityDemand11 ; + con.QuantityMeet12 =p.QuantityDemand12 ; + con.QuantityMeet13 =p.QuantityDemand13 ; + con.QuantityMeet14 =p.QuantityDemand14 ; + con.QuantityMeet15 =p.QuantityDemand15 ; + con.QuantityMeet16 =p.QuantityDemand16 ; + con.QuantityMeet17 =p.QuantityDemand17 ; + con.QuantityMeet18 =p.QuantityDemand18 ; + con.QuantityMeet19 =p.QuantityDemand19 ; + con.QuantityMeet20 =p.QuantityDemand20 ; + con.QuantityMeet21 =p.QuantityDemand21 ; + con.QuantityMeet22 =p.QuantityDemand22 ; + con.QuantityMeet23 =p.QuantityDemand23 ; + con.QuantityMeet24 =p.QuantityDemand24 ; + con.QuantityMeet25 =p.QuantityDemand25 ; + con.QuantityMeet26 =p.QuantityDemand26 ; + con.QuantityMeet27 =p.QuantityDemand27 ; + con.QuantityMeet28 =p.QuantityDemand28 ; + con.QuantityMeet29 =p.QuantityDemand29 ; + con.QuantityMeet30 =p.QuantityDemand30 ; + con.QuantityMeet31 = p.QuantityDemand31; + list.Add(con); + }); + + await dbContext.BulkInsertAsync(list, options => { options.Transaction = dbTransaction; options.UseTableLock = false; }); + } + return; + } + + + } } From 4ecd9b00565db1551b8acebf6307d60f15a17884 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 15:47:30 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API/Wood.Service/Controllers/CherySupplierConDateService.cs | 2 +- API/Wood.Service/Controllers/CherySupplierConMmrpService.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/API/Wood.Service/Controllers/CherySupplierConDateService.cs b/API/Wood.Service/Controllers/CherySupplierConDateService.cs index e9d64eb..9d5c3d9 100644 --- a/API/Wood.Service/Controllers/CherySupplierConDateService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConDateService.cs @@ -59,7 +59,7 @@ namespace TaskManager.Controllers catch (Exception ex) { await transaction.RollbackAsync(); - new JsonResult(new { Code = 400, Message = ex.Message }); + return new JsonResult(new { Code = 400, Message = ex.Message }); } } diff --git a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs index c1be7f4..6dbd265 100644 --- a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs @@ -62,7 +62,7 @@ namespace TaskManager.Controllers catch (Exception ex) { await transaction.RollbackAsync(); - new JsonResult(new { Code = 400, Message = ex.Message }); + return new JsonResult(new { Code = 400, Message = ex.Message }); } } From 54ac4b0f185bc2d73d4e2573269ef0a02300e2d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 16:29:19 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CherySupplierConDateService.cs | 6 +- .../Controllers/CherySupplierConPoService.cs | 73 +++++++++++++++++++ .../Controllers/CherySupplierPoService.cs | 62 +++++++++++++++- .../Controllers/SupplierPoService.cs | 6 -- 4 files changed, 137 insertions(+), 10 deletions(-) create mode 100644 API/Wood.Service/Controllers/CherySupplierConPoService.cs delete mode 100644 API/Wood.Service/Controllers/SupplierPoService.cs diff --git a/API/Wood.Service/Controllers/CherySupplierConDateService.cs b/API/Wood.Service/Controllers/CherySupplierConDateService.cs index 9d5c3d9..384ec81 100644 --- a/API/Wood.Service/Controllers/CherySupplierConDateService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConDateService.cs @@ -7,13 +7,13 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { - public class SupplierConDateService : CheryRecurringJobInputPageController + public class CherySupplierConDateService : CheryRecurringJobInputPageController { - public SupplierConDateService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) + public CherySupplierConDateService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) { } /// - /// 审批通过 + /// 确认提交 /// /// /// diff --git a/API/Wood.Service/Controllers/CherySupplierConPoService.cs b/API/Wood.Service/Controllers/CherySupplierConPoService.cs new file mode 100644 index 0000000..1883c58 --- /dev/null +++ b/API/Wood.Service/Controllers/CherySupplierConPoService.cs @@ -0,0 +1,73 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore.Storage; +using TaskManager.Contracts.Dtos; +using TaskManager.Entity; +using TaskManager.Entity.Entitys; +using TaskManager.EntityFramework; + +namespace TaskManager.Controllers +{ + public class SupplierPoService : CheryRecurringJobInputPageController + { + public SupplierPoService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) + { + } + /// + /// 确认提交 + /// + /// + /// + [HttpPost] + public async Task Confirm([FromBody] List entites) + { + + var taskId = Guid.NewGuid(); + var task = new TaskSub(); + task.TaskId = taskId; + task.TaskName = TaskName; + task.Subscriber = Client; + task.TableName = "SUPPLIER_CON_PO"; + task.DataCount = entites.Count; + task.Domain = "1"; + task.Site = "1"; + task.FailedCount = 0; + task.CreateTime = DateTime.Now; + task.CreateUser = "admin"; + task.CreationTime = DateTime.Now; + task.SyncedPageCount = 0; + + entites.ForEach(p => + { + p.ReadState = true; + p.TaskId = taskId; + + }); + + using (var transaction = await _jobDbContext.Database.BeginTransactionAsync()) + { + var tran = transaction.GetDbTransaction(); + try + { + await _jobDbContext.BulkUpdateAsync(entites, options => { options.Transaction = tran; }); + await _jobDbContext.AddAsync(task); + _jobDbContext.SaveChanges(); + + // 提交事务 + await transaction.CommitAsync(); + } + catch (Exception ex) + { + await transaction.RollbackAsync(); + return new JsonResult(new { Code = 400, Message = ex.Message }); + } + } + return new JsonResult(new { Code = 200, Message = "修改成功!" }); + } + + + + + + + } +} diff --git a/API/Wood.Service/Controllers/CherySupplierPoService.cs b/API/Wood.Service/Controllers/CherySupplierPoService.cs index dc618bf..c7ac08b 100644 --- a/API/Wood.Service/Controllers/CherySupplierPoService.cs +++ b/API/Wood.Service/Controllers/CherySupplierPoService.cs @@ -1,15 +1,75 @@ -using TaskManager.Contracts.Dtos; +using System.Data.Common; +using TaskManager.Contracts.Dtos; using TaskManager.Controllers; using TaskManager.Entity; +using TaskManager.Entity.Entitys; using TaskManager.EntityFramework; namespace TaskManager.Controllers { + /// + /// 采购订单 + /// public class CherySupplierPoService : CheryRecurringJobOutPageController { public CherySupplierPoService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) { } + protected override async Task ConfirmDataInsertAsync(List plist, JobDbContext dbContext, DbTransaction dbTransaction) + { + if (plist.Count > 0) + { + List list = new List(); + plist.ForEach(p => + { + var con = new SUPPLIER_CON_PO(); + + con.SupplierCode = "8EG"; + con.PurchaseOrder =p.PurchaseOrder ; + con.SerialNumber =p.SerialNumber ; + con.QuantityMeet =p.QuantityDelivery ; + con.FeedbackResults ="" ; + con.VentureType ="" ; + con.VentureSpecific ="" ; + con.Measures =""; + + + + + + //con.SupplierCode = "8EG"; + //con.ReleaseEdition = p.ReleaseEdition; + //con.MaterialCode = p.MaterialCode; + //con.PlantId = p.PlantId; + //con.FeedbackResults = "0"; + //con.VentureType = "1"; + //con.VentureSpecific = "1"; + //con.Measures = "1"; + //con.StartMonth = p.StartMonth; + //con.QuantityMeet1 = p.QuantityDemand1; + //con.QuantityMeet2 = p.QuantityDemand2; + //con.QuantityMeet3 = p.QuantityDemand3; + //con.QuantityMeet4 = p.QuantityDemand4; + //con.QuantityMeet5 = p.QuantityDemand5; + //con.QuantityMeet6 = p.QuantityDemand6; + //con.QuantityMeet7 = p.QuantityDemand7; + //con.QuantityMeet8 = p.QuantityDemand8; + //con.QuantityMeet9 = p.QuantityDemand9; + //con.QuantityMeet10 = p.QuantityDemand10; + //con.QuantityMeet11 = p.QuantityDemand11; + //con.QuantityMeet12 = p.QuantityDemand12; + list.Add(con); + }); + + await dbContext.BulkInsertAsync(list, options => { options.Transaction = dbTransaction; options.UseTableLock = false; }); + } + return; + } + + + + + } } diff --git a/API/Wood.Service/Controllers/SupplierPoService.cs b/API/Wood.Service/Controllers/SupplierPoService.cs deleted file mode 100644 index 535dcbf..0000000 --- a/API/Wood.Service/Controllers/SupplierPoService.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace TaskManager.Controllers -{ - public class SupplierPoService - { - } -} From ffb45d26ae2fb7a3ad6020da4012f41c37d0215a Mon Sep 17 00:00:00 2001 From: zhouhongjun <565221961@qq.com> Date: Wed, 4 Jun 2025 16:42:41 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=96=B0=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CheryRecurringJobOutPageController.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs index 6c17be5..e5dabbd 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs @@ -508,6 +508,32 @@ namespace TaskManager.Controllers } + + + /// + /// 导出New + /// + /// + /// + [HttpPost] + public async Task ExportData(RequestInputBase input) + { + var pagingParams = new PagingParams + { + PageNumber = input.pageNumber, + PageSize = input.pageSize, + SortBy = input.sortBy, + IsAscending = input.isAscending, + + }; + + // 可以在这里构建表达式树过滤条件 + //Expression> filter = null; + + var pagedResult = await _repository.GetDataPagedAsync(null, pagingParams, input.Condition); + return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + } + protected async Task ExportFile(ICollection dtos, string fileName) { var excelExporter = HttpContext.RequestServices.GetRequiredService(); From 783540520bc0d07e6ec3165f8cac2cef2a655f36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 16:44:37 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/CheryRecurringJobBaseController.cs | 2 +- API/Wood.Service/Controllers/CherySupplierConDateService.cs | 3 ++- API/Wood.Service/Controllers/CherySupplierConMmrpService.cs | 2 +- API/Wood.Service/Controllers/CherySupplierConPoService.cs | 2 +- API/Wood.Service/Controllers/TaskConifgureController.cs | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs b/API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs index cc3fccb..9e39ff9 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs @@ -30,7 +30,7 @@ namespace TaskManager.Controllers protected string appSecret = "48edc4425647425d87f806a1ba492580"; protected readonly HttpClient _httpClient; protected readonly JobDbContext _jobDbContext; - protected string Client { set; get; } = "Wood"; + protected string Client { set; get; } = "Chery"; protected string Path { set; get; } = "/v2/get/supplierProPlaning"; protected string Url { set; get; } = "/v2/get/supplierProPlaning"; protected virtual string TaskName { set; get; } = "SupplierProPlaning"; diff --git a/API/Wood.Service/Controllers/CherySupplierConDateService.cs b/API/Wood.Service/Controllers/CherySupplierConDateService.cs index 384ec81..d55f0a4 100644 --- a/API/Wood.Service/Controllers/CherySupplierConDateService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConDateService.cs @@ -24,7 +24,7 @@ namespace TaskManager.Controllers var taskId = Guid.NewGuid(); var task = new TaskSub(); task.TaskId = taskId; - task.TaskName = TaskName; + task.TaskName = "采购订单风险确认"; task.Subscriber = Client; task.TableName = "SUPPLIER_CON_DATE"; task.DataCount = entites.Count; @@ -34,6 +34,7 @@ namespace TaskManager.Controllers task.CreateTime = DateTime.Now; task.CreateUser = "admin"; task.CreationTime = DateTime.Now; + task.SyncedPageCount = 0; entites.ForEach(p => diff --git a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs index 6dbd265..77d9b96 100644 --- a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs @@ -27,7 +27,7 @@ namespace TaskManager.Controllers var taskId = Guid.NewGuid(); var task = new TaskSub(); task.TaskId = taskId; - task.TaskName = TaskName; + task.TaskName = ""; task.Subscriber = Client; task.TableName = "SUPPLIER_CON_MMRP"; task.DataCount = entites.Count; diff --git a/API/Wood.Service/Controllers/CherySupplierConPoService.cs b/API/Wood.Service/Controllers/CherySupplierConPoService.cs index 1883c58..44754ec 100644 --- a/API/Wood.Service/Controllers/CherySupplierConPoService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConPoService.cs @@ -9,7 +9,7 @@ namespace TaskManager.Controllers { public class SupplierPoService : CheryRecurringJobInputPageController { - public SupplierPoService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) + public SupplierPoService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) { } /// diff --git a/API/Wood.Service/Controllers/TaskConifgureController.cs b/API/Wood.Service/Controllers/TaskConifgureController.cs index 81ba2cf..f6e7544 100644 --- a/API/Wood.Service/Controllers/TaskConifgureController.cs +++ b/API/Wood.Service/Controllers/TaskConifgureController.cs @@ -529,7 +529,7 @@ namespace TaskManager.Controllers ); break; case "日物料需求计划风险确认": - RecurringJob.AddOrUpdate( + RecurringJob.AddOrUpdate( task.TaskName, x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client), task.Corn, From 06690c907e45c9144469245287f3bd8e06adf473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 16:53:59 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CheryRecurringJobInputPageController.cs | 105 ++++++++++--- .../CheryRecurringJobOutPageController.cs | 94 +++++------ .../Controllers/NormalBaseController.cs | 148 ++++++++++++------ API/Wood.Util/EntityHelper.cs | 112 ++++++------- 4 files changed, 281 insertions(+), 178 deletions(-) diff --git a/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs index f3a74de..3accf55 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs @@ -19,6 +19,7 @@ using TaskManager.Contracts.Dtos; using TaskManager.Entity; using TaskManager.EntityFramework; using TaskManager.EntityFramework.Repository; +using Wood.Util.Filters; using static Dapper.SqlMapper; namespace TaskManager.Controllers @@ -254,54 +255,106 @@ namespace TaskManager.Controllers await _repository.DeleteAsync(id); return new JsonResult(new { Code = 200, Message = "删除成功!" }); ; } - [HttpGet] - public async Task GetPaged( - [FromQuery] int pageNumber = 1, - [FromQuery] int pageSize = 10, - [FromQuery] string sortBy = "", - [FromQuery] bool isAscending = true, - [FromQuery] Dictionary filters = null) + //[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); + //} + + /// + /// 分页New + /// + /// + /// + [HttpPost] + public async Task>> GetDataPaged(RequestInputBase input) { var pagingParams = new PagingParams { - PageNumber = pageNumber, - PageSize = pageSize, - SortBy = sortBy, - IsAscending = isAscending, - Filters = filters + PageNumber = input.pageNumber, + PageSize = input.pageSize, + SortBy = input.sortBy, + IsAscending = input.isAscending, }; // 可以在这里构建表达式树过滤条件 Expression> filter = null; - var pagedResult = await _repository.GetPagedAsync(filter, pagingParams); + var pagedResult = await _repository.GetDataPagedAsync(filter, pagingParams, input.Condition); return Ok(pagedResult); } - [HttpGet] - public async Task Export([FromQuery] int pageNumber = 1, - [FromQuery] int pageSize = 10, - [FromQuery] string sortBy = "", - [FromQuery] bool isAscending = true, - [FromQuery] Dictionary filters = null) + /// + /// 导出New + /// + /// + /// + [HttpPost] + public async Task ExportData(RequestInputBase input) { var pagingParams = new PagingParams { - PageNumber = pageNumber, - PageSize = pageSize, - SortBy = sortBy, - IsAscending = isAscending, - Filters = filters + PageNumber = input.pageNumber, + PageSize = input.pageSize, + SortBy = input.sortBy, + IsAscending = input.isAscending, + }; // 可以在这里构建表达式树过滤条件 //Expression> filter = null; - var pagedResult = await _repository.GetPagedAsync(null, pagingParams); + var pagedResult = await _repository.GetDataPagedAsync(null, pagingParams, input.Condition); return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + } - } + + + + + // [HttpGet] + // public async Task Export([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(null, pagingParams); + // return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + + + // } protected async Task ExportFile(ICollection dtos, string fileName) { var excelExporter = HttpContext.RequestServices.GetRequiredService(); diff --git a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs index e5dabbd..bdedc2d 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs @@ -426,29 +426,29 @@ namespace TaskManager.Controllers /// 正序还是倒序 /// 过滤条件 /// - [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); - } + //[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); + //} /// /// 分页New @@ -484,30 +484,30 @@ namespace TaskManager.Controllers /// 过滤条件 /// - [HttpGet] - public async Task Export([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(null, pagingParams); - return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); - - - } + // [HttpGet] + // public async Task Export([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(null, pagingParams); + // return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + + + // } /// diff --git a/API/Wood.Service/Controllers/NormalBaseController.cs b/API/Wood.Service/Controllers/NormalBaseController.cs index 6d434d9..dad06d5 100644 --- a/API/Wood.Service/Controllers/NormalBaseController.cs +++ b/API/Wood.Service/Controllers/NormalBaseController.cs @@ -1,12 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using Magicodes.ExporterAndImporter.Core; +using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Core.Extension; using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.Authorization; @@ -14,11 +6,20 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; using TaskManager.Entity; using TaskManager.EntityFramework; using TaskManager.EntityFramework.Repository; using Wood.Entity; using Wood.Util; +using Wood.Util.Filters; namespace Wood.Service.Controllers @@ -97,77 +98,126 @@ namespace Wood.Service.Controllers await _repository.DeleteAsync(id); return new JsonResult(new { Code = 200, Message = "删除成功!" }); ; } - + + ///// + ///// 分页 + ///// + ///// + ///// + ///// + ///// + ///// + ///// + //[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); + //} /// - /// 分页 + /// 分页New /// - /// - /// - /// - /// - /// + /// /// - [HttpGet] - public async Task GetPaged( - [FromQuery] int pageNumber = 1, - [FromQuery] int pageSize = 10, - [FromQuery] string sortBy = "", - [FromQuery] bool isAscending = true, - [FromQuery] Dictionary filters = null) + [HttpPost] + public async Task>> GetDataPaged(RequestInputBase input) { var pagingParams = new PagingParams { - PageNumber = pageNumber, - PageSize = pageSize, - SortBy = sortBy, - IsAscending = isAscending, - Filters = filters + PageNumber = input.pageNumber, + PageSize = input.pageSize, + SortBy = input.sortBy, + IsAscending = input.isAscending, }; // 可以在这里构建表达式树过滤条件 Expression> filter = null; - var pagedResult = await _repository.GetPagedAsync(filter, pagingParams); + var pagedResult = await _repository.GetDataPagedAsync(filter, pagingParams, input.Condition); return Ok(pagedResult); } + /// - /// 导出 + /// 导出New /// - /// - /// - /// - /// - /// + /// /// - - [HttpGet] - public async Task Export([FromQuery] int pageNumber = 1, - [FromQuery] int pageSize = 10, - [FromQuery] string sortBy = "", - [FromQuery] bool isAscending = true, - [FromQuery] Dictionary filters = null) + [HttpPost] + public async Task ExportData(RequestInputBase input) { var pagingParams = new PagingParams { - PageNumber = pageNumber, - PageSize = pageSize, - SortBy = sortBy, - IsAscending = isAscending, - Filters = filters + PageNumber = input.pageNumber, + PageSize = input.pageSize, + SortBy = input.sortBy, + IsAscending = input.isAscending, + }; // 可以在这里构建表达式树过滤条件 //Expression> filter = null; - var pagedResult = await _repository.GetPagedAsync(null, pagingParams); + var pagedResult = await _repository.GetDataPagedAsync(null, pagingParams, input.Condition); return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + } - } + + // /// + // /// 导出 + // /// + // /// + // /// + // /// + // /// + // /// + // /// + + // [HttpGet] + // public async Task Export([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(null, pagingParams); + // return await ExportFile(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx"); + + + // } protected async Task ExportFile(ICollection dtos, string fileName) { var excelExporter = HttpContext.RequestServices.GetRequiredService(); diff --git a/API/Wood.Util/EntityHelper.cs b/API/Wood.Util/EntityHelper.cs index d0ddf9e..f5d26fa 100644 --- a/API/Wood.Util/EntityHelper.cs +++ b/API/Wood.Util/EntityHelper.cs @@ -13,62 +13,62 @@ 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); - } - } + //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); + // } + //} //public static class DataTableHelper From 368cbbdc443c820948a318e8c58581ccb7f8f443 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 17:01:52 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API/Wood.Service/Controllers/CherySupplierConPoService.cs | 4 ++-- API/Wood.Service/Controllers/TaskConifgureController.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/API/Wood.Service/Controllers/CherySupplierConPoService.cs b/API/Wood.Service/Controllers/CherySupplierConPoService.cs index 44754ec..545ff5b 100644 --- a/API/Wood.Service/Controllers/CherySupplierConPoService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConPoService.cs @@ -7,9 +7,9 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { - public class SupplierPoService : CheryRecurringJobInputPageController + public class CherySupplierConPoService : CheryRecurringJobInputPageController { - public SupplierPoService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) + public CherySupplierConPoService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) { } /// diff --git a/API/Wood.Service/Controllers/TaskConifgureController.cs b/API/Wood.Service/Controllers/TaskConifgureController.cs index f6e7544..fb7c0dd 100644 --- a/API/Wood.Service/Controllers/TaskConifgureController.cs +++ b/API/Wood.Service/Controllers/TaskConifgureController.cs @@ -537,7 +537,7 @@ namespace TaskManager.Controllers ); break; case "采购订单风险确认": - RecurringJob.AddOrUpdate( + RecurringJob.AddOrUpdate( task.TaskName, x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client), task.Corn, From c26367e8387956c17ee77d93cd2a09dc0889e7c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 17:02:19 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API/Wood.Service/Controllers/TaskConifgureController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API/Wood.Service/Controllers/TaskConifgureController.cs b/API/Wood.Service/Controllers/TaskConifgureController.cs index fb7c0dd..4ed0720 100644 --- a/API/Wood.Service/Controllers/TaskConifgureController.cs +++ b/API/Wood.Service/Controllers/TaskConifgureController.cs @@ -537,7 +537,7 @@ namespace TaskManager.Controllers ); break; case "采购订单风险确认": - RecurringJob.AddOrUpdate( + RecurringJob.AddOrUpdate( task.TaskName, x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client), task.Corn, From b9a69412c38440cbfc9f0eb597c62206fa79ad2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 4 Jun 2025 17:30:49 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/10_17/SUPPLIER_SINV_DATA_DTO.cs | 162 +++++++++--------- API/TaskManager.Contracts/Dtos/Dtos.cs | 97 +++++++++-- .../CherySupplierConDateService.cs | 3 + .../CherySupplierConMmrpService.cs | 3 + .../Controllers/CherySupplierConPoService.cs | 3 + .../CherySupplierDelStateService.cs | 4 +- .../CherySupplierInvDataService.cs | 5 +- .../CherySupplierMrpDataService.cs | 5 +- .../Controllers/CherySupplierMrpService.cs | 5 +- .../CherySupplierMrpWarningService.cs | 4 + .../CherySupplierPorHSCHEDULService.cs | 5 +- .../CherySupplierProCSCHEDULService.cs | 3 + .../CherySupplierProPlanService.cs | 3 + .../CherySupplierProTSCHEDULService.cs | 5 +- .../Controllers/CherySupplierReturnService.cs | 5 +- .../CherySupplierSinvDataService.cs | 2 +- 16 files changed, 212 insertions(+), 102 deletions(-) diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_SINV_DATA_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_SINV_DATA_DTO.cs index 5d9649f..5bb56ae 100644 --- a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_SINV_DATA_DTO.cs +++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_SINV_DATA_DTO.cs @@ -5,86 +5,86 @@ namespace TaskManager.Entity /// /// 供应商共享库存 /// - public class SUPPLIER_SINV_DATA_DTO - { - /// - /// 供应商代码 - /// - [ExporterHeader(DisplayName = "供应商代码")] - [ImporterHeader(Name = "供应商代码")] - public string SupplierCode { get; set; } - /// - /// 供应商名称 - /// - [ExporterHeader(DisplayName = "供应商名称")] - [ImporterHeader(Name = "供应商名称")] - public string SupplierName { get; set; } - /// - /// 零件号 - /// - [ExporterHeader(DisplayName = "零件号")] - [ImporterHeader(Name = "零件号")] - public string MaterialCode { get; set; } - /// - /// 零件名称 - /// - [ExporterHeader(DisplayName = "零件名称")] - [ImporterHeader(Name = "零件名称")] - public string MaterialDescription { get; set; } - /// - /// 物料类型(成品,半成品,原材料) - /// - [ExporterHeader(DisplayName = "物料类型")] - [ImporterHeader(Name = "物料类型")] - public string MaterialType { get; set; } - /// - /// 当前库存数量 - /// - [ExporterHeader(DisplayName = "当前库存数量")] - [ImporterHeader(Name = "当前库存数量")] - public decimal QuantityCurrent { get; set; } - /// - /// 原材料在途数量 - /// - [ExporterHeader(DisplayName = "原材料在途数量")] - [ImporterHeader(Name = "原材料在途数量")] - public decimal QuantityPlan { get; set; } - /// - /// 库存状态(生产件,呆滞件,备件,KD件) - /// - [ExporterHeader(DisplayName = "库存状态")] - [ImporterHeader(Name = "库存状态")] - public string InventoryStatus { get; set; } - /// - /// 安全库存 - /// - [ExporterHeader(DisplayName = "安全库存")] - [ImporterHeader(Name = "安全库存")] - public decimal SafetyStock { get; set; } - /// - /// 生产/采购周期:成品即半成品为生产周期(天),原材料为采购周期(天) - /// - [ExporterHeader(DisplayName = "生产/采购周期")] - [ImporterHeader(Name = "生产/采购周期")] - public string ProductionCycle { get; set; } - /// - /// 库存更新时间-格式:yyyy-MM-ddHH:mm:ss - /// - [ExporterHeader(DisplayName = "库存更新时间")] - [ImporterHeader(Name = "库存更新时间")] - public string DataUpdateTime { get; set; } - /// - /// 批次 - /// - [ExporterHeader(DisplayName = "批次")] - [ImporterHeader(Name = "批次")] - public string? SupplierBatch { get; set; } - /// - /// 有效期截止日期 非必填 - /// - [ExporterHeader(DisplayName = "有效期截止日期")] - [ImporterHeader(Name = "有效期截止日期")] - public string? SupplieryxqDate { get; set; } - } + //public class SUPPLIER_SINV_DATA_DTO + //{ + // /// + // /// 供应商代码 + // /// + // [ExporterHeader(DisplayName = "供应商代码")] + // [ImporterHeader(Name = "供应商代码")] + // public string SupplierCode { get; set; } + // /// + // /// 供应商名称 + // /// + // [ExporterHeader(DisplayName = "供应商名称")] + // [ImporterHeader(Name = "供应商名称")] + // public string SupplierName { get; set; } + // /// + // /// 零件号 + // /// + // [ExporterHeader(DisplayName = "零件号")] + // [ImporterHeader(Name = "零件号")] + // public string MaterialCode { get; set; } + // /// + // /// 零件名称 + // /// + // [ExporterHeader(DisplayName = "零件名称")] + // [ImporterHeader(Name = "零件名称")] + // public string MaterialDescription { get; set; } + // /// + // /// 物料类型(成品,半成品,原材料) + // /// + // [ExporterHeader(DisplayName = "物料类型")] + // [ImporterHeader(Name = "物料类型")] + // public string MaterialType { get; set; } + // /// + // /// 当前库存数量 + // /// + // [ExporterHeader(DisplayName = "当前库存数量")] + // [ImporterHeader(Name = "当前库存数量")] + // public decimal QuantityCurrent { get; set; } + // /// + // /// 原材料在途数量 + // /// + // [ExporterHeader(DisplayName = "原材料在途数量")] + // [ImporterHeader(Name = "原材料在途数量")] + // public decimal QuantityPlan { get; set; } + // /// + // /// 库存状态(生产件,呆滞件,备件,KD件) + // /// + // [ExporterHeader(DisplayName = "库存状态")] + // [ImporterHeader(Name = "库存状态")] + // public string InventoryStatus { get; set; } + // /// + // /// 安全库存 + // /// + // [ExporterHeader(DisplayName = "安全库存")] + // [ImporterHeader(Name = "安全库存")] + // public decimal SafetyStock { get; set; } + // /// + // /// 生产/采购周期:成品即半成品为生产周期(天),原材料为采购周期(天) + // /// + // [ExporterHeader(DisplayName = "生产/采购周期")] + // [ImporterHeader(Name = "生产/采购周期")] + // public string ProductionCycle { get; set; } + // /// + // /// 库存更新时间-格式:yyyy-MM-ddHH:mm:ss + // /// + // [ExporterHeader(DisplayName = "库存更新时间")] + // [ImporterHeader(Name = "库存更新时间")] + // public string DataUpdateTime { get; set; } + // /// + // /// 批次 + // /// + // [ExporterHeader(DisplayName = "批次")] + // [ImporterHeader(Name = "批次")] + // public string? SupplierBatch { get; set; } + // /// + // /// 有效期截止日期 非必填 + // /// + // [ExporterHeader(DisplayName = "有效期截止日期")] + // [ImporterHeader(Name = "有效期截止日期")] + // public string? SupplieryxqDate { get; set; } + //} } diff --git a/API/TaskManager.Contracts/Dtos/Dtos.cs b/API/TaskManager.Contracts/Dtos/Dtos.cs index df0335f..a99f0d6 100644 --- a/API/TaskManager.Contracts/Dtos/Dtos.cs +++ b/API/TaskManager.Contracts/Dtos/Dtos.cs @@ -1493,19 +1493,90 @@ public class SUPPLIER_MRP_WARNING_DETAIL_DTO : CherryReadBaseEntityDto public class SUPPLIER_SINV_DATA_DETAIL_DTO:CherryReadBaseEntityDto { - public string SupplierCode { get; set; } - public string SupplierName { get; set; } - public string MaterialCode { get; set; } - public string MaterialDescription { get; set; } - public string MaterialType { get; set; } - public int QuantityCurrent { get; set; } - public int QuantityPlan { get; set; } - public string InventoryStatus { get; set; } - public int SafetyStock { get; set; } - public string ProductionCycle { get; set; } - public string DataUpdateTime { get; set; } - public string SupplierBatch { get; set; } - public string SupplieryxqDate { get; set; } + /// + /// 供应商共享库存 + /// + public class SUPPLIER_SINV_DATA_DTO + { + /// + /// 供应商代码 + /// + [ExporterHeader(DisplayName = "供应商代码")] + [ImporterHeader(Name = "供应商代码")] + public string SupplierCode { get; set; } + /// + /// 供应商名称 + /// + [ExporterHeader(DisplayName = "供应商名称")] + [ImporterHeader(Name = "供应商名称")] + public string SupplierName { get; set; } + /// + /// 零件号 + /// + [ExporterHeader(DisplayName = "零件号")] + [ImporterHeader(Name = "零件号")] + public string MaterialCode { get; set; } + /// + /// 零件名称 + /// + [ExporterHeader(DisplayName = "零件名称")] + [ImporterHeader(Name = "零件名称")] + public string MaterialDescription { get; set; } + /// + /// 物料类型(成品,半成品,原材料) + /// + [ExporterHeader(DisplayName = "物料类型")] + [ImporterHeader(Name = "物料类型")] + public string MaterialType { get; set; } + /// + /// 当前库存数量 + /// + [ExporterHeader(DisplayName = "当前库存数量")] + [ImporterHeader(Name = "当前库存数量")] + public decimal QuantityCurrent { get; set; } + /// + /// 原材料在途数量 + /// + [ExporterHeader(DisplayName = "原材料在途数量")] + [ImporterHeader(Name = "原材料在途数量")] + public decimal QuantityPlan { get; set; } + /// + /// 库存状态(生产件,呆滞件,备件,KD件) + /// + [ExporterHeader(DisplayName = "库存状态")] + [ImporterHeader(Name = "库存状态")] + public string InventoryStatus { get; set; } + /// + /// 安全库存 + /// + [ExporterHeader(DisplayName = "安全库存")] + [ImporterHeader(Name = "安全库存")] + public decimal SafetyStock { get; set; } + /// + /// 生产/采购周期:成品即半成品为生产周期(天),原材料为采购周期(天) + /// + [ExporterHeader(DisplayName = "生产/采购周期")] + [ImporterHeader(Name = "生产/采购周期")] + public string ProductionCycle { get; set; } + /// + /// 库存更新时间-格式:yyyy-MM-ddHH:mm:ss + /// + [ExporterHeader(DisplayName = "库存更新时间")] + [ImporterHeader(Name = "库存更新时间")] + public string DataUpdateTime { get; set; } + /// + /// 批次 + /// + [ExporterHeader(DisplayName = "批次")] + [ImporterHeader(Name = "批次")] + public string? SupplierBatch { get; set; } + /// + /// 有效期截止日期 非必填 + /// + [ExporterHeader(DisplayName = "有效期截止日期")] + [ImporterHeader(Name = "有效期截止日期")] + public string? SupplieryxqDate { get; set; } + } } public class SUPPLIER_SINV_DATA_DTO diff --git a/API/Wood.Service/Controllers/CherySupplierConDateService.cs b/API/Wood.Service/Controllers/CherySupplierConDateService.cs index d55f0a4..ff3f455 100644 --- a/API/Wood.Service/Controllers/CherySupplierConDateService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConDateService.cs @@ -7,6 +7,9 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { + /// + /// 日物料需求计划风险确认 + /// public class CherySupplierConDateService : CheryRecurringJobInputPageController { public CherySupplierConDateService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs index 77d9b96..d01c45f 100644 --- a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs @@ -11,6 +11,9 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { + /// + /// M+6月物料需求计划风险确认 + /// public class CherySupplierConMmrpService : CheryRecurringJobInputPageController { public CherySupplierConMmrpService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierConPoService.cs b/API/Wood.Service/Controllers/CherySupplierConPoService.cs index 545ff5b..162e573 100644 --- a/API/Wood.Service/Controllers/CherySupplierConPoService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConPoService.cs @@ -7,6 +7,9 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { + /// + /// 采购订单风险确认 + /// public class CherySupplierConPoService : CheryRecurringJobInputPageController { public CherySupplierConPoService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierDelStateService.cs b/API/Wood.Service/Controllers/CherySupplierDelStateService.cs index 7831d32..4b38ef9 100644 --- a/API/Wood.Service/Controllers/CherySupplierDelStateService.cs +++ b/API/Wood.Service/Controllers/CherySupplierDelStateService.cs @@ -6,7 +6,9 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { - //看板配送单 + /// + /// 看板送货单 + /// public class CherySupplierDelStateService : CheryRecurringJobOutPageController { public CherySupplierDelStateService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierInvDataService.cs b/API/Wood.Service/Controllers/CherySupplierInvDataService.cs index 81bcf52..4697e70 100644 --- a/API/Wood.Service/Controllers/CherySupplierInvDataService.cs +++ b/API/Wood.Service/Controllers/CherySupplierInvDataService.cs @@ -6,7 +6,10 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { - //奇瑞RDC共享库存 + + /// + /// 奇瑞RDC共享库存 + /// public class SupplierInvDataService : CheryRecurringJobOutPageController { public SupplierInvDataService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierMrpDataService.cs b/API/Wood.Service/Controllers/CherySupplierMrpDataService.cs index e4f69e0..6a6c10e 100644 --- a/API/Wood.Service/Controllers/CherySupplierMrpDataService.cs +++ b/API/Wood.Service/Controllers/CherySupplierMrpDataService.cs @@ -8,7 +8,10 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { - //日物料需求计划 + + /// + /// 日物料需求计划 + /// public class CherySupplierMrpDataService : CheryRecurringJobOutPageController { public CherySupplierMrpDataService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierMrpService.cs b/API/Wood.Service/Controllers/CherySupplierMrpService.cs index bbef44b..5d1c1c2 100644 --- a/API/Wood.Service/Controllers/CherySupplierMrpService.cs +++ b/API/Wood.Service/Controllers/CherySupplierMrpService.cs @@ -6,7 +6,10 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { - //日MRP状态监控 + + /// + /// 日MRP状态监控 + /// public class CherySupplierMrpService : CheryRecurringJobOutPageController { public CherySupplierMrpService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierMrpWarningService.cs b/API/Wood.Service/Controllers/CherySupplierMrpWarningService.cs index 30e52e2..19fe162 100644 --- a/API/Wood.Service/Controllers/CherySupplierMrpWarningService.cs +++ b/API/Wood.Service/Controllers/CherySupplierMrpWarningService.cs @@ -7,6 +7,10 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { //日MRP预警推移 + + /// + /// 日MRP预警推移 + /// public class CherySupplierMrpWarningService : CheryRecurringJobOutPageController { public CherySupplierMrpWarningService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierPorHSCHEDULService.cs b/API/Wood.Service/Controllers/CherySupplierPorHSCHEDULService.cs index f0a0ae2..80a1461 100644 --- a/API/Wood.Service/Controllers/CherySupplierPorHSCHEDULService.cs +++ b/API/Wood.Service/Controllers/CherySupplierPorHSCHEDULService.cs @@ -5,7 +5,10 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { - //过焊装未过总装 + + /// + /// 过焊装未过总装 + /// public class CherySupplierPorHSCHEDULService : CheryRecurringJobOutPageController { public CherySupplierPorHSCHEDULService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierProCSCHEDULService.cs b/API/Wood.Service/Controllers/CherySupplierProCSCHEDULService.cs index 1280504..c7b9b9e 100644 --- a/API/Wood.Service/Controllers/CherySupplierProCSCHEDULService.cs +++ b/API/Wood.Service/Controllers/CherySupplierProCSCHEDULService.cs @@ -6,6 +6,9 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { + /// + /// 排序供货 + /// public class CherySupplierProCSCHEDULService : CheryRecurringJobOutPageController { public CherySupplierProCSCHEDULService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierProPlanService.cs b/API/Wood.Service/Controllers/CherySupplierProPlanService.cs index 851af3c..1ad091a 100644 --- a/API/Wood.Service/Controllers/CherySupplierProPlanService.cs +++ b/API/Wood.Service/Controllers/CherySupplierProPlanService.cs @@ -6,6 +6,9 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { //整车月度生产计划 + /// + /// 整车月度生产计划 + /// public class SupplierProPlaningService : CheryRecurringJobOutPageController { public SupplierProPlaningService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierProTSCHEDULService.cs b/API/Wood.Service/Controllers/CherySupplierProTSCHEDULService.cs index fa30e32..69465e9 100644 --- a/API/Wood.Service/Controllers/CherySupplierProTSCHEDULService.cs +++ b/API/Wood.Service/Controllers/CherySupplierProTSCHEDULService.cs @@ -5,7 +5,10 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { - //过涂装未过总装 + + /// + /// 过涂装未过总装 + /// public class CherySupplierProTSCHEDULService : CheryRecurringJobOutPageController { public CherySupplierProTSCHEDULService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierReturnService.cs b/API/Wood.Service/Controllers/CherySupplierReturnService.cs index 4f80b7c..3e0d26e 100644 --- a/API/Wood.Service/Controllers/CherySupplierReturnService.cs +++ b/API/Wood.Service/Controllers/CherySupplierReturnService.cs @@ -5,7 +5,10 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { - //退货单 + + /// + /// 退货单 + /// public class CherySupplierReturnService : CheryRecurringJobOutPageController { public CherySupplierReturnService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) diff --git a/API/Wood.Service/Controllers/CherySupplierSinvDataService.cs b/API/Wood.Service/Controllers/CherySupplierSinvDataService.cs index 1f0887e..4a32a8d 100644 --- a/API/Wood.Service/Controllers/CherySupplierSinvDataService.cs +++ b/API/Wood.Service/Controllers/CherySupplierSinvDataService.cs @@ -6,7 +6,7 @@ using TaskManager.EntityFramework; namespace TaskManager.Controllers { - public class CherySupplierSinvDataService : CheryRecurringJobOutPageController + public class CherySupplierSinvDataService : CheryRecurringJobInputPageController { public CherySupplierSinvDataService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository) {