From 0e01e6019a6661f0718413ba9321ed3a4dfe52aa Mon Sep 17 00:00:00 2001 From: zhaoxinyu <89237069@qq.com> Date: Thu, 29 Feb 2024 16:15:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81Kitting?= =?UTF-8?q?=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Equipments/DTOs/EquipmentAreaDTO.cs | 59 +++++ .../DTOs/EquipmentAreaForDongyangExportDTO.cs | 49 ++++ .../Equipments/DTOs/EquipmentDTO.cs | 6 +- .../Equipments/EquipmentAreaPermissions.cs | 21 ++ .../Equipments/IEquipmentAreaAppService.cs | 28 +++ .../Inputs/EquipmentAreaCheckInput.cs | 51 ++++ .../Inputs/EquipmentAreaEditInput.cs | 225 ++++++++++++++++++ .../Inputs/EquipmentAreaImportInput.cs | 53 +++++ .../Equipments/Inputs/EquipmentEditInput.cs | 6 +- .../Kittings/DTOs/KittingDTO.cs | 20 ++ .../Kittings/DTOs/KittingDetailDTO.cs | 49 ++++ .../Kittings/IKttingAppService.cs | 9 + .../Kittings/Inputs/KittingDetailInput.cs | 49 ++++ .../Kittings/Inputs/KittingEditInput.cs | 21 ++ .../Kittings/Inputs/KittingImportInput.cs | 107 +++++++++ .../Kittings/KittingPermissions.cs | 21 ++ ....Sfs.Basedata.Application.Contracts.csproj | 2 +- .../BasedataApplicationAutoMapperProfile.cs | 2 + .../Equipments/EquipmentAreaAppService.cs | 85 +++++++ .../EquipmentAreaAutoMapperProfile.cs | 33 +++ .../Kittings/KittingAppService.cs | 82 +++++++ .../Kittings/KittingAutoMapperProfile.cs | 89 +++++++ .../Equipments/EquipmentArea.cs | 166 +++++++++++++ .../Equipments/EquipmentAreaManager.cs | 29 +++ .../Equipments/IEquipmentAreaManager.cs | 8 + .../Equipments/IEquipmentAreaRepository.cs | 13 + .../Kittings/IKittingManager.cs | 20 ++ .../Kittings/IKittingRepository.cs | 9 + .../Kittings/Kitting.cs | 46 ++++ .../Kittings/KittingDetail.cs | 41 ++++ .../Kittings/KittingManager.cs | 49 ++++ ...asedataDbContextModelCreatingExtensions.cs | 2 + .../BasedataEntityFrameworkCoreModule.cs | 7 + ...entAreaDbContextModelCreatingExtensions.cs | 39 +++ .../EquipmentAreaEfCoreRepository.cs | 56 +++++ ...KittingDbContextModelCreatingExtensions.cs | 71 ++++++ .../Kittings/KittingEfCoreRepository.cs | 75 ++++++ 37 files changed, 1687 insertions(+), 11 deletions(-) create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaDTO.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaForDongyangExportDTO.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/EquipmentAreaPermissions.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentAreaAppService.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaCheckInput.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaEditInput.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaImportInput.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDetailDTO.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/IKttingAppService.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingDetailInput.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingEditInput.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingImportInput.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/KittingPermissions.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAreaAppService.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAreaAutoMapperProfile.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAutoMapperProfile.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentArea.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentAreaManager.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentAreaManager.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentAreaRepository.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/IKittingManager.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/IKittingRepository.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/Kitting.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingDetail.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingManager.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentAreaDbContextModelCreatingExtensions.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentAreaEfCoreRepository.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingDbContextModelCreatingExtensions.cs create mode 100644 be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingEfCoreRepository.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaDTO.cs new file mode 100644 index 000000000..f1de16b9c --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaDTO.cs @@ -0,0 +1,59 @@ +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +using System; +using System.Collections.Generic; + +[Display(Name = "器具基本信息")] + +public class EquipmentAreaDTO : SfsBaseDataDTOBase, IHasCode +{ + + + + + + /// + /// 器具编号 + /// + [Display(Name = "器具编号")] + public string Code { get; set; } + /// + /// 类型 + /// + [Display(Name = "类型")] + public string Type { get; set; } = string.Empty; + /// + /// 型号 + /// + [Display(Name = "型号")] + public string Model { get; set; } = string.Empty; + /// + /// 库位编号 + /// + [Display(Name = "库位编号")] + public string LocCode { get; set; } = string.Empty; + /// + /// 状态 + /// + [Display(Name = "状态")] + public int State { get; set; } = 0; + + + /// + /// 位置编号 + /// + [Display(Name = "位置编号")] + public string AreaCode { get; set; } + + + /// + /// 数量 + /// + [Display(Name = "数量")] + public decimal Qty { get; set; } + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaForDongyangExportDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaForDongyangExportDTO.cs new file mode 100644 index 000000000..baae6ceca --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentAreaForDongyangExportDTO.cs @@ -0,0 +1,49 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +[Display(Name = "物料信息")] +public class EquipmentAreaForDongyangExportDTO +{ + /// + /// 器具编号 + /// + [Display(Name = "器具编号")] + public string Code { get; set; } + /// + /// 类型 + /// + [Display(Name = "类型")] + public string Type { get; set; } = string.Empty; + /// + /// 型号 + /// + [Display(Name = "型号")] + public string Model { get; set; } = string.Empty; + /// + /// 库位编号 + /// + [Display(Name = "库位编号")] + public string LocCode { get; set; } = string.Empty; + /// + /// 状态 + /// + [Display(Name = "状态")] + public int State { get; set; } = 0; + + + /// + /// 位置编号 + /// + [Display(Name = "位置编号")] + public string AreaCode { get; set; } + + + /// + /// 数量 + /// + [Display(Name = "数量")] + public decimal Qty { get; set; } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentDTO.cs index b24b1e152..58c7c3c04 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentDTO.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentDTO.cs @@ -36,11 +36,7 @@ public class EquipmentDTO : SfsBaseDataDTOBase, IHasCode /// [Display(Name = "状态")] public int State { get; set; } = 0; - /// - /// 备注 - /// - [Display(Name = "备注")] - public string Remark { get; set; } = string.Empty; + /// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/EquipmentAreaPermissions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/EquipmentAreaPermissions.cs new file mode 100644 index 000000000..04fa48623 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/EquipmentAreaPermissions.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Authorization.Permissions; +using Win_in.Sfs.Basedata.Domain; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +public static class EquipmentAreaPermissions +{ + + public const string Default = BasedataPermissions.GroupName + "." + nameof(Equipment); + public const string Create = Default + "." + BasedataPermissions.CreateStr; + public const string Update = Default + "." + BasedataPermissions.UpdateStr; + public const string Delete = Default + "." + BasedataPermissions.DeleteStr; + + public static void AddEquipmentPermission(this PermissionGroupDefinition permissionGroup) + { + var EquipmentPermission = permissionGroup.AddPermission(Default, BasedataPermissionDefinitionProvider.L(nameof(Equipment))); + EquipmentPermission.AddChild(Create, BasedataPermissionDefinitionProvider.L(BasedataPermissions.CreateStr)); + EquipmentPermission.AddChild(Update, BasedataPermissionDefinitionProvider.L(BasedataPermissions.UpdateStr)); + EquipmentPermission.AddChild(Delete, BasedataPermissionDefinitionProvider.L(BasedataPermissions.DeleteStr)); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentAreaAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentAreaAppService.cs new file mode 100644 index 000000000..8067e9014 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentAreaAppService.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Win_in.Sfs.Shared.Application.Contracts; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +public interface IEquipmentAreaAppService + : ISfsBaseDataAppServiceBase + , ISfsGetByCodeAppService + , ISfsCheckAppService + , ISfsUpsertAppService +{ + //Task CheckItemIsAvailable(string itemCode); + //[HttpGet("check-item-is-available-no-select-sql")] + //void CheckItemIsAvailable(EquipmentDTO EquipmentDTO); + + //Task> GetListByNameAsync(string name); + + //Task GetOrAddAsync(EquipmentEditInput input); + + //Task GetManageTypeAsync(string itemCode); + //Task> GetManageTypesAsync(List itemCodes); + + //Task UpsertAsyncByInterface(EquipmentEditInput input); + //Task UpsertStdPackQtyAsync(string itemCode, decimal stdpackqty); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaCheckInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaCheckInput.cs new file mode 100644 index 000000000..9b149c6e7 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaCheckInput.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +public class EquipmentAreaCheckInput +{ + /// + /// 器具编号 + /// + [Display(Name = "器具编号")] + public string Code { get; set; } + /// + /// 类型 + /// + [Display(Name = "类型")] + public string Type { get; set; } = string.Empty; + /// + /// 型号 + /// + [Display(Name = "型号")] + public string Model { get; set; } = string.Empty; + /// + /// 库位编号 + /// + [Display(Name = "库位编号")] + public string LocCode { get; set; } = string.Empty; + /// + /// 状态 + /// + [Display(Name = "状态")] + public int State { get; set; } = 0; + + + /// + /// 位置编号 + /// + [Display(Name = "位置编号")] + public string AreaCode { get; set; } + + + /// + /// 数量 + /// + [Display(Name = "数量")] + public decimal Qty { get; set; } + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaEditInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaEditInput.cs new file mode 100644 index 000000000..be0f614ca --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaEditInput.cs @@ -0,0 +1,225 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +public class EquipmentAreaEditInput : SfsBaseDataCreateOrUpdateInputBase +{ + /// + /// 器具编号 + /// + [Display(Name = "器具编号")] + public string Code { get; set; } + /// + /// 类型 + /// + [Display(Name = "类型")] + public string Type { get; set; } = string.Empty; + /// + /// 型号 + /// + [Display(Name = "型号")] + public string Model { get; set; } = string.Empty; + /// + /// 库位编号 + /// + [Display(Name = "库位编号")] + public string LocCode { get; set; } = string.Empty; + /// + /// 状态 + /// + [Display(Name = "状态")] + public int State { get; set; } = 0; + + + /// + /// 位置编号 + /// + [Display(Name = "位置编号")] + public string AreaCode { get; set; } + + + /// + /// 数量 + /// + [Display(Name = "数量")] + public decimal Qty { get; set; } + + + + //#region Base + ///// + ///// 名称 + ///// + //[Display(Name = "名称")] + //[Required(ErrorMessage = "{0}是必填项")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Name { get; set; } + + ///// + ///// 描述1 + ///// + //[Display(Name = "描述1")] + //[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Desc1 { get; set; } + + ///// + ///// 描述2 + ///// + //[Display(Name = "描述2")] + //[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Desc2 { get; set; } + + ///// + ///// 状态 + ///// + //[Display(Name = "状态")] + //[Required(ErrorMessage = "{0}是必填项")] + //public EnumItemStatus Status { get; set; } + + ///// + ///// 制造件 + ///// + //[Display(Name = "制造件")] + //[Required(ErrorMessage = "{0}是必填项")] + //public bool CanMake { get; set; } + + ///// + ///// 采购件 + ///// + //[Display(Name = "采购件")] + //[Required(ErrorMessage = "{0}是必填项")] + //public bool CanBuy { get; set; } + ///// + ///// 外包件 + ///// + //[Display(Name = "外包件")] + //public bool CanOutsourcing { get; set; } + ///// + ///// 回收件 + ///// + //[Display(Name = "回收件")] + //public bool IsRecycled { get; set; } + + ///// + ///// 类型 + ///// + //[Display(Name = "类型")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Type { get; set; } + + ///// + ///// 种类 + ///// + //[Display(Name = "种类")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Category { get; set; } + + ///// + ///// 分组 + ///// + //[Display(Name = "分组")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Group { get; set; } + + ///// + ///// 颜色 + ///// + //[Display(Name = "颜色")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Color { get; set; } + + ///// + ///// 配置 + ///// + //[Display(Name = "配置")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Configuration { get; set; } + + ///// + ///// 虚零件 + ///// + //[Display(Name = "虚零件(Is phantom)")] + //public virtual bool IsPhantom { get; set; } + + ///// + ///// 基本计量单位 + ///// + //[Display(Name = "基本计量单位")] + //[Required(ErrorMessage = "{0}是必填项")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string BasicUom { get; set; } + + ///// + ///// 标包数 + ///// + //[Display(Name = "标包数")] + //[Required(ErrorMessage = "{0}是必填项")] + //public decimal StdPackQty { get; set; } + + ///// + ///// ABC类 + ///// + //[Display(Name = "ABC类")] + //[Required(ErrorMessage = "{0}是必填项", AllowEmptyStrings = true)] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string AbcClass { get; set; } + + ///// + ///// 项目 + ///// + //[Display(Name = "项目")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Project { get; set; } + + ///// + ///// 版本 + ///// + //[Display(Name = "版本")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Version { get; set; } + + ///// + ///// 工程变革 + ///// + //[Display(Name = "工程变革")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Eco { get; set; } + + ///// + ///// 有效期 + ///// + //[Display(Name = "有效期")] + //public int Validity { get; set; } + ///// + ///// 有效期单位 + ///// + //[Display(Name = "有效期单位")] + //public EnumValidityUnit ValidityUnit { get; set; } + + ///// + ///// 管理类型 + ///// + //[Display(Name = "管理类型")] + //public EnumItemManageType ManageType { get; set; } + + ///// + ///// 打印标签用的一个等级 + ///// + //[Display(Name = "Elevel")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Elevel { get; set; } + //#endregion + + //#region Create + ///// + ///// 代码 + ///// + //[Display(Name = "代码")] + //[Required(ErrorMessage = "{0}是必填项")] + //[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + //public string Code { get; set; } + //#endregion +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaImportInput.cs new file mode 100644 index 000000000..b306348dd --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentAreaImportInput.cs @@ -0,0 +1,53 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Application.Contracts; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +[Display(Name = "器具位置")] +public class EquipmentAreaImportInput : SfsBaseDataImportInputBase +{ + /// + /// 器具编号 + /// + [Display(Name = "器具编号")] + public string Code { get; set; } + /// + /// 类型 + /// + [Display(Name = "类型")] + public string Type { get; set; } = string.Empty; + /// + /// 型号 + /// + [Display(Name = "型号")] + public string Model { get; set; } = string.Empty; + /// + /// 库位编号 + /// + [Display(Name = "库位编号")] + public string LocCode { get; set; } = string.Empty; + /// + /// 状态 + /// + [Display(Name = "状态")] + public int State { get; set; } = 0; + + + /// + /// 位置编号 + /// + [Display(Name = "位置编号")] + public string AreaCode { get; set; } + + + /// + /// 数量 + /// + [Display(Name = "数量")] + public decimal Qty { get; set; } + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentEditInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentEditInput.cs index 4822c9a39..aedd223cd 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentEditInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentEditInput.cs @@ -33,11 +33,7 @@ public class EquipmentEditInput : SfsBaseDataCreateOrUpdateInputBase /// [Display(Name = "状态")] public int State { get; set; } = 0; - /// - /// 备注 - /// - [Display(Name = "备注")] - public string Remark { get; set; } = string.Empty; + /// /// 创建人 /// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs new file mode 100644 index 000000000..ac0cb8661 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Basedata.Domain.Shared; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Entities; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +[Display(Name = "Kitting箱")] +public class KittingDTO : SfsBaseDataDTOBase, IHasCode, IHasName +{ + [Display(Name ="编号")] + public string Code { get; set; } + [Display(Name = "名称")] + public string Name { get; set; } + + [Display(Name = "明细")] + public virtual ICollection Details { set; get; }= new List(); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDetailDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDetailDTO.cs new file mode 100644 index 000000000..cfa860a62 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDetailDTO.cs @@ -0,0 +1,49 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Application.Dtos; +using Volo.Abp.MultiTenancy; +using Win_in.Sfs.Basedata.Domain.Shared; +using Win_in.Sfs.Shared.Application.Contracts; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +[Display(Name = "Kitting箱明细")] +public class KittingDetailDTO: AuditedEntityDto, IMultiTenant, IRemark +{ + /// + /// 主表ID + /// + [Display(Name = "主表ID")] + public Guid MasterId { get; set; } + /// + /// 物料编码 + /// + [Display(Name = "物料编码")] + public string PartCode { set; get; } + /// + /// 描述1 + /// + [Display(Name = "描述1")] + public string Desc1 { set; get; } + /// + /// 描述2 + /// + [Display(Name = "描述2")] + public string Desc2 { set; get; } + /// + /// 包装数量 + /// + [Display(Name = "包装数量")] + public decimal Qty { set; get; } + + /// + /// 配置 + /// + [Display(Name = "配置")] + public string Conf { set; get; } + + public Guid? TenantId { set; get; } + + public string Remark { get; set; } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/IKttingAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/IKttingAppService.cs new file mode 100644 index 000000000..ff56f5fab --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/IKttingAppService.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; +using Win_in.Sfs.Shared.Application.Contracts; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +public interface IKittingAppService: ISfsBaseDataAppServiceBase, ISfsGetByCodeAppService +{ + Task UpdateAsync(KittingEditInput input); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingDetailInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingDetailInput.cs new file mode 100644 index 000000000..1b9e2a17b --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingDetailInput.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.MultiTenancy; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Kittings.Inputs; +public class KittingDetailInput: EntityDto, IMultiTenant, IRemark +{ + /// + /// 主表ID + /// + [Display(Name = "主表ID")] + public Guid MasterId { get; set; } + /// + /// 物料编码 + /// + [Display(Name = "物料编码")] + public string PartCode { set; get; } + /// + /// 描述1 + /// + [Display(Name = "描述1")] + public string Desc1 { set; get; } + /// + /// 描述2 + /// + [Display(Name = "描述2")] + public string Desc2 { set; get; } + /// + /// 包装数量 + /// + [Display(Name = "包装数量")] + public decimal Qty { set; get; } + /// + /// 配置 + /// + [Display(Name = "配置")] + public string Conf { set; get; } + [Display(Name = "租户ID")] + public Guid? TenantId { set; get; + } + [Display(Name = "备注")] + public string Remark { get; set; } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingEditInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingEditInput.cs new file mode 100644 index 000000000..422404a21 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingEditInput.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Basedata.Domain.Shared; +using Win_in.Sfs.Basedata.Kittings.Inputs; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Entities; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +public class KittingEditInput : SfsBaseDataCreateOrUpdateInputBase +{ + + public string Code { get; set; } + public string Name { get; set; } + + + public virtual ICollection Details { get; set; }=new List(); + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingImportInput.cs new file mode 100644 index 000000000..e47e7d778 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingImportInput.cs @@ -0,0 +1,107 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Basedata.Domain.Shared; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Entities; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +[Display(Name = "Kitting箱")] +public class KittingImportInput : SfsBaseDataImportInputBase +{ + + public string Code { get; set; } + public string Name { get; set; } + + +} + +//[Serializable] +//public class CustomerDTO : SfsBaseDataDTOBase +//{ +// /// +// ///�ͻ����� +// /// +// [Display(Name = "�ͻ�����")] +// [Required(ErrorMessage = "{0}�DZ�����")] +// [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}�������{1}���ַ�")] +// public string Code { get; set; } + +// /// +// /// �ͻ����� +// /// +// [Display(Name = "�ͻ�����")] +// [Required(ErrorMessage = "{0}�DZ�����")] +// [StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}�������{1}���ַ�")] +// public string Name { get; set; } + +// /// +// /// �ͻ����� +// /// +// [Display(Name = "�ͻ�����")] +// [StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}�������{1}���ַ�")] +// public string Description { get; set; } + +// /// +// /// ��ϵ��ַ +// /// +// [Display(Name = "��ϵ��ַ")] +// [StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}�������{1}���ַ�")] +// public string Address { get; set; } + +// /// +// /// ��ϵ�� +// /// + +// [Display(Name = "��ϵ��")] +// [StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}�������{1}���ַ�")] +// public string Contact { get; set; } + +// /// +// /// ��ϵ�绰 +// /// +// [Display(Name = "��ϵ�绰")] +// public string ContactPhone { get; set; } + +// /// +// /// ��ϵ�ʼ� +// /// +// [Display(Name = "��ϵ�ʼ�")] + +// public string ContactEmail { get; set; } + +// /// +// /// ��ϵ���� +// /// +// [Display(Name = "��ϵ����")] +// public string ContactFax { get; set; } + +// /// +// /// ˰�� +// /// +// [Display(Name = "˰��")] +// public Nullable TaxRate { get; set; } + +// /// +// /// ����ID +// /// +// [Display(Name = "����Id")] +// public Guid CurrencyId { get; set; } + +// /// +// /// ����ID +// /// +// [Display(Name = "��������")] +// public string CurrencyName { get; set; } + +// /// +// /// �ͻ����� +// /// +// [Display(Name = "�ͻ�����")] +// public Nullable CustomerType { get; set; } + +// public bool Enabled { get; set; } + +// //public ICollection CustomerItems { set; get; } +//} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/KittingPermissions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/KittingPermissions.cs new file mode 100644 index 000000000..d2b46bfdd --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/KittingPermissions.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Authorization.Permissions; +using Win_in.Sfs.Basedata.Domain; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +public static class KittingPermissions +{ + + public const string Default = BasedataPermissions.GroupName + "." + nameof(Kitting); + public const string Create = Default + "." + BasedataPermissions.CreateStr; + public const string Update = Default + "." + BasedataPermissions.UpdateStr; + public const string Delete = Default + "." + BasedataPermissions.DeleteStr; + + public static void AddKittingPermission(this PermissionGroupDefinition permissionGroup) + { + var customerPermission = permissionGroup.AddPermission(Default, BasedataPermissionDefinitionProvider.L(nameof(Kitting))); + customerPermission.AddChild(Create, BasedataPermissionDefinitionProvider.L(BasedataPermissions.CreateStr)); + customerPermission.AddChild(Update, BasedataPermissionDefinitionProvider.L(BasedataPermissions.UpdateStr)); + customerPermission.AddChild(Delete, BasedataPermissionDefinitionProvider.L(BasedataPermissions.DeleteStr)); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Win_in.Sfs.Basedata.Application.Contracts.csproj b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Win_in.Sfs.Basedata.Application.Contracts.csproj index 0fe7d3a1e..84d9de372 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Win_in.Sfs.Basedata.Application.Contracts.csproj +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Win_in.Sfs.Basedata.Application.Contracts.csproj @@ -1,4 +1,4 @@ - + diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs index 07acc53a3..47c444e43 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs @@ -50,5 +50,7 @@ public partial class BasedataApplicationAutoMapperProfile : Profile WorkGroupAutoMapperProfile(); WorkShopAutoMapperProfile(); EquipmentAutoMapperProfile(); + EquipmentAreaAutoMapperProfile(); + KittingAutoMapperProfile(); } } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAreaAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAreaAppService.cs new file mode 100644 index 000000000..4774d50fe --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAreaAppService.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Linq.Expressions; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Caching; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.ObjectMapping; +using Volo.Abp.Validation; +using Win_in.Sfs.Basedata.Application.Contracts; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Basedata.Domain.Shared; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application; + +[Authorize] +[Route($"{BasedataConsts.RootPath}EquipmentArea")] +public class EquipmentAreaAppService + : SfsBaseDataWithCodeAppServiceBase + , IEquipmentAreaAppService +{ + private readonly IEquipmentAreaManager _manager; + private new readonly IEquipmentAreaRepository _repository; + private new readonly IEquipmentRepository _eRepository; + + public EquipmentAreaAppService( + IEquipmentAreaRepository repository, + IEquipmentRepository eRepository, + IDistributedCache cache, + IEquipmentAreaManager manager) + : base(repository, cache) + { + _repository = repository; + _eRepository = eRepository; + _manager = manager; + base.CreatePolicyName = EquipmentPermissions.Create; + base.UpdatePolicyName = EquipmentPermissions.Update; + base.DeletePolicyName = EquipmentPermissions.Delete; + } + + [HttpPost("check")] + //[Authorize(ErpLocationPermissions.Default)] + + public virtual async Task CheckAsync(string code, EquipmentAreaCheckInput input) + { + //var result = new AbpValidationResult(); + //if (Repository.GetDbSet().Where(p => p.Code == code).Any()) + //{ + // result.Errors.Add(new ValidationResult($"存在编码为{code}的器具!")); + //} + //if (result.Errors.Count > 0) + //{ + // throw new AbpValidationException(result.Errors); + //} + await Task.CompletedTask.ConfigureAwait(false); + } + + + + [HttpPost("upsert")] + + public virtual async Task UpsertAsync(EquipmentAreaEditInput input) + { + var entity = ObjectMapper.Map(input); + await _repository.UpsertAsync(entity).ConfigureAwait(false); + } + protected override async Task ValidateImportModelAsync(EquipmentAreaImportInput importInput, List validationRresult) + { + + await base.ValidateImportModelAsync(importInput, validationRresult).ConfigureAwait(false); + //await base.CheckEquipmentAsync(importInput.Code, validationRresult).ConfigureAwait(false); + } + + + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAreaAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAreaAutoMapperProfile.cs new file mode 100644 index 000000000..34507c831 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAreaAutoMapperProfile.cs @@ -0,0 +1,33 @@ +using AutoMapper; +using Volo.Abp.AutoMapper; +using Win_in.Sfs.Basedata.Application.Contracts; +using Win_in.Sfs.Basedata.Domain; + +namespace Win_in.Sfs.Basedata.Application; + +public partial class BasedataApplicationAutoMapperProfile : Profile +{ + private void EquipmentAreaAutoMapperProfile() + { + CreateMap() + + .ReverseMap(); + + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.TenantId) + .Ignore(x => x.Remark) + .Ignore(x => x.ExtraProperties) + .Ignore(x => x.ConcurrencyStamp) + ; + + //CreateMap() + + //CreateMap() + // .Ignore(x => x.ItemCategory) + // .Ignore(x => x.Color); + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.ConcurrencyStamp).Ignore(x => x.Id); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs new file mode 100644 index 000000000..662897906 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs @@ -0,0 +1,82 @@ +using System; + +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using NUglify.Helpers; +using Volo.Abp.Caching; +using Win_in.Sfs.Basedata.Application.Contracts; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Basedata.Domain.Shared; +using Win_in.Sfs.Shared; + + +namespace Win_in.Sfs.Basedata.Application; + +[Authorize] +[Route($"{BasedataConsts.RootPath}kitting")] + +public class KittingAppService : SfsBaseDataWithCodeAppServiceBase, IKittingAppService +{ + private new readonly IKittingRepository _repository; + private readonly IKittingManager _manager; + + public KittingAppService(IKittingRepository repository, IDistributedCache cache, IKittingManager manager) : base(repository,cache) + { + _repository = repository; + _manager = manager; + //base.CreatePolicyName = KittingPermissions.Create; + //base.UpdatePolicyName = KittingPermissions.Update; + //base.DeletePolicyName = KittingPermissions.Delete; + } + [HttpPost] + [Route("")] + public override async Task CreateAsync(KittingEditInput input) + { + var entity = ObjectMapper.Map(input); + + entity.SetId(Guid.NewGuid()); + + entity.Details.ForEach(item => + { + item.MasterId = entity.Id; + }); + + entity = await _repository.InsertAsync(entity).ConfigureAwait(false); + + return ObjectMapper.Map(entity); + } + + [HttpPut] + [Route("{id}")] + public override Task UpdateAsync(Guid id, KittingEditInput input) + { + return base.UpdateAsync(id, input); + } + + [HttpPost("update")] + public virtual async Task UpdateAsync(KittingEditInput input) + { + var entity = ObjectMapper.Map(input); + //var dic=await _repository.GetAsync(r => r.Code == entity.Code); + // if (dic != null) + // { + // await _repository.DeleteAsync(dic); + // } + // await _repository.InsertAsync(entity); + await _repository.UpdateAsync(entity).ConfigureAwait(false); + } + + protected override async Task GetFromRepositoryAsync(string code) + { + var displayName = typeof(KittingDTO).GetNameOfDisplay(); + + var query = await _repository.WithDetailsAsync().ConfigureAwait(false); + + var entity = await query.Where(p => p.Code == code).FirstOrDefaultAsync().ConfigureAwait(false); + + return ObjectMapper.Map(entity); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAutoMapperProfile.cs new file mode 100644 index 000000000..2c675cc43 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAutoMapperProfile.cs @@ -0,0 +1,89 @@ +using AutoMapper; +using Volo.Abp.AutoMapper; +using Win_in.Sfs.Basedata.Application.Contracts; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Basedata.Kittings.Inputs; + +namespace Win_in.Sfs.Basedata.Application; + +public partial class BasedataApplicationAutoMapperProfile : Profile +{ + private void KittingAutoMapperProfile() + { + CreateMap() + .ReverseMap(); + + CreateMap() + .ReverseMap(); + + + + // CreateMap() + // .IgnoreAuditedObjectProperties() + // .Ignore(x => x.Items) + // .Ignore(x => x.TenantId) + // .Ignore(x => x.ExtraProperties) + // .Ignore(x => x.Remark) + // .Ignore(x => x.ConcurrencyStamp) + // .Ignore(x => x.Id); + + //CreateMap() + // .IgnoreAuditedObjectProperties() + + // .Ignore(x => x.MasterId) + // .Ignore(x => x.Enabled) + // .Ignore(x => x.TenantId) + // .Ignore(x => x.Remark) + // .Ignore(x => x.Id); + + CreateMap() + .IgnoreAuditedObjectProperties() + // .ForMember(x => x.MasterId, y => y.MapFrom(t => t.MasterId)) + ; + + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.ConcurrencyStamp) + .Ignore(x => x.Id); + } + + + //CreateMap() + // ; + + // CreateMap() + // ; + + // CreateMap() + // .IgnoreAuditedObjectProperties() + // .Ignore(x => x.Items) + // .Ignore(x => x.TenantId) + // .Ignore(x => x.ExtraProperties) + // .Ignore(x => x.Remark) + // .Ignore(x => x.ConcurrencyStamp) + // .Ignore(x => x.Id); + + //CreateMap() + // .IgnoreAuditedObjectProperties() + // .ForMember(x => x.Code, y => y.MapFrom(t => t.Item_Code)) + // .ForMember(x => x.Name, y => y.MapFrom(t => t.Item_Name)) + // .ForMember(x => x.Description, y => y.MapFrom(t => t.Item_Description)) + // .ForMember(x => x.Value, y => y.MapFrom(t => t.Item_Value)) + // .Ignore(x => x.MasterId) + // .Ignore(x => x.Enabled) + // .Ignore(x => x.TenantId) + // .Ignore(x => x.Remark) + // .Ignore(x => x.Id); + + //CreateMap() + // .IgnoreAuditedObjectProperties() + // ; + + //CreateMap() + // .IgnoreAuditedObjectProperties() + // .Ignore(x => x.ConcurrencyStamp) + //.Ignore(x => x.Id); + + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentArea.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentArea.cs new file mode 100644 index 000000000..9824ea62f --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentArea.cs @@ -0,0 +1,166 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Entities; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Domain; + +/// +/// 器具基本信息 +/// +public class EquipmentArea : SfsBaseDataAggregateRootBase, IHasCode +{ + + + /// + /// 器具编号 + /// + public string Code { get; set; } + /// + /// 类型 + /// + public string Type { get; set; } + /// + /// 型号 + /// + public string Model { get; set; } + + /// + /// 库位编号 + /// + public string LocCode { get; set; } + + /// + /// 位置编号 + /// + public string AreaCode { get; set; } + + /// + /// 数量 + /// + public decimal Qty { get; set; } + /// + /// 状态 + /// + public int State { get; set; } + ///// + ///// 创建人 + ///// + //public string Creator { get; set; } + ///// + ///// 创建时间 + ///// + //public DateTime CreatTime { get; set; } + + + + + + + + + ///// + ///// 代码 + ///// + //[IgnoreUpdate] + //public string Code { get; set; } + ///// + ///// 名称 + ///// + //public string Name { get; set; } + ///// + ///// 描述 + ///// + //public string Desc1 { get; set; } + ///// + ///// 描述2 + ///// + //public string Desc2 { get; set; } + ///// + ///// 状态 + ///// + //public EnumItemStatus Status { get; set; } + ///// + ///// 制造件 + ///// + //public bool CanMake { get; set; } + ///// + ///// 采购件 + ///// + //[IgnoreUpdate] + //public bool CanBuy { get; set; } + ///// + ///// 外包件 + ///// + //public bool CanOutsourcing { get; set; } + ///// + ///// 回收件 + ///// + //public bool IsRecycled { get; set; } + + //[Display(Name = "类型")] + //public string Type { get; set; } + + //[Display(Name = "种类")] + //public string Category { get; set; } + + //[Display(Name = "分组")] + //public string Group { get; set; } + + //[Display(Name = "颜色")] + //public string Color { get; set; } + + //[Display(Name = "配置")] + //public string Configuration { get; set; } + ///// + ///// 基本计量单位 + ///// + //public string BasicUom { get; set; } + + ///// + ///// 标包数 + ///// + //public decimal StdPackQty { get; set; } + + ///// + ///// ABC类,默认为C + ///// + //public string AbcClass { get; set; } + ///// + ///// 项目 + ///// + //public string Project { get; set; } + ///// + ///// 版本 + ///// + //public string Version { get; set; } + ///// + ///// 工程变革 + ///// + //public string Eco { get; set; } + ///// + ///// 有效期 + ///// + //public int Validity { get; set; } + ///// + ///// 有效期单位 + ///// + //public EnumValidityUnit ValidityUnit { get; set; } + + ///// + ///// 管理类型 + ///// + //public EnumItemManageType ManageType { get; set; } + + ///// + ///// 打印标签用的一个等级 + ///// + //public string Elevel { get; set; } + + ///// + ///// 虚零件 + ///// + //public virtual bool IsPhantom { get; set; } + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentAreaManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentAreaManager.cs new file mode 100644 index 000000000..132e7c577 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentAreaManager.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Domain.Services; + +namespace Win_in.Sfs.Basedata.Domain; + +public class EquipmentAreaManager : DomainService, IEquipmentAreaManager +{ + private readonly IEquipmentAreaRepository _repository; + + public EquipmentAreaManager(IEquipmentAreaRepository repository) + { + _repository = repository; + } + + /// + /// 执行导入 + /// + public virtual async Task ImportDataAsync(List mergeEntities, List deleteEntities = null) + { + if (deleteEntities != null && deleteEntities.Count > 0) + { + await _repository.BulkDeleteAsync(deleteEntities).ConfigureAwait(false); + } + + await _repository.BulkMergeAsync(mergeEntities).ConfigureAwait(false); + } +} + diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentAreaManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentAreaManager.cs new file mode 100644 index 000000000..f4e8156f2 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentAreaManager.cs @@ -0,0 +1,8 @@ +using Volo.Abp.Domain.Services; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IEquipmentAreaManager : IDomainService, IBulkImportService +{ +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentAreaRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentAreaRepository.cs new file mode 100644 index 000000000..2d872dcf1 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentAreaRepository.cs @@ -0,0 +1,13 @@ +using System.Threading.Tasks; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IEquipmentAreaRepository : ISfsBaseDataRepositoryBase, ISfsBulkRepositoryBase +{ + public Task UpsertAsync(EquipmentArea entity); + + public Task InsertAutoSaveAsync(EquipmentArea entity); + + public Task UpsertAsyncByInterface(EquipmentArea entity); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/IKittingManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/IKittingManager.cs new file mode 100644 index 000000000..fa76f6b0b --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/IKittingManager.cs @@ -0,0 +1,20 @@ + +using Volo.Abp.Domain.Services; + +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IKittingManager : IDomainService, IBulkImportService +{ + //Task AddByContainerAsync(Guid traceId, string containerCode); + //// Task> AddMergeAsync(List inventories); + //Task> AddByPackingAsync(Guid traceId, List putawayInventories); + + ///// + ///// 按箱采购收货上架 根据收货时的ERP储位 物品 进行分组上架 只推荐空库位 + ///// + ///// + ///// + //Task CreateByErpCodeAndEmptyCapacityAsync(PutawayJob putawayJob); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/IKittingRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/IKittingRepository.cs new file mode 100644 index 000000000..d86331d6c --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/IKittingRepository.cs @@ -0,0 +1,9 @@ + +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IKittingRepository : ISfsBaseDataRepositoryBase, ISfsBulkRepositoryBase +{ + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/Kitting.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/Kitting.cs new file mode 100644 index 000000000..311196b07 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/Kitting.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Threading.Tasks; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Entities; +using Win_in.Sfs.Shared.Domain.Shared; + + +namespace Win_in.Sfs.Basedata.Domain; + +/// +/// Kitting箱 +/// +[Serializable] +[Display(Name = "Kitting箱")] +public class Kitting : SfsBaseDataAggregateRootBase, IHasCode +{ + public string Code { get ; set ; } + public string Name { get ; set ; } + public virtual ICollection Details { get; set; } = new List(); + public void SetId(Guid id) + { + this.Id = id; + } + + + ///// + ///// 设置任务明细的实际库位和实际数量 + ///// + ///// + ///// + ///// + ///// + //public virtual async Task SetDetail(Guid id, string partCode, string desc1, string desc2, decimal qty, string conf) + //{ + // var detail = GetDetail(id); + // detail.PartCode = partCode; + // detail.Desc1 = desc1; + // detail.Desc2 = desc2; + // detail.Qty = qty; + // detail.Conf = conf; + + // await Task.CompletedTask.ConfigureAwait(false); + //} +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingDetail.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingDetail.cs new file mode 100644 index 000000000..6f955c033 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingDetail.cs @@ -0,0 +1,41 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.MultiTenancy; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public class KittingDetail : AuditedEntity, IMultiTenant, IRemark + +{ + public Guid MasterId { get; set; } + /// + /// 物料编码 + /// + public string PartCode { set; get; } + /// + /// 描述1 + /// + public string Desc1 { set; get; } + /// + /// 描述2 + /// + public string Desc2 { set; get; } + /// + /// 包装数量 + /// + public decimal Qty { set; get; } + + /// + /// 配置 + /// + public string Conf { set; get; } + + public Guid? TenantId { set; get; } + + public string Remark { get; set; } + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingManager.cs new file mode 100644 index 000000000..0be4b22b2 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingManager.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Volo.Abp; +using Volo.Abp.Users; +using Volo.Abp.Validation; + +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; + + +namespace Win_in.Sfs.Basedata.Domain; + +public class KittingManager : IKittingManager +{ + + + private readonly IKittingRepository _repository; + + public KittingManager(IKittingRepository repository, IWarehouseRepository warehourseRepository, ILocationRepository locationRepository) + { + _repository = repository; + } + + /// + /// 执行导入 + /// + public virtual async Task ImportDataAsync(List mergeEntities, List deleteEntities = null) + { + if (deleteEntities != null && deleteEntities.Count > 0) + { + await _repository.BulkDeleteAsync(deleteEntities).ConfigureAwait(false); + } + + await _repository.BulkMergeAsync(mergeEntities).ConfigureAwait(false); + + var insertDetails = new List(); + + foreach (var item in mergeEntities) + { + insertDetails.AddRange(item.Details); + } + + await _repository.BulkInsertAsync(insertDetails).ConfigureAwait(false); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs index f35d0caed..5f1efe44d 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs @@ -67,6 +67,8 @@ public static class BasedataDbContextModelCreatingExtensions //设置decimal的默认小数位数 builder.ConfigurePrecisionOfDecimal(); builder.ConfigurePositionCode(options); + builder.ConfigureEquipmentArea(options); + builder.ConfigureKitting(options); } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataEntityFrameworkCoreModule.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataEntityFrameworkCoreModule.cs index 99c329146..1fe9d93ff 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataEntityFrameworkCoreModule.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataEntityFrameworkCoreModule.cs @@ -69,6 +69,8 @@ public class BasedataEntityFrameworkCoreModule : AbpModule context.Services.AddTransient(); context.Services.AddTransient(); context.Services.AddTransient(); + context.Services.AddTransient(); + context.Services.AddTransient(); ConfigureEntity(); } @@ -80,6 +82,11 @@ public class BasedataEntityFrameworkCoreModule : AbpModule { orderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Items); }); + options.Entity(orderOptions => + { + orderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Details); + }); + }); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentAreaDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentAreaDbContextModelCreatingExtensions.cs new file mode 100644 index 000000000..cda151bd4 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentAreaDbContextModelCreatingExtensions.cs @@ -0,0 +1,39 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.Modeling; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Shared.EntityFrameworkCore; + +namespace Win_in.Sfs.Basedata.EntityFrameworkCore; + +public static class EquipmentAreaDbContextModelCreatingExtensions +{ + public static void ConfigureEquipmentArea(this ModelBuilder builder, BasedataModelBuilderConfigurationOptions options) + { + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(options.TablePrefix + nameof(EquipmentArea), options.Schema); + //Configure ABP properties + b.ConfigureByConvention(); + //Configure Sfs base properties + b.ConfigureSfsBase(); + + //Properties + b.Property(q => q.Code).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(true); + b.Property(q => q.Model).HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.LocCode).HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.Type).HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.AreaCode).HasMaxLength(SfsPropertyConst.CodeLength); + + + b.HasIndex(q => new { q.Code }); + b.HasIndex(q => new { q.AreaCode }); + }); + } +} + + +/// +/// 器具编号 +/// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentAreaEfCoreRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentAreaEfCoreRepository.cs new file mode 100644 index 000000000..99b6cbd46 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentAreaEfCoreRepository.cs @@ -0,0 +1,56 @@ +using System; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.EntityFrameworkCore; + +public class EquipmentAreaEfCoreRepository : SfsBaseDataEfCoreRepositoryBase, IEquipmentAreaRepository, ISfsBulkRepositoryBase +{ + public EquipmentAreaEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + public virtual async Task UpsertAsyncByInterface(EquipmentArea entity) + { + var dbSet = await GetDbSetAsync().ConfigureAwait(false); + var exist = await dbSet.FirstOrDefaultAsync(p => p.Code == entity.Code && p.AreaCode==entity.AreaCode).ConfigureAwait(false); + if (exist == null) + { + var insRet = await InsertAsync(entity).ConfigureAwait(false); + } + else + { + exist.State = entity.State; + exist.Model = entity.Model; + exist.Type = entity.Type; + exist.LastModificationTime = DateTimeOffset.Now.DateTime; + + } + } + public virtual async Task UpsertAsync(EquipmentArea entity) + { + var dbSet = await GetDbSetAsync().ConfigureAwait(false); + var exist = await dbSet.FirstOrDefaultAsync(p => p.Code == entity.Code && p.AreaCode==entity.AreaCode).ConfigureAwait(false); + if (exist == null) + { + var insRet = await InsertAsync(entity).ConfigureAwait(false); + } + else + { + exist.State = entity.State; + exist.Model = entity.Model; + exist.Type = entity.Type; + exist.LastModificationTime = DateTimeOffset.Now.DateTime; + + } + + + } + + public virtual async Task InsertAutoSaveAsync(EquipmentArea entity) + { + _ = await InsertAsync(entity, true, GetCancellationToken()).ConfigureAwait(false); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingDbContextModelCreatingExtensions.cs new file mode 100644 index 000000000..324addcc7 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingDbContextModelCreatingExtensions.cs @@ -0,0 +1,71 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.Modeling; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Shared.EntityFrameworkCore; + +namespace Win_in.Sfs.Basedata.EntityFrameworkCore; + +public static class KittingDbContextModelCreatingExtensions +{ + public static void ConfigureKitting(this ModelBuilder builder, BasedataModelBuilderConfigurationOptions options) + { + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(options.TablePrefix + nameof(Kitting), options.Schema); + //Configure ABP properties + b.ConfigureByConvention(); + //Configure Sfs base properties + b.ConfigureSfsBase(); + b.Property(p=>p.Name).HasMaxLength(SfsPropertyConst.DescLength); + //Properties + b.Property(q => q.Code).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); + //Relations + b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterId).IsRequired(); + //Indexes + b.HasIndex(q => new { q.Code }).IsUnique(); + }); + builder.Entity(b => + { + + //Configure table & schema name + b.ToTable(options.TablePrefix + nameof(KittingDetail), options.Schema); + //Configure ABP properties + b.ConfigureByConvention(); + //Configure Sfs base properties + b.ConfigureSfsBase(); + + b.Property(p => p.Desc1).HasMaxLength(SfsPropertyConst.DescLength); + //Properties + b.Property(q => q.Desc2).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); + //Relations + b.Property(q => q.MasterId).IsRequired(); + //Indexes + + }); + } + //public static void ConfigureCustomer(this ModelBuilder builder, BasedataModelBuilderConfigurationOptions options) + //{ + // builder.Entity(b => + // { + // //Configure table & schema name + // b.ToTable(options.TablePrefix + nameof(Customer), options.Schema); + // //Configure ABP properties + // b.ConfigureByConvention(); + // //Configure Sfs base properties + // b.ConfigureSfsBase(); + + // //Properties + // b.Property(q => q.Code).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); + // b.Property(q => q.Name).HasMaxLength(SfsPropertyConst.NameLength); + // b.Property(q => q.Description).HasMaxLength(SfsPropertyConst.DescLength); + + // //Relations + // //None + + // //Indexes + // b.HasIndex(q => new { q.Code }).IsUnique(); + // }); + //} +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingEfCoreRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingEfCoreRepository.cs new file mode 100644 index 000000000..665d2a8c5 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingEfCoreRepository.cs @@ -0,0 +1,75 @@ + +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.EntityFrameworkCore; + +public class KittingEfCoreRepository : SfsBaseDataEfCoreRepositoryBase, IKittingRepository, ISfsBulkRepositoryBase +{ + public KittingEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + + public virtual async Task UpsertAsync(Kitting entity) + { + var dbSet = await GetDbSetAsync().ConfigureAwait(false); + var exist = await dbSet.FirstOrDefaultAsync(p => p.Code == entity.Code).ConfigureAwait(false); + if (exist == null) + { + var insRet = await InsertAsync(entity).ConfigureAwait(false); + } + else + { + //exist.Code = entity.Code; + exist.Name = entity.Name; + //exist.Address = entity.Address; + //exist.Country = entity.Country; + //exist.City = entity.City; + //exist.Phone = entity.Phone; + //exist.Fax = entity.Fax; + //exist.PostID = entity.PostID; + //exist.Contacts = entity.Contacts; + //exist.Currency = entity.Currency; + //exist.IsActive = entity.IsActive; + //exist.Type = entity.Type; + exist.TenantId = entity.TenantId; + exist.Remark = entity.Remark; + + } + // var context = await GetDbContextAsync(); + // await context.SingleMergeAsync(entity, options => + // { + // //业务主键,可以是联合主键 + // options.ColumnPrimaryKeyExpression = c => new + // { + // c.Company, + // c.Code + // }; + // //需要在更新时忽略的属性 + // options.IgnoreOnMergeUpdateExpression = c => new + // { + // c.Id, + // }; + // }); + } + + + public virtual async Task UpsertAsyncByInterface(Kitting entity) + { + //var dbSet = await GetDbSetAsync().ConfigureAwait(false); + //var exist = await dbSet.FirstOrDefaultAsync(p => p.Code == entity.Code).ConfigureAwait(false); + //if (exist == null) + //{ + // var insRet = await InsertAsync(entity).ConfigureAwait(false); + //} + //else + //{ + // exist.Name = entity.Name; + // exist.ShortName = entity.ShortName; + // exist.LastModificationTime = DateTime.Now; + //} + } +}