Browse Source

更新版本

master
zxy 2 weeks ago
parent
commit
9a019b227c
  1. 81
      API/TaskManager.Entity/Entity.cs
  2. 74
      API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs
  3. 145
      API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs
  4. 100
      API/Wood.Service/Controllers/NormalBaseController.cs
  5. 18
      API/Wood.Service/Controllers/TaskAllocationService.cs
  6. 18
      API/Wood.Service/Controllers/TaskSubService.cs
  7. 2
      API/Wood.Service/Datas/SupplierEmployeeDtService.cs
  8. 2
      API/Wood.Service/Datas/SupplierInfoDtService.cs
  9. 2
      API/Wood.Service/Datas/SupplierProAttachmentDataDtService.cs
  10. 2
      API/Wood.Service/Datas/SupplierProProcessEquipmentDtService.cs

81
API/TaskManager.Entity/Entity.cs

@ -1,6 +1,4 @@
using Magicodes.ExporterAndImporter.Core; using System;
using Newtonsoft.Json;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
@ -8,6 +6,9 @@ using System.Linq;
using System.Text; using System.Text;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Xml.Linq;
using Magicodes.ExporterAndImporter.Core;
using Newtonsoft.Json;
namespace TaskManager.Entity namespace TaskManager.Entity
{ {
@ -19,30 +20,31 @@ namespace TaskManager.Entity
} }
public class TaskConifgure:BaseEntity public class TaskConifgure:BaseEntity
{ {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[ExporterHeader(IsIgnore = true)]
public long UId { get; set; }
/// <summary> /// <summary>
/// API路径 /// API路径
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "API路径")] [ExporterHeader(DisplayName = "API路径")]
[ImporterHeader(Name = "API路径")]
public string? Api { get; set; } public string? Api { get; set; }
/// <summary> /// <summary>
/// 任务周期设置 /// 任务周期设置
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "任务周期设置")] [ExporterHeader(DisplayName = "任务周期设置")]
[ImporterHeader(Name = "任务周期设置")]
public string? Corn { get; set; } public string? Corn { get; set; }
/// <summary> /// <summary>
/// 模块 /// 模块
/// </summary> /// </summary>
[ExporterHeader(IsIgnore = true)] [ExporterHeader(IsIgnore = true)]
[ImporterHeader(IsIgnore = true)]
public string? Module { get; set; } public string? Module { get; set; }
/// <summary> /// <summary>
/// 模块 /// 模块
/// </summary> /// </summary>
[ExporterHeader(IsIgnore = true)] [ExporterHeader(DisplayName = "客户")]
[ImporterHeader(Name = "客户")]
public string? Client { get; set; } public string? Client { get; set; }
@ -50,11 +52,14 @@ namespace TaskManager.Entity
/// 备注 /// 备注
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "备注")] [ExporterHeader(DisplayName = "备注")]
[ImporterHeader(Name = "备注")]
public string? Remark { get; set; } public string? Remark { get; set; }
/// <summary> /// <summary>
/// 表名 /// 表名
/// </summary> /// </summary>
[ExporterHeader(IsIgnore =true)] [ExporterHeader(DisplayName = "表名")]
[ImporterHeader(Name = "表名")]
public string? TableName { get; set; } public string? TableName { get; set; }
/// <summary> /// <summary>
/// 任务名称 /// 任务名称
@ -64,12 +69,14 @@ namespace TaskManager.Entity
/// <summary> /// <summary>
/// 全路径 /// 全路径
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "全路径")] [ExporterHeader(DisplayName = "调用全路径")]
[ImporterHeader(Name = "调用全路径")]
public string? Url { get; set; } public string? Url { get; set; }
/// <summary> /// <summary>
/// 是否自动执行 /// 是否自动执行
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "是否自动执行")] [ExporterHeader(DisplayName = "是否自动执行")]
[ImporterHeader(Name = "是否自动执行")]
public bool IsAuto { get; set; } public bool IsAuto { get; set; }
public TaskConifgure() public TaskConifgure()
{ } { }
@ -77,39 +84,42 @@ namespace TaskManager.Entity
} }
public class TEA_SUBSCRIBE public class TaskAllocation:BaseEntity
{ {
[Key]
[Required]
public Guid GUID { get; set; }
/// <summary>
/// 订阅任务名
/// </summary>
[MaxLength(50)] [MaxLength(50)]
public string TableName { get; set; } [ExporterHeader(DisplayName = "订阅任务名")]
[ImporterHeader(Name = "订阅任务名")]
public string TaskName { get; set; } = "";
[ExporterHeader(DisplayName = "订阅表名")]
[ImporterHeader(Name = "订阅表名")]
[MaxLength(50)]
public string Creator { get; set; }
/// <summary>
/// 订阅表名
/// </summary>
[MaxLength(50)] [MaxLength(50)]
public string Subscriber { get; set; } public string TableName { get; set; }
/// <summary>
[DatabaseGenerated(DatabaseGeneratedOption.Identity)] /// 创建系统
public int UID { get; set; } /// </summary>
[ExporterHeader(DisplayName = "创建系统")]
[ImporterHeader(Name = "创建系统")]
[MaxLength(50)] [MaxLength(50)]
public string CreateUser { get; set; } public string Creator { get; set; }
/// <summary>
[Required] /// 订阅客户
public DateTime CreateTime { get; set; } /// </summary>
[ExporterHeader(DisplayName = "订阅客户")]
public string Remark { get; set; } [ImporterHeader(Name = "订阅客户")]
[MaxLength(50)] [MaxLength(50)]
public string UpdateUser { get; set; } public string Subscriber { get; set; }
public DateTime? UpdateTime { get; set; }
[Required]
public bool Enable { get; set; }
} }
@ -162,18 +172,25 @@ namespace TaskManager.Entity
[Key] [Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)] [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[ExporterHeader(IsIgnore=true)] [ExporterHeader(IsIgnore=true)]
[ImporterHeader(IsIgnore = true)]
public long UId { get; set; } public long UId { get; set; }
/// <summary> /// <summary>
/// 写状态 /// 写状态
/// </summary> /// </summary>
[ExporterHeader(IsIgnore = true)]
[ImporterHeader(IsIgnore = true)]
public bool WriteState { get; set; } public bool WriteState { get; set; }
[ExporterHeader(IsIgnore = true)] [ExporterHeader(IsIgnore = true)]
[ImporterHeader(IsIgnore = true)]
public bool ReadState { get; set; } public bool ReadState { get; set; }
[ExporterHeader(IsIgnore = true)] [ExporterHeader(IsIgnore = true)]
[ImporterHeader(IsIgnore = true)]
public DateTime CreationTime { get; set; } public DateTime CreationTime { get; set; }
[ExporterHeader(IsIgnore = true)] [ExporterHeader(IsIgnore = true)]
[ImporterHeader(IsIgnore = true)]
public string? Remark { get; set; } public string? Remark { get; set; }
[ExporterHeader(IsIgnore = true)] [ExporterHeader(IsIgnore = true)]
[ImporterHeader(IsIgnore = true)]
public Guid TaskId { get; set; } public Guid TaskId { get; set; }

74
API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs

@ -1,16 +1,17 @@
using Azure.Core; using System.Data;
using System.Drawing.Printing;
using System.Linq.Expressions;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using Azure.Core;
using Dapper; using Dapper;
using Magicodes.ExporterAndImporter.Core.Extension; using Magicodes.ExporterAndImporter.Core.Extension;
using Magicodes.ExporterAndImporter.Excel; using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using System.Data;
using System.Drawing.Printing;
using System.Linq.Expressions;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using TaskManager.Contracts.Dtos; using TaskManager.Contracts.Dtos;
using TaskManager.Entity; using TaskManager.Entity;
using TaskManager.EntityFramework; using TaskManager.EntityFramework;
@ -312,6 +313,65 @@ namespace TaskManager.Controllers
return StatusCode(500, "生成导入模板时发生错误"); return StatusCode(500, "生成导入模板时发生错误");
} }
} }
[HttpPost("Import")]
public async virtual Task<IActionResult> Import(IFormFile file)
{
if (file == null || file.Length <= 0)
{
return BadRequest("No file uploaded.");
}
try
{
var excelImporter = HttpContext.RequestServices.GetRequiredService<IExcelImporter>();
var importResult = await excelImporter.Import<T>(file.OpenReadStream());
//if (importResult.HasError)
//{
// return BadRequest(importResult.ErrorMessage);
//}
// 处理导入的数据
List<T> list = new List<T>();
foreach (var item in importResult.Data)
{
list.Add(item);
}
await ImportBefore(list);
await _jobDbContext.BulkInsertAsync(list);
await ImportAfter(list);
return new JsonResult(new { Code = 200, Message = "修改成功!" });
}
catch (Exception ex)
{
await _logger.AddError(ex.Message, TaskName);
return new JsonResult(new { Code = 400, Message = "导入失败!" });
}
}
/// <summary>
/// 重写插入前进行操作,如校验等
/// </summary>
/// <param name="p_list"></param>
/// <returns></returns>
protected virtual async Task ImportBefore(List<T> p_list)
{
}
/// <summary>
/// 重写插入后进行操作如
/// </summary>
/// <param name="p_list"></param>
/// <returns></returns>
protected virtual async Task ImportAfter(List<T> p_list)
{
}

145
API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs

@ -1,19 +1,22 @@
using Magicodes.ExporterAndImporter.Core.Extension; using System.Data;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using Magicodes.ExporterAndImporter.Core.Extension;
using Magicodes.ExporterAndImporter.Excel; using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Omu.ValueInjecter; using Omu.ValueInjecter;
using System.Data;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using TaskManager.Contracts.Dtos; using TaskManager.Contracts.Dtos;
using TaskManager.Controllers; using TaskManager.Controllers;
using TaskManager.Entity; using TaskManager.Entity;
using TaskManager.EntityFramework; using TaskManager.EntityFramework;
using TaskManager.EntityFramework.Repository; using TaskManager.EntityFramework.Repository;
namespace TaskManager.Controllers namespace TaskManager.Controllers
@ -43,11 +46,22 @@ namespace TaskManager.Controllers
if (readedcount == 0)//第一次请求用false,接口人胡启名要求 if (readedcount == 0)//第一次请求用false,接口人胡启名要求
{ {
PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, IsForce = false}); PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, IsForce = false});
if (firstResponse == null || firstResponse.Code != 200) if (firstResponse == null || firstResponse.Code != 200)
{ {
await _logger.AddError("首次请求失败,无法获取分页信息。", TaskName); await _logger.AddError("首次请求失败,无法获取分页信息。", TaskName);
return allData; return allData;
} }
if (firstResponse.Data.Total == "0")
{
await _logger.AddError("首次请求失败,Total为0是否已经全部读取过。", TaskName);
return allData;
}
if (readedcount != int.Parse(firstResponse.Data.Total))//记录数不相等 if (readedcount != int.Parse(firstResponse.Data.Total))//记录数不相等
{ {
var ids = _jobDbContext.Set<T>().Where(p => p.RequestDate == inputdate).Select(p => p.Id).ToList();//已经同步的ID var ids = _jobDbContext.Set<T>().Where(p => p.RequestDate == inputdate).Select(p => p.Id).ToList();//已经同步的ID
@ -68,6 +82,7 @@ namespace TaskManager.Controllers
} }
else else
{ {
foreach (var itm in firstResponse.Data.Rows) foreach (var itm in firstResponse.Data.Rows)
{ {
T entity = new T(); T entity = new T();
@ -77,11 +92,15 @@ namespace TaskManager.Controllers
allData.Add(itm); allData.Add(itm);
} }
} }
_jobDbContext.BulkInsert(pagefirstList); _jobDbContext.BulkInsert(pagefirstList);
//Console.WriteLine($"总记录数: {totalItems}, 每页大小: {pageSize}");
// 计算总页数 // 计算总页数
int totalPages = (int)Math.Ceiling((double)totalItems / pageSize); int totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
//Console.WriteLine($"总共需要请求 {totalPages} 页数据"); //Console.WriteLine($"总共需要请求 {totalPages} 页数据");
// 循环请求剩余页面 // 循环请求剩余页面
for (currentPage = 2; currentPage <= totalPages; currentPage++) for (currentPage = 2; currentPage <= totalPages; currentPage++)
{ {
@ -91,6 +110,7 @@ namespace TaskManager.Controllers
if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0) if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0)
{ {
List<T> pageList = new List<T>(); List<T> pageList = new List<T>();
if (readedcount > 0) if (readedcount > 0)
{ {
var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id)); var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
@ -105,6 +125,7 @@ namespace TaskManager.Controllers
} }
else else
{ {
foreach (var itm in pageResponse.Data.Rows) foreach (var itm in pageResponse.Data.Rows)
{ {
T entity = new T(); T entity = new T();
@ -114,16 +135,24 @@ namespace TaskManager.Controllers
allData.Add(itm); allData.Add(itm);
} }
} }
_jobDbContext.BulkInsert(pageList); _jobDbContext.BulkInsert(pageList);
await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName); await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName);
} }
else else
{ {
await _logger.AddError($"第 {currentPage} 页未返回数据", TaskName); await _logger.AddError($"第 {currentPage} 页未返回数据", TaskName);
} }
// 简单的请求间隔,避免过于频繁 // 简单的请求间隔,避免过于频繁
await Task.Delay(200); await Task.Delay(200);
} }
await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName); await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName);
} }
@ -290,12 +319,20 @@ namespace TaskManager.Controllers
await FetchAllDataAsync(string.Empty); await FetchAllDataAsync(string.Empty);
} }
/// <summary>
/// 获取所有记录
/// </summary>
/// <returns></returns>
[HttpGet] [HttpGet]
public async Task<ActionResult<IEnumerable<T>>> GetAll() public async Task<ActionResult<IEnumerable<T>>> GetAll()
{ {
return await _repository.GetAllAsync() as List<T>; return await _repository.GetAllAsync() as List<T>;
} }
/// <summary>
/// 获取实体通过ID
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}")] [HttpGet("{id}")]
public async Task<ActionResult<T>> GetById(int id) public async Task<ActionResult<T>> GetById(int id)
{ {
@ -311,7 +348,11 @@ namespace TaskManager.Controllers
var createdEntity = await _repository.AddAsync(entity); var createdEntity = await _repository.AddAsync(entity);
return CreatedAtAction(nameof(GetById), new { id = createdEntity.Id }, createdEntity); return CreatedAtAction(nameof(GetById), new { id = createdEntity.Id }, createdEntity);
} }
/// <summary>
/// 修改
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPut("{id}")] [HttpPut("{id}")]
public async Task<IActionResult> Update(T entity) public async Task<IActionResult> Update(T entity)
{ {
@ -325,6 +366,11 @@ namespace TaskManager.Controllers
await _repository.UpdateAsync(entity); await _repository.UpdateAsync(entity);
return new JsonResult(new { Code = 200, Message = "修改成功!" }); return new JsonResult(new { Code = 200, Message = "修改成功!" });
} }
/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id}")] [HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id) public async Task<IActionResult> Delete(int id)
@ -332,6 +378,15 @@ namespace TaskManager.Controllers
await _repository.DeleteAsync(id); await _repository.DeleteAsync(id);
return new JsonResult(new { Code = 200, Message = "删除成功!" }); ; return new JsonResult(new { Code = 200, Message = "删除成功!" }); ;
} }
/// <summary>
/// 分页
/// </summary>
/// <param name="pageNumber">第几页</param>
/// <param name="pageSize">每页条数</param>
/// <param name="sortBy">排序字段</param>
/// <param name="isAscending">正序还是倒序</param>
/// <param name="filters">过滤条件</param>
/// <returns></returns>
[HttpGet] [HttpGet]
public async Task<ActionResult<PagedResult<T>>> GetPaged( public async Task<ActionResult<PagedResult<T>>> GetPaged(
[FromQuery] int pageNumber = 1, [FromQuery] int pageNumber = 1,
@ -356,7 +411,15 @@ namespace TaskManager.Controllers
return Ok(pagedResult); return Ok(pagedResult);
} }
/// <summary>
/// 导出
/// </summary>
/// <param name="pageNumber"></param>
/// <param name="pageSize">每页条数</param>
/// <param name="sortBy">排序字段</param>
/// <param name="isAscending">正序还是倒序</param>
/// <param name="filters">过滤条件</param>
/// <returns></returns>
[HttpGet] [HttpGet]
public async Task<FileStreamResult> Export([FromQuery] int pageNumber = 1, public async Task<FileStreamResult> Export([FromQuery] int pageNumber = 1,
@ -390,7 +453,10 @@ namespace TaskManager.Controllers
} }
/// <summary>
/// 获取导入模板
/// </summary>
/// <returns></returns>
[HttpGet] [HttpGet]
@ -431,9 +497,62 @@ namespace TaskManager.Controllers
return StatusCode(500, "生成导入模板时发生错误"); return StatusCode(500, "生成导入模板时发生错误");
} }
} }
/// <summary>
/// 导入
/// </summary>
/// <param name="file">选择文件</param>
/// <returns></returns>
[HttpPost("Import")]
public async virtual Task<IActionResult> Import(IFormFile file)
{
if (file == null || file.Length <= 0)
{
return BadRequest("No file uploaded.");
}
try
{
var excelImporter = HttpContext.RequestServices.GetRequiredService<IExcelImporter>();
var importResult = await excelImporter.Import<T>(file.OpenReadStream());
//if (importResult.HasError)
//{
// return BadRequest(importResult.ErrorMessage);
//}
// 处理导入的数据
List<T> list = new List<T>();
foreach (var item in importResult.Data)
{
list.Add(item);
}
await ImportBefore(list);
await _jobDbContext.BulkInsertAsync(list);
await ImportAfter(list);
return new JsonResult(new { Code = 200, Message = "修改成功!" });
}
catch (Exception ex)
{
await _logger.AddError(ex.Message, TaskName);
return new JsonResult(new { Code = 400, Message = "导入失败!" });
}
}
protected virtual async Task ImportBefore(List<T> p_list)
{
}
protected virtual async Task ImportAfter(List<T> p_list)
{
}
@ -457,4 +576,8 @@ namespace TaskManager.Controllers
writer.WriteStringValue(value.ToString(_format)); writer.WriteStringValue(value.ToString(_format));
} }
} }
} }

100
API/Wood.Service/Controllers/NormalBaseController.cs

@ -1,10 +1,4 @@
using Magicodes.ExporterAndImporter.Core; using System;
using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.Linq; using System.Linq;
@ -12,11 +6,18 @@ using System.Linq.Expressions;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Magicodes.ExporterAndImporter.Core;
using Magicodes.ExporterAndImporter.Core.Extension;
using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using TaskManager.Entity; using TaskManager.Entity;
using TaskManager.EntityFramework; using TaskManager.EntityFramework;
using TaskManager.EntityFramework.Repository; using TaskManager.EntityFramework.Repository;
using Wood.Util; using Wood.Util;
using Magicodes.ExporterAndImporter.Core.Extension;
namespace Wood.Service.Controllers namespace Wood.Service.Controllers
@ -31,6 +32,7 @@ namespace Wood.Service.Controllers
protected readonly IRepository<T> _repository; protected readonly IRepository<T> _repository;
public NormalBaseController(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<T> repository) public NormalBaseController(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<T> repository)
{ {
_builder = builder; _builder = builder;
@ -96,6 +98,17 @@ namespace Wood.Service.Controllers
} }
/// <summary>
/// 分页
/// </summary>
/// <param name="pageNumber"></param>
/// <param name="pageSize"></param>
/// <param name="sortBy"></param>
/// <param name="isAscending"></param>
/// <param name="filters"></param>
/// <returns></returns>
[HttpGet] [HttpGet]
public async Task<ActionResult<TaskManager.EntityFramework.Repository.PagedResult<T>>> GetPaged( public async Task<ActionResult<TaskManager.EntityFramework.Repository.PagedResult<T>>> GetPaged(
[FromQuery] int pageNumber = 1, [FromQuery] int pageNumber = 1,
@ -120,7 +133,15 @@ namespace Wood.Service.Controllers
return Ok(pagedResult); return Ok(pagedResult);
} }
/// <summary>
/// 导出
/// </summary>
/// <param name="pageNumber"></param>
/// <param name="pageSize"></param>
/// <param name="sortBy"></param>
/// <param name="isAscending"></param>
/// <param name="filters"></param>
/// <returns></returns>
[HttpGet] [HttpGet]
public async Task<FileStreamResult> Export([FromQuery] int pageNumber = 1, public async Task<FileStreamResult> Export([FromQuery] int pageNumber = 1,
@ -157,7 +178,10 @@ namespace Wood.Service.Controllers
} }
/// <summary>
/// 导入模板
/// </summary>
/// <returns></returns>
[HttpGet] [HttpGet]
@ -198,6 +222,62 @@ namespace Wood.Service.Controllers
return StatusCode(500, "生成导入模板时发生错误"); return StatusCode(500, "生成导入模板时发生错误");
} }
} }
/// <summary>
/// 导入
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
[HttpPost("Import")]
public async virtual Task<IActionResult> Import(IFormFile file)
{
if (file == null || file.Length <= 0)
{
return BadRequest("No file uploaded.");
}
try
{
var excelImporter = HttpContext.RequestServices.GetRequiredService<IExcelImporter>();
var importResult = await excelImporter.Import<T>(file.OpenReadStream());
//if (importResult.HasError)
//{
// return BadRequest(importResult.ErrorMessage);
//}
// 处理导入的数据
List<T> list = new List<T>();
foreach (var item in importResult.Data)
{
list.Add(item);
}
await ImportBefore(list);
await _context.BulkInsertAsync(list);
await ImportAfter(list);
return new JsonResult(new { Code = 200, Message = "修改成功!" });
}
catch (Exception ex)
{
// await _logger.AddError(ex.Message, TaskName);
return new JsonResult(new { Code = 400, Message = "导入失败!" });
}
}
protected virtual async Task ImportBefore(List<T> p_list)
{
}
protected virtual async Task ImportAfter(List<T> p_list)
{
}

18
API/Wood.Service/Controllers/TaskAllocationService.cs

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using TaskManager.Entity;
using TaskManager.EntityFramework;
namespace Wood.Service.Controllers
{
public class TaskAllocationService : NormalBaseController<TaskAllocation>
{
public TaskAllocationService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<TaskAllocation> repository) : base(context, builder, configuration, repository)
{
}
}
}

18
API/Wood.Service/Controllers/TaskSubService.cs

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using TaskManager.Entity;
using TaskManager.EntityFramework;
namespace Wood.Service.Controllers
{
public class TaskSubService : NormalBaseController<TaskSub>
{
public TaskSubService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<TaskSub> repository) : base(context, builder, configuration, repository)
{
}
}
}

2
API/Wood.Service/Datas/SupplierEmployeeDtService.cs

@ -27,7 +27,7 @@ namespace Wood.Service.Datas
[HttpPost] [HttpPost]
[Route("import")] [Route("import")]
public async Task<IActionResult> Import(IFormFile file) public override async Task<IActionResult> Import(IFormFile file)
{ {
if (file == null || file.Length == 0) if (file == null || file.Length == 0)
{ {

2
API/Wood.Service/Datas/SupplierInfoDtService.cs

@ -27,7 +27,7 @@ namespace Wood.Service.Datas
[HttpPost] [HttpPost]
[Route("import")] [Route("import")]
public async Task<IActionResult> Import(IFormFile file) public override async Task<IActionResult> Import(IFormFile file)
{ {
if (file == null || file.Length == 0) if (file == null || file.Length == 0)
{ {

2
API/Wood.Service/Datas/SupplierProAttachmentDataDtService.cs

@ -28,7 +28,7 @@ namespace Wood.Service.Datas
[HttpPost] [HttpPost]
[Route("import")] [Route("import")]
public async Task<IActionResult> Import(IFormFile file) public override async Task<IActionResult> Import(IFormFile file)
{ {
if (file == null || file.Length == 0) if (file == null || file.Length == 0)
{ {

2
API/Wood.Service/Datas/SupplierProProcessEquipmentDtService.cs

@ -28,7 +28,7 @@ namespace Wood.Service.Datas
[HttpPost] [HttpPost]
[Route("import")] [Route("import")]
public async Task<IActionResult> Import(IFormFile file) public override async Task<IActionResult> Import(IFormFile file)
{ {
if (file == null || file.Length == 0) if (file == null || file.Length == 0)
{ {

Loading…
Cancel
Save