赵新宇 2 weeks ago
parent
commit
1c21f41ba7
  1. 2
      API/TaskManager.Entity/11-18/SUPPLIER_PRO_ATTACHMENT_DATA.cs
  2. 65
      API/TaskManager.Entity/Entity.cs
  3. 5
      API/TaskManager.EntityFramework/JobDbContext.cs
  4. 4487
      API/TaskManager.EntityFramework/Migrations/20250529092933_z202505290001.Designer.cs
  5. 3448
      API/TaskManager.EntityFramework/Migrations/20250529092933_z202505290001.cs
  6. 163
      API/TaskManager.EntityFramework/Migrations/JobDbContextModelSnapshot.cs
  7. 1
      API/TaskManager.EntityFramework/TaskManager.EntityFramework.csproj
  8. 87
      API/Wood.Admin.WebApi/Startup.cs
  9. 73
      API/Wood.Service/Controllers/NormalBaseController.cs
  10. 8
      API/Wood.Service/Controllers/RecurringJobBaseController.cs
  11. 181
      API/Wood.Service/Controllers/RecurringJobInputPageController.cs
  12. 270
      API/Wood.Service/Controllers/RecurringJobOutPageController.cs

2
API/TaskManager.Entity/11-18/SUPPLIER_PRO_ATTACHMENT_DATA.cs

@ -7,10 +7,10 @@ namespace TaskManager.Entity.Entitys
/// </summary>
public class SUPPLIER_PRO_ATTACHMENT_DATA : BaseEntity
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>

65
API/TaskManager.Entity/Entity.cs

@ -15,7 +15,7 @@ namespace TaskManager.Entity
public interface IDoExecute
{
Task ExecuteAsync(string url, string path, string takName);
Task ExecuteAsync(string url, string path, string takName,string client);
}
public class TaskConifgure:BaseEntity
{
@ -67,10 +67,50 @@ namespace TaskManager.Entity
}
public class TaskLog:BaseEntity
public class TEA_SUBSCRIBE
{
[Key]
[Required]
public Guid GUID { get; set; }
[MaxLength(50)]
public string TableName { get; set; }
[MaxLength(50)]
public string Creator { get; set; }
[MaxLength(50)]
public string Subscriber { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UID { get; set; }
[MaxLength(50)]
public string CreateUser { get; set; }
[Required]
public DateTime CreateTime { get; set; }
public string Remark { get; set; }
[MaxLength(50)]
public string UpdateUser { get; set; }
public DateTime? UpdateTime { get; set; }
[Required]
public bool Enable { get; set; }
}
public class TaskLog:BaseEntity
{
/// <summary>
/// 详细描述
/// </summary>
@ -106,6 +146,10 @@ namespace TaskManager.Entity
}
public class BaseEntity
{
public BaseEntity()
{
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[ExporterHeader(IsIgnore=true)]
@ -122,6 +166,9 @@ namespace TaskManager.Entity
public string? Remark { get; set; }
[ExporterHeader(IsIgnore = true)]
public Guid TaskId { get; set; }
}
public class CherryReadBaseEntity:BaseEntity
@ -133,11 +180,7 @@ namespace TaskManager.Entity
/// <summary>
/// 同步ID
/// </summary>
public string? Id { get; set; }
public string? Id { get; set; }
}
/// <summary>
@ -213,6 +256,11 @@ namespace TaskManager.Entity
/// 最后更新时间(任务最后修改的时间戳,可为空)
/// </summary>
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 已同步页数
/// </summary>
[ExporterHeader(DisplayName = "更新完成时间")]
public int SyncedPageCount { get; set; }
}
@ -375,9 +423,6 @@ namespace TaskManager.Entity
public class SUPPLIER_MRP_MONTH : CherryReadBaseEntity
{
/// <summary>
/// 需求发布版次:M+6月物料需求计划风险确认接口对应需求版次,需求ID
/// </summary>

5
API/TaskManager.EntityFramework/JobDbContext.cs

@ -203,6 +203,11 @@ namespace TaskManager.EntityFramework
public DbSet<TaskLog> TaskLogs { get; set; }
public DbSet<TaskSub> TaskSub { get; set; }
public DbSet<TaskConifgure> TaskConifgure { get; set; }
//public DbSet<TaskConifgure> TaskConifgures { get; set; }

4487
API/TaskManager.EntityFramework/Migrations/20250529092933_z202505290001.Designer.cs

File diff suppressed because it is too large

3448
API/TaskManager.EntityFramework/Migrations/20250529092933_z202505290001.cs

File diff suppressed because it is too large

163
API/TaskManager.EntityFramework/Migrations/JobDbContextModelSnapshot.cs

@ -1626,7 +1626,6 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -1640,7 +1639,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("DeliveryNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -1651,17 +1649,14 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PlantId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -1672,16 +1667,13 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("ReceivingCrossings")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<DateTime?>("RoadReceiveTime")
@ -1691,12 +1683,10 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("SerialNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("SerialSrate")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -1707,7 +1697,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -1983,7 +1972,6 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2003,22 +1991,18 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PlantId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PlantName")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2029,15 +2013,12 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("StockState")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2045,7 +2026,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2072,7 +2052,6 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2089,26 +2068,21 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("IsUpdate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PlantId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PlantName")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2209,16 +2183,13 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("ReleaseEdition")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("StartDate")
@ -2228,7 +2199,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2255,7 +2225,6 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "createByUser");
@ -2275,31 +2244,26 @@ namespace TaskManager.EntityFramework.Migrations
.HasAnnotation("Relational:JsonPropertyName", "isDelete");
b.Property<string>("IsUpdate")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "isUpdate");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "materialCode");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "materialDescription");
b.Property<string>("PlantId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "plantId");
b.Property<string>("PlantName")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "plantName");
@ -2356,21 +2320,17 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("ReleaseEdition")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "releaseEdition");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("StartMonth")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "startMonth");
@ -2379,7 +2339,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "updateByUser");
@ -2415,7 +2374,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("decimal(18,2)");
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2429,12 +2387,10 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("DemandSrate")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("DemandType")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2445,12 +2401,10 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2458,12 +2412,10 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("decimal(18,2)");
b.Property<string>("PlantId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PlantName")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2483,11 +2435,9 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<decimal?>("SummaryCreatQuantity")
@ -2503,7 +2453,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("decimal(18,2)");
b.Property<string>("SummarySign")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2511,7 +2460,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2538,17 +2486,14 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("Batch")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("Country")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2562,7 +2507,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("DeliveryPlace")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2573,47 +2517,38 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("ItemType")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialUnit")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("Note")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PlantId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PlantName")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PurchaseOrder")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("Purchaser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2627,20 +2562,16 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("SerialNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("Supplier")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2648,12 +2579,10 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("TradeTerms")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2944,12 +2873,10 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("AssemblyMaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2966,27 +2893,22 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("ModelCategory")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("Models")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MotorMaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -2994,22 +2916,18 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("OnLineTime")
.IsRequired()
.HasMaxLength(8)
.HasColumnType("nvarchar(8)");
b.Property<string>("Plant")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("ProductionLineId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("ProductionLineName")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -3017,18 +2935,15 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<DateTime?>("SortDate")
.HasColumnType("datetime2");
b.Property<string>("SortTime")
.IsRequired()
.HasMaxLength(8)
.HasColumnType("nvarchar(8)");
@ -3036,7 +2951,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -3047,7 +2961,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("Vin")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -3444,7 +3357,6 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -3461,17 +3373,14 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("Models")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -3479,17 +3388,14 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("ProductionLineId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("ProductionLineName")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("ProductionType")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -3497,18 +3403,15 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<Guid>("TaskId")
.HasColumnType("uniqueidentifier");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -3519,7 +3422,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("Vin")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -3716,13 +3618,11 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("Assembly")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "assembly");
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "createByUser");
@ -3743,29 +3643,24 @@ namespace TaskManager.EntityFramework.Migrations
.HasAnnotation("Relational:JsonPropertyName", "isDelete");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "materialCode");
b.Property<string>("Models")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "models");
b.Property<string>("Omterior")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Pattern")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "pattern");
b.Property<string>("Plant")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "plant");
@ -3798,25 +3693,20 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("ReleaseEdition")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "releaseEdition");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("SalseDepartment")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("StartMonth")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "startMonth");
@ -3825,13 +3715,11 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("Type")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "type");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasAnnotation("Relational:JsonPropertyName", "updateByUser");
@ -4051,7 +3939,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("NVarchar");
@ -4129,7 +4016,6 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4143,7 +4029,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("FinalWorkshop")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4154,17 +4039,14 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("Models")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4172,12 +4054,10 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("ProductionLineId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("ProductionLineName")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4185,18 +4065,15 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<Guid>("TaskId")
.HasColumnType("uniqueidentifier");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4207,7 +4084,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("Vin")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4228,7 +4104,6 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4242,7 +4117,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("Feedback")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4253,37 +4127,30 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("Judge")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("LotNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PickUpCrossings")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PickUpLocation")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("Plant")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4294,35 +4161,28 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("ReturnNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("ReturnReason")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("ReturnType")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("SerialNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("SerialSrate")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4330,7 +4190,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4357,7 +4216,6 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("CreateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4379,22 +4237,18 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("int");
b.Property<string>("MaterialCode")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("MaterialDescription")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PlantId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("PurchasingGroup")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4405,20 +4259,16 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("ScheduleAgreement")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<string>("SerialNumber")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4426,7 +4276,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("uniqueidentifier");
b.Property<string>("UpdateByUser")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
@ -4507,7 +4356,6 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("NVarchar");
b.Property<string>("RequestDate")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<decimal>("SafetyStock")
@ -4554,11 +4402,9 @@ namespace TaskManager.EntityFramework.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("UId"));
b.Property<string>("Api")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Corn")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("CreationTime")
@ -4568,29 +4414,24 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("bit");
b.Property<string>("Module")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<bool>("ReadState")
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("TableName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<Guid>("TaskId")
.HasColumnType("uniqueidentifier");
b.Property<string>("TaskName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Url")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<bool>("WriteState")
@ -4613,25 +4454,21 @@ namespace TaskManager.EntityFramework.Migrations
.HasColumnType("datetime2");
b.Property<string>("Info")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<bool>("ReadState")
.HasColumnType("bit");
b.Property<string>("Remark")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<Guid>("TaskId")
.HasColumnType("uniqueidentifier");
b.Property<string>("TaskName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Type")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<bool>("WriteState")

1
API/TaskManager.EntityFramework/TaskManager.EntityFramework.csproj

@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="2.1.66" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0">
<PrivateAssets>all</PrivateAssets>

87
API/Wood.Admin.WebApi/Startup.cs

@ -21,6 +21,7 @@ using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.EntityFramework;
using TaskManager.EntityFramework.Repository;
@ -117,13 +118,95 @@ namespace Wood.Admin.WebApi
// 13. 供应商共享库存相关
services.AddScoped<SupplierSinvDataService>();
// 14. 风险确认相关服务(如果类型名正确)
//services.AddTransient(implementationFactory =>
//{
// Func<string, IDoExecute> accesor = key =>
// {
// if (key.Equals(typeof(JisBBACSeEdiCompareExportService).FullName))
// {
// return implementationFactory.GetService<JisBBACSeEdiCompareExportService>();
// }
// if (key.Equals(typeof(JisHBPOSeEdiCompareExportService).FullName))
// {
// return implementationFactory.GetService<JisHBPOSeEdiCompareExportService>();
// }
// if (key.Equals(typeof(JisBBACSaSeEdiCompareExportService).FullName))
// {
// return implementationFactory.GetService<JisBBACSaSeEdiCompareExportService>();
// }
// if (key.Equals(typeof(JisHBPOSaSeEdiCompareExportService).FullName))
// {
// return implementationFactory.GetService<JisHBPOSaSeEdiCompareExportService>();
// }
// if (key.Equals(typeof(MaiDanBBACSaSeCompareExportService).FullName))
// {
// return implementationFactory.GetService<MaiDanBBACSaSeCompareExportService>();
// }
// if (key.Equals(typeof(MaiDanHBPOSaSeCompareExportService).FullName))
// {
// return implementationFactory.GetService<MaiDanHBPOSaSeCompareExportService>();
// }
// if (key.Equals(typeof(PubSaSeCompareExportService).FullName))
// {
// return implementationFactory.GetService<PubSaSeCompareExportService>();
// }
// if (key.Equals(typeof(PendingDeductionService).FullName))
// {
// return implementationFactory.GetService<PendingDeductionService>();
// }
// if (key.Equals(typeof(PendingDeductionDelService).FullName))
// {
// return implementationFactory.GetService<PendingDeductionDelService>();
// }
// if (key.Equals(typeof(GenerateJisInvoiceService).FullName))
// {
// return implementationFactory.GetService<GenerateJisInvoiceService>();
// }
// if (key.Equals(typeof(BalanceSumService).FullName))
// {
// return implementationFactory.GetService<BalanceSumService>();
// }
// if (key.Equals(typeof(EdiWmsDiffService).FullName))
// {
// return implementationFactory.GetService<EdiWmsDiffService>();
// }
// if (key.Equals(typeof(HBPOEdiWmsDiffService).FullName))
// {
// return implementationFactory.GetService<HBPOEdiWmsDiffService>();
// }
// if (key.Equals(typeof(PDMakeService).FullName))
// {
// return implementationFactory.GetService<PDMakeService>();
// }
// if (key.Equals(typeof(MakeCanSettlementService).FullName))
// {
// return implementationFactory.GetService<MakeCanSettlementService>();
// }
// if (key.Equals(typeof(ReturnCanSettlement).FullName))
// {
// return implementationFactory.GetService<ReturnCanSettlement>();
// }
// else
// {
// throw new ArgumentException($"Not Support key:{key}");
// }
// }; return accesor;
//});
// 14. 风险确认相关服务(如果类型名正确)
// 配置 DbContext 使用 SQL Server 连接字符串
services.AddDbContext<JobDbContext>(options =>
options.UseSqlServer(GlobalContext.SystemConfig.CustomerDb));

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

@ -1,6 +1,9 @@
using Microsoft.AspNetCore.Authorization;
using Magicodes.ExporterAndImporter.Core;
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.Linq;
@ -107,6 +110,72 @@ namespace Wood.Service.Controllers
var pagedResult = await _repository.GetPagedAsync(filter, pagingParams);
return Ok(pagedResult);
}
public async Task<FileStreamResult> Export([FromQuery] int pageNumber = 1,
[FromQuery] int pageSize = 10,
[FromQuery] string sortBy = "",
[FromQuery] bool isAscending = true,
[FromQuery] Dictionary<string, string> filters = null)
{
var pagingParams = new PagingParams
{
PageNumber = pageNumber,
PageSize = pageSize,
SortBy = sortBy,
IsAscending = isAscending,
Filters = filters
};
// 可以在这里构建表达式树过滤条件
Expression<Func<T, bool>> filter = null;
var pagedResult = await _repository.GetPagedAsync(null, pagingParams);
return await ExportFile<T>(pagedResult.Data as ICollection<T>, Guid.NewGuid().ToString() + ".xlsx");
}
protected async Task<FileStreamResult> ExportFile(ICollection<T> dtos, string fileName)
{
var excelExporter = HttpContext.RequestServices.GetRequiredService<IExcelExporter>();
var res = await excelExporter.ExportAsByteArray<T>(dtos);
return new FileStreamResult(new MemoryStream(res), "application/octet-stream") { FileDownloadName = DateTime.Now.ToString("yyyyMMddHHmm") + "_" + fileName };
}
[HttpGet]
public async Task<IActionResult> GetImportTemplate()
{
try
{
// 创建导入模板生成器
var importer = new ExcelImporter();
// 生成导入模板流(这里假设使用 YourModel 作为导入模型)
using var stream = new MemoryStream();
await importer.GenerateTemplate(stream, typeof(T));
stream.Seek(0, SeekOrigin.Begin);
// 设置友好的文件名,例如:"导入模板_20250530.xlsx"
var fileName = $"导入模板_{DateTime.Now:yyyyMMdd}.xlsx";
// 返回文件流结果
return File(
fileStream: stream,
contentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
fileDownloadName: fileName);
}
catch (Exception ex)
{
// 记录异常日志
Console.WriteLine($"生成导入模板时出错: {ex.Message}");
// 返回错误响应
return StatusCode(500, "生成导入模板时发生错误");
}
}
}
}

8
API/Wood.Service/Controllers/RecurringJobBaseController.cs

@ -16,7 +16,6 @@ using System.Text.RegularExpressions;
using System.Threading.Tasks;
using TaskManager.Entity;
using TaskManager.EntityFramework;
using TaskManager.EntityFramework;
@ -30,6 +29,7 @@ namespace TaskManager.Controllers
protected string appSecret = "48edc4425647425d87f806a1ba492580";
protected readonly HttpClient _httpClient;
protected readonly JobDbContext _jobDbContext;
protected string Client { set; get; } = "Wood";
protected string Path { set; get; } = "/v2/get/supplierProPlaning";
protected string Url { set; get; } = "/v2/get/supplierProPlaning";
protected virtual string TaskName { set; get; } = "SupplierProPlaning";
@ -135,17 +135,17 @@ namespace TaskManager.Controllers
await _logger.AddInfo($"{TaskName}结束执行作业{uid}", TaskName);
}
[NonAction]
public async Task ExecuteAsync(string url, string path, string taskName)
public async Task ExecuteAsync(string url, string path, string taskName,string client)
{
var str = DateTime.Now.ToLongTimeString();
await BeforeExecuteAsync(str);
await DoExecutingAsync(url, path, taskName);
await DoExecutingAsync(url, path, taskName,client);
await AfterExecuteAsync(str);
}
protected async virtual Task DoExecutingAsync(string url, string path, string takName)
protected async virtual Task DoExecutingAsync(string url, string path, string takName,string client)
{

181
API/Wood.Service/Controllers/RecurringJobInputPageController.cs

@ -1,6 +1,183 @@
namespace TaskManager.Controllers
using Dapper;
using Microsoft.EntityFrameworkCore;
using System.Drawing.Printing;
using TaskManager.Contracts.Dtos;
using TaskManager.Entity;
using TaskManager.EntityFramework;
namespace TaskManager.Controllers
{
//public class RecurringJobInputPageController<T,TINPUT>: RecurringJobBaseController
public class RecurringJobInputPageController<T, TINPUT> : RecurringJobBaseController
{
public RecurringJobInputPageController(HttpClient httpClient, JobDbContext jobDbContext, LogController log) : base(httpClient, jobDbContext, log)
{
}
public async Task ProcessUnsyncedTasks()
{
// 查询主表中未完成且子表存在的任务
}
private async Task SyncTaskSubTable(TaskSub master)
{
var page = master.SyncedPageCount + 1; // 下一页
var sublist=_jobDbContext.TaskSub.Where(p => p.TaskName == master.TaskName && p.WriteState == false).ToList();
int pageSize = 1000;
if (!sublist.Any())
{
foreach (var sub in sublist)
{
string str = $"select * from {sub.TableName} where TaskId={sub.TaskId} and WriteState=false order by uid";
var entites=_jobDbContext.Database.GetDbConnection().Query<T>(str);
var subTableQuery=entites.Skip((page - 1) * pageSize)
.Take(page).ToList();
}
}
Type subTableType = GetSubTableType(master.SubTableName);
if (subTableType == null) return;
// 分页查询子表未同步记录
var subTableQuery = _dbContext.Set(subTableType)
.Where($"TaskId == {master.TaskId} AND IsSynced == false")
.OrderBy("Id") // 假设子表有排序字段
.Skip((page - 1) * PageSize)
.Take(PageSize);
var records = await subTableQuery.ToListAsync();
if (!records.Any())
{
// 所有子表记录已同步,标记主表完成
master.IsSynced = true;
_dbContext.Update(master);
await _dbContext.SaveChangesAsync();
return;
}
// 标记子表记录为已同步
foreach (dynamic record in records)
{
record.IsSynced = true;
_dbContext.Update(record);
}
// 更新主表分页数
master.SyncedPageCount = page;
_dbContext.Update(master);
await _dbContext.SaveChangesAsync();
}
private Type GetSubTableType(string subTableName)
{
// 示例:通过子表名映射实体类型(实际需根据业务逻辑实现)
var typeMap = new Dictionary<string, Type>
{
{"TaskSubTable1", typeof(TaskSubTable1)},
{"TaskSubTable2", typeof(TaskSubTable2)}
};
return typeMap.TryGetValue(subTableName, out var type) ? type : null;
}
}
//public class TaskSyncService
//{
// private readonly DbContext _dbContext;
// private const int PageSize = 100; // 每页读取数量
// public TaskSyncService(DbContext dbContext)
// {
// _dbContext = dbContext;
// }
// public async Task ProcessUnsyncedTasks()
// {
// // 查询主表中未完成且子表存在的任务
// var masters = await _dbContext.Set<TaskMaster>()
// .Where(m => !m.IsSynced && !string.IsNullOrEmpty(m.SubTableName))
// .ToListAsync();
// foreach (var master in masters)
// {
// await SyncTaskSubTable(master);
// }
// }
// private async Task SyncTaskSubTable(TaskMaster master)
// {
// var page = master.SyncedPageCount + 1; // 下一页
// // 动态获取子表类型(需根据实际场景实现,如通过字典映射子表名到实体类型)
// Type subTableType = GetSubTableType(master.SubTableName);
// if (subTableType == null) return;
// // 分页查询子表未同步记录
// var subTableQuery = _dbContext.Set(subTableType)
// .Where($"TaskId == {master.TaskId} AND IsSynced == false")
// .OrderBy("Id") // 假设子表有排序字段
// .Skip((page - 1) * PageSize)
// .Take(PageSize);
// var records = await subTableQuery.ToListAsync();
// if (!records.Any())
// {
// // 所有子表记录已同步,标记主表完成
// master.IsSynced = true;
// _dbContext.Update(master);
// await _dbContext.SaveChangesAsync();
// return;
// }
// // 标记子表记录为已同步
// foreach (dynamic record in records)
// {
// record.IsSynced = true;
// _dbContext.Update(record);
// }
// // 更新主表分页数
// master.SyncedPageCount = page;
// _dbContext.Update(master);
// await _dbContext.SaveChangesAsync();
// }
// private Type GetSubTableType(string subTableName)
// {
// // 示例:通过子表名映射实体类型(实际需根据业务逻辑实现)
// var typeMap = new Dictionary<string, Type>
// {
// {"TaskSubTable1", typeof(TaskSubTable1)},
// {"TaskSubTable2", typeof(TaskSubTable2)}
// };
// return typeMap.TryGetValue(subTableName, out var type) ? type : null;
// }
//}
}

270
API/Wood.Service/Controllers/RecurringJobOutPageController.cs

@ -20,8 +20,6 @@ namespace TaskManager.Controllers
//[Route("api/[controller]")]
public class RecurringJobOutPageController<T, ToutputDetial> : RecurringJobBaseController where T : CherryReadBaseEntity, new() where ToutputDetial : CherryReadBaseEntityDto
{
protected readonly IRepository<T> _repository;
public RecurringJobOutPageController(HttpClient httpClient, JobDbContext jobDbContext, LogController log,IRepository<T> repository) : base(httpClient, jobDbContext, log)
{
@ -49,22 +47,12 @@ namespace TaskManager.Controllers
IsAscending = isAscending,
Filters = filters
};
// 可以在这里构建表达式树过滤条件
Expression<Func<T, bool>> filter = null;
var pagedResult = await _repository.GetPagedAsync(filter, pagingParams);
return await ExportFile<T>(pagedResult.Data, Guid.NewGuid().ToString() + ".xlsx");
}
[NonAction]
public async Task<List<ToutputDetial>> FetchAllDataAsync(string inputdate)
{
@ -74,125 +62,196 @@ namespace TaskManager.Controllers
int currentPage = 1;
string date = !string.IsNullOrEmpty(inputdate) ? inputdate : DateTime.Now.ToString("yyyy-MM-dd");
// 首次请求获取总条数和分页信息
PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, IsForce = true });
if (firstResponse == null || firstResponse.Code != 200)
{
await _logger.AddError("首次请求失败,无法获取分页信息。", TaskName);
return allData;
}
if (firstResponse.Data.Total == "0")
{
await _logger.AddError("首次请求失败,Total为0是否已经全部读取过。", TaskName);
return allData;
}
var readedcount = _jobDbContext.Set<T>().Where(p => p.RequestDate == inputdate).Count();
if (readedcount != int.Parse(firstResponse.Data.Total))//记录数不相等
if (readedcount == 0)//第一次请求用false,接口人胡启名要求
{
var ids = _jobDbContext.Set<T>().Where(p => p.RequestDate == inputdate).Select(p => p.Id).ToList();//已经同步的ID
totalItems = int.Parse(firstResponse.Data.Total);
pageSize = int.Parse(firstResponse.Data.PageSize);
List<T> pagefirstList = new List<T>();
if (readedcount > 0)
PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, IsForce = false });
if (firstResponse == null || firstResponse.Code != 200)
{
var listrows = firstResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
await _logger.AddError("首次请求失败,无法获取分页信息。", TaskName);
return allData;
}
else
if (readedcount != int.Parse(firstResponse.Data.Total))//记录数不相等
{
foreach (var itm in firstResponse.Data.Rows)
var ids = _jobDbContext.Set<T>().Where(p => p.RequestDate == inputdate).Select(p => p.Id).ToList();//已经同步的ID
totalItems = int.Parse(firstResponse.Data.Total);
pageSize = int.Parse(firstResponse.Data.PageSize);
List<T> pagefirstList = new List<T>();
if (readedcount > 0)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
var listrows = firstResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
}
}
_jobDbContext.BulkInsert(pagefirstList);
//Console.WriteLine($"总记录数: {totalItems}, 每页大小: {pageSize}");
// 计算总页数
int totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
//Console.WriteLine($"总共需要请求 {totalPages} 页数据");
// 循环请求剩余页面
for (currentPage = 2; currentPage <= totalPages; currentPage++)
{
PAGE_DTO pageinput = new PAGE_DTO() { Date = date, PageNum = currentPage, IsForce = true };
Console.WriteLine($"正在请求第 {currentPage} 页...");
PagedResponse<ToutputDetial> pageResponse = await GetPageAsync(pageinput);
if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0)
else
{
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
}
_jobDbContext.BulkInsert(pagefirstList);
//Console.WriteLine($"总记录数: {totalItems}, 每页大小: {pageSize}");
// 计算总页数
int totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
//Console.WriteLine($"总共需要请求 {totalPages} 页数据");
// 循环请求剩余页面
for (currentPage = 2; currentPage <= totalPages; currentPage++)
{
List<T> pageList = new List<T>();
//foreach (var itm in pageResponse.Data.Rows)
//{
// T entity = new T();
// entity.InjectFrom(itm);
// entity.CreationTime = DateTime.Now;
// pageList.Add(entity);
// allData.Add(itm);
//}
if (readedcount > 0)
PAGE_DTO pageinput = new PAGE_DTO() { Date = date, PageNum = currentPage, IsForce =false };
Console.WriteLine($"正在请求第 {currentPage} 页...");
PagedResponse<ToutputDetial> pageResponse = await GetPageAsync(pageinput);
if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0)
{
var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
foreach (var itm in pageResponse.Data.Rows)
List<T> pageList = new List<T>();
if (readedcount > 0)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
}
else
{
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
}
_jobDbContext.BulkInsert(pageList);
await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName);
}
else
{
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
await _logger.AddError($"第 {currentPage} 页未返回数据", TaskName);
}
// 简单的请求间隔,避免过于频繁
await Task.Delay(200);
}
await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName);
}
}
else
{
PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, IsForce = true });
if (firstResponse == null || firstResponse.Code != 200)
{
await _logger.AddError("首次请求失败,无法获取分页信息。", TaskName);
return allData;
}
if (firstResponse.Data.Total == "0")
{
await _logger.AddError("首次请求失败,Total为0是否已经全部读取过。", TaskName);
return allData;
_jobDbContext.BulkInsert(pageList);
await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName);
}
if (readedcount != int.Parse(firstResponse.Data.Total))//记录数不相等
{
var ids = _jobDbContext.Set<T>().Where(p => p.RequestDate == inputdate).Select(p => p.Id).ToList();//已经同步的ID
totalItems = int.Parse(firstResponse.Data.Total);
pageSize = int.Parse(firstResponse.Data.PageSize);
List<T> pagefirstList = new List<T>();
if (readedcount > 0)
{
var listrows = firstResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
}
else
{
await _logger.AddError($"第 {currentPage} 页未返回数据", TaskName);
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pagefirstList.Add(entity);
allData.Add(itm);
}
}
_jobDbContext.BulkInsert(pagefirstList);
//Console.WriteLine($"总记录数: {totalItems}, 每页大小: {pageSize}");
// 计算总页数
int totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
//Console.WriteLine($"总共需要请求 {totalPages} 页数据");
// 循环请求剩余页面
for (currentPage = 2; currentPage <= totalPages; currentPage++)
{
PAGE_DTO pageinput = new PAGE_DTO() { Date = date, PageNum = currentPage, IsForce = true };
Console.WriteLine($"正在请求第 {currentPage} 页...");
PagedResponse<ToutputDetial> pageResponse = await GetPageAsync(pageinput);
if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0)
{
List<T> pageList = new List<T>();
if (readedcount > 0)
{
var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
}
else
{
// 简单的请求间隔,避免过于频繁
await Task.Delay(200);
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
entity.InjectFrom(itm);
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
}
}
_jobDbContext.BulkInsert(pageList);
await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName);
}
else
{
await _logger.AddError($"第 {currentPage} 页未返回数据", TaskName);
}
// 简单的请求间隔,避免过于频繁
await Task.Delay(200);
}
await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName);
}
}
await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName);
}
// 首次请求获取总条数和分页信息
return allData;
@ -245,11 +304,12 @@ namespace TaskManager.Controllers
TaskName = taskName;
await FetchAllDataAsync(inputdate);
}
protected override async Task DoExecutingAsync(string url, string path, string takName)
protected override async Task DoExecutingAsync(string url, string path, string takName,string client)
{
Url = url;
Path = path;
TaskName = takName;
Client = client;
await FetchAllDataAsync(string.Empty);
}

Loading…
Cancel
Save