diff --git a/API/TaskManager.Contracts/Dtos/10_17/Class1.cs b/API/TaskManager.Contracts/Dtos/10_17/Class1.cs
deleted file mode 100644
index c8dfe71..0000000
--- a/API/TaskManager.Contracts/Dtos/10_17/Class1.cs
+++ /dev/null
@@ -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
- {
- }
-}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_DATE_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_DATE_DTO.cs
new file mode 100644
index 0000000..e917547
--- /dev/null
+++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_DATE_DTO.cs
@@ -0,0 +1,252 @@
+using Magicodes.ExporterAndImporter.Core;
+
+namespace TaskManager.Entity.Entitys
+{
+ ///
+ /// 日物料需求计划风险确认
+ ///
+ public class SUPPLIER_CON_DATE_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 需求发布版次,取自日物料需求计划接口中的需求发布版次,针对与这个版次的需求进行风险反馈
+ ///
+ [ExporterHeader(DisplayName = "需求发布版次")]
+ [ImporterHeader(Name = "需求发布版次")]
+ public string ReleaseEdition { get; set; }
+ ///
+ /// 零件号,奇瑞零件号
+ ///
+ [ExporterHeader(DisplayName = "零件号,奇瑞零件号")]
+ [ImporterHeader(Name = "零件号,奇瑞零件号")]
+ public string MaterialCode { get; set; }
+ ///
+ /// 工厂代码
+ ///
+ [ExporterHeader(DisplayName = "工厂代码")]
+ [ImporterHeader(Name = "工厂代码")]
+ public string PlantId { get; set; }
+ ///
+ /// 反馈结果,1-异常;0-无异常(匹配峰值需求缺口,如果可满足峰值,即选择无异常)
+ ///
+ [ExporterHeader(DisplayName = "反馈结果")]
+ [ImporterHeader(Name = "反馈结果")]
+ public string FeedbackResults { get; set; }
+ ///
+ /// 风险类型,当反馈结果=1时,此字段必输1.生产节拍不足2.人员不足3.原材料不足4.设备异常5.其他
+ ///
+ [ExporterHeader(DisplayName = "风险类型")]
+ [ImporterHeader(Name = "风险类型")]
+ public string? VentureType { get; set; }
+ ///
+ /// 具体风险,当反馈结果=1时,此字段必输描述具体风险
+ ///
+ [ExporterHeader(DisplayName = "具体风险")]
+ [ImporterHeader(Name = "具体风险")]
+ public string? VentureSpecific { get; set; }
+ ///
+ /// 应对措施,当反馈结果=1时,此字段必输描述具体应对措施
+ ///
+ [ExporterHeader(DisplayName = "应对措施")]
+ [ImporterHeader(Name = "应对措施")]
+ public string? Measures { get; set; }
+ ///
+ /// 起始日期,格式:yyyy-MM-dd
+ ///
+ [ExporterHeader(DisplayName = "起始日期")]
+ [ImporterHeader(Name = "起始日期")]
+ public string StartDate { get; set; }
+ ///
+ /// 满足数量1,数量锁定,7日内满足数量必须等于需求数量
+ ///
+ [ExporterHeader(DisplayName = "满足数量1")]
+ [ImporterHeader(Name = "满足数量1")]
+ public decimal QuantityMeet1 { get; set; }
+ ///
+ /// 满足数量2,
+ ///
+ [ExporterHeader(DisplayName = "满足数量2")]
+ [ImporterHeader(Name = "满足数量2")]
+ public decimal QuantityMeet2 { get; set; }
+ ///
+ /// 满足数量3,
+ ///
+ [ExporterHeader(DisplayName = "满足数量3")]
+ [ImporterHeader(Name = "满足数量3")]
+ public decimal QuantityMeet3 { get; set; }
+ ///
+ /// 满足数量4,
+ ///
+ [ExporterHeader(DisplayName = "满足数量4")]
+ [ImporterHeader(Name = "满足数量4")]
+ public decimal QuantityMeet4 { get; set; }
+ ///
+ /// 满足数量5,
+ ///
+ [ExporterHeader(DisplayName = "满足数量5")]
+ [ImporterHeader(Name = "满足数量5")]
+ public decimal QuantityMeet5 { get; set; }
+ ///
+ /// 满足数量6,
+ ///
+ [ExporterHeader(DisplayName = "满足数量6")]
+ [ImporterHeader(Name = "满足数量6")]
+ public decimal QuantityMeet6 { get; set; }
+ ///
+ /// 满足数量7,
+ ///
+ [ExporterHeader(DisplayName = "满足数量7")]
+ [ImporterHeader(Name = "满足数量7")]
+ public decimal QuantityMeet7 { get; set; }
+ ///
+ /// 满足数量8,根据物料需求计划接口发布的需求天数,针对企业自身产能情况反馈可满足数量注:目前发送数据为滚动12天的数据,13至31天的字段为预留,未来可能会增加至31天
+ ///
+ [ExporterHeader(DisplayName = "满足数量8")]
+ [ImporterHeader(Name = "满足数量8")]
+ public decimal QuantityMeet8 { get; set; }
+ ///
+ /// 满足数量9,
+ ///
+ [ExporterHeader(DisplayName = "满足数量9")]
+ [ImporterHeader(Name = "满足数量9")]
+ public decimal QuantityMeet9 { get; set; }
+ ///
+ /// 满足数量10,
+ ///
+ [ExporterHeader(DisplayName = "满足数量10")]
+ [ImporterHeader(Name = "满足数量10")]
+ public decimal QuantityMeet10 { get; set; }
+ ///
+ /// 满足数量11,
+ ///
+ [ExporterHeader(DisplayName = "满足数量11")]
+ [ImporterHeader(Name = "满足数量11")]
+ public decimal QuantityMeet11 { get; set; }
+ ///
+ /// 满足数量12,
+ ///
+ [ExporterHeader(DisplayName = "满足数量12")]
+ [ImporterHeader(Name = "满足数量12")]
+ public decimal QuantityMeet12 { get; set; }
+ ///
+ /// 满足数量13,
+ ///
+ [ExporterHeader(DisplayName = "满足数量13")]
+ [ImporterHeader(Name = "满足数量13")]
+ public decimal? QuantityMeet13 { get; set; }
+ ///
+ /// 满足数量14,
+ ///
+ [ExporterHeader(DisplayName = "满足数量14")]
+ [ImporterHeader(Name = "满足数量14")]
+ public decimal? QuantityMeet14 { get; set; }
+ ///
+ /// 满足数量15,
+ ///
+ [ExporterHeader(DisplayName = "满足数量15")]
+ [ImporterHeader(Name = "满足数量15")]
+ public decimal? QuantityMeet15 { get; set; }
+ ///
+ /// 满足数量16,
+ ///
+ [ExporterHeader(DisplayName = "满足数量16")]
+ [ImporterHeader(Name = "满足数量16")]
+ public decimal? QuantityMeet16 { get; set; }
+ ///
+ /// 满足数量17,
+ ///
+ [ExporterHeader(DisplayName = "满足数量17")]
+ [ImporterHeader(Name = "满足数量17")]
+ public decimal? QuantityMeet17 { get; set; }
+ ///
+ /// 满足数量18,
+ ///
+ [ExporterHeader(DisplayName = "满足数量18")]
+ [ImporterHeader(Name = "满足数量18")]
+ public decimal? QuantityMeet18 { get; set; }
+ ///
+ /// 满足数量19,
+ ///
+ [ExporterHeader(DisplayName = "满足数量19")]
+ [ImporterHeader(Name = "满足数量19")]
+ public decimal? QuantityMeet19 { get; set; }
+ ///
+ /// 满足数量20,
+ ///
+ [ExporterHeader(DisplayName = "满足数量20")]
+ [ImporterHeader(Name = "满足数量20")]
+ public decimal? QuantityMeet20 { get; set; }
+ ///
+ /// 满足数量21,
+ ///
+ [ExporterHeader(DisplayName = "满足数量21")]
+ [ImporterHeader(Name = "满足数量21")]
+ public decimal? QuantityMeet21 { get; set; }
+ ///
+ /// 满足数量22,
+ ///
+ [ExporterHeader(DisplayName = "满足数量22")]
+ [ImporterHeader(Name = "满足数量22")]
+ public decimal? QuantityMeet22 { get; set; }
+ ///
+ /// 满足数量23,
+ ///
+ [ExporterHeader(DisplayName = "满足数量23")]
+ [ImporterHeader(Name = "满足数量23")]
+ public decimal? QuantityMeet23 { get; set; }
+ ///
+ /// 满足数量24,
+ ///
+ [ExporterHeader(DisplayName = "满足数量24")]
+ [ImporterHeader(Name = "满足数量24")]
+ public decimal? QuantityMeet24 { get; set; }
+ ///
+ /// 满足数量25,
+ ///
+ [ExporterHeader(DisplayName = "满足数量25")]
+ [ImporterHeader(Name = "满足数量25")]
+ public decimal? QuantityMeet25 { get; set; }
+ ///
+ /// 满足数量26,
+ ///
+ [ExporterHeader(DisplayName = "满足数量26")]
+ [ImporterHeader(Name = "满足数量26")]
+ public decimal? QuantityMeet26 { get; set; }
+ ///
+ /// 满足数量27,
+ ///
+ [ExporterHeader(DisplayName = "满足数量27")]
+ [ImporterHeader(Name = "满足数量27")]
+ public decimal? QuantityMeet27 { get; set; }
+ ///
+ /// 满足数量28,
+ ///
+ [ExporterHeader(DisplayName = "满足数量28")]
+ [ImporterHeader(Name = "满足数量28")]
+ public decimal? QuantityMeet28 { get; set; }
+ ///
+ /// 满足数量29,
+ ///
+ [ExporterHeader(DisplayName = "满足数量29")]
+ [ImporterHeader(Name = "满足数量29")]
+ public decimal? QuantityMeet29 { get; set; }
+ ///
+ /// 满足数量30,
+ ///
+ [ExporterHeader(DisplayName = "满足数量30")]
+ [ImporterHeader(Name = "满足数量30")]
+ public decimal? QuantityMeet30 { get; set; }
+ ///
+ /// 满足数量31,
+ ///
+ [ExporterHeader(DisplayName = "满足数量31")]
+ [ImporterHeader(Name = "满足数量31")]
+ public decimal? QuantityMeet31 { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_MMRP_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_MMRP_DTO.cs
new file mode 100644
index 0000000..21ef18b
--- /dev/null
+++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_MMRP_DTO.cs
@@ -0,0 +1,138 @@
+using Magicodes.ExporterAndImporter.Core;
+
+namespace TaskManager.Entity.Entitys
+{
+ ///
+ /// M+6月物料需求计划风险确认
+ ///
+ public class SUPPLIER_CON_MMRP_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 需求发布版次,取自M+6月物料需求计划接口中的需求发布版次,针对与这个版次的需求进行风险反馈
+ ///
+ [ExporterHeader(DisplayName = "需求发布版次")]
+ [ImporterHeader(Name = "需求发布版次")]
+ public string ReleaseEdition { get; set; }
+ ///
+ /// 零件号,奇瑞零件号
+ ///
+ [ExporterHeader(DisplayName = "零件号")]
+ [ImporterHeader(Name = "零件号")]
+ public string MaterialCode { get; set; }
+ ///
+ /// 工厂代码,
+ ///
+ [ExporterHeader(DisplayName = "工厂代码,")]
+ [ImporterHeader(Name = "工厂代码,")]
+ public string PlantId { get; set; }
+ ///
+ /// 反馈结果,1-异常;0-无异常(匹配峰值需求缺口,如果可满足峰值,即选择无异常)
+ ///
+ [ExporterHeader(DisplayName = "反馈结果")]
+ [ImporterHeader(Name = "反馈结果")]
+ public string FeedbackResults { get; set; }
+ ///
+ /// 风险类型,当反馈结果=1时,此字段必输1.生产节拍不足2.人员不足3.原材料不足4.设备异常5.其他
+ ///
+ [ExporterHeader(DisplayName = "风险类型")]
+ [ImporterHeader(Name = "风险类型")]
+ public string? VentureType { get; set; }
+ ///
+ /// 具体风险,当反馈结果=1时,此字段必输描述具体风险
+ ///
+ [ExporterHeader(DisplayName = "具体风险")]
+ [ImporterHeader(Name = "具体风险")]
+ public string? VentureSpecific { get; set; }
+ ///
+ /// 应对措施,当反馈结果=1时,此字段必输描述具体应对措施
+ ///
+ [ExporterHeader(DisplayName = "应对措施")]
+ [ImporterHeader(Name = "应对措施")]
+ public string? Measures { get; set; }
+ ///
+ /// 起始月份-格式:yyyy-MM
+ ///
+ [ExporterHeader(DisplayName = "起始月份")]
+ [ImporterHeader(Name = "起始月份")]
+ public string StartMonth { get; set; }
+ ///
+ /// 满足数量1
+ ///
+ [ExporterHeader(DisplayName = "满足数量1")]
+ [ImporterHeader(Name = "满足数量1")]
+ public decimal QuantityMeet1 { get; set; }
+ ///
+ /// 满足数量2
+ ///
+ [ExporterHeader(DisplayName = "满足数量2")]
+ [ImporterHeader(Name = "满足数量2")]
+ public decimal QuantityMeet2 { get; set; }
+ ///
+ /// 满足数量3
+ ///
+ [ExporterHeader(DisplayName = "满足数量3")]
+ [ImporterHeader(Name = "满足数量3")]
+ public decimal QuantityMeet3 { get; set; }
+ ///
+ /// 满足数量4
+ ///
+ [ExporterHeader(DisplayName = "满足数量4")]
+ [ImporterHeader(Name = "满足数量4")]
+ public decimal QuantityMeet4 { get; set; }
+ ///
+ /// 满足数量5
+ ///
+ [ExporterHeader(DisplayName = "满足数量5")]
+ [ImporterHeader(Name = "满足数量5")]
+ public decimal QuantityMeet5 { get; set; }
+ ///
+ /// 满足数量6
+ ///
+ [ExporterHeader(DisplayName = "满足数量6")]
+ [ImporterHeader(Name = "满足数量6")]
+ public decimal QuantityMeet6 { get; set; }
+ ///
+ /// 满足数量7
+ ///
+ [ExporterHeader(DisplayName = "满足数量7")]
+ [ImporterHeader(Name = "满足数量7")]
+ public decimal? QuantityMeet7 { get; set; }
+ ///
+ /// 满足数量8
+ ///
+ [ExporterHeader(DisplayName = "满足数量8")]
+ [ImporterHeader(Name = "满足数量8")]
+ public decimal? QuantityMeet8 { get; set; }
+ ///
+ /// 满足数量9
+ ///
+ [ExporterHeader(DisplayName = "满足数量9")]
+ [ImporterHeader(Name = "满足数量9")]
+ public decimal? QuantityMeet9 { get; set; }
+ ///
+ /// 满足数量10
+ ///
+ [ExporterHeader(DisplayName = "满足数量10")]
+ [ImporterHeader(Name = "满足数量10")]
+ public decimal? QuantityMeet10 { get; set; }
+ ///
+ /// 满足数量11
+ ///
+ [ExporterHeader(DisplayName = "满足数量11")]
+ [ImporterHeader(Name = "满足数量11")]
+ public decimal? QuantityMeet11 { get; set; }
+ ///
+ /// 满足数量12
+ ///
+ [ExporterHeader(DisplayName = "满足数量12")]
+ [ImporterHeader(Name = "满足数量12")]
+ public decimal? QuantityMeet12 { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_PO_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_PO_DTO.cs
new file mode 100644
index 0000000..cc67661
--- /dev/null
+++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_CON_PO_DTO.cs
@@ -0,0 +1,60 @@
+using Magicodes.ExporterAndImporter.Core;
+
+namespace TaskManager.Entity.Entitys
+{
+ ///
+ /// 采购订单风险确认
+ ///
+ public class SUPPLIER_CON_PO_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 采购订单号
+ ///
+ [ExporterHeader(DisplayName = "采购订单号")]
+ [ImporterHeader(Name = "采购订单号")]
+ public string PurchaseOrder { get; set; }
+ ///
+ /// 行项目号
+ ///
+ [ExporterHeader(DisplayName = "行项目号")]
+ [ImporterHeader(Name = "行项目号")]
+ public string SerialNumber { get; set; }
+ ///
+ /// 满足数量
+ ///
+ [ExporterHeader(DisplayName = "满足数量")]
+ [ImporterHeader(Name = "满足数量")]
+ public decimal QuantityMeet { get; set; }
+ ///
+ /// 反馈结果,1-异常;0-无异常(匹配峰值需求缺口,如果可满足峰值,即选择无异常)
+ ///
+ [ExporterHeader(DisplayName = "反馈结果")]
+ [ImporterHeader(Name = "反馈结果")]
+ public string FeedbackResults { get; set; }
+ ///
+ /// 风险类型,当反馈结果=1时,此字段必输1.生产节拍不足2.人员不足3.原材料不足4.设备异常5.其他
+ ///
+ [ExporterHeader(DisplayName = "风险类型")]
+ [ImporterHeader(Name = "风险类型")]
+ public string? VentureType { get; set; }
+ ///
+ /// 具体风险,当反馈结果=1时,此字段必输描述具体风险
+ ///
+ [ExporterHeader(DisplayName = "具体风险")]
+ [ImporterHeader(Name = "具体风险")]
+ public string? VentureSpecific { get; set; }
+ ///
+ /// 应对措施,当反馈结果=1时,此字段必输描述具体应对措施
+ ///
+ [ExporterHeader(DisplayName = "应对措施")]
+ [ImporterHeader(Name = "应对措施")]
+ public string? Measures { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_EMPLOYEE_DT_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_EMPLOYEE_DT_DTO.cs
new file mode 100644
index 0000000..beba2d9
--- /dev/null
+++ b/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
+{
+ ///
+ /// 人员资质信息
+ ///
+ public class SUPPLIER_EMPLOYEE_DT_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 工厂代码
+ ///
+ [ExporterHeader(DisplayName = "工厂代码")]
+ [ImporterHeader(Name = "工厂代码")]
+ public string PlantId { get; set; }
+ ///
+ /// 工厂名称
+ ///
+ [ExporterHeader(DisplayName = "工厂名称")]
+ [ImporterHeader(Name = "工厂名称")]
+ public string PlantName { get; set; }
+ ///
+ /// 车间代码
+ ///
+ [ExporterHeader(DisplayName = "车间代码")]
+ [ImporterHeader(Name = "车间代码")]
+ public string WorkshopId { get; set; }
+ ///
+ /// 车间名称
+ ///
+ [ExporterHeader(DisplayName = "车间名称")]
+ [ImporterHeader(Name = "车间名称")]
+ public string WorkshopName { get; set; }
+ ///
+ /// 产线代码
+ ///
+ [ExporterHeader(DisplayName = "产线代码")]
+ [ImporterHeader(Name = "产线代码")]
+ public string ProductionLineId { get; set; }
+ ///
+ /// 产线名称
+ ///
+ [ExporterHeader(DisplayName = "产线名称")]
+ [ImporterHeader(Name = "产线名称")]
+ public string ProductionLineName { get; set; }
+ ///
+ /// 工位代码
+ ///
+ [ExporterHeader(DisplayName = "工位代码")]
+ [ImporterHeader(Name = "工位代码")]
+ public string StationId { get; set; }
+ ///
+ /// 工位名称
+ ///
+ [ExporterHeader(DisplayName = "工位名称")]
+ [ImporterHeader(Name = "工位名称")]
+ public string StationName { get; set; }
+ ///
+ /// 工位人员账号
+ ///
+ [ExporterHeader(DisplayName = "工位人员账号")]
+ [ImporterHeader(Name = "工位人员账号")]
+ public string OperatorId { get; set; }
+ ///
+ /// 工位人员姓名
+ ///
+ [ExporterHeader(DisplayName = "工位人员姓名")]
+ [ImporterHeader(Name = "工位人员姓名")]
+ public string OperatorName { get; set; }
+ ///
+ /// 是否有资质(Y,N)
+ ///
+ [ExporterHeader(DisplayName = "是否有资质(Y,N)")]
+ [ImporterHeader(Name = "是否有资质(Y,N)")]
+ public string HaveQuantity { get; set; }
+ ///
+ /// 供应商修改时间,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "供应商修改时间")]
+ [ImporterHeader(Name = "供应商修改时间")]
+ public string DataUpdateTime { get; set; }
+ ///
+ /// 岗位代码
+ ///
+ [ExporterHeader(DisplayName = "岗位代码")]
+ [ImporterHeader(Name = "岗位代码")]
+ public string PositionId { get; set; }
+ ///
+ /// 岗位名称
+ ///
+ [ExporterHeader(DisplayName = "岗位名称")]
+ [ImporterHeader(Name = "岗位名称")]
+ public string PositionName { get; set; }
+ ///
+ /// 资质等级(Level_4,Level_3,Level_2,Level_1)
+ ///
+ [ExporterHeader(DisplayName = "资质等级")]
+ [ImporterHeader(Name = "资质等级")]
+ public string QualificationLevel { get; set; }
+ ///
+ /// 资质获取时间
+ ///
+ [ExporterHeader(DisplayName = "资质获取时间")]
+ [ImporterHeader(Name = "资质获取时间")]
+ public string CheckInTime { get; set; }
+ ///
+ /// 资质失去时间
+ ///
+ [ExporterHeader(DisplayName = "资质失去时间")]
+ [ImporterHeader(Name = "资质失去时间")]
+ public string CheckOutTime { get; set; }
+ }
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_INFO_DT_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_INFO_DT_DTO.cs
new file mode 100644
index 0000000..6de67b5
--- /dev/null
+++ b/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
+{
+ ///
+ /// 供应商基础信息
+ ///
+ public class SUPPLIER_INFO_DT_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 工厂代码
+ ///
+ [ExporterHeader(DisplayName = "工厂代码")]
+ [ImporterHeader(Name = "工厂代码")]
+ public string PlantId { get; set; }
+ ///
+ /// 工厂名称
+ ///
+ [ExporterHeader(DisplayName = "工厂名称")]
+ [ImporterHeader(Name = "工厂名称")]
+ public string PlantName { get; set; }
+ ///
+ /// 车间代码
+ ///
+ [ExporterHeader(DisplayName = "车间代码")]
+ [ImporterHeader(Name = "车间代码")]
+ public string WorkshopId { get; set; }
+ ///
+ /// 车间名称
+ ///
+ [ExporterHeader(DisplayName = "车间名称")]
+ [ImporterHeader(Name = "车间名称")]
+ public string WorkshopName { get; set; }
+ ///
+ /// 产线代码
+ ///
+ [ExporterHeader(DisplayName = "产线代码")]
+ [ImporterHeader(Name = "产线代码")]
+ public string ProductionLineId { get; set; }
+ ///
+ /// 产线名称
+ ///
+ [ExporterHeader(DisplayName = "产线名称")]
+ [ImporterHeader(Name = "产线名称")]
+ public string ProductionLineName { get; set; }
+ ///
+ /// 工位代码
+ ///
+ [ExporterHeader(DisplayName = "工位代码")]
+ [ImporterHeader(Name = "工位代码")]
+ public string StationId { get; set; }
+ ///
+ /// 工位名称
+ ///
+ [ExporterHeader(DisplayName = "工位名称")]
+ [ImporterHeader(Name = "工位名称")]
+ public string StationName { get; set; }
+ ///
+ /// 是否关键工位(Y/N)
+ ///
+ [ExporterHeader(DisplayName = "是否关键工位(Y/N)")]
+ [ImporterHeader(Name = "是否关键工位(Y/N)")]
+ public string KeyStation { get; set; }
+ ///
+ /// 供应商修改时间,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "供应商修改时间")]
+ [ImporterHeader(Name = "供应商修改时间")]
+ public string DataUpdateTime { get; set; }
+ ///
+ /// 产线顺序
+ ///
+ [ExporterHeader(DisplayName = "产线顺序")]
+ [ImporterHeader(Name = "产线顺序")]
+ public decimal ProductionLineOrder { get; set; }
+ ///
+ /// 工位顺序
+ ///
+ [ExporterHeader(DisplayName = "工位顺序")]
+ [ImporterHeader(Name = "工位顺序")]
+ public decimal StationOrder { get; set; }
+ ///
+ /// 供应商总成零件号
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件号")]
+ [ImporterHeader(Name = "供应商总成零件号")]
+ public string VendorProductNo { get; set; }
+ ///
+ /// 供应商总成零件名称
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件名称")]
+ [ImporterHeader(Name = "供应商总成零件名称")]
+ public string VendorProductName { get; set; }
+ ///
+ /// 奇瑞零件号
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件号")]
+ [ImporterHeader(Name = "奇瑞零件号")]
+ public string CheryProductNo { get; set; }
+ ///
+ /// 奇瑞零件名称
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件名称")]
+ [ImporterHeader(Name = "奇瑞零件名称")]
+ public string CheryProductName { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_ATTACHMENT_DATA_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_ATTACHMENT_DATA_DTO.cs
new file mode 100644
index 0000000..54f54be
--- /dev/null
+++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_ATTACHMENT_DATA_DTO.cs
@@ -0,0 +1,115 @@
+using Magicodes.ExporterAndImporter.Core;
+
+namespace TaskManager.Entity.Entitys
+{
+ ///
+ /// 附件类数据
+ ///
+ public class SUPPLIER_PRO_ATTACHMENT_DATA_DTO
+ {
+
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 数据类型(1产前管理;2人员资质;3监控视频)
+ ///
+ [ExporterHeader(DisplayName = "数据类型")]
+ [ImporterHeader(Name = "数据类型")]
+ public string Type { get; set; }
+ ///
+ /// 文件名
+ ///
+ [ExporterHeader(DisplayName = "文件名")]
+ [ImporterHeader(Name = "文件名")]
+ public string FileName { get; set; }
+ ///
+ /// 图文地址
+ ///
+ [ExporterHeader(DisplayName = "图文地址")]
+ [ImporterHeader(Name = "图文地址")]
+ public string FileUrl { get; set; }
+ ///
+ /// 生成时间,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "生成时间")]
+ [ImporterHeader(Name = "生成时间")]
+ public string DateTime { get; set; }
+ ///
+ /// 产线名称
+ ///
+ [ExporterHeader(DisplayName = "产线名称")]
+ [ImporterHeader(Name = "产线名称")]
+ public string ProductionLineName { get; set; }
+ ///
+ /// 产线代码
+ ///
+ [ExporterHeader(DisplayName = "产线代码")]
+ [ImporterHeader(Name = "产线代码")]
+ public string ProductionLineId { get; set; }
+ ///
+ /// 工位名称
+ ///
+ [ExporterHeader(DisplayName = "工位名称")]
+ [ImporterHeader(Name = "工位名称")]
+ public string StationName { get; set; }
+ ///
+ /// 工位代码
+ ///
+ [ExporterHeader(DisplayName = "工位代码")]
+ [ImporterHeader(Name = "工位代码")]
+ public string StationId { get; set; }
+ ///
+ /// 设备名称
+ ///
+ [ExporterHeader(DisplayName = "设备名称")]
+ [ImporterHeader(Name = "设备名称")]
+ public string DeviceName { get; set; }
+ ///
+ /// 设备编码
+ ///
+ [ExporterHeader(DisplayName = "设备编码")]
+ [ImporterHeader(Name = "设备编码")]
+ public string? DeviceId { get; set; }
+ ///
+ /// 供应商总成零件号
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件号")]
+ [ImporterHeader(Name = "供应商总成零件号")]
+ public string VendorProductNo { get; set; }
+ ///
+ /// 供应商总成零件名称
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件名称")]
+ [ImporterHeader(Name = "供应商总成零件名称")]
+ public string VendorProductName { get; set; }
+ ///
+ /// 奇瑞零件号
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件号")]
+ [ImporterHeader(Name = "奇瑞零件号")]
+ public string CheryProductNo { get; set; }
+ ///
+ /// 奇瑞零件名称
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件名称")]
+ [ImporterHeader(Name = "奇瑞零件名称")]
+ public string CheryProductName { get; set; }
+ ///
+ /// 供应商总成SN码
+ ///
+ [ExporterHeader(DisplayName = "供应商总成SN码")]
+ [ImporterHeader(Name = "供应商总成SN码")]
+ public string? VendorProductSn { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_ENVIRONMENT_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_ENVIRONMENT_DTO.cs
new file mode 100644
index 0000000..ae3ae92
--- /dev/null
+++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_ENVIRONMENT_DTO.cs
@@ -0,0 +1,115 @@
+using Magicodes.ExporterAndImporter.Core;
+
+namespace TaskManager.Entity.Entitys
+{
+ ///
+ /// 环境业务数据
+ ///
+ public class SUPPLIER_PRO_ENVIRONMENT_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 工厂代码
+ ///
+ [ExporterHeader(DisplayName = "工厂代码")]
+ [ImporterHeader(Name = "工厂代码")]
+ public string PlantId { get; set; }
+ ///
+ /// 工厂名称
+ ///
+ [ExporterHeader(DisplayName = "工厂名称")]
+ [ImporterHeader(Name = "工厂名称")]
+ public string PlantName { get; set; }
+ ///
+ /// 车间代码
+ ///
+ [ExporterHeader(DisplayName = "车间代码")]
+ [ImporterHeader(Name = "车间代码")]
+ public string WorkshopId { get; set; }
+ ///
+ /// 车间名称
+ ///
+ [ExporterHeader(DisplayName = "车间名称")]
+ [ImporterHeader(Name = "车间名称")]
+ public string WorkshopName { get; set; }
+ ///
+ /// 产线代码
+ ///
+ [ExporterHeader(DisplayName = "产线代码")]
+ [ImporterHeader(Name = "产线代码")]
+ public string ProductionLineId { get; set; }
+ ///
+ /// 产线名称
+ ///
+ [ExporterHeader(DisplayName = "产线名称")]
+ [ImporterHeader(Name = "产线名称")]
+ public string ProductionLineName { get; set; }
+ ///
+ /// 环境指标名称,例如:温度、湿度、洁净度等
+ ///
+ [ExporterHeader(DisplayName = "环境指标名称")]
+ [ImporterHeader(Name = "环境指标名称")]
+ public string EnvIndicatorName { get; set; }
+ ///
+ /// 指标实测值,(最大支持11位整数+5位小数)
+ ///
+ [ExporterHeader(DisplayName = "指标实测值")]
+ [ImporterHeader(Name = "指标实测值")]
+ public decimal? NumValue { get; set; }
+ ///
+ /// 上限值,(最大支持11位整数+5位小数)
+ ///
+ [ExporterHeader(DisplayName = "上限值")]
+ [ImporterHeader(Name = "上限值")]
+ public decimal UpperLimit { get; set; }
+ ///
+ /// 下限值,(最大支持11位整数+5位小数)
+ ///
+ [ExporterHeader(DisplayName = "下限值")]
+ [ImporterHeader(Name = "下限值")]
+ public decimal LowerLimit { get; set; }
+ ///
+ /// 单位,相应的单位名称,如度数
+ ///
+ [ExporterHeader(DisplayName = "单位")]
+ [ImporterHeader(Name = "单位")]
+ public string ChineseUnit { get; set; }
+ ///
+ /// 采集仪器代码,环境采集的仪器/工具代码
+ ///
+ [ExporterHeader(DisplayName = "采集仪器代码")]
+ [ImporterHeader(Name = "采集仪器代码")]
+ public string EquipmentCode { get; set; }
+ ///
+ /// 采集仪器名称,环境采集的仪器/工具名称
+ ///
+ [ExporterHeader(DisplayName = "采集仪器名称")]
+ [ImporterHeader(Name = "采集仪器名称")]
+ public string EquipmentName { get; set; }
+ ///
+ /// 数据采集的点位
+ ///
+ [ExporterHeader(DisplayName = "数据采集的点位")]
+ [ImporterHeader(Name = "数据采集的点位")]
+ public string? DataCollectionPoint { get; set; }
+ ///
+ /// 数据采集的时间,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "数据采集的时间")]
+ [ImporterHeader(Name = "数据采集的时间")]
+ public string CollectTime { get; set; }
+ }
+
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_FLAW_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_FLAW_DTO.cs
new file mode 100644
index 0000000..32085fe
--- /dev/null
+++ b/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
+{
+ ///
+ /// 缺陷业务数据
+ ///
+ public class SUPPLIER_PRO_FLAW_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 工厂代码
+ ///
+ [ExporterHeader(DisplayName = "工厂代码")]
+ [ImporterHeader(Name = "工厂代码")]
+ public string PlantId { get; set; }
+ ///
+ /// 工厂名称
+ ///
+ [ExporterHeader(DisplayName = "工厂名称")]
+ [ImporterHeader(Name = "工厂名称")]
+ public string PlantName { get; set; }
+ ///
+ /// 车间代码
+ ///
+ [ExporterHeader(DisplayName = "车间代码")]
+ [ImporterHeader(Name = "车间代码")]
+ public string WorkshopId { get; set; }
+ ///
+ /// 车间名称
+ ///
+ [ExporterHeader(DisplayName = "车间名称")]
+ [ImporterHeader(Name = "车间名称")]
+ public string WorkshopName { get; set; }
+ ///
+ /// 产线代码
+ ///
+ [ExporterHeader(DisplayName = "产线代码")]
+ [ImporterHeader(Name = "产线代码")]
+ public string ProductionLineId { get; set; }
+ ///
+ /// 产线名称
+ ///
+ [ExporterHeader(DisplayName = "产线名称")]
+ [ImporterHeader(Name = "产线名称")]
+ public string ProductionLineName { get; set; }
+ ///
+ /// 工位代码
+ ///
+ [ExporterHeader(DisplayName = "工位代码")]
+ [ImporterHeader(Name = "工位代码")]
+ public string StationId { get; set; }
+ ///
+ /// 工位名称
+ ///
+ [ExporterHeader(DisplayName = "工位名称")]
+ [ImporterHeader(Name = "工位名称")]
+ public string StationName { get; set; }
+ ///
+ /// 缺陷代码
+ ///
+ [ExporterHeader(DisplayName = "缺陷代码")]
+ [ImporterHeader(Name = "缺陷代码")]
+ public string DefectsCode { get; set; }
+ ///
+ /// 缺陷名称
+ ///
+ [ExporterHeader(DisplayName = "缺陷名称")]
+ [ImporterHeader(Name = "缺陷名称")]
+ public string DefectsName { get; set; }
+ ///
+ /// 缺陷分类(外观,尺寸,材料,功能,性能,其他)
+ ///
+ [ExporterHeader(DisplayName = "缺陷分类")]
+ [ImporterHeader(Name = "缺陷分类")]
+ public string ClassOfName { get; set; }
+ ///
+ /// 供应商总成零件号
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件号")]
+ [ImporterHeader(Name = "供应商总成零件号")]
+ public string VendorProductNo { get; set; }
+ ///
+ /// 供应商总成零件名称
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件名称")]
+ [ImporterHeader(Name = "供应商总成零件名称")]
+ public string VendorProductName { get; set; }
+ ///
+ /// 供应商总成批次号
+ ///
+ [ExporterHeader(DisplayName = "供应商总成批次号")]
+ [ImporterHeader(Name = "供应商总成批次号")]
+ public string VendorProductBatch { get; set; }
+ ///
+ /// 供应商总成SN码
+ ///
+ [ExporterHeader(DisplayName = "供应商总成SN码")]
+ [ImporterHeader(Name = "供应商总成SN码")]
+ public string VendorProductSn { get; set; }
+ ///
+ /// 奇瑞零件号
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件号")]
+ [ImporterHeader(Name = "奇瑞零件号")]
+ public string CheryProductNo { get; set; }
+ ///
+ /// 奇瑞零件名称
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件名称")]
+ [ImporterHeader(Name = "奇瑞零件名称")]
+ public string CheryProductName { get; set; }
+ ///
+ /// 奇瑞SN码
+ ///
+ [ExporterHeader(DisplayName = "奇瑞SN码")]
+ [ImporterHeader(Name = "奇瑞SN码")]
+ public string CheryProductSn { get; set; }
+ ///
+ /// 生产批次号
+ ///
+ [ExporterHeader(DisplayName = "生产批次号")]
+ [ImporterHeader(Name = "生产批次号")]
+ public string ProductBatchNo { get; set; }
+ ///
+ /// 生产工单号,或生产批次(工单业务数据)
+ ///
+ [ExporterHeader(DisplayName = "生产工单号")]
+ [ImporterHeader(Name = "生产工单号")]
+ public string ManufactureNo { get; set; }
+ ///
+ /// 班次(白班,晚班,中班)
+ ///
+ [ExporterHeader(DisplayName = "班次")]
+ [ImporterHeader(Name = "班次")]
+ public string WorkShift { get; set; }
+ ///
+ /// 缺陷件数
+ ///
+ [ExporterHeader(DisplayName = "缺陷件数")]
+ [ImporterHeader(Name = "缺陷件数")]
+ public decimal Numberofdefect { get; set; }
+ ///
+ /// 缺陷描述
+ ///
+ [ExporterHeader(DisplayName = "缺陷描述")]
+ [ImporterHeader(Name = "缺陷描述")]
+ public string DefectsDesc { get; set; }
+ ///
+ /// 缺陷等级,(1.严重、2.一般、3.轻微)
+ ///
+ [ExporterHeader(DisplayName = "缺陷等级")]
+ [ImporterHeader(Name = "缺陷等级")]
+ public string DefectsLevel { get; set; }
+ ///
+ /// 缺陷录入时间,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "缺陷录入时间")]
+ [ImporterHeader(Name = "缺陷录入时间")]
+ public string StatisticalTime { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_MATERIAL_DATA_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_MATERIAL_DATA_DTO.cs
new file mode 100644
index 0000000..0d272eb
--- /dev/null
+++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_MATERIAL_DATA_DTO.cs
@@ -0,0 +1,132 @@
+using Magicodes.ExporterAndImporter.Core;
+
+namespace TaskManager.Entity.Entitys
+{
+ ///
+ /// 物料主数据
+ ///
+ public class SUPPLIER_PRO_MATERIAL_DATA_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 供应商物料号
+ ///
+ [ExporterHeader(DisplayName = "供应商物料号")]
+ [ImporterHeader(Name = "供应商物料号")]
+ public string VendorProductNo { get; set; }
+ ///
+ /// 供应商物料名称
+ ///
+ [ExporterHeader(DisplayName = "供应商物料名称")]
+ [ImporterHeader(Name = "供应商物料名称")]
+ public string VendorProductName { get; set; }
+ ///
+ /// 类型(成品,半成品,原材料)
+ ///
+ [ExporterHeader(DisplayName = "类型")]
+ [ImporterHeader(Name = "类型")]
+ public decimal Type { get; set; }
+ ///
+ /// 供应商零件版本号
+ ///
+ [ExporterHeader(DisplayName = "供应商零件版本号")]
+ [ImporterHeader(Name = "供应商零件版本号")]
+ public string? VendorHardwareRevision { get; set; }
+ ///
+ /// 奇瑞零件号
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件号")]
+ [ImporterHeader(Name = "奇瑞零件号")]
+ public string CheryProductNo { get; set; }
+ ///
+ /// 奇瑞零件名称
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件名称")]
+ [ImporterHeader(Name = "奇瑞零件名称")]
+ public string CheryProductName { get; set; }
+ ///
+ /// 奇瑞硬件版本号
+ ///
+ [ExporterHeader(DisplayName = "奇瑞硬件版本号")]
+ [ImporterHeader(Name = "奇瑞硬件版本号")]
+ public string OemHardwareRevision { get; set; }
+ ///
+ /// 奇瑞软件版本号
+ ///
+ [ExporterHeader(DisplayName = "奇瑞软件版本号")]
+ [ImporterHeader(Name = "奇瑞软件版本号")]
+ public string? OemSoftwareRevision { get; set; }
+ ///
+ /// 车型
+ ///
+ [ExporterHeader(DisplayName = "车型")]
+ [ImporterHeader(Name = "车型")]
+ public string? OemModel { get; set; }
+ ///
+ /// 项目名称
+ ///
+ [ExporterHeader(DisplayName = "项目名称")]
+ [ImporterHeader(Name = "项目名称")]
+ public string? OemProjectName { get; set; }
+ ///
+ /// 是否SOP(Y/N)
+ ///
+ [ExporterHeader(DisplayName = "是否SOP")]
+ [ImporterHeader(Name = "是否SOP")]
+ public string? Launched { get; set; }
+ ///
+ /// 数据同步执行时间,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "数据同步执行时间")]
+ [ImporterHeader(Name = "数据同步执行时间")]
+ public string? DateTime { get; set; }
+ ///
+ /// 供应商工厂代码
+ ///
+ [ExporterHeader(DisplayName = "供应商工厂代码")]
+ [ImporterHeader(Name = "供应商工厂代码")]
+ public string? PlantId { get; set; }
+ ///
+ /// 供应商工厂名称
+ ///
+ [ExporterHeader(DisplayName = "供应商工厂名称")]
+ [ImporterHeader(Name = "供应商工厂名称")]
+ public string? PlantName { get; set; }
+ ///
+ /// 芯片采购类型(AVAP,CS,CMcontro)
+ ///
+ [ExporterHeader(DisplayName = "芯片采购类型")]
+ [ImporterHeader(Name = "芯片采购类型")]
+ public string? ProcurementType { get; set; }
+ ///
+ /// 芯片MPN标识码
+ ///
+ [ExporterHeader(DisplayName = "芯片MPN标识码")]
+ [ImporterHeader(Name = "芯片MPN标识码")]
+ public string? MpnCode { get; set; }
+ ///
+ /// 芯片MPN标识名称
+ ///
+ [ExporterHeader(DisplayName = "芯片MPN标识名称")]
+ [ImporterHeader(Name = "芯片MPN标识名称")]
+ public string? MpnName { get; set; }
+ ///
+ /// 物料有效期(天)
+ ///
+ [ExporterHeader(DisplayName = "物料有效期")]
+ [ImporterHeader(Name = "物料有效期")]
+ public string ValidDays { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_OEE_ACHIEVEMENT_RATE_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_OEE_ACHIEVEMENT_RATE_DTO.cs
new file mode 100644
index 0000000..778b0a6
--- /dev/null
+++ b/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
+{
+ ///
+ /// 设备OEE达成率
+ ///
+ public class SUPPLIER_PRO_OEE_ACHIEVEMENT_RATE_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 工厂代码
+ ///
+ [ExporterHeader(DisplayName = "工厂代码")]
+ [ImporterHeader(Name = "工厂代码")]
+ public string PlantId { get; set; }
+ ///
+ /// 工厂名称
+ ///
+ [ExporterHeader(DisplayName = "工厂名称")]
+ [ImporterHeader(Name = "工厂名称")]
+ public string PlantName { get; set; }
+ ///
+ /// 车间代码
+ ///
+ [ExporterHeader(DisplayName = "车间代码")]
+ [ImporterHeader(Name = "车间代码")]
+ public string WorkshopId { get; set; }
+ ///
+ /// 车间名称
+ ///
+ [ExporterHeader(DisplayName = "车间名称")]
+ [ImporterHeader(Name = "车间名称")]
+ public string WorkshopName { get; set; }
+ ///
+ /// 产线代码
+ ///
+ [ExporterHeader(DisplayName = "产线代码")]
+ [ImporterHeader(Name = "产线代码")]
+ public string ProductionLineId { get; set; }
+ ///
+ /// 产线名称
+ ///
+ [ExporterHeader(DisplayName = "产线名称")]
+ [ImporterHeader(Name = "产线名称")]
+ public string ProductionLineName { get; set; }
+ ///
+ /// 工位代码
+ ///
+ [ExporterHeader(DisplayName = "工位代码")]
+ [ImporterHeader(Name = "工位代码")]
+ public string StationId { get; set; }
+ ///
+ /// 工位名称
+ ///
+ [ExporterHeader(DisplayName = "工位名称")]
+ [ImporterHeader(Name = "工位名称")]
+ public string StationName { get; set; }
+ ///
+ /// 设备代码
+ ///
+ [ExporterHeader(DisplayName = "设备代码")]
+ [ImporterHeader(Name = "设备代码")]
+ public string DeviceId { get; set; }
+ ///
+ /// 设备名称
+ ///
+ [ExporterHeader(DisplayName = "设备名称")]
+ [ImporterHeader(Name = "设备名称")]
+ public string? DeviceName { get; set; }
+ ///
+ /// 奇瑞零件号
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件号")]
+ [ImporterHeader(Name = "奇瑞零件号")]
+ public string CheryProductNo { get; set; }
+ ///
+ /// 奇瑞零件名称
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件名称")]
+ [ImporterHeader(Name = "奇瑞零件名称")]
+ public string CheryProductName { get; set; }
+ ///
+ /// 供应商总成零件号
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件号")]
+ [ImporterHeader(Name = "供应商总成零件号")]
+ public string VendorProductNo { get; set; }
+ ///
+ /// 供应商总成零件名称
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件名称")]
+ [ImporterHeader(Name = "供应商总成零件名称")]
+ public string VendorProductName { get; set; }
+ ///
+ /// 生产批次号
+ ///
+ [ExporterHeader(DisplayName = "生产批次号")]
+ [ImporterHeader(Name = "生产批次号")]
+ public string ProductBatchNo { get; set; }
+ ///
+ /// 生产工单号
+ ///
+ [ExporterHeader(DisplayName = "生产工单号")]
+ [ImporterHeader(Name = "生产工单号")]
+ public string ManufactureNo { get; set; }
+ ///
+ /// OEE实际值
+ ///
+ [ExporterHeader(DisplayName = "OEE实际值")]
+ [ImporterHeader(Name = "OEE实际值")]
+ public decimal Rate { get; set; }
+ ///
+ /// OEE目标值
+ ///
+ [ExporterHeader(DisplayName = "OEE目标值")]
+ [ImporterHeader(Name = "OEE目标值")]
+ public decimal RateTagValue { get; set; }
+ ///
+ /// 班次(白班,晚班,中班)
+ ///
+ [ExporterHeader(DisplayName = "班次")]
+ [ImporterHeader(Name = "班次")]
+ public string WorkShift { get; set; }
+ ///
+ /// 生产日期,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "生产日期")]
+ [ImporterHeader(Name = "生产日期")]
+ public string StatisticalTime { get; set; }
+ ///
+ /// 值统计时间,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "值统计时间")]
+ [ImporterHeader(Name = "值统计时间")]
+ public string DateTime { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_OEE_TIME_DETAILS_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_OEE_TIME_DETAILS_DTO.cs
new file mode 100644
index 0000000..79bc4b2
--- /dev/null
+++ b/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
+{
+ ///
+ /// OEE时间明细
+ ///
+ public class SUPPLIER_PRO_OEE_TIME_DETAILS_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 工厂代码
+ ///
+ [ExporterHeader(DisplayName = "工厂代码")]
+ [ImporterHeader(Name = "工厂代码")]
+ public string PlantId { get; set; }
+ ///
+ /// 工厂名称
+ ///
+ [ExporterHeader(DisplayName = "工厂名称")]
+ [ImporterHeader(Name = "工厂名称")]
+ public string PlantName { get; set; }
+ ///
+ /// 车间代码
+ ///
+ [ExporterHeader(DisplayName = "车间代码")]
+ [ImporterHeader(Name = "车间代码")]
+ public string WorkshopId { get; set; }
+ ///
+ /// 车间名称
+ ///
+ [ExporterHeader(DisplayName = "")]
+ [ImporterHeader(Name = "")]
+ public string? WorkshopName { get; set; }
+ ///
+ /// 产线代码
+ ///
+ [ExporterHeader(DisplayName = "产线代码")]
+ [ImporterHeader(Name = "产线代码")]
+ public string ProductionLineId { get; set; }
+ ///
+ /// 产线名称
+ ///
+ [ExporterHeader(DisplayName = "产线名称")]
+ [ImporterHeader(Name = "产线名称")]
+ public string? ProductionLineName { get; set; }
+ ///
+ /// 工位代码
+ ///
+ [ExporterHeader(DisplayName = "工位代码")]
+ [ImporterHeader(Name = "工位代码")]
+ public string StationId { get; set; }
+ ///
+ /// 工位名称
+ ///
+ [ExporterHeader(DisplayName = "工位名称")]
+ [ImporterHeader(Name = "工位名称")]
+ public string StationName { get; set; }
+ ///
+ /// 设备代码
+ ///
+ [ExporterHeader(DisplayName = "设备代码")]
+ [ImporterHeader(Name = "设备代码")]
+ public string DeviceId { get; set; }
+ ///
+ /// 设备名称
+ ///
+ [ExporterHeader(DisplayName = "设备名称")]
+ [ImporterHeader(Name = "设备名称")]
+ public string DeviceName { get; set; }
+ ///
+ /// 记录ID
+ ///
+ [ExporterHeader(DisplayName = "记录ID")]
+ [ImporterHeader(Name = "记录ID")]
+ public string RecId { get; set; }
+ ///
+ /// 大类(1计划工作,2计划停机,3非计划停机)
+ ///
+ [ExporterHeader(DisplayName = "大类")]
+ [ImporterHeader(Name = "大类")]
+ public string Type { get; set; }
+ ///
+ /// 小类编码
+ ///
+ [ExporterHeader(DisplayName = "小类编码")]
+ [ImporterHeader(Name = "小类编码")]
+ public string SubType { get; set; }
+ ///
+ /// 小类描述
+ ///
+ [ExporterHeader(DisplayName = "小类描述")]
+ [ImporterHeader(Name = "小类描述")]
+ public string SubTypeName { get; set; }
+ ///
+ /// 开始时间,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "开始时间")]
+ [ImporterHeader(Name = "开始时间")]
+ public string StartTime { get; set; }
+ ///
+ /// 结束时间,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "结束时间")]
+ [ImporterHeader(Name = "结束时间")]
+ public string EndTime { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_DTO.cs
new file mode 100644
index 0000000..e8168e0
--- /dev/null
+++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_DTO.cs
@@ -0,0 +1,126 @@
+using Magicodes.ExporterAndImporter.Core;
+
+namespace TaskManager.Entity.Entitys
+{
+ ///
+ /// 工艺
+ ///
+ public class SUPPLIER_PRO_PROCESS_DTO
+ {
+ ///
+ /// 奇瑞零件号
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件号")]
+ [ImporterHeader(Name = "奇瑞零件号")]
+ public string CheryProductNo { get; set; }
+ ///
+ /// 奇瑞零件名称
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件名称")]
+ [ImporterHeader(Name = "奇瑞零件名称")]
+ public string CheryProductName { get; set; }
+ ///
+ /// 供应商总成零件号
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件号")]
+ [ImporterHeader(Name = "供应商总成零件号")]
+ public string VendorProductNo { get; set; }
+ ///
+ /// 供应商总成零件名称
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件名称")]
+ [ImporterHeader(Name = "供应商总成零件名称")]
+ public string VendorProductName { get; set; }
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 工艺编码
+ ///
+ [ExporterHeader(DisplayName = "工艺编码")]
+ [ImporterHeader(Name = "工艺编码")]
+ public string TechCode { get; set; }
+ ///
+ /// 工艺名称
+ ///
+ [ExporterHeader(DisplayName = "工艺名称")]
+ [ImporterHeader(Name = "工艺名称")]
+ public string TechName { get; set; }
+ ///
+ /// 有效期,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "有效期")]
+ [ImporterHeader(Name = "有效期")]
+ public string ValidPeriod { get; set; }
+ ///
+ /// 工艺版本
+ ///
+ [ExporterHeader(DisplayName = "工艺版本")]
+ [ImporterHeader(Name = "工艺版本")]
+ public string TechVersion { get; set; }
+ ///
+ /// 模具编码
+ ///
+ [ExporterHeader(DisplayName = "模具编码")]
+ [ImporterHeader(Name = "模具编码")]
+ public string MoldCode { get; set; }
+ ///
+ /// 模具名称
+ ///
+ [ExporterHeader(DisplayName = "模具名称")]
+ [ImporterHeader(Name = "模具名称")]
+ public string MoldName { get; set; }
+ ///
+ /// 最大加工能力
+ ///
+ [ExporterHeader(DisplayName = "最大加工能力")]
+ [ImporterHeader(Name = "最大加工能力")]
+ public string MaxProcessingCapacity { get; set; }
+ ///
+ /// 工序编码
+ ///
+ [ExporterHeader(DisplayName = "工序编码")]
+ [ImporterHeader(Name = "工序编码")]
+ public string ProcessCode { get; set; }
+ ///
+ /// 工序名称
+ ///
+ [ExporterHeader(DisplayName = "工序名称")]
+ [ImporterHeader(Name = "工序名称")]
+ public string ProcessName { get; set; }
+ ///
+ /// 工序顺序号
+ ///
+ [ExporterHeader(DisplayName = "工序顺序号")]
+ [ImporterHeader(Name = "工序顺序号")]
+ public decimal ProcessOrder { get; set; }
+ ///
+ /// 设备编码
+ ///
+ [ExporterHeader(DisplayName = "设备编码")]
+ [ImporterHeader(Name = "设备编码")]
+ public string DeviceCode { get; set; }
+ ///
+ /// 工序节拍
+ ///
+ [ExporterHeader(DisplayName = "工序节拍")]
+ [ImporterHeader(Name = "工序节拍")]
+ public decimal Rhythm { get; set; }
+ ///
+ /// 节拍单位
+ ///
+ [ExporterHeader(DisplayName = "节拍单位")]
+ [ImporterHeader(Name = "节拍单位")]
+ public string RhythmUnit { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT.cs
new file mode 100644
index 0000000..3e0f034
--- /dev/null
+++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DT.cs
@@ -0,0 +1,192 @@
+using Magicodes.ExporterAndImporter.Core;
+
+namespace TaskManager.Entity.Entitys
+{
+ ///
+ /// 工艺装备
+ ///
+ public class SUPPLIER_PRO_PROCESS_EQUIPMENT_DT
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 奇瑞零件号
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件号")]
+ [ImporterHeader(Name = "奇瑞零件号")]
+ public string CheryProductNo { get; set; }
+ ///
+ /// 奇瑞零件名称
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件名称")]
+ [ImporterHeader(Name = "奇瑞零件名称")]
+ public string CheryProductName { get; set; }
+ ///
+ /// 供应商总成零件号
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件号")]
+ [ImporterHeader(Name = "供应商总成零件号")]
+ public string VendorProductNo { get; set; }
+ ///
+ /// 供应商总成零件名称
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件名称")]
+ [ImporterHeader(Name = "供应商总成零件名称")]
+ public string VendorProductName { get; set; }
+ ///
+ /// 工艺装备类型分类(1模具;2检具;3夹具)
+ ///
+ [ExporterHeader(DisplayName = "工艺装备类型分类")]
+ [ImporterHeader(Name = "工艺装备类型分类")]
+ public decimal DeviceType { get; set; }
+ ///
+ /// 工艺装备编码
+ ///
+ [ExporterHeader(DisplayName = "工艺装备编码")]
+ [ImporterHeader(Name = "工艺装备编码")]
+ public string DeviceCode { get; set; }
+ ///
+ /// 工艺装备名称
+ ///
+ [ExporterHeader(DisplayName = "工艺装备名称")]
+ [ImporterHeader(Name = "工艺装备名称")]
+ public string DeviceName { get; set; }
+ ///
+ /// 生产厂家
+ ///
+ [ExporterHeader(DisplayName = "生产厂家")]
+ [ImporterHeader(Name = "生产厂家")]
+ public string Manufacturer { get; set; }
+ ///
+ /// 工艺装备型号
+ ///
+ [ExporterHeader(DisplayName = "工艺装备型号")]
+ [ImporterHeader(Name = "工艺装备型号")]
+ public string ModelNumber { get; set; }
+ ///
+ /// 工艺装备序列号
+ ///
+ [ExporterHeader(DisplayName = "工艺装备序列号")]
+ [ImporterHeader(Name = "工艺装备序列号")]
+ public string SerialNumber { get; set; }
+ ///
+ /// 工艺装备制造日期,格式(yyyy-MM-dd)
+ ///
+ [ExporterHeader(DisplayName = "工艺装备制造日期")]
+ [ImporterHeader(Name = "工艺装备制造日期")]
+ public string ProductionDate { get; set; }
+ ///
+ /// 主要材质
+ ///
+ [ExporterHeader(DisplayName = "主要材质")]
+ [ImporterHeader(Name = "主要材质")]
+ public string Material { get; set; }
+ ///
+ /// 当前存放地点
+ ///
+ [ExporterHeader(DisplayName = "当前存放地点")]
+ [ImporterHeader(Name = "当前存放地点")]
+ public string CurrentLocation { get; set; }
+ ///
+ /// 工艺装备状态
+ ///
+ [ExporterHeader(DisplayName = "工艺装备状态")]
+ [ImporterHeader(Name = "工艺装备状态")]
+ public string DeviceStatus { get; set; }
+ ///
+ /// 穴腔数量
+ ///
+ [ExporterHeader(DisplayName = "穴腔数量")]
+ [ImporterHeader(Name = "穴腔数量")]
+ public decimal CavityCount { get; set; }
+ ///
+ /// 模具尺寸规格
+ ///
+ [ExporterHeader(DisplayName = "模具尺寸规格")]
+ [ImporterHeader(Name = "模具尺寸规格")]
+ public string MoldSize { get; set; }
+ ///
+ /// 设计寿命单位
+ ///
+ [ExporterHeader(DisplayName = "设计寿命单位")]
+ [ImporterHeader(Name = "设计寿命单位")]
+ public string DesignLifeUnits { get; set; }
+ ///
+ /// 设计寿命
+ ///
+ [ExporterHeader(DisplayName = "设计寿命")]
+ [ImporterHeader(Name = "设计寿命")]
+ public string DesignLifeValue { get; set; }
+ ///
+ /// 当前剩余寿命,
+ ///
+ [ExporterHeader(DisplayName = "当前剩余寿命")]
+ [ImporterHeader(Name = "当前剩余寿命")]
+ public string CurrentUsageCount { get; set; }
+ ///
+ /// 模具大修次数
+ ///
+ [ExporterHeader(DisplayName = "模具大修次数")]
+ [ImporterHeader(Name = "模具大修次数")]
+ public decimal OverhaulCount { get; set; }
+ ///
+ /// 图纸编号描述
+ ///
+ [ExporterHeader(DisplayName = "图纸编号描述")]
+ [ImporterHeader(Name = "图纸编号描述")]
+ public string CoolingChannelLayout { get; set; }
+ ///
+ /// 检测精度
+ ///
+ [ExporterHeader(DisplayName = "检测精度")]
+ [ImporterHeader(Name = "检测精度")]
+ public string DetectionAccuracy { get; set; }
+ ///
+ /// 最近校准日期,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "最近校准日期")]
+ [ImporterHeader(Name = "最近校准日期")]
+ public string CalibrationDate { get; set; }
+ ///
+ /// 校准到期天数
+ ///
+ [ExporterHeader(DisplayName = "校准到期天数")]
+ [ImporterHeader(Name = "校准到期天数")]
+ public string CalibrationDueDays { get; set; }
+ ///
+ /// 允许误差范围
+ ///
+ [ExporterHeader(DisplayName = "允许误差范围")]
+ [ImporterHeader(Name = "允许误差范围")]
+ public string ToleranceRange { get; set; }
+ ///
+ /// 磨损阈值
+ ///
+ [ExporterHeader(DisplayName = "磨损阈值")]
+ [ImporterHeader(Name = "磨损阈值")]
+ public string WearThreshold { get; set; }
+ ///
+ /// 检测范围
+ ///
+ [ExporterHeader(DisplayName = "检测范围")]
+ [ImporterHeader(Name = "检测范围")]
+ public string DetectionRange { get; set; }
+ ///
+ /// 检测单位
+ ///
+ [ExporterHeader(DisplayName = "检测单位")]
+ [ImporterHeader(Name = "检测单位")]
+ public string UnitType { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DTO.cs
new file mode 100644
index 0000000..0cb3a83
--- /dev/null
+++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_PRO_PROCESS_EQUIPMENT_DTO.cs
@@ -0,0 +1,192 @@
+using Magicodes.ExporterAndImporter.Core;
+
+namespace TaskManager.Entity.Entitys
+{
+ ///
+ /// 工艺装备
+ ///
+ public class SUPPLIER_PRO_PROCESS_EQUIPMENT_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 奇瑞零件号
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件号")]
+ [ImporterHeader(Name = "奇瑞零件号")]
+ public string CheryProductNo { get; set; }
+ ///
+ /// 奇瑞零件名称
+ ///
+ [ExporterHeader(DisplayName = "奇瑞零件名称")]
+ [ImporterHeader(Name = "奇瑞零件名称")]
+ public string CheryProductName { get; set; }
+ ///
+ /// 供应商总成零件号
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件号")]
+ [ImporterHeader(Name = "供应商总成零件号")]
+ public string VendorProductNo { get; set; }
+ ///
+ /// 供应商总成零件名称
+ ///
+ [ExporterHeader(DisplayName = "供应商总成零件名称")]
+ [ImporterHeader(Name = "供应商总成零件名称")]
+ public string VendorProductName { get; set; }
+ ///
+ /// 工艺装备类型分类(1模具;2检具;3夹具)
+ ///
+ [ExporterHeader(DisplayName = "工艺装备类型分类")]
+ [ImporterHeader(Name = "工艺装备类型分类")]
+ public decimal DeviceType { get; set; }
+ ///
+ /// 工艺装备编码
+ ///
+ [ExporterHeader(DisplayName = "工艺装备编码")]
+ [ImporterHeader(Name = "工艺装备编码")]
+ public string DeviceCode { get; set; }
+ ///
+ /// 工艺装备名称
+ ///
+ [ExporterHeader(DisplayName = "工艺装备名称")]
+ [ImporterHeader(Name = "工艺装备名称")]
+ public string DeviceName { get; set; }
+ ///
+ /// 生产厂家
+ ///
+ [ExporterHeader(DisplayName = "生产厂家")]
+ [ImporterHeader(Name = "生产厂家")]
+ public string Manufacturer { get; set; }
+ ///
+ /// 工艺装备型号
+ ///
+ [ExporterHeader(DisplayName = "工艺装备型号")]
+ [ImporterHeader(Name = "工艺装备型号")]
+ public string ModelNumber { get; set; }
+ ///
+ /// 工艺装备序列号
+ ///
+ [ExporterHeader(DisplayName = "工艺装备序列号")]
+ [ImporterHeader(Name = "工艺装备序列号")]
+ public string SerialNumber { get; set; }
+ ///
+ /// 工艺装备制造日期,格式(yyyy-MM-dd)
+ ///
+ [ExporterHeader(DisplayName = "工艺装备制造日期")]
+ [ImporterHeader(Name = "工艺装备制造日期")]
+ public string ProductionDate { get; set; }
+ ///
+ /// 主要材质
+ ///
+ [ExporterHeader(DisplayName = "主要材质")]
+ [ImporterHeader(Name = "主要材质")]
+ public string Material { get; set; }
+ ///
+ /// 当前存放地点
+ ///
+ [ExporterHeader(DisplayName = "当前存放地点")]
+ [ImporterHeader(Name = "当前存放地点")]
+ public string CurrentLocation { get; set; }
+ ///
+ /// 工艺装备状态
+ ///
+ [ExporterHeader(DisplayName = "工艺装备状态")]
+ [ImporterHeader(Name = "工艺装备状态")]
+ public string DeviceStatus { get; set; }
+ ///
+ /// 穴腔数量
+ ///
+ [ExporterHeader(DisplayName = "穴腔数量")]
+ [ImporterHeader(Name = "穴腔数量")]
+ public decimal CavityCount { get; set; }
+ ///
+ /// 模具尺寸规格
+ ///
+ [ExporterHeader(DisplayName = "模具尺寸规格")]
+ [ImporterHeader(Name = "模具尺寸规格")]
+ public string MoldSize { get; set; }
+ ///
+ /// 设计寿命单位
+ ///
+ [ExporterHeader(DisplayName = "设计寿命单位")]
+ [ImporterHeader(Name = "设计寿命单位")]
+ public string DesignLifeUnits { get; set; }
+ ///
+ /// 设计寿命
+ ///
+ [ExporterHeader(DisplayName = "设计寿命")]
+ [ImporterHeader(Name = "设计寿命")]
+ public string DesignLifeValue { get; set; }
+ ///
+ /// 当前剩余寿命,
+ ///
+ [ExporterHeader(DisplayName = "当前剩余寿命")]
+ [ImporterHeader(Name = "当前剩余寿命")]
+ public string CurrentUsageCount { get; set; }
+ ///
+ /// 模具大修次数
+ ///
+ [ExporterHeader(DisplayName = "模具大修次数")]
+ [ImporterHeader(Name = "模具大修次数")]
+ public decimal OverhaulCount { get; set; }
+ ///
+ /// 图纸编号描述
+ ///
+ [ExporterHeader(DisplayName = "图纸编号描述")]
+ [ImporterHeader(Name = "图纸编号描述")]
+ public string CoolingChannelLayout { get; set; }
+ ///
+ /// 检测精度
+ ///
+ [ExporterHeader(DisplayName = "检测精度")]
+ [ImporterHeader(Name = "检测精度")]
+ public string DetectionAccuracy { get; set; }
+ ///
+ /// 最近校准日期,格式(yyyy-MM-ddHH:mm:ss)
+ ///
+ [ExporterHeader(DisplayName = "最近校准日期")]
+ [ImporterHeader(Name = "最近校准日期")]
+ public string CalibrationDate { get; set; }
+ ///
+ /// 校准到期天数
+ ///
+ [ExporterHeader(DisplayName = "校准到期天数")]
+ [ImporterHeader(Name = "校准到期天数")]
+ public string CalibrationDueDays { get; set; }
+ ///
+ /// 允许误差范围
+ ///
+ [ExporterHeader(DisplayName = "允许误差范围")]
+ [ImporterHeader(Name = "允许误差范围")]
+ public string ToleranceRange { get; set; }
+ ///
+ /// 磨损阈值
+ ///
+ [ExporterHeader(DisplayName = "磨损阈值")]
+ [ImporterHeader(Name = "磨损阈值")]
+ public string WearThreshold { get; set; }
+ ///
+ /// 检测范围
+ ///
+ [ExporterHeader(DisplayName = "检测范围")]
+ [ImporterHeader(Name = "检测范围")]
+ public string DetectionRange { get; set; }
+ ///
+ /// 检测单位
+ ///
+ [ExporterHeader(DisplayName = "检测单位")]
+ [ImporterHeader(Name = "检测单位")]
+ public string UnitType { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_SINV_DATA_DTO.cs b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_SINV_DATA_DTO.cs
new file mode 100644
index 0000000..5d9649f
--- /dev/null
+++ b/API/TaskManager.Contracts/Dtos/10_17/SUPPLIER_SINV_DATA_DTO.cs
@@ -0,0 +1,90 @@
+using Magicodes.ExporterAndImporter.Core;
+
+namespace TaskManager.Entity
+{
+ ///
+ /// 供应商共享库存
+ ///
+ public class SUPPLIER_SINV_DATA_DTO
+ {
+ ///
+ /// 供应商代码
+ ///
+ [ExporterHeader(DisplayName = "供应商代码")]
+ [ImporterHeader(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+ ///
+ /// 供应商名称
+ ///
+ [ExporterHeader(DisplayName = "供应商名称")]
+ [ImporterHeader(Name = "供应商名称")]
+ public string SupplierName { get; set; }
+ ///
+ /// 零件号
+ ///
+ [ExporterHeader(DisplayName = "零件号")]
+ [ImporterHeader(Name = "零件号")]
+ public string MaterialCode { get; set; }
+ ///
+ /// 零件名称
+ ///
+ [ExporterHeader(DisplayName = "零件名称")]
+ [ImporterHeader(Name = "零件名称")]
+ public string MaterialDescription { get; set; }
+ ///
+ /// 物料类型(成品,半成品,原材料)
+ ///
+ [ExporterHeader(DisplayName = "物料类型")]
+ [ImporterHeader(Name = "物料类型")]
+ public string MaterialType { get; set; }
+ ///
+ /// 当前库存数量
+ ///
+ [ExporterHeader(DisplayName = "当前库存数量")]
+ [ImporterHeader(Name = "当前库存数量")]
+ public decimal QuantityCurrent { get; set; }
+ ///
+ /// 原材料在途数量
+ ///
+ [ExporterHeader(DisplayName = "原材料在途数量")]
+ [ImporterHeader(Name = "原材料在途数量")]
+ public decimal QuantityPlan { get; set; }
+ ///
+ /// 库存状态(生产件,呆滞件,备件,KD件)
+ ///
+ [ExporterHeader(DisplayName = "库存状态")]
+ [ImporterHeader(Name = "库存状态")]
+ public string InventoryStatus { get; set; }
+ ///
+ /// 安全库存
+ ///
+ [ExporterHeader(DisplayName = "安全库存")]
+ [ImporterHeader(Name = "安全库存")]
+ public decimal SafetyStock { get; set; }
+ ///
+ /// 生产/采购周期:成品即半成品为生产周期(天),原材料为采购周期(天)
+ ///
+ [ExporterHeader(DisplayName = "生产/采购周期")]
+ [ImporterHeader(Name = "生产/采购周期")]
+ public string ProductionCycle { get; set; }
+ ///
+ /// 库存更新时间-格式:yyyy-MM-ddHH:mm:ss
+ ///
+ [ExporterHeader(DisplayName = "库存更新时间")]
+ [ImporterHeader(Name = "库存更新时间")]
+ public string DataUpdateTime { get; set; }
+ ///
+ /// 批次
+ ///
+ [ExporterHeader(DisplayName = "批次")]
+ [ImporterHeader(Name = "批次")]
+ public string? SupplierBatch { get; set; }
+ ///
+ /// 有效期截止日期 非必填
+ ///
+ [ExporterHeader(DisplayName = "有效期截止日期")]
+ [ImporterHeader(Name = "有效期截止日期")]
+ public string? SupplieryxqDate { get; set; }
+ }
+
+}
diff --git a/API/TaskManager.Entity/Entity.cs b/API/TaskManager.Entity/Entity.cs
index 9cc3261..6adf0cd 100644
--- a/API/TaskManager.Entity/Entity.cs
+++ b/API/TaskManager.Entity/Entity.cs
@@ -240,7 +240,7 @@ namespace TaskManager.Entity
/// 数据总量(任务处理的数据条目数)
///
public int DataCount { get; set; }
- [ExporterHeader(DisplayName = "发布客户")]
+ [ExporterHeader(DisplayName = "客户名")]
///
/// 发布给那个客户
///
diff --git a/API/Wood.Admin.WebApi/Startup.cs b/API/Wood.Admin.WebApi/Startup.cs
index f777392..042d041 100644
--- a/API/Wood.Admin.WebApi/Startup.cs
+++ b/API/Wood.Admin.WebApi/Startup.cs
@@ -97,50 +97,50 @@ namespace Wood.Admin.WebApi
services.AddSqlSugar(Configuration);
services.AddHttpClient();
- services.AddScoped();
+ //services.AddScoped();
- services.AddScoped();
+ //services.AddScoped();
- // 注册所有需要通过 GetRequiredService 获取的服务
+ //// 注册所有需要通过 GetRequiredService 获取的服务
- // 1. 整车月度生产计划相关
- services.AddScoped();
+ //// 1. 整车月度生产计划相关
+ //services.AddScoped();
- // 2. M+6月物料需求计划相关
- services.AddScoped();
+ //// 2. M+6月物料需求计划相关
+ //services.AddScoped();
- // 3. 日物料需求计划相关
- services.AddScoped();
+ //// 3. 日物料需求计划相关
+ //services.AddScoped();
- // 4. 计划协议相关
- services.AddScoped();
+ //// 4. 计划协议相关
+ //services.AddScoped();
- // 5. 采购订单相关
- services.AddScoped();
+ //// 5. 采购订单相关
+ //services.AddScoped();
- // 6. 过焊装未过总装相关
- services.AddScoped();
+ //// 6. 过焊装未过总装相关
+ //services.AddScoped();
- // 7. 过涂装未过总装相关
- services.AddScoped(); // 注意类型名是否包含大小写问题(如驼峰命名)
+ //// 7. 过涂装未过总装相关
+ //services.AddScoped(); // 注意类型名是否包含大小写问题(如驼峰命名)
- // 8. 排序供货相关
- services.AddScoped();
+ //// 8. 排序供货相关
+ //services.AddScoped();
- // 9. 看板配送单相关
- services.AddScoped();
+ //// 9. 看板配送单相关
+ //services.AddScoped();
- // 10. 退货单相关
- services.AddScoped();
+ //// 10. 退货单相关
+ //services.AddScoped();
- // 11. 奇瑞RDC共享库存相关
- services.AddScoped();
+ //// 11. 奇瑞RDC共享库存相关
+ //services.AddScoped();
- // 12. 日MRP预警推移相关
- services.AddScoped();
+ //// 12. 日MRP预警推移相关
+ //services.AddScoped();
- // 13. 供应商共享库存相关
- services.AddScoped();
+ //// 13. 供应商共享库存相关
+ //services.AddScoped();
// 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();
- 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
diff --git a/API/Wood.Admin.WebApi/Wood.Admin.WebApi.csproj b/API/Wood.Admin.WebApi/Wood.Admin.WebApi.csproj
index dd5fcd3..91eb673 100644
--- a/API/Wood.Admin.WebApi/Wood.Admin.WebApi.csproj
+++ b/API/Wood.Admin.WebApi/Wood.Admin.WebApi.csproj
@@ -59,3 +59,4 @@
+
diff --git a/API/Wood.Admin.WebApi/appsettings.json b/API/Wood.Admin.WebApi/appsettings.json
index 9fdde1b..abea926 100644
--- a/API/Wood.Admin.WebApi/appsettings.json
+++ b/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, //是否开启数据库初始化,
diff --git a/API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs b/API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs
index 65f6d96..cc3fccb 100644
--- a/API/Wood.Service/Controllers/CheryRecurringJobBaseController.cs
+++ b/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
/// 返回DTOJson
protected async Task Post(string url, string path, string jsonData)
{
-
-
try
{
// 生成签名参数
diff --git a/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs
index cabf5ca..82fc756 100644
--- a/API/Wood.Service/Controllers/CheryRecurringJobInputPageController.cs
+++ b/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 : RecurringJobBaseController where T : BaseEntity ,new()
+ public class CheryRecurringJobInputPageController : RecurringJobBaseController
+ where T : BaseEntity ,new()
+ where TDTO:class,new()
{
protected readonly IRepository _repository;
public CheryRecurringJobInputPageController(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log)
@@ -27,6 +33,32 @@ namespace TaskManager.Controllers
_repository = repository;
}
+
+
+ ///
+ /// 手工发送调用接口
+ ///
+ /// 任务名称
+ /// 请求日期
+ /// 客户(Chery)
+ ///
+ [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 PostPageAsync(PagedRequest t)
+ private async Task PostPageAsync(PagedRequest t)
{
try
{
@@ -108,13 +140,11 @@ 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();
int pageSize = 1000;
if (!sublist.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 pagedRequest = new PagedRequest()
+ #region dto转换作为参数发给
+ List dtos = new List();
+ foreach (var itm in records)
+ {
+ TDTO dto = new TDTO();
+ dto.InjectFrom(itm);
+ dtos.Add(dto);
+ }
+ PagedRequest pagedRequest = new PagedRequest()
{
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>> GetPaged(
+ public async Task GetPaged(
[FromQuery] int pageNumber = 1,
[FromQuery] int pageSize = 10,
[FromQuery] string sortBy = "",
diff --git a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs
index 719c98d..397557b 100644
--- a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs
+++ b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs
@@ -7,6 +7,7 @@ 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;
@@ -30,9 +31,11 @@ namespace TaskManager.Controllers
{
_repository = repository;
}
+ protected virtual async Task CreateTaskAsync(List plist,JobDbContext dbContext)
+ {
-
+ }
[NonAction]
public async Task> FetchAllDataAsync(string inputdate)
{
@@ -47,8 +50,6 @@ namespace TaskManager.Controllers
{
PagedResponse firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, IsForce = false});
-
-
if (firstResponse == null || firstResponse.Code != 200)
{
await _logger.AddError("首次请求失败,无法获取分页信息。", TaskName);
@@ -58,7 +59,6 @@ namespace TaskManager.Controllers
{
await _logger.AddError("首次请求失败,Total为0是否已经全部读取过。", TaskName);
return allData;
-
}
@@ -94,8 +94,8 @@ namespace TaskManager.Controllers
}
_jobDbContext.BulkInsert(pagefirstList);
+ await CreateTaskAsync(pagefirstList,_jobDbContext);
-
// 计算总页数
int totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
@@ -121,6 +121,7 @@ namespace TaskManager.Controllers
entity.CreationTime = DateTime.Now;
pageList.Add(entity);
allData.Add(itm);
+
}
}
else
@@ -136,10 +137,8 @@ namespace TaskManager.Controllers
}
}
-
-
-
_jobDbContext.BulkInsert(pageList);
+ await CreateTaskAsync(pageList, _jobDbContext);
await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName);
}
else
@@ -203,6 +202,7 @@ namespace TaskManager.Controllers
}
}
_jobDbContext.BulkInsert(pagefirstList);
+ await CreateTaskAsync(pagefirstList, _jobDbContext);
//Console.WriteLine($"总记录数: {totalItems}, 每页大小: {pageSize}");
// 计算总页数
int totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
@@ -242,6 +242,7 @@ namespace TaskManager.Controllers
}
}
_jobDbContext.BulkInsert(pageList);
+ await CreateTaskAsync(pageList, _jobDbContext);
await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName);
}
else
@@ -302,11 +303,26 @@ namespace TaskManager.Controllers
}
}
- [NonAction]
- public virtual async Task TestAsync(string url, string path, string taskName, string inputdate)
+ ///
+ /// 手工获取调用接口
+ ///
+ /// 任务名称
+ /// 请求日期
+ /// 客户(Chery)
+ ///
+ [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);
}
@@ -388,7 +404,7 @@ namespace TaskManager.Controllers
/// 过滤条件
///
[HttpGet]
- public async Task>> GetPaged(
+ public async Task GetPaged(
[FromQuery] int pageNumber = 1,
[FromQuery] int pageSize = 10,
[FromQuery] string sortBy = "",
@@ -408,7 +424,7 @@ namespace TaskManager.Controllers
Expression> filter = null;
var pagedResult = await _repository.GetPagedAsync(filter, pagingParams);
- return Ok(pagedResult);
+ return Ok(pagedResult);
}
///
diff --git a/API/Wood.Service/Controllers/CherySupplierConDateService.cs b/API/Wood.Service/Controllers/CherySupplierConDateService.cs
new file mode 100644
index 0000000..1364070
--- /dev/null
+++ b/API/Wood.Service/Controllers/CherySupplierConDateService.cs
@@ -0,0 +1,13 @@
+using TaskManager.Contracts.Dtos;
+using TaskManager.Entity.Entitys;
+using TaskManager.EntityFramework;
+
+namespace TaskManager.Controllers
+{
+ public class SupplierConDateService : CheryRecurringJobInputPageController
+ {
+ public SupplierConDateService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
+ {
+ }
+ }
+}
diff --git a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs
new file mode 100644
index 0000000..988869a
--- /dev/null
+++ b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs
@@ -0,0 +1,12 @@
+using TaskManager.Entity.Entitys;
+using TaskManager.EntityFramework;
+
+namespace TaskManager.Controllers
+{
+ public class CherySupplierConMmrpService : CheryRecurringJobInputPageController
+ {
+ public CherySupplierConMmrpService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository repository) : base(httpClient, jobDbContext, log, repository)
+ {
+ }
+ }
+}
diff --git a/API/Wood.Service/Controllers/NormalBaseController.cs b/API/Wood.Service/Controllers/NormalBaseController.cs
index 7d7ee6d..6d434d9 100644
--- a/API/Wood.Service/Controllers/NormalBaseController.cs
+++ b/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:ControllerBase where T:BaseEntity ,new()
+ public class NormalBaseController:ControllerBase,IScoped where T:BaseEntity ,new()
{
protected readonly JobDbContext _context;
@@ -130,7 +131,7 @@ namespace Wood.Service.Controllers
Expression> filter = null;
var pagedResult = await _repository.GetPagedAsync(filter, pagingParams);
- return new JsonResult(pagedResult);
+ return Ok(pagedResult);
}
///
diff --git a/API/Wood.Service/Controllers/SupplierConDateService.cs b/API/Wood.Service/Controllers/SupplierConDateService.cs
deleted file mode 100644
index 6c610cf..0000000
--- a/API/Wood.Service/Controllers/SupplierConDateService.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace TaskManager.Controllers
-{
- public class SupplierConDateService
- {
- }
-}
diff --git a/API/Wood.Service/Controllers/SupplierConMmrpService.cs b/API/Wood.Service/Controllers/SupplierConMmrpService.cs
deleted file mode 100644
index 78425e1..0000000
--- a/API/Wood.Service/Controllers/SupplierConMmrpService.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace TaskManager.Controllers
-{
- public class SupplierConMmrpService
- {
- }
-}
diff --git a/API/Wood.Service/Controllers/TaskConifgureController.cs b/API/Wood.Service/Controllers/TaskConifgureController.cs
index eccf650..81ba2cf 100644
--- a/API/Wood.Service/Controllers/TaskConifgureController.cs
+++ b/API/Wood.Service/Controllers/TaskConifgureController.cs
@@ -71,164 +71,164 @@ namespace TaskManager.Controllers
- ///
- /// 执行铁定任务
- ///
- ///
- ///
- [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();
- 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":
+ /////
+ ///// 执行铁定任务
+ /////
+ /////
+ /////
+ //[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();
+ // 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();
- // await controller1.TestAsync(url, path, taskname, "2025-05-29");
- // break;
+ // // // 添加的代码块
+ // // var controller1 = _builder.GetRequiredService();
+ // // await controller1.TestAsync(url, path, taskname, "2025-05-29");
+ // // break;
- case "M+6月物料需求计划1":
+ // case "M+6月物料需求计划1":
- // 添加的代码块
- var controller2 = _builder.GetRequiredService();
- await controller2.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller2 = _builder.GetRequiredService();
+ // await controller2.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "整车月度生产计划2":
+ // case "整车月度生产计划2":
- // 添加的代码块
- var controller3 = _builder.GetRequiredService();
- await controller3.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller3 = _builder.GetRequiredService();
+ // await controller3.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "M+6月物料需求计划2":
+ // case "M+6月物料需求计划2":
- // 添加的代码块
- var controller4 = _builder.GetRequiredService();
- await controller4.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller4 = _builder.GetRequiredService();
+ // await controller4.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "日物料需求计划":
+ // case "日物料需求计划":
- // 添加的代码块
- var controller5 = _builder.GetRequiredService();
- await controller5.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller5 = _builder.GetRequiredService();
+ // await controller5.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "计划协议":
+ // case "计划协议":
- // 添加的代码块
- var controller6 = _builder.GetRequiredService();
- await controller6.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller6 = _builder.GetRequiredService();
+ // await controller6.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "采购订单":
+ // case "采购订单":
- // 添加的代码块
- var controller7 = _builder.GetRequiredService();
- await controller7.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller7 = _builder.GetRequiredService();
+ // await controller7.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "过焊装未过总装":
+ // case "过焊装未过总装":
- // 添加的代码块
- var controller8 = _builder.GetRequiredService();
- await controller8.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller8 = _builder.GetRequiredService();
+ // await controller8.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "过涂装未过总装":
+ // case "过涂装未过总装":
- // 添加的代码块
- var controller9 = _builder.GetRequiredService();
- await controller9.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller9 = _builder.GetRequiredService();
+ // await controller9.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "排序供货":
+ // case "排序供货":
- // 添加的代码块
- var controller10 = _builder.GetRequiredService();
- await controller10.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller10 = _builder.GetRequiredService();
+ // await controller10.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "看板配送单":
+ // case "看板配送单":
- // 添加的代码块
- var controller11 = _builder.GetRequiredService();
- await controller11.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller11 = _builder.GetRequiredService();
+ // await controller11.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "退货单":
+ // case "退货单":
- // 添加的代码块
- var controller12 = _builder.GetRequiredService();
- await controller12.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller12 = _builder.GetRequiredService();
+ // await controller12.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "奇瑞RDC共享库存":
+ // case "奇瑞RDC共享库存":
- // 添加的代码块
- var controller13 = _builder.GetRequiredService();
- await controller13.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller13 = _builder.GetRequiredService();
+ // await controller13.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "日MRP状态监控":
+ // case "日MRP状态监控":
- // 添加的代码块
- var controller14 = _builder.GetRequiredService();
- await controller14.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller14 = _builder.GetRequiredService();
+ // await controller14.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "日MRP预警推移":
+ // case "日MRP预警推移":
- // 添加的代码块
- var controller15 = _builder.GetRequiredService();
- await controller15.TestAsync(url, path, taskname, "2025-05-29");
- break;
- case "供应商共享库存-上午":
+ // // 添加的代码块
+ // var controller15 = _builder.GetRequiredService();
+ // await controller15.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
+ // case "供应商共享库存-上午":
- // 添加的代码块
- var controller19 = _builder.GetRequiredService();
- await controller19.TestAsync(url, path, taskname, "2025-05-29");
- break;
+ // // 添加的代码块
+ // var controller19 = _builder.GetRequiredService();
+ // await controller19.TestAsync(url, path, taskname, "2025-05-29");
+ // break;
- case "供应商共享库存-晚上":
+ // case "供应商共享库存-晚上":
- // 添加的代码块
- var controller20 = _builder.GetRequiredService();
- await controller20.TestAsync(url, path, taskname, "2025-05-29");
- break;
- }
+ // // 添加的代码块
+ // var controller20 = _builder.GetRequiredService();
+ // 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(
+ RecurringJob.AddOrUpdate(
task.TaskName,
x => ((IDoExecute)x).ExecuteAsync(url, path, task.TaskName, client),
task.Corn,
diff --git a/API/Wood.Service/SystemManage/UserService.cs b/API/Wood.Service/SystemManage/UserService.cs
index 40320bd..a391fa5 100644
--- a/API/Wood.Service/SystemManage/UserService.cs
+++ b/API/Wood.Service/SystemManage/UserService.cs
@@ -165,10 +165,64 @@ namespace Wood.Service.SystemManage
throw Oops.Oh("登录失败,没有相关用户信息!");
}
- ///
- /// 用户租户登录
- ///
- [AllowAnonymous]
+ ///
+ /// 用户登录
+ ///
+ /// 可用租户信息
+ [AllowAnonymous]
+ public async Task LoginExtned(UserLoginParam param)
+ {
+ if (!(int.TryParse(param.CaptchaCode, out int val) && _cache.TryGetCache(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 passOk = new List(); //密码验证通过的账户信息
+ 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("登录失败,没有相关用户信息!");
+ }
+
+
+
+
+
+
+
+
+
+
+ ///
+ /// 用户租户登录
+ ///
+ [AllowAnonymous]
public async Task TenantLogin(UserTenantLoginParam param)
{
if (_cache.TryGetCache(param.Captcha, out string? cacheVal) && cacheVal == param.UserName)