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 f9af753d9..c61f712b2 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 @@ -6,6 +6,7 @@ namespace Win_in.Sfs.Basedata.Application.Contracts; using System; using System.Collections.Generic; +using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata; [Display(Name = "器具基本信息")] @@ -15,7 +16,7 @@ public class EquipmentDTO : SfsBaseDataDTOBase, IHasCode /// 类型 /// [Display(Name = "类型")] - public string Type { get; set; } = string.Empty; + public EnumEquipmentType Type { get; set; } /// /// 器具编号 /// @@ -35,7 +36,7 @@ public class EquipmentDTO : SfsBaseDataDTOBase, IHasCode /// 型号 /// [Display(Name = "型号")] - public string Model { get; set; } = string.Empty; + public EnumEquipmentModel Model { get; set; } /// /// 库位编号 /// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentLocCapDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentLocCapDTO.cs new file mode 100644 index 000000000..6a4ad91ce --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentLocCapDTO.cs @@ -0,0 +1,40 @@ +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + + + +[Display(Name = "器具容量占用信息")] + +public class EquipmentLocCapDTO : SfsBaseDataDTOBase, IHasCode +{ + /// + /// 器具代码 + /// + [Display(Name = "器具代码")] + public string Code { get; set; } + /// 占用百分比 + /// + [Display(Name = "占用百分比")] + public decimal Percent { get; set; } + + + /// + /// 零件号 + /// + public string PartCode { get; set; } + + /// + /// 录入数量 + /// + public decimal Qty { get; set; } + + /// + /// 标包数量 + /// + public decimal StdQty { get; set; } + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentLocDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentLocDTO.cs new file mode 100644 index 000000000..6833d79ca --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentLocDTO.cs @@ -0,0 +1,31 @@ +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 EquipmentLocDTO : SfsBaseDataDTOBase, IHasCode +{ + + /// + /// 器具编号 + /// + [Display(Name = "器具代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string Code { get; set; } + + /// + /// 库位编号 + /// + [Display(Name = "库位代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string LocCode { get; set; } + + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentPartCodeDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentPartCodeDTO.cs new file mode 100644 index 000000000..2a6510242 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentPartCodeDTO.cs @@ -0,0 +1,73 @@ +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 EquipmentPartCodeDTO : SfsBaseDataDTOBase, IHasCode +{ + + /// + /// 器具代号 + /// + [Display(Name = "器具代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string Code { get; set; } + + + ///// + ///// 型号 + ///// + //[Display(Name = "型号")] + //public string Model { get; set; } = string.Empty; + /// + /// 库位编号 + /// + [Display(Name = "零件代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string PartCode { get; set; } + + + + /// + /// 标包数量 + /// + [Display(Name = "标包数")] + [Required(ErrorMessage = "{0}是必填项")] + public decimal StdQty { get; set; } + + + + /// + /// 单位 + /// + [Display(Name = "单位")] + public string Unit { get; set; } + + + + + /// + /// 状态 + /// + + //[Display(Name = "状态")] + //public int State { get; set; } = 0; + + ///// + ///// 创建人 + ///// + //[Display(Name = "创建人")] + //public string Creator { get; set; } + + ///// + ///// 创建时间 + ///// + //[Display(Name = "创建时间")] + //public DateTime CreatTime { get; set; } = DateTime.Now; +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentRecordErrorDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentRecordErrorDTO.cs new file mode 100644 index 000000000..dc82187c1 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentRecordErrorDTO.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Win_in.Sfs.Basedata.Equipments.DTOs; +[Display(Name = "器具校验信息")] +public class EquipmentRecordErrorDTO +{ + [Display(Name = "器具代码")] + public string EqptCode { set; get; } + [Display(Name = "零件代码")] + public string PartCode { set; get; } + [Display(Name = "错误信息")] + public string Error { set; get; } + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentLocAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentLocAppService.cs new file mode 100644 index 000000000..6278b4aa3 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentLocAppService.cs @@ -0,0 +1,33 @@ +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 IEquipmentLocAppService + : ISfsBaseDataAppServiceBase + , ISfsGetByCodeAppService + , ISfsCheckAppService + , ISfsUpsertAppService +{ + + + Task> GetEquipmentLocAsync(List p_ls); + + + //Task CheckItemIsAvailable(string itemCode); + //[HttpGet("check-item-is-available-no-select-sql")] + //void CheckItemIsAvailable(EquipmentLocDTO EquipmentLocDTO); + + //Task> GetListByNameAsync(string name); + + //Task GetOrAddAsync(EquipmentLocEditInput input); + + //Task GetManageTypeAsync(string itemCode); + //Task> GetManageTypesAsync(List itemCodes); + + //Task UpsertAsyncByInterface(EquipmentLocEditInput input); + //Task UpsertStdPackQtyAsync(string itemCode, decimal stdpackqty); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentLocCapAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentLocCapAppService.cs new file mode 100644 index 000000000..dfe01c9b7 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentLocCapAppService.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 IEquipmentLocCapAppService + : ISfsBaseDataAppServiceBase + , ISfsGetByCodeAppService + , ISfsCheckAppService + , ISfsUpsertAppService +{ + //Task CheckItemIsAvailable(string itemCode); + //[HttpGet("check-item-is-available-no-select-sql")] + //void CheckItemIsAvailable(EquipmentLocCapDTO EquipmentLocCapDTO); + + //Task> GetListByNameAsync(string name); + + //Task GetOrAddAsync(EquipmentLocCapEditInput input); + + //Task GetManageTypeAsync(string itemCode); + //Task> GetManageTypesAsync(List itemCodes); + + //Task UpsertAsyncByInterface(EquipmentLocCapEditInput input); + //Task UpsertStdPackQtyAsync(string itemCode, decimal stdpackqty); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentPartCodeAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentPartCodeAppService.cs new file mode 100644 index 000000000..03bd162eb --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/IEquipmentPartCodeAppService.cs @@ -0,0 +1,31 @@ +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 IEquipmentPartCodeAppService + : ISfsBaseDataAppServiceBase + , ISfsGetByCodeAppService + + , ISfsUpsertAppService +{ + + + Task> GetEquipmentPartCodesAsync(List p_ls); + //Task CheckItemIsAvailable(string itemCode); + //[HttpGet("check-item-is-available-no-select-sql")] + //void CheckItemIsAvailable(EquipmentPartCodeDTO EquipmentPartCodeDTO); + + //Task> GetListByNameAsync(string name); + + //Task GetOrAddAsync(EquipmentPartCodeEditInput input); + + //Task GetManageTypeAsync(string itemCode); + //Task> GetManageTypesAsync(List itemCodes); + + //Task UpsertAsyncByInterface(EquipmentPartCodeEditInput input); + //Task UpsertStdPackQtyAsync(string itemCode, decimal stdpackqty); +} 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 9c00c6a23..e5fe9a2e5 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 @@ -2,6 +2,7 @@ using System; using System.ComponentModel.DataAnnotations; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata; namespace Win_in.Sfs.Basedata.Application.Contracts; @@ -11,7 +12,7 @@ public class EquipmentEditInput : SfsBaseDataCreateOrUpdateInputBase /// 类型 /// [Display(Name = "类型")] - public string Type { get; set; } = string.Empty; + public EnumEquipmentType Type { get; set; } /// /// 器具编号 /// @@ -31,7 +32,7 @@ public class EquipmentEditInput : SfsBaseDataCreateOrUpdateInputBase /// 型号 /// [Display(Name = "型号")] - public string Model { get; set; } = string.Empty; + public EnumEquipmentModel Model { get; set; } /// /// 库位编号 /// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentImportInput.cs index c09872d2a..2894c5c1b 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentImportInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentImportInput.cs @@ -1,8 +1,7 @@ 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; + +using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata; namespace Win_in.Sfs.Basedata.Application.Contracts; @@ -13,7 +12,7 @@ public class EquipmentImportInput : SfsBaseDataImportInputBase /// 类型 /// [Display(Name = "类型")] - public string Type { get; set; } = string.Empty; + public Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata.EnumEquipmentType Type { get; set; } /// /// 器具编号 /// @@ -33,7 +32,7 @@ public class EquipmentImportInput : SfsBaseDataImportInputBase /// 型号 /// [Display(Name = "型号")] - public string Model { get; set; } = string.Empty; + public EnumEquipmentModel Model { get; set; } /// /// 库位编号 /// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapCheckInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapCheckInput.cs new file mode 100644 index 000000000..d7b272c8e --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapCheckInput.cs @@ -0,0 +1,20 @@ +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 EquipmentLocCapCheckInput +{ + /// + /// 器具代码 + /// + [Display(Name = "器具代码")] + public string Code { get; set; } + /// 占用百分比 + /// + [Display(Name = "占用百分比")] + public decimal Percent { get; set; } + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapEditInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapEditInput.cs new file mode 100644 index 000000000..ef9146b56 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapEditInput.cs @@ -0,0 +1,20 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +public class EquipmentLocCapEditInput : SfsBaseDataCreateOrUpdateInputBase +{ + /// + /// 器具代码 + /// + [Display(Name = "器具代码")] + public string Code { get; set; } + /// 占用百分比 + /// + [Display(Name = "占用百分比")] + public decimal Percent { get; set; } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapImportInput.cs new file mode 100644 index 000000000..796c95708 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCapImportInput.cs @@ -0,0 +1,38 @@ +using System; +using System.ComponentModel.DataAnnotations; + +using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +[Display(Name = "器具容量")] +public class EquipmentLocCapImportInput : SfsBaseDataImportInputBase +{ + /// + /// 器具代码 + /// + [Display(Name = "器具代码")] + public string Code { get; set; } + /// 占用百分比 + /// + [Display(Name = "占用百分比")] + public decimal Percent { get; set; } + //[Display(Name = "零件代码")] + + //public string PartCode { get; set; } + + //[Display(Name = "当前数量")] + ///// + ///// 录入数量 + ///// + //public decimal Qty { get; set; } + //[Display(Name = "标包数量")] + ///// + ///// 标包数量 + ///// + //public decimal StdQty { get; set; } + + + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCheckInput .cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCheckInput .cs new file mode 100644 index 000000000..9b1473845 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocCheckInput .cs @@ -0,0 +1,27 @@ +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 EquipmentLocCheckInput +{ + + /// + /// 器具编号 + /// + [Display(Name = "器具代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string Code { get; set; } + + /// + /// 库位编号 + /// + [Display(Name = "库位代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string LocCode { get; set; } + + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocEditInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocEditInput.cs new file mode 100644 index 000000000..0f2c0e919 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocEditInput.cs @@ -0,0 +1,28 @@ +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 EquipmentLocEditInput : SfsBaseDataCreateOrUpdateInputBase +{ + /// + /// 器具编号 + /// + [Display(Name = "器具代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string Code { get; set; } + + /// + /// 库位编号 + /// + [Display(Name = "库位代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string LocCode { get; set; } + + [Display(Name = "状态")] + public int State { get; set; } = 0; + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocImportInput.cs new file mode 100644 index 000000000..2dffe09b6 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentLocImportInput.cs @@ -0,0 +1,33 @@ +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 EquipmentLocImportInput : SfsBaseDataImportInputBase +{ + /// + /// 器具编号 + /// + [Display(Name = "器具代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string Code { get; set; } + + /// + /// 库位编号 + /// + [Display(Name = "库位代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string LocCode { get; set; } + + + [Display(Name = "状态")] + public int State { get; set; } = 0; + + + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeCheckInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeCheckInput.cs new file mode 100644 index 000000000..2e8051cb1 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeCheckInput.cs @@ -0,0 +1,43 @@ +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 EquipmentPartCodeCheckInput +{ + + /// + /// 器具代号 + /// + [Display(Name = "器具代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string Code { get; set; } + + + + + ///// + ///// 型号 + ///// + //[Display(Name = "型号")] + //public string Model { get; set; } = string.Empty; + /// + /// 库位编号 + /// + [Display(Name = "零件代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string PartCode { get; set; } + + + + /// + /// 标包数量 + /// + [Display(Name = "标包数")] + [Required(ErrorMessage = "{0}是必填项")] + public decimal StdQty { get; set; } + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeEditInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeEditInput.cs new file mode 100644 index 000000000..aa5b93511 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeEditInput.cs @@ -0,0 +1,53 @@ +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 EquipmentPartCodeEditInput : SfsBaseDataCreateOrUpdateInputBase +{ + /// + /// 器具代号 + /// + [Display(Name = "器具代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string Code { get; set; } + + + + + ///// + ///// 型号 + ///// + //[Display(Name = "型号")] + //public string Model { get; set; } = string.Empty; + /// + /// 库位编号 + /// + [Display(Name = "零件代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string PartCode { get; set; } + + + + /// + /// 标包数量 + /// + [Display(Name = "标包数")] + [Required(ErrorMessage = "{0}是必填项")] + public decimal StdQty { get; set; } + + + + /// + /// 标包数量 + /// + [Display(Name = "单位")] + [Required(ErrorMessage = "{0}是必填项")] + public string Unit { get; set; } + + [Display(Name = "状态")] + public int State { get; set; } = 0; + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeImportInput.cs new file mode 100644 index 000000000..77e58034e --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentPartCodeImportInput.cs @@ -0,0 +1,60 @@ +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 EquipmentPartCodeImportInput : SfsBaseDataImportInputBase +{ + /// + /// 器具代号 + /// + [Display(Name = "器具代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string Code { get; set; } + + + + + ///// + ///// 型号 + ///// + //[Display(Name = "型号")] + //public string Model { get; set; } = string.Empty; + /// + /// 库位编号 + /// + [Display(Name = "零件代码")] + [Required(ErrorMessage = "{0}是必填项")] + public string PartCode { get; set; } + + + + /// + /// 标包数量 + /// + [Display(Name = "标包数")] + [Required(ErrorMessage = "{0}是必填项")] + public decimal StdQty { get; set; } + + + /// + /// 标包数量 + /// + [Display(Name = "单位")] + [Required(ErrorMessage = "{0}是必填项")] + public string Unit { get; set; } + + + [Display(Name = "状态")] + public int State { get; set; } = 0; + + + + + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/Commons/SplitPacking_UpdateDetailInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/Commons/SplitPacking_UpdateDetailInput.cs index 9b47d3434..765da4cfd 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/Commons/SplitPacking_UpdateDetailInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/Commons/SplitPacking_UpdateDetailInput.cs @@ -36,5 +36,8 @@ public class SplitPacking_UpdateDetailInput [Range(1, 99999, ErrorMessage = "{0}值范围在1至99999之间")] public decimal ToQty { get; set; } + public string FromLocationCode { get; set; } + + public string ToLocationCode { get; set; } } 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 1372ef60a..c5301da0f 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 @@ -52,6 +52,10 @@ public partial class BasedataApplicationAutoMapperProfile : Profile EquipmentAutoMapperProfile(); SplitPackingRecAutoMapperProfile(); KittingAutoMapperProfile(); - + EquipmentLocAutoMapperProfile(); + EquipmentPartCodeAutoMapperProfile(); + EquipmentLocCapAutoMapperProfile(); + + } } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAppService.cs index a93db8119..be46cb4df 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAppService.cs @@ -30,22 +30,18 @@ public class EquipmentAppService : SfsBaseDataWithCodeAppServiceBase , IEquipmentAppService { - //private readonly ItemValidator _itemValidator; private readonly IEquipmentManager _manager; private new readonly IEquipmentRepository _repository; private readonly IExportImportService _importService; - public EquipmentAppService( IEquipmentRepository repository, IDistributedCache cache, IExportImportService importService, - // ItemValidator itemValidator, IEquipmentManager manager) : base(repository, cache) { _importService=importService; _repository = repository; - //_itemValidator = itemValidator; _manager = manager; base.CreatePolicyName = EquipmentPermissions.Create; base.UpdatePolicyName = EquipmentPermissions.Update; @@ -54,232 +50,15 @@ public class EquipmentAppService [HttpPost("check")] //[Authorize(ErpLocationPermissions.Default)] - public virtual async Task CheckAsync(string code, EquipmentCheckInput input) { await Task.CompletedTask.ConfigureAwait(false); } - //public override async Task ImportAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file) - //{ - // List errors = new List(); - // using var ms = new MemoryStream(); - // await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false); - // var inputFileBytes = ms.GetAllBytes(); - // var dtos=_importService.Import(inputFileBytes).ToList(); - // var list=ObjectMapper.Map, List>(dtos); - - - - - - // foreach (var itm in list) - // { - // itm.SetId(GuidGenerator.Create()); - // itm.Code = string.Format("{0}{1}", "Q", itm.Code); - - // } - - - - - // ////var bytes = result.FileContents; - // ////result.FileContents = null; - - // ////HttpContextAccessor.HttpContext.Response.Headers.AccessControlExposeHeaders = "X-Response"; - // ////HttpContextAccessor.HttpContext.Response.Headers.Add("X-Response", - // //// JsonSerializer.Serialize(new { result.ExceptionMessage, result.FileName, result.FileCode, result })); - - // ////Console.WriteLine(@"导入错误信息:" + result.ExceptionMessage); - - // ////var resultAction = new TestResult(bytes, ExportImportService.ContentType) { FileDownloadName = result.FileName }; - // ////resultAction.errorNum = result.ErrorNum; - // ////resultAction.successNum = resultAction.successNum; - // //return resultAction; - - - - - - - - - // // return base.ImportAsync(requestInput, file); - //} - - //protected ICategoryAppService _categoryApp => LazyServiceProvider.LazyGetRequiredService(); - //protected IItemCategoryAppService _itemCategoryApp => LazyServiceProvider.LazyGetRequiredService(); - - //[HttpPost("check")] - //public virtual async Task CheckAsync(string code, EquipmentCheckInput input) - //{ - // var result = new AbpValidationResult(); - // _itemValidator.CheckFormat(code); - // var dto = await GetByCodeAsync(code).ConfigureAwait(false); - // var entity = ObjectMapper.Map(dto); - // //_itemValidator.CheckCanBuy(entity, input.CanBuy, result); - // //_itemValidator.CheckCanMake(entity, input.CanMake, result); - // //_itemValidator.CheckStatus(entity, input.Statuses, result); - // //_itemValidator.CheckProject(entity, input.Projects, result); - // //await _itemValidator.CheckCategoryAsync(entity, input.Categories, result).ConfigureAwait(false); - // if (result.Errors.Count > 0) - // { - // throw new AbpValidationException(result.Errors); - // } - //} - - ///// - ///// 检物品状态 是否可用 - ///// - ///// - ///// - ///// - //[HttpGet("check-item-is-available")] - //public virtual async Task CheckItemIsAvailable(string itemCode) - //{ - // var entity = await _repository.FindAsync(c => c.Code == itemCode).ConfigureAwait(false); - - // if (entity == null) - // { - // throw new UserFriendlyException($"未找到代码为 {itemCode} 的物品"); - // } - - // return entity.Status == EnumItemStatus.Active; - //} - - /// - /// 检物品状态 是否可用(不查询数据库 直接根据对象判断) - /// - /// - /// - //[HttpGet("check-item-is-available-no-select-sql")] - //public void CheckItemIsAvailable(EquipmentDTO EquipmentDTO) - //{ - // if (EquipmentDTO != null && EquipmentDTO.Status != EnumItemStatus.Active) - // { - // throw new UserFriendlyException($"物料 {EquipmentDTO.Code} 状态为 {EquipmentDTO.Status} ,不是可用状态"); - // } - //} - - //[HttpGet("{id}")] - //public override async Task GetAsync(Guid id) - //{ - // var dto = await base.GetAsync(id).ConfigureAwait(false); - - // dto.ItemCategoryDictionary = await GetItemCategory(dto.Code).ConfigureAwait(false); - - // return dto; - //} - - /// - /// - /// - /// - /// - /// - //[HttpGet("list-by-name")] - //public virtual async Task> GetListByNameAsync(string name) - //{ - // var entities = await _repository.GetListAsync(c => c.Name == name).ConfigureAwait(false); - // var dtos = ObjectMapper.Map, List>(entities); - // return dtos; - //} - - //[HttpGet("get-manage-type")] - //public virtual async Task GetManageTypeAsync(string itemCode) - //{ - // var entity = await GetByCodeAsync(itemCode).ConfigureAwait(false); - // Check.NotNull(entity, "物品代码", $"物品 {itemCode} 不存在"); - // return entity.ManageType; - //} - - //[HttpGet("get-manage-types")] - //public virtual async Task> GetManageTypesAsync(List itemCodes) - //{ - // var dtos = await GetByCodesAsync(itemCodes).ConfigureAwait(false); - // var itemManageTypes = dtos.ToDictionary(dto => dto.Code, dto => dto.ManageType); - // return itemManageTypes; - //} - - //[HttpPost("get-or-add")] - //public virtual async Task GetOrAddAsync(EquipmentEditInput input) - //{ - // var result = await _repository.FirstOrDefaultAsync(p => p.Code == input.Code).ConfigureAwait(false); - // if (result == null) - // { - // var entity = ObjectMapper.Map(input); - // result = await _repository.InsertAsync(entity, true).ConfigureAwait(false); - // } - - // var dto = ObjectMapper.Map(result); - // return dto; - //} - - //[HttpPost("list")] - //public override async Task> GetPagedListByFilterAsync( - // SfsBaseDataRequestInputBase sfsRequestInput, - // bool includeDetails = false, - // CancellationToken cancellationToken = default) - //{ - // Expression> expression = sfsRequestInput.Condition.Filters?.Count > 0 - // ? sfsRequestInput.Condition.Filters.ToLambda() - // : p => true; - // var pageResult = await GetPagedListAsync( - // expression, - // sfsRequestInput.SkipCount, - // sfsRequestInput.MaxResultCount, - // sfsRequestInput.Sorting, - // includeDetails, - // cancellationToken).ConfigureAwait(false); - - // foreach (var item in pageResult.Items) - // { - // item.ItemCategoryDictionary = await GetItemCategory(item.Code).ConfigureAwait(false); - // } - - // return pageResult; - //} - - //[HttpPost("upsert")] - //public virtual async Task UpsertAsync(EquipmentEditInput input) - //{ - // var entity = ObjectMapper.Map(input); - // await _repository.UpsertAsync(entity).ConfigureAwait(false); - //} - //[HttpPost("upsert-interface")] - //public virtual async Task UpsertAsyncByInterface(EquipmentEditInput input) - //{ - // var entity = ObjectMapper.Map(input); - // await _repository.UpsertAsyncByInterface(entity).ConfigureAwait(false); - //} - - //protected override Expression> BuildSearchExpression(string keyWord) - //{ - // Expression> expression = p => - // p.Code.Contains(keyWord) - // || p.Name.Contains(keyWord) - // || p.Desc1.Contains(keyWord) - // || p.Desc2.Contains(keyWord) - // || p.AbcClass.Contains(keyWord) - // || p.BasicUom.Contains(keyWord) - // || p.Elevel.Contains(keyWord) - // || p.Project.Contains(keyWord) - // || p.Version.Contains(keyWord); - // return expression; - //} - - //private async Task> GetItemCategory(string itemCode) - //{ - // // var itemCategorys = await this._itemCategoryApp.GetListByItemCode(itemCode).ConfigureAwait(false); - - // // return itemCategorys.ToDictionary(x => x.CategoryCode, y => y.Value); - //} - [HttpPost("upsert")] public virtual async Task UpsertAsync(EquipmentEditInput input) { var entity = ObjectMapper.Map(input); - await _repository.UpsertAsync(entity).ConfigureAwait(false); } @@ -292,8 +71,6 @@ public class EquipmentAppService { var entity = ObjectMapper.Map(input); entity.Code = string.Format("{0}{1}", "Q", entity.Code); - entity.Model = "Q"; - await _repository.UpsertAsync(entity).ConfigureAwait(false); var entity1=_repository.WithDetails().FirstOrDefault(p => p.Code == input.Code); return ObjectMapper.Map(entity1); @@ -304,5 +81,4 @@ public class EquipmentAppService } } - } 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 index 503434c56..459e6dacd 100644 --- 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 @@ -18,9 +18,8 @@ public partial class BasedataApplicationAutoMapperProfile : Profile .Ignore(x => x.TenantId) .Ignore(x => x.Remark) .Ignore(x => x.ExtraProperties) - .Ignore(x => x.ConcurrencyStamp) - - ; + .Ignore(x => x.ConcurrencyStamp); + //CreateMap() diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAutoMapperProfile.cs index 0f2899506..a21be096e 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAutoMapperProfile.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAutoMapperProfile.cs @@ -19,9 +19,7 @@ public partial class BasedataApplicationAutoMapperProfile : Profile .Ignore(x => x.Remark) .Ignore(x => x.ExtraProperties) .Ignore(x => x.ConcurrencyStamp) - .ForMember(p =>p.Code, p => p.MapFrom(q =>"Q" +q.Code)) - - ; + .ForMember(p => p.Code, p => p.MapFrom(q => "Q" + q.Code)); //CreateMap() diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocAppService.cs new file mode 100644 index 000000000..d51a9a303 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocAppService.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.IO; +using System.Linq; +using System.Linq.Expressions; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Caching; +using Volo.Abp.Domain.Repositories; +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.Application.Contracts; +using Win_in.Sfs.Shared.Application.Contracts.ExportAndImport; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application; + +[Authorize] +[Route($"{BasedataConsts.RootPath}EquipmentLoc")] +public class EquipmentLocAppService + : SfsBaseDataWithCodeAppServiceBase + , IEquipmentLocAppService +{ + //private readonly ItemValidator _itemValidator; + private readonly IEquipmentLocManager _manager; + private new readonly IEquipmentLocRepository _repository; + private readonly IExportImportService _importService; + + public EquipmentLocAppService( + IEquipmentLocRepository repository, + IDistributedCache cache, + IExportImportService importService, + // ItemValidator itemValidator, + IEquipmentLocManager manager) + : base(repository, cache) + { + _importService=importService; + _repository = repository; + //_itemValidator = itemValidator; + _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, EquipmentLocCheckInput input) + { + await Task.CompletedTask.ConfigureAwait(false); + } + + [HttpPost("upsert")] + + public virtual async Task UpsertAsync(EquipmentLocEditInput input) + { + var entity = ObjectMapper.Map(input); + await _repository.UpsertAsync(entity).ConfigureAwait(false); + } + [HttpPost] + [Route("")] + public override async Task CreateAsync(EquipmentLocEditInput input) + { + var first= _repository.WithDetails().FirstOrDefault(p => p.Code == input.Code && p.LocCode==input.LocCode); + if (first == null) + { + var entity = ObjectMapper.Map(input); + await _repository.UpsertAsync(entity).ConfigureAwait(false); + var entity1=_repository.WithDetails().FirstOrDefault(p => p.Code == input.Code && p.LocCode == input.LocCode); + return ObjectMapper.Map(entity1); + } + else + { + throw new UserFriendlyException($"已存在器具代码{input.Code}和库位{input.LocCode}关系!"); + } + } + [HttpPost] + [Route("GetEquipmentLocs")] + public async Task> GetEquipmentLocAsync(List p_ls) + { + var query=await _repository.GetQueryableAsync().ConfigureAwait(false); + var list =query.Where(p => p_ls.Contains(p.Code)); + return ObjectMapper.Map< List ,List>(list.ToList()); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocAutoMapperProfile.cs new file mode 100644 index 000000000..a7754a6ed --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocAutoMapperProfile.cs @@ -0,0 +1,34 @@ +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 EquipmentLocAutoMapperProfile() + { + CreateMap() + + .ReverseMap(); + + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.TenantId) + .Ignore(x => x.Remark) + .Ignore(x => x.ExtraProperties) + .Ignore(x => x.ConcurrencyStamp) + .Ignore(x=>x.State) + .ForMember(p =>p.Code, p => p.MapFrom(q =>q.Code)) ; + + //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/Equipments/EquipmentLocCapAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocCapAppService.cs new file mode 100644 index 000000000..8b1e527b9 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocCapAppService.cs @@ -0,0 +1,70 @@ +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; +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.Application.Contracts.ExportAndImport; +namespace Win_in.Sfs.Basedata.Application; + +[Authorize] +[Route($"{BasedataConsts.RootPath}EquipmentLocCap")] +public class EquipmentLocCapAppService + : SfsBaseDataWithCodeAppServiceBase + , IEquipmentLocCapAppService +{ + private readonly IEquipmentLocCapManager _manager; + private new readonly IEquipmentLocCapRepository _repository; + private readonly IExportImportService _importService; + public EquipmentLocCapAppService( + IEquipmentLocCapRepository repository, + IDistributedCache cache, + IExportImportService importService, + IEquipmentLocCapManager manager) + : base(repository, cache) + { + _importService=importService; + _repository = repository; + _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, EquipmentLocCapCheckInput input) + { + await Task.CompletedTask.ConfigureAwait(false); + } + [HttpPost("upsert")] + + public virtual async Task UpsertAsync(EquipmentLocCapEditInput input) + { + var entity = ObjectMapper.Map(input); + await _repository.UpsertAsync(entity).ConfigureAwait(false); + } + + [HttpPost] + [Route("")] + public override async Task CreateAsync(EquipmentLocCapEditInput input) + { + var query =await _repository.GetQueryableAsync().ConfigureAwait(false); + var first=query.FirstOrDefault(p => p.Code == input.Code); + if (first == null) + { + var entity = ObjectMapper.Map(input); + entity.Code = string.Format("{0}{1}", "Q", entity.Code); + await _repository.UpsertAsync(entity).ConfigureAwait(false); + var entity1=_repository.WithDetails().FirstOrDefault(p => p.Code == input.Code); + return ObjectMapper.Map(entity1); + } + else + { + throw new UserFriendlyException($"已存在器具编号{input.Code}!"); + } + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocCapAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocCapAutoMapperProfile.cs new file mode 100644 index 000000000..fd94d51bb --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentLocCapAutoMapperProfile.cs @@ -0,0 +1,43 @@ +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 EquipmentLocCapAutoMapperProfile() + { + CreateMap() + .IgnoreAuditedObjectProperties() + + .ReverseMap(); + + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.TenantId) + .Ignore(x => x.Remark) + .Ignore(x => x.ExtraProperties) + .Ignore(x => x.ConcurrencyStamp) + .Ignore(x => x.StdQty) + .Ignore(x => x.PartCode) + .Ignore(x => x.Qty) + .Ignore(x => x.ConcurrencyStamp) + + + .ForMember(p => p.Code, p => p.MapFrom(q =>q.Code)); + + //CreateMap() + + //CreateMap() + // .Ignore(x => x.ItemCategory) + // .Ignore(x => x.Color); + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.StdQty) + .Ignore(x => x.PartCode) + .Ignore(x => x.Qty) + .Ignore(x => x.ConcurrencyStamp).Ignore(x => x.Id); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentPartCodeAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentPartCodeAppService.cs new file mode 100644 index 000000000..5a9bf75b8 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentPartCodeAppService.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.IO; +using System.Linq; +using System.Linq.Expressions; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +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.Application.Contracts; +using Win_in.Sfs.Shared.Application.Contracts.ExportAndImport; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application; + +[Authorize] +[Route($"{BasedataConsts.RootPath}EquipmentPartCode")] +public class EquipmentPartCodeAppService + : SfsBaseDataWithCodeAppServiceBase + , IEquipmentPartCodeAppService +{ + private readonly IEquipmentPartCodeManager _manager; + private new readonly IEquipmentPartCodeRepository _repository; + private readonly IExportImportService _importService; + + public EquipmentPartCodeAppService( + IEquipmentPartCodeRepository repository, + IDistributedCache cache, + IExportImportService importService, + + IEquipmentPartCodeManager manager) + : base(repository, cache) + { + _importService=importService; + _repository = repository; + _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, EquipmentPartCodeCheckInput input) + { + await Task.CompletedTask.ConfigureAwait(false); + } + + [HttpPost("upsert")] + + public virtual async Task UpsertAsync(EquipmentPartCodeEditInput input) + { + var entity = ObjectMapper.Map(input); + + await _repository.UpsertAsync(entity).ConfigureAwait(false); + } + + [HttpPost] + [Route("")] + public override async Task CreateAsync(EquipmentPartCodeEditInput input) + { + var first= _repository.WithDetails().FirstOrDefault(p => p.Code == input.Code && p.PartCode==input.PartCode); + if (first == null) + { + var entity = ObjectMapper.Map(input); + + await _repository.UpsertAsync(entity).ConfigureAwait(false); + var entity1=_repository.WithDetails().FirstOrDefault(p => p.Code == input.Code && p.PartCode == input.PartCode); + return ObjectMapper.Map(entity1); + } + else + { + throw new UserFriendlyException($"已存在器具代码{input.Code}和零件代码{input.PartCode}关系!"); + } + } + [HttpPost] + [Route("GetEquipmentPartCodes")] + public async Task> GetEquipmentPartCodesAsync(List p_ls) + { + var query = await _repository.GetQueryableAsync().ConfigureAwait(false); + var list = query.Where(p => p_ls.Contains(p.Code)); + + return ObjectMapper.Map, List>(list.ToList()); + + } + protected override async Task ValidateImportModelAsync(EquipmentPartCodeImportInput importInput, List validationRresult) + { + await base.CheckItemBasicItemCodeAsync(importInput.Code, validationRresult).ConfigureAwait(false); + + //await base.CheckComponentAndComponentQtyAsync(importInput.Component, importInput.ComponentQty, validationRresult).ConfigureAwait(false); + } + + + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentPartCodeAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentPartCodeAutoMapperProfile.cs new file mode 100644 index 000000000..c89a35201 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentPartCodeAutoMapperProfile.cs @@ -0,0 +1,35 @@ +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 EquipmentPartCodeAutoMapperProfile() + { + CreateMap() + + .ReverseMap(); + + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.TenantId) + .Ignore(x => x.Remark) + .Ignore(x => x.ExtraProperties) + .Ignore(x => x.ConcurrencyStamp) + .ForMember(p =>p.Code, p => p.MapFrom(q =>q.Code)) + + ; + + //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 index bd3f3bde9..f2f376764 100644 --- 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 @@ -151,10 +151,7 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase(inputFileBytes).ToList(); - var checklist=importList.GroupBy(p => new { p.Code, p.PartCode }).Where(g => g.Count() > 1).Select(p => new { Code = p.Key.Code, PartCode = p.Key.PartCode });//导入重复报错 - //检测是否导入重复 - - + var checklist=importList.GroupBy(p => new { p.Code, p.PartCode }).Where(g => g.Count() > 1).Select(p => new { Code = p.Key.Code, PartCode = p.Key.PartCode });//导入重复报错 //检测是否导入重复 List errors = new List(); if (checklist.Any()) { @@ -163,14 +160,7 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBasep.Code).Distinct().ToList(); var includeList = query.Where(p => codeList.Contains(p.Code)).ToList(); var existCodeList = includeList.Select(p => p.Code).ToList(); @@ -246,25 +236,23 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase list1 = new List(); // foreach (var itm in existKittingInputList) // { @@ -329,24 +315,13 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase p.Details).ToList(); - - // //await _repository.GetDbContext().BulkInsertAsync(newKittingDetailList).ConfigureAwait(continueOnCapturedContext: false); // //await _repository.GetDbContext().BulkUpdateAsync(existKittingDetailList).ConfigureAwait(continueOnCapturedContext: false); // // var ls= ObjectMapper.Map< List ,List >(existKittingInputList); - - // //await _repository.UpdateManyAsync(list1,true).ConfigureAwait(continueOnCapturedContext: false); - - // await _manager.ImportDataAsync(includeList).ConfigureAwait(false); - - - - } if (errors.Count > 0) diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/Equipment.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/Equipment.cs index 6ee992529..fbd852777 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/Equipment.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/Equipment.cs @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata; namespace Win_in.Sfs.Basedata.Domain; @@ -20,11 +21,11 @@ public class Equipment : SfsBaseDataAggregateRootBase, IHasCode /// /// 类型 /// - public string Type { get; set; } + public EnumEquipmentType Type { get; set; } /// /// 型号 /// - public string Model { get; set; } + public EnumEquipmentModel Model { get; set; } /// /// 库位编号 /// @@ -50,113 +51,4 @@ public class Equipment : SfsBaseDataAggregateRootBase, IHasCode public decimal StdQty { 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/EquipmentLoc.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLoc.cs new file mode 100644 index 000000000..17dcb0e73 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLoc.cs @@ -0,0 +1,36 @@ +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; +using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata; + +namespace Win_in.Sfs.Basedata.Domain; + +/// +/// 物品基本信息 +/// +public class EquipmentLoc : SfsBaseDataAggregateRootBase, IHasCode +{ + /// + /// 器具代码 + /// + public string Code { get; set; } + ///// + ///// 类型 + ///// + //public EquipmentType Type { get; set; } + ///// + ///// 型号 + ///// + //public EquipmentModel Model { get; set; } + /// + /// 库位代码 + /// + public string LocCode { get; set; } + /// + /// 状态 + /// + public int State { get; set; } + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocCap.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocCap.cs new file mode 100644 index 000000000..facd32dde --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocCap.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + + +public class EquipmentLocCap:SfsAggregateRootBase, IHasCode +{ + /// + /// 器具代码 + /// + public string Code { get; set; } + /// + /// 零件号 + /// + public string PartCode { get; set; } + /// + /// 占用百分比 + /// + public decimal Percent { get; set; } + + /// + /// 录入数量 + /// + public decimal Qty { get; set; } + + /// + /// 标包数量 + /// + public decimal StdQty { get; set; } + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocCapManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocCapManager.cs new file mode 100644 index 000000000..df81df2c1 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocCapManager.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Domain.Services; + +using Win_in.Sfs.Shared.Domain.Shared; + + +namespace Win_in.Sfs.Basedata.Domain; + +public class EquipmentLocCapManager : DomainService, IEquipmentLocCapManager +{ + private readonly IEquipmentLocCapRepository _repository; + + + public EquipmentLocCapManager(IEquipmentLocCapRepository repository + + ) + { + _repository = repository; + + } + + + public Task ImportDataAsync(List entities, List deleteEntities = null) + { + throw new NotImplementedException(); + } + + + + private async Task SetDetailAsync(List details) + { + + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocManager.cs new file mode 100644 index 000000000..f6b451bab --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocManager.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 EquipmentLocManager : DomainService, IEquipmentLocManager +{ + private readonly IEquipmentLocRepository _repository; + + public EquipmentLocManager(IEquipmentLocRepository 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/EquipmentPartCode.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentPartCode.cs new file mode 100644 index 000000000..4bf934a80 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentPartCode.cs @@ -0,0 +1,44 @@ +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; +using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata; + +namespace Win_in.Sfs.Basedata.Domain; + +/// +/// 器具基本信息 +/// +public class EquipmentPartCode : SfsBaseDataAggregateRootBase, IHasCode +{ + + /// + /// 器具编号 + /// + public string Code { get; set; } + ///// + ///// 类型 + ///// + //public EquipmentType Type { get; set; } + ///// + ///// 型号 + ///// + //public EquipmentModel Model { get; set; } + /// + /// 库位编号 + /// + public string PartCode { get; set; } + /// + /// 数量 + /// + public decimal StdQty { get; set; } + /// + /// 状态 + /// + public int State { get; set; } + /// + /// 单位 + /// + public string Unit { get; set; } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentPartCodeManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentPartCodeManager.cs new file mode 100644 index 000000000..ad208ed4a --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentPartCodeManager.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 EquipmentPartCodeManager : DomainService, IEquipmentPartCodeManager +{ + private readonly IEquipmentPartCodeRepository _repository; + + public EquipmentPartCodeManager(IEquipmentPartCodeRepository 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/IEquipmentLocCapManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocCapManager.cs new file mode 100644 index 000000000..5a62ee241 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocCapManager.cs @@ -0,0 +1,13 @@ +using System; +using System.Threading.Tasks; +using Win_in.Sfs.Shared.Domain; + + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IEquipmentLocCapManager : IBulkImportService +{ + //Task OpenDetailAsync(Guid id, Guid detailId); + //Task CloseDetailAsync(Guid id, Guid detailId); + //Task CheckIsCloseAsync(string number, string supplierCode, string itemCode); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocCapRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocCapRepository.cs new file mode 100644 index 000000000..1d8089fe8 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocCapRepository.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; +using Volo.Abp.Domain.Services; +using Win_in.Sfs.Shared.Domain; + + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IEquipmentLocCapRepository : ISfsBaseDataRepositoryBase, ISfsBulkRepositoryBase +{ + Task UpsertAsync(EquipmentLocCap newData); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocManager.cs new file mode 100644 index 000000000..cf35e9d99 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocManager.cs @@ -0,0 +1,8 @@ +using Volo.Abp.Domain.Services; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IEquipmentLocManager : IDomainService, IBulkImportService +{ +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocRepository.cs new file mode 100644 index 000000000..a525565b7 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocRepository.cs @@ -0,0 +1,13 @@ +using System.Threading.Tasks; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IEquipmentLocRepository : ISfsBaseDataRepositoryBase, ISfsBulkRepositoryBase +{ + public Task UpsertAsync(EquipmentLoc entity); + + public Task InsertAutoSaveAsync(EquipmentLoc entity); + + public Task UpsertAsyncByInterface(EquipmentLoc entity); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentPartCodeManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentPartCodeManager.cs new file mode 100644 index 000000000..1e369d57c --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentPartCodeManager.cs @@ -0,0 +1,8 @@ +using Volo.Abp.Domain.Services; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IEquipmentPartCodeManager : IDomainService, IBulkImportService +{ +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentPartCodeRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentPartCodeRepository.cs new file mode 100644 index 000000000..2768ff9c3 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentPartCodeRepository.cs @@ -0,0 +1,13 @@ +using System.Threading.Tasks; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IEquipmentPartCodeRepository : ISfsBaseDataRepositoryBase, ISfsBulkRepositoryBase +{ + public Task UpsertAsync(EquipmentPartCode entity); + + public Task InsertAutoSaveAsync(EquipmentPartCode entity); + + public Task UpsertAsyncByInterface(EquipmentPartCode entity); +} 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 dacc3c500..cb9249054 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 @@ -69,6 +69,8 @@ public static class BasedataDbContextModelCreatingExtensions builder.ConfigurePositionCode(options); builder.ConfigureSplitPackingRec(options); builder.ConfigureKitting(options); + builder.ConfigureEquipmentLoc(options); + builder.ConfigureEquipmentPartCode(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 ab9e3628b..c2fa0071a 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,9 +69,12 @@ public class BasedataEntityFrameworkCoreModule : AbpModule context.Services.AddTransient(); context.Services.AddTransient(); context.Services.AddTransient(); -context.Services.AddTransient(); + context.Services.AddTransient(); context.Services.AddTransient(); context.Services.AddTransient(); + context.Services.AddTransient(); + context.Services.AddTransient(); + context.Services.AddTransient(); ConfigureEntity(); } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentDbContextModelCreatingExtensions.cs index 7a78d99cf..37b9c9852 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentDbContextModelCreatingExtensions.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentDbContextModelCreatingExtensions.cs @@ -32,6 +32,30 @@ public static class EquipmentDbContextModelCreatingExtensions //Indexes b.HasIndex(q => new { q.Code }).IsUnique(); }); + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(options.TablePrefix + nameof(EquipmentLocCap), 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.PartCode).HasMaxLength(SfsPropertyConst.CodeLength); + + + //Relations + //None + + //Indexes + b.HasIndex(q => new { q.Code }).IsUnique(); + }); + + + + } } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentEfCoreRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentEfCoreRepository.cs index 5d0bab8cb..1d52ed2b1 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentEfCoreRepository.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentEfCoreRepository.cs @@ -15,10 +15,20 @@ public class EquipmentEfCoreRepository : SfsBaseDataEfCoreRepositoryBase p.Code == entity.Code).ConfigureAwait(false); if (exist == null) { var insRet = await InsertAsync(entity).ConfigureAwait(false); + + + var cap = new EquipmentLocCap() { Code = entity.Code,PartCode=string.Empty,Percent=0, Qty=0 , StdQty=0 }; + + await DbContext.Set().AddAsync(cap).ConfigureAwait(false); + + } else { @@ -36,6 +46,15 @@ public class EquipmentEfCoreRepository : SfsBaseDataEfCoreRepositoryBase().AddAsync(cap).ConfigureAwait(false); + + + } else { @@ -43,24 +62,7 @@ public class EquipmentEfCoreRepository : SfsBaseDataEfCoreRepositoryBase - // { - // //业务主键,可以是联合主键 - // options.ColumnPrimaryKeyExpression = c => new - // { - // c.Code - // }; - // //需要在更新时忽略的属性 - // options.IgnoreOnMergeUpdateExpression = c => new - // { - // c.Id, - // c.ManageType, - // }; - // }); } public virtual async Task InsertAutoSaveAsync(Equipment entity) diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocCapEfCoreRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocCapEfCoreRepository.cs new file mode 100644 index 000000000..6315ea9e0 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocCapEfCoreRepository.cs @@ -0,0 +1,66 @@ +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 EquipmentLocCapEfCoreRepository : SfsBaseDataEfCoreRepositoryBase, IEquipmentLocCapRepository, ISfsBulkRepositoryBase +{ + public EquipmentLocCapEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + public virtual async Task UpsertAsyncByInterface(EquipmentLocCap 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.Qty = entity.Qty; + exist.StdQty = entity.StdQty; + exist.Percent = entity.Percent; + exist.LastModificationTime = DateTimeOffset.Now.DateTime; + + } + } + public virtual async Task UpsertAsync(EquipmentLocCap 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.Qty = entity.Qty; + exist.StdQty = entity.StdQty; + exist.Percent = entity.Percent; + exist.LastModificationTime = DateTimeOffset.Now.DateTime; + + } + } + + public virtual async Task InsertAutoSaveAsync(EquipmentLocCap entity) + { + _ = await InsertAsync(entity, true, GetCancellationToken()).ConfigureAwait(false); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocDbContextModelCreatingExtensions.cs new file mode 100644 index 000000000..442d052a8 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocDbContextModelCreatingExtensions.cs @@ -0,0 +1,40 @@ +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 EquipmentLocDbContextModelCreatingExtensions +{ + public static void ConfigureEquipmentLoc(this ModelBuilder builder, BasedataModelBuilderConfigurationOptions options) + { + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(options.TablePrefix + nameof(EquipmentLoc), 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.LocCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(true); + + + + //Relations + //None + + //Indexes + b.HasIndex(q => new { q.Code ,q.LocCode}).IsUnique(); + }); + } +} + + +/// +/// 器具编号 +/// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocEfCoreRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocEfCoreRepository.cs new file mode 100644 index 000000000..8d3734d85 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocEfCoreRepository.cs @@ -0,0 +1,54 @@ +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 EquipmentLocEfCoreRepository : SfsBaseDataEfCoreRepositoryBase, IEquipmentLocRepository, ISfsBulkRepositoryBase +{ + public EquipmentLocEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + public virtual async Task UpsertAsyncByInterface(EquipmentLoc 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.State = entity.State; + + exist.LastModificationTime = DateTimeOffset.Now.DateTime; + + } + } + public virtual async Task UpsertAsync(EquipmentLoc 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.State = entity.State; + + exist.LastModificationTime = DateTimeOffset.Now.DateTime; + + } + + + } + + public virtual async Task InsertAutoSaveAsync(EquipmentLoc entity) + { + _ = await InsertAsync(entity, true, GetCancellationToken()).ConfigureAwait(false); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentPartCodeDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentPartCodeDbContextModelCreatingExtensions.cs new file mode 100644 index 000000000..055fe60a9 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentPartCodeDbContextModelCreatingExtensions.cs @@ -0,0 +1,40 @@ +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 EquipmentPartCodeDbContextModelCreatingExtensions +{ + public static void ConfigureEquipmentPartCode(this ModelBuilder builder, BasedataModelBuilderConfigurationOptions options) + { + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(options.TablePrefix + nameof(EquipmentPartCode), 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.PartCode).HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(true); + + + + //Relations + //None + + //Indexes + b.HasIndex(q => new { q.Code,q.PartCode }).IsUnique(); + }); + } +} + + +/// +/// 器具编号 +/// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentPartCodeEfCoreRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentPartCodeEfCoreRepository.cs new file mode 100644 index 000000000..a9b50c45d --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentPartCodeEfCoreRepository.cs @@ -0,0 +1,68 @@ +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 EquipmentPartCodeEfCoreRepository : SfsBaseDataEfCoreRepositoryBase, IEquipmentPartCodeRepository, ISfsBulkRepositoryBase +{ + public EquipmentPartCodeEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + public virtual async Task UpsertAsyncByInterface(EquipmentPartCode 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.State = entity.State; + + exist.LastModificationTime = DateTimeOffset.Now.DateTime; + + } + } + public virtual async Task UpsertAsync(EquipmentPartCode 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.State = entity.State; + + exist.LastModificationTime = DateTimeOffset.Now.DateTime; + + } + + // var context = await GetDbContextAsync(); + // await context.SingleMergeAsync(entity, options => + // { + // //业务主键,可以是联合主键 + // options.ColumnPrimaryKeyExpression = c => new + // { + // c.Code + // }; + // //需要在更新时忽略的属性 + // options.IgnoreOnMergeUpdateExpression = c => new + // { + // c.Id, + // c.ManageType, + // }; + // }); + } + + public virtual async Task InsertAutoSaveAsync(EquipmentPartCode entity) + { + _ = await InsertAsync(entity, true, GetCancellationToken()).ConfigureAwait(false); + } +} diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/ExpectOuts/ExpectOutAppService.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/ExpectOuts/ExpectOutAppService.cs index c1700e45d..67dbeb18a 100644 --- a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/ExpectOuts/ExpectOutAppService.cs +++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/ExpectOuts/ExpectOutAppService.cs @@ -189,10 +189,10 @@ public class ExpectOutAppService [HttpPost("save-detail-split-packing")] public virtual async Task> SaveDetail_SplitPackingAsync(SplitPacking_UpdateDetailInput input) { - var obj = await _repository.FindAsync(p => p.JobNumber == input.Number && p.PackingCode == input.FromPackingCode && p.Qty == input.FromQty).ConfigureAwait(false); + var obj = await _repository.FindAsync(p => p.JobNumber == input.Number && p.PackingCode == input.FromPackingCode && p.Qty == input.FromQty && p.LocationCode == input.FromLocationCode).ConfigureAwait(false); if (obj == null) { - return null; + throw new UserFriendlyException($"预计出表没有数据:JobNumber={input.Number}|PackingCode={input.FromPackingCode}|Qty={input.FromQty}|LocationCode={input.FromLocationCode}"); } //插入目标箱 diff --git a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumEquipmentModel.cs b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumEquipmentModel.cs new file mode 100644 index 000000000..65dd23a40 --- /dev/null +++ b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumEquipmentModel.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata; +public enum EnumEquipmentType +{ + [Display(Name = "小")] + Small =0, + [Display(Name = "大")] + Large =1, + [Display(Name = "超大")] + Oversized =2 +} + +public enum EnumEquipmentModel +{ + + /// + /// 内部 + /// + [Display(Name = "内部")] + Internal = 0, + + /// + /// 外部 + /// + [Display(Name = "外部")] + External = 1, + + + + +} diff --git a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/Statuses/EnumEquipmentRecordType.cs b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/Statuses/EnumEquipmentRecordType.cs new file mode 100644 index 000000000..4557aca04 --- /dev/null +++ b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/Statuses/EnumEquipmentRecordType.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Win_in.Sfs.Shared.Domain.Shared.Enums.Store.Statuses; +public enum EnumEquipmentRecordType +{ + Bind=0, + UnBind=1 + +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Equipments/IEquipmentRecordAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Equipments/IEquipmentRecordAppService.cs index 53043298c..e9f750f2d 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Equipments/IEquipmentRecordAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Equipments/IEquipmentRecordAppService.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; +using Win_in.Sfs.Basedata.Equipments.DTOs; using Win_in.Sfs.Shared.Application.Contracts; +using Win_in.Sfs.Wms.Store.Equipments; namespace Win_in.Sfs.Wms.Store.Application.Contracts; @@ -12,34 +14,10 @@ public interface IEquipmentRecordAppService , ISfsUpsertAppService { - ///// - ///// 打开订单明细 - ///// - ///// - //Task OpenDetailAsync(Guid id, Guid detailId); - ///// - ///// 关闭订单明细 - ///// - ///// - //Task CloseDetailAsync(Guid id, Guid detailId); + Task> Bind(List p_ls); + Task> UnBind(List p_ls); - ///// - ///// 更新订单明细 - ///// - ///// - ///// - ///// - //Task UpdateDetailsAsync(string number,List input); - ///// - ///// 【批量创建】到货通知 (收货单) - ///// - ///// - ///// - //Task> CreateManyAsync(List inputs); - //Task> GetListBySupplierCodeAsync(string supplierCode, string itemCode); - //Task> GetNoPoBillList(List poBillNo); - //Task CreateOrUpdateAsync(PurchaseOrderEditInput input); } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Equipments/EquipmentRecordAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Equipments/EquipmentRecordAppService.cs index 56a246d0c..a57637e3b 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Equipments/EquipmentRecordAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Equipments/EquipmentRecordAppService.cs @@ -10,6 +10,7 @@ using Volo.Abp; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; using Volo.Abp.ObjectMapping; +using Win_in.Sfs.Basedata.Equipments.DTOs; using Win_in.Sfs.Shared.Application; using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Store.Application.Contracts; @@ -42,6 +43,30 @@ public class EquipmentRecordAppService _manager = manager; _repository = repository; } + /// + /// 绑定器具记录 + /// + /// + /// + /// + [HttpPost("Bind")] + public Task> Bind(List p_ls) + { + return _manager.Bind(p_ls); + } + + /// + /// 解绑器具记录 + /// + /// + /// + /// + [HttpPost("UnBind")] + public Task> UnBind(List p_ls) + { + return _manager.UnBind(p_ls); + } + /// /// 没用 /// @@ -54,6 +79,9 @@ public class EquipmentRecordAppService { throw new NotImplementedException(); } + + + /// /// 没用 /// @@ -70,6 +98,8 @@ public class EquipmentRecordAppService { throw new NotImplementedException(); } + + /// /// 没用 /// @@ -96,109 +126,4 @@ public class EquipmentRecordAppService } - - //[HttpGet("by-batchsize")] - //public virtual async Task> GetToBeProcessedListAsync(int batchSize) - //{ - // var entities = await _manager.GetToBeProcessedListAsync(batchSize).ConfigureAwait(false); - // var dtos = ObjectMapper.Map, List>(entities); - // return dtos; - //} - - //[HttpPost("re-send-by-id/{id}")] - //public virtual async Task ReSendByNumberAsync(Guid id) - //{ - // var EquipmentRecordOld = await _repository.GetAsync(id).ConfigureAwait(false); - // if (EquipmentRecordOld == null) - // { - // throw new UserFriendlyException($"未找到ID为【{id.ToString()}】的数据"); - // } - - // EquipmentRecordOld.Status = EnumEquipmentRecordStatus.Error; - - // var EquipmentRecordNew = new ExchangeData() - // { - // DataAction = exchangeDataOld.DataAction, - // DataContent = exchangeDataOld.DataContent, - // DataIdentityCode = exchangeDataOld.DataIdentityCode, - // DataType = exchangeDataOld.DataType, - // DestinationSystem = exchangeDataOld.DestinationSystem, - // EffectiveDate = exchangeDataOld.EffectiveDate, - // Remark = exchangeDataOld.Remark, - // SourceSystem = exchangeDataOld.SourceSystem, - // WriteTime = DateTime.Now, - // Writer = null, - // }; - // var entityNew= await _repository.InsertAsync(exchangeDataNew).ConfigureAwait(false); - - // exchangeDataOld.Remark = $"在【{DateTime.Now}】时,重新生成了新的接口数据:ID为【{entityNew.Id}】"; - // await _repository.UpdateAsync(exchangeDataOld).ConfigureAwait(false); - - // return new ExchangeDataDTO() { Id = entityNew.Id }; - //} - - //[HttpPost("by-batchsize-post")] - //public virtual async Task> GetToBeProcessedListPostAsync(int batchSize) - //{ - // var resultList=new List(); - - // var entities = await - // (await _repository.GetDbSetAsync().ConfigureAwait(false)) - // .Where(p => p.Status == EnumExchangeDataStatus.Unread) - // .OrderBy(p => p.TyrpNumber) - // .Take(batchSize) - // .ToListAsync().ConfigureAwait(false); - - // foreach (var entity in entities) - // { - // entity.Status = EnumExchangeDataStatus.Success; - // entity.ReadTime = Clock.Now; - // entity.Reader = "DataExchange.Agent"; - // resultList.Add(await _repository.UpdateAsync(entity).ConfigureAwait(false)); - // } - - // var dtos = ObjectMapper.Map, List>(resultList); - // return dtos; - //} - - //[HttpPost("by-batchsize-only-read")] - //public virtual async Task> GetToBeProcessedListOnlyReadAsync(int batchSize) - //{ - // var entities = await - // (await _repository.GetDbSetAsync().ConfigureAwait(false)) - // .Where(p => p.Status == EnumExchangeDataStatus.Unread) - // .OrderBy(p => p.TyrpNumber) - // .Take(batchSize) - // .ToListAsync().ConfigureAwait(false); - - // var dtos = ObjectMapper.Map, List>(entities); - // return dtos; - //} - - //[HttpPost("update-status-by-id-list")] - //public virtual async Task> UpdateStatusByIdListAsync(List list) - //{ - // List listExchangeDatas = new EditableList(); - // var resultList = new List(); - - // foreach (var id in list) - // { - // listExchangeDatas.Add(await _repository.GetAsync(id).ConfigureAwait(false)); - // } - - // listExchangeDatas.ForEach(p => - // { - // p.Status = EnumExchangeDataStatus.Success; - // p.ReadTime = Clock.Now; - // p.Reader = "DataExchange.Agent"; - // }); - - // foreach (var entity in listExchangeDatas) - // { - // resultList.Add(await _repository.UpdateAsync(entity).ConfigureAwait(false)); - // } - - // var dtos = ObjectMapper.Map, List>(resultList); - // return dtos; - //} } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs index 3ee3eb757..18bf55a9e 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs @@ -451,6 +451,8 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase newInput.FromQty = updateJobDetailInput.FromQty; newInput.ToPackingCode = updateJobDetailInput.ToPackingCode; newInput.ToQty = updateJobDetailInput.ToQty; + newInput.FromLocationCode = transferNoteEditInput.Details[0].FromLocationCode; + newInput.ToLocationCode = transferNoteEditInput.Details[0].ToLocationCode; var expectOutRet = await _expectOutAppService.SaveDetail_SplitPackingAsync(newInput).ConfigureAwait(false); var jobRet = await _inspectJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false); var ret = await SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false); //库存操作 @@ -472,6 +474,8 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase newInput.FromQty = updateJobDetailInput.FromQty; newInput.ToPackingCode = updateJobDetailInput.ToPackingCode; newInput.ToQty = updateJobDetailInput.ToQty; + newInput.FromLocationCode = transferNoteEditInput.Details[0].FromLocationCode; + newInput.ToLocationCode = transferNoteEditInput.Details[0].ToLocationCode; var expectOutRet = await _expectOutAppService.SaveDetail_SplitPackingAsync(newInput).ConfigureAwait(false); var jobRet = await _issueJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false); var ret = await SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false); //库存操作 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentRecord.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentRecord.cs index 7e7dac3f7..1fed8946a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentRecord.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentRecord.cs @@ -4,10 +4,13 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared.Enums.Store.Statuses; namespace Win_in.Sfs.Wms.Store.Equipments; - +/// +/// 器具绑定解绑记录 +/// public class EquipmentRecord:SfsAggregateRootBase { /// @@ -27,9 +30,15 @@ public class EquipmentRecord:SfsAggregateRootBase /// public string Batch { get; set; } /// - /// 库位 + /// 来源库位 /// - public string LocCode { get; set; } + public string FromLocCode { get; set; } + + /// + /// 目标库位 + /// + public string ToLocCode { get; set; } + /// /// 数量 /// @@ -41,7 +50,7 @@ public class EquipmentRecord:SfsAggregateRootBase /// /// 记录类型 /// - public int Type { get; set;} + public EnumEquipmentRecordType Type { get; set;} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentRecordManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentRecordManager.cs index 2bdf03217..cf4486906 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentRecordManager.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentRecordManager.cs @@ -1,126 +1,226 @@ using System; using System.Collections.Generic; + using System.Linq; using System.Threading.Tasks; -using Volo.Abp; +using DocumentFormat.OpenXml.Packaging; using Volo.Abp.Domain.Services; using Win_in.Sfs.Basedata.Application.Contracts; -using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Basedata.Domain.Shared; +using Win_in.Sfs.Basedata.Equipments.DTOs; +using Win_in.Sfs.Shared.Domain.Shared.Enums.Store.Statuses; using Win_in.Sfs.Wms.Store.Equipments; namespace Win_in.Sfs.Wms.Store.Domain; + + + public class EquipmentRecordManager : DomainService, IEquipmentRecordManager { private readonly IEquipmentRecordRepository _repository; - //private readonly IPurchaseReceiptNoteManager _purchaseReceiptNoteManager; - //private readonly ISupplierAppService _supplierApp; - //private readonly IWarehouseAppService _warehouseApp; - - public EquipmentRecordManager(IEquipmentRecordRepository repository - //, IPurchaseReceiptNoteManager purchaseReceiptNoteManager - //, ISupplierAppService supplierApp - // , IWarehouseAppService warehouseApp + // private readonly IEquipmentLocCapRepository _repositoryCap; + + private readonly IEquipmentLocAppService _locService; + private readonly IEquipmentPartCodeAppService _partService; + + public EquipmentRecordManager( + IEquipmentRecordRepository repository, + //IEquipmentLocCapRepository repositoryCap, + IEquipmentLocAppService locService, + IEquipmentPartCodeAppService partService ) { + _locService=locService; _repository = repository; - //_purchaseReceiptNoteManager = purchaseReceiptNoteManager; - // _supplierApp = supplierApp; - // _warehouseApp = warehouseApp; + // _repositoryCap = repositoryCap; + _partService= partService; } - /// - ///// 打开订单明细 - ///// - ///// - //public virtual async Task CheckIsCloseAsync(string number,string supplierCode, string itemCode) - //{ - // bool result = false; - // var entitys = await _repository.GetListAsync(p =>p.Number==number && p.Details.Any(y => y.ItemCode == itemCode&&y.LineStatus== EnumOrderStatus.Close) && p.SupplierCode == supplierCode, true).ConfigureAwait(false); - // if (entitys.Count!=0) result = true; - // return result; - //} - ///// - ///// 打开订单明细 - ///// - ///// - //public virtual async Task OpenDetailAsync(Guid id, Guid detailId) - //{ - // var entity = await Repository.GetAsync(id).ConfigureAwait(false); - // Check.NotNull(entity, EntityClassName); - // await entity.OpenDetailAsync(detailId).ConfigureAwait(false); - //} - - ///// - ///// 关闭订单明细 - ///// - ///// - //public virtual async Task CloseDetailAsync(Guid id, Guid detailId) - //{ - // var entity = await Repository.GetAsync(id).ConfigureAwait(false); - // Check.NotNull(entity, EntityClassName); - // await entity.CloseDetailAsync(detailId).ConfigureAwait(false); - //} - - //public override async Task CreateAsync(PurchaseOrder purchaseOrder) - //{ - // //接收到新的采购订单时,更新无PO收货单的PoNumber - // //await _purchaseReceiptNoteManager.AppendPoNumberAsync(purchaseOrder).ConfigureAwait(false); - // purchaseOrder.SetIdAndNumberWithDetails(GuidGenerator, purchaseOrder.Number); - // //不要用base.create 要不会把number覆盖 - // purchaseOrder = await Repository.InsertAsync(purchaseOrder).ConfigureAwait(false); - // await PublishCreatedAsync(purchaseOrder).ConfigureAwait(false); - // return purchaseOrder; - - //} - - ///// - ///// 执行导入 - ///// - //public virtual async Task ImportDataAsync(List mergeEntities, List deleteEntities = null) - //{ - // //if (deleteEntities != null && deleteEntities.Count > 0) - // //{ - // // await _repository.BulkDeleteAsync(deleteEntities).ConfigureAwait(false); - // //} - - // //foreach (var entity in mergeEntities) - // //{ - // // entity.SetIdAndNumberWithDetails(GuidGenerator, await GenerateNumberAsync(nameof(PurchaseOrder), entity.OrderDate).ConfigureAwait(false)); - // //} - - // //await _repository.BulkMergeAsync(mergeEntities).ConfigureAwait(false); - - // //var insertDetails = new List(); - - // //foreach (var item in mergeEntities) - // //{ - // // await SetDetailAsync(item.Details).ConfigureAwait(false); - - // // insertDetails.AddRange(item.Details); - // //} - - // // await _repository.BulkInsertAsync(insertDetails).ConfigureAwait(false); - - //} - public Task ImportDataAsync(List entities, List deleteEntities = null) + public async Task> Bind(List p_ls) { - throw new NotImplementedException(); + List errors=new List(); + // var list= p_ls.GroupBy(p => new { p.EqptCode, p.PartCode }).Select(p=>new { EqptCode= p.Key.EqptCode, PartCode= p.Key.PartCode,SumQty=p.Sum(p=>p.Qty)});//导入零件 + // var partialErrors1=list.GroupBy(p => p.EqptCode).Where(g =>g.Count()>1).Select(p => new EquipmentRecordErrorDTO() { EqptCode= p.Key,PartCode=string.Empty,Error=$"同器具代码有{p.Count().ToString()}种零件!" }); + // errors.AddRange(partialErrors1.ToList());//同容器放不同零件校验 + // var ls=p_ls.Select(p => p.EqptCode).Distinct().ToList();//录入的器具记录代码列表 + // var Locs=_locService.GetEquipmentLocAsync(ls).Result;//获取器具库位关系 + // var parts =_partService.GetEquipmentPartCodesAsync(ls).Result;//获取器具零件关系 + // //零件和器具关系校验 + // var partErrorQery = from itm in list + // join itm1 in parts on + // new { itm.EqptCode, PartCode = itm.PartCode } equals new { EqptCode = itm1.Code, PartCode = itm1.PartCode } + // into temp + // from tm in temp.DefaultIfEmpty() + // where tm == null + // select new EquipmentRecordErrorDTO() + // { + // EqptCode = itm.EqptCode, + // PartCode = itm.PartCode, + // Error = $"器具零件关系不存在!" + // }; + // errors.AddRange(partErrorQery.ToList()); + // var query= await _repositoryCap.GetQueryableAsync().ConfigureAwait(false); + // var capExistList= query.Where(p => ls.Contains(p.EqptCode)).ToList();//器具容量 + + // var partialErrors2 = from itm in capExistList + // join itm1 in list.ToList() on itm.EqptCode equals itm1.EqptCode + // where itm.PartCode != itm.PartCode + // select new EquipmentRecordErrorDTO() { + // EqptCode = itm.EqptCode,PartCode=itm.PartCode ,Error=$"录入器具代码{itm.EqptCode}零件代码{itm.PartCode}与器具容量{itm1.EqptCode}零件代码{itm1.PartCode}不符!" + // }; + // errors.AddRange(partialErrors2.ToList());//导入记录和容量记录零件不是同一零件 + // var existList = from itm in list + // join itm1 in capExistList + // on new { itm.EqptCode, itm.PartCode } equals new { itm1.EqptCode, itm1.PartCode } + // select itm; + // foreach (var itm in existList) + // { + // var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量 + // cap.Qty += itm.SumQty;//当前数量 + + // if (cap.Qty > cap.StdQty) + // { + // errors.Add(new EquipmentRecordErrorDTO() { EqptCode=itm.EqptCode,PartCode=itm.PartCode,Error=$"超出容量限制!" }); + // } + // } + + // if (errors.Count > 0) + // { + // return errors; + // } + // //新建器具容量 + //var newList =from itm in list + // join itm1 in capExistList + // on new { itm.EqptCode, itm.PartCode } equals new { itm1.EqptCode, itm1.PartCode } + // into temp1 + // from tm1 in temp1.DefaultIfEmpty() + // where tm1 == null + // select itm; + // List newlocList=new List(); + // foreach (var itm in newList) + // { + // var gpart = parts.FirstOrDefault(p => p.Code == itm.EqptCode && p.PartCode == itm.PartCode); + // var stdQty = gpart.StdQty;//标包 + // var qty = itm.SumQty; + // var cap = new EquipmentLocCap() + + // { + // EqptCode=itm.EqptCode, + // PartCode=itm.PartCode, + // Percent=qty/stdQty, + // Qty=qty, + // StdQty=stdQty, + // }; + // cap.SetId(GuidGenerator.Create()); + // newlocList.Add(cap); + // } + // //已存在器具容量变更 + + // foreach (var itm in existList) + // { + // var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量 + // cap.Qty = cap.Qty+itm.SumQty;//当前数量 + // cap.Percent = cap.Qty / cap.StdQty; + // } + + // foreach (var itm in p_ls) + // { + // itm.Type = EnumEquipmentRecordType.Bind; + // itm.SetId(GuidGenerator.Create()); + // } + // await _repositoryCap.InsertManyAsync(newlocList).ConfigureAwait(false); + // await _repository.InsertManyAsync(p_ls).ConfigureAwait(false); + + + return errors; + } - private async Task SetDetailAsync(List details) + + + + public async Task> UnBind(List p_ls) { - //foreach (var detail in details) + List errors = new List(); + //var list = p_ls.GroupBy(p => new { p.EqptCode, p.PartCode }).Select(p => new { EqptCode = p.Key.EqptCode, PartCode = p.Key.PartCode, SumQty = p.Sum(p => p.Qty) });//导入零件 + //var partialErrors1 = list.GroupBy(p => p.EqptCode).Where(g => g.Count() > 1).Select(p => new EquipmentRecordErrorDTO() { EqptCode = p.Key, PartCode = string.Empty, Error = $"同器具代码有{p.Count().ToString()}种零件!" }); + //errors.AddRange(partialErrors1.ToList());//同容器放不同零件校验 + //var ls = p_ls.Select(p => p.EqptCode).Distinct().ToList();//录入的器具记录代码列表 + //var Locs = _locService.GetEquipmentLocAsync(ls).Result;//获取器具库位关系 + //var parts = _partService.GetEquipmentPartCodesAsync(ls).Result;//获取器具零件关系 + ////零件和器具关系校验 + //var partErrorQery = from itm in list + // join itm1 in parts on + // new { itm.EqptCode, PartCode = itm.PartCode } equals new { EqptCode = itm1.Code, PartCode = itm1.PartCode } + // into temp + // from tm in temp.DefaultIfEmpty() + // where tm == null + // select new EquipmentRecordErrorDTO() + // { + // EqptCode = itm.EqptCode, + // PartCode = itm.PartCode, + // Error = $"器具零件关系不存在!" + // }; + //errors.AddRange(partErrorQery.ToList()); + //var query = await _repositoryCap.GetQueryableAsync().ConfigureAwait(false); + //var capExistList = query.Where(p => ls.Contains(p.EqptCode)).ToList();//器具容量 + + //var partialErrors2 = from itm in capExistList + // join itm1 in list.ToList() on itm.EqptCode equals itm1.EqptCode + // where itm.PartCode != itm.PartCode + // select new EquipmentRecordErrorDTO() + // { + // EqptCode = itm.EqptCode, + // PartCode = itm.PartCode, + // Error = $"录入器具代码{itm.EqptCode}零件代码{itm.PartCode}与器具容量{itm1.EqptCode}零件代码{itm1.PartCode}不符!" + // }; + //errors.AddRange(partialErrors2.ToList());//导入记录和器具容量记录零件不是同一零件 + //var existList = from itm in list + // join itm1 in capExistList + // on new { itm.EqptCode, itm.PartCode } equals new { itm1.EqptCode, itm1.PartCode } + // select itm; + //foreach (var itm in existList) //{ - // var item = await ItemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); - // Check.NotNull(item, "物品代码", $"物品 {detail.ItemCode} 不存在"); + // var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量 + // cap.Qty =cap.Qty- itm.SumQty;//当前数量 - // if (item != null) + // if (cap.Qty <0) // { - // detail.ItemName = item.Name; - // detail.ItemDesc1 = item.Desc1; - // detail.ItemDesc2 = item.Desc2; + // errors.Add(new EquipmentRecordErrorDTO() { EqptCode = itm.EqptCode, PartCode = itm.PartCode, Error = $"解绑数量小0!" }); // } //} + + //foreach (var itm in existList) + //{ + // var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量 + // cap.Qty = cap.Qty - itm.SumQty;//当前数量 + // cap.Percent = cap.Qty / cap.StdQty; + //} + + //foreach (var itm in p_ls) + //{ + // itm.Type = EnumEquipmentRecordType.UnBind; + // itm.SetId(GuidGenerator.Create()); + //} + + //await _repository.InsertManyAsync(p_ls).ConfigureAwait(false); + + + + + + + return errors; + + } + public Task ImportDataAsync(List entities, List deleteEntities = null) + { + throw new NotImplementedException(); + } + + private async Task SetDetailAsync(List details) + { + } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/IEquipmentRecordManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/IEquipmentRecordManager.cs index b3cfa93e3..4b22f2e05 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/IEquipmentRecordManager.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/IEquipmentRecordManager.cs @@ -1,13 +1,16 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; +using Win_in.Sfs.Basedata.Equipments.DTOs; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Wms.Store.Equipments; namespace Win_in.Sfs.Wms.Store.Domain; -public interface IEquipmentRecordManager :IBulkImportService +public interface IEquipmentRecordManager : IBulkImportService { - //Task OpenDetailAsync(Guid id, Guid detailId); - //Task CloseDetailAsync(Guid id, Guid detailId); - //Task CheckIsCloseAsync(string number, string supplierCode, string itemCode); + Task> Bind(List p_ls); + Task> UnBind(List p_ls); + + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Equipments/EquipmentRecordDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Equipments/EquipmentRecordDbContextModelCreatingExtensions.cs index 1457d74ad..4d27863b9 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Equipments/EquipmentRecordDbContextModelCreatingExtensions.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Equipments/EquipmentRecordDbContextModelCreatingExtensions.cs @@ -22,11 +22,15 @@ public static class EquipmentRecordDbContextModelCreatingExtensions b.Property(q => q.BarCode).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.Batch).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.EqptCode).HasMaxLength(SfsPropertyConst.CodeLength); - b.Property(q => q.LocCode).HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.ToLocCode).HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.FromLocCode).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.PartCode).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.Batch).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.Type).HasMaxLength(SfsPropertyConst.CodeLength); - + + + + b.HasIndex(q => new { q.EqptCode }); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContextModelCreatingExtensions.cs index 7ccb4b4c8..a325299a5 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContextModelCreatingExtensions.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContextModelCreatingExtensions.cs @@ -30,7 +30,7 @@ public static class StoreDbContextModelCreatingExtensions builder.ConfigureWorkOrder(options); builder.ConfigureEquipmentRecord(options); - + //builder.ConfigureEquipmentLocCap(options);