From 52a78f294065bd866376a656f104981cc2655daf Mon Sep 17 00:00:00 2001 From: 44673626 <44673626@qq.com> Date: Fri, 19 Nov 2021 16:09:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=A4=E4=B8=AA=E8=A1=A8?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=A4=A7=E4=BC=97=E5=A4=87=E4=BB=B6?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E5=92=8C=E7=9C=8B=E6=9D=BF=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SettleAccounts/SettleAccountExportDto.cs | 4 +- .../UnSettleAccountExportDto.cs | 3 +- .../WMSKanBan/IWMSVWKanBanAppService.cs | 96 ++++++++ .../WMSKanBan/WMSVWKanBanCreateDto.cs | 14 ++ .../Entities/WMSKanBan/WMSVWKanBanDto.cs | 84 +++++++ .../Entities/WMSKanBan/WMSVWKanBanDtoBase.cs | 85 +++++++ .../WMSKanBan/WMSVWKanBanExportDto.cs | 92 ++++++++ .../WMSKanBan/WMSVWKanBanImportDto.cs | 93 ++++++++ .../WMSKanBan/WMSVWKanBanRequestDto.cs | 93 ++++++++ .../WMSKanBan/WMSVWKanBanVersionDtoBase.cs | 100 ++++++++ .../WMSKanBan/WMSVWKanBantUpdateDto.cs | 16 ++ .../WMSSparePart/IWMSSparePartAppService.cs | 91 ++++++++ .../WMSSparePart/WMSSparePartCreateDto.cs | 14 ++ .../Entities/WMSSparePart/WMSSparePartDto.cs | 122 ++++++++++ .../WMSSparePart/WMSSparePartDtoBase.cs | 124 ++++++++++ .../WMSSparePart/WMSSparePartExportDto.cs | 143 ++++++++++++ .../WMSSparePart/WMSSparePartImportDto.cs | 129 +++++++++++ .../WMSSparePart/WMSSparePartRequestDto.cs | 129 +++++++++++ .../WMSSparePartVersionDtoBase.cs | 100 ++++++++ .../SettleAccount.Application.xml | 20 ++ ...ttleAccountApplicationAutoMapperProfile.cs | 64 +++++- .../Entities/WMS-KanBan/WMSKanBanManager.cs | 31 +++ .../Entities/WMS-KanBan/WMSKanBanSettle.cs | 163 +++++++++++++ .../Entities/WMS-KanBan/WMSKanBanVersion.cs | 47 ++++ .../Entities/WMS-SparePart/WMSSparePart.cs | 215 ++++++++++++++++++ .../WMS-SparePart/WMSSparePartVersion.cs | 47 ++++ ...AccountDbContextModelCreatingExtensions.cs | 136 ++++++++++- ...p.Snowflakes.csprojAssemblyReference.cache | Bin 0 -> 126220 bytes ...n.Sfs.Shared.csprojAssemblyReference.cache | Bin 0 -> 22213 bytes .../Win.Utils.csprojAssemblyReference.cache | Bin 0 -> 424 bytes 30 files changed, 2248 insertions(+), 7 deletions(-) create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/IWMSVWKanBanAppService.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanCreateDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanDtoBase.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanExportDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanImportDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanRequestDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanVersionDtoBase.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBantUpdateDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/IWMSSparePartAppService.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartCreateDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartDtoBase.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartExportDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartImportDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartRequestDto.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartVersionDtoBase.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanManager.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanSettle.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanVersion.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-SparePart/WMSSparePart.cs create mode 100644 src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-SparePart/WMSSparePartVersion.cs create mode 100644 src/Shared/Win.Abp.Snowflakes/obj/Debug/netcoreapp5/Win.Abp.Snowflakes.csprojAssemblyReference.cache create mode 100644 src/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.csprojAssemblyReference.cache create mode 100644 src/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.csprojAssemblyReference.cache diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/SettleAccounts/SettleAccountExportDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/SettleAccounts/SettleAccountExportDto.cs index 1e09d2be..6cb9cbb1 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/SettleAccounts/SettleAccountExportDto.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/SettleAccounts/SettleAccountExportDto.cs @@ -80,7 +80,7 @@ namespace Win.Sfs.SettleAccount.Entities.SettleAccounts [ExporterHeader(DisplayName = "结算供应商")] public virtual string SettlementSupplier { get; set; } - [ExporterHeader(DisplayName = "结算状态")] - public virtual int State { get; set; } + //[ExporterHeader(DisplayName = "结算状态")] + //public virtual int State { get; set; } } } diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/UnSettleAccounts/UnSettleAccountExportDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/UnSettleAccounts/UnSettleAccountExportDto.cs index 842d9d31..37e4eb0f 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/UnSettleAccounts/UnSettleAccountExportDto.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/UnSettleAccounts/UnSettleAccountExportDto.cs @@ -80,8 +80,7 @@ namespace Win.Sfs.SettleAccount.Entities.SettleAccounts [ExporterHeader(DisplayName = "结算供应商")] public virtual string SettlementSupplier { get; set; } - [ExporterHeader(DisplayName = "结算状态")] - public virtual int State { get; set; } + [ExporterHeader(DisplayName = "未结算原因")] public string UnsettledReason { get; set; } diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/IWMSVWKanBanAppService.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/IWMSVWKanBanAppService.cs new file mode 100644 index 00000000..1ef8185e --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/IWMSVWKanBanAppService.cs @@ -0,0 +1,96 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; + +namespace Win.Sfs.SettleAccount.Entities.WMSKanBan +{ + public interface IWMSVWKanBanAppService + + { + + + + /// + /// 导入功能 + /// + /// 上传的文件(前端已经限制只能上传一个附件) + /// + + Task WMSVWKanBanUploadExcelImport([FromForm] IFormFileCollection files, Guid branchId, string year, string period, string version, string customerCode); + + + + + /// + /// 按ID获取唯一实体 + /// + /// + /// 返回实体全部属性 + /// + /// ID + /// 实体DTO + + Task GetAsync(Guid id); + + /// + /// 根据筛选条件获取实体列表 + /// + /// + /// 请求条件包括:筛选条件列表,排序条件,数据数量,页码 + /// + /// 请求条件 + /// 实体DTO列表 + + Task> GetListAsync(WMSVWKanBanRequestDto input); + + + + + /// + /// 根据筛选条件获取实体列表 + /// + /// + /// 请求条件包括:筛选条件列表,排序条件,数据数量,页码 + /// + /// 请求条件 + /// 实体DTO列表 + + Task> GetVersionListAsync(WMSVWKanBanVersionRequestDto input); + + + Task ExportAsync(WMSVWKanBanRequestDto input); + + /// + /// 获取实体总数 + /// + /// 实体总数 + + Task GetTotalCountAsync(Guid branchId); + + + + + ///// + ///// 删除实体 + ///// + ///// ID + ///// + + Task DeleteAsync(Guid id); + + + /// + /// 按IDs删除实体列表 + /// + /// IDs + /// 是否执行成功 + + Task DeleteListAsync(List ids); + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanCreateDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanCreateDto.cs new file mode 100644 index 00000000..0824c763 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanCreateDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared; + +namespace Win.Sfs.SettleAccount.Entities.WMSKanBan +{ + public class WMSVWKanBanCreateDto : WMSVWKanBanDtoBase, IBranch + { + public virtual Guid BranchId { get; set; } + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanDto.cs new file mode 100644 index 00000000..a79b1353 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanDto.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared.DtoBase; + +namespace Win.Sfs.SettleAccount.Entities.WMSKanBan +{ + + public class WMSVWKanBanDto : AuditedEntityDtoBase + { + /// + /// 期间 + /// + public string Period { set; get; } + + /// + /// 版本 + /// + public virtual string Version { get; set; } + + /// + ///看板条码号 + /// + public string Kanban { set; get; } + + /// + /// 入库关联号 + /// + public virtual string Relation { set; get; } + /// + /// 工厂 + /// + public virtual string Factory { set; get; } + /// + /// 零件号 + /// + public virtual string MaterialCode { set; get; } + /// + /// 零件类型 + /// + public virtual string PartType { set; get; } + /// + /// R3入库时间 + /// + public virtual DateTime SettleInputDate { set; get; } + + + /// + ///供应商编码 + /// + public virtual string SupplierCode { get; set; } + /// + /// 数量 + /// + public virtual decimal Qty { get; set; } + /// + /// 批次 + /// + + public virtual string Batch { get; set; } + + /// + /// 入库结算标识 + /// + public virtual string Flag { get; set; } + + /// + /// 结算日期 + /// + public virtual DateTime SettleDate { get; set; } + + /// + /// 结算状态 + /// + public virtual string State { get; set; } + + /// + /// 备注 + /// + public virtual string Remark { get; set; } + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanDtoBase.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanDtoBase.cs new file mode 100644 index 00000000..def36a38 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanDtoBase.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared.DtoBase; + +namespace Win.Sfs.SettleAccount.Entities.WMSKanBan +{ + public class WMSVWKanBanDtoBase : CreateOrUpdateEntityDtoBase + { + + /// + /// 期间 + /// + public string Period { set; get; } + + + + /// + ///看板条码号 + /// + public string Kanban { set; get; } + + /// + /// 入库关联号 + /// + public virtual string Relation { set; get; } + /// + /// 工厂 + /// + public virtual string Factory { set; get; } + /// + /// 零件号 + /// + public virtual string MaterialCode { set; get; } + /// + /// 零件类型 + /// + public virtual string PartType { set; get; } + /// + /// R3入库时间 + /// + public virtual DateTime SettleInputDate { set; get; } + + + /// + ///供应商编码 + /// + public virtual string SupplierCode { get; set; } + /// + /// 数量 + /// + public virtual decimal Qty { get; set; } + /// + /// 批次 + /// + + public virtual string Batch { get; set; } + + /// + /// 入库结算标识 + /// + public virtual string Flag { get; set; } + + /// + /// 结算日期 + /// + public virtual DateTime SettleDate { get; set; } + + /// + /// 结算状态 + /// + public virtual int State { get; set; } + + + public virtual string Version { get; set; } + /// + /// 备注 + /// + public virtual string Remark { get; set; } + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanExportDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanExportDto.cs new file mode 100644 index 00000000..21e830f3 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanExportDto.cs @@ -0,0 +1,92 @@ +using Magicodes.ExporterAndImporter.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Win.Sfs.SettleAccount.Entities.WMSKanBan +{ + public class WMSVWKanBanExportDto + { + + /// + /// 期间 + /// + [ExporterHeader(DisplayName = "期间")] + public string Period { set; get; } + + /// + /// 版本 + /// + [ExporterHeader(DisplayName = "版本")] + public virtual string Version { get; set; } + + /// + ///看板条码号 + /// + [ExporterHeader(DisplayName = "看板条码号")] + public string Kanban { set; get; } + + /// + /// 入库关联号 + /// + [ExporterHeader(DisplayName = "入库关联号")] + public virtual string Relation { set; get; } + /// + /// 工厂 + /// + [ExporterHeader(DisplayName = "工厂")] + public virtual string Factory { set; get; } + /// + /// 零件号 + /// + [ExporterHeader(DisplayName = "零件号")] + public virtual string MaterialCode { set; get; } + /// + /// 零件类型 + /// + [ExporterHeader(DisplayName = "零件类型")] + public virtual string PartType { set; get; } + /// + /// R3入库日期 + /// + [ExporterHeader(DisplayName = "R3入库日期")] + public virtual DateTime SettleInputDate { set; get; } + + + /// + ///供应商编码 + /// + [ExporterHeader(DisplayName = "供应商")] + public virtual string SupplierCode { get; set; } + /// + /// 数量 + /// + [ExporterHeader(DisplayName = "数量")] + public virtual decimal Qty { get; set; } + /// + /// 批次 + /// + [ExporterHeader(DisplayName = "批次")] + public virtual string Batch { get; set; } + + /// + /// 入库结算标识 + /// + [ExporterHeader(DisplayName = "入库结算标识")] + public virtual string Flag { get; set; } + + /// + /// 结算日期 + /// + [ExporterHeader(DisplayName = "R3结算时间")] + public virtual DateTime SettleDate { get; set; } + + /// + /// 结算状态 + /// + [ExporterHeader(DisplayName = "结算状态")] + public virtual string State { get; set; } + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanImportDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanImportDto.cs new file mode 100644 index 00000000..3bdd6acf --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanImportDto.cs @@ -0,0 +1,93 @@ +using Magicodes.ExporterAndImporter.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Win.Sfs.SettleAccount.Entities.WMSKanBan +{ + public class WMSVWKanBanImportDto + { + + ///// + ///// 期间 + ///// + //[ImporterHeader(Name = "期间")] + //public string Period { set; get; } + + ///// + ///// 版本 + ///// + //[ImporterHeader(Name = "版本")] + //public virtual string Version { get; set; } + + /// + ///看板条码号 + /// + [ImporterHeader(Name = "看板条码号", FixAllSpace = true)] + public string Kanban { set; get; } + + /// + /// 入库关联号 + /// + [ImporterHeader(Name = "入库关联号")] + public virtual string Relation { set; get; } + /// + /// 工厂 + /// + [ImporterHeader(Name = "工厂")] + public virtual string Factory { set; get; } + /// + /// 零件号 + /// + [ImporterHeader(Name = "零件号", FixAllSpace = true)] + public virtual string MaterialCode { set; get; } + /// + /// 零件类型 + /// + [ImporterHeader(Name = "零件类型")] + public virtual string PartType { set; get; } + /// + /// R3入库日期 + /// + [ImporterHeader(Name = "R3入库日期")] + public virtual string SettleInputDate { set; get; } + + + /// + ///供应商编码 + /// + [ImporterHeader(Name = "供应商")] + public virtual string SupplierCode { get; set; } + /// + /// 数量 + /// + [ImporterHeader(Name = "数量")] + public virtual decimal Qty { get; set; } + /// + /// 批次 + /// + [ImporterHeader(Name = "批次")] + public virtual string Batch { get; set; } + + /// + /// 入库结算标识 + /// + [ImporterHeader(Name = "入库结算标识")] + public virtual string Flag { get; set; } + + /// + /// 结算日期 + /// + [ImporterHeader(Name = "R3结算时间")] + public virtual string SettleDate { get; set; } + + /// + /// 结算状态 + /// + [ImporterHeader(Name = "结算状态")] + public virtual string State { get; set; } + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanRequestDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanRequestDto.cs new file mode 100644 index 00000000..751e15f3 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanRequestDto.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared.DtoBase; + +namespace Win.Sfs.SettleAccount.Entities.WMSKanBan +{ + + public class WMSVWKanBanRequestDto : RequestDtoBase + { + + /// + /// 期间 + /// + public string Period { set; get; } + + /// + /// 版本 + /// + public virtual string Version { get; set; } + + /// + ///看板条码号 + /// + public string Kanban { set; get; } + + /// + /// 入库关联号 + /// + public virtual string Relation { set; get; } + /// + /// 工厂 + /// + public virtual string Factory { set; get; } + /// + /// 零件号 + /// + public virtual string MaterialCode { set; get; } + /// + /// 零件类型 + /// + public virtual string PartType { set; get; } + /// + /// R3入库时间 + /// + public virtual DateTime SettleInputDate { set; get; } + + + /// + ///供应商编码 + /// + public virtual string SupplierCode { get; set; } + /// + /// 数量 + /// + public virtual decimal Qty { get; set; } + /// + /// 批次 + /// + + public virtual string Batch { get; set; } + + /// + /// 入库结算标识 + /// + public virtual string Flag { get; set; } + + /// + /// 结算日期 + /// + public virtual DateTime SettleDate { get; set; } + + /// + /// 结算状态 + /// + public virtual string State { get; set; } + + /// + /// 备注 + /// + public virtual string Remark { get; set; } + + public virtual Guid ParentId { get; set; } + public virtual Guid BranchId { get; set; } + + public virtual Guid UserId { get; set; } + + public virtual int FileType { get; set; } + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanVersionDtoBase.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanVersionDtoBase.cs new file mode 100644 index 00000000..2634a16e --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBanVersionDtoBase.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared; +using Win.Sfs.Shared.DtoBase; + +namespace Win.Sfs.SettleAccount.Entities.WMSKanBan +{ + /// + /// SettleAccountVersion + /// + public class WMSVWKanBanVersionDtoBase : CreateOrUpdateEntityDtoBase + { + + public string Year { get; private set; } + /// + /// 期间 + /// + public string Period { get; private set; } + /// + /// 版本号 + /// + public string Version { get; private set; } + + /// + /// 客户号 + /// + public string CustomerCode { private set; get; } + + + } + + + + public class WMSVWKanBanVersionDto : AuditedEntityDtoBase, IBranch + { + public string Year { get; set; } + /// + /// 期间 + /// + public string Period { get; set; } + /// + /// 版本号 + /// + public string Version { get; set; } + + /// + /// 客户号 + /// + public string CustomerCode { set; get; } + public Guid BranchId { get; set; } + } + + public class WMSVWKanBanVersionCreateDto : WMSVWKanBanVersionDtoBase + { } + public class WMSVWKanBanVersionUpdateDto : WMSVWKanBanVersionDtoBase + { } + public class WMSVWKanBanVersionRequestDto : RequestDtoBase, IBranch + { + + public string Year { get; private set; } + /// + /// 期间 + /// + public string Period { get; private set; } + /// + /// 版本号 + /// + public string Version { get; private set; } + + /// + /// 客户号 + /// + public string CustomerCode { private set; get; } + public Guid BranchId { get; set; } + } + + public class WMSVWKanBanVersionImportDto + { + + public string Year { get; private set; } + /// + /// 期间 + /// + public string Period { get; private set; } + /// + /// 版本号 + /// + public string Version { get; private set; } + + /// + /// 客户号 + /// + public string CustomerCode { private set; get; } + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBantUpdateDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBantUpdateDto.cs new file mode 100644 index 00000000..cbc4329f --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSKanBan/WMSVWKanBantUpdateDto.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.SettleAccount.Entities.VWKanBan; + +namespace Win.Sfs.SettleAccount.Entities.WMSKanBan +{ + public class WMSVWKanBantUpdateDto : VWKanBanDtoBase + { + + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/IWMSSparePartAppService.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/IWMSSparePartAppService.cs new file mode 100644 index 00000000..6696223f --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/IWMSSparePartAppService.cs @@ -0,0 +1,91 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; + +namespace Win.Sfs.SettleAccount.Entities.WMSSparePart +{ + public interface IWMSSparePartAppService + { + /// + /// 导入功能 + /// + /// 上传的文件(前端已经限制只能上传一个附件) + /// + + Task WMSSparePartUploadExcelImport([FromForm] IFormFileCollection files, Guid branchId, + string year, string period, string version, string customerCode); + + /// + /// 按ID获取唯一实体 + /// + /// + /// 返回实体全部属性 + /// + /// ID + /// 实体DTO + + Task GetAsync(Guid id); + + /// + /// 根据筛选条件获取实体列表 + /// + /// + /// 请求条件包括:筛选条件列表,排序条件,数据数量,页码 + /// + /// 请求条件 + /// 实体DTO列表 + + Task> GetListAsync(WMSSparePartRequestDto input); + + + + + /// + /// 根据筛选条件获取实体列表 + /// + /// + /// 请求条件包括:筛选条件列表,排序条件,数据数量,页码 + /// + /// 请求条件 + /// 实体DTO列表 + + Task> GetVersionListAsync(WMSSparePartVersionRequestDto input); + + + Task ExportAsync(WMSSparePartRequestDto input); + + /// + /// 获取实体总数 + /// + /// 实体总数 + + Task GetTotalCountAsync(Guid branchId); + + + + + + ///// + ///// 删除实体 + ///// + ///// ID + ///// + + Task DeleteAsync(Guid id); + + + /// + /// 按IDs删除实体列表 + /// + /// IDs + /// 是否执行成功 + + Task DeleteListAsync(List ids); + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartCreateDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartCreateDto.cs new file mode 100644 index 00000000..db4379be --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartCreateDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared; + +namespace Win.Sfs.SettleAccount.Entities.WMSSparePart +{ + public class WMSSparePartCreateDto : WMSSparePartDtoBase, IBranch + { + public virtual Guid BranchId { get; set; } + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartDto.cs new file mode 100644 index 00000000..7d45b460 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartDto.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared.DtoBase; + +namespace Win.Sfs.SettleAccount.Entities.WMSSparePart +{ + public class WMSSparePartDto : AuditedEntityDtoBase + { + /// + ///年 + /// + public string Year { get; set; } + /// + /// 期间 + /// + public string Period { set; get; } + /// + /// 版本号 + /// + public string Version { set; get; } + + /// + /// 行号 + /// + public string LineNumber { set; get; } + + + /// + /// 采购类型 + /// + public string PurchaseType { get; set; } + + /// + /// 采购订单号 + /// + public string PurchaseOrderNo { get; set; } + /// + /// 采购订单行项目 + /// + public string PurchaseOrderNoItem { get; set; } + /// + /// 采购订单文本 + /// + public string PurchaseOrderNoText { get; set; } + /// + /// 收货数量 + /// + public decimal ReceiptQty { get; set; } + + /// + /// 开票数量 + /// + public decimal InvoicedQty { get; set; } + /// + /// 不含税金额 + /// + public decimal AmountNoTax { get; set; } + /// + /// 采购价格不含税 + /// + public decimal PurchasePriceNoTax { get; set; } + /// + /// 科目号 + /// + public string AccountNum { get; set; } + /// + /// 物料代码 + /// + public string MaterialCode { get; set; } + /// + /// 物料描述 + /// + public string MaterialDesc { get; set; } + /// + /// 日期 + /// + public DateTime SpareDate { get; set; } + /// + /// 交货单号 + /// + public string DeliveryOrderNo { get; set; } + /// + /// 交货行号 + /// + public string DeliveryLineNum { get; set; } + /// + /// 批次号 + /// + public string BatchNo { get; set; } + /// + /// 单位 + /// + public string Unit { get; set; } + /// + /// 税率 + /// + public decimal TaxRate { get; set; } + /// + /// 税码 + /// + public string TaxCode { get; set; } + /// + /// 德国发票号 + /// + public string GermanInvoiceNo { get; set; } + /// + /// 工厂 + /// + public string Factory { get; set; } + /// + /// 工厂名称 + /// + public string FactoryName { get; set; } + /// + /// 备注 + /// + public string Extend { set; get; } + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartDtoBase.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartDtoBase.cs new file mode 100644 index 00000000..ff78ca70 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartDtoBase.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared.DtoBase; + +namespace Win.Sfs.SettleAccount.Entities.WMSSparePart +{ + public class WMSSparePartDtoBase : CreateOrUpdateEntityDtoBase + { + + /// + ///年 + /// + public string Year { get; set; } + /// + /// 期间 + /// + public string Period { set; get; } + /// + /// 版本号 + /// + public string Version { set; get; } + + /// + /// 行号 + /// + public string LineNumber { set; get; } + + + /// + /// 采购类型 + /// + public string PurchaseType { get; set; } + + /// + /// 采购订单号 + /// + public string PurchaseOrderNo { get; set; } + /// + /// 采购订单行项目 + /// + public string PurchaseOrderNoItem { get; set; } + /// + /// 采购订单文本 + /// + public string PurchaseOrderNoText { get; set; } + /// + /// 收货数量 + /// + public decimal ReceiptQty { get; set; } + + /// + /// 开票数量 + /// + public decimal InvoicedQty { get; set; } + /// + /// 不含税金额 + /// + public decimal AmountNoTax { get; set; } + /// + /// 采购价格不含税 + /// + public decimal PurchasePriceNoTax { get; set; } + /// + /// 科目号 + /// + public string AccountNum { get; set; } + /// + /// 物料代码 + /// + public string MaterialCode { get; set; } + /// + /// 物料描述 + /// + public string MaterialDesc { get; set; } + /// + /// 日期 + /// + public DateTime SpareDate { get; set; } + /// + /// 交货单号 + /// + public string DeliveryOrderNo { get; set; } + /// + /// 交货行号 + /// + public string DeliveryLineNum { get; set; } + /// + /// 批次号 + /// + public string BatchNo { get; set; } + /// + /// 单位 + /// + public string Unit { get; set; } + /// + /// 税率 + /// + public decimal TaxRate { get; set; } + /// + /// 税码 + /// + public string TaxCode { get; set; } + /// + /// 德国发票号 + /// + public string GermanInvoiceNo { get; set; } + /// + /// 工厂 + /// + public string Factory { get; set; } + /// + /// 工厂名称 + /// + public string FactoryName { get; set; } + /// + /// 备注 + /// + public string Extend { set; get; } + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartExportDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartExportDto.cs new file mode 100644 index 00000000..888e2dd8 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartExportDto.cs @@ -0,0 +1,143 @@ +using Magicodes.ExporterAndImporter.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Win.Sfs.SettleAccount.Entities.WMSSparePart +{ + public class WMSSparePartExportDto + { + + /// + /// 期间 + /// + [ExporterHeader(DisplayName = "期间")] + public string Period { set; get; } + + /// + /// 版本 + /// + [ExporterHeader(DisplayName = "版本")] + public virtual string Version { get; set; } + + + /// + /// 行号 + /// + [ExporterHeader(DisplayName = "行号")] + public string LineNumber { set; get; } + + + /// + /// 采购类型 + /// + [ExporterHeader(DisplayName = "采购类型")] + public string PurchaseType { get; set; } + + /// + /// 采购订单号 + /// + [ExporterHeader(DisplayName = "采购订单号")] + public string PurchaseOrderNo { get; set; } + /// + /// 采购订单行项目 + /// + [ExporterHeader(DisplayName = "采购订单行项目")] + public string PurchaseOrderNoItem { get; set; } + /// + /// 采购订单文本 + /// + [ExporterHeader(DisplayName = "采购订单文本")] + public string PurchaseOrderNoText { get; set; } + /// + /// 收货数量 + /// + [ExporterHeader(DisplayName = "收货数量")] + public decimal ReceiptQty { get; set; } + + /// + /// 开票数量 + /// + [ExporterHeader(DisplayName = "开票数量")] + public decimal InvoicedQty { get; set; } + /// + /// 不含税金额 + /// + [ExporterHeader(DisplayName = "不含税金额")] + public decimal AmountNoTax { get; set; } + /// + /// 采购价格不含税 + /// + [ExporterHeader(DisplayName = "采购价格不含税")] + public decimal PurchasePriceNoTax { get; set; } + /// + /// 科目号 + /// + [ExporterHeader(DisplayName = "科目号")] + public string AccountNum { get; set; } + /// + /// 物料代码 + /// + [ExporterHeader(DisplayName = "物料代码")] + public string MaterialCode { get; set; } + /// + /// 物料描述 + /// + [ExporterHeader(DisplayName = "物料描述")] + public string MaterialDesc { get; set; } + /// + /// 日期 + /// + [ExporterHeader(DisplayName = "日期")] + public DateTime SpareDate { get; set; } + /// + /// 交货单号 + /// + [ExporterHeader(DisplayName = "交货单号")] + public string DeliveryOrderNo { get; set; } + /// + /// 交货行号 + /// + [ExporterHeader(DisplayName = "交货行号")] + public string DeliveryLineNum { get; set; } + /// + /// 批次号 + /// + [ExporterHeader(DisplayName = "批次号")] + public string BatchNo { get; set; } + /// + /// 单位 + /// + [ExporterHeader(DisplayName = "单位")] + public string Unit { get; set; } + /// + /// 税率 + /// + [ExporterHeader(DisplayName = "税率")] + public decimal TaxRate { get; set; } + /// + /// 税码 + /// + [ExporterHeader(DisplayName = "税码")] + public string TaxCode { get; set; } + /// + /// 德国发票号 + /// + [ExporterHeader(DisplayName = "德国发票号")] + public string GermanInvoiceNo { get; set; } + /// + /// 工厂 + /// + [ExporterHeader(DisplayName = "工厂")] + public string Factory { get; set; } + /// + /// 工厂名称 + /// + [ExporterHeader(DisplayName = "工厂名称")] + public string FactoryName { get; set; } + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartImportDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartImportDto.cs new file mode 100644 index 00000000..cd8af4fc --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartImportDto.cs @@ -0,0 +1,129 @@ +using Magicodes.ExporterAndImporter.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Win.Sfs.SettleAccount.Entities.WMSSparePart +{ + public class WMSSparePartImportDto + { + + /// + /// 行号 + /// + [ImporterHeader(Name = "行号")] + public string LineNumber { set; get; } + + + /// + /// 采购类型 + /// + [ImporterHeader(Name = "采购类型")] + public string PurchaseType { get; set; } + + /// + /// 采购订单号 + /// + [ImporterHeader(Name = "采购订单号", FixAllSpace = true)] + public string PurchaseOrderNo { get; set; } + /// + /// 采购订单行项目 + /// + [ImporterHeader(Name = "采购订单行项目")] + public string PurchaseOrderNoItem { get; set; } + /// + /// 采购订单文本 + /// + [ImporterHeader(Name = "采购订单文本")] + public string PurchaseOrderNoText { get; set; } + /// + /// 收货数量 + /// + [ImporterHeader(Name = "收货数量")] + public decimal ReceiptQty { get; set; } + + /// + /// 开票数量 + /// + [ImporterHeader(Name = "开票数量")] + public decimal InvoicedQty { get; set; } + /// + /// 不含税金额 + /// + [ImporterHeader(Name = "不含税金额")] + public decimal AmountNoTax { get; set; } + /// + /// 采购价格不含税 + /// + [ImporterHeader(Name = "采购价格不含税")] + public decimal PurchasePriceNoTax { get; set; } + /// + /// 科目号 + /// + [ImporterHeader(Name = "科目号", FixAllSpace = true)] + public string AccountNum { get; set; } + /// + /// 物料代码 + /// + [ImporterHeader(Name = "物料代码", FixAllSpace = true)] + public string MaterialCode { get; set; } + /// + /// 物料描述 + /// + [ImporterHeader(Name = "物料描述")] + public string MaterialDesc { get; set; } + /// + /// 日期 + /// + [ImporterHeader(Name = "日期")] + public DateTime SpareDate { get; set; } + /// + /// 交货单号 + /// + [ImporterHeader(Name = "交货单号", FixAllSpace = true)] + public string DeliveryOrderNo { get; set; } + /// + /// 交货行号 + /// + [ImporterHeader(Name = "交货行号")] + public string DeliveryLineNum { get; set; } + /// + /// 批次号 + /// + [ImporterHeader(Name = "批次号")] + public string BatchNo { get; set; } + /// + /// 单位 + /// + [ImporterHeader(Name = "单位")] + public string Unit { get; set; } + /// + /// 税率 + /// + [ImporterHeader(Name = "税率")] + public decimal TaxRate { get; set; } + /// + /// 税码 + /// + [ImporterHeader(Name = "税码")] + public string TaxCode { get; set; } + /// + /// 德国发票号 + /// + [ImporterHeader(Name = "德国发票号")] + public string GermanInvoiceNo { get; set; } + /// + /// 工厂 + /// + [ImporterHeader(Name = "工厂")] + public string Factory { get; set; } + /// + /// 工厂名称 + /// + [ImporterHeader(Name = "工厂名称")] + public string FactoryName { get; set; } + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartRequestDto.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartRequestDto.cs new file mode 100644 index 00000000..bc090dda --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartRequestDto.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared.DtoBase; + +namespace Win.Sfs.SettleAccount.Entities.WMSSparePart +{ + public class WMSSparePartRequestDto : RequestDtoBase + { + /// + ///年 + /// + public string Year { get; set; } + /// + /// 期间 + /// + public string Period { set; get; } + /// + /// 版本号 + /// + public string Version { set; get; } + + /// + /// 行号 + /// + public string LineNumber { set; get; } + + + /// + /// 采购类型 + /// + public string PurchaseType { get; set; } + + /// + /// 采购订单号 + /// + public string PurchaseOrderNo { get; set; } + /// + /// 采购订单行项目 + /// + public string PurchaseOrderNoItem { get; set; } + /// + /// 采购订单文本 + /// + public string PurchaseOrderNoText { get; set; } + /// + /// 收货数量 + /// + public decimal ReceiptQty { get; set; } + + /// + /// 开票数量 + /// + public decimal InvoicedQty { get; set; } + /// + /// 不含税金额 + /// + public decimal AmountNoTax { get; set; } + /// + /// 采购价格不含税 + /// + public decimal PurchasePriceNoTax { get; set; } + /// + /// 科目号 + /// + public string AccountNum { get; set; } + /// + /// 物料代码 + /// + public string MaterialCode { get; set; } + /// + /// 物料描述 + /// + public string MaterialDesc { get; set; } + /// + /// 日期 + /// + public DateTime SpareDate { get; set; } + /// + /// 交货单号 + /// + public string DeliveryOrderNo { get; set; } + /// + /// 交货行号 + /// + public string DeliveryLineNum { get; set; } + /// + /// 批次号 + /// + public string BatchNo { get; set; } + /// + /// 单位 + /// + public string Unit { get; set; } + /// + /// 税率 + /// + public decimal TaxRate { get; set; } + /// + /// 税码 + /// + public string TaxCode { get; set; } + /// + /// 德国发票号 + /// + public string GermanInvoiceNo { get; set; } + /// + /// 工厂 + /// + public string Factory { get; set; } + /// + /// 工厂名称 + /// + public string FactoryName { get; set; } + /// + /// 备注 + /// + public string Extend { set; get; } + + public virtual Guid ParentId { get; set; } + public virtual Guid BranchId { get; set; } + + public virtual Guid UserId { get; set; } + + public virtual int FileType { get; set; } + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartVersionDtoBase.cs b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartVersionDtoBase.cs new file mode 100644 index 00000000..b2d78b86 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/WMSSparePart/WMSSparePartVersionDtoBase.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared; +using Win.Sfs.Shared.DtoBase; + +namespace Win.Sfs.SettleAccount.Entities.WMSSparePart +{ + /// + /// SettleAccountVersion + /// + public class WMSSparePartVersionDtoBase : CreateOrUpdateEntityDtoBase + { + + public string Year { get; private set; } + /// + /// 期间 + /// + public string Period { get; private set; } + /// + /// 版本号 + /// + public string Version { get; private set; } + + /// + /// 客户号 + /// + public string CustomerCode { private set; get; } + + + } + + + + public class WMSSparePartVersionDto : AuditedEntityDtoBase, IBranch + { + public string Year { get; set; } + /// + /// 期间 + /// + public string Period { get; set; } + /// + /// 版本号 + /// + public string Version { get; set; } + + /// + /// 客户号 + /// + public string CustomerCode { set; get; } + public Guid BranchId { get; set; } + } + + public class WMSSparePartVersionCreateDto : WMSSparePartVersionDtoBase + { } + public class WMSSparePartVersionUpdateDto : WMSSparePartVersionDtoBase + { } + public class WMSSparePartVersionRequestDto : RequestDtoBase, IBranch + { + + public string Year { get; private set; } + /// + /// 期间 + /// + public string Period { get; private set; } + /// + /// 版本号 + /// + public string Version { get; private set; } + + /// + /// 客户号 + /// + public string CustomerCode { private set; get; } + public Guid BranchId { get; set; } + } + + public class WMSSparePartVersionImportDto + { + + public string Year { get; private set; } + /// + /// 期间 + /// + public string Period { get; private set; } + /// + /// 版本号 + /// + public string Version { get; private set; } + + /// + /// 客户号 + /// + public string CustomerCode { private set; get; } + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccount.Application.xml b/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccount.Application.xml index 20ed6029..17a52d32 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccount.Application.xml +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccount.Application.xml @@ -2308,6 +2308,26 @@ 上传的文件(前端已经限制只能上传一个附件) + + + 大众备件发货 + + + + + 大众备件导入-版本 + + + + + 大众看板发货 + + + + + 大众看板发货-版本 + + 大众看板导入 diff --git a/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs b/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs index c2e7c21c..d74d7c30 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs @@ -79,6 +79,10 @@ using Win.Sfs.SettleAccount.Entities.VWKanBan; using Win.Sfs.SettleAccount.Entities.VWScrapClaims; using Win.Sfs.SettleAccount.Entities.VWSparePart; using Win.Sfs.SettleAccount.Entities.VWKanBanVersion; +using Win.Sfs.SettleAccount.Entities.WMS_KanBan; +using Win.Sfs.SettleAccount.Entities.WMSKanBan; +using Win.Sfs.SettleAccount.Entities.WMS_SparePart; +using Win.Sfs.SettleAccount.Entities.WMSSparePart; namespace Win.Sfs.SettleAccount { @@ -208,12 +212,71 @@ namespace Win.Sfs.SettleAccount CreateMapUnSettleAccount(); CreateMapUnSettleAccountVersion(); + //大众看板发货 + CreateMapWMSVWKanBan(); + CreateMapWMSVWKanBanVersion(); + //大众备件发货 + CreateMapWMSSparePart(); + CreateMapWMSSparePartVersion(); #endregion } #region PG-派格映射 + /// + /// 大众备件发货 + /// + private void CreateMapWMSSparePart() + + { + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + } + + /// + /// 大众备件导入-版本 + /// + private void CreateMapWMSSparePartVersion() + + { + CreateMap().ReverseMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + } + + /// + /// 大众看板发货 + /// + private void CreateMapWMSVWKanBan() + + { + CreateMap().ReverseMap(); + CreateMap().ReverseMap(); + CreateMap() + .ForMember(dest => dest.SettleInputDate, + opt => opt.MapFrom(src => DateTime.ParseExact(src.SettleInputDate, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture))) + .ForMember(dest => dest.SettleDate, + opt => opt.MapFrom(src => DateTime.ParseExact(src.SettleDate, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture))); + CreateMap().ReverseMap(); + } + + /// + /// 大众看板发货-版本 + /// + private void CreateMapWMSVWKanBanVersion() + { + CreateMap().ReverseMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + } /// /// 大众看板导入 /// @@ -246,7 +309,6 @@ namespace Win.Sfs.SettleAccount /// 大众发票导入 /// private void CreateMapInvoice() - { CreateMap().ReverseMap(); CreateMap().ReverseMap(); diff --git a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanManager.cs b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanManager.cs new file mode 100644 index 00000000..169d875e --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanManager.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Services; + +namespace Win.Sfs.SettleAccount.Entities.WMS_KanBan +{ + public class WMSKanBanManager : DomainService + { + private readonly ISettleAccountBranchEfCoreRepository _repository; + private readonly ISettleAccountBranchEfCoreRepository _versionRepository; + public WMSKanBanManager( + ISettleAccountBranchEfCoreRepository repository, + ISettleAccountBranchEfCoreRepository versionRepository + + + ) + { + _versionRepository = versionRepository; + _repository = repository; + + + } + + + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanSettle.cs b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanSettle.cs new file mode 100644 index 00000000..9af5b35b --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanSettle.cs @@ -0,0 +1,163 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared.DomainBase; + +namespace Win.Sfs.SettleAccount.Entities.WMS_KanBan +{ + public class WMSKanBanSettle : FullAuditedAggregateRootBase, ISettleAccountEntityBase + { + /// + ///年度 + /// + public string Year { get; protected set; } + + /// + /// 期间 + /// + public string Period { set; get; } + + /// + /// 版本 + /// + public string Version { set; get; } + /// + /// 看板条码号 + /// + public string Kanban { set; get; } + + /// + /// 入库关联号 + /// + + public string Relation { set; get; } + /// + /// 工厂 + /// + public string Factory { set; get; } + /// + /// 零件号 + /// + public string MaterialCode { set; get; } + /// + /// 零件类型 + /// + public string PartType { set; get; } + /// + /// 供应商编码 + /// + public string SupplierCode { set; get; } + /// + /// R3入库时间 + /// + public DateTime SettleInputDate { set; get; } + + + /// + /// 批次 + /// + public string Batch { set; get; } + + + /// + /// 入库结算标识 + /// + public string Flag { set; get; } + /// + /// 数量 + /// + public decimal Qty { set; get; } + + + /// + /// R3结算时间 + /// + public DateTime SettleDate { set; get; } + /// + /// 结算状态 + /// + public string State { set; get; } + + /// + /// WMS交货单 + /// + public string WMSDeliveryNote { set; get; } + + /// + /// WMS发货状态 + /// + public string WMSDeliverGoodsState { set; get; } + + /// + /// 看板结算状态 + /// + public string WMSKanBanState { set; get; } + + /// + /// 备注 + /// + + public string Extend { set; get; } + + public Guid ParentId { get; protected set; } + + public void SetValue(Guid guid, Guid branchId, string year, string peroid, string version, Guid parentId) + { + Period = peroid; + Year = year; + Id = guid; + Version = version; + BranchId = branchId; + ParentId = parentId; + } + public WMSKanBanSettle() + { } + public WMSKanBanSettle( + Guid id, + Guid branchId, + string year, + string version, + string kanban, + string relation, + string factory, + string materialCode, + string partType, + DateTime settleInputDate, + string supplierCode, + decimal qty, + string batch, + string flag, + DateTime settleDate, + string state, + Guid parentId, + //DateTime creationTime, + Guid guid) : base(id) + { + BranchId = branchId; + Year = year; + Version = version; + Kanban = kanban; + Relation = relation; + Factory = factory; + MaterialCode = materialCode; + PartType = partType; + SettleInputDate = settleInputDate; + SupplierCode = supplierCode; + Qty = qty; + Batch = batch; + Flag = flag; + SettleDate = settleDate; + State = state; + ParentId = parentId; + //CreationTime = creationTime; + CreatorId = guid; + } + + + + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanVersion.cs b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanVersion.cs new file mode 100644 index 00000000..84b4f406 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-KanBan/WMSKanBanVersion.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared.DomainBase; + +namespace Win.Sfs.SettleAccount.Entities.WMS_KanBan +{ + public class WMSKanBanVersion : FullAuditedAggregateRootBase, ISettleAccountEntityBase + { + + public WMSKanBanVersion() + { } + + public string Year { get; private set; } + /// + /// 期间 + /// + public string Period { get; private set; } + /// + /// 版本号 + /// + public string Version { get; set; } + + /// + /// 客户号 + /// + public string CustomerCode { private set; get; } + + + public WMSKanBanVersion( + Guid id, + Guid branchId, + string year, string period, string version, string customerCode) : base(id) + { + BranchId = branchId; + Year = year; + Period = period; + Version = version; + CustomerCode = customerCode; + + } + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-SparePart/WMSSparePart.cs b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-SparePart/WMSSparePart.cs new file mode 100644 index 00000000..6497f2c3 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-SparePart/WMSSparePart.cs @@ -0,0 +1,215 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared.DomainBase; + +namespace Win.Sfs.SettleAccount.Entities.WMS_SparePart +{ + public class WMSSparePart : FullAuditedAggregateRootBase, ISettleAccountEntityBase + { + public WMSSparePart() + { } + + public void SetValue(Guid guid, Guid branchId, string year, string peroid, string version) + { + Period = peroid; + Year = year; + Id = guid; + Version = version; + BranchId = branchId; + } + public WMSSparePart(Guid Id, string year, string period, string version, string lineNumber, + string purchaseType, string purchaseOrderNo, string purchaseOrderNoItem, string purchaseOrderNoText, + decimal receiptQty, decimal invoicedQty, decimal amountNoTax, decimal purchasePriceNoTax, + string accountNum, string materialCode, string materialDesc, DateTime spareDate, string deliveryOrderNo, + string deliveryLineNum, string batchNo, string unit, decimal taxRate, string taxCode, string factory + + ) : base(Id) + { + Year = year; + Period = period; + Version = version; + LineNumber = lineNumber; + PurchaseType = purchaseType; + PurchaseOrderNo = purchaseOrderNo; + PurchaseOrderNoItem = purchaseOrderNoItem; + PurchaseOrderNoText = purchaseOrderNoText; + ReceiptQty = receiptQty; + InvoicedQty = invoicedQty; + AmountNoTax = amountNoTax; + PurchasePriceNoTax = purchasePriceNoTax; + AccountNum = accountNum; + MaterialCode = materialCode; + MaterialDesc = materialDesc; + SpareDate = spareDate; + DeliveryOrderNo = deliveryOrderNo; + DeliveryLineNum = deliveryLineNum; + BatchNo = batchNo; + Unit = unit; + TaxRate = taxRate; + TaxCode = taxCode; + Factory = factory; + } + + //行号 采购类型 采购订单号 采购订单行项目 采购订单文本 收货数量 开票数量 不含税金额 采购价格不含税 + //科目号 物料代码 物料描述 日期 交货单号 交货行号 批次号 单位 税率 税码 + //德国发票号 AP_REQUISITION_MIMRS.GERMANY_INVOCE_AMOUNT 借贷 PO币种 工厂 工厂名称 BM 单号 + + /// + ///年 + /// + [Display(Name = "年")] + public string Year { get; set; } + /// + /// 期间 + /// + [Display(Name = "期间")] + public string Period { set; get; } + /// + /// 版本号 + /// + [Display(Name = "版本号")] + public string Version { set; get; } + + /// + /// 行号 + /// + [Display(Name = "行号")] + public string LineNumber { set; get; } + + + /// + /// 采购类型 + /// + [Display(Name = "采购类型")] + public string PurchaseType { get; set; } + + /// + /// 采购订单号 + /// + [Display(Name = "采购订单号")] + public string PurchaseOrderNo { get; set; } + /// + /// 采购订单行项目 + /// + [Display(Name = "采购订单行项目")] + public string PurchaseOrderNoItem { get; set; } + /// + /// 采购订单文本 + /// + [Display(Name = "采购订单文本")] + public string PurchaseOrderNoText { get; set; } + /// + /// 收货数量 + /// + [Display(Name = "收货数量")] + public decimal ReceiptQty { get; set; } + + /// + /// 开票数量 + /// + [Display(Name = "开票数量")] + public decimal InvoicedQty { get; set; } + /// + /// 不含税金额 + /// + [Display(Name = "不含税金额")] + public decimal AmountNoTax { get; set; } + /// + /// 采购价格不含税 + /// + [Display(Name = "采购价格不含税")] + public decimal PurchasePriceNoTax { get; set; } + /// + /// 科目号 + /// + [Display(Name = "科目号")] + public string AccountNum { get; set; } + /// + /// 物料代码 + /// + [Display(Name = "物料代码")] + public string MaterialCode { get; set; } + /// + /// 物料描述 + /// + [Display(Name = "物料描述")] + public string MaterialDesc { get; set; } + /// + /// 日期 + /// + [Display(Name = "日期")] + public DateTime SpareDate { get; set; } + /// + /// 交货单号 + /// + [Display(Name = "交货单号")] + public string DeliveryOrderNo { get; set; } + /// + /// 交货行号 + /// + [Display(Name = "交货行号")] + public string DeliveryLineNum { get; set; } + /// + /// 批次号 + /// + [Display(Name = "批次号")] + public string BatchNo { get; set; } + /// + /// 单位 + /// + [Display(Name = "单位")] + public string Unit { get; set; } + /// + /// 税率 + /// + [Display(Name = "税率")] + public decimal TaxRate { get; set; } + /// + /// 税码 + /// + [Display(Name = "税码")] + public string TaxCode { get; set; } + /// + /// 德国发票号 + /// + [Display(Name = "德国发票号")] + public string GermanInvoiceNo { get; set; } + /// + /// 工厂 + /// + [Display(Name = "工厂")] + public string Factory { get; set; } + /// + /// 工厂名称 + /// + [Display(Name = "工厂名称")] + public string FactoryName { get; set; } + /// + /// 备注 + /// + [Display(Name = "备注")] + public string Extend { set; get; } + + /// + /// WMS交货单 + /// + public string WMSDeliveryNote { set; get; } + + /// + /// WMS发货状态 + /// + public string WMSDeliverGoodsState { set; get; } + + /// + /// 看板结算状态 + /// + public string WMSKanBanState { set; get; } + + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-SparePart/WMSSparePartVersion.cs b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-SparePart/WMSSparePartVersion.cs new file mode 100644 index 00000000..8c96e797 --- /dev/null +++ b/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/WMS-SparePart/WMSSparePartVersion.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win.Sfs.Shared.DomainBase; + +namespace Win.Sfs.SettleAccount.Entities.WMS_SparePart +{ + public class WMSSparePartVersion : FullAuditedAggregateRootBase, ISettleAccountEntityBase + { + + public WMSSparePartVersion() + { } + + public string Year { get; private set; } + /// + /// 期间 + /// + public string Period { get; private set; } + /// + /// 版本号 + /// + public string Version { get; set; } + + /// + /// 客户号 + /// + public string CustomerCode { private set; get; } + + + public WMSSparePartVersion( + Guid id, + Guid branchId, + string year, string period, string version, string customerCode) : base(id) + { + BranchId = branchId; + Year = year; + Period = period; + Version = version; + CustomerCode = customerCode; + + } + + + } +} diff --git a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs index f33f1b1d..f8c0f600 100644 --- a/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs +++ b/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs @@ -65,6 +65,7 @@ using Win.Sfs.SettleAccount.Entities.SecMatch; using Win.Sfs.SettleAccount.Entities.VWKanBan; using Win.Sfs.SettleAccount.Entities.VWScrapClaims; using Win.Sfs.SettleAccount.Entities.VWSparePart; +using Win.Sfs.SettleAccount.Entities.WMS_KanBan; namespace Win.Sfs.SettleAccount { @@ -266,26 +267,38 @@ namespace Win.Sfs.SettleAccount #region 派格结算 + //大众看板明细导入 builder.ConfigureKanBan(options); builder.ConfigureKanBanVersion(options); + //大众发票导入 builder.ConfigureInvoice(options); builder.ConfigureInvoiceVersion(options); + //CP7报废和索赔 builder.ConfigureScrapClaims(options); builder.ConfigureScrapClaimsVersion(options); + //大众备件 builder.ConfigureSparePart(options); builder.ConfigureSparePartVersion(options); + //大众FIS未结明细 builder.ConfigureUnSettleAccount(options); builder.ConfigureUnSettleAccountVersion(options); + //大众准时化结算明细导入-已结 builder.ConfigureSettleAccount(options); builder.ConfigureSettleAccountVersion(options); + //大众看板发货 + builder.ConfigureWMSKanBan(options); + builder.ConfigureWMSKanBanVersion(options); + //大众备件发货 + builder.ConfigureWMSSparePart(options); + builder.ConfigureWMSSparePartVersion(options); #endregion @@ -293,6 +306,123 @@ namespace Win.Sfs.SettleAccount #region PG-派格 + + /// + /// 大众备件发货 + /// + /// + /// + private static void ConfigureWMSSparePart(this ModelBuilder builder, SettleAccountModelBuilderConfigurationOptions options) + { + + builder.Entity(b => + { + + b.ToTable($"{options.TablePrefix}_WMSSparePart", options.Schema); + + b.ConfigureByConvention(); + b.Property(x => x.Year).HasMaxLength(CommonConsts.MaxCodeLength); + b.Property(x => x.Period).HasMaxLength(CommonConsts.MaxCodeLength); + b.Property(x => x.Version).HasMaxLength(CommonConsts.MaxCodeLength); + + b.Property(x => x.LineNumber).HasMaxLength(50); + b.Property(x => x.PurchaseType).HasMaxLength(50); + b.Property(x => x.PurchaseOrderNo).IsRequired().HasMaxLength(50); + b.Property(x => x.PurchaseOrderNoItem).HasMaxLength(50); + b.Property(x => x.PurchaseOrderNoText).HasMaxLength(50); + + b.Property(x => x.ReceiptQty).IsRequired(); + b.Property(x => x.InvoicedQty).IsRequired(); + b.Property(x => x.AmountNoTax).IsRequired(); + b.Property(x => x.PurchasePriceNoTax).IsRequired(); + + b.Property(x => x.AccountNum).HasMaxLength(50); + b.Property(x => x.MaterialCode).IsRequired().HasMaxLength(150); + b.Property(x => x.MaterialDesc).HasMaxLength(50); + b.Property(x => x.SpareDate); + b.Property(x => x.DeliveryOrderNo).IsRequired().HasMaxLength(50); + b.Property(x => x.DeliveryLineNum).HasMaxLength(50); + b.Property(x => x.BatchNo).HasMaxLength(50); + b.Property(x => x.Unit).HasMaxLength(50); + b.Property(x => x.TaxRate); + b.Property(x => x.TaxCode); + b.Property(x => x.GermanInvoiceNo).HasMaxLength(100); + b.Property(x => x.Factory).HasMaxLength(50); + b.Property(x => x.FactoryName).HasMaxLength(50); + b.Property(x => x.Extend).HasMaxLength(250); + //创建索引(没有版本一说) + b.HasIndex(x => new { x.PurchaseOrderNo, x.MaterialCode }).IsUnique().HasFilter(IsDeletedFilter); + }); + } + + /// + /// 大众备件发货-版本 + /// + /// + /// + private static void ConfigureWMSSparePartVersion(this ModelBuilder builder, SettleAccountModelBuilderConfigurationOptions options) + { + + builder.Entity(b => + { + b.ToTable($"{options.TablePrefix}_WMSSparePart_Version", options.Schema); + b.ConfigureByConvention(); + b.Property(x => x.Year).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); + b.Property(x => x.Period).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); + b.Property(x => x.Version).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); + b.Property(x => x.CustomerCode).HasMaxLength(CommonConsts.MaxCodeLength); + b.HasIndex(x => new { x.Version }).IsUnique().HasFilter(IsDeletedFilter); + }); + + } + + /// + /// 大众看板发货 + /// + /// + /// + private static void ConfigureWMSKanBan(this ModelBuilder builder, SettleAccountModelBuilderConfigurationOptions options) + { + + builder.Entity(b => + { + + b.ToTable($"{options.TablePrefix}_WMSKanBanSettle", options.Schema); + + b.ConfigureByConvention(); + b.Property(x => x.Kanban).IsRequired().HasMaxLength(150);//必填项 + b.Property(x => x.Relation).HasMaxLength(100); + b.Property(x => x.Factory).HasMaxLength(50); + b.Property(x => x.MaterialCode).IsRequired().HasMaxLength(150); + b.Property(x => x.PartType).HasMaxLength(50); + b.Property(x => x.SupplierCode).HasMaxLength(50); + b.Property(x => x.Batch).HasMaxLength(50); + b.Property(x => x.Flag).HasMaxLength(50); + //创建组合索引 + b.HasIndex(x => new { x.Kanban, x.MaterialCode }).IsUnique().HasFilter(IsDeletedFilter); + + }); + } + /// + /// 大众看板发货-版本 + /// + /// + /// + private static void ConfigureWMSKanBanVersion(this ModelBuilder builder, SettleAccountModelBuilderConfigurationOptions options) + { + + builder.Entity(b => + { + b.ToTable($"{options.TablePrefix}_WMSKanBanSettle_Version", options.Schema); + b.ConfigureByConvention(); + b.Property(x => x.Year).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); + b.Property(x => x.Period).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); + b.Property(x => x.Version).IsRequired().HasMaxLength(CommonConsts.MaxCodeLength); + b.Property(x => x.CustomerCode).HasMaxLength(CommonConsts.MaxCodeLength); + b.HasIndex(x => new { x.Version }).IsUnique().HasFilter(IsDeletedFilter); + }); + } + /// /// 大众看板结算明细导入表结构 /// @@ -315,8 +445,8 @@ namespace Win.Sfs.SettleAccount b.Property(x => x.SupplierCode).HasMaxLength(50); b.Property(x => x.Batch).HasMaxLength(50); b.Property(x => x.Flag).HasMaxLength(50); - //创建索引 - b.HasIndex(x => new { x.Kanban, x.MaterialCode }).IsUnique().HasFilter(IsDeletedFilter); + //创建组合索引 + b.HasIndex(x => new {x.Version, x.Kanban, x.MaterialCode }).IsUnique().HasFilter(IsDeletedFilter); }); } @@ -473,6 +603,8 @@ namespace Win.Sfs.SettleAccount b.Property(x => x.Factory).HasMaxLength(50); b.Property(x => x.FactoryName).HasMaxLength(50); b.Property(x => x.Extend).HasMaxLength(250); + //创建索引 + b.HasIndex(x => new { x.Version, x.PurchaseOrderNo, x.MaterialCode }).IsUnique().HasFilter(IsDeletedFilter); }); } diff --git a/src/Shared/Win.Abp.Snowflakes/obj/Debug/netcoreapp5/Win.Abp.Snowflakes.csprojAssemblyReference.cache b/src/Shared/Win.Abp.Snowflakes/obj/Debug/netcoreapp5/Win.Abp.Snowflakes.csprojAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..d5e121ec25dd08891c38b41b8994b4c09893099d GIT binary patch literal 126220 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 WJgCQxKDPviVlWu9kTGU4Bl!dX1$N~C literal 0 HcmV?d00001