周红军 2 weeks ago
parent
commit
aafdb25a61
  1. 12
      API/TaskManager.Contracts/Dtos/10_17/Class1.cs
  2. 252
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_DATE_DTO.cs
  3. 138
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_MMRP_DTO.cs
  4. 60
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_PO_DTO.cs
  5. 130
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_EMPLOYEE_DT_DTO.cs
  6. 125
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_INFO_DT_DTO.cs
  7. 115
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_ATTACHMENT_DATA_DTO.cs
  8. 115
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_ENVIRONMENT_DTO.cs
  9. 179
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_FLAW_DTO.cs
  10. 132
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_MATERIAL_DATA_DTO.cs
  11. 150
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_OEE_ACHIEVEMENT_RATE_DTO.cs
  12. 120
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_OEE_TIME_DETAILS_DTO.cs
  13. 126
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_DTO.cs
  14. 192
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DTO.cs
  15. 192
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT_DTO.cs
  16. 90
      API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_SINV_DATA_DTO.cs
  17. 2
      API/TaskManager.Entity/11-18/SUPPLIER_CON_MMRP.cs
  18. 68
      API/TaskManager.Entity/Entity.cs
  19. 8
      API/TaskManager.EntityFramework/JobDbContext.cs
  20. 5223
      API/TaskManager.EntityFramework/Migrations/20250604031956_2025060402.Designer.cs
  21. 22
      API/TaskManager.EntityFramework/Migrations/20250604031956_2025060402.cs
  22. 100
      API/Wood.Admin.WebApi/Startup.cs
  23. 1
      API/Wood.Admin.WebApi/Wood.Admin.WebApi.csproj
  24. 2
      API/Wood.Admin.WebApi/appsettings.json
  25. 7
      API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs
  26. 74
      API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs
  27. 116
      API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs
  28. 16
      API/Wood.Service/Controllers/CherySupplierConDateService.cs
  29. 77
      API/Wood.Service/Controllers/CherySupplierConMmrpService.cs
  30. 52
      API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs
  31. 5
      API/Wood.Service/Controllers/NormalBaseController.cs
  32. 6
      API/Wood.Service/Controllers/SupplierConDateService.cs
  33. 6
      API/Wood.Service/Controllers/SupplierConMmrpService.cs
  34. 250
      API/Wood.Service/Controllers/TaskConifgureController.cs
  35. 7
      API/Wood.Service/Datas/SupplierEmployeeDtService.cs
  36. 6
      API/Wood.Service/Datas/SupplierInfoDtService.cs
  37. 6
      API/Wood.Service/Datas/SupplierProAttachmentDataDtService.cs
  38. 6
      API/Wood.Service/Datas/SupplierProProcessEquipmentDtService.cs
  39. 62
      API/Wood.Service/SystemManage/UserService.cs
  40. 2
      Web/.env.development
  41. 2
      Web/.env.production

12
API/TaskManager.Contracts/Dtos/10_17/Class1.cs

@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TaskManager.Contracts.Dtos._10_17
{
internal class Class1
{
}
}

252
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_DATE_DTO.cs

@ -0,0 +1,252 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// 日物料需求计划风险确认
/// </summary>
public class SUPPLIER_CON_DATE_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 需求发布版次,取自日物料需求计划接口中的需求发布版次,针对与这个版次的需求进行风险反馈
/// </summary>
[ExporterHeader(DisplayName = "需求发布版次")]
[ImporterHeader(Name = "需求发布版次")]
public string ReleaseEdition { get; set; }
/// <summary>
/// 零件号,奇瑞零件号
/// </summary>
[ExporterHeader(DisplayName = "零件号,奇瑞零件号")]
[ImporterHeader(Name = "零件号,奇瑞零件号")]
public string MaterialCode { get; set; }
/// <summary>
/// 工厂代码
/// </summary>
[ExporterHeader(DisplayName = "工厂代码")]
[ImporterHeader(Name = "工厂代码")]
public string PlantId { get; set; }
/// <summary>
/// 反馈结果,1-异常;0-无异常(匹配峰值需求缺口,如果可满足峰值,即选择无异常)
/// </summary>
[ExporterHeader(DisplayName = "反馈结果")]
[ImporterHeader(Name = "反馈结果")]
public string FeedbackResults { get; set; }
/// <summary>
/// 风险类型,当反馈结果=1时,此字段必输1.生产节拍不足2.人员不足3.原材料不足4.设备异常5.其他
/// </summary>
[ExporterHeader(DisplayName = "风险类型")]
[ImporterHeader(Name = "风险类型")]
public string? VentureType { get; set; }
/// <summary>
/// 具体风险,当反馈结果=1时,此字段必输描述具体风险
/// </summary>
[ExporterHeader(DisplayName = "具体风险")]
[ImporterHeader(Name = "具体风险")]
public string? VentureSpecific { get; set; }
/// <summary>
/// 应对措施,当反馈结果=1时,此字段必输描述具体应对措施
/// </summary>
[ExporterHeader(DisplayName = "应对措施")]
[ImporterHeader(Name = "应对措施")]
public string? Measures { get; set; }
/// <summary>
/// 起始日期,格式:yyyy-MM-dd
/// </summary>
[ExporterHeader(DisplayName = "起始日期")]
[ImporterHeader(Name = "起始日期")]
public string StartDate { get; set; }
/// <summary>
/// 满足数量1,数量锁定,7日内满足数量必须等于需求数量
/// </summary>
[ExporterHeader(DisplayName = "满足数量1")]
[ImporterHeader(Name = "满足数量1")]
public decimal QuantityMeet1 { get; set; }
/// <summary>
/// 满足数量2,
/// </summary>
[ExporterHeader(DisplayName = "满足数量2")]
[ImporterHeader(Name = "满足数量2")]
public decimal QuantityMeet2 { get; set; }
/// <summary>
/// 满足数量3,
/// </summary>
[ExporterHeader(DisplayName = "满足数量3")]
[ImporterHeader(Name = "满足数量3")]
public decimal QuantityMeet3 { get; set; }
/// <summary>
/// 满足数量4,
/// </summary>
[ExporterHeader(DisplayName = "满足数量4")]
[ImporterHeader(Name = "满足数量4")]
public decimal QuantityMeet4 { get; set; }
/// <summary>
/// 满足数量5,
/// </summary>
[ExporterHeader(DisplayName = "满足数量5")]
[ImporterHeader(Name = "满足数量5")]
public decimal QuantityMeet5 { get; set; }
/// <summary>
/// 满足数量6,
/// </summary>
[ExporterHeader(DisplayName = "满足数量6")]
[ImporterHeader(Name = "满足数量6")]
public decimal QuantityMeet6 { get; set; }
/// <summary>
/// 满足数量7,
/// </summary>
[ExporterHeader(DisplayName = "满足数量7")]
[ImporterHeader(Name = "满足数量7")]
public decimal QuantityMeet7 { get; set; }
/// <summary>
/// 满足数量8,根据物料需求计划接口发布的需求天数,针对企业自身产能情况反馈可满足数量注:目前发送数据为滚动12天的数据,13至31天的字段为预留,未来可能会增加至31天
/// </summary>
[ExporterHeader(DisplayName = "满足数量8")]
[ImporterHeader(Name = "满足数量8")]
public decimal QuantityMeet8 { get; set; }
/// <summary>
/// 满足数量9,
/// </summary>
[ExporterHeader(DisplayName = "满足数量9")]
[ImporterHeader(Name = "满足数量9")]
public decimal QuantityMeet9 { get; set; }
/// <summary>
/// 满足数量10,
/// </summary>
[ExporterHeader(DisplayName = "满足数量10")]
[ImporterHeader(Name = "满足数量10")]
public decimal QuantityMeet10 { get; set; }
/// <summary>
/// 满足数量11,
/// </summary>
[ExporterHeader(DisplayName = "满足数量11")]
[ImporterHeader(Name = "满足数量11")]
public decimal QuantityMeet11 { get; set; }
/// <summary>
/// 满足数量12,
/// </summary>
[ExporterHeader(DisplayName = "满足数量12")]
[ImporterHeader(Name = "满足数量12")]
public decimal QuantityMeet12 { get; set; }
/// <summary>
/// 满足数量13,
/// </summary>
[ExporterHeader(DisplayName = "满足数量13")]
[ImporterHeader(Name = "满足数量13")]
public decimal? QuantityMeet13 { get; set; }
/// <summary>
/// 满足数量14,
/// </summary>
[ExporterHeader(DisplayName = "满足数量14")]
[ImporterHeader(Name = "满足数量14")]
public decimal? QuantityMeet14 { get; set; }
/// <summary>
/// 满足数量15,
/// </summary>
[ExporterHeader(DisplayName = "满足数量15")]
[ImporterHeader(Name = "满足数量15")]
public decimal? QuantityMeet15 { get; set; }
/// <summary>
/// 满足数量16,
/// </summary>
[ExporterHeader(DisplayName = "满足数量16")]
[ImporterHeader(Name = "满足数量16")]
public decimal? QuantityMeet16 { get; set; }
/// <summary>
/// 满足数量17,
/// </summary>
[ExporterHeader(DisplayName = "满足数量17")]
[ImporterHeader(Name = "满足数量17")]
public decimal? QuantityMeet17 { get; set; }
/// <summary>
/// 满足数量18,
/// </summary>
[ExporterHeader(DisplayName = "满足数量18")]
[ImporterHeader(Name = "满足数量18")]
public decimal? QuantityMeet18 { get; set; }
/// <summary>
/// 满足数量19,
/// </summary>
[ExporterHeader(DisplayName = "满足数量19")]
[ImporterHeader(Name = "满足数量19")]
public decimal? QuantityMeet19 { get; set; }
/// <summary>
/// 满足数量20,
/// </summary>
[ExporterHeader(DisplayName = "满足数量20")]
[ImporterHeader(Name = "满足数量20")]
public decimal? QuantityMeet20 { get; set; }
/// <summary>
/// 满足数量21,
/// </summary>
[ExporterHeader(DisplayName = "满足数量21")]
[ImporterHeader(Name = "满足数量21")]
public decimal? QuantityMeet21 { get; set; }
/// <summary>
/// 满足数量22,
/// </summary>
[ExporterHeader(DisplayName = "满足数量22")]
[ImporterHeader(Name = "满足数量22")]
public decimal? QuantityMeet22 { get; set; }
/// <summary>
/// 满足数量23,
/// </summary>
[ExporterHeader(DisplayName = "满足数量23")]
[ImporterHeader(Name = "满足数量23")]
public decimal? QuantityMeet23 { get; set; }
/// <summary>
/// 满足数量24,
/// </summary>
[ExporterHeader(DisplayName = "满足数量24")]
[ImporterHeader(Name = "满足数量24")]
public decimal? QuantityMeet24 { get; set; }
/// <summary>
/// 满足数量25,
/// </summary>
[ExporterHeader(DisplayName = "满足数量25")]
[ImporterHeader(Name = "满足数量25")]
public decimal? QuantityMeet25 { get; set; }
/// <summary>
/// 满足数量26,
/// </summary>
[ExporterHeader(DisplayName = "满足数量26")]
[ImporterHeader(Name = "满足数量26")]
public decimal? QuantityMeet26 { get; set; }
/// <summary>
/// 满足数量27,
/// </summary>
[ExporterHeader(DisplayName = "满足数量27")]
[ImporterHeader(Name = "满足数量27")]
public decimal? QuantityMeet27 { get; set; }
/// <summary>
/// 满足数量28,
/// </summary>
[ExporterHeader(DisplayName = "满足数量28")]
[ImporterHeader(Name = "满足数量28")]
public decimal? QuantityMeet28 { get; set; }
/// <summary>
/// 满足数量29,
/// </summary>
[ExporterHeader(DisplayName = "满足数量29")]
[ImporterHeader(Name = "满足数量29")]
public decimal? QuantityMeet29 { get; set; }
/// <summary>
/// 满足数量30,
/// </summary>
[ExporterHeader(DisplayName = "满足数量30")]
[ImporterHeader(Name = "满足数量30")]
public decimal? QuantityMeet30 { get; set; }
/// <summary>
/// 满足数量31,
/// </summary>
[ExporterHeader(DisplayName = "满足数量31")]
[ImporterHeader(Name = "满足数量31")]
public decimal? QuantityMeet31 { get; set; }
}
}

138
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_MMRP_DTO.cs

@ -0,0 +1,138 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// M+6月物料需求计划风险确认
/// </summary>
public class SUPPLIER_CON_MMRP_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 需求发布版次,取自M+6月物料需求计划接口中的需求发布版次,针对与这个版次的需求进行风险反馈
/// </summary>
[ExporterHeader(DisplayName = "需求发布版次")]
[ImporterHeader(Name = "需求发布版次")]
public string ReleaseEdition { get; set; }
/// <summary>
/// 零件号,奇瑞零件号
/// </summary>
[ExporterHeader(DisplayName = "零件号")]
[ImporterHeader(Name = "零件号")]
public string MaterialCode { get; set; }
/// <summary>
/// 工厂代码,
/// </summary>
[ExporterHeader(DisplayName = "工厂代码,")]
[ImporterHeader(Name = "工厂代码,")]
public string PlantId { get; set; }
/// <summary>
/// 反馈结果,1-异常;0-无异常(匹配峰值需求缺口,如果可满足峰值,即选择无异常)
/// </summary>
[ExporterHeader(DisplayName = "反馈结果")]
[ImporterHeader(Name = "反馈结果")]
public string FeedbackResults { get; set; }
/// <summary>
/// 风险类型,当反馈结果=1时,此字段必输1.生产节拍不足2.人员不足3.原材料不足4.设备异常5.其他
/// </summary>
[ExporterHeader(DisplayName = "风险类型")]
[ImporterHeader(Name = "风险类型")]
public string? VentureType { get; set; }
/// <summary>
/// 具体风险,当反馈结果=1时,此字段必输描述具体风险
/// </summary>
[ExporterHeader(DisplayName = "具体风险")]
[ImporterHeader(Name = "具体风险")]
public string? VentureSpecific { get; set; }
/// <summary>
/// 应对措施,当反馈结果=1时,此字段必输描述具体应对措施
/// </summary>
[ExporterHeader(DisplayName = "应对措施")]
[ImporterHeader(Name = "应对措施")]
public string? Measures { get; set; }
/// <summary>
/// 起始月份-格式:yyyy-MM
/// </summary>
[ExporterHeader(DisplayName = "起始月份")]
[ImporterHeader(Name = "起始月份")]
public string StartMonth { get; set; }
/// <summary>
/// 满足数量1
/// </summary>
[ExporterHeader(DisplayName = "满足数量1")]
[ImporterHeader(Name = "满足数量1")]
public decimal QuantityMeet1 { get; set; }
/// <summary>
/// 满足数量2
/// </summary>
[ExporterHeader(DisplayName = "满足数量2")]
[ImporterHeader(Name = "满足数量2")]
public decimal QuantityMeet2 { get; set; }
/// <summary>
/// 满足数量3
/// </summary>
[ExporterHeader(DisplayName = "满足数量3")]
[ImporterHeader(Name = "满足数量3")]
public decimal QuantityMeet3 { get; set; }
/// <summary>
/// 满足数量4
/// </summary>
[ExporterHeader(DisplayName = "满足数量4")]
[ImporterHeader(Name = "满足数量4")]
public decimal QuantityMeet4 { get; set; }
/// <summary>
/// 满足数量5
/// </summary>
[ExporterHeader(DisplayName = "满足数量5")]
[ImporterHeader(Name = "满足数量5")]
public decimal QuantityMeet5 { get; set; }
/// <summary>
/// 满足数量6
/// </summary>
[ExporterHeader(DisplayName = "满足数量6")]
[ImporterHeader(Name = "满足数量6")]
public decimal QuantityMeet6 { get; set; }
/// <summary>
/// 满足数量7
/// </summary>
[ExporterHeader(DisplayName = "满足数量7")]
[ImporterHeader(Name = "满足数量7")]
public decimal? QuantityMeet7 { get; set; }
/// <summary>
/// 满足数量8
/// </summary>
[ExporterHeader(DisplayName = "满足数量8")]
[ImporterHeader(Name = "满足数量8")]
public decimal? QuantityMeet8 { get; set; }
/// <summary>
/// 满足数量9
/// </summary>
[ExporterHeader(DisplayName = "满足数量9")]
[ImporterHeader(Name = "满足数量9")]
public decimal? QuantityMeet9 { get; set; }
/// <summary>
/// 满足数量10
/// </summary>
[ExporterHeader(DisplayName = "满足数量10")]
[ImporterHeader(Name = "满足数量10")]
public decimal? QuantityMeet10 { get; set; }
/// <summary>
/// 满足数量11
/// </summary>
[ExporterHeader(DisplayName = "满足数量11")]
[ImporterHeader(Name = "满足数量11")]
public decimal? QuantityMeet11 { get; set; }
/// <summary>
/// 满足数量12
/// </summary>
[ExporterHeader(DisplayName = "满足数量12")]
[ImporterHeader(Name = "满足数量12")]
public decimal? QuantityMeet12 { get; set; }
}
}

60
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_PO_DTO.cs

@ -0,0 +1,60 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// 采购订单风险确认
/// </summary>
public class SUPPLIER_CON_PO_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 采购订单号
/// </summary>
[ExporterHeader(DisplayName = "采购订单号")]
[ImporterHeader(Name = "采购订单号")]
public string PurchaseOrder { get; set; }
/// <summary>
/// 行项目号
/// </summary>
[ExporterHeader(DisplayName = "行项目号")]
[ImporterHeader(Name = "行项目号")]
public string SerialNumber { get; set; }
/// <summary>
/// 满足数量
/// </summary>
[ExporterHeader(DisplayName = "满足数量")]
[ImporterHeader(Name = "满足数量")]
public decimal QuantityMeet { get; set; }
/// <summary>
/// 反馈结果,1-异常;0-无异常(匹配峰值需求缺口,如果可满足峰值,即选择无异常)
/// </summary>
[ExporterHeader(DisplayName = "反馈结果")]
[ImporterHeader(Name = "反馈结果")]
public string FeedbackResults { get; set; }
/// <summary>
/// 风险类型,当反馈结果=1时,此字段必输1.生产节拍不足2.人员不足3.原材料不足4.设备异常5.其他
/// </summary>
[ExporterHeader(DisplayName = "风险类型")]
[ImporterHeader(Name = "风险类型")]
public string? VentureType { get; set; }
/// <summary>
/// 具体风险,当反馈结果=1时,此字段必输描述具体风险
/// </summary>
[ExporterHeader(DisplayName = "具体风险")]
[ImporterHeader(Name = "具体风险")]
public string? VentureSpecific { get; set; }
/// <summary>
/// 应对措施,当反馈结果=1时,此字段必输描述具体应对措施
/// </summary>
[ExporterHeader(DisplayName = "应对措施")]
[ImporterHeader(Name = "应对措施")]
public string? Measures { get; set; }
}
}

130
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_EMPLOYEE_DT_DTO.cs

@ -0,0 +1,130 @@
using Magicodes.ExporterAndImporter.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TaskManager.Entity
{
/// <summary>
/// 人员资质信息
/// </summary>
public class SUPPLIER_EMPLOYEE_DT_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 工厂代码
/// </summary>
[ExporterHeader(DisplayName = "工厂代码")]
[ImporterHeader(Name = "工厂代码")]
public string PlantId { get; set; }
/// <summary>
/// 工厂名称
/// </summary>
[ExporterHeader(DisplayName = "工厂名称")]
[ImporterHeader(Name = "工厂名称")]
public string PlantName { get; set; }
/// <summary>
/// 车间代码
/// </summary>
[ExporterHeader(DisplayName = "车间代码")]
[ImporterHeader(Name = "车间代码")]
public string WorkshopId { get; set; }
/// <summary>
/// 车间名称
/// </summary>
[ExporterHeader(DisplayName = "车间名称")]
[ImporterHeader(Name = "车间名称")]
public string WorkshopName { get; set; }
/// <summary>
/// 产线代码
/// </summary>
[ExporterHeader(DisplayName = "产线代码")]
[ImporterHeader(Name = "产线代码")]
public string ProductionLineId { get; set; }
/// <summary>
/// 产线名称
/// </summary>
[ExporterHeader(DisplayName = "产线名称")]
[ImporterHeader(Name = "产线名称")]
public string ProductionLineName { get; set; }
/// <summary>
/// 工位代码
/// </summary>
[ExporterHeader(DisplayName = "工位代码")]
[ImporterHeader(Name = "工位代码")]
public string StationId { get; set; }
/// <summary>
/// 工位名称
/// </summary>
[ExporterHeader(DisplayName = "工位名称")]
[ImporterHeader(Name = "工位名称")]
public string StationName { get; set; }
/// <summary>
/// 工位人员账号
/// </summary>
[ExporterHeader(DisplayName = "工位人员账号")]
[ImporterHeader(Name = "工位人员账号")]
public string OperatorId { get; set; }
/// <summary>
/// 工位人员姓名
/// </summary>
[ExporterHeader(DisplayName = "工位人员姓名")]
[ImporterHeader(Name = "工位人员姓名")]
public string OperatorName { get; set; }
/// <summary>
/// 是否有资质(Y,N)
/// </summary>
[ExporterHeader(DisplayName = "是否有资质(Y,N)")]
[ImporterHeader(Name = "是否有资质(Y,N)")]
public string HaveQuantity { get; set; }
/// <summary>
/// 供应商修改时间,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "供应商修改时间")]
[ImporterHeader(Name = "供应商修改时间")]
public string DataUpdateTime { get; set; }
/// <summary>
/// 岗位代码
/// </summary>
[ExporterHeader(DisplayName = "岗位代码")]
[ImporterHeader(Name = "岗位代码")]
public string PositionId { get; set; }
/// <summary>
/// 岗位名称
/// </summary>
[ExporterHeader(DisplayName = "岗位名称")]
[ImporterHeader(Name = "岗位名称")]
public string PositionName { get; set; }
/// <summary>
/// 资质等级(Level_4,Level_3,Level_2,Level_1)
/// </summary>
[ExporterHeader(DisplayName = "资质等级")]
[ImporterHeader(Name = "资质等级")]
public string QualificationLevel { get; set; }
/// <summary>
/// 资质获取时间
/// </summary>
[ExporterHeader(DisplayName = "资质获取时间")]
[ImporterHeader(Name = "资质获取时间")]
public string CheckInTime { get; set; }
/// <summary>
/// 资质失去时间
/// </summary>
[ExporterHeader(DisplayName = "资质失去时间")]
[ImporterHeader(Name = "资质失去时间")]
public string CheckOutTime { get; set; }
}
}

125
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_INFO_DT_DTO.cs

@ -0,0 +1,125 @@
using Magicodes.ExporterAndImporter.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TaskManager.Entity
{
/// <summary>
/// 供应商基础信息
/// </summary>
public class SUPPLIER_INFO_DT_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 工厂代码
/// </summary>
[ExporterHeader(DisplayName = "工厂代码")]
[ImporterHeader(Name = "工厂代码")]
public string PlantId { get; set; }
/// <summary>
/// 工厂名称
/// </summary>
[ExporterHeader(DisplayName = "工厂名称")]
[ImporterHeader(Name = "工厂名称")]
public string PlantName { get; set; }
/// <summary>
/// 车间代码
/// </summary>
[ExporterHeader(DisplayName = "车间代码")]
[ImporterHeader(Name = "车间代码")]
public string WorkshopId { get; set; }
/// <summary>
/// 车间名称
/// </summary>
[ExporterHeader(DisplayName = "车间名称")]
[ImporterHeader(Name = "车间名称")]
public string WorkshopName { get; set; }
/// <summary>
/// 产线代码
/// </summary>
[ExporterHeader(DisplayName = "产线代码")]
[ImporterHeader(Name = "产线代码")]
public string ProductionLineId { get; set; }
/// <summary>
/// 产线名称
/// </summary>
[ExporterHeader(DisplayName = "产线名称")]
[ImporterHeader(Name = "产线名称")]
public string ProductionLineName { get; set; }
/// <summary>
/// 工位代码
/// </summary>
[ExporterHeader(DisplayName = "工位代码")]
[ImporterHeader(Name = "工位代码")]
public string StationId { get; set; }
/// <summary>
/// 工位名称
/// </summary>
[ExporterHeader(DisplayName = "工位名称")]
[ImporterHeader(Name = "工位名称")]
public string StationName { get; set; }
/// <summary>
/// 是否关键工位(Y/N)
/// </summary>
[ExporterHeader(DisplayName = "是否关键工位(Y/N)")]
[ImporterHeader(Name = "是否关键工位(Y/N)")]
public string KeyStation { get; set; }
/// <summary>
/// 供应商修改时间,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "供应商修改时间")]
[ImporterHeader(Name = "供应商修改时间")]
public string DataUpdateTime { get; set; }
/// <summary>
/// 产线顺序
/// </summary>
[ExporterHeader(DisplayName = "产线顺序")]
[ImporterHeader(Name = "产线顺序")]
public decimal ProductionLineOrder { get; set; }
/// <summary>
/// 工位顺序
/// </summary>
[ExporterHeader(DisplayName = "工位顺序")]
[ImporterHeader(Name = "工位顺序")]
public decimal StationOrder { get; set; }
/// <summary>
/// 供应商总成零件号
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件号")]
[ImporterHeader(Name = "供应商总成零件号")]
public string VendorProductNo { get; set; }
/// <summary>
/// 供应商总成零件名称
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件名称")]
[ImporterHeader(Name = "供应商总成零件名称")]
public string VendorProductName { get; set; }
/// <summary>
/// 奇瑞零件号
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件号")]
[ImporterHeader(Name = "奇瑞零件号")]
public string CheryProductNo { get; set; }
/// <summary>
/// 奇瑞零件名称
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件名称")]
[ImporterHeader(Name = "奇瑞零件名称")]
public string CheryProductName { get; set; }
}
}

115
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_ATTACHMENT_DATA_DTO.cs

@ -0,0 +1,115 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// 附件类数据
/// </summary>
public class SUPPLIER_PRO_ATTACHMENT_DATA_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 数据类型(1产前管理;2人员资质;3监控视频)
/// </summary>
[ExporterHeader(DisplayName = "数据类型")]
[ImporterHeader(Name = "数据类型")]
public string Type { get; set; }
/// <summary>
/// 文件名
/// </summary>
[ExporterHeader(DisplayName = "文件名")]
[ImporterHeader(Name = "文件名")]
public string FileName { get; set; }
/// <summary>
/// 图文地址
/// </summary>
[ExporterHeader(DisplayName = "图文地址")]
[ImporterHeader(Name = "图文地址")]
public string FileUrl { get; set; }
/// <summary>
/// 生成时间,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "生成时间")]
[ImporterHeader(Name = "生成时间")]
public string DateTime { get; set; }
/// <summary>
/// 产线名称
/// </summary>
[ExporterHeader(DisplayName = "产线名称")]
[ImporterHeader(Name = "产线名称")]
public string ProductionLineName { get; set; }
/// <summary>
/// 产线代码
/// </summary>
[ExporterHeader(DisplayName = "产线代码")]
[ImporterHeader(Name = "产线代码")]
public string ProductionLineId { get; set; }
/// <summary>
/// 工位名称
/// </summary>
[ExporterHeader(DisplayName = "工位名称")]
[ImporterHeader(Name = "工位名称")]
public string StationName { get; set; }
/// <summary>
/// 工位代码
/// </summary>
[ExporterHeader(DisplayName = "工位代码")]
[ImporterHeader(Name = "工位代码")]
public string StationId { get; set; }
/// <summary>
/// 设备名称
/// </summary>
[ExporterHeader(DisplayName = "设备名称")]
[ImporterHeader(Name = "设备名称")]
public string DeviceName { get; set; }
/// <summary>
/// 设备编码
/// </summary>
[ExporterHeader(DisplayName = "设备编码")]
[ImporterHeader(Name = "设备编码")]
public string? DeviceId { get; set; }
/// <summary>
/// 供应商总成零件号
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件号")]
[ImporterHeader(Name = "供应商总成零件号")]
public string VendorProductNo { get; set; }
/// <summary>
/// 供应商总成零件名称
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件名称")]
[ImporterHeader(Name = "供应商总成零件名称")]
public string VendorProductName { get; set; }
/// <summary>
/// 奇瑞零件号
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件号")]
[ImporterHeader(Name = "奇瑞零件号")]
public string CheryProductNo { get; set; }
/// <summary>
/// 奇瑞零件名称
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件名称")]
[ImporterHeader(Name = "奇瑞零件名称")]
public string CheryProductName { get; set; }
/// <summary>
/// 供应商总成SN码
/// </summary>
[ExporterHeader(DisplayName = "供应商总成SN码")]
[ImporterHeader(Name = "供应商总成SN码")]
public string? VendorProductSn { get; set; }
}
}

115
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_ENVIRONMENT_DTO.cs

@ -0,0 +1,115 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// 环境业务数据
/// </summary>
public class SUPPLIER_PRO_ENVIRONMENT_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 工厂代码
/// </summary>
[ExporterHeader(DisplayName = "工厂代码")]
[ImporterHeader(Name = "工厂代码")]
public string PlantId { get; set; }
/// <summary>
/// 工厂名称
/// </summary>
[ExporterHeader(DisplayName = "工厂名称")]
[ImporterHeader(Name = "工厂名称")]
public string PlantName { get; set; }
/// <summary>
/// 车间代码
/// </summary>
[ExporterHeader(DisplayName = "车间代码")]
[ImporterHeader(Name = "车间代码")]
public string WorkshopId { get; set; }
/// <summary>
/// 车间名称
/// </summary>
[ExporterHeader(DisplayName = "车间名称")]
[ImporterHeader(Name = "车间名称")]
public string WorkshopName { get; set; }
/// <summary>
/// 产线代码
/// </summary>
[ExporterHeader(DisplayName = "产线代码")]
[ImporterHeader(Name = "产线代码")]
public string ProductionLineId { get; set; }
/// <summary>
/// 产线名称
/// </summary>
[ExporterHeader(DisplayName = "产线名称")]
[ImporterHeader(Name = "产线名称")]
public string ProductionLineName { get; set; }
/// <summary>
/// 环境指标名称,例如:温度、湿度、洁净度等
/// </summary>
[ExporterHeader(DisplayName = "环境指标名称")]
[ImporterHeader(Name = "环境指标名称")]
public string EnvIndicatorName { get; set; }
/// <summary>
/// 指标实测值,(最大支持11位整数+5位小数)
/// </summary>
[ExporterHeader(DisplayName = "指标实测值")]
[ImporterHeader(Name = "指标实测值")]
public decimal? NumValue { get; set; }
/// <summary>
/// 上限值,(最大支持11位整数+5位小数)
/// </summary>
[ExporterHeader(DisplayName = "上限值")]
[ImporterHeader(Name = "上限值")]
public decimal UpperLimit { get; set; }
/// <summary>
/// 下限值,(最大支持11位整数+5位小数)
/// </summary>
[ExporterHeader(DisplayName = "下限值")]
[ImporterHeader(Name = "下限值")]
public decimal LowerLimit { get; set; }
/// <summary>
/// 单位,相应的单位名称,如度数
/// </summary>
[ExporterHeader(DisplayName = "单位")]
[ImporterHeader(Name = "单位")]
public string ChineseUnit { get; set; }
/// <summary>
/// 采集仪器代码,环境采集的仪器/工具代码
/// </summary>
[ExporterHeader(DisplayName = "采集仪器代码")]
[ImporterHeader(Name = "采集仪器代码")]
public string EquipmentCode { get; set; }
/// <summary>
/// 采集仪器名称,环境采集的仪器/工具名称
/// </summary>
[ExporterHeader(DisplayName = "采集仪器名称")]
[ImporterHeader(Name = "采集仪器名称")]
public string EquipmentName { get; set; }
/// <summary>
/// 数据采集的点位
/// </summary>
[ExporterHeader(DisplayName = "数据采集的点位")]
[ImporterHeader(Name = "数据采集的点位")]
public string? DataCollectionPoint { get; set; }
/// <summary>
/// 数据采集的时间,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "数据采集的时间")]
[ImporterHeader(Name = "数据采集的时间")]
public string CollectTime { get; set; }
}
}

179
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_FLAW_DTO.cs

@ -0,0 +1,179 @@
using Magicodes.ExporterAndImporter.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// 缺陷业务数据
/// </summary>
public class SUPPLIER_PRO_FLAW_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 工厂代码
/// </summary>
[ExporterHeader(DisplayName = "工厂代码")]
[ImporterHeader(Name = "工厂代码")]
public string PlantId { get; set; }
/// <summary>
/// 工厂名称
/// </summary>
[ExporterHeader(DisplayName = "工厂名称")]
[ImporterHeader(Name = "工厂名称")]
public string PlantName { get; set; }
/// <summary>
/// 车间代码
/// </summary>
[ExporterHeader(DisplayName = "车间代码")]
[ImporterHeader(Name = "车间代码")]
public string WorkshopId { get; set; }
/// <summary>
/// 车间名称
/// </summary>
[ExporterHeader(DisplayName = "车间名称")]
[ImporterHeader(Name = "车间名称")]
public string WorkshopName { get; set; }
/// <summary>
/// 产线代码
/// </summary>
[ExporterHeader(DisplayName = "产线代码")]
[ImporterHeader(Name = "产线代码")]
public string ProductionLineId { get; set; }
/// <summary>
/// 产线名称
/// </summary>
[ExporterHeader(DisplayName = "产线名称")]
[ImporterHeader(Name = "产线名称")]
public string ProductionLineName { get; set; }
/// <summary>
/// 工位代码
/// </summary>
[ExporterHeader(DisplayName = "工位代码")]
[ImporterHeader(Name = "工位代码")]
public string StationId { get; set; }
/// <summary>
/// 工位名称
/// </summary>
[ExporterHeader(DisplayName = "工位名称")]
[ImporterHeader(Name = "工位名称")]
public string StationName { get; set; }
/// <summary>
/// 缺陷代码
/// </summary>
[ExporterHeader(DisplayName = "缺陷代码")]
[ImporterHeader(Name = "缺陷代码")]
public string DefectsCode { get; set; }
/// <summary>
/// 缺陷名称
/// </summary>
[ExporterHeader(DisplayName = "缺陷名称")]
[ImporterHeader(Name = "缺陷名称")]
public string DefectsName { get; set; }
/// <summary>
/// 缺陷分类(外观,尺寸,材料,功能,性能,其他)
/// </summary>
[ExporterHeader(DisplayName = "缺陷分类")]
[ImporterHeader(Name = "缺陷分类")]
public string ClassOfName { get; set; }
/// <summary>
/// 供应商总成零件号
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件号")]
[ImporterHeader(Name = "供应商总成零件号")]
public string VendorProductNo { get; set; }
/// <summary>
/// 供应商总成零件名称
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件名称")]
[ImporterHeader(Name = "供应商总成零件名称")]
public string VendorProductName { get; set; }
/// <summary>
/// 供应商总成批次号
/// </summary>
[ExporterHeader(DisplayName = "供应商总成批次号")]
[ImporterHeader(Name = "供应商总成批次号")]
public string VendorProductBatch { get; set; }
/// <summary>
/// 供应商总成SN码
/// </summary>
[ExporterHeader(DisplayName = "供应商总成SN码")]
[ImporterHeader(Name = "供应商总成SN码")]
public string VendorProductSn { get; set; }
/// <summary>
/// 奇瑞零件号
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件号")]
[ImporterHeader(Name = "奇瑞零件号")]
public string CheryProductNo { get; set; }
/// <summary>
/// 奇瑞零件名称
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件名称")]
[ImporterHeader(Name = "奇瑞零件名称")]
public string CheryProductName { get; set; }
/// <summary>
/// 奇瑞SN码
/// </summary>
[ExporterHeader(DisplayName = "奇瑞SN码")]
[ImporterHeader(Name = "奇瑞SN码")]
public string CheryProductSn { get; set; }
/// <summary>
/// 生产批次号
/// </summary>
[ExporterHeader(DisplayName = "生产批次号")]
[ImporterHeader(Name = "生产批次号")]
public string ProductBatchNo { get; set; }
/// <summary>
/// 生产工单号,或生产批次(工单业务数据)
/// </summary>
[ExporterHeader(DisplayName = "生产工单号")]
[ImporterHeader(Name = "生产工单号")]
public string ManufactureNo { get; set; }
/// <summary>
/// 班次(白班,晚班,中班)
/// </summary>
[ExporterHeader(DisplayName = "班次")]
[ImporterHeader(Name = "班次")]
public string WorkShift { get; set; }
/// <summary>
/// 缺陷件数
/// </summary>
[ExporterHeader(DisplayName = "缺陷件数")]
[ImporterHeader(Name = "缺陷件数")]
public decimal Numberofdefect { get; set; }
/// <summary>
/// 缺陷描述
/// </summary>
[ExporterHeader(DisplayName = "缺陷描述")]
[ImporterHeader(Name = "缺陷描述")]
public string DefectsDesc { get; set; }
/// <summary>
/// 缺陷等级,(1.严重、2.一般、3.轻微)
/// </summary>
[ExporterHeader(DisplayName = "缺陷等级")]
[ImporterHeader(Name = "缺陷等级")]
public string DefectsLevel { get; set; }
/// <summary>
/// 缺陷录入时间,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "缺陷录入时间")]
[ImporterHeader(Name = "缺陷录入时间")]
public string StatisticalTime { get; set; }
}
}

132
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_MATERIAL_DATA_DTO.cs

@ -0,0 +1,132 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// 物料主数据
/// </summary>
public class SUPPLIER_PRO_MATERIAL_DATA_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 供应商物料号
/// </summary>
[ExporterHeader(DisplayName = "供应商物料号")]
[ImporterHeader(Name = "供应商物料号")]
public string VendorProductNo { get; set; }
/// <summary>
/// 供应商物料名称
/// </summary>
[ExporterHeader(DisplayName = "供应商物料名称")]
[ImporterHeader(Name = "供应商物料名称")]
public string VendorProductName { get; set; }
/// <summary>
/// 类型(成品,半成品,原材料)
/// </summary>
[ExporterHeader(DisplayName = "类型")]
[ImporterHeader(Name = "类型")]
public decimal Type { get; set; }
/// <summary>
/// 供应商零件版本号
/// </summary>
[ExporterHeader(DisplayName = "供应商零件版本号")]
[ImporterHeader(Name = "供应商零件版本号")]
public string? VendorHardwareRevision { get; set; }
/// <summary>
/// 奇瑞零件号
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件号")]
[ImporterHeader(Name = "奇瑞零件号")]
public string CheryProductNo { get; set; }
/// <summary>
/// 奇瑞零件名称
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件名称")]
[ImporterHeader(Name = "奇瑞零件名称")]
public string CheryProductName { get; set; }
/// <summary>
/// 奇瑞硬件版本号
/// </summary>
[ExporterHeader(DisplayName = "奇瑞硬件版本号")]
[ImporterHeader(Name = "奇瑞硬件版本号")]
public string OemHardwareRevision { get; set; }
/// <summary>
/// 奇瑞软件版本号
/// </summary>
[ExporterHeader(DisplayName = "奇瑞软件版本号")]
[ImporterHeader(Name = "奇瑞软件版本号")]
public string? OemSoftwareRevision { get; set; }
/// <summary>
/// 车型
/// </summary>
[ExporterHeader(DisplayName = "车型")]
[ImporterHeader(Name = "车型")]
public string? OemModel { get; set; }
/// <summary>
/// 项目名称
/// </summary>
[ExporterHeader(DisplayName = "项目名称")]
[ImporterHeader(Name = "项目名称")]
public string? OemProjectName { get; set; }
/// <summary>
/// 是否SOP(Y/N)
/// </summary>
[ExporterHeader(DisplayName = "是否SOP")]
[ImporterHeader(Name = "是否SOP")]
public string? Launched { get; set; }
/// <summary>
/// 数据同步执行时间,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "数据同步执行时间")]
[ImporterHeader(Name = "数据同步执行时间")]
public string? DateTime { get; set; }
/// <summary>
/// 供应商工厂代码
/// </summary>
[ExporterHeader(DisplayName = "供应商工厂代码")]
[ImporterHeader(Name = "供应商工厂代码")]
public string? PlantId { get; set; }
/// <summary>
/// 供应商工厂名称
/// </summary>
[ExporterHeader(DisplayName = "供应商工厂名称")]
[ImporterHeader(Name = "供应商工厂名称")]
public string? PlantName { get; set; }
/// <summary>
/// 芯片采购类型(AVAP,CS,CMcontro)
/// </summary>
[ExporterHeader(DisplayName = "芯片采购类型")]
[ImporterHeader(Name = "芯片采购类型")]
public string? ProcurementType { get; set; }
/// <summary>
/// 芯片MPN标识码
/// </summary>
[ExporterHeader(DisplayName = "芯片MPN标识码")]
[ImporterHeader(Name = "芯片MPN标识码")]
public string? MpnCode { get; set; }
/// <summary>
/// 芯片MPN标识名称
/// </summary>
[ExporterHeader(DisplayName = "芯片MPN标识名称")]
[ImporterHeader(Name = "芯片MPN标识名称")]
public string? MpnName { get; set; }
/// <summary>
/// 物料有效期(天)
/// </summary>
[ExporterHeader(DisplayName = "物料有效期")]
[ImporterHeader(Name = "物料有效期")]
public string ValidDays { get; set; }
}
}

150
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_OEE_ACHIEVEMENT_RATE_DTO.cs

@ -0,0 +1,150 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// 设备OEE达成率
/// </summary>
public class SUPPLIER_PRO_OEE_ACHIEVEMENT_RATE_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 工厂代码
/// </summary>
[ExporterHeader(DisplayName = "工厂代码")]
[ImporterHeader(Name = "工厂代码")]
public string PlantId { get; set; }
/// <summary>
/// 工厂名称
/// </summary>
[ExporterHeader(DisplayName = "工厂名称")]
[ImporterHeader(Name = "工厂名称")]
public string PlantName { get; set; }
/// <summary>
/// 车间代码
/// </summary>
[ExporterHeader(DisplayName = "车间代码")]
[ImporterHeader(Name = "车间代码")]
public string WorkshopId { get; set; }
/// <summary>
/// 车间名称
/// </summary>
[ExporterHeader(DisplayName = "车间名称")]
[ImporterHeader(Name = "车间名称")]
public string WorkshopName { get; set; }
/// <summary>
/// 产线代码
/// </summary>
[ExporterHeader(DisplayName = "产线代码")]
[ImporterHeader(Name = "产线代码")]
public string ProductionLineId { get; set; }
/// <summary>
/// 产线名称
/// </summary>
[ExporterHeader(DisplayName = "产线名称")]
[ImporterHeader(Name = "产线名称")]
public string ProductionLineName { get; set; }
/// <summary>
/// 工位代码
/// </summary>
[ExporterHeader(DisplayName = "工位代码")]
[ImporterHeader(Name = "工位代码")]
public string StationId { get; set; }
/// <summary>
/// 工位名称
/// </summary>
[ExporterHeader(DisplayName = "工位名称")]
[ImporterHeader(Name = "工位名称")]
public string StationName { get; set; }
/// <summary>
/// 设备代码
/// </summary>
[ExporterHeader(DisplayName = "设备代码")]
[ImporterHeader(Name = "设备代码")]
public string DeviceId { get; set; }
/// <summary>
/// 设备名称
/// </summary>
[ExporterHeader(DisplayName = "设备名称")]
[ImporterHeader(Name = "设备名称")]
public string? DeviceName { get; set; }
/// <summary>
/// 奇瑞零件号
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件号")]
[ImporterHeader(Name = "奇瑞零件号")]
public string CheryProductNo { get; set; }
/// <summary>
/// 奇瑞零件名称
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件名称")]
[ImporterHeader(Name = "奇瑞零件名称")]
public string CheryProductName { get; set; }
/// <summary>
/// 供应商总成零件号
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件号")]
[ImporterHeader(Name = "供应商总成零件号")]
public string VendorProductNo { get; set; }
/// <summary>
/// 供应商总成零件名称
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件名称")]
[ImporterHeader(Name = "供应商总成零件名称")]
public string VendorProductName { get; set; }
/// <summary>
/// 生产批次号
/// </summary>
[ExporterHeader(DisplayName = "生产批次号")]
[ImporterHeader(Name = "生产批次号")]
public string ProductBatchNo { get; set; }
/// <summary>
/// 生产工单号
/// </summary>
[ExporterHeader(DisplayName = "生产工单号")]
[ImporterHeader(Name = "生产工单号")]
public string ManufactureNo { get; set; }
/// <summary>
/// OEE实际值
/// </summary>
[ExporterHeader(DisplayName = "OEE实际值")]
[ImporterHeader(Name = "OEE实际值")]
public decimal Rate { get; set; }
/// <summary>
/// OEE目标值
/// </summary>
[ExporterHeader(DisplayName = "OEE目标值")]
[ImporterHeader(Name = "OEE目标值")]
public decimal RateTagValue { get; set; }
/// <summary>
/// 班次(白班,晚班,中班)
/// </summary>
[ExporterHeader(DisplayName = "班次")]
[ImporterHeader(Name = "班次")]
public string WorkShift { get; set; }
/// <summary>
/// 生产日期,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "生产日期")]
[ImporterHeader(Name = "生产日期")]
public string StatisticalTime { get; set; }
/// <summary>
/// 值统计时间,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "值统计时间")]
[ImporterHeader(Name = "值统计时间")]
public string DateTime { get; set; }
}
}

120
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_OEE_TIME_DETAILS_DTO.cs

@ -0,0 +1,120 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// OEE时间明细
/// </summary>
public class SUPPLIER_PRO_OEE_TIME_DETAILS_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 工厂代码
/// </summary>
[ExporterHeader(DisplayName = "工厂代码")]
[ImporterHeader(Name = "工厂代码")]
public string PlantId { get; set; }
/// <summary>
/// 工厂名称
/// </summary>
[ExporterHeader(DisplayName = "工厂名称")]
[ImporterHeader(Name = "工厂名称")]
public string PlantName { get; set; }
/// <summary>
/// 车间代码
/// </summary>
[ExporterHeader(DisplayName = "车间代码")]
[ImporterHeader(Name = "车间代码")]
public string WorkshopId { get; set; }
/// <summary>
/// 车间名称
/// </summary>
[ExporterHeader(DisplayName = "")]
[ImporterHeader(Name = "")]
public string? WorkshopName { get; set; }
/// <summary>
/// 产线代码
/// </summary>
[ExporterHeader(DisplayName = "产线代码")]
[ImporterHeader(Name = "产线代码")]
public string ProductionLineId { get; set; }
/// <summary>
/// 产线名称
/// </summary>
[ExporterHeader(DisplayName = "产线名称")]
[ImporterHeader(Name = "产线名称")]
public string? ProductionLineName { get; set; }
/// <summary>
/// 工位代码
/// </summary>
[ExporterHeader(DisplayName = "工位代码")]
[ImporterHeader(Name = "工位代码")]
public string StationId { get; set; }
/// <summary>
/// 工位名称
/// </summary>
[ExporterHeader(DisplayName = "工位名称")]
[ImporterHeader(Name = "工位名称")]
public string StationName { get; set; }
/// <summary>
/// 设备代码
/// </summary>
[ExporterHeader(DisplayName = "设备代码")]
[ImporterHeader(Name = "设备代码")]
public string DeviceId { get; set; }
/// <summary>
/// 设备名称
/// </summary>
[ExporterHeader(DisplayName = "设备名称")]
[ImporterHeader(Name = "设备名称")]
public string DeviceName { get; set; }
/// <summary>
/// 记录ID
/// </summary>
[ExporterHeader(DisplayName = "记录ID")]
[ImporterHeader(Name = "记录ID")]
public string RecId { get; set; }
/// <summary>
/// 大类(1计划工作,2计划停机,3非计划停机)
/// </summary>
[ExporterHeader(DisplayName = "大类")]
[ImporterHeader(Name = "大类")]
public string Type { get; set; }
/// <summary>
/// 小类编码
/// </summary>
[ExporterHeader(DisplayName = "小类编码")]
[ImporterHeader(Name = "小类编码")]
public string SubType { get; set; }
/// <summary>
/// 小类描述
/// </summary>
[ExporterHeader(DisplayName = "小类描述")]
[ImporterHeader(Name = "小类描述")]
public string SubTypeName { get; set; }
/// <summary>
/// 开始时间,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "开始时间")]
[ImporterHeader(Name = "开始时间")]
public string StartTime { get; set; }
/// <summary>
/// 结束时间,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "结束时间")]
[ImporterHeader(Name = "结束时间")]
public string EndTime { get; set; }
}
}

126
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_DTO.cs

@ -0,0 +1,126 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// 工艺
/// </summary>
public class SUPPLIER_PRO_PROCESS_DTO
{
/// <summary>
/// 奇瑞零件号
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件号")]
[ImporterHeader(Name = "奇瑞零件号")]
public string CheryProductNo { get; set; }
/// <summary>
/// 奇瑞零件名称
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件名称")]
[ImporterHeader(Name = "奇瑞零件名称")]
public string CheryProductName { get; set; }
/// <summary>
/// 供应商总成零件号
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件号")]
[ImporterHeader(Name = "供应商总成零件号")]
public string VendorProductNo { get; set; }
/// <summary>
/// 供应商总成零件名称
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件名称")]
[ImporterHeader(Name = "供应商总成零件名称")]
public string VendorProductName { get; set; }
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 工艺编码
/// </summary>
[ExporterHeader(DisplayName = "工艺编码")]
[ImporterHeader(Name = "工艺编码")]
public string TechCode { get; set; }
/// <summary>
/// 工艺名称
/// </summary>
[ExporterHeader(DisplayName = "工艺名称")]
[ImporterHeader(Name = "工艺名称")]
public string TechName { get; set; }
/// <summary>
/// 有效期,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "有效期")]
[ImporterHeader(Name = "有效期")]
public string ValidPeriod { get; set; }
/// <summary>
/// 工艺版本
/// </summary>
[ExporterHeader(DisplayName = "工艺版本")]
[ImporterHeader(Name = "工艺版本")]
public string TechVersion { get; set; }
/// <summary>
/// 模具编码
/// </summary>
[ExporterHeader(DisplayName = "模具编码")]
[ImporterHeader(Name = "模具编码")]
public string MoldCode { get; set; }
/// <summary>
/// 模具名称
/// </summary>
[ExporterHeader(DisplayName = "模具名称")]
[ImporterHeader(Name = "模具名称")]
public string MoldName { get; set; }
/// <summary>
/// 最大加工能力
/// </summary>
[ExporterHeader(DisplayName = "最大加工能力")]
[ImporterHeader(Name = "最大加工能力")]
public string MaxProcessingCapacity { get; set; }
/// <summary>
/// 工序编码
/// </summary>
[ExporterHeader(DisplayName = "工序编码")]
[ImporterHeader(Name = "工序编码")]
public string ProcessCode { get; set; }
/// <summary>
/// 工序名称
/// </summary>
[ExporterHeader(DisplayName = "工序名称")]
[ImporterHeader(Name = "工序名称")]
public string ProcessName { get; set; }
/// <summary>
/// 工序顺序号
/// </summary>
[ExporterHeader(DisplayName = "工序顺序号")]
[ImporterHeader(Name = "工序顺序号")]
public decimal ProcessOrder { get; set; }
/// <summary>
/// 设备编码
/// </summary>
[ExporterHeader(DisplayName = "设备编码")]
[ImporterHeader(Name = "设备编码")]
public string DeviceCode { get; set; }
/// <summary>
/// 工序节拍
/// </summary>
[ExporterHeader(DisplayName = "工序节拍")]
[ImporterHeader(Name = "工序节拍")]
public decimal Rhythm { get; set; }
/// <summary>
/// 节拍单位
/// </summary>
[ExporterHeader(DisplayName = "节拍单位")]
[ImporterHeader(Name = "节拍单位")]
public string RhythmUnit { get; set; }
}
}

192
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DTO.cs

@ -0,0 +1,192 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// 工艺装备
/// </summary>
public class SUPPLIER_PRO_PROCESS_EQUIPMENT_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 奇瑞零件号
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件号")]
[ImporterHeader(Name = "奇瑞零件号")]
public string CheryProductNo { get; set; }
/// <summary>
/// 奇瑞零件名称
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件名称")]
[ImporterHeader(Name = "奇瑞零件名称")]
public string CheryProductName { get; set; }
/// <summary>
/// 供应商总成零件号
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件号")]
[ImporterHeader(Name = "供应商总成零件号")]
public string VendorProductNo { get; set; }
/// <summary>
/// 供应商总成零件名称
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件名称")]
[ImporterHeader(Name = "供应商总成零件名称")]
public string VendorProductName { get; set; }
/// <summary>
/// 工艺装备类型分类(1模具;2检具;3夹具)
/// </summary>
[ExporterHeader(DisplayName = "工艺装备类型分类")]
[ImporterHeader(Name = "工艺装备类型分类")]
public decimal DeviceType { get; set; }
/// <summary>
/// 工艺装备编码
/// </summary>
[ExporterHeader(DisplayName = "工艺装备编码")]
[ImporterHeader(Name = "工艺装备编码")]
public string DeviceCode { get; set; }
/// <summary>
/// 工艺装备名称
/// </summary>
[ExporterHeader(DisplayName = "工艺装备名称")]
[ImporterHeader(Name = "工艺装备名称")]
public string DeviceName { get; set; }
/// <summary>
/// 生产厂家
/// </summary>
[ExporterHeader(DisplayName = "生产厂家")]
[ImporterHeader(Name = "生产厂家")]
public string Manufacturer { get; set; }
/// <summary>
/// 工艺装备型号
/// </summary>
[ExporterHeader(DisplayName = "工艺装备型号")]
[ImporterHeader(Name = "工艺装备型号")]
public string ModelNumber { get; set; }
/// <summary>
/// 工艺装备序列号
/// </summary>
[ExporterHeader(DisplayName = "工艺装备序列号")]
[ImporterHeader(Name = "工艺装备序列号")]
public string SerialNumber { get; set; }
/// <summary>
/// 工艺装备制造日期,格式(yyyy-MM-dd)
/// </summary>
[ExporterHeader(DisplayName = "工艺装备制造日期")]
[ImporterHeader(Name = "工艺装备制造日期")]
public string ProductionDate { get; set; }
/// <summary>
/// 主要材质
/// </summary>
[ExporterHeader(DisplayName = "主要材质")]
[ImporterHeader(Name = "主要材质")]
public string Material { get; set; }
/// <summary>
/// 当前存放地点
/// </summary>
[ExporterHeader(DisplayName = "当前存放地点")]
[ImporterHeader(Name = "当前存放地点")]
public string CurrentLocation { get; set; }
/// <summary>
/// 工艺装备状态
/// </summary>
[ExporterHeader(DisplayName = "工艺装备状态")]
[ImporterHeader(Name = "工艺装备状态")]
public string DeviceStatus { get; set; }
/// <summary>
/// 穴腔数量
/// </summary>
[ExporterHeader(DisplayName = "穴腔数量")]
[ImporterHeader(Name = "穴腔数量")]
public decimal CavityCount { get; set; }
/// <summary>
/// 模具尺寸规格
/// </summary>
[ExporterHeader(DisplayName = "模具尺寸规格")]
[ImporterHeader(Name = "模具尺寸规格")]
public string MoldSize { get; set; }
/// <summary>
/// 设计寿命单位
/// </summary>
[ExporterHeader(DisplayName = "设计寿命单位")]
[ImporterHeader(Name = "设计寿命单位")]
public string DesignLifeUnits { get; set; }
/// <summary>
/// 设计寿命
/// </summary>
[ExporterHeader(DisplayName = "设计寿命")]
[ImporterHeader(Name = "设计寿命")]
public string DesignLifeValue { get; set; }
/// <summary>
/// 当前剩余寿命,
/// </summary>
[ExporterHeader(DisplayName = "当前剩余寿命")]
[ImporterHeader(Name = "当前剩余寿命")]
public string CurrentUsageCount { get; set; }
/// <summary>
/// 模具大修次数
/// </summary>
[ExporterHeader(DisplayName = "模具大修次数")]
[ImporterHeader(Name = "模具大修次数")]
public decimal OverhaulCount { get; set; }
/// <summary>
/// 图纸编号描述
/// </summary>
[ExporterHeader(DisplayName = "图纸编号描述")]
[ImporterHeader(Name = "图纸编号描述")]
public string CoolingChannelLayout { get; set; }
/// <summary>
/// 检测精度
/// </summary>
[ExporterHeader(DisplayName = "检测精度")]
[ImporterHeader(Name = "检测精度")]
public string DetectionAccuracy { get; set; }
/// <summary>
/// 最近校准日期,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "最近校准日期")]
[ImporterHeader(Name = "最近校准日期")]
public string CalibrationDate { get; set; }
/// <summary>
/// 校准到期天数
/// </summary>
[ExporterHeader(DisplayName = "校准到期天数")]
[ImporterHeader(Name = "校准到期天数")]
public string CalibrationDueDays { get; set; }
/// <summary>
/// 允许误差范围
/// </summary>
[ExporterHeader(DisplayName = "允许误差范围")]
[ImporterHeader(Name = "允许误差范围")]
public string ToleranceRange { get; set; }
/// <summary>
/// 磨损阈值
/// </summary>
[ExporterHeader(DisplayName = "磨损阈值")]
[ImporterHeader(Name = "磨损阈值")]
public string WearThreshold { get; set; }
/// <summary>
/// 检测范围
/// </summary>
[ExporterHeader(DisplayName = "检测范围")]
[ImporterHeader(Name = "检测范围")]
public string DetectionRange { get; set; }
/// <summary>
/// 检测单位
/// </summary>
[ExporterHeader(DisplayName = "检测单位")]
[ImporterHeader(Name = "检测单位")]
public string UnitType { get; set; }
}
}

192
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT_DTO.cs

@ -0,0 +1,192 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity.Entitys
{
/// <summary>
/// 工艺装备
/// </summary>
public class SUPPLIER_PRO_PROCESS_EQUIPMENT_DT_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 奇瑞零件号
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件号")]
[ImporterHeader(Name = "奇瑞零件号")]
public string CheryProductNo { get; set; }
/// <summary>
/// 奇瑞零件名称
/// </summary>
[ExporterHeader(DisplayName = "奇瑞零件名称")]
[ImporterHeader(Name = "奇瑞零件名称")]
public string CheryProductName { get; set; }
/// <summary>
/// 供应商总成零件号
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件号")]
[ImporterHeader(Name = "供应商总成零件号")]
public string VendorProductNo { get; set; }
/// <summary>
/// 供应商总成零件名称
/// </summary>
[ExporterHeader(DisplayName = "供应商总成零件名称")]
[ImporterHeader(Name = "供应商总成零件名称")]
public string VendorProductName { get; set; }
/// <summary>
/// 工艺装备类型分类(1模具;2检具;3夹具)
/// </summary>
[ExporterHeader(DisplayName = "工艺装备类型分类")]
[ImporterHeader(Name = "工艺装备类型分类")]
public decimal DeviceType { get; set; }
/// <summary>
/// 工艺装备编码
/// </summary>
[ExporterHeader(DisplayName = "工艺装备编码")]
[ImporterHeader(Name = "工艺装备编码")]
public string DeviceCode { get; set; }
/// <summary>
/// 工艺装备名称
/// </summary>
[ExporterHeader(DisplayName = "工艺装备名称")]
[ImporterHeader(Name = "工艺装备名称")]
public string DeviceName { get; set; }
/// <summary>
/// 生产厂家
/// </summary>
[ExporterHeader(DisplayName = "生产厂家")]
[ImporterHeader(Name = "生产厂家")]
public string Manufacturer { get; set; }
/// <summary>
/// 工艺装备型号
/// </summary>
[ExporterHeader(DisplayName = "工艺装备型号")]
[ImporterHeader(Name = "工艺装备型号")]
public string ModelNumber { get; set; }
/// <summary>
/// 工艺装备序列号
/// </summary>
[ExporterHeader(DisplayName = "工艺装备序列号")]
[ImporterHeader(Name = "工艺装备序列号")]
public string SerialNumber { get; set; }
/// <summary>
/// 工艺装备制造日期,格式(yyyy-MM-dd)
/// </summary>
[ExporterHeader(DisplayName = "工艺装备制造日期")]
[ImporterHeader(Name = "工艺装备制造日期")]
public string ProductionDate { get; set; }
/// <summary>
/// 主要材质
/// </summary>
[ExporterHeader(DisplayName = "主要材质")]
[ImporterHeader(Name = "主要材质")]
public string Material { get; set; }
/// <summary>
/// 当前存放地点
/// </summary>
[ExporterHeader(DisplayName = "当前存放地点")]
[ImporterHeader(Name = "当前存放地点")]
public string CurrentLocation { get; set; }
/// <summary>
/// 工艺装备状态
/// </summary>
[ExporterHeader(DisplayName = "工艺装备状态")]
[ImporterHeader(Name = "工艺装备状态")]
public string DeviceStatus { get; set; }
/// <summary>
/// 穴腔数量
/// </summary>
[ExporterHeader(DisplayName = "穴腔数量")]
[ImporterHeader(Name = "穴腔数量")]
public decimal CavityCount { get; set; }
/// <summary>
/// 模具尺寸规格
/// </summary>
[ExporterHeader(DisplayName = "模具尺寸规格")]
[ImporterHeader(Name = "模具尺寸规格")]
public string MoldSize { get; set; }
/// <summary>
/// 设计寿命单位
/// </summary>
[ExporterHeader(DisplayName = "设计寿命单位")]
[ImporterHeader(Name = "设计寿命单位")]
public string DesignLifeUnits { get; set; }
/// <summary>
/// 设计寿命
/// </summary>
[ExporterHeader(DisplayName = "设计寿命")]
[ImporterHeader(Name = "设计寿命")]
public string DesignLifeValue { get; set; }
/// <summary>
/// 当前剩余寿命,
/// </summary>
[ExporterHeader(DisplayName = "当前剩余寿命")]
[ImporterHeader(Name = "当前剩余寿命")]
public string CurrentUsageCount { get; set; }
/// <summary>
/// 模具大修次数
/// </summary>
[ExporterHeader(DisplayName = "模具大修次数")]
[ImporterHeader(Name = "模具大修次数")]
public decimal OverhaulCount { get; set; }
/// <summary>
/// 图纸编号描述
/// </summary>
[ExporterHeader(DisplayName = "图纸编号描述")]
[ImporterHeader(Name = "图纸编号描述")]
public string CoolingChannelLayout { get; set; }
/// <summary>
/// 检测精度
/// </summary>
[ExporterHeader(DisplayName = "检测精度")]
[ImporterHeader(Name = "检测精度")]
public string DetectionAccuracy { get; set; }
/// <summary>
/// 最近校准日期,格式(yyyy-MM-ddHH:mm:ss)
/// </summary>
[ExporterHeader(DisplayName = "最近校准日期")]
[ImporterHeader(Name = "最近校准日期")]
public string CalibrationDate { get; set; }
/// <summary>
/// 校准到期天数
/// </summary>
[ExporterHeader(DisplayName = "校准到期天数")]
[ImporterHeader(Name = "校准到期天数")]
public string CalibrationDueDays { get; set; }
/// <summary>
/// 允许误差范围
/// </summary>
[ExporterHeader(DisplayName = "允许误差范围")]
[ImporterHeader(Name = "允许误差范围")]
public string ToleranceRange { get; set; }
/// <summary>
/// 磨损阈值
/// </summary>
[ExporterHeader(DisplayName = "磨损阈值")]
[ImporterHeader(Name = "磨损阈值")]
public string WearThreshold { get; set; }
/// <summary>
/// 检测范围
/// </summary>
[ExporterHeader(DisplayName = "检测范围")]
[ImporterHeader(Name = "检测范围")]
public string DetectionRange { get; set; }
/// <summary>
/// 检测单位
/// </summary>
[ExporterHeader(DisplayName = "检测单位")]
[ImporterHeader(Name = "检测单位")]
public string UnitType { get; set; }
}
}

90
API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_SINV_DATA_DTO.cs

@ -0,0 +1,90 @@
using Magicodes.ExporterAndImporter.Core;
namespace TaskManager.Entity
{
/// <summary>
/// 供应商共享库存
/// </summary>
public class SUPPLIER_SINV_DATA_DTO
{
/// <summary>
/// 供应商代码
/// </summary>
[ExporterHeader(DisplayName = "供应商代码")]
[ImporterHeader(Name = "供应商代码")]
public string SupplierCode { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
[ExporterHeader(DisplayName = "供应商名称")]
[ImporterHeader(Name = "供应商名称")]
public string SupplierName { get; set; }
/// <summary>
/// 零件号
/// </summary>
[ExporterHeader(DisplayName = "零件号")]
[ImporterHeader(Name = "零件号")]
public string MaterialCode { get; set; }
/// <summary>
/// 零件名称
/// </summary>
[ExporterHeader(DisplayName = "零件名称")]
[ImporterHeader(Name = "零件名称")]
public string MaterialDescription { get; set; }
/// <summary>
/// 物料类型(成品,半成品,原材料)
/// </summary>
[ExporterHeader(DisplayName = "物料类型")]
[ImporterHeader(Name = "物料类型")]
public string MaterialType { get; set; }
/// <summary>
/// 当前库存数量
/// </summary>
[ExporterHeader(DisplayName = "当前库存数量")]
[ImporterHeader(Name = "当前库存数量")]
public decimal QuantityCurrent { get; set; }
/// <summary>
/// 原材料在途数量
/// </summary>
[ExporterHeader(DisplayName = "原材料在途数量")]
[ImporterHeader(Name = "原材料在途数量")]
public decimal QuantityPlan { get; set; }
/// <summary>
/// 库存状态(生产件,呆滞件,备件,KD件)
/// </summary>
[ExporterHeader(DisplayName = "库存状态")]
[ImporterHeader(Name = "库存状态")]
public string InventoryStatus { get; set; }
/// <summary>
/// 安全库存
/// </summary>
[ExporterHeader(DisplayName = "安全库存")]
[ImporterHeader(Name = "安全库存")]
public decimal SafetyStock { get; set; }
/// <summary>
/// 生产/采购周期:成品即半成品为生产周期(天),原材料为采购周期(天)
/// </summary>
[ExporterHeader(DisplayName = "生产/采购周期")]
[ImporterHeader(Name = "生产/采购周期")]
public string ProductionCycle { get; set; }
/// <summary>
/// 库存更新时间-格式:yyyy-MM-ddHH:mm:ss
/// </summary>
[ExporterHeader(DisplayName = "库存更新时间")]
[ImporterHeader(Name = "库存更新时间")]
public string DataUpdateTime { get; set; }
/// <summary>
/// 批次
/// </summary>
[ExporterHeader(DisplayName = "批次")]
[ImporterHeader(Name = "批次")]
public string? SupplierBatch { get; set; }
/// <summary>
/// 有效期截止日期 非必填
/// </summary>
[ExporterHeader(DisplayName = "有效期截止日期")]
[ImporterHeader(Name = "有效期截止日期")]
public string? SupplieryxqDate { get; set; }
}
}

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

@ -5,7 +5,7 @@ namespace TaskManager.Entity.Entitys
/// <summary>
/// M+6月物料需求计划风险确认
/// </summary>
public class SUPPLIER_CON_MMRP : BaseEntity
public class SUPPLIER_CON_MMRP : BaseEntity
{
/// <summary>
/// 供应商代码

68
API/TaskManager.Entity/Entity.cs

@ -197,22 +197,10 @@ namespace TaskManager.Entity
}
public class BaseEntity_NoTask
public class BaseEntity_NoTask: BaseEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[ExporterHeader(IsIgnore = true)]
public long UId { get; set; }
/// <summary>
/// 写状态
/// </summary>
public bool WriteState { get; set; }
[ExporterHeader(IsIgnore = true)]
public bool ReadState { get; set; }
[ExporterHeader(IsIgnore = true)]
public DateTime CreationTime { get; set; }
[ExporterHeader(IsIgnore = true)]
public string? Remark { get; set; }
[NotMapped]
private new Guid TaskId { get; set; }
}
@ -252,7 +240,7 @@ namespace TaskManager.Entity
/// 数据总量(任务处理的数据条目数)
/// </summary>
public int DataCount { get; set; }
[ExporterHeader(DisplayName = "发布客户")]
[ExporterHeader(DisplayName = "客户")]
/// <summary>
/// 发布给那个客户
/// </summary>
@ -476,7 +464,7 @@ namespace TaskManager.Entity
/// </summary>
[JsonPropertyName("version")]
[ExporterHeader(DisplayName = "版本号")]
public int Version { get; set; } = 1;
public int Version { get; set; } =0;
[JsonProperty("omterior")]
[ExporterHeader(DisplayName = "内外饰")] // 推测拼写错误并自定义显示名
@ -549,84 +537,84 @@ namespace TaskManager.Entity
/// </summary>
[JsonPropertyName("quantityDemand1")]
[ExporterHeader(DisplayName = "需求数量1")]
public decimal QuantityDemand1 { get; set; } = 1;
public decimal QuantityDemand1 { get; set; } = 0;
/// <summary>
/// 需求数量2
/// </summary>
[JsonPropertyName("quantityDemand2")]
[ExporterHeader(DisplayName = "需求数量2")]
public decimal QuantityDemand2 { get; set; } = 1;
public decimal QuantityDemand2 { get; set; } = 0;
/// <summary>
/// 需求数量3
/// </summary>
[JsonPropertyName("quantityDemand3")]
[ExporterHeader(DisplayName = "需求数量3")]
public decimal QuantityDemand3 { get; set; } = 1;
public decimal QuantityDemand3 { get; set; } = 0;
/// <summary>
/// 需求数量4
/// </summary>
[JsonPropertyName("quantityDemand4")]
[ExporterHeader(DisplayName = "需求数量4")]
public decimal QuantityDemand4 { get; set; } = 1;
public decimal QuantityDemand4 { get; set; } = 0;
/// <summary>
/// 需求数量5
/// </summary>
[JsonPropertyName("quantityDemand5")]
[ExporterHeader(DisplayName = "需求数量5")]
public decimal QuantityDemand5 { get; set; } = 1;
public decimal QuantityDemand5 { get; set; } = 0;
/// <summary>
/// 需求数量6
/// </summary>
[JsonPropertyName("quantityDemand6")]
[ExporterHeader(DisplayName = "需求数量6")]
public decimal QuantityDemand6 { get; set; } = 1;
public decimal QuantityDemand6 { get; set; } = 0;
/// <summary>
/// 需求数量7
/// </summary>
[JsonPropertyName("quantityDemand7")]
[ExporterHeader(DisplayName = "需求数量7")]
public decimal QuantityDemand7 { get; set; } = 1;
public decimal QuantityDemand7 { get; set; } = 0;
/// <summary>
/// 需求数量8
/// </summary>
[JsonPropertyName("quantityDemand8")]
[ExporterHeader(DisplayName = "需求数量8")]
public decimal QuantityDemand8 { get; set; } = 1;
public decimal QuantityDemand8 { get; set; } = 0;
/// <summary>
/// 需求数量9
/// </summary>
[JsonPropertyName("quantityDemand9")]
[ExporterHeader(DisplayName = "需求数量9")]
public decimal QuantityDemand9 { get; set; } = 1;
public decimal QuantityDemand9 { get; set; } =0;
/// <summary>
/// 需求数量10
/// </summary>
[JsonPropertyName("quantityDemand10")]
[ExporterHeader(DisplayName = "需求数量10")]
public decimal QuantityDemand10 { get; set; } = 1;
public decimal QuantityDemand10 { get; set; } =0;
/// <summary>
/// 需求数量11
/// </summary>
[JsonPropertyName("quantityDemand11")]
[ExporterHeader(DisplayName = "需求数量11")]
public decimal QuantityDemand11 { get; set; } = 1;
public decimal QuantityDemand11 { get; set; } =0;
/// <summary>
/// 需求数量12
/// </summary>
[JsonPropertyName("quantityDemand12")]
[ExporterHeader(DisplayName = "需求数量12")]
public int QuantityDemand12 { get; set; } = 1;
public int QuantityDemand12 { get; set; } =0;
/// <summary>
/// 当文件夹数据发生变更时(更新需求=1/否则=0)
@ -742,13 +730,13 @@ namespace TaskManager.Entity
/// 需求起始日期的需求数量
/// </summary>
[ExporterHeader(DisplayName = "第1天需求数量")]
public int QuantityDemand1 { get; set; } = 1;
public int QuantityDemand1 { get; set; } =0;
/// <summary>
/// 起始日期+1天的需求数量
/// </summary>
[ExporterHeader(DisplayName = "第2天需求数量")]
public int QuantityDemand2 { get; set; } = 1;
public int QuantityDemand2 { get; set; } =0;
/// <summary>
/// 起始日期+2天的需求数量(以此类推)
@ -876,13 +864,13 @@ namespace TaskManager.Entity
/// 删除标识(0=未删除,1=已删除)
/// </summary>
[ExporterHeader(DisplayName = "删除标识")]
public int IsDelete { get; set; } = 1; // 默认已删除(根据原始数据默认值)
public int IsDelete { get; set; } =0; // 默认已删除(根据原始数据默认值)
/// <summary>
/// 数据版本号(乐观锁控制)
/// </summary>
[ExporterHeader(DisplayName = "数据版本号")]
public int Version { get; set; } = 1;
public int Version { get; set; } =0;
@ -1145,7 +1133,7 @@ namespace TaskManager.Entity
/// 到货数量
/// </summary>
[ExporterHeader(DisplayName = "到货数量")]
public int QuantityDelivery { get; set; } = 1;
public int QuantityDelivery { get; set; } =0;
/// <summary>
/// 备注:含批次号信息
@ -1334,13 +1322,13 @@ namespace TaskManager.Entity
/// 是否删除(0:否,1是)
/// </summary>
[ExporterHeader(DisplayName = "删除标记")]
public int IsDelete { get; set; } = 1;
public int IsDelete { get; set; } =0;
/// <summary>
/// 版本号
/// </summary>
[ExporterHeader(DisplayName = "版本号")]
public int Version { get; set; } = 1;
public int Version { get; set; } =0;
@ -1445,13 +1433,13 @@ namespace TaskManager.Entity
/// 是否删除(0:否,1是)
/// </summary>
[ExporterHeader(DisplayName = "删除标记")]
public int IsDelete { get; set; } = 1;
public int IsDelete { get; set; } =0;
/// <summary>
/// 版本号
/// </summary>
[ExporterHeader(DisplayName = "版本号")]
public int Version { get; set; } = 1;
public int Version { get; set; } =0;
@ -1661,7 +1649,7 @@ namespace TaskManager.Entity
/// 数量
/// </summary>
[ExporterHeader(DisplayName = "数量")]
public int QuantityDelivery { get; set; } = 1;
public int QuantityDelivery { get; set; } =0;
/// <summary>
/// 创建时间
@ -2093,7 +2081,7 @@ namespace TaskManager.Entity
/// 在途数量
/// </summary>
[ExporterHeader(DisplayName = "在途数量")]
public decimal? QuantityInTransit { get; set; } = 1;
public decimal? QuantityInTransit { get; set; } =0;
/// <summary>
/// 按时到货比(百分比,如:95表示95%)

8
API/TaskManager.EntityFramework/JobDbContext.cs

@ -1570,7 +1570,7 @@ namespace TaskManager.EntityFramework
b.Property(e => e.ReadState).HasDefaultValue(false);
b.Property(e => e.WriteState).HasDefaultValue(false);
b.HasKey(e => e.UId);
b.Ignore(e => e.TaskId);
});
//人员资质信息
@ -1620,7 +1620,7 @@ namespace TaskManager.EntityFramework
b.Property(e => e.ReadState).HasDefaultValue(false);
b.Property(e => e.WriteState).HasDefaultValue(false);
b.HasKey(e => e.UId);
b.Ignore(e => e.TaskId);
});
//附件类数据
@ -1666,7 +1666,7 @@ namespace TaskManager.EntityFramework
b.Property(e => e.ReadState).HasDefaultValue(false);
b.Property(e => e.WriteState).HasDefaultValue(false);
b.HasKey(e => e.UId);
b.Ignore(e => e.TaskId);
});
//工艺装备
@ -1738,7 +1738,7 @@ namespace TaskManager.EntityFramework
b.Property(e => e.ReadState).HasDefaultValue(false);
b.Property(e => e.WriteState).HasDefaultValue(false);
b.HasKey(e => e.UId);
b.Ignore(e => e.TaskId);
});
#endregion

5223
API/TaskManager.EntityFramework/Migrations/20250604031956_2025060402.Designer.cs

File diff suppressed because it is too large

22
API/TaskManager.EntityFramework/Migrations/20250604031956_2025060402.cs

@ -0,0 +1,22 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace TaskManager.EntityFramework.Migrations
{
/// <inheritdoc />
public partial class _2025060402 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}

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

@ -97,50 +97,50 @@ namespace Wood.Admin.WebApi
services.AddSqlSugar(Configuration);
services.AddHttpClient();
services.AddScoped<LogController>();
//services.AddScoped<LogController>();
services.AddScoped<TaskConifgureController>();
//services.AddScoped<TaskConifgureController>();
// 注册所有需要通过 GetRequiredService 获取的服务
//// 注册所有需要通过 GetRequiredService 获取的服务
// 1. 整车月度生产计划相关
services.AddScoped<SupplierProPlaningService>();
//// 1. 整车月度生产计划相关
//services.AddScoped<SupplierProPlaningService>();
// 2. M+6月物料需求计划相关
services.AddScoped<CherySupplierMrpMonthService>();
//// 2. M+6月物料需求计划相关
//services.AddScoped<CherySupplierMrpMonthService>();
// 3. 日物料需求计划相关
services.AddScoped<CherySupplierMrpDataService>();
//// 3. 日物料需求计划相关
//services.AddScoped<CherySupplierMrpDataService>();
// 4. 计划协议相关
services.AddScoped<CherySupplierSaWeekService>();
//// 4. 计划协议相关
//services.AddScoped<CherySupplierSaWeekService>();
// 5. 采购订单相关
services.AddScoped<CherySupplierPoService>();
//// 5. 采购订单相关
//services.AddScoped<CherySupplierPoService>();
// 6. 过焊装未过总装相关
services.AddScoped<CherySupplierPorHSCHEDULService>();
//// 6. 过焊装未过总装相关
//services.AddScoped<CherySupplierPorHSCHEDULService>();
// 7. 过涂装未过总装相关
services.AddScoped<CherySupplierProTSCHEDULService>(); // 注意类型名是否包含大小写问题(如驼峰命名)
//// 7. 过涂装未过总装相关
//services.AddScoped<CherySupplierProTSCHEDULService>(); // 注意类型名是否包含大小写问题(如驼峰命名)
// 8. 排序供货相关
services.AddScoped<CherySupplierProCSCHEDULService>();
//// 8. 排序供货相关
//services.AddScoped<CherySupplierProCSCHEDULService>();
// 9. 看板配送单相关
services.AddScoped<CherySupplierDelStateService>();
//// 9. 看板配送单相关
//services.AddScoped<CherySupplierDelStateService>();
// 10. 退货单相关
services.AddScoped<CherySupplierReturnService>();
//// 10. 退货单相关
//services.AddScoped<CherySupplierReturnService>();
// 11. 奇瑞RDC共享库存相关
services.AddScoped<SupplierInvDataService>();
//// 11. 奇瑞RDC共享库存相关
//services.AddScoped<SupplierInvDataService>();
// 12. 日MRP预警推移相关
services.AddScoped<CherySupplierMrpWarningService>();
//// 12. 日MRP预警推移相关
//services.AddScoped<CherySupplierMrpWarningService>();
// 13. 供应商共享库存相关
services.AddScoped<CherySupplierSinvDataService>();
//// 13. 供应商共享库存相关
//services.AddScoped<CherySupplierSinvDataService>();
// 14. 风险确认相关服务(如果类型名正确)
@ -217,8 +217,22 @@ namespace Wood.Admin.WebApi
//添加跨域
//services.AddCors();
services.AddCors();
//services.AddCors();
services.AddCors(options =>
{
options.AddPolicy("AllowAll", builder =>
{
builder
.AllowAnyOrigin() // 允许所有来源
.AllowAnyMethod() // 允许所有 HTTP 方法(GET、POST 等)
.AllowAnyHeader(); // 允许所有请求头
});
});
//添加缓存支持
services.AddMemoryCache();
@ -265,10 +279,10 @@ namespace Wood.Admin.WebApi
services.AddAuthorization();
// 添加 Quartz 服务
services.AddQuartz(q =>
{
q.UseSimpleTypeLoader();
});
//services.AddQuartz(q =>
//{
// q.UseSimpleTypeLoader();
//});
//获取所有Service业务层进行扫描注入
//业务层命名格式:Wood.xxx.Service
@ -387,11 +401,15 @@ namespace Wood.Admin.WebApi
//文件拦截中间件
app.UseMiddleware<FileBridgeMiddleware>();
app.UseCors(builder =>
{
builder.WithOrigins(GlobalContext.SystemConfig!.AllowCorsSite.Split(',')).AllowAnyHeader().AllowAnyMethod().AllowCredentials();
});
app.UseRouting();
app.UseCors("AllowAll");
//app.UseCors(builder =>
//{
// builder.WithOrigins(GlobalContext.SystemConfig!.AllowCorsSite.Split(',')).AllowAnyHeader().AllowAnyMethod().AllowCredentials();
//});
app.UseRouting();
// 使用身份验证中间件
app.UseAuthentication();
@ -404,7 +422,7 @@ namespace Wood.Admin.WebApi
});
//启用 自动job
app.UseAutoJob();
//app.UseAutoJob();
//获取所有Service业务层 扫描事件
//业务层命名格式:Wood.xxx.Service

1
API/Wood.Admin.WebApi/Wood.Admin.WebApi.csproj

@ -59,3 +59,4 @@
</ItemGroup>
</Project>

2
API/Wood.Admin.WebApi/appsettings.json

@ -8,7 +8,7 @@
},
"AllowedHosts": "*",
"SystemConfig": {
"AllowCorsSite": "http://127.0.0.1:7005", // 访Api
"AllowCorsSite": "http://127.0.0.1:7005,http://localhost:7005,192.168.1.228:7005,192.168.1.228:7630", // 访Api
"CacheProvider": "Memory", // 使 Memory Redis
"RedisConnectionString": "127.0.0.1:6379", //redis
"EnableInitDb": true, //,

7
API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs

@ -16,6 +16,7 @@ using System.Text.RegularExpressions;
using System.Threading.Tasks;
using TaskManager.Entity;
using TaskManager.EntityFramework;
using Wood.Entity;
@ -23,7 +24,7 @@ using TaskManager.EntityFramework;
namespace TaskManager.Controllers
{
[AllowAnonymous]
public class CheryRecurringJobBaseController :ControllerBase, IDoExecute
public class CheryRecurringJobBaseController :ControllerBase, IDoExecute,IScoped
{
protected string appKey = "8EG566b9bedd2bf46d";
protected string appSecret = "48edc4425647425d87f806a1ba492580";
@ -35,8 +36,6 @@ namespace TaskManager.Controllers
protected virtual string TaskName { set; get; } = "SupplierProPlaning";
protected readonly LogController _logger;
public CheryRecurringJobBaseController(
@ -58,8 +57,6 @@ namespace TaskManager.Controllers
/// <returns>返回DTOJson</returns>
protected async Task<string> Post(string url, string path, string jsonData)
{
try
{
// 生成签名参数

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

@ -1,25 +1,31 @@
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 Azure.Core;
using Dapper;
using Magicodes.ExporterAndImporter.Core.Extension;
using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Omu.ValueInjecter;
using System.Data;
using System.Drawing.Printing;
using System.Linq.Expressions;
using System.Security.Policy;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using TaskManager.Contracts.Dtos;
using TaskManager.Entity;
using TaskManager.EntityFramework;
using TaskManager.EntityFramework.Repository;
using static Dapper.SqlMapper;
namespace TaskManager.Controllers
{
public class CheryRecurringJobInputPageController<T,OUTPUT> : RecurringJobBaseController where T : BaseEntity ,new()
public class CheryRecurringJobInputPageController<T,TDTO> : RecurringJobBaseController
where T : BaseEntity ,new()
where TDTO:class,new()
{
protected readonly IRepository<T> _repository;
public CheryRecurringJobInputPageController(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository<T> repository) : base(httpClient, jobDbContext, log)
@ -27,6 +33,32 @@ namespace TaskManager.Controllers
_repository = repository;
}
/// <summary>
/// 手工发送调用接口
/// </summary>
/// <param name="taskName">任务名称</param>
/// <param name="inputdate">请求日期</param>
/// <param name="client">客户(Chery)</param>
/// <returns></returns>
[HttpGet]
public virtual async Task CustomInvokeAsync(string taskName, string client)
{
var first = _jobDbContext.TaskConifgure.FirstOrDefault(p => p.TaskName == taskName && p.Client == client);
if (first == null)
{
await _logger.AddError($"手工调用接口{taskName}任务没找到", taskName);
return;
}
Url = first.Url;
Path = first.Api;
TaskName = first.TaskName;
Client = client;
await SyncTaskSubTable(TaskName, Client);
}
protected override async Task DoExecutingAsync(string url, string path, string takName, string client)
{
Url = url;
@ -36,7 +68,7 @@ namespace TaskManager.Controllers
await SyncTaskSubTable(TaskName,Client);
}
private async Task<QRReturnInfo> PostPageAsync(PagedRequest<T> t)
private async Task<QRReturnInfo> PostPageAsync(PagedRequest<TDTO> t)
{
try
{
@ -108,20 +140,18 @@ namespace TaskManager.Controllers
private async Task SyncTaskSubTable(string taskName, string client)
{
if (string.IsNullOrEmpty(taskName) || string.IsNullOrEmpty(client))
{
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<T>(querystr);//明细表
if (entites.Any())
@ -129,20 +159,28 @@ namespace TaskManager.Controllers
var total = entites.Count();
int totalPages = (int)Math.Ceiling((double)total / pageSize);
for (int i = 1; i <= totalPages; i++)
for (int i = sub.SyncedPageCount; i <= totalPages; i++)
{
var records = entites.Skip((i - 1) * pageSize)
.Take(pageSize).ToList();
PagedRequest<T> pagedRequest = new PagedRequest<T>()
#region dto转换作为参数发给客户API 因为实体比DTO字段多
List<TDTO> dtos = new List<TDTO>();
foreach (var itm in records)
{
TDTO dto = new TDTO();
dto.InjectFrom(itm);
dtos.Add(dto);
}
PagedRequest<TDTO> pagedRequest = new PagedRequest<TDTO>()
{
batchNo = GenerateRandomStringWith8EG(),
total = entites.Count(),
pageSize = pageSize,
list = records,
list = dtos,
pageNum = i
};
#endregion
foreach (var itm in records)
{
itm.WriteState = true;
@ -217,7 +255,7 @@ namespace TaskManager.Controllers
return new JsonResult(new { Code = 200, Message = "删除成功!" }); ;
}
[HttpGet]
public async Task<ActionResult<PagedResult<T>>> GetPaged(
public async Task<ActionResult> GetPaged(
[FromQuery] int pageNumber = 1,
[FromQuery] int pageSize = 10,
[FromQuery] string sortBy = "",

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

@ -1,20 +1,23 @@
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;
using Microsoft.AspNetCore.Http;
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,9 +34,35 @@ namespace TaskManager.Controllers
{
_repository = repository;
}
protected virtual async Task ConfirmDataInsertAsync(List<T> plist,JobDbContext dbContext, DbTransaction dbTransaction)
{
}
private async Task InsertDataAsync(List<T> 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<List<ToutputDetial>> FetchAllDataAsync(string inputdate)
{
@ -48,8 +77,6 @@ namespace TaskManager.Controllers
{
PagedResponse<ToutputDetial> firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, IsForce = false});
if (firstResponse == null || firstResponse.Code != 200)
{
await _logger.AddError("首次请求失败,无法获取分页信息。", TaskName);
@ -57,12 +84,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<T>().Where(p => p.RequestDate == inputdate).Select(p => p.Id).ToList();//已经同步的ID
@ -94,9 +120,11 @@ namespace TaskManager.Controllers
}
}
_jobDbContext.BulkInsert(pagefirstList);
if (pagefirstList.Any())
{
await InsertDataAsync(pagefirstList);
}
// 计算总页数
int totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
@ -111,7 +139,6 @@ namespace TaskManager.Controllers
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));
@ -126,7 +153,6 @@ namespace TaskManager.Controllers
}
else
{
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
@ -136,27 +162,22 @@ namespace TaskManager.Controllers
allData.Add(itm);
}
}
_jobDbContext.BulkInsert(pageList);
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
{
@ -193,7 +214,6 @@ namespace TaskManager.Controllers
}
else
{
foreach (var itm in firstResponse.Data.Rows)
{
T entity = new T();
@ -203,7 +223,10 @@ namespace TaskManager.Controllers
allData.Add(itm);
}
}
_jobDbContext.BulkInsert(pagefirstList);
if (pagefirstList.Any())
{
await InsertDataAsync(pagefirstList);
}
//Console.WriteLine($"总记录数: {totalItems}, 每页大小: {pageSize}");
// 计算总页数
int totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
@ -232,7 +255,6 @@ namespace TaskManager.Controllers
}
else
{
foreach (var itm in pageResponse.Data.Rows)
{
T entity = new T();
@ -242,8 +264,12 @@ namespace TaskManager.Controllers
allData.Add(itm);
}
}
_jobDbContext.BulkInsert(pageList);
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 +282,8 @@ namespace TaskManager.Controllers
}
}
// 首次请求获取总条数和分页信息
return allData;
}
@ -303,11 +326,26 @@ namespace TaskManager.Controllers
}
}
[NonAction]
public virtual async Task TestAsync(string url, string path, string taskName, string inputdate)
/// <summary>
/// 手工获取调用接口
/// </summary>
/// <param name="taskName">任务名称</param>
/// <param name="inputdate">请求日期</param>
/// <param name="client">客户(Chery)</param>
/// <returns></returns>
[HttpGet]
public virtual async Task CustomInvokeAsync(string taskName, string inputdate,string client)
{
Url = url;
Path = path;
var first= _jobDbContext.TaskConifgure.FirstOrDefault(p => p.TaskName == taskName && p.Client == client);
if (first == null)
{
await _logger.AddError($"手工调用接口{taskName}没找到", taskName);
return;
}
Url =first.Url;
Path = first.Api;
TaskName = taskName;
await FetchAllDataAsync(inputdate);
}
@ -389,7 +427,7 @@ namespace TaskManager.Controllers
/// <param name="filters">过滤条件</param>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult<PagedResult<T>>> GetPaged(
public async Task<ActionResult> GetPaged(
[FromQuery] int pageNumber = 1,
[FromQuery] int pageSize = 10,
[FromQuery] string sortBy = "",
@ -409,7 +447,7 @@ namespace TaskManager.Controllers
Expression<Func<T, bool>> filter = null;
var pagedResult = await _repository.GetPagedAsync(filter, pagingParams);
return Ok(pagedResult);
return Ok(pagedResult);
}
/// <summary>

16
API/Wood.Service/Controllers/CherySupplierConDateService.cs

@ -0,0 +1,16 @@
using TaskManager.Contracts.Dtos;
using TaskManager.Entity.Entitys;
using TaskManager.EntityFramework;
namespace TaskManager.Controllers
{
public class SupplierConDateService : CheryRecurringJobInputPageController<SUPPLIER_CON_DATE, SUPPLIER_CON_DATE_DETAIL_DTO>
{
public SupplierConDateService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository<SUPPLIER_CON_DATE> repository) : base(httpClient, jobDbContext, log, repository)
{
}
}
}

77
API/Wood.Service/Controllers/CherySupplierConMmrpService.cs

@ -0,0 +1,77 @@
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
{
public class CherySupplierConMmrpService : CheryRecurringJobInputPageController<SUPPLIER_CON_MMRP, SUPPLIER_CON_MMRP_DTO>
{
public CherySupplierConMmrpService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository<SUPPLIER_CON_MMRP> repository) : base(httpClient, jobDbContext, log, repository)
{
}
/// <summary>
/// 审批通过
/// </summary>
/// <param name="entites"></param>
/// <returns></returns>
public async Task<ActionResult> Confirm([FromBody] List<SUPPLIER_CON_MMRP> 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 = "修改成功!" });
}
}
}

52
API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs

@ -1,15 +1,63 @@
using TaskManager.Contracts.Dtos;
using Magicodes.ExporterAndImporter.Core;
using System.Data.Common;
using TaskManager.Contracts.Dtos;
using TaskManager.Controllers;
using TaskManager.Entity;
using TaskManager.Entity.Entitys;
using TaskManager.EntityFramework;
using TaskManager.EntityFramework;
using Z.BulkOperations;
namespace TaskManager.Controllers
{
/// <summary>
/// M+6月物料需求计划风险确认
/// </summary>
public class CherySupplierMrpMonthService : CheryRecurringJobOutPageController<SUPPLIER_MRP_MONTH, SUPPLIER_MRP_MONTH_DETAIL_DTO>
{
public CherySupplierMrpMonthService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository<SUPPLIER_MRP_MONTH> repository) : base(httpClient, jobDbContext, log, repository)
{
}
protected override async Task ConfirmDataInsertAsync(List<SUPPLIER_MRP_MONTH> plist, JobDbContext dbContext, DbTransaction dbTransaction)
{
if (plist.Count > 0)
{
List<SUPPLIER_CON_MMRP> list = new List<SUPPLIER_CON_MMRP>();
plist.ForEach(p =>
{
var con = new SUPPLIER_CON_MMRP();
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;
}
}
}

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

@ -17,13 +17,14 @@ using Microsoft.Extensions.DependencyInjection;
using TaskManager.Entity;
using TaskManager.EntityFramework;
using TaskManager.EntityFramework.Repository;
using Wood.Entity;
using Wood.Util;
namespace Wood.Service.Controllers
{
[AllowAnonymous]
public class NormalBaseController<T>:ControllerBase where T:BaseEntity ,new()
public class NormalBaseController<T>:ControllerBase,IScoped where T:BaseEntity ,new()
{
protected readonly JobDbContext _context;
@ -130,7 +131,7 @@ namespace Wood.Service.Controllers
Expression<Func<T, bool>> filter = null;
var pagedResult = await _repository.GetPagedAsync(filter, pagingParams);
return new JsonResult(pagedResult);
return Ok(pagedResult);
}
/// <summary>

6
API/Wood.Service/Controllers/SupplierConDateService.cs

@ -1,6 +0,0 @@
namespace TaskManager.Controllers
{
public class SupplierConDateService
{
}
}

6
API/Wood.Service/Controllers/SupplierConMmrpService.cs

@ -1,6 +0,0 @@
namespace TaskManager.Controllers
{
public class SupplierConMmrpService
{
}
}

250
API/Wood.Service/Controllers/TaskConifgureController.cs

@ -71,164 +71,164 @@ namespace TaskManager.Controllers
/// <summary>
/// 执行铁定任务
/// </summary>
/// <param name="taskName"></param>
/// <returns></returns>
[NonAction]
public async Task testTask(string taskName)
{
var first = await _context.TaskConifgure.FirstOrDefaultAsync(p => p.TaskName == taskName);
var url = first.Url;
var path = first.Api;
var controller = _builder.GetRequiredService<SupplierProPlaningService>();
await controller.TestAsync(url, path, taskName, "2025-04-21");
}
[NonAction]
public async Task TaskAllAsync(string date)
{
var tasks = _context.TaskConifgure.Where(p => p.IsAuto == true && !string.IsNullOrEmpty(p.Corn)
&& !string.IsNullOrEmpty(p.Api) && !string.IsNullOrEmpty(p.Url)).ToList();
foreach (var task in tasks)
{
try
{
var url = task.Url;
var path = task.Api;
var taskname = task.TaskName;
switch (task.TaskName)
{
//case "整车月度生产计划1":
///// <summary>
///// 执行铁定任务
///// </summary>
///// <param name="taskName"></param>
///// <returns></returns>
//[NonAction]
//public async Task testTask(string taskName)
//{
// var first = await _context.TaskConifgure.FirstOrDefaultAsync(p => p.TaskName == taskName);
// var url = first.Url;
// var path = first.Api;
// var controller = _builder.GetRequiredService<SupplierProPlaningService>();
// await controller.TestAsync(url, path, taskName, "2025-04-21");
//}
//[NonAction]
//public async Task TaskAllAsync(string date)
//{
// var tasks = _context.TaskConifgure.Where(p => p.IsAuto == true && !string.IsNullOrEmpty(p.Corn)
// && !string.IsNullOrEmpty(p.Api) && !string.IsNullOrEmpty(p.Url)).ToList();
// foreach (var task in tasks)
// {
// try
// {
// var url = task.Url;
// var path = task.Api;
// var taskname = task.TaskName;
// switch (task.TaskName)
// {
// //case "整车月度生产计划1":
// // 添加的代码块
// var controller1 = _builder.GetRequiredService<SupplierProPlaningService>();
// await controller1.TestAsync(url, path, taskname, "2025-05-29");
// break;
// // // 添加的代码块
// // var controller1 = _builder.GetRequiredService<SupplierProPlaningService>();
// // await controller1.TestAsync(url, path, taskname, "2025-05-29");
// // break;
case "M+6月物料需求计划1":
// case "M+6月物料需求计划1":
// 添加的代码块
var controller2 = _builder.GetRequiredService<CherySupplierMrpMonthService>();
await controller2.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller2 = _builder.GetRequiredService<CherySupplierMrpMonthService>();
// await controller2.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "整车月度生产计划2":
// case "整车月度生产计划2":
// 添加的代码块
var controller3 = _builder.GetRequiredService<SupplierProPlaningService>();
await controller3.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller3 = _builder.GetRequiredService<SupplierProPlaningService>();
// await controller3.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "M+6月物料需求计划2":
// case "M+6月物料需求计划2":
// 添加的代码块
var controller4 = _builder.GetRequiredService<CherySupplierMrpMonthService>();
await controller4.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller4 = _builder.GetRequiredService<CherySupplierMrpMonthService>();
// await controller4.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "日物料需求计划":
// case "日物料需求计划":
// 添加的代码块
var controller5 = _builder.GetRequiredService<CherySupplierMrpDataService>();
await controller5.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller5 = _builder.GetRequiredService<CherySupplierMrpDataService>();
// await controller5.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "计划协议":
// case "计划协议":
// 添加的代码块
var controller6 = _builder.GetRequiredService<CherySupplierSaWeekService>();
await controller6.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller6 = _builder.GetRequiredService<CherySupplierSaWeekService>();
// await controller6.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "采购订单":
// case "采购订单":
// 添加的代码块
var controller7 = _builder.GetRequiredService<CherySupplierPoService>();
await controller7.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller7 = _builder.GetRequiredService<CherySupplierPoService>();
// await controller7.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "过焊装未过总装":
// case "过焊装未过总装":
// 添加的代码块
var controller8 = _builder.GetRequiredService<CherySupplierPorHSCHEDULService>();
await controller8.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller8 = _builder.GetRequiredService<CherySupplierPorHSCHEDULService>();
// await controller8.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "过涂装未过总装":
// case "过涂装未过总装":
// 添加的代码块
var controller9 = _builder.GetRequiredService<CherySupplierProTSCHEDULService>();
await controller9.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller9 = _builder.GetRequiredService<CherySupplierProTSCHEDULService>();
// await controller9.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "排序供货":
// case "排序供货":
// 添加的代码块
var controller10 = _builder.GetRequiredService<CherySupplierProCSCHEDULService>();
await controller10.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller10 = _builder.GetRequiredService<CherySupplierProCSCHEDULService>();
// await controller10.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "看板配送单":
// case "看板配送单":
// 添加的代码块
var controller11 = _builder.GetRequiredService<CherySupplierDelStateService>();
await controller11.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller11 = _builder.GetRequiredService<CherySupplierDelStateService>();
// await controller11.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "退货单":
// case "退货单":
// 添加的代码块
var controller12 = _builder.GetRequiredService<CherySupplierReturnService>();
await controller12.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller12 = _builder.GetRequiredService<CherySupplierReturnService>();
// await controller12.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "奇瑞RDC共享库存":
// case "奇瑞RDC共享库存":
// 添加的代码块
var controller13 = _builder.GetRequiredService<SupplierInvDataService>();
await controller13.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller13 = _builder.GetRequiredService<SupplierInvDataService>();
// await controller13.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "日MRP状态监控":
// case "日MRP状态监控":
// 添加的代码块
var controller14 = _builder.GetRequiredService<CherySupplierMrpDataService>();
await controller14.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller14 = _builder.GetRequiredService<CherySupplierMrpDataService>();
// await controller14.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "日MRP预警推移":
// case "日MRP预警推移":
// 添加的代码块
var controller15 = _builder.GetRequiredService<CherySupplierMrpWarningService>();
await controller15.TestAsync(url, path, taskname, "2025-05-29");
break;
case "供应商共享库存-上午":
// // 添加的代码块
// var controller15 = _builder.GetRequiredService<CherySupplierMrpWarningService>();
// await controller15.TestAsync(url, path, taskname, "2025-05-29");
// break;
// case "供应商共享库存-上午":
// 添加的代码块
var controller19 = _builder.GetRequiredService<CherySupplierSinvDataService>();
await controller19.TestAsync(url, path, taskname, "2025-05-29");
break;
// // 添加的代码块
// var controller19 = _builder.GetRequiredService<CherySupplierSinvDataService>();
// await controller19.TestAsync(url, path, taskname, "2025-05-29");
// break;
case "供应商共享库存-晚上":
// case "供应商共享库存-晚上":
// 添加的代码块
var controller20 = _builder.GetRequiredService<CherySupplierSinvDataService>();
await controller20.TestAsync(url, path, taskname, "2025-05-29");
break;
}
// // 添加的代码块
// var controller20 = _builder.GetRequiredService<CherySupplierSinvDataService>();
// await controller20.TestAsync(url, path, taskname, "2025-05-29");
// break;
// }
}
catch
{
// }
// catch
// {
}
// }
@ -241,8 +241,8 @@ namespace TaskManager.Controllers
}
}
// }
//}
@ -521,7 +521,7 @@ namespace TaskManager.Controllers
);
break;
case "M+6月物料需求计划风险确认":
RecurringJob.AddOrUpdate<SupplierConMmrpService>(
RecurringJob.AddOrUpdate<CherySupplierConMmrpService>(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,

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

@ -19,9 +19,10 @@ namespace Wood.Service.Datas
{
public class SupplierEmployeeDtService : NormalBaseController<SUPPLIER_EMPLOYEE>
public class SupplierEmployeeDtService : NormalBaseController<SUPPLIER_EMPLOYEE_DT>
{
public SupplierEmployeeDtService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<SUPPLIER_EMPLOYEE> repository) : base(context, builder, configuration, repository)
public SupplierEmployeeDtService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<SUPPLIER_EMPLOYEE_DT> repository) : base(context, builder, configuration, repository)
{
}
@ -37,7 +38,7 @@ namespace Wood.Service.Datas
await file.CopyToAsync(memStream);
var importer = new ExcelImporter();
ImportResult<SUPPLIER_EMPLOYEE> impResult = await importer.Import<SUPPLIER_EMPLOYEE>(memStream);
ImportResult<SUPPLIER_EMPLOYEE_DT> impResult = await importer.Import<SUPPLIER_EMPLOYEE_DT>(memStream);
if (impResult.HasError)
{
StringBuilder sb = new StringBuilder();

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

@ -19,9 +19,9 @@ namespace Wood.Service.Datas
{
public class SupplierInfoDtService : NormalBaseController<SUPPLIER_INFO>
public class SupplierInfoDtService : NormalBaseController<SUPPLIER_INFO_DT>
{
public SupplierInfoDtService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<SUPPLIER_INFO> repository) : base(context, builder, configuration, repository)
public SupplierInfoDtService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<SUPPLIER_INFO_DT> repository) : base(context, builder, configuration, repository)
{
}
@ -37,7 +37,7 @@ namespace Wood.Service.Datas
await file.CopyToAsync(memStream);
var importer = new ExcelImporter();
ImportResult<SUPPLIER_INFO> impResult = await importer.Import<SUPPLIER_INFO>(memStream);
ImportResult<SUPPLIER_INFO_DT> impResult = await importer.Import<SUPPLIER_INFO_DT>(memStream);
if (impResult.HasError)
{
StringBuilder sb = new StringBuilder();

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

@ -20,9 +20,9 @@ namespace Wood.Service.Datas
{
public class SupplierProAttachmentDataDtService : NormalBaseController<SUPPLIER_PRO_ATTACHMENT_DATA>
public class SupplierProAttachmentDataDtService : NormalBaseController<SUPPLIER_PRO_ATTACHMENT_DATA_DT>
{
public SupplierProAttachmentDataDtService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<SUPPLIER_PRO_ATTACHMENT_DATA> repository) : base(context, builder, configuration, repository)
public SupplierProAttachmentDataDtService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<SUPPLIER_PRO_ATTACHMENT_DATA_DT> repository) : base(context, builder, configuration, repository)
{
}
@ -38,7 +38,7 @@ namespace Wood.Service.Datas
await file.CopyToAsync(memStream);
var importer = new ExcelImporter();
ImportResult<SUPPLIER_PRO_ATTACHMENT_DATA> impResult = await importer.Import<SUPPLIER_PRO_ATTACHMENT_DATA>(memStream);
ImportResult<SUPPLIER_PRO_ATTACHMENT_DATA_DT> impResult = await importer.Import<SUPPLIER_PRO_ATTACHMENT_DATA_DT>(memStream);
if (impResult.HasError)
{
StringBuilder sb = new StringBuilder();

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

@ -20,9 +20,9 @@ namespace Wood.Service.Datas
{
public class SupplierProProcessEquipmentDtService : NormalBaseController<SUPPLIER_PRO_PROCESS_EQUIPMENT>
public class SupplierProProcessEquipmentDtService : NormalBaseController<SUPPLIER_PRO_PROCESS_EQUIPMENT_DT>
{
public SupplierProProcessEquipmentDtService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<SUPPLIER_PRO_PROCESS_EQUIPMENT> repository) : base(context, builder, configuration, repository)
public SupplierProProcessEquipmentDtService(JobDbContext context, IServiceProvider builder, IConfiguration configuration, IRepository<SUPPLIER_PRO_PROCESS_EQUIPMENT_DT> repository) : base(context, builder, configuration, repository)
{
}
@ -38,7 +38,7 @@ namespace Wood.Service.Datas
await file.CopyToAsync(memStream);
var importer = new ExcelImporter();
ImportResult<SUPPLIER_PRO_PROCESS_EQUIPMENT> impResult = await importer.Import<SUPPLIER_PRO_PROCESS_EQUIPMENT>(memStream);
ImportResult<SUPPLIER_PRO_PROCESS_EQUIPMENT_DT> impResult = await importer.Import<SUPPLIER_PRO_PROCESS_EQUIPMENT_DT>(memStream);
if (impResult.HasError)
{
StringBuilder sb = new StringBuilder();

62
API/Wood.Service/SystemManage/UserService.cs

@ -165,10 +165,64 @@ namespace Wood.Service.SystemManage
throw Oops.Oh("登录失败,没有相关用户信息!");
}
/// <summary>
/// 用户租户登录
/// </summary>
[AllowAnonymous]
/// <summary>
/// 用户登录
/// </summary>
/// <returns>可用租户信息</returns>
[AllowAnonymous]
public async Task<dynamic> LoginExtned(UserLoginParam param)
{
if (!(int.TryParse(param.CaptchaCode, out int val) && _cache.TryGetCache<int>(param.Captcha, out int cacheVal) && val == cacheVal))
{
_cache.RemoveCache(param.Captcha);
throw Oops.Oh("验证码错误!");
}
_cache.SetCache(param.Captcha, param.UserName, DateTime.Now.AddMinutes(5));
var users = await _userRepository.AsQueryable()
.Where(it => it.UserName == param.UserName)
.Where(it => it.Status == 1)
.ToListAsync();
if (users == null || users.Count < 1)
throw Oops.Oh($"不存在用户【{param.UserName}】!");
List<UserEntity> passOk = new List<UserEntity>(); //密码验证通过的账户信息
foreach (var item in users)
{
if (param!.Password == CryptogramHelper.GMSM4Decrypt(item.Password))
passOk.Add(item);
}
if (passOk.Any())
{
var tenantIds = passOk.Select(it => it.TenantId).ToList();
var tenants = await _tenantRepository.AsQueryable()
.Where(it => tenantIds.Contains(it.Id))
.Select(it => new { it.Id, it.TenantName, it.Status })
.ToListAsync();
if (tenants.All(it => it.Status != 1))
throw Oops.Oh("登录失败,账号已经冻结!");
return tenants;
}
throw Oops.Oh("登录失败,没有相关用户信息!");
}
/// <summary>
/// 用户租户登录
/// </summary>
[AllowAnonymous]
public async Task<JwtToken> TenantLogin(UserTenantLoginParam param)
{
if (_cache.TryGetCache(param.Captcha, out string? cacheVal) && cacheVal == param.UserName)

2
Web/.env.development

@ -2,4 +2,4 @@
ENV = 'development'
# base api
VITE_API_BASE_URL = 'http://127.0.0.1:7001'
VITE_API_BASE_URL = 'http://192.168.1.228:7629'

2
Web/.env.production

@ -2,5 +2,5 @@
ENV = 'production'
# base api
VITE_API_BASE_URL = 'http://127.0.0.1:5001'
VITE_API_BASE_URL = 'http://192.168.1.228:7629'

Loading…
Cancel
Save