diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/EquipmentRecordPermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/ChassisPermissions.cs
similarity index 96%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/EquipmentRecordPermissions.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/ChassisPermissions.cs
index cd76d45fa..9d3403ac7 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/EquipmentRecordPermissions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/ChassisPermissions.cs
@@ -1,4 +1,5 @@
using Volo.Abp.Authorization.Permissions;
+using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/DTOs/EquipmentRecordDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/DTOs/ChassisDTO.cs
similarity index 100%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/DTOs/EquipmentRecordDTO.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/DTOs/ChassisDTO.cs
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IEquipmentRecordAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IChassisAppService.cs
similarity index 100%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IEquipmentRecordAppService.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IChassisAppService.cs
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/EquipmentRecordEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/ChassisEditInput.cs
similarity index 100%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/EquipmentRecordEditInput.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/ChassisEditInput.cs
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/EquipmentRecordImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/ChassisImportInput.cs
similarity index 100%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/EquipmentRecordImportInput.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/Inputs/ChassisImportInput.cs
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/ChassisOperationSequencePermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/ChassisOperationSequencePermissions.cs
new file mode 100644
index 000000000..09fd991f1
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/ChassisOperationSequencePermissions.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Authorization.Permissions;
+using Win_in.Sfs.Wms.Store.Domain;
+
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
+
+public static class ChassisOperationSequencePermissions
+{
+ public const string Default = StorePermissions.GroupName + "." + nameof(ChassisOperationSequence);
+ public const string Create = Default + "." + StorePermissions.CreateStr;
+ public const string Update = Default + "." + StorePermissions.UpdateStr;
+ public const string Delete = Default + "." + StorePermissions.DeleteStr;
+
+ public static void AddChassisOperationSequencePermission(this PermissionGroupDefinition permissionGroup)
+ {
+ var purchaseOrderPermission =
+ permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(ChassisOperationSequence)));
+ purchaseOrderPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
+ purchaseOrderPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
+ purchaseOrderPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/DTOs/ChassisOperationSequenceDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/DTOs/ChassisOperationSequenceDTO.cs
new file mode 100644
index 000000000..31994e458
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/DTOs/ChassisOperationSequenceDTO.cs
@@ -0,0 +1,48 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+using Win_in.Sfs.Shared.Application.Contracts;
+
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
+
+///
+/// 底盘信息
+///
+[Display(Name = "底盘信息")]
+public class ChassisOperationSequenceDTO : SfsBasicDTOBase
+{
+ ///
+ /// Wms编号
+ ///
+ [Display(Name = "Wms编号")]
+ public string Number { get; set; }
+
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string ChassisOperationSequenceNumber { get; set; }
+
+ ///
+ /// 描述
+ ///
+ [Display(Name = "描述")]
+ public string Description { get; set; }
+
+ ///
+ /// 底盘生产时间
+ ///
+ [Display(Name = "底盘生产时间")]
+ public DateTime ProduceDateTime { get; set; }
+
+ ///
+ /// 接收接口时间
+ ///
+ [Display(Name = "接收接口时间")]
+ public DateTime ReceiveInterfaceDateTime { get; set; }
+
+ ///
+ /// 执行位置排序列
+ ///
+ [Display(Name = "执行位置排序列")]
+ public long SortNumber { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/IChassisOperationSequenceAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/IChassisOperationSequenceAppService.cs
new file mode 100644
index 000000000..7b5eb3a43
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/IChassisOperationSequenceAppService.cs
@@ -0,0 +1,12 @@
+using Win_in.Sfs.Shared.Application.Contracts;
+
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
+
+public interface IChassisOperationSequenceAppService
+ :
+ ISfsStoreMasterAppServiceBase,
+ ISfsCheckStatusAppService
+ , ISfsUpsertAppService
+{
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/Inputs/ChassisOperationSequenceEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/Inputs/ChassisOperationSequenceEditInput.cs
new file mode 100644
index 000000000..4876016ef
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/Inputs/ChassisOperationSequenceEditInput.cs
@@ -0,0 +1,48 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
+
+///
+/// 底盘信息
+///
+[Display(Name = "底盘信息")]
+public class ChassisOperationSequenceEditInput
+ : SfsStoreCreateOrUpdateInputBase
+{
+ ///
+ /// Wms编号
+ ///
+ [Display(Name = "Wms编号")]
+ public string Number { get; set; }
+
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string ChassisOperationSequenceNumber { get; set; }
+
+ ///
+ /// 描述
+ ///
+ [Display(Name = "描述")]
+ public string Description { get; set; }
+
+ ///
+ /// 底盘生产时间
+ ///
+ [Display(Name = "底盘生产时间")]
+ public DateTime ProduceDateTime { get; set; }
+
+ ///
+ /// 接收接口时间
+ ///
+ [Display(Name = "接收接口时间")]
+ public DateTime ReceiveInterfaceDateTime { get; set; }
+
+ ///
+ /// 执行位置排序列
+ ///
+ [Display(Name = "执行位置排序列")]
+ public long SortNumber { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/Inputs/ChassisOperationSequenceImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/Inputs/ChassisOperationSequenceImportInput.cs
new file mode 100644
index 000000000..d2c4942b4
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/Inputs/ChassisOperationSequenceImportInput.cs
@@ -0,0 +1,51 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+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.Wms.Store.Application.Contracts;
+
+///
+/// 底盘信息
+///
+[Display(Name = "底盘信息")]
+public class ChassisOperationSequenceImportInput : SfsStoreImportInputBase
+{
+ ///
+ /// Wms编号
+ ///
+ [Display(Name = "Wms编号")]
+ public string Number { get; set; }
+
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string ChassisOperationSequenceNumber { get; set; }
+
+ ///
+ /// 描述
+ ///
+ [Display(Name = "描述")]
+ public string Description { get; set; }
+
+ ///
+ /// 底盘生产时间
+ ///
+ [Display(Name = "底盘生产时间")]
+ public DateTime ProduceDateTime { get; set; }
+
+ ///
+ /// 接收接口时间
+ ///
+ [Display(Name = "接收接口时间")]
+ public DateTime ReceiveInterfaceDateTime { get; set; }
+
+ ///
+ /// 执行位置排序列
+ ///
+ [Display(Name = "执行位置排序列")]
+ public long SortNumber { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDTO.cs
index 3e1f8691f..7f435efd2 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDTO.cs
@@ -28,14 +28,7 @@ public class AssembleJobDTO : SfsJobDTOBase
///
[Display(Name = "要货单号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string AssembleRequestNumber { get; set; }
-
- ///
- /// 车间
- ///
- [Display(Name = "车间")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string Workshop { get; set; }
+ public string AssembleRequestNumber { get; set; }
///
/// 使用在途库
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDetailDTO.cs
index c89aa7d8f..236b30fb3 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDetailDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/DTOs/AssembleJobDetailDTO.cs
@@ -1,112 +1,519 @@
using System;
using System.ComponentModel.DataAnnotations;
-using Win_in.Sfs.Shared.Domain;
+using System.ComponentModel.DataAnnotations.Schema;
+using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class AssembleJobDetailDTO : SfsJobRecommendFromDetailDTOBase, IHasToLocation
+public class AssembleJobDetailDTO : SfsDetailDTOBase
{
+ #region 库存基础信息
///
- /// 请求库位
+ /// 物品代码
///
- [Display(Name = "请求库位")]
- public string RequestLocationCode { get; set; }
+ public string ItemCode { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ public string ItemName { get; set; }
+
+ ///
+ /// 物品描述1
+ ///
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
///
- /// 到库位
+ /// 计量单位
///
- [Display(Name = "到库位")]
- public string ToLocationCode { get; set; }
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
- /// 到库区
+ /// 到库区
///
- [Display(Name = "到库区")]
- public string ToLocationArea { get; set; }
+ public string RequestLocationArea { get; set; }
///
- /// 到库位组
+ /// 到库位组
///
- [Display(Name = "到库位组")]
- public string ToLocationGroup { get; set; }
+ public string RequestLocationGroup { get; set; }
///
- /// 到ERP库位
+ /// 到ERP库位
///
- [Display(Name = "到ERP库位")]
- public string ToLocationErpCode { get; set; }
+ public string RequestLocationErpCode { get; set; }
///
- /// 到仓库
+ /// 到仓库
///
- [Display(Name = "到仓库")]
- public string ToWarehouseCode { get; set; }
+ public string RequestWarehouseCode { get; set; }
///
- /// 在途库库位
+ /// 在途库库位
///
- [Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
///
- /// 生产线
+ /// 生产线
///
- [Display(Name = "生产线")]
public string ProdLine { get; set; }
///
- /// 工作中心
+ /// 位置码
+ ///
+ public string PositionCode { get; set; }
+
+ ///
+ /// 推荐的类型
+ ///
+ public EnumRecommendType RecommendType { get; set; }
+
+ ///
+ /// 需求数量
+ ///
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
+
+ ///
+ /// 推荐来源托标签
+ ///
+ public string RecommendFromContainerCode { get; set; }
+
+ ///
+ /// 推荐来源箱标签
+ ///
+ public string RecommendFromPackingCode { get; set; }
+
+ ///
+ /// 推荐来源批次供应商批次
+ ///
+ public string RecommendFromSupplierBatch { get; set; }
+
+ ///
+ /// 推荐来源批次到货时间
+ ///
+ public DateTime RecommendFromArriveDate { get; set; }
+
+ ///
+ /// 推荐来源批次生产时间
+ ///
+ public DateTime RecommendFromProduceDate { get; set; }
+
+ ///
+ /// 推荐来源批次过期时间
+ ///
+ public DateTime RecommendFromExpireDate { get; set; }
+
+ ///
+ /// 推荐来源批次排序
+ ///
+ public string RecommendFromLot { get; set; }
+
+ ///
+ /// 推荐来源库位
+ ///
+ public string RecommendFromLocationCode { get; set; }
+
+ ///
+ /// 推荐来源库区
+ ///
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
///
- [Display(Name = "工作中心")]
- public string WorkStation { get; set; }
+ public string RecommendFromLocationErpCode { get; set; }
///
- /// 过期时间
+ /// 推荐来源仓库
///
- [Display(Name = "过期时间")]
- public DateTime ExpiredTime { get; set; }
+ public string RecommendFromWarehouseCode { get; set; }
///
- /// 工序
+ /// 推荐来源数量
///
- [Display(Name = "工序")]
- public string Operation { get; set; }
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
///
- /// 配送方式
+ /// 推荐目标库位组
///
- [Display(Name = "配送方式")]
- public EnumDistributionType DistributionType { get; set; }
+ public string RecommendToLocationGroup { get; set; }
///
- /// 取整方式
+ /// 推荐目标ERP库位
///
- [Display(Name = "取整方式")]
- public EnumTruncType TruncType { get; set; }
+ public string RecommendToLocationErpCode { get; set; }
///
- /// 取整后数量
+ /// 推荐目标仓库
///
- [Display(Name = "取整后数量")]
- public decimal RoundedQty { get; set; }
+ public string RecommendToWarehouseCode { get; set; }
///
- /// 计划拆分规则
+ /// 推荐目标数量
///
- [Display(Name = "计划拆分规则")]
- public EnumPlannedSplitRule PlannedSplitRule { get; set; }
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
///
- /// 计划开始时间
+ /// 库移来源托标签
///
- [Display(Name = "计划开始时间")]
- public DateTime PlanBeginTime { get; set; }
+ public string TransferLibFromContainerCode { get; set; }
///
- /// 每次配送数量
+ /// 库移来源箱标签
///
- [Display(Name = "每次配送数量")]
- public decimal DeliveryQty { get; set; }
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/IAssembleJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/IAssembleJobAppService.cs
index fae62f6c7..1051d7cf4 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/IAssembleJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/IAssembleJobAppService.cs
@@ -8,19 +8,8 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface IAssembleJobAppService
: ISfsJobAppServiceBase
{
- Task> CheckJobExistByItemCodeAndLocationCode(string itemCode, string locationCode);
-
Task CancelByMaterialRequestAsync(string assembleNumber);
- Task> GetListByTypeAsync(SfsJobRequestInputBase requestInput, string requestType,
- bool includeDetails = false, CancellationToken cancellationToken = default);
-
Task> GetByRequestNumberAsync(string requestNumber);
- ///
- /// 保存拆箱时涉及的明细修改
- ///
- ///
- Task SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input);
-
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobDetailInput.cs
index 18b59ae9d..903d6df5a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobDetailInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobDetailInput.cs
@@ -1,134 +1,519 @@
using System;
using System.ComponentModel.DataAnnotations;
-using Win_in.Sfs.Shared.Domain;
+using System.ComponentModel.DataAnnotations.Schema;
+using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class AssembleJobDetailInput : SfsJobRecommendFromDetailInputBase, IHasToLocation
+public class AssembleJobDetailInput : SfsDetailInputBase
{
+ #region 库存基础信息
///
- /// 请求库位
+ /// 物品代码
///
- [Display(Name = "请求库位")]
- [Required(ErrorMessage = "{0}是必填项")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string RequestLocationCode { get; set; }
+ public string ItemCode { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ public string ItemName { get; set; }
+
+ ///
+ /// 物品描述1
+ ///
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
///
- /// 到库位
+ /// 计量单位
///
- [Display(Name = "到库位")]
- [Required(ErrorMessage = "{0}是必填项")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ToLocationCode { get; set; }
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
- /// 到库区
+ /// 到库区
///
- [Display(Name = "到库区")]
- public string ToLocationArea { get; set; }
+ public string RequestLocationArea { get; set; }
///
- /// 到库位组
+ /// 到库位组
///
- [Display(Name = "到库位组")]
- public string ToLocationGroup { get; set; }
+ public string RequestLocationGroup { get; set; }
///
- /// 到ERP库位
+ /// 到ERP库位
///
- [Display(Name = "到ERP库位")]
- [Required(ErrorMessage = "{0}是必填项")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ToLocationErpCode { get; set; }
+ public string RequestLocationErpCode { get; set; }
///
- /// 到仓库
+ /// 到仓库
///
- [Display(Name = "到仓库")]
- [Required(ErrorMessage = "{0}是必填项")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ToWarehouseCode { get; set; }
+ public string RequestWarehouseCode { get; set; }
///
- /// 在途库库位
+ /// 在途库库位
///
- [Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
///
- /// 生产线
+ /// 生产线
///
- [Display(Name = "生产线")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; }
///
- /// 工作中心
+ /// 位置码
+ ///
+ public string PositionCode { get; set; }
+
+ ///
+ /// 推荐的类型
///
- [Display(Name = "工作中心")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string WorkStation { get; set; }
+ public EnumRecommendType RecommendType { get; set; }
///
- /// 过期时间
+ /// 需求数量
///
- [Display(Name = "过期时间")]
- [Required(ErrorMessage = "{0}是必填项")]
- public DateTime ExpiredTime { get; set; }
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
///
- /// 工序
+ /// 推荐来源托标签
///
- [Display(Name = "工序")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string Operation { get; set; }
+ public string RecommendFromContainerCode { get; set; }
///
- /// 配送方式
+ /// 推荐来源箱标签
///
- [Display(Name = "配送方式")]
- public EnumDistributionType DistributionType { get; set; }
+ public string RecommendFromPackingCode { get; set; }
///
- /// 取整方式
+ /// 推荐来源批次供应商批次
///
- [Display(Name = "取整方式")]
- public EnumTruncType TruncType { get; set; }
+ public string RecommendFromSupplierBatch { get; set; }
///
- /// 取整后数量
+ /// 推荐来源批次到货时间
///
- [Display(Name = "取整后数量")]
- public decimal RoundedQty { get; set; }
+ public DateTime RecommendFromArriveDate { get; set; }
///
- /// 计划拆分规则
+ /// 推荐来源批次生产时间
///
- [Display(Name = "计划拆分规则")]
- public EnumPlannedSplitRule PlannedSplitRule { get; set; }
+ public DateTime RecommendFromProduceDate { get; set; }
///
- /// 计划开始时间
+ /// 推荐来源批次过期时间
///
- [Display(Name = "计划开始时间")]
- public DateTime PlanBeginTime { get; set; }
+ public DateTime RecommendFromExpireDate { get; set; }
///
- /// 每次配送数量
+ /// 推荐来源批次排序
///
- [Display(Name = "每次配送数量")]
- public decimal DeliveryQty { get; set; }
+ public string RecommendFromLot { get; set; }
///
- /// 位置码
+ /// 推荐来源库位
///
- public string PositionCode { get; set; }
+ public string RecommendFromLocationCode { get; set; }
///
- /// 推荐类型
+ /// 推荐来源库区
///
- public EnumRecommendType RecommendType { get; set; }
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
+ ///
+ public string RecommendFromLocationErpCode { get; set; }
+
+ ///
+ /// 推荐来源仓库
+ ///
+ public string RecommendFromWarehouseCode { get; set; }
+
+ ///
+ /// 推荐来源数量
+ ///
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
+
+ ///
+ /// 推荐目标库位组
+ ///
+ public string RecommendToLocationGroup { get; set; }
+
+ ///
+ /// 推荐目标ERP库位
+ ///
+ public string RecommendToLocationErpCode { get; set; }
+
+ ///
+ /// 推荐目标仓库
+ ///
+ public string RecommendToWarehouseCode { get; set; }
+
+ ///
+ /// 推荐目标数量
+ ///
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
+
+ ///
+ /// 库移来源托标签
+ ///
+ public string TransferLibFromContainerCode { get; set; }
+
+ ///
+ /// 库移来源箱标签
+ ///
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobEditInput.cs
index e5c187236..a1ba6509e 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobEditInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AssembleJobs/Inputs/AssembleJobEditInput.cs
@@ -22,7 +22,7 @@ public class AssembleJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCreateIn
[Display(Name = "要货单号")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string AssembleRequestNumber { get; set; }
+ public string AssembleIssueRequestsNumber { get; set; }
///
/// 叫料请求类型
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDTO.cs
index 2d61113ec..83ef675d4 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDTO.cs
@@ -29,14 +29,7 @@ public class CoatingIssueJobDTO : SfsJobDTOBase
///
[Display(Name = "要货单号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string MaterialRequestNumber { get; set; }
-
- ///
- /// 车间
- ///
- [Display(Name = "车间")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string Workshop { get; set; }
+ public string MaterialRequestNumber { get; set; }
///
/// 使用在途库
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailDTO.cs
index b8baa0cb7..33d6b2b4d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailDTO.cs
@@ -1,113 +1,519 @@
using System;
using System.ComponentModel.DataAnnotations;
-using Win_in.Sfs.Shared.Domain;
+using System.ComponentModel.DataAnnotations.Schema;
+using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class CoatingIssueJobDetailDTO : SfsJobRecommendFromDetailDTOBase, IHasToLocation
+public class CoatingIssueJobDetailDTO : SfsDetailDTOBase
{
+ #region 库存基础信息
///
- /// 请求库位
+ /// 物品代码
///
- [Display(Name = "请求库位")]
- public string RequestLocationCode { get; set; }
+ public string ItemCode { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ public string ItemName { get; set; }
+
+ ///
+ /// 物品描述1
+ ///
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
///
- /// 到库位
+ /// 计量单位
///
- [Display(Name = "到库位")]
- public string ToLocationCode { get; set; }
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
- /// 到库区
+ /// 到库区
///
- [Display(Name = "到库区")]
- public string ToLocationArea { get; set; }
+ public string RequestLocationArea { get; set; }
///
- /// 到库位组
+ /// 到库位组
///
- [Display(Name = "到库位组")]
- public string ToLocationGroup { get; set; }
+ public string RequestLocationGroup { get; set; }
///
- /// 到ERP库位
+ /// 到ERP库位
///
- [Display(Name = "到ERP库位")]
- public string ToLocationErpCode { get; set; }
+ public string RequestLocationErpCode { get; set; }
///
- /// 到仓库
+ /// 到仓库
///
- [Display(Name = "到仓库")]
- public string ToWarehouseCode { get; set; }
+ public string RequestWarehouseCode { get; set; }
///
- /// 在途库库位
+ /// 在途库库位
///
- [Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
///
- /// 生产线
+ /// 生产线
///
- [Display(Name = "生产线")]
public string ProdLine { get; set; }
///
- /// 工作中心
+ /// 位置码
+ ///
+ public string PositionCode { get; set; }
+
+ ///
+ /// 推荐的类型
+ ///
+ public EnumRecommendType RecommendType { get; set; }
+
+ ///
+ /// 需求数量
+ ///
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
+
+ ///
+ /// 推荐来源托标签
+ ///
+ public string RecommendFromContainerCode { get; set; }
+
+ ///
+ /// 推荐来源箱标签
+ ///
+ public string RecommendFromPackingCode { get; set; }
+
+ ///
+ /// 推荐来源批次供应商批次
+ ///
+ public string RecommendFromSupplierBatch { get; set; }
+
+ ///
+ /// 推荐来源批次到货时间
+ ///
+ public DateTime RecommendFromArriveDate { get; set; }
+
+ ///
+ /// 推荐来源批次生产时间
+ ///
+ public DateTime RecommendFromProduceDate { get; set; }
+
+ ///
+ /// 推荐来源批次过期时间
+ ///
+ public DateTime RecommendFromExpireDate { get; set; }
+
+ ///
+ /// 推荐来源批次排序
+ ///
+ public string RecommendFromLot { get; set; }
+
+ ///
+ /// 推荐来源库位
+ ///
+ public string RecommendFromLocationCode { get; set; }
+
+ ///
+ /// 推荐来源库区
+ ///
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
///
- [Display(Name = "工作中心")]
- public string WorkStation { get; set; }
+ public string RecommendFromLocationErpCode { get; set; }
///
- /// 过期时间
+ /// 推荐来源仓库
///
- [Display(Name = "过期时间")]
- public DateTime ExpiredTime { get; set; }
+ public string RecommendFromWarehouseCode { get; set; }
///
- /// 工序
+ /// 推荐来源数量
///
- [Display(Name = "工序")]
- public string Operation { get; set; }
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
///
- /// 配送方式
+ /// 推荐目标库位组
///
- [Display(Name = "配送方式")]
- public EnumDistributionType DistributionType { get; set; }
+ public string RecommendToLocationGroup { get; set; }
///
- /// 取整方式
+ /// 推荐目标ERP库位
///
- [Display(Name = "取整方式")]
- public EnumTruncType TruncType { get; set; }
+ public string RecommendToLocationErpCode { get; set; }
///
- /// 取整后数量
+ /// 推荐目标仓库
///
- [Display(Name = "取整后数量")]
- public decimal RoundedQty { get; set; }
+ public string RecommendToWarehouseCode { get; set; }
///
- /// 计划拆分规则
+ /// 推荐目标数量
///
- [Display(Name = "计划拆分规则")]
- public EnumPlannedSplitRule PlannedSplitRule { get; set; }
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
///
- /// 计划开始时间
+ /// 库移来源托标签
///
- [Display(Name = "计划开始时间")]
- public DateTime PlanBeginTime { get; set; }
+ public string TransferLibFromContainerCode { get; set; }
///
- /// 每次配送数量
+ /// 库移来源箱标签
///
- [Display(Name = "每次配送数量")]
- public decimal DeliveryQty { get; set; }
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailInput.cs
index 5d0339639..2603292f7 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetailInput.cs
@@ -1,135 +1,519 @@
using System;
using System.ComponentModel.DataAnnotations;
-using Win_in.Sfs.Shared.Domain;
+using System.ComponentModel.DataAnnotations.Schema;
+using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class CoatingIssueJobDetailInput : SfsJobRecommendFromDetailInputBase, IHasToLocation
+public class CoatingIssueJobDetailInput : SfsDetailInputBase
{
+ #region 库存基础信息
///
- /// 请求库位
+ /// 物品代码
///
- [Display(Name = "请求库位")]
- [Required(ErrorMessage = "{0}是必填项")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string RequestLocationCode { get; set; }
+ public string ItemCode { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ public string ItemName { get; set; }
+
+ ///
+ /// 物品描述1
+ ///
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
///
- /// 到库位
+ /// 计量单位
///
- [Display(Name = "到库位")]
- [Required(ErrorMessage = "{0}是必填项")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ToLocationCode { get; set; }
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
- /// 到库区
+ /// 到库区
///
- [Display(Name = "到库区")]
- public string ToLocationArea { get; set; }
+ public string RequestLocationArea { get; set; }
///
- /// 到库位组
+ /// 到库位组
///
- [Display(Name = "到库位组")]
- public string ToLocationGroup { get; set; }
+ public string RequestLocationGroup { get; set; }
///
- /// 到ERP库位
+ /// 到ERP库位
///
- [Display(Name = "到ERP库位")]
- [Required(ErrorMessage = "{0}是必填项")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ToLocationErpCode { get; set; }
+ public string RequestLocationErpCode { get; set; }
///
- /// 到仓库
+ /// 到仓库
///
- [Display(Name = "到仓库")]
- [Required(ErrorMessage = "{0}是必填项")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ToWarehouseCode { get; set; }
+ public string RequestWarehouseCode { get; set; }
///
- /// 在途库库位
+ /// 在途库库位
///
- [Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
///
- /// 生产线
+ /// 生产线
///
- [Display(Name = "生产线")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; }
///
- /// 工作中心
+ /// 位置码
+ ///
+ public string PositionCode { get; set; }
+
+ ///
+ /// 推荐的类型
///
- [Display(Name = "工作中心")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string WorkStation { get; set; }
+ public EnumRecommendType RecommendType { get; set; }
///
- /// 过期时间
+ /// 需求数量
///
- [Display(Name = "过期时间")]
- [Required(ErrorMessage = "{0}是必填项")]
- public DateTime ExpiredTime { get; set; }
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
///
- /// 工序
+ /// 推荐来源托标签
///
- [Display(Name = "工序")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string Operation { get; set; }
+ public string RecommendFromContainerCode { get; set; }
///
- /// 配送方式
+ /// 推荐来源箱标签
///
- [Display(Name = "配送方式")]
- public EnumDistributionType DistributionType { get; set; }
+ public string RecommendFromPackingCode { get; set; }
///
- /// 取整方式
+ /// 推荐来源批次供应商批次
///
- [Display(Name = "取整方式")]
- public EnumTruncType TruncType { get; set; }
+ public string RecommendFromSupplierBatch { get; set; }
///
- /// 取整后数量
+ /// 推荐来源批次到货时间
///
- [Display(Name = "取整后数量")]
- public decimal RoundedQty { get; set; }
+ public DateTime RecommendFromArriveDate { get; set; }
///
- /// 计划拆分规则
+ /// 推荐来源批次生产时间
///
- [Display(Name = "计划拆分规则")]
- public EnumPlannedSplitRule PlannedSplitRule { get; set; }
+ public DateTime RecommendFromProduceDate { get; set; }
///
- /// 计划开始时间
+ /// 推荐来源批次过期时间
///
- [Display(Name = "计划开始时间")]
- public DateTime PlanBeginTime { get; set; }
+ public DateTime RecommendFromExpireDate { get; set; }
///
- /// 每次配送数量
+ /// 推荐来源批次排序
///
- [Display(Name = "每次配送数量")]
- public decimal DeliveryQty { get; set; }
+ public string RecommendFromLot { get; set; }
///
- /// 位置码
+ /// 推荐来源库位
///
- public string PositionCode { get; set; }
+ public string RecommendFromLocationCode { get; set; }
///
- /// 推荐类型
+ /// 推荐来源库区
///
- public EnumRecommendType RecommendType { get; set; }
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
+ ///
+ public string RecommendFromLocationErpCode { get; set; }
+
+ ///
+ /// 推荐来源仓库
+ ///
+ public string RecommendFromWarehouseCode { get; set; }
+
+ ///
+ /// 推荐来源数量
+ ///
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
+
+ ///
+ /// 推荐目标库位组
+ ///
+ public string RecommendToLocationGroup { get; set; }
+
+ ///
+ /// 推荐目标ERP库位
+ ///
+ public string RecommendToLocationErpCode { get; set; }
+
+ ///
+ /// 推荐目标仓库
+ ///
+ public string RecommendToWarehouseCode { get; set; }
+
+ ///
+ /// 推荐目标数量
+ ///
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
+
+ ///
+ /// 库移来源托标签
+ ///
+ public string TransferLibFromContainerCode { get; set; }
+
+ ///
+ /// 库移来源箱标签
+ ///
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobPermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobPermissions.cs
index 7ab1d8458..de9f948ca 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobPermissions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobPermissions.cs
@@ -2,7 +2,7 @@ using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public static class CoatingIssueJobPermissions
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobAppService.cs
index d989cb12e..698d8a199 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobAppService.cs
@@ -9,19 +9,7 @@ namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
public interface ICoatingIssueJobAppService
: ISfsJobAppServiceBase
{
- Task> CheckJobExistByItemCodeAndLocationCode(string itemCode, string locationCode);
-
- Task CancelByMaterialRequestAsync(string materialNumber);
-
- Task> GetListByTypeAsync(SfsJobRequestInputBase requestInput, string requestType,
- bool includeDetails = false, CancellationToken cancellationToken = default);
+ Task CancelByMaterialRequestAsync(string coatingIssueNumber);
Task> GetByRequestNumberAsync(string requestNumber);
-
- ///
- /// 保存拆箱时涉及的明细修改
- ///
- ///
- Task SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input);
-
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDTO.cs
index 6db88f8bb..9cb65b1a6 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDTO.cs
@@ -13,13 +13,6 @@ public class AssembleNoteDTO : SfsStoreDTOBase, IHasJobNu
[Display(Name = "任务ID")]
public string JobNumber { get; set; }
- ///
- /// 车间
- ///
- [Display(Name = "车间")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string Workshop { get; set; }
-
///
/// 请求代码
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDetailDTO.cs
index cefbe75a5..3e948f556 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDetailDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/DTOs/AssembleNoteDetailDTO.cs
@@ -1,42 +1,519 @@
using System;
using System.ComponentModel.DataAnnotations;
-using Win_in.Sfs.Shared.Domain;
+using System.ComponentModel.DataAnnotations.Schema;
+using Win_in.Sfs.Shared.Application.Contracts;
+using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class AssembleNoteDetailDTO : SfsStoreRecommendFromDetailWithFromToDTOBase
+public class AssembleNoteDetailDTO : SfsDetailDTOBase
{
+ #region 库存基础信息
///
- /// 发料时间
+ /// 物品代码
///
- [Display(Name = "发料时间")]
- public DateTime IssueTime { get; set; }
+ public string ItemCode { get; set; }
///
- /// 过期时间
+ /// 物品名称
///
- [Display(Name = "过期时间")]
- public DateTime ExpiredTime { get; set; }
+ public string ItemName { get; set; }
///
- /// 生产线
+ /// 物品描述1
///
- [Display(Name = "生产线")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ProdLine { get; set; }
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
- /// 工作中心
+ /// 到库区
///
- [Display(Name = "工作中心")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string WorkStation { get; set; }
+ public string RequestLocationArea { get; set; }
///
- /// 在途库库位
+ /// 到库位组
+ ///
+ public string RequestLocationGroup { get; set; }
+
+ ///
+ /// 到ERP库位
+ ///
+ public string RequestLocationErpCode { get; set; }
+
+ ///
+ /// 到仓库
+ ///
+ public string RequestWarehouseCode { get; set; }
+
+ ///
+ /// 在途库库位
///
- [Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
+ ///
+ /// 生产线
+ ///
+ public string ProdLine { get; set; }
+
+ ///
+ /// 位置码
+ ///
+ public string PositionCode { get; set; }
+
+ ///
+ /// 推荐的类型
+ ///
+ public EnumRecommendType RecommendType { get; set; }
+
+ ///
+ /// 需求数量
+ ///
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
+
+ ///
+ /// 推荐来源托标签
+ ///
+ public string RecommendFromContainerCode { get; set; }
+
+ ///
+ /// 推荐来源箱标签
+ ///
+ public string RecommendFromPackingCode { get; set; }
+
+ ///
+ /// 推荐来源批次供应商批次
+ ///
+ public string RecommendFromSupplierBatch { get; set; }
+
+ ///
+ /// 推荐来源批次到货时间
+ ///
+ public DateTime RecommendFromArriveDate { get; set; }
+
+ ///
+ /// 推荐来源批次生产时间
+ ///
+ public DateTime RecommendFromProduceDate { get; set; }
+
+ ///
+ /// 推荐来源批次过期时间
+ ///
+ public DateTime RecommendFromExpireDate { get; set; }
+
+ ///
+ /// 推荐来源批次排序
+ ///
+ public string RecommendFromLot { get; set; }
+
+ ///
+ /// 推荐来源库位
+ ///
+ public string RecommendFromLocationCode { get; set; }
+
+ ///
+ /// 推荐来源库区
+ ///
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
+ ///
+ public string RecommendFromLocationErpCode { get; set; }
+
+ ///
+ /// 推荐来源仓库
+ ///
+ public string RecommendFromWarehouseCode { get; set; }
+
+ ///
+ /// 推荐来源数量
+ ///
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
+
+ ///
+ /// 推荐目标库位组
+ ///
+ public string RecommendToLocationGroup { get; set; }
+
+ ///
+ /// 推荐目标ERP库位
+ ///
+ public string RecommendToLocationErpCode { get; set; }
+
+ ///
+ /// 推荐目标仓库
+ ///
+ public string RecommendToWarehouseCode { get; set; }
+
+ ///
+ /// 推荐目标数量
+ ///
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
+
+ ///
+ /// 库移来源托标签
+ ///
+ public string TransferLibFromContainerCode { get; set; }
+
+ ///
+ /// 库移来源箱标签
+ ///
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteDetailInput.cs
index 4a194dc44..9f9d71c36 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteDetailInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteDetailInput.cs
@@ -1,53 +1,519 @@
using System;
using System.ComponentModel.DataAnnotations;
-using Win_in.Sfs.Shared.Domain;
+using System.ComponentModel.DataAnnotations.Schema;
+using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class AssembleNoteDetailInput : SfsStoreRecommendFromDetailWithFromToInputBase
+public class AssembleNoteDetailInput : SfsDetailInputBase
{
+ #region 库存基础信息
///
- /// 发料时间
+ /// 物品代码
///
- [Display(Name = "发料时间")]
- public DateTime IssueTime { get; set; }
+ public string ItemCode { get; set; }
///
- /// 过期时间
+ /// 物品名称
///
- [Display(Name = "过期时间")]
- public DateTime ExpiredTime { get; set; }
+ public string ItemName { get; set; }
///
- /// 生产线
+ /// 物品描述1
///
- [Display(Name = "生产线")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ProdLine { get; set; }
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
- /// 工作中心
+ /// 到库区
///
- [Display(Name = "工作中心")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string WorkStation { get; set; }
+ public string RequestLocationArea { get; set; }
///
- /// 在途库库位
+ /// 到库位组
+ ///
+ public string RequestLocationGroup { get; set; }
+
+ ///
+ /// 到ERP库位
+ ///
+ public string RequestLocationErpCode { get; set; }
+
+ ///
+ /// 到仓库
+ ///
+ public string RequestWarehouseCode { get; set; }
+
+ ///
+ /// 在途库库位
///
- [Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
///
- /// 位置码
+ /// 生产线
+ ///
+ public string ProdLine { get; set; }
+
+ ///
+ /// 位置码
///
public string PositionCode { get; set; }
///
- /// 推荐类型
+ /// 推荐的类型
///
public EnumRecommendType RecommendType { get; set; }
+ ///
+ /// 需求数量
+ ///
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
+
+ ///
+ /// 推荐来源托标签
+ ///
+ public string RecommendFromContainerCode { get; set; }
+
+ ///
+ /// 推荐来源箱标签
+ ///
+ public string RecommendFromPackingCode { get; set; }
+
+ ///
+ /// 推荐来源批次供应商批次
+ ///
+ public string RecommendFromSupplierBatch { get; set; }
+
+ ///
+ /// 推荐来源批次到货时间
+ ///
+ public DateTime RecommendFromArriveDate { get; set; }
+
+ ///
+ /// 推荐来源批次生产时间
+ ///
+ public DateTime RecommendFromProduceDate { get; set; }
+
+ ///
+ /// 推荐来源批次过期时间
+ ///
+ public DateTime RecommendFromExpireDate { get; set; }
+
+ ///
+ /// 推荐来源批次排序
+ ///
+ public string RecommendFromLot { get; set; }
+
+ ///
+ /// 推荐来源库位
+ ///
+ public string RecommendFromLocationCode { get; set; }
+
+ ///
+ /// 推荐来源库区
+ ///
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
+ ///
+ public string RecommendFromLocationErpCode { get; set; }
+
+ ///
+ /// 推荐来源仓库
+ ///
+ public string RecommendFromWarehouseCode { get; set; }
+
+ ///
+ /// 推荐来源数量
+ ///
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
+
+ ///
+ /// 推荐目标库位组
+ ///
+ public string RecommendToLocationGroup { get; set; }
+
+ ///
+ /// 推荐目标ERP库位
+ ///
+ public string RecommendToLocationErpCode { get; set; }
+
+ ///
+ /// 推荐目标仓库
+ ///
+ public string RecommendToWarehouseCode { get; set; }
+
+ ///
+ /// 推荐目标数量
+ ///
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
+
+ ///
+ /// 库移来源托标签
+ ///
+ public string TransferLibFromContainerCode { get; set; }
+
+ ///
+ /// 库移来源箱标签
+ ///
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteEditInput.cs
index b3c23c67f..48447ccf5 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteEditInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/AssembleNotes/Inputs/AssembleNoteEditInput.cs
@@ -26,14 +26,7 @@ public class AssembleNoteEditInput : SfsStoreCreateOrUpdateInputBase
///
[Display(Name = "任务ID")]
[Required(ErrorMessage = "{0}是必填项")]
- public string JobNumber { get; set; }
-
- ///
- /// 车间
- ///
- [Display(Name = "车间")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string Workshop { get; set; }
+ public string JobNumber { get; set; }
///
/// 明细列表
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDTO.cs
index 096f03254..dfadc255f 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDTO.cs
@@ -7,20 +7,12 @@ namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
public class CoatingIssueNoteDTO : SfsStoreDTOBase, IHasJobNumber, IHasRequestNumber
{
-
///
/// 任务ID
///
[Display(Name = "任务ID")]
public string JobNumber { get; set; }
- ///
- /// 车间
- ///
- [Display(Name = "车间")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string Workshop { get; set; }
-
///
/// 请求代码
///
@@ -51,5 +43,4 @@ public class CoatingIssueNoteDTO : SfsStoreDTOBase, I
///
[Display(Name = "确认时间")]
public DateTime? ConfirmTime { get; set; }
-
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailDTO.cs
index afbcf4f81..6f8fb1d22 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailDTO.cs
@@ -1,43 +1,519 @@
using System;
using System.ComponentModel.DataAnnotations;
-using Win_in.Sfs.Shared.Domain;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
+using System.ComponentModel.DataAnnotations.Schema;
+using Win_in.Sfs.Shared.Application.Contracts;
+using Win_in.Sfs.Shared.Domain.Shared;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class CoatingIssueNoteDetailDTO : SfsStoreRecommendFromDetailWithFromToDTOBase
+public class CoatingIssueNoteDetailDTO : SfsDetailDTOBase
{
+ #region 库存基础信息
///
- /// 发料时间
+ /// 物品代码
///
- [Display(Name = "发料时间")]
- public DateTime IssueTime { get; set; }
+ public string ItemCode { get; set; }
///
- /// 过期时间
+ /// 物品名称
///
- [Display(Name = "过期时间")]
- public DateTime ExpiredTime { get; set; }
+ public string ItemName { get; set; }
///
- /// 生产线
+ /// 物品描述1
///
- [Display(Name = "生产线")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ProdLine { get; set; }
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
- /// 工作中心
+ /// 到库区
///
- [Display(Name = "工作中心")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string WorkStation { get; set; }
+ public string RequestLocationArea { get; set; }
///
- /// 在途库库位
+ /// 到库位组
+ ///
+ public string RequestLocationGroup { get; set; }
+
+ ///
+ /// 到ERP库位
+ ///
+ public string RequestLocationErpCode { get; set; }
+
+ ///
+ /// 到仓库
+ ///
+ public string RequestWarehouseCode { get; set; }
+
+ ///
+ /// 在途库库位
///
- [Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
+ ///
+ /// 生产线
+ ///
+ public string ProdLine { get; set; }
+
+ ///
+ /// 位置码
+ ///
+ public string PositionCode { get; set; }
+
+ ///
+ /// 推荐的类型
+ ///
+ public EnumRecommendType RecommendType { get; set; }
+
+ ///
+ /// 需求数量
+ ///
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
+
+ ///
+ /// 推荐来源托标签
+ ///
+ public string RecommendFromContainerCode { get; set; }
+
+ ///
+ /// 推荐来源箱标签
+ ///
+ public string RecommendFromPackingCode { get; set; }
+
+ ///
+ /// 推荐来源批次供应商批次
+ ///
+ public string RecommendFromSupplierBatch { get; set; }
+
+ ///
+ /// 推荐来源批次到货时间
+ ///
+ public DateTime RecommendFromArriveDate { get; set; }
+
+ ///
+ /// 推荐来源批次生产时间
+ ///
+ public DateTime RecommendFromProduceDate { get; set; }
+
+ ///
+ /// 推荐来源批次过期时间
+ ///
+ public DateTime RecommendFromExpireDate { get; set; }
+
+ ///
+ /// 推荐来源批次排序
+ ///
+ public string RecommendFromLot { get; set; }
+
+ ///
+ /// 推荐来源库位
+ ///
+ public string RecommendFromLocationCode { get; set; }
+
+ ///
+ /// 推荐来源库区
+ ///
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
+ ///
+ public string RecommendFromLocationErpCode { get; set; }
+
+ ///
+ /// 推荐来源仓库
+ ///
+ public string RecommendFromWarehouseCode { get; set; }
+
+ ///
+ /// 推荐来源数量
+ ///
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
+
+ ///
+ /// 推荐目标库位组
+ ///
+ public string RecommendToLocationGroup { get; set; }
+
+ ///
+ /// 推荐目标ERP库位
+ ///
+ public string RecommendToLocationErpCode { get; set; }
+
+ ///
+ /// 推荐目标仓库
+ ///
+ public string RecommendToWarehouseCode { get; set; }
+
+ ///
+ /// 推荐目标数量
+ ///
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
+
+ ///
+ /// 库移来源托标签
+ ///
+ public string TransferLibFromContainerCode { get; set; }
+
+ ///
+ /// 库移来源箱标签
+ ///
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailInput.cs
index 41b375822..19689cf4e 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetailInput.cs
@@ -1,54 +1,519 @@
using System;
using System.ComponentModel.DataAnnotations;
-using Win_in.Sfs.Shared.Domain;
+using System.ComponentModel.DataAnnotations.Schema;
+using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class CoatingIssueNoteDetailInput : SfsStoreRecommendFromDetailWithFromToInputBase
+public class CoatingIssueNoteDetailInput : SfsDetailInputBase
{
+ #region 库存基础信息
///
- /// 发料时间
+ /// 物品代码
///
- [Display(Name = "发料时间")]
- public DateTime IssueTime { get; set; }
+ public string ItemCode { get; set; }
///
- /// 过期时间
+ /// 物品名称
///
- [Display(Name = "过期时间")]
- public DateTime ExpiredTime { get; set; }
+ public string ItemName { get; set; }
///
- /// 生产线
+ /// 物品描述1
///
- [Display(Name = "生产线")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ProdLine { get; set; }
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
- /// 工作中心
+ /// 到库区
///
- [Display(Name = "工作中心")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string WorkStation { get; set; }
+ public string RequestLocationArea { get; set; }
///
- /// 在途库库位
+ /// 到库位组
+ ///
+ public string RequestLocationGroup { get; set; }
+
+ ///
+ /// 到ERP库位
+ ///
+ public string RequestLocationErpCode { get; set; }
+
+ ///
+ /// 到仓库
+ ///
+ public string RequestWarehouseCode { get; set; }
+
+ ///
+ /// 在途库库位
///
- [Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
///
- /// 位置码
+ /// 生产线
+ ///
+ public string ProdLine { get; set; }
+
+ ///
+ /// 位置码
///
public string PositionCode { get; set; }
///
- /// 推荐类型
+ /// 推荐的类型
///
public EnumRecommendType RecommendType { get; set; }
+ ///
+ /// 需求数量
+ ///
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
+
+ ///
+ /// 推荐来源托标签
+ ///
+ public string RecommendFromContainerCode { get; set; }
+
+ ///
+ /// 推荐来源箱标签
+ ///
+ public string RecommendFromPackingCode { get; set; }
+
+ ///
+ /// 推荐来源批次供应商批次
+ ///
+ public string RecommendFromSupplierBatch { get; set; }
+
+ ///
+ /// 推荐来源批次到货时间
+ ///
+ public DateTime RecommendFromArriveDate { get; set; }
+
+ ///
+ /// 推荐来源批次生产时间
+ ///
+ public DateTime RecommendFromProduceDate { get; set; }
+
+ ///
+ /// 推荐来源批次过期时间
+ ///
+ public DateTime RecommendFromExpireDate { get; set; }
+
+ ///
+ /// 推荐来源批次排序
+ ///
+ public string RecommendFromLot { get; set; }
+
+ ///
+ /// 推荐来源库位
+ ///
+ public string RecommendFromLocationCode { get; set; }
+
+ ///
+ /// 推荐来源库区
+ ///
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
+ ///
+ public string RecommendFromLocationErpCode { get; set; }
+
+ ///
+ /// 推荐来源仓库
+ ///
+ public string RecommendFromWarehouseCode { get; set; }
+
+ ///
+ /// 推荐来源数量
+ ///
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
+
+ ///
+ /// 推荐目标库位组
+ ///
+ public string RecommendToLocationGroup { get; set; }
+
+ ///
+ /// 推荐目标ERP库位
+ ///
+ public string RecommendToLocationErpCode { get; set; }
+
+ ///
+ /// 推荐目标仓库
+ ///
+ public string RecommendToWarehouseCode { get; set; }
+
+ ///
+ /// 推荐目标数量
+ ///
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
+
+ ///
+ /// 库移来源托标签
+ ///
+ public string TransferLibFromContainerCode { get; set; }
+
+ ///
+ /// 库移来源箱标签
+ ///
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteEditInput.cs
index d1b7307c3..210a1db12 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteEditInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteEditInput.cs
@@ -27,14 +27,7 @@ public class CoatingIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
///
[Display(Name = "任务ID")]
[Required(ErrorMessage = "{0}是必填项")]
- public string JobNumber { get; set; }
-
- ///
- /// 车间
- ///
- [Display(Name = "车间")]
- [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string Workshop { get; set; }
+ public string JobNumber { get; set; }
///
/// 明细列表
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs
index a24dee8eb..82c83a21f 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs
@@ -27,7 +27,7 @@ public class StorePermissionDefinitionProvider : PermissionDefinitionProvider
storeGroup.AddPutawayNotePermission();
storeGroup.AddMaterialRequestPermission();
storeGroup.AddInjectionRequestPermission();
- storeGroup.AddAssembleRequestPermission();
+ storeGroup.AddAssembleIssueRequestsPermission();
storeGroup.AddThirdLocationRequestPermission();
storeGroup.AddContainerRequestPermission();
storeGroup.AddIssueNotePermission();
@@ -100,6 +100,7 @@ public class StorePermissionDefinitionProvider : PermissionDefinitionProvider
storeGroup.AddPutawayJobPermission();
storeGroup.AddIssueJobPermission();
storeGroup.AddInjectionJobPermission();
+ storeGroup.AddCoatingIssueJobPermission();
storeGroup.AddAssembleJobPermission();
storeGroup.AddThirdLocationJobPermission();
storeGroup.AddContainerJobPermission();
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsPermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsPermissions.cs
new file mode 100644
index 000000000..7f54997fa
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsPermissions.cs
@@ -0,0 +1,27 @@
+using Volo.Abp.Authorization.Permissions;
+using Win_in.Sfs.Wms.Store.Domain;
+
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
+
+public static class AssembleIssueRequestsPermissions
+{
+
+ public const string Default = StorePermissions.GroupName + "." + nameof(AssembleIssueRequests);
+ public const string Create = Default + "." + StorePermissions.CreateStr;
+ public const string Update = Default + "." + StorePermissions.UpdateStr;
+ public const string Delete = Default + "." + StorePermissions.DeleteStr;
+
+ //自动叫料申请
+ public const string AutoAssembleIssueRequests = StorePermissions.GroupName + "." + nameof(AutoAssembleIssueRequests);
+
+ public static void AddAssembleIssueRequestsPermission(this PermissionGroupDefinition permissionGroup)
+ {
+ var AssembleIssueRequestsPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(AssembleIssueRequests)));
+ AssembleIssueRequestsPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
+ AssembleIssueRequestsPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
+ AssembleIssueRequestsPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
+
+ permissionGroup.AddPermission(AutoAssembleIssueRequests, StorePermissionDefinitionProvider.L(nameof(AutoAssembleIssueRequests)));
+
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/DTOs/AssembleRequestDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/DTOs/AssembleIssueRequestsDTO.cs
similarity index 88%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/DTOs/AssembleRequestDTO.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/DTOs/AssembleIssueRequestsDTO.cs
index 75aa1d02d..93b8b9821 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/DTOs/AssembleRequestDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/DTOs/AssembleIssueRequestsDTO.cs
@@ -2,7 +2,7 @@ using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class AssembleRequestDTO : SfsStoreRequestDTOBase, IHasNumber
+public class AssembleIssueRequestsDTO : SfsStoreRequestDTOBase, IHasNumber
{
///
/// 叫料类型
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/DTOs/AssembleRequestDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/DTOs/AssembleIssueRequestsDetailDTO.cs
similarity index 94%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/DTOs/AssembleRequestDetailDTO.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/DTOs/AssembleIssueRequestsDetailDTO.cs
index a0931f6e2..0b807b179 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/DTOs/AssembleRequestDetailDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/DTOs/AssembleIssueRequestsDetailDTO.cs
@@ -6,7 +6,7 @@ using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class AssembleRequestDetailDTO : SfsStoreDetailWithQtyDTOBase
+public class AssembleIssueRequestsDetailDTO : SfsStoreDetailWithQtyDTOBase
{
///
/// 已发数量
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsAppService.cs
new file mode 100644
index 000000000..cdbf62d72
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsAppService.cs
@@ -0,0 +1,13 @@
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Dtos;
+
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
+
+public interface IAssembleIssueRequestsAppService
+ : ISfsStoreRequestMasterAppServiceBase
+
+{
+ Task CreateAndHandleAsync(AssembleIssueRequestsEditInput input);
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsDetailInput.cs
similarity index 96%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestDetailInput.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsDetailInput.cs
index 1e859f910..4b0c679e4 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestDetailInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsDetailInput.cs
@@ -5,7 +5,7 @@ using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class AssembleRequestDetailInput : SfsStoreDetailWithQtyInputBase
+public class AssembleIssueRequestsDetailInput : SfsStoreDetailWithQtyInputBase
{
#region 目标库位信息
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsEditInput.cs
similarity index 75%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestEditInput.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsEditInput.cs
index c89acfc30..1f091f3dc 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestEditInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsEditInput.cs
@@ -4,7 +4,7 @@ using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-public class AssembleRequestEditInput : SfsStoreRequestCreateOrUpdateInputBase
+public class AssembleIssueRequestsEditInput : SfsStoreRequestCreateOrUpdateInputBase
{
#region Base
@@ -24,7 +24,7 @@ public class AssembleRequestEditInput : SfsStoreRequestCreateOrUpdateInputBase
/// 明细列表
///
[Display(Name = "明细列表")]
- public List Details { get; set; } = new List();
+ public List Details { get; set; } = new List();
#endregion
#region Create
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsImportInput.cs
similarity index 94%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestImportInput.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsImportInput.cs
index 3d637b4f5..b51832e9a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/Inputs/AssembleRequestImportInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleIssueRequests/Inputs/AssembleIssueRequestsImportInput.cs
@@ -5,7 +5,7 @@ using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
[Display(Name = "叫料申请")]
-public class AssembleRequestImportInput : SfsStoreImportInputBase
+public class AssembleIssueRequestsImportInput : SfsStoreImportInputBase
{
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/AssembleRequestPermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/AssembleRequestPermissions.cs
deleted file mode 100644
index f7c0f9228..000000000
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/AssembleRequestPermissions.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using Volo.Abp.Authorization.Permissions;
-using Win_in.Sfs.Wms.Store.Domain;
-
-namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-
-public static class AssembleRequestPermissions
-{
-
- public const string Default = StorePermissions.GroupName + "." + nameof(AssembleRequest);
- public const string Create = Default + "." + StorePermissions.CreateStr;
- public const string Update = Default + "." + StorePermissions.UpdateStr;
- public const string Delete = Default + "." + StorePermissions.DeleteStr;
-
- //自动叫料申请
- public const string AutoAssembleRequest = StorePermissions.GroupName + "." + nameof(AutoAssembleRequest);
-
- public static void AddAssembleRequestPermission(this PermissionGroupDefinition permissionGroup)
- {
- var AssembleRequestPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(AssembleRequest)));
- AssembleRequestPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
- AssembleRequestPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
- AssembleRequestPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
-
- permissionGroup.AddPermission(AutoAssembleRequest, StorePermissionDefinitionProvider.L(nameof(AutoAssembleRequest)));
-
- }
-}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/IAssembleRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/IAssembleRequestAppService.cs
deleted file mode 100644
index db3e91029..000000000
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/AssembleRequests/IAssembleRequestAppService.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-using Volo.Abp.Application.Dtos;
-
-namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-
-public interface IAssembleRequestAppService
- : ISfsStoreRequestMasterAppServiceBase
-
-{
- Task CreateAndHandleAsync(AssembleRequestEditInput input);
-}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestEditInput.cs
index 94578eb49..ab7e554b1 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestEditInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestEditInput.cs
@@ -25,7 +25,7 @@ public class CoatingMaterialRequestEditInput : SfsStoreRequestCreateOrUpdateInpu
/// 明细列表
///
[Display(Name = "明细列表")]
- public List Details { get; set; } = new List();
+ public List Details { get; set; } = new List();
#endregion
#region Create
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs
index b1ebad19e..a9a359d8d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs
@@ -1,12 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Threading;
using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
+using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping;
@@ -24,11 +26,12 @@ namespace Win_in.Sfs.Wms.Store.Application;
[Authorize]
[Route($"{StoreConsts.RootPath}Chassis")]
public class ChassisAppService
- : SfsStoreAppServiceBase
, IChassisAppService
{
+ private new readonly IChassisRepository _repository;
private readonly IChassisManager _manager;
public ChassisAppService(
@@ -39,8 +42,10 @@ public class ChassisAppService
base.UpdatePolicyName = ChassisPermissions.Update;
base.DeletePolicyName = ChassisPermissions.Delete;
+ _repository = repository;
_manager = manager;
}
+ #region 无用
[NonAction]
public Task GetDetailAsync(Guid id, Guid detailId)
@@ -77,4 +82,6 @@ public class ChassisAppService
{
throw new NotImplementedException();
}
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAutoMapperProfile.cs
index f3c0b0d18..dfefeb676 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAutoMapperProfile.cs
@@ -15,29 +15,5 @@ public partial class StoreApplicationAutoMapperProfile : Profile
{
CreateMap()
.ReverseMap();
- // CreateMap()
- // .IgnoreAuditedObjectProperties()
- // .Ignore(x => x.ConcurrencyStamp).Ignore(x => x.Id)
- // ;
- // CreateMap()
- // .IgnoreAuditedObjectProperties()
- // .Ignore(x => x.Id) ;
- // ;
-
- // CreateMap()
- // .IgnoreAuditedObjectProperties()
- // .Ignore(x => x.TenantId)
- // //.Ignore(x => x.Remark)
- // .Ignore(x => x.ExtraProperties)
- // .Ignore(x => x.ConcurrencyStamp)
- // ;
-
- // CreateMap()
- // .Ignore(x => x.ReportStatus)
- // .Ignore(x => x.ReportReason)
- // ;
-
- // CreateMap()
- //;
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs
new file mode 100644
index 000000000..b14ce3ce2
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Castle.Components.DictionaryAdapter;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+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;
+using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Domain;
+using Win_in.Sfs.Wms.Store.Domain.Shared;
+using Win_in.Sfs.Wms.Store.Equipments;
+
+namespace Win_in.Sfs.Wms.Store.Application;
+
+[Authorize]
+[Route($"{StoreConsts.RootPath}ChassisOperationSequence")]
+public class ChassisOperationSequenceAppService
+ : SfsStoreAppServiceBase
+ , IChassisOperationSequenceAppService
+
+{
+ private new readonly IChassisOperationSequenceRepository _repository;
+ private readonly IChassisOperationSequenceManager _manager;
+
+ public ChassisOperationSequenceAppService(
+ IChassisOperationSequenceRepository repository, IChassisOperationSequenceManager manager
+ ):base(repository)
+ {
+ base.CreatePolicyName = ChassisOperationSequencePermissions.Create;
+ base.UpdatePolicyName = ChassisOperationSequencePermissions.Update;
+ base.DeletePolicyName = ChassisOperationSequencePermissions.Delete;
+
+ _repository = repository;
+ _manager = manager;
+ }
+ #region 无用
+
+ [NonAction]
+ public Task GetDetailAsync(Guid id, Guid detailId)
+ {
+ throw new NotImplementedException();
+ }
+
+ [NonAction]
+ public Task> GetDetailListAsync(Guid id, SfsStoreRequestInputBase requestInput)
+ {
+ throw new NotImplementedException();
+ }
+
+ [NonAction]
+ public Task AddDetailListAsync(Guid id, List list)
+ {
+ throw new NotImplementedException();
+ }
+
+ [NonAction]
+ public Task UpdateDetailAsync(Guid id, Guid detailId, ChassisOperationSequenceDTO updateDTO)
+ {
+ throw new NotImplementedException();
+ }
+
+ [NonAction]
+ public Task CheckStatusAsync(string number)
+ {
+ throw new NotImplementedException();
+ }
+
+ [NonAction]
+ public Task UpsertAsync(ChassisOperationSequenceEditInput input)
+ {
+ throw new NotImplementedException();
+ }
+
+ #endregion
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAutoMapperProfile.cs
new file mode 100644
index 000000000..f5ae01ba8
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAutoMapperProfile.cs
@@ -0,0 +1,19 @@
+using AutoMapper;
+using Volo.Abp.AutoMapper;
+using Win_in.Sfs.Basedata.Application.Contracts;
+using Win_in.Sfs.Basedata.Domain;
+using Win_in.Sfs.Store.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Domain;
+using Win_in.Sfs.Wms.Store.Equipments;
+
+namespace Win_in.Sfs.Wms.Store.Application;
+
+public partial class StoreApplicationAutoMapperProfile : Profile
+{
+ private void ChassisOperationSequenceAutoMapperProfile()
+ {
+ CreateMap()
+ .ReverseMap();
+ }
+}
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 cee470b2b..e12099873 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
@@ -32,32 +32,32 @@ public class EquipmentRecordAppService
}
#region 无用
-
+ [NonAction]
public Task GetDetailAsync(Guid id, Guid detailId)
{
throw new NotImplementedException();
}
-
+ [NonAction]
public Task> GetDetailListAsync(Guid id, SfsStoreRequestInputBase requestInput)
{
throw new NotImplementedException();
}
-
+ [NonAction]
public Task AddDetailListAsync(Guid id, List list)
{
throw new NotImplementedException();
}
-
+ [NonAction]
public Task UpdateDetailAsync(Guid id, Guid detailId, EquipmentRecordDTO updateDTO)
{
throw new NotImplementedException();
}
-
+ [NonAction]
public Task CheckStatusAsync(string number)
{
throw new NotImplementedException();
}
-
+ [NonAction]
public Task UpsertAsync(EquipmentRecordEditInput input)
{
throw new NotImplementedException();
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleJobs/AssembleJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleJobs/AssembleJobAppService.cs
index e58d26e1b..1a1a6edc9 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleJobs/AssembleJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleJobs/AssembleJobAppService.cs
@@ -1,69 +1,122 @@
using System;
using System.Collections.Generic;
+using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
+using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
-using Volo.Abp.ObjectMapping;
+using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
+using Win_in.Sfs.Wms.Store.Notes;
namespace Win_in.Sfs.Wms.Store.Application;
[Authorize]
[Route($"{StoreConsts.RootPath}assemble-job")]
public class AssembleJobAppService
- : SfsJobAppServiceBase,
- IAssembleJobAppService
+ : SfsJobAppServiceBase,
+ IAssembleJobAppService, ITransferLibCallback
{
private readonly IAssembleJobManager _assembleJobManager;
+ private readonly ILocationAppService _locationAppService;
+ private readonly ITransferLibJobAppService _transferLibJobAppService;
public AssembleJobAppService(
- IAssembleJobRepository repository, IAssembleJobManager assembleJobManager
- ) : base(repository, assembleJobManager)
+ IAssembleJobRepository repository, IAssembleJobManager assembleJobManager,
+ ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService) : base(repository, assembleJobManager)
{
_assembleJobManager = assembleJobManager;
+ _locationAppService = locationAppService;
+ _transferLibJobAppService = transferLibJobAppService;
+ }
+
+ [HttpPost("add-many")]
+ public override async Task> CreateManyAsync(List inputs)
+ {
+ foreach (var input in inputs)
+ {
+ await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
+ }
+
+ return await base.CreateManyAsync(inputs).ConfigureAwait(false);
+ }
+
+ [HttpPost("")]
+ public override async Task CreateAsync(AssembleJobEditInput input)
+ {
+ await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
+
+ return await base.CreateAsync(input).ConfigureAwait(false);
}
///
- /// 根据物品和库位 检查是否存在发料任务
+ /// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值
///
- ///
- ///
+ ///
///
- ///
- [Authorize]
- [HttpGet("check-job-exist")]
- public virtual async Task> CheckJobExistByItemCodeAndLocationCode(string itemCode,
- string locationCode)
+ private async Task CheckMinRowAndSetStatusAsync(AssembleJobEditInput input)
{
- var entities = await _repository.GetListAsync(c =>
- c.Details.Any(p =>
- (p.ItemCode == itemCode && p.RecommendFromLocationCode == locationCode) ||
- (p.ItemCode == itemCode && p.ToLocationCode == locationCode))
- && (c.JobStatus == EnumJobStatus.Open || c.JobStatus == EnumJobStatus.Doing), true).ConfigureAwait(false);
- var dtos = ObjectMapper.Map, List>(entities);
- return dtos;
+ var jobDetailInputdetail = input.Details.FirstOrDefault();
+
+ var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
+ .ConfigureAwait(false);
+
+ if (loctionDto.RowCode != 1)
+ {
+ input.JobStatus = EnumJobStatus.Wait;
+
+ jobDetailInputdetail.TransferLibFromArriveDate = jobDetailInputdetail.RecommendFromArriveDate;
+ jobDetailInputdetail.TransferLibFromContainerCode = jobDetailInputdetail.RecommendFromContainerCode;
+ jobDetailInputdetail.TransferLibFromExpireDate = jobDetailInputdetail.RecommendFromExpireDate;
+ jobDetailInputdetail.TransferLibFromLocationArea = jobDetailInputdetail.RecommendFromLocationArea;
+ jobDetailInputdetail.TransferLibFromLocationCode = jobDetailInputdetail.RecommendFromLocationCode;
+ jobDetailInputdetail.TransferLibFromLocationErpCode = jobDetailInputdetail.RecommendFromLocationErpCode;
+ jobDetailInputdetail.TransferLibFromLocationGroup = jobDetailInputdetail.RecommendFromLocationGroup;
+ jobDetailInputdetail.TransferLibFromLot = jobDetailInputdetail.RecommendFromLot;
+ jobDetailInputdetail.TransferLibFromPackingCode = jobDetailInputdetail.RecommendFromPackingCode;
+ jobDetailInputdetail.TransferLibFromProduceDate = jobDetailInputdetail.RecommendFromProduceDate;
+ jobDetailInputdetail.TransferLibFromQty = jobDetailInputdetail.RecommendFromQty;
+ jobDetailInputdetail.TransferLibFromSupplierBatch = jobDetailInputdetail.RecommendFromSupplierBatch;
+ jobDetailInputdetail.TransferLibFromWarehouseCode = jobDetailInputdetail.RecommendFromWarehouseCode;
+
+ jobDetailInputdetail.TransferLibToArriveDate = jobDetailInputdetail.RecommendToArriveDate;
+ jobDetailInputdetail.TransferLibToContainerCode = jobDetailInputdetail.RecommendToContainerCode;
+ jobDetailInputdetail.TransferLibToExpireDate = jobDetailInputdetail.RecommendToExpireDate;
+ jobDetailInputdetail.TransferLibToLocationArea = jobDetailInputdetail.RecommendToLocationArea;
+ jobDetailInputdetail.TransferLibToLocationCode = jobDetailInputdetail.RecommendToLocationCode;
+ jobDetailInputdetail.TransferLibToLocationErpCode = jobDetailInputdetail.RecommendToLocationErpCode;
+ jobDetailInputdetail.TransferLibToLocationGroup = jobDetailInputdetail.RecommendToLocationGroup;
+ jobDetailInputdetail.TransferLibToLot = jobDetailInputdetail.RecommendToLot;
+ jobDetailInputdetail.TransferLibToPackingCode = jobDetailInputdetail.RecommendToPackingCode;
+ jobDetailInputdetail.TransferLibToProduceDate = jobDetailInputdetail.RecommendToProduceDate;
+ jobDetailInputdetail.TransferLibToQty = jobDetailInputdetail.RecommendToQty;
+ jobDetailInputdetail.TransferLibToSupplierBatch = jobDetailInputdetail.RecommendToSupplierBatch;
+ jobDetailInputdetail.TransferLibToWarehouseCode = jobDetailInputdetail.RecommendToWarehouseCode;
+ }
}
- [HttpPost("cancel-by-request/{assembleNumber}")]
+ [HttpPost("cancel-by-request/{assembleRequestNumber}")]
public virtual async Task CancelByMaterialRequestAsync(string assembleNumber)
{
- var entities = await _repository.GetListAsync(p => p.AssembleRequestNumber == assembleNumber).ConfigureAwait(false);
+ var entities = await _repository.GetListAsync(p => p.AssembleRequestNumber == assembleNumber)
+ .ConfigureAwait(false);
foreach (var entity in entities)
{
await _assembleJobManager.CancelAsync(entity).ConfigureAwait(false);
}
}
-
+
[HttpPost("invalid")]
public override async Task CancelAsync(Guid id)
{
@@ -71,74 +124,70 @@ public class AssembleJobAppService
if (assembleJob == null)
{
throw new UserFriendlyException($"未找到ID为 {id} 的任务");
- }
+ }
await _assembleJobManager.CancelAsync(assembleJob).ConfigureAwait(false);
+ }
+ [HttpPost("by-request-number/{requestNumber}")]
+ public virtual async Task> GetByRequestNumberAsync(string requestNumber)
+ {
+ var entitys = await _repository.GetListAsync(p => p.AssembleRequestNumber == requestNumber)
+ .ConfigureAwait(false);
+ return ObjectMapper.Map, List>(entitys);
}
- ///
- /// 根据叫料请求类型获取发料任务
- ///
- ///
- ///
- /// 叫料请求类型:
- /// 人工拉动:Issue_Manual;
- /// 线边拉动:Issue_WIP;
- ///
- ///
- ///
- ///
- [HttpPost("by-type/{requestType}")]
- public virtual async Task> GetListByTypeAsync(SfsJobRequestInputBase requestInput,
- string requestType, bool includeDetails = false, CancellationToken cancellationToken = default)
+ [HttpPost("Do-Call-Back")]
+ public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto)
{
- Expression> expression = p => p.RequestType == requestType;
- if (requestInput.Condition.Filters?.Count > 0)
- {
- expression = expression.And(requestInput.Condition.Filters.ToLambda());
- }
+ var job = await _repository.FindAsync(p => p.Number == dto.JobNumber).ConfigureAwait(false);
- return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
- requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
+ //todo 等云峰写好换成真实的
+ var transferLibJobDto = await _transferLibJobAppService.GetByNumberAsync("AAA").ConfigureAwait(false);
+ var transferLibNote = new TransferLibNote();
- }
+ var transferLibNoteDetail = transferLibNote.Details.First();
- [HttpPost("by-request-number/{requestNumber}")]
- public virtual async Task> GetByRequestNumberAsync(string requestNumber)
- {
- var entitys = await _repository.GetListAsync(p => p.AssembleRequestNumber == requestNumber).ConfigureAwait(false);
- return ObjectMapper.Map, List>(entitys);
+ var jobDetail = job.Details.First();
+ job.JobStatus = EnumJobStatus.Open;
+
+ jobDetail.TransferLibFromArriveDate = transferLibNoteDetail.HandledFromArriveDate;
+ jobDetail.TransferLibFromContainerCode = transferLibNoteDetail.HandledFromContainerCode;
+ jobDetail.TransferLibFromExpireDate = transferLibNoteDetail.HandledFromExpireDate;
+ jobDetail.TransferLibFromLocationArea = transferLibNoteDetail.HandledFromLocationArea;
+ jobDetail.TransferLibFromLocationCode = transferLibNoteDetail.HandledFromLocationCode;
+ jobDetail.TransferLibFromLocationErpCode = transferLibNoteDetail.HandledFromLocationErpCode;
+ jobDetail.TransferLibFromLocationGroup = transferLibNoteDetail.HandledFromLocationGroup;
+ jobDetail.TransferLibFromLot = transferLibNoteDetail.HandledFromLot;
+ jobDetail.TransferLibFromPackingCode = transferLibNoteDetail.HandledFromPackingCode;
+ jobDetail.TransferLibFromProduceDate = transferLibNoteDetail.HandledFromProduceDate;
+ jobDetail.TransferLibFromQty = transferLibNoteDetail.HandledFromQty;
+ jobDetail.TransferLibFromSupplierBatch = transferLibNoteDetail.HandledFromSupplierBatch;
+ jobDetail.TransferLibFromWarehouseCode = transferLibNoteDetail.HandledFromWarehouseCode;
+
+ jobDetail.TransferLibToArriveDate = transferLibNoteDetail.HandledToArriveDate;
+ jobDetail.TransferLibToContainerCode = transferLibNoteDetail.HandledToContainerCode;
+ jobDetail.TransferLibToExpireDate = transferLibNoteDetail.HandledToExpireDate;
+ jobDetail.TransferLibToLocationArea = transferLibNoteDetail.HandledToLocationArea;
+ jobDetail.TransferLibToLocationCode = transferLibNoteDetail.HandledToLocationCode;
+ jobDetail.TransferLibToLocationErpCode = transferLibNoteDetail.HandledToLocationErpCode;
+ jobDetail.TransferLibToLocationGroup = transferLibNoteDetail.HandledToLocationGroup;
+ jobDetail.TransferLibToLot = transferLibNoteDetail.HandledToLot;
+ jobDetail.TransferLibToPackingCode = transferLibNoteDetail.HandledToPackingCode;
+ jobDetail.TransferLibToProduceDate = transferLibNoteDetail.HandledToProduceDate;
+ jobDetail.TransferLibToQty = transferLibNoteDetail.HandledToQty;
+ jobDetail.TransferLibToSupplierBatch = transferLibNoteDetail.HandledToSupplierBatch;
+ jobDetail.TransferLibToWarehouseCode = transferLibNoteDetail.HandledToWarehouseCode;
+
+ await _repository.UpdateAsync(job).ConfigureAwait(false);
+
+ return;
}
- ///
- /// 保存拆箱时涉及的明细修改
- ///
- ///
- [HttpPost("save-detail-split-packing")]
- public virtual async Task SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input)
+ [HttpPost("test")]
+ public virtual async Task Test()
{
- var job = await _repository.FindAsync(p => p.Number == input.Number).ConfigureAwait(false);
- AssembleJobDetail detail = job.Details.FirstOrDefault(p => p.RecommendPackingCode == input.FromPackingCode ); /*&& p.HandledQty == input.FromQty*/
- if (detail == null)
- {
- //throw new UserFriendlyException($"根据HandledPackingCode={input.FromPackingCode}取AssembleJobDetail表为空!");
- throw new UserFriendlyException($"根据RecommendPackingCode={input.FromPackingCode}取AssembleJobDetail表为空!");
- }
- //插入目标箱
- var newDetail = CommonHelper.CloneObj(detail);
- newDetail.SetId(GuidGenerator.Create());
- newDetail.RecommendPackingCode = input.ToPackingCode;
- newDetail.RecommendQty = input.ToQty;
- newDetail.HandledPackingCode = detail.HandledPackingCode.HasValue() ? input.ToPackingCode : null; //源实际实际箱码有值,则新记录实际箱码有值
- newDetail.HandledQty = detail.HandledQty > 0 ? input.ToQty : 0;
- //newDetail.CreationTime = CommonHelper.CurTime;
- job.Details.Add(newDetail);
- //修改源箱
- detail.RecommendQty = input.FromQty - input.ToQty;
- detail.HandledQty = detail.HandledQty > 0 ? input.FromQty - input.ToQty : 0;
- var entity = await _repository.UpdateAsync(job).ConfigureAwait(false);
- var ret = ObjectMapper.Map(entity);
- return ret;
+ Console.WriteLine("FuAZCZXVZXVXZVZ");
+ await Task.CompletedTask;
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs
index 3d7d19faf..a07a74d69 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs
@@ -1,195 +1,194 @@
using System;
using System.Collections.Generic;
+using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
+using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
-using Volo.Abp.ObjectMapping;
+using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Application;
using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
+using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+using Win_in.Sfs.Wms.Store.Notes;
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Application;
[Authorize]
-[Route($"{StoreConsts.RootPath}coatingissue-job")]
-
+[Route($"{StoreConsts.RootPath}coating-issue-job")]
public class CoatingIssueJobAppService
- : SfsJobAppServiceBase,
- ICoatingIssueJobAppService
+ : SfsJobAppServiceBase,
+ ICoatingIssueJobAppService, ITransferLibCallback
{
- private readonly ICoatingIssueJobManager _CoatingIssueJobManager;
+ private readonly ICoatingIssueJobManager _coatingIssueJobManager;
+ private readonly ILocationAppService _locationAppService;
+ private readonly ITransferLibJobAppService _transferLibJobAppService;
public CoatingIssueJobAppService(
- ICoatingIssueJobRepository repository, ICoatingIssueJobManager CoatingIssueJobManager
- ) : base(repository, CoatingIssueJobManager)
+ ICoatingIssueJobRepository repository, ICoatingIssueJobManager coatingIssueJobManager,
+ ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService) : base(repository, coatingIssueJobManager)
{
- _CoatingIssueJobManager = CoatingIssueJobManager;
+ _coatingIssueJobManager = coatingIssueJobManager;
+ _locationAppService = locationAppService;
+ _transferLibJobAppService = transferLibJobAppService;
+ }
+
+ [HttpPost("add-many")]
+ public override async Task> CreateManyAsync(List inputs)
+ {
+ foreach (var input in inputs)
+ {
+ await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
+ }
+
+ return await base.CreateManyAsync(inputs).ConfigureAwait(false);
+ }
+
+ [HttpPost("")]
+ public override async Task CreateAsync(CoatingIssueJobEditInput input)
+ {
+ await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
+
+ return await base.CreateAsync(input).ConfigureAwait(false);
}
///
- /// 根据物品和库位 检查是否存在发料任务
+ /// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值
///
- ///
- ///
+ ///
///
- ///
- [Authorize]
- [HttpGet("check-job-exist")]
- public virtual async Task> CheckJobExistByItemCodeAndLocationCode(string itemCode,
- string locationCode)
+ private async Task CheckMinRowAndSetStatusAsync(CoatingIssueJobEditInput input)
{
- var entities = await _repository.GetListAsync(c =>
- c.Details.Any(p =>
- p.ItemCode == itemCode && p.RecommendFromLocationCode == locationCode ||
- p.ItemCode == itemCode && p.ToLocationCode == locationCode)
- && (c.JobStatus == EnumJobStatus.Open || c.JobStatus == EnumJobStatus.Doing), true).ConfigureAwait(false);
- var dtos = ObjectMapper.Map, List>(entities);
- return dtos;
+ var jobDetailInputdetail = input.Details.FirstOrDefault();
+
+ var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
+ .ConfigureAwait(false);
+
+ if (loctionDto.RowCode != 1)
+ {
+ input.JobStatus = EnumJobStatus.Wait;
+
+ jobDetailInputdetail.TransferLibFromArriveDate = jobDetailInputdetail.RecommendFromArriveDate;
+ jobDetailInputdetail.TransferLibFromContainerCode = jobDetailInputdetail.RecommendFromContainerCode;
+ jobDetailInputdetail.TransferLibFromExpireDate = jobDetailInputdetail.RecommendFromExpireDate;
+ jobDetailInputdetail.TransferLibFromLocationArea = jobDetailInputdetail.RecommendFromLocationArea;
+ jobDetailInputdetail.TransferLibFromLocationCode = jobDetailInputdetail.RecommendFromLocationCode;
+ jobDetailInputdetail.TransferLibFromLocationErpCode = jobDetailInputdetail.RecommendFromLocationErpCode;
+ jobDetailInputdetail.TransferLibFromLocationGroup = jobDetailInputdetail.RecommendFromLocationGroup;
+ jobDetailInputdetail.TransferLibFromLot = jobDetailInputdetail.RecommendFromLot;
+ jobDetailInputdetail.TransferLibFromPackingCode = jobDetailInputdetail.RecommendFromPackingCode;
+ jobDetailInputdetail.TransferLibFromProduceDate = jobDetailInputdetail.RecommendFromProduceDate;
+ jobDetailInputdetail.TransferLibFromQty = jobDetailInputdetail.RecommendFromQty;
+ jobDetailInputdetail.TransferLibFromSupplierBatch = jobDetailInputdetail.RecommendFromSupplierBatch;
+ jobDetailInputdetail.TransferLibFromWarehouseCode = jobDetailInputdetail.RecommendFromWarehouseCode;
+
+ jobDetailInputdetail.TransferLibToArriveDate = jobDetailInputdetail.RecommendToArriveDate;
+ jobDetailInputdetail.TransferLibToContainerCode = jobDetailInputdetail.RecommendToContainerCode;
+ jobDetailInputdetail.TransferLibToExpireDate = jobDetailInputdetail.RecommendToExpireDate;
+ jobDetailInputdetail.TransferLibToLocationArea = jobDetailInputdetail.RecommendToLocationArea;
+ jobDetailInputdetail.TransferLibToLocationCode = jobDetailInputdetail.RecommendToLocationCode;
+ jobDetailInputdetail.TransferLibToLocationErpCode = jobDetailInputdetail.RecommendToLocationErpCode;
+ jobDetailInputdetail.TransferLibToLocationGroup = jobDetailInputdetail.RecommendToLocationGroup;
+ jobDetailInputdetail.TransferLibToLot = jobDetailInputdetail.RecommendToLot;
+ jobDetailInputdetail.TransferLibToPackingCode = jobDetailInputdetail.RecommendToPackingCode;
+ jobDetailInputdetail.TransferLibToProduceDate = jobDetailInputdetail.RecommendToProduceDate;
+ jobDetailInputdetail.TransferLibToQty = jobDetailInputdetail.RecommendToQty;
+ jobDetailInputdetail.TransferLibToSupplierBatch = jobDetailInputdetail.RecommendToSupplierBatch;
+ jobDetailInputdetail.TransferLibToWarehouseCode = jobDetailInputdetail.RecommendToWarehouseCode;
+ }
}
- [HttpPost("cancel-by-request/{materialNumber}")]
- public virtual async Task CancelByMaterialRequestAsync(string materialNumber)
+ [HttpPost("cancel-by-request/{requestNumber}")]
+ public virtual async Task CancelByMaterialRequestAsync(string requestNumber)
{
- var entities = await _repository.GetListAsync(p => p.MaterialRequestNumber == materialNumber).ConfigureAwait(false);
+ var entities = await _repository.GetListAsync(p => p.MaterialRequestNumber == requestNumber)
+ .ConfigureAwait(false);
foreach (var entity in entities)
{
- await _CoatingIssueJobManager.CancelAsync(entity).ConfigureAwait(false);
+ await _coatingIssueJobManager.CancelAsync(entity).ConfigureAwait(false);
}
}
- //[Authorize(CoatingIssueJobPermissions.Delete)]
- //[HttpDelete("details/{id}")]
- //public virtual async Task DeleteDetailAsync(Guid id, Guid detailId)
- //{
- // var entity = await _repository.GetAsync(id);
- // Check.NotNull(entity, EntityClassName);
-
- // var input = new CoatingIssueJobCheckInput
- // {
- // JobStatuses = new List() { EnumJobStatus.Pending, EnumJobStatus.Open },
- // };
- // var result = new AbpValidationResult();
-
- // var detail = entity.GetDetail(detailId);
-
- // _CoatingIssueJobManager.CheckJobStatus(entity, input.JobStatuses, result);
- // if (result.Errors.Any())
- // {
- // throw new AbpValidationException("任务状态错误,不能进行删除明细操作");
- // }
- // entity.RemoveDetail(detailId);
- //}
-
- //[Authorize(CoatingIssueJobPermissions.Delete)]
[HttpPost("invalid")]
public override async Task CancelAsync(Guid id)
{
- var CoatingIssueJob = await _repository.GetAsync(id).ConfigureAwait(false);
- if (CoatingIssueJob == null)
+ var coatingIssueJob = await _repository.GetAsync(id).ConfigureAwait(false);
+ if (coatingIssueJob == null)
{
throw new UserFriendlyException($"未找到ID为 {id} 的任务");
}
- /*
- var listLocationCode = new List();//取出所有当前job 影响的库位code
- foreach (var detail in CoatingIssueJob.Details)
- {
- if (detail.HandledLocationCode != null)
- {
- listLocationCode.Add(detail.HandledLocationCode);
- }
- if (detail.HandledLocationCode != null)
- {
- listLocationCode.Add(detail.RecommendLocationCode);
- }
- if (detail.HandledLocationCode != null)
- {
- listLocationCode.Add(detail.RequestLocationCode);
- }
- if (detail.HandledLocationCode != null)
- {
- listLocationCode.Add(detail.ToLocationCode);
- }
- }
- listLocationCode = listLocationCode.Distinct().ToList();
- */
-
- await _CoatingIssueJobManager.CancelAsync(CoatingIssueJob).ConfigureAwait(false);
-
- }
-
- ///
- /// 根据叫料请求类型获取发料任务
- ///
- ///
- ///
- /// 叫料请求类型:
- /// 人工拉动:Issue_Manual;
- /// 线边拉动:Issue_WIP;
- ///
- ///
- ///
- ///
- [HttpPost("by-type/{requestType}")]
- public virtual async Task> GetListByTypeAsync(SfsJobRequestInputBase requestInput,
- string requestType, bool includeDetails = false, CancellationToken cancellationToken = default)
- {
- Expression> expression = p => p.RequestType == requestType;
- if (requestInput.Condition.Filters?.Count > 0)
- {
- expression = expression.And(requestInput.Condition.Filters.ToLambda());
- }
-
- return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
- requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
-
+ await _coatingIssueJobManager.CancelAsync(coatingIssueJob).ConfigureAwait(false);
}
[HttpPost("by-request-number/{requestNumber}")]
public virtual async Task> GetByRequestNumberAsync(string requestNumber)
{
- var entitys = await _repository.GetListAsync(p => p.MaterialRequestNumber == requestNumber).ConfigureAwait(false);
+ var entitys = await _repository.GetListAsync(p => p.MaterialRequestNumber == requestNumber)
+ .ConfigureAwait(false);
return ObjectMapper.Map, List>(entitys);
}
- ///
- /// 保存拆箱时涉及的明细修改
- ///
- ///
- [HttpPost("save-detail-split-packing")]
- public virtual async Task SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input)
+ [HttpPost("Do-Call-Back")]
+ public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto)
{
- var job = await _repository.FindAsync(p => p.Number == input.Number).ConfigureAwait(false);
- var detail = job.Details.FirstOrDefault(p => p.RecommendPackingCode == input.FromPackingCode); /*&& p.HandledQty == input.FromQty*/
- if (detail == null)
- {
- throw new UserFriendlyException($"根据RecommendPackingCode={input.FromPackingCode}取CoatingIssueJobDetail表为空!");
- }
- //插入目标箱
- var newDetail = CommonHelper.CloneObj(detail);
- newDetail.SetId(GuidGenerator.Create());
- newDetail.RecommendPackingCode = input.ToPackingCode;
- newDetail.RecommendQty = input.ToQty;
- newDetail.HandledPackingCode = detail.HandledPackingCode.HasValue() ? input.ToPackingCode : null; //源实际实际箱码有值,则新记录实际箱码有值
- newDetail.HandledQty = detail.HandledQty > 0 ? input.ToQty : 0;
- //newDetail.CreationTime = CommonHelper.CurTime;
- job.Details.Add(newDetail);
- //修改源箱
- detail.RecommendQty = input.FromQty - input.ToQty;
- detail.HandledQty = detail.HandledQty > 0 ? input.FromQty - input.ToQty : 0;
- var entity = await _repository.UpdateAsync(job).ConfigureAwait(false);
- var ret = ObjectMapper.Map(entity);
- return ret;
+ var job = await _repository.FindAsync(p => p.Number == dto.JobNumber).ConfigureAwait(false);
+
+ //todo 等云峰写好换成真实的
+ var transferLibJobDto = await _transferLibJobAppService.GetByNumberAsync("AAA").ConfigureAwait(false);
+ var transferLibNote = new TransferLibNote();
+
+ var transferLibNoteDetail = transferLibNote.Details.First();
+
+ var jobDetail = job.Details.First();
+ job.JobStatus = EnumJobStatus.Open;
+
+ jobDetail.TransferLibFromArriveDate = transferLibNoteDetail.HandledFromArriveDate;
+ jobDetail.TransferLibFromContainerCode = transferLibNoteDetail.HandledFromContainerCode;
+ jobDetail.TransferLibFromExpireDate = transferLibNoteDetail.HandledFromExpireDate;
+ jobDetail.TransferLibFromLocationArea = transferLibNoteDetail.HandledFromLocationArea;
+ jobDetail.TransferLibFromLocationCode = transferLibNoteDetail.HandledFromLocationCode;
+ jobDetail.TransferLibFromLocationErpCode = transferLibNoteDetail.HandledFromLocationErpCode;
+ jobDetail.TransferLibFromLocationGroup = transferLibNoteDetail.HandledFromLocationGroup;
+ jobDetail.TransferLibFromLot = transferLibNoteDetail.HandledFromLot;
+ jobDetail.TransferLibFromPackingCode = transferLibNoteDetail.HandledFromPackingCode;
+ jobDetail.TransferLibFromProduceDate = transferLibNoteDetail.HandledFromProduceDate;
+ jobDetail.TransferLibFromQty = transferLibNoteDetail.HandledFromQty;
+ jobDetail.TransferLibFromSupplierBatch = transferLibNoteDetail.HandledFromSupplierBatch;
+ jobDetail.TransferLibFromWarehouseCode = transferLibNoteDetail.HandledFromWarehouseCode;
+
+ jobDetail.TransferLibToArriveDate = transferLibNoteDetail.HandledToArriveDate;
+ jobDetail.TransferLibToContainerCode = transferLibNoteDetail.HandledToContainerCode;
+ jobDetail.TransferLibToExpireDate = transferLibNoteDetail.HandledToExpireDate;
+ jobDetail.TransferLibToLocationArea = transferLibNoteDetail.HandledToLocationArea;
+ jobDetail.TransferLibToLocationCode = transferLibNoteDetail.HandledToLocationCode;
+ jobDetail.TransferLibToLocationErpCode = transferLibNoteDetail.HandledToLocationErpCode;
+ jobDetail.TransferLibToLocationGroup = transferLibNoteDetail.HandledToLocationGroup;
+ jobDetail.TransferLibToLot = transferLibNoteDetail.HandledToLot;
+ jobDetail.TransferLibToPackingCode = transferLibNoteDetail.HandledToPackingCode;
+ jobDetail.TransferLibToProduceDate = transferLibNoteDetail.HandledToProduceDate;
+ jobDetail.TransferLibToQty = transferLibNoteDetail.HandledToQty;
+ jobDetail.TransferLibToSupplierBatch = transferLibNoteDetail.HandledToSupplierBatch;
+ jobDetail.TransferLibToWarehouseCode = transferLibNoteDetail.HandledToWarehouseCode;
+
+ await _repository.UpdateAsync(job).ConfigureAwait(false);
+
+ return;
}
-
-
+ [HttpPost("test")]
+ public virtual async Task Test()
+ {
+ Console.WriteLine("FuAZCZXVZXVXZVZ");
+ await Task.CompletedTask;
+ }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAutoMapperProfile.cs
index 6de2d02e7..3a3a961e5 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAutoMapperProfile.cs
@@ -1,5 +1,7 @@
using AutoMapper;
using Volo.Abp.AutoMapper;
+using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
namespace Win_in.Sfs.Wms.Store.Application;
@@ -8,9 +10,10 @@ public partial class StoreApplicationAutoMapperProfile : Profile
{
private void CoatingIssueJobAutoMapperProfile()
{
- CreateMap();
+ CreateMap()
+ .ReverseMap();
- CreateMap();
+ //CreateMap();
CreateMap()
;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionJobs/InjectionJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionJobs/InjectionJobAppService.cs
index d80af81be..684a017e5 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionJobs/InjectionJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/InjectionJobs/InjectionJobAppService.cs
@@ -140,13 +140,11 @@ public class InjectionJobAppService
[HttpPost("Do-Call-Back")]
public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto)
{
- var job = await _repository.FindAsync(p => p.Number == dto.JobNumber).ConfigureAwait(false);
+ var job = await _repository.FindAsync(p => p.Number == dto.CallJobNumber).ConfigureAwait(false);
- //todo 等云峰写好换成真实的
- var transferLibJobDto= await _transferLibJobAppService.GetByNumberAsync("AAA").ConfigureAwait(false);
- var transferLibNote = new TransferLibNote();
+ var transferLibJobDto= await _transferLibJobAppService.GetByNumberAsync(dto.Number).ConfigureAwait(false);
- var transferLibNoteDetail=transferLibNote.Details.First();
+ var transferLibNoteDetail= dto.Details.First();
var jobDetail = job.Details.First();
job.JobStatus = EnumJobStatus.Open;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAutoMapperProfile.cs
index f210ab4c0..7bb50d09a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAutoMapperProfile.cs
@@ -9,13 +9,13 @@ public partial class StoreApplicationAutoMapperProfile : Profile
{
private void TransferLibJobAutoMapperProfile()
{
- CreateMap()
- .ReverseMap();
+ CreateMap(MemberList.None);
+ CreateMap(MemberList.None);
- CreateMap()
- .ReverseMap();
+ CreateMap(MemberList.None);
+ CreateMap(MemberList.None);
- CreateMap()
+ CreateMap(MemberList.None)
.IgnoreAuditedObjectProperties()
.Ignore(x => x.MasterID)
.Ignore(x => x.TenantId)
@@ -23,7 +23,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Id)
.IgnoreAuditedObjectProperties();
- CreateMap()
+ CreateMap(MemberList.None)
.IgnoreAuditedObjectProperties()
.Ignore(x => x.Number)
.Ignore(x => x.Id)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs
index f95ca5eae..8480c6c88 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs
@@ -11,30 +11,28 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Event;
-using Win_in.Sfs.Wms.Store.Application;
using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Application;
[Authorize]
-[Route($"{StoreConsts.RootPath}coatingissue-note")]
-
-
+[Route($"{StoreConsts.RootPath}coating-note")]
public class CoatingIssueNoteAppService :
SfsStoreWithDetailsAppServiceBase,
ICoatingIssueNoteAppService
{
- private readonly ICoatingIssueNoteManager _CoatingIssueNoteManager;
+ private readonly ICoatingIssueNoteManager _coatingIssueNoteManager;
public CoatingIssueNoteAppService(
ICoatingIssueNoteRepository repository,
- ICoatingIssueNoteManager CoatingIssueNoteManager
+ ICoatingIssueNoteManager coatingIssueNoteManager
) : base(repository)
{
- _CoatingIssueNoteManager = CoatingIssueNoteManager;
+ _coatingIssueNoteManager = coatingIssueNoteManager;
}
[HttpPost("")]
@@ -42,7 +40,7 @@ public class CoatingIssueNoteAppService :
public override async Task CreateAsync(CoatingIssueNoteEditInput input)
{
var entity = ObjectMapper.Map(input);
- await _CoatingIssueNoteManager.CreateAsync(entity).ConfigureAwait(false);
+ await _coatingIssueNoteManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map(entity);
return dto;
}
@@ -55,11 +53,11 @@ public class CoatingIssueNoteAppService :
[HttpPost("confirm/{id}")]
public virtual async Task ConfirmAsync(Guid id)
{
- var issueNote = await _repository.GetAsync(id).ConfigureAwait(false);
- issueNote.Confirmed = true;
- issueNote = await _repository.UpdateAsync(issueNote).ConfigureAwait(false);
- await LocalEventBus.PublishAsync(new SfsConfirmedEntityEventData(issueNote), false).ConfigureAwait(false);
- return ObjectMapper.Map(issueNote);
+ var coatingIssueNote = await _repository.GetAsync(id).ConfigureAwait(false);
+ coatingIssueNote.Confirmed = true;
+ coatingIssueNote = await _repository.UpdateAsync(coatingIssueNote).ConfigureAwait(false);
+ await LocalEventBus.PublishAsync(new SfsConfirmedEntityEventData(coatingIssueNote), false).ConfigureAwait(false);
+ return ObjectMapper.Map(coatingIssueNote);
}
[HttpPost("confirm-by-number/{number}")]
@@ -67,7 +65,7 @@ public class CoatingIssueNoteAppService :
{
var entity = await _repository.FindAsync(p => p.Number == number).ConfigureAwait(false);
Check.NotNull(entity, nameof(CoatingIssueNote));
- var result = await _CoatingIssueNoteManager.ConfirmAsync(entity.Id).ConfigureAwait(false);
+ var result = await _coatingIssueNoteManager.ConfirmAsync(entity.Id).ConfigureAwait(false);
var dto = ObjectMapper.Map(result);
return dto;
}
@@ -108,26 +106,4 @@ public class CoatingIssueNoteAppService :
return dtos;
}
- //[HttpPost("")]
- //[Authorize(IssueNotePermissions.Create)]
- //public override Task CreateAsync(IssueNoteCreateInput input)
- //{
- // return base.CreateAsync(input);
- //}
-
- //[HttpPut]
- //[Route($"{StoreConsts.RootPath}{id}")]
- //[Authorize(IssueNotePermissions.Update)]
- //public override Task UpdateAsync(Guid id, IssueNoteUpdateInput input)
- //{
- // return base.UpdateAsync(id, input);
- //}
-
- //[HttpDelete]
- //[Route($"{StoreConsts.RootPath}{id}")]
- //[Authorize(IssueNotePermissions.Delete)]
- //public override Task DeleteAsync(Guid id)
- //{
- // return base.DeleteAsync(id);
- //}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAutoMapperProfile.cs
index d6ce0f0fa..360a0df6d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAutoMapperProfile.cs
@@ -1,5 +1,7 @@
using AutoMapper;
using Volo.Abp.AutoMapper;
+using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleRequests/AssembleRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsAppService.cs
similarity index 68%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleRequests/AssembleRequestAppService.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsAppService.cs
index 567997a51..6e3f346ac 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleRequests/AssembleRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsAppService.cs
@@ -15,6 +15,7 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping;
+using Win_in.Sfs.Basedata.Application;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
@@ -30,28 +31,30 @@ namespace Win_in.Sfs.Wms.Store.Application;
///
[Authorize]
[Route($"{StoreConsts.RootPath}assemble-request")]
-public class AssembleRequestAppService : SfsStoreRequestAppServiceBase,
- IAssembleRequestAppService
+public class AssembleIssueRequestsAppService : SfsStoreRequestAppServiceBase,
+ IAssembleIssueRequestsAppService
{
- private readonly IAssembleRequestManager _assembleRequestManager;
+ private readonly IAssembleIssueRequestsManager _assembleRequestManager;
private readonly IItemStoreRelationAppService _itemStoreRelationApp;
private readonly IAreaAppService _areaApp;
private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService;
- private readonly IProductionLineAppService _productionLineAppService;
- private readonly IInjectionJobAppService _issueJobAppService;
- public AssembleRequestAppService(
- IAssembleRequestRepository repository,
- IAssembleRequestManager assembleRequestManager,
+ private readonly IProductionLineAppService _productionLineAppService;
+ private readonly ITransactionTypeAppService _transactionTypeAppService;
+
+ public AssembleIssueRequestsAppService(
+ IAssembleIssueRequestsRepository repository,
+ IAssembleIssueRequestsManager assembleRequestManager,
IPreparationPlanManager preparationPlanManager,
IItemStoreRelationAppService itemStoreRelationApp,
IAreaAppService areaApp,
ILocationAppService locationAppService,
IItemBasicAppService itemBasicAppService,
IProductionLineAppService productionLineAppService,
- IInjectionJobAppService issueJobAppService)
+ ITransactionTypeAppService transactionTypeAppService
+ )
: base(repository, assembleRequestManager)
{
_assembleRequestManager = assembleRequestManager;
@@ -60,22 +63,21 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase HandleAsync(Guid id)
+ public override async Task HandleAsync(Guid id)
{
- var entity = await _repository.GetAsync(id).ConfigureAwait(false);
- await LocalEventBus.PublishAsync(new SfsHandledEntityEventData(entity), false).ConfigureAwait(false);
- return ObjectMapper.Map(entity);
+ await Task.CompletedTask.ConfigureAwait(false);
+ return null;
}
[HttpPost("")]
- //[Authorize(AssembleRequestPermissions.Create)]
- public override async Task CreateAsync(AssembleRequestEditInput input)
+ public override async Task CreateAsync(AssembleIssueRequestsEditInput input)
{
foreach (var item in input.Details)
{
@@ -87,33 +89,57 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase(input);
+ //因为是刚创建的 所以发料数一定是0
+ detailInput.IssuedQty = 0;
+ }
- var result = await _assembleRequestManager.CreateAsync(entity).ConfigureAwait(false);
+ await SetRequestAutoPropertiesAsync(input).ConfigureAwait(false);
+ var entity = ObjectMapper.Map(input);
- var dto = ObjectMapper.Map(result);
+ var result = await _assembleRequestManager.CreateByNumberAsync(entity).ConfigureAwait(false);
+
+ var dto = ObjectMapper.Map(result);
return dto;
}
- //[Authorize(AssembleRequestPermissions.Create)]
+ ///
+ /// 赋值Request业务属性
+ ///
+ ///
+ ///
+ private async Task SetRequestAutoPropertiesAsync(AssembleIssueRequestsEditInput entity)
+ {
+ var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);
+ Check.NotNull(tranType, "事务类型", "事务类型不存在");
+ entity.AutoSubmit = tranType.AutoSubmitRequest;
+ entity.AutoAgree = tranType.AutoAgreeRequest;
+ entity.AutoHandle = tranType.AutoHandleRequest;
+ entity.AutoCompleteJob = tranType.AutoCompleteJob;
+ entity.DirectCreateNote = tranType.DirectCreateNote;
+ }
+
[HttpPost("create-and-handle")]
- public async Task CreateAndHandleAsync(AssembleRequestEditInput input)
+ public async Task CreateAndHandleAsync(AssembleIssueRequestsEditInput input)
{
var assembleRequestDto = await CreateAsync(input).ConfigureAwait(false);
@@ -124,21 +150,6 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase
- /// 根据类型 获取叫料申请
- ///
- ///
- ///
- [HttpGet("list/by-type/{type}")]
- public virtual async Task> GetListByTypeAsync(string type)
- {
- var entities = await _repository.GetListAsync(c => c.Type == type).ConfigureAwait(false);
-
- var dtos = ObjectMapper.Map, List>(entities);
-
- return dtos;
- }
-
#region 导入
///
@@ -146,8 +157,8 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase
///
///
- protected override async Task> ImportProcessingEntityAsync(
- Dictionary dictionary)
+ protected override async Task> ImportProcessingEntityAsync(
+ Dictionary dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
@@ -176,6 +187,7 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase
///
///
- protected override async Task ValidateImportModelAsync(AssembleRequestImportInput model,
+ protected override async Task ValidateImportModelAsync(AssembleIssueRequestsImportInput model,
List validationRresult)
{
_ = new Dictionary();
@@ -198,9 +210,11 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase ValidateImportEntities(Dictionary dict)
+ protected override async Task ValidateImportEntities(Dictionary dict)
{
foreach (var entity in dict.Keys)
{
@@ -219,36 +233,7 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase CheckItemBasicAsync(AssembleRequestImportInput importInput,
- List validationRresult)
- {
- var item = await _itemBasicAppService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
- if (item == null)
- {
- validationRresult.Add(new ValidationResult($"物品代码{importInput.ItemCode}不存在", new[] { "物品代码" }));
- }
- else if (item.StdPackQty == 0)
- {
- validationRresult.Add(
- new ValidationResult($"物品代码{importInput.ItemCode}的物品信息中标准包装等于0或不存在", new[] { "标准包装" }));
- }
-
- return item;
- }
-
- protected async Task CheckLocationAsync(AssembleRequestImportInput importInput,
- List validationRresult)
- {
- var location = await _locationAppService.GetByCodeAsync(importInput.ToLocationCode).ConfigureAwait(false);
- if (location == null)
- {
- validationRresult.Add(new ValidationResult($"目标库位{importInput.ToLocationCode}不存在", new[] { "目标库位" }));
- }
-
- return location;
- }
-
- protected async Task CheckAreaAsync(AssembleRequestImportInput importInput,
+ protected async Task CheckAreaAsync(AssembleIssueRequestsImportInput importInput,
List validationRresult)
{
var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false);
@@ -258,7 +243,7 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase validationRresult)
{
var itemStoreRelation = await _itemStoreRelationApp
@@ -270,33 +255,55 @@ public class AssembleRequestAppService : SfsStoreRequestAppServiceBase CheckItemBasicAsync(AssembleIssueRequestsImportInput importInput,
+ List validationRresult)
+ {
+ var item = await _itemBasicAppService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
+ if (item == null)
+ {
+ validationRresult.Add(new ValidationResult($"物品代码{importInput.ItemCode}不存在", new[] { "物品代码" }));
+ }
+ else if (item.StdPackQty == 0)
+ {
+ validationRresult.Add(
+ new ValidationResult($"物品代码{importInput.ItemCode}的物品信息中标准包装等于0或不存在", new[] { "标准包装" }));
+ }
+
+ return item;
+ }
+
+ protected async Task CheckLocationAsync(AssembleIssueRequestsImportInput importInput,
+ List validationRresult)
+ {
+ var location = await _locationAppService.GetByCodeAsync(importInput.ToLocationCode).ConfigureAwait(false);
+ if (location == null)
+ {
+ validationRresult.Add(new ValidationResult($"目标库位{importInput.ToLocationCode}不存在", new[] { "目标库位" }));
+ }
+
+ return location;
+ }
#endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleRequests/AssembleRequestAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsAutoMapperProfile.cs
similarity index 80%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleRequests/AssembleRequestAutoMapperProfile.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsAutoMapperProfile.cs
index ed88d670e..a53b2f166 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleRequests/AssembleRequestAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsAutoMapperProfile.cs
@@ -8,22 +8,22 @@ namespace Win_in.Sfs.Wms.Store.Application;
public partial class StoreApplicationAutoMapperProfile : Profile
{
- private void AssembleRequestAutoMapperProfile()
+ private void AssembleIssueRequestsAutoMapperProfile()
{
- CreateMap()
+ CreateMap()
.ReverseMap();
- CreateMap()
+ CreateMap()
.ReverseMap();
- CreateMap()
+ CreateMap()
.IgnoreAuditedObjectProperties()
.Ignore(x => x.MasterID)
.Ignore(x => x.TenantId)
.Ignore(x => x.Number)
.Ignore(x => x.Id);
- CreateMap()
+ CreateMap()
.IgnoreAuditedObjectProperties()
.ForMember(x => x.Type, y => y.MapFrom(t => t.Type.ToString()))
.Ignore(x => x.UseOnTheWayLocation)
@@ -37,7 +37,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.ActiveDate)
.Ignore(x => x.Remark);
- CreateMap()
+ CreateMap()
.IgnoreAuditedObjectProperties()
.ForMember(x => x.Status, y => y.MapFrom(t => EnumStatus.Open))
.Ignore(x => x.ToLocationErpCode)
@@ -58,7 +58,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Number)
.Ignore(x => x.Id)
.Ignore(x => x.Remark);
- CreateMap()
+ CreateMap()
.IgnoreAuditedObjectProperties()
.Ignore(x => x.RequestStatus)
.Ignore(x => x.ConcurrencyStamp).Ignore(x => x.Id);
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestAppService.cs
index eb0fd7ac0..8fe68a699 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestAppService.cs
@@ -15,226 +15,107 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping;
+using Win_in.Sfs.Basedata.Application;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
-using Win_in.Sfs.Wms.Store.Application;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
+using Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests.CoatingMaterialRequests;
-
-
-
+namespace Win_in.Sfs.Wms.Store.Application;
+///
+/// 喷涂叫料
+///
[Authorize]
-[Route($"{StoreConsts.RootPath}coatingmaterial-request")]
+[Route($"{StoreConsts.RootPath}coating-request")]
public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase,
ICoatingMaterialRequestAppService
{
- private readonly ICoatingMaterialRequestManager _materialRequestManager;
-
- private readonly IPreparationPlanManager _preparationPlanManager;
-
+ private readonly ICoatingMaterialRequestManager _coatingMaterialRequestManager;
private readonly IItemStoreRelationAppService _itemStoreRelationApp;
-
private readonly IAreaAppService _areaApp;
-
private readonly ILocationAppService _locationAppService;
-
private readonly IItemBasicAppService _itemBasicAppService;
- private readonly IProductionLineAppService _productionLineAppService;
- private readonly IIssueJobAppService _issueJobAppService;
+ private readonly IProductionLineAppService _productionLineAppService;
+ private readonly ITransactionTypeAppService _transactionTypeAppService;
+
public CoatingMaterialRequestAppService(
ICoatingMaterialRequestRepository repository,
- ICoatingMaterialRequestManager CoatingMaterialRequestManager,
+ ICoatingMaterialRequestManager coatingMaterialRequestManager,
IPreparationPlanManager preparationPlanManager,
IItemStoreRelationAppService itemStoreRelationApp,
IAreaAppService areaApp,
ILocationAppService locationAppService,
IItemBasicAppService itemBasicAppService,
IProductionLineAppService productionLineAppService,
- IIssueJobAppService issueJobAppService)
- : base(repository, CoatingMaterialRequestManager)
+ ITransactionTypeAppService transactionTypeAppService
+ )
+ : base(repository, coatingMaterialRequestManager)
{
- _materialRequestManager = CoatingMaterialRequestManager;
- _preparationPlanManager = preparationPlanManager;
+ _coatingMaterialRequestManager = coatingMaterialRequestManager;
_itemStoreRelationApp = itemStoreRelationApp;
_areaApp = areaApp;
_locationAppService = locationAppService;
_itemBasicAppService = itemBasicAppService;
- _productionLineAppService = productionLineAppService;
- _issueJobAppService = issueJobAppService;
+ _productionLineAppService = productionLineAppService;
+ _transactionTypeAppService = transactionTypeAppService;
}
- #region 东阳使用
-
- ///
- /// 用来重写 导入数据时可以加工数据
- ///
- ///
- ///
- protected override async Task> ImportProcessingEntityAsync(
- Dictionary dictionary)
- {
- var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
-
- foreach (var materialRequest in addList)
- {
- materialRequest.Worker = CurrentUser.GetUserName();
- materialRequest.CreatorId = CurrentUser.Id;
- if (materialRequest.Type == EnumTransSubType.Issue_Manual.GetDisplayName())
- {
- materialRequest.Type = EnumTransSubType.Issue_Manual.ToString();
- }
-
- foreach (var detail in materialRequest.Details)
- {
- var locationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
- CheckLocation(locationDto, detail.ToLocationCode);
- var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
- CheckItemBasic(itemBasicDto, detail.ItemCode);
-
- detail.ToLocationArea = locationDto.AreaCode;
- detail.ToLocationErpCode = locationDto.ErpLocationCode;
- detail.ToLocationGroup = locationDto.LocationGroupCode;
- detail.ToWarehouseCode = locationDto.WarehouseCode;
- detail.ItemDesc1 = itemBasicDto.Desc1;
- detail.ItemDesc2 = itemBasicDto.Desc2;
- detail.ItemName = itemBasicDto.Name;
- detail.Uom = itemBasicDto.BasicUom;
- }
- }
-
- return dictionary;
- }
+ #region 东阳V2
public override async Task HandleAsync(Guid id)
{
- var entity = await _repository.GetAsync(id).ConfigureAwait(false);
- await LocalEventBus.PublishAsync(new SfsHandledEntityEventData(entity), false).ConfigureAwait(false);
- return ObjectMapper.Map(entity);
- }
-
- #region 校验
-
- private void CheckItemBasic(ItemBasicDTO ItemBasicDto, string itemCode)
- {
- if (ItemBasicDto == null)
- {
- throw new UserFriendlyException($"物品代码为【{itemCode}】不存在");
- }
- }
-
- private void CheckLocation(LocationDTO LocationDto, string LocationCode)
- {
- if (LocationDto == null)
- {
- throw new UserFriendlyException($"库位代码为【{LocationCode}】不存在");
- }
-
- if (LocationDto.Type != EnumLocationType.WIP)
- {
- throw new UserFriendlyException($"库位代码【{LocationCode}】不是【{EnumLocationType.WIP.GetDisplayName()}】类型");
- }
+ await Task.CompletedTask.ConfigureAwait(false);
+ return null;
}
-
- #endregion
-
- #endregion
-
[HttpPost("")]
- //[Authorize(CoatingMaterialRequestPermissions.Create)]
public override async Task CreateAsync(CoatingMaterialRequestEditInput input)
{
foreach (var item in input.Details)
{
if (item.Qty <= 0)
{
- throw new UserFriendlyException($"{item.ItemCode} 物料的需求量必须大于 0");
- }
- }
-
-
- foreach (var item in input.Details) //赋值生产线
- {
- var location = await LocationAclService.GetByCodeAsync(item.ToLocationCode).ConfigureAwait(false);
- item.ProdLine = location.LocationGroupCode;
-
- }
-
- var entity = ObjectMapper.Map(input);
-
- var result = await _materialRequestManager.CreateAsync(entity).ConfigureAwait(false);
-
- var dto = ObjectMapper.Map(result);
- return dto;
- }
-
- ///
- /// 创建并且执行叫料请求
- ///
- ///
- ///
- ///
- [HttpPost("create-and-handle-api")]
- //[Authorize(CoatingMaterialRequestPermissions.Create)]
- public virtual async Task CreateAndHandleByAPIAsync(CoatingMaterialRequestEditInput input)
- {
- foreach (var item in input.Details)
- {
- if (item.Qty <= 0)
- {
- throw new UserFriendlyException($"{item.ItemCode} 物料的需求量必须大于 0");
+ throw new UserFriendlyException($"{item.ItemCode} 物料的需求量必须大于0");
}
}
-
- input.AutoSubmit = true;
- input.AutoAgree = true;
- input.AutoHandle = true;
- input.AutoCompleteJob = false;
- input.DirectCreateNote = false;
-
- foreach (var detailInput in input.Details)
+ foreach (var detailInput in input.Details) //赋值生产线
{
- var toLocationDto = await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false);
+ var toLocationDto =
+ await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false);
CheckLocation(toLocationDto, detailInput.ToLocationCode);
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detailInput.ItemCode);
- detailInput.ItemDesc1 = itemBasicDto.Desc1;
-
- //var productionLineDto = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false);
+ detailInput.ToLocationArea = toLocationDto.AreaCode;
+ detailInput.ToLocationGroup = toLocationDto.LocationGroupCode;
+ detailInput.ToWarehouseCode = toLocationDto.WarehouseCode;
+ detailInput.ProdLine = detailInput.ToLocationCode;
+ detailInput.ToLocationErpCode = toLocationDto.ErpLocationCode;
- //detailInput.ToLocationCode = toLocationDto.ErpLocationCode;
- //if (productionLineDto != null)
- //{
- // detailInput.ProdLine = productionLineDto.Code;
- //}
+ detailInput.ItemDesc1 = itemBasicDto.Desc1;
+ detailInput.ItemDesc2 = itemBasicDto.Desc2;
+ detailInput.ItemName = itemBasicDto.Name;
+ detailInput.Uom = itemBasicDto.BasicUom;
+ detailInput.StdPackQty = itemBasicDto.StdPackQty;
+ detailInput.Status = EnumStatus.Open;
+
+ //因为是刚创建的 所以发料数一定是0
+ detailInput.IssuedQty = 0;
}
+ await SetRequestAutoPropertiesAsync(input).ConfigureAwait(false);
var entity = ObjectMapper.Map(input);
- foreach (var detail in entity.Details)
- {
- var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
- //var productionLineDto = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false);
-
- detail.ToLocationArea = toLocationDto.AreaCode;
- detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
- detail.ToLocationGroup = toLocationDto.LocationGroupCode;
- detail.ToWarehouseCode = toLocationDto.WarehouseCode;
- }
-
- entity.UseOnTheWayLocation = false;
- var result = await _materialRequestManager.CreateBynNumberAsync(entity).ConfigureAwait(false);
+ var result = await _coatingMaterialRequestManager.CreateByNumberAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map(result);
@@ -242,98 +123,76 @@ public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase
- /// 创建并且执行叫料请求
+ /// 赋值Request业务属性
///
- ///
+ ///
///
- ///
- [HttpPost("create-and-handle")]
- //[Authorize(CoatingMaterialRequestPermissions.Create)]
- public virtual async Task CreateAndHandleAsync(CoatingMaterialRequestEditInput input)
+ private async Task SetRequestAutoPropertiesAsync(CoatingMaterialRequestEditInput entity)
{
- foreach (var item in input.Details)
- {
- if (item.Qty <= 0)
- {
- throw new UserFriendlyException($"{item.ItemCode} 物料的需求量必须大于0");
- }
- }
-
-
-
- foreach (var detailInput in input.Details) //赋值生产线
- {
- var toLocationDto = await _locationAppService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false);
- CheckLocation(toLocationDto, detailInput.ToLocationCode);
- var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
- CheckItemBasic(itemBasicDto, detailInput.ItemCode);
-
- var location = await LocationAclService.GetByCodeAsync(detailInput.ToLocationCode).ConfigureAwait(false);
- detailInput.ProdLine = location.LocationGroupCode;
-
- input.Worker = input.Worker;
- }
+ var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);
+ Check.NotNull(tranType, "事务类型", "事务类型不存在");
+ entity.AutoSubmit = tranType.AutoSubmitRequest;
+ entity.AutoAgree = tranType.AutoAgreeRequest;
+ entity.AutoHandle = tranType.AutoHandleRequest;
+ entity.AutoCompleteJob = tranType.AutoCompleteJob;
+ entity.DirectCreateNote = tranType.DirectCreateNote;
+ }
- input.AutoSubmit = true;
- input.AutoAgree = true;
- input.AutoHandle = true;
- input.AutoCompleteJob = false;
- input.DirectCreateNote = false;
+ [HttpPost("create-and-handle")]
+ public async Task CreateAndHandleAsync(CoatingMaterialRequestEditInput input)
+ {
+ var coatingMaterialRequestDto = await CreateAsync(input).ConfigureAwait(false);
- var entity = ObjectMapper.Map(input);
+ await HandleAsync(coatingMaterialRequestDto.Id).ConfigureAwait(false);
- var result = await _materialRequestManager.CreateAsync(entity).ConfigureAwait(false);
+ return coatingMaterialRequestDto;
+ }
- var dto = ObjectMapper.Map(result);
+ #endregion
- return dto;
- }
+ #region 导入
-
///
- /// 根据类型获取叫料请求
+ /// 用来重写 导入数据时可以加工数据
///
- ///
- ///
- /// 叫料请求类型:
- /// 人工拉动:Issue_Manual;
- /// 线边拉动:Issue_WIP;
- ///
- ///
- ///
+ ///
///
- [HttpPost("by-type/{type}")]
- public virtual async Task> GetListByTypeAsync(
- SfsStoreRequestInputBase requestInput,
- string type,
- bool includeDetails = false,
- CancellationToken cancellationToken = default)
+ protected override async Task> ImportProcessingEntityAsync(
+ Dictionary dictionary)
{
- Expression> expression = p => p.Type == type;
- if (requestInput.Condition.Filters?.Count > 0)
- {
- expression = expression.And(requestInput.Condition.Filters.ToLambda());
- }
+ var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
- return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
- requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
- }
+ foreach (var coatingMaterialRequest in addList)
+ {
+ coatingMaterialRequest.Worker = CurrentUser.GetUserName();
+ coatingMaterialRequest.CreatorId = CurrentUser.Id;
+ if (coatingMaterialRequest.Type == EnumTransSubType.Issue_Manual.GetDisplayName())
+ {
+ coatingMaterialRequest.Type = EnumTransSubType.Issue_Manual.ToString();
+ }
- #region 导入
+ foreach (var detail in coatingMaterialRequest.Details)
+ {
+ var locationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
+ CheckLocation(locationDto, detail.ToLocationCode);
- //protected override async Task CheckImportInputBusinessAsync(CoatingMaterialRequestImportInput importInput, EnumImportMethod importMethod)
- //{
- // //await base.CheckImportInputBusinessAsync(importInput, importMethod);
+ var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
+ CheckItemBasic(itemBasicDto, detail.ItemCode);
- // var item = await CheckItemBasicAsync(importInput);
- // await CheckItemPackAsync(importInput);
- // var location = await CheckLocationAsync(importInput);
- // await CheckAreaAsync(importInput);
- // await CheckStoreRelationAsync(importInput);
- // var transactionType = await CheckTransactionTypeAsync();
+ detail.ToLocationArea = locationDto.AreaCode;
+ detail.ToLocationErpCode = locationDto.ErpLocationCode;
+ detail.ToLocationGroup = locationDto.LocationGroupCode;
+ detail.ToWarehouseCode = locationDto.WarehouseCode;
+ detail.ItemDesc1 = itemBasicDto.Desc1;
+ detail.ItemDesc2 = itemBasicDto.Desc2;
+ detail.ItemName = itemBasicDto.Name;
+ detail.Uom = itemBasicDto.BasicUom;
+ detail.StdPackQty = itemBasicDto.StdPackQty;
+ }
+ }
- // CheckTransactionType(EnumTransInOut.In, EnumInventoryStatus.OK, transactionType, item, location);
- //}
+ return dictionary;
+ }
///
/// 导入验证
@@ -351,6 +210,8 @@ public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase ValidateImportEntities(Dictionary dict)
@@ -372,6 +233,49 @@ public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase validationRresult)
+ {
+ var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false);
+ if (area == null)
+ {
+ validationRresult.Add(new ValidationResult($"调出库区{importInput.FromLocationArea}不存在", new[] { "调出库区" }));
+ }
+ }
+
+ protected async Task CheckStoreRelationAsync(CoatingMaterialRequestImportInput importInput,
+ List validationRresult)
+ {
+ var itemStoreRelation = await _itemStoreRelationApp
+ .GetFirstAsync(importInput.ItemCode, importInput.ToLocationCode).ConfigureAwait(false);
+ if (itemStoreRelation == null)
+ {
+ validationRresult.Add(new ValidationResult(
+ $"物品代码{importInput.ItemCode}与目标库位{importInput.ToLocationCode}不存在对应关", new[] { "物品库位对应关系" }));
+ }
+ }
+
+ private void CheckItemBasic(ItemBasicDTO itemBasicDto, string itemCode)
+ {
+ if (itemBasicDto == null)
+ {
+ throw new UserFriendlyException($"物品代码为【{itemCode}】不存在");
+ }
+ }
+
+ private void CheckLocation(LocationDTO locationDto, string locationCode)
+ {
+ if (locationDto == null)
+ {
+ throw new UserFriendlyException($"库位代码为【{locationCode}】不存在");
+ }
+
+ if (locationDto.Type != EnumLocationType.WIP)
+ {
+ throw new UserFriendlyException($"库位代码【{locationCode}】不是【{EnumLocationType.WIP.GetDisplayName()}】类型");
+ }
+ }
+
protected async Task CheckItemBasicAsync(CoatingMaterialRequestImportInput importInput,
List validationRresult)
{
@@ -401,44 +305,5 @@ public class CoatingMaterialRequestAppService : SfsStoreRequestAppServiceBase validationRresult)
- {
- var area = await _areaApp.GetByCodeAsync(importInput.FromLocationArea).ConfigureAwait(false);
- if (area == null)
- {
- validationRresult.Add(new ValidationResult($"调出库区{importInput.FromLocationArea}不存在", new[] { "调出库区" }));
- }
- }
-
- protected async Task CheckStoreRelationAsync(CoatingMaterialRequestImportInput importInput,
- List validationRresult)
- {
- var itemStoreRelation = await _itemStoreRelationApp
- .GetFirstAsync(importInput.ItemCode, importInput.ToLocationCode).ConfigureAwait(false);
- if (itemStoreRelation == null)
- {
- validationRresult.Add(new ValidationResult(
- $"物品代码{importInput.ItemCode}与目标库位{importInput.ToLocationCode}不存在对应关", new[] { "物品库位对应关系" }));
- }
- }
-
#endregion
-
- #endregion
-
- ///
- /// 根据类型 获取叫料申请
- ///
- ///
- ///
- [HttpGet("list/by-type/{type}")]
- public virtual async Task> GetListByTypeAsync(string type)
- {
- var entities = await _repository.GetListAsync(c => c.Type == type).ConfigureAwait(false);
-
- var dtos = ObjectMapper.Map, List>(entities);
-
- return dtos;
- }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs
index 5f10efe9d..664efe429 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs
@@ -27,7 +27,9 @@ using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application;
-//注塑叫料
+///
+/// 注塑叫料
+///
[Authorize]
[Route($"{StoreConsts.RootPath}injection-request")]
public class InjectionRequestAppService : SfsStoreRequestAppServiceBase
+/// 底盘信息
+///
+[Display(Name = "底盘信息")]
+public class ChassisOperationSequence : SfsAggregateRootBase
+{
+ ///
+ /// Wms编号
+ ///
+ [Display(Name = "Wms编号")]
+ public string Number { get; set; }
+
+ ///
+ /// 底盘号
+ ///
+ [Display(Name = "底盘号")]
+ public string ChassisOperationSequenceNumber { get; set; }
+
+ ///
+ /// 描述
+ ///
+ [Display(Name = "描述")]
+ public string Description { get; set; }
+
+ ///
+ /// 底盘生产时间
+ ///
+ [Display(Name = "底盘生产时间")]
+ public DateTime ProduceDateTime { get; set; }
+
+ ///
+ /// 接收接口时间
+ ///
+ [Display(Name = "接收接口时间")]
+ public DateTime ReceiveInterfaceDateTime { get; set; }
+
+ ///
+ /// 执行位置排序列
+ ///
+ [Display(Name = "执行位置排序列")]
+ public long SortNumber { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/ChassisOperationSequenceManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/ChassisOperationSequenceManager.cs
new file mode 100644
index 000000000..2bc8488d2
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/ChassisOperationSequenceManager.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Services;
+
+namespace Win_in.Sfs.Wms.Store.Domain;
+
+public class ChassisOperationSequenceManager : DomainService, IChassisOperationSequenceManager
+{
+ private readonly IChassisOperationSequenceRepository _repository;
+
+ public ChassisOperationSequenceManager(
+ IChassisOperationSequenceRepository repository
+ )
+ {
+ _repository = repository;
+ }
+
+ public Task ImportDataAsync(List entities, List deleteEntities = null)
+ {
+ throw new NotImplementedException();
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/IChassisOperationSequenceManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/IChassisOperationSequenceManager.cs
new file mode 100644
index 000000000..163749f4e
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/IChassisOperationSequenceManager.cs
@@ -0,0 +1,12 @@
+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 IChassisOperationSequenceManager : IBulkImportService
+{
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/IChassisOperationSequenceRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/IChassisOperationSequenceRepository.cs
new file mode 100644
index 000000000..23203d2a2
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ChassisOperationSequence/IChassisOperationSequenceRepository.cs
@@ -0,0 +1,10 @@
+using System.Threading.Tasks;
+using Win_in.Sfs.Shared.Domain;
+using Win_in.Sfs.Wms.Store.Equipments;
+
+namespace Win_in.Sfs.Wms.Store.Domain;
+
+public interface IChassisOperationSequenceRepository : ISfsStoreRepositoryBase, ISfsBulkRepositoryBase
+{
+
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJob.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJob.cs
index 74b1b7e0d..9f7dbcf6b 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJob.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJob.cs
@@ -28,13 +28,7 @@ public class AssembleJob : SfsJobAggregateRootBase
/// 要货单号
///
[IgnoreUpdate]
- public string AssembleRequestNumber { get; set; }
-
- ///
- /// 车间
- ///
- [IgnoreUpdate]
- public string Workshop { get; set; }
+ public string AssembleRequestNumber { get; set; }
///
/// 使用在途库
@@ -48,37 +42,6 @@ public class AssembleJob : SfsJobAggregateRootBase
///
[IgnoreUpdate]
public override List Details { get; set; } = new List();
-
- ///
- /// 设置任务明细的实际库位和实际数量
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public virtual async Task BuildDetail(Guid id, string handledLocationCode, string handledLocationErpCode,
- string handledWarehouseCode, decimal handledQty, string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate,
- string handledContainerCode, string handledLot, string handledPackingCode)
- {
- var detail = GetDetail(id);
- detail.HandledFromLocationCode = handledLocationCode;
- detail.HandledFromLocationErpCode = handledLocationErpCode;
- detail.HandledFromWarehouseCode = handledWarehouseCode;
- detail.HandledQty = handledQty;
- detail.HandledSupplierBatch = handledSupplierBatch;
- detail.HandledArriveDate = handledArriveDate;
- detail.HandledProduceDate = handledProduceDate;
- detail.HandledExpireDate = handledExpireDate;
- detail.HandledContainerCode = handledContainerCode;
- detail.HandledLot = handledLot;
- detail.HandledPackingCode = handledPackingCode;
- await Task.CompletedTask.ConfigureAwait(false);
- }
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobDetail.cs
index 02d48d84f..bba4a3543 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobDetail.cs
@@ -1,40 +1,81 @@
using System;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain;
-public class AssembleJobDetail : SfsJobRecommendFromDetailEntityBase, IHasToLocation
+public class AssembleJobDetail : SfsDetailEntityBase
{
+
+ #region 库存基础信息
+
///
- /// 请求库位
+ /// 物品代码
///
- public string RequestLocationCode { get; set; }
+ public string ItemCode { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ public string ItemName { get; set; }
+
+ ///
+ /// 物品描述1
+ ///
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
///
- /// 到库位
+ /// 库存状态
///
- public string ToLocationCode { get; set; }
+ public EnumInventoryStatus Status { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
/// 到库区
///
- public string ToLocationArea { get; set; }
+ public string RequestLocationArea { get; set; }
///
/// 到库位组
///
- public string ToLocationGroup { get; set; }
+ public string RequestLocationGroup { get; set; }
///
/// 到ERP库位
///
- public string ToLocationErpCode { get; set; }
+ public string RequestLocationErpCode { get; set; }
///
/// 到仓库
///
- public string ToWarehouseCode { get; set; }
+ public string RequestWarehouseCode { get; set; }
///
/// 在途库库位
@@ -47,59 +88,435 @@ public class AssembleJobDetail : SfsJobRecommendFromDetailEntityBase, IHasToLoca
public string ProdLine { get; set; }
///
- /// 工作中心
+ /// 位置码
///
- public string WorkStation { get; set; }
+ public string PositionCode { get; set; }
///
- /// 过期时间
+ /// 推荐的类型
///
- public DateTime ExpiredTime { get; set; }
+ public EnumRecommendType RecommendType { get; set; }
///
- /// 工序
+ /// 需求数量
///
- public string Operation { get; set; }
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
///
- /// 配送方式
+ /// 推荐来源托标签
///
- public EnumDistributionType DistributionType { get; set; }
+ public string RecommendFromContainerCode { get; set; }
///
- /// 取整方式
+ /// 推荐来源箱标签
///
- public EnumTruncType TruncType { get; set; }
+ public string RecommendFromPackingCode { get; set; }
///
- /// 取整后数量
+ /// 推荐来源批次供应商批次
///
- public decimal RoundedQty { get; set; }
+ public string RecommendFromSupplierBatch { get; set; }
///
- /// 计划拆分规则
+ /// 推荐来源批次到货时间
///
- public EnumPlannedSplitRule PlannedSplitRule { get; set; }
+ public DateTime RecommendFromArriveDate { get; set; }
///
- /// 计划开始时间
+ /// 推荐来源批次生产时间
///
- public DateTime PlanBeginTime { get; set; }
+ public DateTime RecommendFromProduceDate { get; set; }
///
- /// 每次配送数量
+ /// 推荐来源批次过期时间
///
- public decimal DeliveryQty { get; set; }
+ public DateTime RecommendFromExpireDate { get; set; }
///
- /// 位置码
+ /// 推荐来源批次排序
///
- public string PositionCode { get; set; }
+ public string RecommendFromLot { get; set; }
///
- /// 推荐类型
+ /// 推荐来源库位
///
- public EnumRecommendType RecommendType { get; set; }
+ public string RecommendFromLocationCode { get; set; }
+
+ ///
+ /// 推荐来源库区
+ ///
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
+ ///
+ public string RecommendFromLocationErpCode { get; set; }
+
+ ///
+ /// 推荐来源仓库
+ ///
+ public string RecommendFromWarehouseCode { get; set; }
+
+ ///
+ /// 推荐来源数量
+ ///
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
+
+ ///
+ /// 推荐目标库位组
+ ///
+ public string RecommendToLocationGroup { get; set; }
+
+ ///
+ /// 推荐目标ERP库位
+ ///
+ public string RecommendToLocationErpCode { get; set; }
+
+ ///
+ /// 推荐目标仓库
+ ///
+ public string RecommendToWarehouseCode { get; set; }
+
+ ///
+ /// 推荐目标数量
+ ///
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
+
+ ///
+ /// 库移来源托标签
+ ///
+ public string TransferLibFromContainerCode { get; set; }
+
+ ///
+ /// 库移来源箱标签
+ ///
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
public void SetId(Guid id)
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobManager.cs
index cd421f475..6ece2c54a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/AssembleJobs/AssembleJobManager.cs
@@ -4,19 +4,24 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
+using Volo.Abp;
using Volo.Abp.Users;
using Volo.Abp.Validation;
using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Wms.Inventory.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Domain;
public class AssembleJobManager : SfsJobManagerBase, IAssembleJobManager
{
+ private readonly IBalanceAppService _balanceAppService;
+ private readonly IExpectOutAppService _expectOutAppService;
public AssembleJobManager(
- IAssembleJobRepository repository
- ) : base(repository)
+ IAssembleJobRepository repository, IBalanceAppService balanceAppService, IExpectOutAppService expectOutAppService) : base(repository)
{
+ _balanceAppService = balanceAppService;
+ _expectOutAppService = expectOutAppService;
}
///
@@ -30,53 +35,88 @@ public class AssembleJobManager : SfsJobManagerBase GetAsync(Expression> expression)
{
- var details = entity.Details;
- foreach (var detail in details)
- {
- if (detail.HandledFromLocationCode == null)
- {
- result.Errors.Add(new ValidationResult($"{detail.HandledFromLocationCode} 不能为空"));
- }
-
- }
+ return await Repository.FindAsync(expression).ConfigureAwait(false);
}
- public override async Task> GetWorkingListByPackingAsync(string packingCode)
- {
- return await Repository.GetListAsync(c => c.Details.Any(p => p.RecommendPackingCode == packingCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false);
+ #region 无用
+ public override Task> GetWorkingListByPackingAsync(string packingCode)
+ {
+ throw new NotImplementedException();
}
- public override async Task> GetWorkingListByContainerAsync(string containerCode)
+ public override Task> GetWorkingListByContainerAsync(string containerCode)
{
- return await Repository.GetListAsync(c => c.Details.Any(p => p.RecommendContainerCode == containerCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false);
-
+ throw new NotImplementedException();
}
-
- public async Task GetAsync(Expression> expression)
+
+ public override void CheckDetails(AssembleJob entity, AbpValidationResult result)
{
- return await Repository.FindAsync(expression).ConfigureAwait(false);
+ throw new NotImplementedException();
}
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJob.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJob.cs
index 38ff594ed..9acd01250 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJob.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJob.cs
@@ -8,9 +8,9 @@ using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
///
-/// 发料任务
+/// 涂装发料任务
///
-[Display(Name = "发料任务")]
+[Display(Name = "涂装发料任务")]
public class CoatingIssueJob : SfsJobAggregateRootBase
{
///
@@ -29,13 +29,7 @@ public class CoatingIssueJob : SfsJobAggregateRootBase
/// 要货单号
///
[IgnoreUpdate]
- public string MaterialRequestNumber { get; set; }
-
- ///
- /// 车间
- ///
- [IgnoreUpdate]
- public string Workshop { get; set; }
+ public string MaterialRequestNumber { get; set; }
///
/// 使用在途库
@@ -48,38 +42,6 @@ public class CoatingIssueJob : SfsJobAggregateRootBase
/// 任务明细
///
[IgnoreUpdate]
- public override List Details { get; set; } = new List();
-
- ///
- /// 设置任务明细的实际库位和实际数量
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public virtual async Task BuildDetail(Guid id, string handledLocationCode, string handledLocationErpCode,
- string handledWarehouseCode, decimal handledQty, string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate,
- string handledContainerCode, string handledLot, string handledPackingCode)
- {
- var detail = GetDetail(id);
- detail.HandledFromLocationCode = handledLocationCode;
- detail.HandledFromLocationErpCode = handledLocationErpCode;
- detail.HandledFromWarehouseCode = handledWarehouseCode;
- detail.HandledQty = handledQty;
- detail.HandledSupplierBatch = handledSupplierBatch;
- detail.HandledArriveDate = handledArriveDate;
- detail.HandledProduceDate = handledProduceDate;
- detail.HandledExpireDate = handledExpireDate;
- detail.HandledContainerCode = handledContainerCode;
- detail.HandledLot = handledLot;
- detail.HandledPackingCode = handledPackingCode;
- await Task.CompletedTask.ConfigureAwait(false);
- }
+ public override List Details { get; set; } = new List();
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetail.cs
index 4b2c9c832..63e971b43 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetail.cs
@@ -1,41 +1,81 @@
using System;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Domain;
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Domain;
-public class CoatingIssueJobDetail : SfsJobRecommendFromDetailEntityBase, IHasToLocation
+public class CoatingIssueJobDetail : SfsDetailEntityBase
{
+
+ #region 库存基础信息
+
///
- /// 请求库位
+ /// 物品代码
///
- public string RequestLocationCode { get; set; }
+ public string ItemCode { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ public string ItemName { get; set; }
+
+ ///
+ /// 物品描述1
+ ///
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
///
- /// 到库位
+ /// 库存状态
///
- public string ToLocationCode { get; set; }
+ public EnumInventoryStatus Status { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
/// 到库区
///
- public string ToLocationArea { get; set; }
+ public string RequestLocationArea { get; set; }
///
/// 到库位组
///
- public string ToLocationGroup { get; set; }
+ public string RequestLocationGroup { get; set; }
///
/// 到ERP库位
///
- public string ToLocationErpCode { get; set; }
+ public string RequestLocationErpCode { get; set; }
///
/// 到仓库
///
- public string ToWarehouseCode { get; set; }
+ public string RequestWarehouseCode { get; set; }
///
/// 在途库库位
@@ -48,62 +88,438 @@ public class CoatingIssueJobDetail : SfsJobRecommendFromDetailEntityBase, IHasTo
public string ProdLine { get; set; }
///
- /// 工作中心
+ /// 位置码
///
- public string WorkStation { get; set; }
+ public string PositionCode { get; set; }
///
- /// 过期时间
+ /// 推荐的类型
///
- public DateTime ExpiredTime { get; set; }
+ public EnumRecommendType RecommendType { get; set; }
///
- /// 工序
+ /// 需求数量
///
- public string Operation { get; set; }
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
///
- /// 配送方式
+ /// 推荐来源托标签
///
- public EnumDistributionType DistributionType { get; set; }
+ public string RecommendFromContainerCode { get; set; }
///
- /// 取整方式
+ /// 推荐来源箱标签
///
- public EnumTruncType TruncType { get; set; }
+ public string RecommendFromPackingCode { get; set; }
///
- /// 取整后数量
+ /// 推荐来源批次供应商批次
///
- public decimal RoundedQty { get; set; }
+ public string RecommendFromSupplierBatch { get; set; }
///
- /// 计划拆分规则
+ /// 推荐来源批次到货时间
///
- public EnumPlannedSplitRule PlannedSplitRule { get; set; }
+ public DateTime RecommendFromArriveDate { get; set; }
///
- /// 计划开始时间
+ /// 推荐来源批次生产时间
///
- public DateTime PlanBeginTime { get; set; }
+ public DateTime RecommendFromProduceDate { get; set; }
///
- /// 每次配送数量
+ /// 推荐来源批次过期时间
///
- public decimal DeliveryQty { get; set; }
+ public DateTime RecommendFromExpireDate { get; set; }
///
- /// 位置码
+ /// 推荐来源批次排序
///
- public string PositionCode { get; set; }
+ public string RecommendFromLot { get; set; }
///
- /// 推荐类型
+ /// 推荐来源库位
///
- public EnumRecommendType RecommendType { get; set; }
+ public string RecommendFromLocationCode { get; set; }
+
+ ///
+ /// 推荐来源库区
+ ///
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
+ ///
+ public string RecommendFromLocationErpCode { get; set; }
+
+ ///
+ /// 推荐来源仓库
+ ///
+ public string RecommendFromWarehouseCode { get; set; }
+
+ ///
+ /// 推荐来源数量
+ ///
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
+
+ ///
+ /// 推荐目标库位组
+ ///
+ public string RecommendToLocationGroup { get; set; }
+
+ ///
+ /// 推荐目标ERP库位
+ ///
+ public string RecommendToLocationErpCode { get; set; }
+
+ ///
+ /// 推荐目标仓库
+ ///
+ public string RecommendToWarehouseCode { get; set; }
+
+ ///
+ /// 推荐目标数量
+ ///
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
+
+ ///
+ /// 库移来源托标签
+ ///
+ public string TransferLibFromContainerCode { get; set; }
+
+ ///
+ /// 库移来源箱标签
+ ///
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
public void SetId(Guid id)
{
- Id = id;
+ this.Id = id;
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobManager.cs
index 2e3f2e681..a8c38adc9 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobManager.cs
@@ -4,20 +4,28 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.Domain.Repositories;
using Volo.Abp.Users;
using Volo.Abp.Validation;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Domain;
+using Win_in.Sfs.Wms.Inventory.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Domain;
public class CoatingIssueJobManager : SfsJobManagerBase, ICoatingIssueJobManager
{
+ private readonly IBalanceAppService _balanceAppService;
+ private readonly IExpectOutAppService _expectOutAppService;
+ private readonly ICoatingIssueJobRepository _repository;
public CoatingIssueJobManager(
- ICoatingIssueJobRepository repository
- ) : base(repository)
+ ICoatingIssueJobRepository repository, IBalanceAppService balanceAppService, IExpectOutAppService expectOutAppService) : base(repository)
{
+ _balanceAppService = balanceAppService;
+ _expectOutAppService = expectOutAppService;
+ _repository= repository;
}
///
@@ -30,75 +38,90 @@ public class CoatingIssueJobManager : SfsJobManagerBase CompleteAsync(CoatingIssueJob input, ICurrentUser user)
{
var entity = await Repository.FindAsync(input.Id).ConfigureAwait(false);
+
- foreach (var detail in input.Details)
+ var inputDetail = input.Details.First();
+ var detail = entity.Details.First();
+
+ var expectOutDtos = await _expectOutAppService.GetListByItemCodeAndStatusAndPackingCodeAsync(detail.ItemCode, detail.HandledFromLocationCode, detail.HandledFromPackingCode, detail.Status, detail.HandledFromLot).ConfigureAwait(false);
+ if (expectOutDtos.Any())
{
- //发料子任务 赋值实际转移
- await entity.BuildDetail(detail.Id,
- detail.HandledFromLocationCode,
- detail.HandledFromLocationErpCode,
- detail.HandledFromWarehouseCode,
- detail.HandledQty,
- detail.HandledSupplierBatch,
- detail.HandledArriveDate,
- detail.HandledProduceDate,
- detail.HandledExpireDate,
- detail.HandledContainerCode,
- detail.HandledLot,
- detail.HandledPackingCode).ConfigureAwait(false);
+ throw new UserFriendlyException($" 箱码:{detail.HandledFromPackingCode}," +
+ $" 物品代码:{detail.ItemCode}," +
+ $" 库位代码:{detail.HandledFromLocationCode}," +
+ $" 状态:{detail.Status}," +
+ $" 批次:{detail.HandledFromLot}" +
+ $" 的库存被占用【预计出】");
}
- return await base.CompleteAsync(entity, user).ConfigureAwait(false);
- }
-
- public override void CheckDetails(CoatingIssueJob entity, AbpValidationResult result)
- {
- var details = entity.Details;
- foreach (var detail in details)
+ //var balanceDto = await _balanceAppService.GetRealQtyByPackingCodeAndItemCodeAndLocationCodeAndStatusAsync(detail.HandledFromPackingCode, detail.ItemCode, detail.HandledFromLocationCode, detail.Status, detail.HandledFromLot).ConfigureAwait(false);
+ var balanceDto = await _balanceAppService.GetRealQtyByPackingCodeAndItemCodeAndLocationCodeAndStatusAsync(inputDetail.HandledFromPackingCode, inputDetail.ItemCode, inputDetail.HandledFromLocationCode, inputDetail.Status, inputDetail.HandledFromLot).ConfigureAwait(false);
+ if (balanceDto.Qty <= 0)
{
- if (detail.HandledFromLocationCode == null)
- {
- result.Errors.Add(new ValidationResult($"{detail.HandledFromLocationCode} 不能为空"));
- }
-
+ throw new UserFriendlyException($" 箱码:{detail.HandledFromPackingCode}," +
+ $" 物品代码:{detail.ItemCode}," +
+ $" 库位代码:{detail.HandledFromLocationCode}," +
+ $" 状态:{detail.Status}," +
+ $" 批次:{detail.HandledFromLot}" +
+ $" 的可用库存不大于0,现在为{balanceDto.Qty},请检查【库存数量】和【预计出】");
}
- }
- public override async Task> GetWorkingListByPackingAsync(string packingCode)
- {
- return await Repository.GetListAsync(c => c.Details.Any(p => p.RecommendPackingCode == packingCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false);
+ detail.HandledFromArriveDate = inputDetail.HandledFromArriveDate;
+ detail.HandledFromContainerCode = inputDetail.HandledFromContainerCode;
+ detail.HandledFromExpireDate = inputDetail.HandledFromExpireDate;
+ detail.HandledFromLocationArea = inputDetail.HandledFromLocationArea;
+ detail.HandledFromLocationCode = inputDetail.HandledFromLocationCode;
+ detail.HandledFromLocationErpCode = inputDetail.HandledFromLocationErpCode;
+ detail.HandledFromLocationGroup = inputDetail.HandledFromLocationGroup;
+ detail.HandledFromLot = inputDetail.HandledFromLot;
+ detail.HandledFromPackingCode = inputDetail.HandledFromPackingCode;
+ detail.HandledFromProduceDate = inputDetail.HandledFromProduceDate;
+ detail.HandledFromQty = inputDetail.HandledFromQty;
+ detail.HandledFromSupplierBatch = inputDetail.HandledFromSupplierBatch;
+ detail.HandledFromWarehouseCode = inputDetail.HandledFromWarehouseCode;
+
+ detail.HandledToArriveDate = inputDetail.HandledToArriveDate;
+ detail.HandledToContainerCode = inputDetail.HandledToContainerCode;
+ detail.HandledToExpireDate = inputDetail.HandledToExpireDate;
+ detail.HandledToLocationArea = inputDetail.HandledToLocationArea;
+ detail.HandledToLocationCode = inputDetail.HandledToLocationCode;
+ detail.HandledToLocationErpCode = inputDetail.HandledToLocationErpCode;
+ detail.HandledToLocationGroup = inputDetail.HandledToLocationGroup;
+ detail.HandledToLot = inputDetail.HandledToLot;
+ detail.HandledToPackingCode = inputDetail.HandledToPackingCode;
+ detail.HandledToProduceDate = inputDetail.HandledToProduceDate;
+ detail.HandledToQty = inputDetail.HandledToQty;
+ detail.HandledToSupplierBatch = inputDetail.HandledToSupplierBatch;
+ detail.HandledToWarehouseCode = inputDetail.HandledToWarehouseCode;
+
+ detail.HandledToPackingCode = string.Empty;
+ detail.HandledToLot = string.Empty;
+ detail.HandledToContainerCode = string.Empty;
+ return await base.CompleteAsync(entity, user).ConfigureAwait(false);
}
- public override async Task> GetWorkingListByContainerAsync(string containerCode)
+ public async Task GetAsync(Expression> expression)
{
- return await Repository.GetListAsync(c => c.Details.Any(p => p.RecommendContainerCode == containerCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false);
-
+ return await Repository.FindAsync(expression).ConfigureAwait(false);
}
- /////
- ///// 临时修改 解决补料无法拿到订阅错误
- /////
- /////
- /////
- //public virtual async Task> AddByEtoAsync(MaterialRequestHandledETO eventData)
- //{
- // var CoatingIssueJobs = await BuildCoatingIssueJobByMaterialRequestAsync(eventData);
-
- // await Repository.InsertManyAsync(CoatingIssueJobs);
+ #region 无用
- // var expectIns = await BuildExpectInAsync(CoatingIssueJobs);
- // await _expectInAppService.AddManyAndCalculationAvailableCapacityAsync(expectIns);
+ public override Task> GetWorkingListByPackingAsync(string packingCode)
+ {
+ throw new NotImplementedException();
+ }
- // return CoatingIssueJobs;
- //}
+ public override Task> GetWorkingListByContainerAsync(string containerCode)
+ {
+ throw new NotImplementedException();
+ }
- //public virtual async Task TestError()
- //{
- // throw new UserFriendlyException("我是测试的异常");
- //}
- public async Task GetAsync(Expression> expression)
+ public override void CheckDetails(CoatingIssueJob entity, AbpValidationResult result)
{
- return await Repository.FindAsync(expression).ConfigureAwait(false);
+ throw new NotImplementedException();
}
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IIssueJobRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IIssueJobRepository.cs
index f507ca852..aeeac0878 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IIssueJobRepository.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IIssueJobRepository.cs
@@ -1,6 +1,6 @@
namespace Win_in.Sfs.Wms.Store.Domain;
-public interface IInjectionJobRepository : ISfsJobRepositoryBase
+public interface IIssueJobRepository : ISfsJobRepositoryBase
{
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/IInjectionJobRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/IInjectionJobRepository.cs
index aeeac0878..f507ca852 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/IInjectionJobRepository.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/IInjectionJobRepository.cs
@@ -1,6 +1,6 @@
namespace Win_in.Sfs.Wms.Store.Domain;
-public interface IIssueJobRepository : ISfsJobRepositoryBase
+public interface IInjectionJobRepository : ISfsJobRepositoryBase
{
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJobManager.cs
index 8d953c3a6..8c7956654 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJobManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/InjectionJobs/InjectionJobManager.cs
@@ -49,7 +49,7 @@ public class InjectionJobManager : SfsJobManagerBase CompleteAsync(TransferLibJob input, ICurrentUser user)
{
TransferLibJob entity = await Repository.FindAsync(input.Id).ConfigureAwait(false);
+ entity.RequestNumber = input.RequestNumber;
+ entity.JobNumber = input.JobNumber;
+ entity.Type = input.Type;
+ entity.UseOnTheWayLocation = input.UseOnTheWayLocation;
+ entity.ConfirmTime = input.ConfirmTime;
+ entity.CreationTime = input.CreationTime;
+ entity.CreatorId = input.CreatorId;
+ entity.LastModificationTime = input.LastModificationTime;
+ entity.LastModifierId = input.LastModifierId;
+ entity.Remark = input.Remark;
+ entity.Worker = input.Worker;
+ entity.Number = input.Number;
+ entity.UpStreamJobNumber = input.UpStreamJobNumber;
+ entity.JobDescription = input.JobDescription;
+ entity.JobType = input.JobType;
+ entity.JobStatus = input.JobStatus;
+ entity.Priority = input.Priority;
+ entity.PriorityIncrement = input.PriorityIncrement;
+ entity.WorkGroupCode = input.WorkGroupCode;
+ entity.IsAutoComplete = input.IsAutoComplete;
+ entity.AcceptUserId = input.AcceptUserId;
+ entity.AcceptUserName = input.AcceptUserName;
+ entity.AcceptTime = input.AcceptTime;
+ entity.CompleteUserId = input.CompleteUserId;
+ entity.CompleteUserName = input.CompleteUserName;
+ entity.CompleteTime = input.CompleteTime;
+ entity.WarehouseCode = input.WarehouseCode;
+ entity.Confirmed = input.Confirmed;
+ entity.CallBusinessType = input.CallBusinessType;
+ entity.CallJobNumber = input.CallJobNumber;
+ entity.CallRequestNumber = input.CallRequestNumber;
+ entity.CallServerName = input.CallServerName;
+ foreach (var entityDetail in entity.Details)
+ {
+ var inputDetail = input.Details.FirstOrDefault(itm => itm.Id == entityDetail.Id);
+ if (inputDetail != null)
+ {
+ entityDetail.OnTheWayLocationCode = inputDetail.OnTheWayLocationCode;
+ entityDetail.Reason = inputDetail.Reason;
+ entityDetail.JobStatus = inputDetail.JobStatus;
+ //entityDetail.CreationTime = inputDetail.CreationTime;
+ //entityDetail.CreatorId = inputDetail.CreatorId;
+ entityDetail.LastModificationTime = inputDetail.LastModificationTime;
+ entityDetail.LastModifierId = inputDetail.LastModifierId;
+ //entityDetail.MasterID = inputDetail.MasterID;
+ entityDetail.Number = inputDetail.Number;
+ entityDetail.Remark = inputDetail.Remark;
+ entityDetail.ItemName = inputDetail.ItemName;
+ entityDetail.ItemDesc1 = inputDetail.ItemDesc1;
+ entityDetail.ItemDesc2 = inputDetail.ItemDesc2;
+ entityDetail.ItemCode = inputDetail.ItemCode;
+ entityDetail.Uom = inputDetail.Uom;
+ entityDetail.StdPackQty = inputDetail.StdPackQty;
+ entityDetail.RequestLocationErpCode = inputDetail.RequestLocationErpCode;
+ entityDetail.HandledToArriveDate = inputDetail.HandledToArriveDate;
+ entityDetail.HandledToProduceDate = inputDetail.HandledToProduceDate;
+ entityDetail.HandledToExpireDate = inputDetail.HandledToExpireDate;
+ entityDetail.RequestLocationArea = inputDetail.RequestLocationArea;
+ entityDetail.RequestLocationCode = inputDetail.RequestLocationCode;
+ entityDetail.RecommendType = inputDetail.RecommendType;
+ entityDetail.RequestLocationGroup = inputDetail.RequestLocationGroup;
+ entityDetail.RequestWarehouseCode = inputDetail.RequestWarehouseCode;
+ entityDetail.Status = inputDetail.Status;
+ entityDetail.CallBusinessType = inputDetail.CallBusinessType;
+ entityDetail.CallJobNumber = inputDetail.CallJobNumber;
+ entityDetail.CallRequestNumber = inputDetail.CallRequestNumber;
+ entityDetail.CallServerName = inputDetail.CallServerName;
+ entityDetail.RecommendFromArriveDate = inputDetail.RecommendFromArriveDate;
+ entityDetail.RecommendFromContainerCode = inputDetail.RecommendFromContainerCode;
+ entityDetail.RecommendFromExpireDate = inputDetail.RecommendFromExpireDate;
+ entityDetail.RecommendFromLocationArea = inputDetail.RecommendFromLocationArea;
+ entityDetail.RecommendFromLocationCode = inputDetail.RecommendFromLocationCode;
+ entityDetail.RecommendFromLocationErpCode = inputDetail.RecommendFromLocationErpCode;
+ entityDetail.RecommendFromLocationGroup = inputDetail.RecommendFromLocationGroup;
+ entityDetail.RecommendFromLot = inputDetail.RecommendFromLot;
+ entityDetail.RecommendFromPackingCode = inputDetail.RecommendFromPackingCode;
+ entityDetail.RecommendFromProduceDate = inputDetail.RecommendFromProduceDate;
+ entityDetail.RecommendFromQty = inputDetail.RecommendFromQty;
+ entityDetail.RecommendFromSupplierBatch = inputDetail.RecommendFromSupplierBatch;
+ entityDetail.RecommendFromWarehouseCode = inputDetail.RecommendFromWarehouseCode;
+ entityDetail.RecommendToArriveDate = inputDetail.RecommendToArriveDate;
+ entityDetail.RecommendToContainerCode = inputDetail.RecommendToContainerCode;
+ entityDetail.RecommendToExpireDate = inputDetail.RecommendToExpireDate;
+ entityDetail.RecommendToLocationArea = inputDetail.RecommendToLocationArea;
+ entityDetail.RecommendToLocationCode = inputDetail.RecommendToLocationCode;
+ entityDetail.RecommendToLocationErpCode = inputDetail.RecommendToLocationErpCode;
+ entityDetail.RecommendToLocationGroup = inputDetail.RecommendToLocationGroup;
+ entityDetail.RecommendToLot = inputDetail.RecommendToLot;
+ entityDetail.RecommendToPackingCode = inputDetail.RecommendToPackingCode;
+ entityDetail.RecommendToProduceDate = inputDetail.RecommendToProduceDate;
+ entityDetail.RecommendToQty = inputDetail.RecommendToQty;
+ entityDetail.RecommendToSupplierBatch = inputDetail.RecommendToSupplierBatch;
+ entityDetail.RecommendToWarehouseCode = inputDetail.RecommendToWarehouseCode;
+ entityDetail.HandledFromArriveDate = inputDetail.HandledFromArriveDate;
+ entityDetail.HandledFromContainerCode = inputDetail.HandledFromContainerCode;
+ entityDetail.HandledFromExpireDate = inputDetail.HandledFromExpireDate;
+ entityDetail.HandledFromLocationArea = inputDetail.HandledFromLocationArea;
+ entityDetail.HandledFromLocationCode = inputDetail.HandledFromLocationCode;
+ entityDetail.HandledFromLocationErpCode = inputDetail.HandledFromLocationErpCode;
+ entityDetail.HandledFromLocationGroup = inputDetail.HandledFromLocationGroup;
+ entityDetail.HandledFromLot = inputDetail.HandledFromLot;
+ entityDetail.HandledFromPackingCode = inputDetail.HandledFromPackingCode;
+ entityDetail.HandledFromProduceDate = inputDetail.HandledFromProduceDate;
+ entityDetail.HandledFromQty = inputDetail.HandledFromQty;
+ entityDetail.HandledFromSupplierBatch = inputDetail.HandledFromSupplierBatch;
+ entityDetail.HandledFromWarehouseCode = inputDetail.HandledFromWarehouseCode;
+ entityDetail.HandledToContainerCode = inputDetail.HandledToContainerCode;
+ entityDetail.HandledToLocationArea = inputDetail.HandledToLocationArea;
+ entityDetail.HandledToLocationCode = inputDetail.HandledToLocationCode;
+ entityDetail.HandledToLocationErpCode = inputDetail.HandledToLocationErpCode;
+ entityDetail.HandledToLocationGroup = inputDetail.HandledToLocationGroup;
+ entityDetail.HandledToLot = inputDetail.HandledToLot;
+ entityDetail.HandledToPackingCode = inputDetail.HandledToPackingCode;
+ entityDetail.HandledToQty = inputDetail.HandledToQty;
+ entityDetail.HandledToSupplierBatch = inputDetail.HandledToSupplierBatch;
+ entityDetail.HandledToWarehouseCode = inputDetail.HandledToWarehouseCode;
+ entityDetail.IsItemCodeFrom = inputDetail.IsItemCodeFrom;
+ entityDetail.IsItemCodeTo = inputDetail.IsItemCodeTo;
+ entityDetail.IsLocationAreaFrom = inputDetail.IsLocationAreaFrom;
+ entityDetail.IsLocationAreaTo = inputDetail.IsLocationAreaTo;
+ entityDetail.IsLocationCodeFrom = inputDetail.IsLocationCodeFrom;
+ entityDetail.IsLocationCodeTo = inputDetail.IsLocationCodeTo;
+ entityDetail.IsLocationErpCodeFrom = inputDetail.IsLocationErpCodeFrom;
+ entityDetail.IsLocationErpCodeTo = inputDetail.IsLocationErpCodeTo;
+ entityDetail.IsLocationGroupFrom = inputDetail.IsLocationGroupFrom;
+ entityDetail.IsLocationGroupTo = inputDetail.IsLocationGroupTo;
+ entityDetail.IsLotFrom = inputDetail.IsLotFrom;
+ entityDetail.IsLotTo = inputDetail.IsLotTo;
+ entityDetail.IsPackingCodeFrom = inputDetail.IsPackingCodeFrom;
+ entityDetail.IsPackingCodeTo = inputDetail.IsPackingCodeTo;
+ entityDetail.IsQtyFrom = inputDetail.IsQtyFrom;
+ entityDetail.IsQtyTo = inputDetail.IsQtyTo;
+ entityDetail.IsStatusFrom = inputDetail.IsStatusFrom;
+ entityDetail.IsStatusTo = inputDetail.IsStatusTo;
+ entityDetail.PositionCode = inputDetail.PositionCode;
+ entityDetail.ProdLine = inputDetail.ProdLine;
+ entityDetail.RequestQty = inputDetail.RequestQty;
+ }
+ }
return await base.CompleteAsync(entity, user).ConfigureAwait(false);
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNote.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNote.cs
index 6dd11ef37..69242626e 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNote.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNote.cs
@@ -17,12 +17,6 @@ public class AssembleNote : SfsStoreAggregateRootBase, IHasJ
[IgnoreUpdate]
public string JobNumber { get; set; }
- ///
- /// 车间
- ///
- [IgnoreUpdate]
- public string Workshop { get; set; }
-
///
/// 明细列表
///
@@ -73,5 +67,4 @@ public class AssembleNote : SfsStoreAggregateRootBase, IHasJ
}
}
-
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNoteDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNoteDetail.cs
index ee2f8a389..79c0d9b2b 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNoteDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/AssembleNotes/AssembleNoteDetail.cs
@@ -1,43 +1,519 @@
using System;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain;
-public class AssembleNoteDetail : SfsStoreRecommendFromDetailWithFromToEntityBase
+public class AssembleNoteDetail : SfsStoreDetailEntityBase
{
+ #region 库存基础信息
///
- /// 发料时间
+ /// 物品代码
///
- public DateTime IssueTime { get; set; }
+ public string ItemCode { get; set; }
///
- /// 过期时间
+ /// 物品名称
///
- public DateTime ExpiredTime { get; set; }
+ public string ItemName { get; set; }
///
- /// 生产线
+ /// 物品描述1
///
- public string ProdLine { get; set; }
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
- /// 工作中心
+ /// 到库区
///
- public string WorkStation { get; set; }
+ public string RequestLocationArea { get; set; }
///
- /// 在途库库位
+ /// 到库位组
+ ///
+ public string RequestLocationGroup { get; set; }
+
+ ///
+ /// 到ERP库位
+ ///
+ public string RequestLocationErpCode { get; set; }
+
+ ///
+ /// 到仓库
+ ///
+ public string RequestWarehouseCode { get; set; }
+
+ ///
+ /// 在途库库位
///
public string OnTheWayLocationCode { get; set; }
///
- /// 位置码
+ /// 生产线
+ ///
+ public string ProdLine { get; set; }
+
+ ///
+ /// 位置码
///
public string PositionCode { get; set; }
///
- /// 推荐类型
+ /// 推荐的类型
///
public EnumRecommendType RecommendType { get; set; }
+
+ ///
+ /// 需求数量
+ ///
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
+
+ ///
+ /// 推荐来源托标签
+ ///
+ public string RecommendFromContainerCode { get; set; }
+
+ ///
+ /// 推荐来源箱标签
+ ///
+ public string RecommendFromPackingCode { get; set; }
+
+ ///
+ /// 推荐来源批次供应商批次
+ ///
+ public string RecommendFromSupplierBatch { get; set; }
+
+ ///
+ /// 推荐来源批次到货时间
+ ///
+ public DateTime RecommendFromArriveDate { get; set; }
+
+ ///
+ /// 推荐来源批次生产时间
+ ///
+ public DateTime RecommendFromProduceDate { get; set; }
+
+ ///
+ /// 推荐来源批次过期时间
+ ///
+ public DateTime RecommendFromExpireDate { get; set; }
+
+ ///
+ /// 推荐来源批次排序
+ ///
+ public string RecommendFromLot { get; set; }
+
+ ///
+ /// 推荐来源库位
+ ///
+ public string RecommendFromLocationCode { get; set; }
+
+ ///
+ /// 推荐来源库区
+ ///
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
+ ///
+ public string RecommendFromLocationErpCode { get; set; }
+
+ ///
+ /// 推荐来源仓库
+ ///
+ public string RecommendFromWarehouseCode { get; set; }
+
+ ///
+ /// 推荐来源数量
+ ///
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
+
+ ///
+ /// 推荐目标库位组
+ ///
+ public string RecommendToLocationGroup { get; set; }
+
+ ///
+ /// 推荐目标ERP库位
+ ///
+ public string RecommendToLocationErpCode { get; set; }
+
+ ///
+ /// 推荐目标仓库
+ ///
+ public string RecommendToWarehouseCode { get; set; }
+
+ ///
+ /// 推荐目标数量
+ ///
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
+
+ ///
+ /// 库移来源托标签
+ ///
+ public string TransferLibFromContainerCode { get; set; }
+
+ ///
+ /// 库移来源箱标签
+ ///
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs
index 566be6629..360c84095 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs
@@ -18,12 +18,6 @@ public class CoatingIssueNote : SfsStoreAggregateRootBase
- /// 车间
- ///
- [IgnoreUpdate]
- public string Workshop { get; set; }
-
///
/// 明细列表
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetail.cs
index 93ba9e706..08f96fca6 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDetail.cs
@@ -1,44 +1,519 @@
using System;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Domain;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Domain;
-public class CoatingIssueNoteDetail : SfsStoreRecommendFromDetailWithFromToEntityBase
+public class CoatingIssueNoteDetail : SfsStoreDetailEntityBase
{
+ #region 库存基础信息
///
- /// 发料时间
+ /// 物品代码
///
- public DateTime IssueTime { get; set; }
+ public string ItemCode { get; set; }
///
- /// 过期时间
+ /// 物品名称
///
- public DateTime ExpiredTime { get; set; }
+ public string ItemName { get; set; }
///
- /// 生产线
+ /// 物品描述1
///
- public string ProdLine { get; set; }
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 标包数量
+ ///
+ [Display(Name = "标包数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal StdPackQty { get; set; }
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ public string Uom { get; set; }
+
+ #endregion
+
+ #region 请求信息
+
+ ///
+ /// 请求库位
+ ///
+ public string RequestLocationCode { get; set; }
///
- /// 工作中心
+ /// 到库区
///
- public string WorkStation { get; set; }
+ public string RequestLocationArea { get; set; }
///
- /// 在途库库位
+ /// 到库位组
+ ///
+ public string RequestLocationGroup { get; set; }
+
+ ///
+ /// 到ERP库位
+ ///
+ public string RequestLocationErpCode { get; set; }
+
+ ///
+ /// 到仓库
+ ///
+ public string RequestWarehouseCode { get; set; }
+
+ ///
+ /// 在途库库位
///
public string OnTheWayLocationCode { get; set; }
///
- /// 位置码
+ /// 生产线
+ ///
+ public string ProdLine { get; set; }
+
+ ///
+ /// 位置码
///
public string PositionCode { get; set; }
///
- /// 推荐类型
+ /// 推荐的类型
///
public EnumRecommendType RecommendType { get; set; }
+
+ ///
+ /// 需求数量
+ ///
+ public decimal RequestQty { get; set; }
+
+ #endregion
+
+ #region 推荐来源
+
+ ///
+ /// 推荐来源托标签
+ ///
+ public string RecommendFromContainerCode { get; set; }
+
+ ///
+ /// 推荐来源箱标签
+ ///
+ public string RecommendFromPackingCode { get; set; }
+
+ ///
+ /// 推荐来源批次供应商批次
+ ///
+ public string RecommendFromSupplierBatch { get; set; }
+
+ ///
+ /// 推荐来源批次到货时间
+ ///
+ public DateTime RecommendFromArriveDate { get; set; }
+
+ ///
+ /// 推荐来源批次生产时间
+ ///
+ public DateTime RecommendFromProduceDate { get; set; }
+
+ ///
+ /// 推荐来源批次过期时间
+ ///
+ public DateTime RecommendFromExpireDate { get; set; }
+
+ ///
+ /// 推荐来源批次排序
+ ///
+ public string RecommendFromLot { get; set; }
+
+ ///
+ /// 推荐来源库位
+ ///
+ public string RecommendFromLocationCode { get; set; }
+
+ ///
+ /// 推荐来源库区
+ ///
+ public string RecommendFromLocationArea { get; set; }
+
+ ///
+ /// 推荐来源库位组
+ ///
+ public string RecommendFromLocationGroup { get; set; }
+
+ ///
+ /// 推荐来源ERP库位
+ ///
+ public string RecommendFromLocationErpCode { get; set; }
+
+ ///
+ /// 推荐来源仓库
+ ///
+ public string RecommendFromWarehouseCode { get; set; }
+
+ ///
+ /// 推荐来源数量
+ ///
+ public decimal RecommendFromQty { get; set; }
+
+ #endregion
+
+ #region 推荐目标
+
+ ///
+ /// 推荐目标托标签
+ ///
+ public string RecommendToContainerCode { get; set; }
+
+ ///
+ /// 推荐目标箱标签
+ ///
+ public string RecommendToPackingCode { get; set; }
+
+ ///
+ /// 推荐目标批次供应商批次
+ ///
+ public string RecommendToSupplierBatch { get; set; }
+
+ ///
+ /// 推荐目标批次到货时间
+ ///
+ public DateTime RecommendToArriveDate { get; set; }
+
+ ///
+ /// 推荐目标批次生产时间
+ ///
+ public DateTime RecommendToProduceDate { get; set; }
+
+ ///
+ /// 推荐目标批次过期时间
+ ///
+ public DateTime RecommendToExpireDate { get; set; }
+
+ ///
+ /// 推荐目标批次排序
+ ///
+ public string RecommendToLot { get; set; }
+
+ ///
+ /// 推荐目标库位
+ ///
+ public string RecommendToLocationCode { get; set; }
+
+ ///
+ /// 推荐目标库区
+ ///
+ public string RecommendToLocationArea { get; set; }
+
+ ///
+ /// 推荐目标库位组
+ ///
+ public string RecommendToLocationGroup { get; set; }
+
+ ///
+ /// 推荐目标ERP库位
+ ///
+ public string RecommendToLocationErpCode { get; set; }
+
+ ///
+ /// 推荐目标仓库
+ ///
+ public string RecommendToWarehouseCode { get; set; }
+
+ ///
+ /// 推荐目标数量
+ ///
+ public decimal RecommendToQty { get; set; }
+
+ #endregion
+
+ #region 库移来源
+
+ ///
+ /// 库移来源托标签
+ ///
+ public string TransferLibFromContainerCode { get; set; }
+
+ ///
+ /// 库移来源箱标签
+ ///
+ public string TransferLibFromPackingCode { get; set; }
+
+ ///
+ /// 库移来源批次供应商批次
+ ///
+ public string TransferLibFromSupplierBatch { get; set; }
+
+ ///
+ /// 库移来源批次到货时间
+ ///
+ public DateTime TransferLibFromArriveDate { get; set; }
+
+ ///
+ /// 库移来源批次生产时间
+ ///
+ public DateTime TransferLibFromProduceDate { get; set; }
+
+ ///
+ /// 库移来源批次过期时间
+ ///
+ public DateTime TransferLibFromExpireDate { get; set; }
+
+ ///
+ /// 库移来源批次排序
+ ///
+ public string TransferLibFromLot { get; set; }
+
+ ///
+ /// 库移来源库位
+ ///
+ public string TransferLibFromLocationCode { get; set; }
+
+ ///
+ /// 库移来源库区
+ ///
+ public string TransferLibFromLocationArea { get; set; }
+
+ ///
+ /// 库移来源库位组
+ ///
+ public string TransferLibFromLocationGroup { get; set; }
+
+ ///
+ /// 库移来源ERP库位
+ ///
+ public string TransferLibFromLocationErpCode { get; set; }
+
+ ///
+ /// 库移来源仓库
+ ///
+ public string TransferLibFromWarehouseCode { get; set; }
+
+ ///
+ /// 库移来源数量
+ ///
+ public decimal TransferLibFromQty { get; set; }
+
+ #endregion
+
+ #region 库移目标
+
+ ///
+ /// 库移目标托标签
+ ///
+ public string TransferLibToContainerCode { get; set; }
+
+ ///
+ /// 库移目标箱标签
+ ///
+ public string TransferLibToPackingCode { get; set; }
+
+ ///
+ /// 库移目标批次供应商批次
+ ///
+ public string TransferLibToSupplierBatch { get; set; }
+
+ ///
+ /// 库移目标批次到货时间
+ ///
+ public DateTime TransferLibToArriveDate { get; set; }
+
+ ///
+ /// 库移目标批次生产时间
+ ///
+ public DateTime TransferLibToProduceDate { get; set; }
+
+ ///
+ /// 库移目标批次过期时间
+ ///
+ public DateTime TransferLibToExpireDate { get; set; }
+
+ ///
+ /// 库移目标批次排序
+ ///
+ public string TransferLibToLot { get; set; }
+
+ ///
+ /// 库移目标库位
+ ///
+ public string TransferLibToLocationCode { get; set; }
+
+ ///
+ /// 库移目标库区
+ ///
+ public string TransferLibToLocationArea { get; set; }
+
+ ///
+ /// 库移目标库位组
+ ///
+ public string TransferLibToLocationGroup { get; set; }
+
+ ///
+ /// 库移目标ERP库位
+ ///
+ public string TransferLibToLocationErpCode { get; set; }
+
+ ///
+ /// 库移目标仓库
+ ///
+ public string TransferLibToWarehouseCode { get; set; }
+
+ ///
+ /// 库移目标数量
+ ///
+ public decimal TransferLibToQty { get; set; }
+
+ #endregion
+
+ #region 实际来源
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledFromContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledFromPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledFromSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledFromArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledFromProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledFromExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledFromLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledFromLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledFromLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledFromLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledFromLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledFromWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledFromQty { get; set; }
+
+ #endregion
+
+ #region 实际目标
+
+ ///
+ /// 实际目标托标签
+ ///
+ public string HandledToContainerCode { get; set; }
+
+ ///
+ /// 实际箱标签
+ ///
+ public string HandledToPackingCode { get; set; }
+
+ ///
+ /// 实际批次供应商批次
+ ///
+ public string HandledToSupplierBatch { get; set; }
+
+ ///
+ /// 实际批次到货时间
+ ///
+ public DateTime HandledToArriveDate { get; set; }
+
+ ///
+ /// 实际批次生产时间
+ ///
+ public DateTime HandledToProduceDate { get; set; }
+
+ ///
+ /// 实际批次过期时间
+ ///
+ public DateTime HandledToExpireDate { get; set; }
+
+ ///
+ /// 实际批次排序
+ ///
+ public string HandledToLot { get; set; }
+
+ ///
+ /// 实际库位
+ ///
+ public string HandledToLocationCode { get; set; }
+
+ ///
+ /// 实际库区
+ ///
+ public string HandledToLocationArea { get; set; }
+
+ ///
+ /// 实际库位组
+ ///
+ public string HandledToLocationGroup { get; set; }
+
+ ///
+ /// 实际ERP库位
+ ///
+ public string HandledToLocationErpCode { get; set; }
+
+ ///
+ /// 实际仓库
+ ///
+ public string HandledToWarehouseCode { get; set; }
+
+ ///
+ /// 实际数量
+ ///
+ public decimal HandledToQty { get; set; }
+
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequest.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequests.cs
similarity index 72%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequest.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequests.cs
index 79b339e68..fc73fe2a1 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequest.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequests.cs
@@ -7,7 +7,7 @@ namespace Win_in.Sfs.Wms.Store.Domain;
///
/// 装配叫料申请
///
-public class AssembleRequest : SfsStoreRequestAggregateRootBase
+public class AssembleIssueRequests : SfsStoreRequestAggregateRootBase
{
///
/// 叫料类型
@@ -25,5 +25,5 @@ public class AssembleRequest : SfsStoreRequestAggregateRootBase
[IgnoreUpdate]
- public override List Details { get; set; } = new List();
+ public override List Details { get; set; } = new List();
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequestDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsDetail.cs
similarity index 96%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequestDetail.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsDetail.cs
index e6524a217..6322c1180 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequestDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsDetail.cs
@@ -9,7 +9,7 @@ namespace Win_in.Sfs.Wms.Store.Domain;
///
/// 装配叫料申请明细
///
-public class AssembleRequestDetail : SfsStoreDetailWithQtyEntityBase, IHasToLocation
+public class AssembleIssueRequestsDetail : SfsStoreDetailWithQtyEntityBase, IHasToLocation
{
#region 目标库位信息
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsManager.cs
similarity index 69%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequestManager.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsManager.cs
index 7d9d76b1f..978ab2d1e 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/AssembleRequestManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsManager.cs
@@ -9,15 +9,15 @@ using static Win_in.Sfs.Wms.Store.Domain.Shared.StoreSettings;
namespace Win_in.Sfs.Wms.Store.Domain;
-public class AssembleRequestManager
- : SfsStoreRequestManagerBase
- , IAssembleRequestManager
+public class AssembleIssueRequestsManager
+ : SfsStoreRequestManagerBase
+ , IAssembleIssueRequestsManager
{
- private readonly IAssembleRequestRepository _repository;
+ private readonly IAssembleIssueRequestsRepository _repository;
- public AssembleRequestManager(
- IAssembleRequestRepository repository
+ public AssembleIssueRequestsManager(
+ IAssembleIssueRequestsRepository repository
) : base(repository)
{
@@ -34,14 +34,14 @@ public class AssembleRequestManager
///
///
///
- public virtual async Task CreateBynNumberAsync(AssembleRequest entity)
+ public virtual async Task CreateByNumberAsync(AssembleIssueRequests entity)
{
- var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(nameof(AssembleRequest), entity.ActiveDate).ConfigureAwait(false) : entity.Number;
+ var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(nameof(AssembleIssueRequests), entity.ActiveDate).ConfigureAwait(false) : entity.Number;
entity.SetIdAndNumberWithDetails(GuidGenerator, number);
entity.Submit();
entity.Agree();
entity.RequestStatus = EnumRequestStatus.Partial;
- await LocalEventBus.PublishAsync(new SfsHandledEntityEventData(entity), false)
+ await LocalEventBus.PublishAsync(new SfsHandledEntityEventData(entity), false)
.ConfigureAwait(false);
await _repository.InsertAsync(entity).ConfigureAwait(false);
return entity;
@@ -63,7 +63,7 @@ public class AssembleRequestManager
///
/// 执行导入
///
- public virtual async Task ImportDataAsync(List mergeEntities, List deleteEntities = null)
+ public virtual async Task ImportDataAsync(List mergeEntities, List deleteEntities = null)
{
if (deleteEntities != null && deleteEntities.Count > 0)
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsManager.cs
new file mode 100644
index 000000000..c834d5dab
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsManager.cs
@@ -0,0 +1,14 @@
+using System.Threading.Tasks;
+
+namespace Win_in.Sfs.Wms.Store.Domain;
+
+using Win_in.Sfs.Shared.Domain;
+
+public interface IAssembleIssueRequestsManager : ISfsStoreRequestManager,
+ IBulkImportService
+{
+ Task CompleteAsync(string number);
+
+ Task CreateByNumberAsync(AssembleIssueRequests entity);
+
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/IAssembleRequestRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsRepository.cs
similarity index 52%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/IAssembleRequestRepository.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsRepository.cs
index a661ff0f8..0c423ee56 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/IAssembleRequestRepository.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleIssueRequests/IAssembleIssueRequestsRepository.cs
@@ -2,8 +2,8 @@ using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Domain;
-public interface IAssembleRequestRepository : ISfsStoreRepositoryBase,
- ISfsBulkRepositoryBase
+public interface IAssembleIssueRequestsRepository : ISfsStoreRepositoryBase,
+ ISfsBulkRepositoryBase
{
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/IAssembleRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/IAssembleRequestManager.cs
deleted file mode 100644
index ce48dbfd9..000000000
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/AssembleRequests/IAssembleRequestManager.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using System.Threading.Tasks;
-
-namespace Win_in.Sfs.Wms.Store.Domain;
-
-using Win_in.Sfs.Shared.Domain;
-
-public interface IAssembleRequestManager : ISfsStoreRequestManager,
- IBulkImportService
-{
- Task CompleteAsync(string number);
-
- Task CreateBynNumberAsync(AssembleRequest entity);
-}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestManager.cs
index cde7e5cb9..f74b0509c 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/CoatingMaterialRequestManager.cs
@@ -32,7 +32,7 @@ public class CoatingMaterialRequestManager
///
///
///
- public virtual async Task CreateBynNumberAsync(CoatingMaterialRequest entity)
+ public virtual async Task CreateByNumberAsync(CoatingMaterialRequest entity)
{
var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(nameof(CoatingMaterialRequest), entity.ActiveDate).ConfigureAwait(false) : entity.Number;
entity.SetIdAndNumberWithDetails(GuidGenerator, number);
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/ICoatingMaterialRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/ICoatingMaterialRequestManager.cs
index 6e85da61a..bfac8b9ef 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/ICoatingMaterialRequestManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/CoatingMaterialRequests/ICoatingMaterialRequestManager.cs
@@ -10,5 +10,5 @@ public interface ICoatingMaterialRequestManager : ISfsStoreRequestManager CreateBynNumberAsync(CoatingMaterialRequest entity);
+ Task CreateByNumberAsync(CoatingMaterialRequest entity);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/IInjectionRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/IInjectionRequestManager.cs
similarity index 100%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/IInjectionRequestManager.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/IInjectionRequestManager.cs
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/IInjectionRequestRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/IInjectionRequestRepository.cs
similarity index 100%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/IInjectionRequestRepository.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/IInjectionRequestRepository.cs
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequest.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequest.cs
similarity index 100%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequest.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequest.cs
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequestDetail.cs
similarity index 100%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestDetail.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequestDetail.cs
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequestManager.cs
similarity index 100%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestManager.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionIssueRequests/InjectionRequestManager.cs
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestManager.cs
index 1586bfcf3..39543242c 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestManager.cs
@@ -14,15 +14,15 @@ public class ThirdLocationRequestManager
, IThirdLocationRequestManager
{
private readonly IThirdLocationRequestRepository _repository;
- private readonly IIssueJobRepository _issueJobRepository;
+
public ThirdLocationRequestManager(
IThirdLocationRequestRepository repository
- , IIssueJobRepository issueJobRepository
+
) : base(repository)
{
_repository = repository;
- _issueJobRepository = issueJobRepository;
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ChassisOperationSequence/ChassisOperationSequenceDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ChassisOperationSequence/ChassisOperationSequenceDbContextModelCreatingExtensions.cs
new file mode 100644
index 000000000..1540e8f97
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ChassisOperationSequence/ChassisOperationSequenceDbContextModelCreatingExtensions.cs
@@ -0,0 +1,31 @@
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore.Modeling;
+using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Wms.Store.Domain;
+using Win_in.Sfs.Wms.Store.Equipments;
+
+namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
+
+public static class ChassisOperationSequenceDbContextModelCreatingExtensions
+{
+ public static void ConfigureChassisOperationSequence(this ModelBuilder builder, StoreModelBuilderConfigurationOptions options)
+ {
+ builder.Entity(b =>
+ {
+ //Configure table & schema name
+ b.ToTable(options.TablePrefix + nameof(ChassisOperationSequence), options.Schema);
+ //Configure ABP properties
+ b.ConfigureByConvention();
+ //Configure Sfs base properties
+ b.ConfigureSfsStoreBase();
+
+ b.Property(q => q.SortNumber).IsRequired();
+ b.Property(q => q.ChassisOperationSequenceNumber).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength).IsRequired();
+ b.Property(q => q.Number).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength).IsRequired();
+
+ b.HasIndex(q => q.ChassisOperationSequenceNumber).IsUnique();
+ b.HasIndex(q => q.SortNumber).IsUnique();
+ b.HasIndex(q => q.Number).IsUnique();
+ });
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ChassisOperationSequence/ChassisOperationSequenceEfCoreRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ChassisOperationSequence/ChassisOperationSequenceEfCoreRepository.cs
new file mode 100644
index 000000000..cccc83d95
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ChassisOperationSequence/ChassisOperationSequenceEfCoreRepository.cs
@@ -0,0 +1,18 @@
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+using Win_in.Sfs.Shared.Domain;
+using Win_in.Sfs.Wms.Store.Domain;
+using Win_in.Sfs.Wms.Store.Equipments;
+
+namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
+
+public class ChassisOperationSequenceEfCoreRepository : SfsStoreEfCoreRepositoryBase, IChassisOperationSequenceRepository, ISfsBulkRepositoryBase
+{
+ public ChassisOperationSequenceEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider)
+ {
+ }
+
+
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs
index 9cbe03d22..9ccc99663 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs
@@ -22,7 +22,7 @@ public interface IStoreDbContext : IEfCoreDbContext
public DbSet ProductReceiptRequests { get; }
public DbSet MaterialRequests { get; }
public DbSet InjectionRequests { get; }
- public DbSet AssembleRequests { get; }
+ public DbSet AssembleIssueRequests { get; }
public DbSet ThirdLocationRequests { get; }
public DbSet ContainerRequests { get; }
public DbSet DeliverRequests { get; }
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/AssembleJobs/AssembleJobDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/AssembleJobs/AssembleJobDbContextModelCreatingExtensions.cs
index 3945e66f1..0a72cedd1 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/AssembleJobs/AssembleJobDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/AssembleJobs/AssembleJobDbContextModelCreatingExtensions.cs
@@ -23,8 +23,9 @@ public static class AssembleJobDbContextModelCreatingExtensions
//Properties
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.AssembleRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.Workshop).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.JobType).HasConversion();
+ b.Property(q => q.JobStatus).HasConversion();
//Relations
b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired();
//Indexes
@@ -40,25 +41,17 @@ public static class AssembleJobDbContextModelCreatingExtensions
//Configure Sfs base properties
b.ConfigureSfsBase();
//Configure Job base properties
- b.ConfigureJobRecommendFromDetail();
+ //b.ConfigureJobRecommendFromDetail();
//Properties
- b.Property(q => q.ExpiredTime).IsRequired();
- b.Property(q => q.ToLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ToLocationErpCode).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ToWarehouseCode).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ToLocationArea).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ToLocationGroup).HasMaxLength(SfsPropertyConst.CodeLength);
+
b.Property(q => q.RequestLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.Operation).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.DistributionType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
- b.Property(q => q.TruncType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
- b.Property(q => q.PlannedSplitRule).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(false);
b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.CodeLength).HasConversion();
-
+ b.Property(q => q.Status).IsRequired().HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
//Relations
//None
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs
index 492703d20..f9abf7d85 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs
@@ -24,8 +24,9 @@ public static class CoatingIssueJobDbContextModelCreatingExtensions
//Properties
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.MaterialRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.Workshop).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.JobType).HasConversion();
+ b.Property(q => q.JobStatus).HasConversion();
//Relations
b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired();
//Indexes
@@ -41,25 +42,17 @@ public static class CoatingIssueJobDbContextModelCreatingExtensions
//Configure Sfs base properties
b.ConfigureSfsBase();
//Configure Job base properties
- b.ConfigureJobRecommendFromDetail();
+ //b.ConfigureJobRecommendFromDetail();
//Properties
- b.Property(q => q.ExpiredTime).IsRequired();
- b.Property(q => q.ToLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ToLocationErpCode).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ToWarehouseCode).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ToLocationArea).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ToLocationGroup).HasMaxLength(SfsPropertyConst.CodeLength);
+
b.Property(q => q.RequestLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.Operation).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.DistributionType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
- b.Property(q => q.TruncType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
- b.Property(q => q.PlannedSplitRule).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
+ b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(false);
b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.CodeLength).HasConversion();
-
+ b.Property(q => q.Status).IsRequired().HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
//Relations
//None
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.Designer.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.Designer.cs
index b1c273a9c..cce4d7739 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.Designer.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.Designer.cs
@@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
- b.Property("AssembleRequestNumber")
+ b.Property("AssembleIssueRequestsNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -928,10 +928,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number")
.IsUnique();
- b.ToTable("Store_AssembleRequest", (string)null);
+ b.ToTable("Store_AssembleIssueRequests", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -1075,7 +1075,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique();
- b.ToTable("Store_AssembleRequestDetail", (string)null);
+ b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
});
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@@ -26388,9 +26388,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired();
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
- b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null)
+ b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details")
.HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade)
@@ -27199,7 +27199,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details");
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Navigation("Details");
});
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.cs
index c96d21b37..c451fd5f6 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403054940_Update_InjectionRequest.cs
@@ -47,7 +47,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
Id = table.Column(type: "uniqueidentifier", nullable: false),
RequestType = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
ProdLine = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
- AssembleRequestNumber = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
+ AssembleIssueRequestsNumber = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
Workshop = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
UseOnTheWayLocation = table.Column(type: "bit", nullable: false),
ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true),
@@ -111,7 +111,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
});
migrationBuilder.CreateTable(
- name: "Store_AssembleRequest",
+ name: "Store_AssembleIssueRequests",
columns: table => new
{
Id = table.Column(type: "uniqueidentifier", nullable: false),
@@ -138,7 +138,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Store_AssembleRequest", x => x.Id);
+ table.PrimaryKey("PK_Store_AssembleIssueRequests", x => x.Id);
});
migrationBuilder.CreateTable(
@@ -331,7 +331,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
});
migrationBuilder.CreateTable(
- name: "Store_AssembleRequestDetail",
+ name: "Store_AssembleIssueRequestsDetail",
columns: table => new
{
Id = table.Column(type: "uniqueidentifier", nullable: false),
@@ -367,11 +367,11 @@ namespace Win_in.Sfs.Wms.Store.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Store_AssembleRequestDetail", x => x.Id);
+ table.PrimaryKey("PK_Store_AssembleIssueRequestsDetail", x => x.Id);
table.ForeignKey(
- name: "FK_Store_AssembleRequestDetail_Store_AssembleRequest_MasterID",
+ name: "FK_Store_AssembleIssueRequestsDetail_Store_AssembleIssueRequests_MasterID",
column: x => x.MasterID,
- principalTable: "Store_AssembleRequest",
+ principalTable: "Store_AssembleIssueRequests",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
@@ -466,24 +466,24 @@ namespace Win_in.Sfs.Wms.Store.Migrations
filter: "[FromPackingCode] IS NOT NULL");
migrationBuilder.CreateIndex(
- name: "IX_Store_AssembleRequest_Number",
- table: "Store_AssembleRequest",
+ name: "IX_Store_AssembleIssueRequests_Number",
+ table: "Store_AssembleIssueRequests",
column: "Number",
unique: true);
migrationBuilder.CreateIndex(
- name: "IX_Store_AssembleRequestDetail_ItemCode",
- table: "Store_AssembleRequestDetail",
+ name: "IX_Store_AssembleIssueRequestsDetail_ItemCode",
+ table: "Store_AssembleIssueRequestsDetail",
column: "ItemCode");
migrationBuilder.CreateIndex(
- name: "IX_Store_AssembleRequestDetail_MasterID",
- table: "Store_AssembleRequestDetail",
+ name: "IX_Store_AssembleIssueRequestsDetail_MasterID",
+ table: "Store_AssembleIssueRequestsDetail",
column: "MasterID");
migrationBuilder.CreateIndex(
- name: "IX_Store_AssembleRequestDetail_Number_ItemCode_ToLocationCode",
- table: "Store_AssembleRequestDetail",
+ name: "IX_Store_AssembleIssueRequestsDetail_Number_ItemCode_ToLocationCode",
+ table: "Store_AssembleIssueRequestsDetail",
columns: new[] { "Number", "ItemCode", "ToLocationCode" },
unique: true);
@@ -515,7 +515,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
name: "Store_AssembleNoteDetail");
migrationBuilder.DropTable(
- name: "Store_AssembleRequestDetail");
+ name: "Store_AssembleIssueRequestsDetail");
migrationBuilder.DropTable(
name: "Store_MesNoteDetail");
@@ -527,7 +527,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
name: "Store_AssembleNote");
migrationBuilder.DropTable(
- name: "Store_AssembleRequest");
+ name: "Store_AssembleIssueRequests");
migrationBuilder.DropTable(
name: "Store_MesNote");
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.Designer.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.Designer.cs
index fc5b5ad44..5d5d5ae5a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.Designer.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.Designer.cs
@@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
- b.Property("AssembleRequestNumber")
+ b.Property("AssembleIssueRequestsNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -928,10 +928,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number")
.IsUnique();
- b.ToTable("Store_AssembleRequest", (string)null);
+ b.ToTable("Store_AssembleIssueRequests", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -1075,7 +1075,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique();
- b.ToTable("Store_AssembleRequestDetail", (string)null);
+ b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
});
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@@ -26128,9 +26128,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired();
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
- b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null)
+ b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details")
.HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade)
@@ -26930,7 +26930,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details");
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Navigation("Details");
});
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.cs
index d075f82dc..a38fff040 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240403071320_transferLib_3temp.cs
@@ -43,7 +43,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
Id = table.Column(type: "uniqueidentifier", nullable: false),
RequestType = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
ProdLine = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
- AssembleRequestNumber = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
+ AssembleIssueRequestsNumber = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
Workshop = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true),
UseOnTheWayLocation = table.Column(type: "bit", nullable: false),
ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true),
@@ -107,7 +107,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
});
migrationBuilder.CreateTable(
- name: "Store_AssembleRequest",
+ name: "Store_AssembleIssueRequests",
columns: table => new
{
Id = table.Column(type: "uniqueidentifier", nullable: false),
@@ -134,7 +134,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Store_AssembleRequest", x => x.Id);
+ table.PrimaryKey("PK_Store_AssembleIssueRequests", x => x.Id);
});
migrationBuilder.CreateTable(
@@ -302,7 +302,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
});
migrationBuilder.CreateTable(
- name: "Store_AssembleRequestDetail",
+ name: "Store_AssembleIssueRequestsDetail",
columns: table => new
{
Id = table.Column(type: "uniqueidentifier", nullable: false),
@@ -338,11 +338,11 @@ namespace Win_in.Sfs.Wms.Store.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Store_AssembleRequestDetail", x => x.Id);
+ table.PrimaryKey("PK_Store_AssembleIssueRequestsDetail", x => x.Id);
table.ForeignKey(
- name: "FK_Store_AssembleRequestDetail_Store_AssembleRequest_MasterID",
+ name: "FK_Store_AssembleIssueRequestsDetail_Store_AssembleIssueRequests_MasterID",
column: x => x.MasterID,
- principalTable: "Store_AssembleRequest",
+ principalTable: "Store_AssembleIssueRequests",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
@@ -382,24 +382,24 @@ namespace Win_in.Sfs.Wms.Store.Migrations
filter: "[FromPackingCode] IS NOT NULL");
migrationBuilder.CreateIndex(
- name: "IX_Store_AssembleRequest_Number",
- table: "Store_AssembleRequest",
+ name: "IX_Store_AssembleIssueRequests_Number",
+ table: "Store_AssembleIssueRequests",
column: "Number",
unique: true);
migrationBuilder.CreateIndex(
- name: "IX_Store_AssembleRequestDetail_ItemCode",
- table: "Store_AssembleRequestDetail",
+ name: "IX_Store_AssembleIssueRequestsDetail_ItemCode",
+ table: "Store_AssembleIssueRequestsDetail",
column: "ItemCode");
migrationBuilder.CreateIndex(
- name: "IX_Store_AssembleRequestDetail_MasterID",
- table: "Store_AssembleRequestDetail",
+ name: "IX_Store_AssembleIssueRequestsDetail_MasterID",
+ table: "Store_AssembleIssueRequestsDetail",
column: "MasterID");
migrationBuilder.CreateIndex(
- name: "IX_Store_AssembleRequestDetail_Number_ItemCode_ToLocationCode",
- table: "Store_AssembleRequestDetail",
+ name: "IX_Store_AssembleIssueRequestsDetail_Number_ItemCode_ToLocationCode",
+ table: "Store_AssembleIssueRequestsDetail",
columns: new[] { "Number", "ItemCode", "ToLocationCode" },
unique: true);
}
@@ -413,7 +413,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
name: "Store_AssembleNoteDetail");
migrationBuilder.DropTable(
- name: "Store_AssembleRequestDetail");
+ name: "Store_AssembleIssueRequestsDetail");
migrationBuilder.DropTable(
name: "Job_AssembleJob");
@@ -422,7 +422,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
name: "Store_AssembleNote");
migrationBuilder.DropTable(
- name: "Store_AssembleRequest");
+ name: "Store_AssembleIssueRequests");
migrationBuilder.DropColumn(
name: "JobNumber",
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240409090529_Update_InjectionRequest_2024_04_09.Designer.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240409090529_Update_InjectionRequest_2024_04_09.Designer.cs
index 320226aed..77fc0454d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240409090529_Update_InjectionRequest_2024_04_09.Designer.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240409090529_Update_InjectionRequest_2024_04_09.Designer.cs
@@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
- b.Property("AssembleRequestNumber")
+ b.Property("AssembleIssueRequestsNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -928,10 +928,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number")
.IsUnique();
- b.ToTable("Store_AssembleRequest", (string)null);
+ b.ToTable("Store_AssembleIssueRequests", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -1075,7 +1075,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique();
- b.ToTable("Store_AssembleRequestDetail", (string)null);
+ b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
});
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@@ -28245,9 +28245,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired();
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
- b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null)
+ b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details")
.HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade)
@@ -29110,7 +29110,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details");
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Navigation("Details");
});
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412052222_Update_Injection.Designer.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412052222_Update_Injection.Designer.cs
index 13991b8f4..839b41bf9 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412052222_Update_Injection.Designer.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412052222_Update_Injection.Designer.cs
@@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
- b.Property("AssembleRequestNumber")
+ b.Property("AssembleIssueRequestsNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -928,10 +928,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number")
.IsUnique();
- b.ToTable("Store_AssembleRequest", (string)null);
+ b.ToTable("Store_AssembleIssueRequests", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -1075,7 +1075,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique();
- b.ToTable("Store_AssembleRequestDetail", (string)null);
+ b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
});
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@@ -28333,9 +28333,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired();
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
- b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null)
+ b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details")
.HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade)
@@ -29198,7 +29198,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details");
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Navigation("Details");
});
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412061448_transferLibV2.Designer.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412061448_transferLibV2.Designer.cs
index 8f301e493..c3033e043 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412061448_transferLibV2.Designer.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240412061448_transferLibV2.Designer.cs
@@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
- b.Property("AssembleRequestNumber")
+ b.Property("AssembleIssueRequestsNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -928,10 +928,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number")
.IsUnique();
- b.ToTable("Store_AssembleRequest", (string)null);
+ b.ToTable("Store_AssembleIssueRequests", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -1075,7 +1075,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique();
- b.ToTable("Store_AssembleRequestDetail", (string)null);
+ b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
});
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@@ -28423,9 +28423,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired();
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
- b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null)
+ b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details")
.HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade)
@@ -29288,7 +29288,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details");
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Navigation("Details");
});
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240415063138_transferLibV2222.Designer.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240415063138_transferLibV2222.Designer.cs
index 7abc825c9..acaf23912 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240415063138_transferLibV2222.Designer.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240415063138_transferLibV2222.Designer.cs
@@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
- b.Property("AssembleRequestNumber")
+ b.Property("AssembleIssueRequestsNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -928,10 +928,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number")
.IsUnique();
- b.ToTable("Store_AssembleRequest", (string)null);
+ b.ToTable("Store_AssembleIssueRequests", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -1075,7 +1075,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique();
- b.ToTable("Store_AssembleRequestDetail", (string)null);
+ b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
});
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@@ -28798,9 +28798,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired();
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
- b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null)
+ b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details")
.HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade)
@@ -29663,7 +29663,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details");
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Navigation("Details");
});
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240416053509_Added_Chassis.Designer.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240416053509_Added_Chassis.Designer.cs
index 55dd880fa..df7700712 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240416053509_Added_Chassis.Designer.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240416053509_Added_Chassis.Designer.cs
@@ -41,7 +41,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
- b.Property("AssembleRequestNumber")
+ b.Property("AssembleIssueRequestsNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@@ -840,7 +840,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -924,10 +924,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number")
.IsUnique();
- b.ToTable("Store_AssembleRequest", (string)null);
+ b.ToTable("Store_AssembleIssueRequests", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -1064,7 +1064,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique();
- b.ToTable("Store_AssembleRequestDetail", (string)null);
+ b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
});
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@@ -29006,9 +29006,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired();
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
- b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null)
+ b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details")
.HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade)
@@ -29880,7 +29880,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details");
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Navigation("Details");
});
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240416053509_Added_Chassis.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240416053509_Added_Chassis.cs
index 69e0d2062..f3c57135a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240416053509_Added_Chassis.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240416053509_Added_Chassis.cs
@@ -35,19 +35,19 @@ namespace Win_in.Sfs.Wms.Store.Migrations
migrationBuilder.DropColumn(
name: "ExpiredTime",
- table: "Store_AssembleRequestDetail");
+ table: "Store_AssembleIssueRequestsDetail");
migrationBuilder.DropColumn(
name: "FromLocationArea",
- table: "Store_AssembleRequestDetail");
+ table: "Store_AssembleIssueRequestsDetail");
migrationBuilder.DropColumn(
name: "WorkStation",
- table: "Store_AssembleRequestDetail");
+ table: "Store_AssembleIssueRequestsDetail");
migrationBuilder.DropColumn(
name: "ProdLine",
- table: "Store_AssembleRequest");
+ table: "Store_AssembleIssueRequests");
migrationBuilder.AddColumn(
name: "BoxQty",
@@ -58,7 +58,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
migrationBuilder.AddColumn(
name: "BoxQty",
- table: "Store_AssembleRequestDetail",
+ table: "Store_AssembleIssueRequestsDetail",
type: "decimal(18,6)",
nullable: false,
defaultValue: 0m);
@@ -177,7 +177,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
migrationBuilder.DropColumn(
name: "BoxQty",
- table: "Store_AssembleRequestDetail");
+ table: "Store_AssembleIssueRequestsDetail");
migrationBuilder.AddColumn(
name: "ExpiredTime",
@@ -222,27 +222,27 @@ namespace Win_in.Sfs.Wms.Store.Migrations
migrationBuilder.AddColumn(
name: "ExpiredTime",
- table: "Store_AssembleRequestDetail",
+ table: "Store_AssembleIssueRequestsDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn(
name: "FromLocationArea",
- table: "Store_AssembleRequestDetail",
+ table: "Store_AssembleIssueRequestsDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn(
name: "WorkStation",
- table: "Store_AssembleRequestDetail",
+ table: "Store_AssembleIssueRequestsDetail",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn(
name: "ProdLine",
- table: "Store_AssembleRequest",
+ table: "Store_AssembleIssueRequests",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs
index a481219b5..631928205 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs
@@ -39,7 +39,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
- b.Property("AssembleRequestNumber")
+ b.Property("AssembleIssueRequestsNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@@ -838,7 +838,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.ToTable("Store_AssembleNoteDetail", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -922,10 +922,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number")
.IsUnique();
- b.ToTable("Store_AssembleRequest", (string)null);
+ b.ToTable("Store_AssembleIssueRequests", (string)null);
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
b.Property("Id")
.HasColumnType("uniqueidentifier");
@@ -1062,7 +1062,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.HasIndex("Number", "ItemCode", "ToLocationCode")
.IsUnique();
- b.ToTable("Store_AssembleRequestDetail", (string)null);
+ b.ToTable("Store_AssembleIssueRequestsDetail", (string)null);
});
modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.BackFlushNote", b =>
@@ -29004,9 +29004,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.IsRequired();
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequestDetail", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequestsDetail", b =>
{
- b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", null)
+ b.HasOne("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", null)
.WithMany("Details")
.HasForeignKey("MasterID")
.OnDelete(DeleteBehavior.Cascade)
@@ -29878,7 +29878,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Navigation("Details");
});
- modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleRequest", b =>
+ modelBuilder.Entity("Win_in.Sfs.Wms.Store.Domain.AssembleIssueRequests", b =>
{
b.Navigation("Details");
});
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/AssembleNotes/AssembleNoteDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/AssembleNotes/AssembleNoteDbContextModelCreatingExtensions.cs
index f13daeb61..b739a5680 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/AssembleNotes/AssembleNoteDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/AssembleNotes/AssembleNoteDbContextModelCreatingExtensions.cs
@@ -21,7 +21,6 @@ public static class AssembleNoteDbContextModelCreatingExtensions
//Properties
b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.Workshop).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength);
//Relations
@@ -32,32 +31,27 @@ public static class AssembleNoteDbContextModelCreatingExtensions
});
builder.Entity(b =>
- {
- //Configure table & schema name
- b.ToTable(options.TablePrefix + nameof(AssembleNoteDetail), options.Schema);
- //Configure ABP properties
- b.ConfigureByConvention();
- //Configure Sfs base properties
- b.ConfigureSfsStoreBase();
- //Configure Sfs store detail properties
- b.ConfigureSfsStoreDetailBase();
-
- //Properties
- b.Property(q => q.IssueTime).IsRequired();
- b.Property(q => q.ExpiredTime).IsRequired();
- b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.NameLength);
- b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.NameLength);
- b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.FromStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
- b.Property(q => q.ToStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
- b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
-
- //Relations
-
- //Indexes
- b.HasIndex(q => new { q.Number, q.FromPackingCode, q.FromLocationCode, q.ToLocationCode }).IsUnique();
- b.HasIndex(q => new { q.FromPackingCode });
- });
+ {
+ //Configure table & schema name
+ b.ToTable(options.TablePrefix + nameof(AssembleNoteDetail), options.Schema);
+ //Configure ABP properties
+ b.ConfigureByConvention();
+ //Configure Sfs base properties
+ b.ConfigureSfsStoreBase();
+ //Configure Sfs store detail properties
+ b.ConfigureSfsStoreDetailBase();
+
+ //Properties
+ b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.NameLength);
+ b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
+
+ //Relations
+
+ //Indexes
+ b.HasIndex(q => new { q.Number, q.HandledFromPackingCode, q.HandledFromLocationCode, q.HandledToLocationCode }).IsUnique();
+ b.HasIndex(q => new { q.HandledFromPackingCode });
+ });
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNoteDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNoteDbContextModelCreatingExtensions.cs
index 11dcd02be..01678828a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNoteDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNoteDbContextModelCreatingExtensions.cs
@@ -1,6 +1,7 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
@@ -21,7 +22,6 @@ public static class CoatingIssueNoteDbContextModelCreatingExtensions
//Properties
b.Property(q => q.RequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RequestType).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.Workshop).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.Remark).HasMaxLength(SfsPropertyConst.RemarkLength);
//Relations
@@ -32,31 +32,27 @@ public static class CoatingIssueNoteDbContextModelCreatingExtensions
});
builder.Entity(b =>
- {
- //Configure table & schema name
- b.ToTable(options.TablePrefix + nameof(CoatingIssueNoteDetail), options.Schema);
- //Configure ABP properties
- b.ConfigureByConvention();
- //Configure Sfs base properties
- b.ConfigureSfsStoreBase();
- //Configure Sfs store detail properties
- b.ConfigureSfsStoreDetailBase();
-
- //Properties
- b.Property(q => q.IssueTime).IsRequired();
- b.Property(q => q.ExpiredTime).IsRequired();
- b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.NameLength);
- b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.NameLength);
- b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.FromStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
- b.Property(q => q.ToStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
- b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
-
- //Relations
-
- //Indexes
- b.HasIndex(q => new { q.Number, q.FromPackingCode, q.FromLocationCode, q.ToLocationCode }).IsUnique();
- b.HasIndex(q => new { q.FromPackingCode });
- });
+ {
+ //Configure table & schema name
+ b.ToTable(options.TablePrefix + nameof(CoatingIssueNoteDetail), options.Schema);
+ //Configure ABP properties
+ b.ConfigureByConvention();
+ //Configure Sfs base properties
+ b.ConfigureSfsStoreBase();
+ //Configure Sfs store detail properties
+ b.ConfigureSfsStoreDetailBase();
+
+ //Properties
+ b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.NameLength);
+ b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
+
+ //Relations
+
+ //Indexes
+ b.HasIndex(q => new { q.Number, q.HandledFromPackingCode, q.HandledFromLocationCode, q.HandledToLocationCode }).IsUnique();
+ b.HasIndex(q => new { q.HandledFromPackingCode });
+ });
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleRequests/AssembleRequestDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsDbContextModelCreatingExtensions.cs
similarity index 83%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleRequests/AssembleRequestDbContextModelCreatingExtensions.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsDbContextModelCreatingExtensions.cs
index 1d6944096..580ea86ba 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleRequests/AssembleRequestDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsDbContextModelCreatingExtensions.cs
@@ -5,14 +5,14 @@ using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
-public static class AssembleRequestDbContextModelCreatingExtensions
+public static class AssembleIssueRequestsDbContextModelCreatingExtensions
{
- public static void ConfigureAssembleRequest(this ModelBuilder builder, StoreModelBuilderConfigurationOptions options)
+ public static void ConfigureAssembleIssueRequests(this ModelBuilder builder, StoreModelBuilderConfigurationOptions options)
{
- builder.Entity(b =>
+ builder.Entity(b =>
{
//Configure table & schema name
- b.ToTable(options.TablePrefix + nameof(AssembleRequest), options.Schema);
+ b.ToTable(options.TablePrefix + nameof(AssembleIssueRequests), options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Configure Sfs base properties
@@ -29,10 +29,10 @@ public static class AssembleRequestDbContextModelCreatingExtensions
b.HasIndex(q => new { q.Number }).IsUnique();
});
- builder.Entity(b =>
+ builder.Entity(b =>
{
//Configure table & schema name
- b.ToTable(options.TablePrefix + nameof(AssembleRequestDetail), options.Schema);
+ b.ToTable(options.TablePrefix + nameof(AssembleIssueRequestsDetail), options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Configure Sfs base properties
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsEfCoreRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsEfCoreRepository.cs
new file mode 100644
index 000000000..e810335db
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleIssueRequests/AssembleIssueRequestsEfCoreRepository.cs
@@ -0,0 +1,11 @@
+using Volo.Abp.EntityFrameworkCore;
+using Win_in.Sfs.Wms.Store.Domain;
+
+namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
+
+public class AssembleIssueRequestsEfCoreRepository : SfsStoreEfCoreRepositoryBase, IAssembleIssueRequestsRepository
+{
+ public AssembleIssueRequestsEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider)
+ {
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleRequests/AssembleRequestEfCoreRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleRequests/AssembleRequestEfCoreRepository.cs
deleted file mode 100644
index 7541df1ec..000000000
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/MaterialRequests/AssembleRequests/AssembleRequestEfCoreRepository.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Volo.Abp.EntityFrameworkCore;
-using Win_in.Sfs.Wms.Store.Domain;
-
-namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
-
-public class AssembleRequestEfCoreRepository : SfsStoreEfCoreRepositoryBase, IAssembleRequestRepository
-{
- public AssembleRequestEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider)
- {
- }
-}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContext.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContext.cs
index 5415d4c22..767efd5d1 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContext.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContext.cs
@@ -22,7 +22,7 @@ public class StoreDbContext : AbpDbContext, IStoreDbContext
public DbSet ProductReceiptRequests { get; set; }
public DbSet MaterialRequests { get; set; }
public DbSet InjectionRequests { get; set; }
- public DbSet AssembleRequests { get; set; }
+ public DbSet AssembleIssueRequests { get; set; }
public DbSet ThirdLocationRequests { get; set; }
public DbSet ContainerRequests { get; set; }
public DbSet DeliverRequests { get; set; }
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 a54b3557c..164956510 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
@@ -48,7 +48,7 @@ public static class StoreDbContextModelCreatingExtensions
builder.ConfigurePurchaseReceiptRequest(options);
builder.ConfigureMaterialRequest(options);
builder.ConfigureInjectionRequest(options);
- builder.ConfigureAssembleRequest(options);
+ builder.ConfigureAssembleIssueRequests(options);
builder.ConfigureThirdLocationRequest(options);
builder.ConfigureDeliverRequest(options);
builder.ConfigureContainerRequest(options);
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs
index b2ffd0d38..9d8aad808 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs
@@ -61,7 +61,7 @@ public class StoreEntityFrameworkCoreModule : 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();
@@ -209,7 +209,7 @@ public class StoreEntityFrameworkCoreModule : AbpModule
orderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Details));
options.Entity(orderOptions =>
orderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Details));
- options.Entity(orderOptions =>
+ options.Entity(orderOptions =>
orderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Details));
options.Entity(orderOptions =>
orderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Details));
@@ -353,6 +353,8 @@ public class StoreEntityFrameworkCoreModule : AbpModule
orderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Details));
options.Entity(orderOptions =>
orderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Details));
+ options.Entity(orderOptions =>
+ orderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Details));
options.Entity(orderOptions =>
orderOptions.DefaultWithDetailsFunc = query => query.Include(o => o.Details));
options.Entity(orderOptions =>
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/AssembleJobAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/AssembleJobAutoMapperProfile.cs
index f1cecd7c7..cfa65b89c 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/AssembleJobAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/AssembleJobAutoMapperProfile.cs
@@ -23,44 +23,8 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.ConfirmTime);
CreateMap()
- .ForMember(x => x.FromPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
- .ForMember(x => x.ToPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
- .ForMember(x => x.SupplierBatch, y => y.MapFrom(d => d.HandledSupplierBatch))
- .ForMember(x => x.ArriveDate, y => y.MapFrom(d => d.HandledArriveDate))
- .ForMember(x => x.ProduceDate, y => y.MapFrom(d => d.HandledProduceDate))
- .ForMember(x => x.ExpireDate, y => y.MapFrom(d => d.HandledExpireDate))
- .ForMember(x => x.FromLot, y => y.MapFrom(d => d.HandledLot))
- .ForMember(x => x.ToLot, y => y.MapFrom(d => d.HandledLot))
- .ForMember(x => x.ToContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
- .ForMember(x => x.FromContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
- .ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
- .ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
- .ForMember(x => x.Qty, y => y.MapFrom(d => d.HandledQty))
- .ForMember(x => x.IssueTime, y => y.MapFrom(d => DateTime.Now))
- .ForMember(x => x.FromLocationCode, y => y.MapFrom(d => d.HandledFromLocationCode))
- .ForMember(x => x.FromLocationArea, y => y.MapFrom(d => d.HandledFromLocationArea))
- .ForMember(x => x.FromLocationGroup, y => y.MapFrom(d => d.HandledFromLocationGroup))
- .ForMember(x => x.FromLocationErpCode, y => y.MapFrom(d => d.HandledFromLocationErpCode))
- .ForMember(x => x.FromWarehouseCode, y => y.MapFrom(d => d.HandledFromWarehouseCode))
- .ForMember(x => x.ToLocationCode, y => y.MapFrom(d => d.ToLocationCode))
- .Ignore(x => x.ToLocationArea)
- .Ignore(x => x.ToLocationGroup)
- .Ignore(x => x.ToLocationErpCode)
;
- CreateMap()
- .MapExpectInOutFrom()
- .Ignore(x => x.Worker)
- .Ignore(x => x.SerialNumber)
- .Ignore(x => x.ExtraProperties)
- ;
-
- CreateMap()
- .MapExpectInOutFrom()
- .Ignore(x => x.Worker)
- .Ignore(x => x.SerialNumber)
- .Ignore(x => x.ExtraProperties);
-
CreateMap()
.ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.AssembleRequestNumber))
.Ignore(x => x.Confirmed)
@@ -68,25 +32,6 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.ActiveDate)
;
CreateMap()
- .ForMember(x => x.Qty, y => y.MapFrom(d => d.HandledQty))
- .ForMember(x => x.IssueTime, y => y.MapFrom(d => DateTime.Now))
- .ForMember(x => x.FromPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
- .ForMember(x => x.ToPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
- .ForMember(x => x.FromContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
- .ForMember(x => x.ToContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
- .ForMember(x => x.FromLot, y => y.MapFrom(d => d.HandledLot))
- .ForMember(x => x.ToLot, y => y.MapFrom(d => d.HandledLot))
- .ForMember(x => x.SupplierBatch, y => y.MapFrom(d => d.HandledSupplierBatch))
- .ForMember(x => x.ArriveDate, y => y.MapFrom(d => d.HandledArriveDate))
- .ForMember(x => x.ProduceDate, y => y.MapFrom(d => d.HandledProduceDate))
- .ForMember(x => x.ExpireDate, y => y.MapFrom(d => d.ExpiredTime))
- .ForMember(x => x.FromLocationCode, y => y.MapFrom(d => d.HandledFromLocationCode))
- .ForMember(x => x.FromLocationArea, y => y.MapFrom(d => d.HandledFromLocationArea))
- .ForMember(x => x.FromLocationGroup, y => y.MapFrom(d => d.HandledFromLocationGroup))
- .ForMember(x => x.FromLocationErpCode, y => y.MapFrom(d => d.HandledFromLocationErpCode))
- .ForMember(x => x.FromWarehouseCode, y => y.MapFrom(d => d.HandledFromWarehouseCode))
- .ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
- .ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
;
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/CoatingIssueJobAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/CoatingIssueJobAutoMapperProfile.cs
index bf3a92d55..47e024d74 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/CoatingIssueJobAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/CoatingIssueJobAutoMapperProfile.cs
@@ -25,44 +25,8 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.ConfirmTime);
CreateMap()
- .ForMember(x => x.FromPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
- .ForMember(x => x.ToPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
- .ForMember(x => x.SupplierBatch, y => y.MapFrom(d => d.HandledSupplierBatch))
- .ForMember(x => x.ArriveDate, y => y.MapFrom(d => d.HandledArriveDate))
- .ForMember(x => x.ProduceDate, y => y.MapFrom(d => d.HandledProduceDate))
- .ForMember(x => x.ExpireDate, y => y.MapFrom(d => d.HandledExpireDate))
- .ForMember(x => x.FromLot, y => y.MapFrom(d => d.HandledLot))
- .ForMember(x => x.ToLot, y => y.MapFrom(d => d.HandledLot))
- .ForMember(x => x.ToContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
- .ForMember(x => x.FromContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
- .ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
- .ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
- .ForMember(x => x.Qty, y => y.MapFrom(d => d.HandledQty))
- .ForMember(x => x.IssueTime, y => y.MapFrom(d => DateTime.Now))
- .ForMember(x => x.FromLocationCode, y => y.MapFrom(d => d.HandledFromLocationCode))
- .ForMember(x => x.FromLocationArea, y => y.MapFrom(d => d.HandledFromLocationArea))
- .ForMember(x => x.FromLocationGroup, y => y.MapFrom(d => d.HandledFromLocationGroup))
- .ForMember(x => x.FromLocationErpCode, y => y.MapFrom(d => d.HandledFromLocationErpCode))
- .ForMember(x => x.FromWarehouseCode, y => y.MapFrom(d => d.HandledFromWarehouseCode))
- .ForMember(x => x.ToLocationCode, y => y.MapFrom(d => d.ToLocationCode))
- .Ignore(x => x.ToLocationArea)
- .Ignore(x => x.ToLocationGroup)
- .Ignore(x => x.ToLocationErpCode)
;
- CreateMap()
- .MapExpectInOutFrom()
- .Ignore(x => x.Worker)
- .Ignore(x => x.SerialNumber)
- .Ignore(x => x.ExtraProperties)
- ;
-
- CreateMap()
- .MapExpectInOutFrom()
- .Ignore(x => x.Worker)
- .Ignore(x => x.SerialNumber)
- .Ignore(x => x.ExtraProperties);
-
CreateMap()
.ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.MaterialRequestNumber))
.Ignore(x => x.Confirmed)
@@ -70,25 +34,6 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.ActiveDate)
;
CreateMap()
- .ForMember(x => x.Qty, y => y.MapFrom(d => d.HandledQty))
- .ForMember(x => x.IssueTime, y => y.MapFrom(d => DateTime.Now))
- .ForMember(x => x.FromPackingCode, y => y.MapFrom(d =>d.HandledPackingCode))
- .ForMember(x => x.ToPackingCode, y => y.MapFrom(d => d.HandledPackingCode))
- .ForMember(x => x.FromContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
- .ForMember(x => x.ToContainerCode, y => y.MapFrom(d => d.HandledContainerCode))
- .ForMember(x => x.FromLot, y => y.MapFrom(d => d.HandledLot))
- .ForMember(x => x.ToLot, y => y.MapFrom(d => d.HandledLot))
- .ForMember(x => x.SupplierBatch, y => y.MapFrom(d => d.HandledSupplierBatch))
- .ForMember(x => x.ArriveDate, y => y.MapFrom(d => d.HandledArriveDate))
- .ForMember(x => x.ProduceDate, y => y.MapFrom(d => d.HandledProduceDate))
- .ForMember(x => x.ExpireDate, y => y.MapFrom(d => d.ExpiredTime))
- .ForMember(x => x.FromLocationCode, y => y.MapFrom(d => d.HandledFromLocationCode))
- .ForMember(x => x.FromLocationArea, y => y.MapFrom(d => d.HandledFromLocationArea))
- .ForMember(x => x.FromLocationGroup, y => y.MapFrom(d => d.HandledFromLocationGroup))
- .ForMember(x => x.FromLocationErpCode, y => y.MapFrom(d => d.HandledFromLocationErpCode))
- .ForMember(x => x.FromWarehouseCode, y => y.MapFrom(d => d.HandledFromWarehouseCode))
- .ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
- .ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
;
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/AssembleNoteAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/AssembleNoteAutoMapperProfile.cs
index 15033a58a..d9e072ec3 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/AssembleNoteAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/AssembleNoteAutoMapperProfile.cs
@@ -16,6 +16,36 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.TransType)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.TransSubType)
+
+ .ForMember(x => x.Qty, y => y.MapFrom(t => t.HandledToQty))
+ .ForMember(x => x.SupplierBatch, y => y.MapFrom(t => t.HandledFromSupplierBatch))
+ .ForMember(x => x.ArriveDate, y => y.MapFrom(t => t.HandledFromArriveDate))
+ .ForMember(x => x.ProduceDate, y => y.MapFrom(t => t.HandledFromProduceDate))
+ .ForMember(x => x.ExpireDate, y => y.MapFrom(t => t.HandledFromExpireDate))
+
+ .ForMember(x => x.FromPackingCode, y => y.MapFrom(t => t.HandledFromPackingCode))
+ .ForMember(x => x.FromContainerCode, y => y.MapFrom(t => t.HandledFromContainerCode))
+
+ .ForMember(x => x.FromLot, y => y.MapFrom(t => t.HandledFromLot))
+ .ForMember(x => x.FromStatus, y => y.MapFrom(t => t.Status))
+
+ .ForMember(x => x.FromLocationCode, y => y.MapFrom(t => t.HandledFromLocationCode))
+ .ForMember(x => x.FromLocationGroup, y => y.MapFrom(t => t.HandledFromLocationGroup))
+ .ForMember(x => x.FromLocationArea, y => y.MapFrom(t => t.HandledFromLocationArea))
+ .ForMember(x => x.FromLocationErpCode, y => y.MapFrom(t => t.HandledFromLocationErpCode))
+ .ForMember(x => x.FromWarehouseCode, y => y.MapFrom(t => t.HandledFromWarehouseCode))
+
+ .ForMember(x => x.ToLot, y => y.MapFrom(t => t.HandledToLot))
+ .ForMember(x => x.ToStatus, y => y.MapFrom(t => t.Status))
+ .ForMember(x => x.ToPackingCode, y => y.MapFrom(t => t.HandledToPackingCode))
+ .ForMember(x => x.ToContainerCode, y => y.MapFrom(t => t.HandledToContainerCode))
+
+ .ForMember(x => x.ToLocationCode, y => y.MapFrom(t => t.HandledToLocationCode))
+ .ForMember(x => x.ToLocationGroup, y => y.MapFrom(t => t.HandledToLocationGroup))
+ .ForMember(x => x.ToLocationArea, y => y.MapFrom(t => t.HandledToLocationArea))
+ .ForMember(x => x.ToLocationErpCode, y => y.MapFrom(t => t.HandledToLocationErpCode))
+ .ForMember(x => x.ToWarehouseCode, y => y.MapFrom(t => t.HandledToWarehouseCode))
+
;
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/CoatingIssueNoteAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/CoatingIssueNoteAutoMapperProfile.cs
index 8f88e2ac7..f8137b8db 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/CoatingIssueNoteAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/CoatingIssueNoteAutoMapperProfile.cs
@@ -17,6 +17,36 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.TransType)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.TransSubType)
+
+ .ForMember(x => x.Qty, y => y.MapFrom(t => t.HandledToQty))
+ .ForMember(x => x.SupplierBatch, y => y.MapFrom(t => t.HandledFromSupplierBatch))
+ .ForMember(x => x.ArriveDate, y => y.MapFrom(t => t.HandledFromArriveDate))
+ .ForMember(x => x.ProduceDate, y => y.MapFrom(t => t.HandledFromProduceDate))
+ .ForMember(x => x.ExpireDate, y => y.MapFrom(t => t.HandledFromExpireDate))
+
+ .ForMember(x => x.FromPackingCode, y => y.MapFrom(t => t.HandledFromPackingCode))
+ .ForMember(x => x.FromContainerCode, y => y.MapFrom(t => t.HandledFromContainerCode))
+
+ .ForMember(x => x.FromLot, y => y.MapFrom(t => t.HandledFromLot))
+ .ForMember(x => x.FromStatus, y => y.MapFrom(t => t.Status))
+
+ .ForMember(x => x.FromLocationCode, y => y.MapFrom(t => t.HandledFromLocationCode))
+ .ForMember(x => x.FromLocationGroup, y => y.MapFrom(t => t.HandledFromLocationGroup))
+ .ForMember(x => x.FromLocationArea, y => y.MapFrom(t => t.HandledFromLocationArea))
+ .ForMember(x => x.FromLocationErpCode, y => y.MapFrom(t => t.HandledFromLocationErpCode))
+ .ForMember(x => x.FromWarehouseCode, y => y.MapFrom(t => t.HandledFromWarehouseCode))
+
+ .ForMember(x => x.ToLot, y => y.MapFrom(t => t.HandledToLot))
+ .ForMember(x => x.ToStatus, y => y.MapFrom(t => t.Status))
+ .ForMember(x => x.ToPackingCode, y => y.MapFrom(t => t.HandledToPackingCode))
+ .ForMember(x => x.ToContainerCode, y => y.MapFrom(t => t.HandledToContainerCode))
+
+ .ForMember(x => x.ToLocationCode, y => y.MapFrom(t => t.HandledToLocationCode))
+ .ForMember(x => x.ToLocationGroup, y => y.MapFrom(t => t.HandledToLocationGroup))
+ .ForMember(x => x.ToLocationArea, y => y.MapFrom(t => t.HandledToLocationArea))
+ .ForMember(x => x.ToLocationErpCode, y => y.MapFrom(t => t.HandledToLocationErpCode))
+ .ForMember(x => x.ToWarehouseCode, y => y.MapFrom(t => t.HandledToWarehouseCode))
+
;
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/TransferLibNoteAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/TransferLibNoteAutoMapperProfile.cs
index ce730668e..093c92acf 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/TransferLibNoteAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/TransferLibNoteAutoMapperProfile.cs
@@ -11,24 +11,34 @@ public partial class StoreEventAutoMapperProfile : Profile
{
private void TransferLibNoteAutoMapperProfile()
{
- CreateMap()
-
- .MapNegativeQty()
- .ForMember(dest => dest.DocNumber, opts => opts.MapFrom(src => src.Number))
+ CreateMap(MemberList.None)
+ .Ignore(x => x.ExtraProperties)
.Ignore(x => x.DocNumber)
.Ignore(x => x.JobNumber)
.Ignore(x => x.Worker)
- .Ignore(x => x.ManageType)
.Ignore(x => x.TransType)
.Ignore(x => x.TransSubType)
+ .Ignore(x => x.PackingCode)
+ .Ignore(x => x.Lot)
+ .Ignore(x => x.Status)
.Ignore(x => x.TransInOut)
+ .Ignore(x => x.LocationCode)
+ .Ignore(x => x.LocationGroup)
+ .Ignore(x => x.LocationErpCode)
+ .Ignore(x => x.LocationArea)
+ .Ignore(x => x.ContainerCode)
+ .Ignore(x => x.ManageType)
+ .Ignore(x => x.WarehouseCode)
+ ;
+
+ CreateMap(MemberList.None)
.Ignore(x => x.ExtraProperties)
+ .Ignore(x => x.DocNumber)
+ .Ignore(x => x.JobNumber)
+ .Ignore(x => x.Worker)
+ .Ignore(x => x.TransType)
+ .Ignore(x => x.TransSubType)
;
- ;
- CreateMap()
- .ReverseMap();
- CreateMap()
- .ReverseMap();
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/AssembleRequestAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/AssembleIssueRequestsAutoMapperProfile.cs
similarity index 84%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/AssembleRequestAutoMapperProfile.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/AssembleIssueRequestsAutoMapperProfile.cs
index f380fda18..9c6479128 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/AssembleRequestAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/AssembleIssueRequestsAutoMapperProfile.cs
@@ -9,10 +9,10 @@ namespace Win_in.Sfs.Wms.Store.Event;
public partial class StoreEventAutoMapperProfile : Profile
{
- private void AssembleRequestAutoMapperProfile()
+ private void AssembleIssueRequestsAutoMapperProfile()
{
- CreateMap()
- .ForMember(x => x.AssembleRequestNumber, y => y.MapFrom(d => d.Number))
+ CreateMap()
+ .ForMember(x => x.AssembleIssueRequestsNumber, y => y.MapFrom(d => d.Number))
.ForMember(x => x.RequestType, y => y.MapFrom(d => d.Type))
.Ignore(x => x.WarehouseCode)
.Ignore(x => x.UpStreamJobNumber)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/AssembleJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/AssembleJobEventHandler.cs
index 8834827b7..6b212df3c 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/AssembleJobEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/AssembleJobEventHandler.cs
@@ -1,4 +1,3 @@
-using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@@ -7,25 +6,31 @@ using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
+using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Event.BusinessJob;
public class AssembleJobEventHandler :
StoreEventHandlerBase
, ILocalEventHandler>
+ , ILocalEventHandler>
+ , ILocalEventHandler>>
{
- private const EnumTransType TransType = EnumTransType.Issue;
-
private readonly IAssembleNoteAppService _assembleNoteAppService;
+ private readonly IExpectOutAppService _expectOutAppService;
private readonly ILocationAppService _locationAppService;
+ private readonly ITransferLibRequestAppService _transferLibRequestAppService;
- public AssembleJobEventHandler(IAssembleNoteAppService assembleNoteAppService, ILocationAppService locationAppService)
+ public AssembleJobEventHandler(IAssembleNoteAppService assembleNoteAppService,
+ IExpectOutAppService expectOutAppService,
+ ILocationAppService locationAppService, ITransferLibRequestAppService transferLibRequestAppService)
{
_assembleNoteAppService = assembleNoteAppService;
+ _expectOutAppService = expectOutAppService;
_locationAppService = locationAppService;
+ _transferLibRequestAppService = transferLibRequestAppService;
}
///
@@ -41,8 +46,146 @@ public class AssembleJobEventHandler :
await _assembleNoteAppService.CreateAsync(assembleNote).ConfigureAwait(false);
}
+ ///
+ /// 创建后
+ ///
+ ///
+ ///
+ public virtual async Task HandleEventAsync(SfsCreatedEntityEventData eventData)
+ {
+ var entity = eventData.Entity;
+
+ await CreateExpectOutAsync(entity).ConfigureAwait(false);
+
+ await CreateTransferLibAsync(entity).ConfigureAwait(false);
+ }
+
+ ///
+ /// 批量创建后
+ ///
+ ///
+ ///
+ public virtual async Task HandleEventAsync(SfsCreatedEntityEventData> eventData)
+ {
+ var entitys = eventData.Entity;
+
+ foreach (var entity in entitys)
+ {
+ await CreateExpectOutAsync(entity).ConfigureAwait(false);
+
+ await CreateTransferLibAsync(entity).ConfigureAwait(false);
+ }
+ }
+
#region 私有
+ ///
+ /// 创建预计出
+ ///
+ ///
+ ///
+ private async Task CreateExpectOutAsync(AssembleJob entity)
+ {
+ var expectOutEditInputs = new List();
+ foreach (var detail in entity.Details)
+ {
+ var inputoExpectOutEditInput = new ExpectOutEditInput();
+ inputoExpectOutEditInput.JobNumber = entity.Number;
+ inputoExpectOutEditInput.ItemCode = detail.ItemCode;
+ inputoExpectOutEditInput.Qty = detail.RecommendFromQty;
+ inputoExpectOutEditInput.LocationCode = detail.RecommendFromLocationCode;
+ inputoExpectOutEditInput.ArriveDate = detail.RecommendFromArriveDate;
+ inputoExpectOutEditInput.ContainerCode = detail.RecommendFromContainerCode;
+ inputoExpectOutEditInput.ExpireDate = detail.RecommendFromExpireDate;
+ inputoExpectOutEditInput.ItemDesc1 = detail.ItemDesc1;
+ inputoExpectOutEditInput.ItemDesc2 = detail.ItemDesc2;
+ inputoExpectOutEditInput.ItemName = detail.ItemName;
+ inputoExpectOutEditInput.LocationArea = detail.RecommendFromLocationArea;
+ inputoExpectOutEditInput.LocationGroup = detail.RecommendFromLocationGroup;
+ inputoExpectOutEditInput.LocationErpCode = detail.RecommendFromLocationErpCode;
+ inputoExpectOutEditInput.PackingCode = detail.RecommendFromPackingCode;
+ inputoExpectOutEditInput.Lot = detail.RecommendFromLot;
+ inputoExpectOutEditInput.ProduceDate = detail.RecommendFromProduceDate;
+ inputoExpectOutEditInput.Status = detail.Status;
+ inputoExpectOutEditInput.Uom = detail.Uom;
+ inputoExpectOutEditInput.SupplierBatch = detail.RecommendFromSupplierBatch;
+ inputoExpectOutEditInput.WarehouseCode = detail.RecommendFromWarehouseCode;
+
+ expectOutEditInputs.Add(inputoExpectOutEditInput);
+ }
+
+ await _expectOutAppService.AddManyAsync(expectOutEditInputs).ConfigureAwait(false);
+
+ await Task.CompletedTask.ConfigureAwait(false);
+ }
+
+ ///
+ /// 根据是否在 第一层 来创建 是否生成库移任务
+ ///
+ ///
+ private async Task CreateTransferLibAsync(AssembleJob assembleJob)
+ {
+ if (!await IsMinRowAsync(assembleJob).ConfigureAwait(false))
+ {
+ foreach (var detail in assembleJob.Details)
+ {
+ var input = new TransferLibRequestEditInput();
+ input.CallBusinessType = nameof(IAssembleJobAppService);
+ input.CallJobNumber = assembleJob.Number;
+ input.CallRequestNumber = assembleJob.AssembleRequestNumber;
+ input.CallServerName = "Win_in.Sfs.Wms.Store.Application.AssembleJobAppService";
+ input.Type = "Transfer_Warehouse";
+ input.UseOnTheWayLocation = true;
+
+ var detailInput = new TransferLibRequestDetailInput();
+ detailInput.CallBusinessType = nameof(IAssembleJobAppService);
+ detailInput.CallRequestNumber = assembleJob.AssembleRequestNumber;
+ detailInput.CallServerName = "Win_in.Sfs.Wms.Store.Application.AssembleJobAppService";
+ detailInput.CallJobNumber = assembleJob.Number;
+
+ detailInput.JobStatus = EnumJobStatus.Open;
+ detailInput.ItemCode = detail.ItemCode;
+ detailInput.StdPackQty = detail.StdPackQty;
+ detailInput.Uom = detail.Uom;
+ detailInput.Status = detail.Status;
+
+ detailInput.RecommendFromQty = detail.RecommendFromQty;
+ detailInput.RecommendFromLot = detail.RecommendFromLot;
+ detailInput.RecommendFromPackingCode = detailInput.RecommendFromPackingCode;
+ detailInput.RecommendToLot = detail.RecommendToLot;
+
+ detailInput.RecommendFromArriveDate = detail.RecommendFromArriveDate;
+ detailInput.RecommendFromExpireDate = detail.RecommendFromExpireDate;
+ detailInput.RecommendFromProduceDate = detail.RecommendFromProduceDate;
+ detailInput.RecommendFromSupplierBatch = detail.RecommendFromSupplierBatch;
+
+ detailInput.RecommendFromLocationCode = detail.RecommendFromLocationCode;
+ detailInput.RecommendFromLocationGroup = detail.RecommendFromLocationGroup;
+ detailInput.RecommendFromLocationArea = detail.RecommendFromLocationArea;
+ detailInput.RecommendFromLocationErpCode = detail.RecommendFromLocationErpCode;
+ detailInput.RecommendFromWarehouseCode = detail.RecommendFromWarehouseCode;
+
+ detailInput.RecommendToQty = detail.RecommendToQty;
+ detailInput.RecommendToLot = detail.RecommendToLot;
+ detailInput.RecommendToPackingCode = detailInput.RecommendToPackingCode;
+ detailInput.RecommendToLot = detail.RecommendToLot;
+
+ detailInput.RecommendToArriveDate = detail.RecommendToArriveDate;
+ detailInput.RecommendToExpireDate = detail.RecommendToExpireDate;
+ detailInput.RecommendToProduceDate = detail.RecommendToProduceDate;
+ detailInput.RecommendToSupplierBatch = detail.RecommendToSupplierBatch;
+
+ detailInput.RecommendToLocationCode = detail.RecommendToLocationCode;
+ detailInput.RecommendToLocationGroup = detail.RecommendToLocationGroup;
+ detailInput.RecommendToLocationArea = detail.RecommendToLocationArea;
+ detailInput.RecommendToLocationErpCode = detail.RecommendToLocationErpCode;
+ detailInput.RecommendToWarehouseCode = detail.RecommendToWarehouseCode;
+
+ await _transferLibRequestAppService.CreateAsync(input).ConfigureAwait(false);
+ }
+ }
+ }
+
///
/// 创建补料记录实体
///
@@ -52,78 +195,29 @@ public class AssembleJobEventHandler :
{
var assembleNoteCreateInput = ObjectMapper.Map(entity);
assembleNoteCreateInput.JobNumber = entity.Number;
- var locationCodes = assembleNoteCreateInput.Details.Select(p => p.ToLocationCode).Distinct().ToList();
- var locations = await _locationAppService.GetByCodesAsync(locationCodes).ConfigureAwait(false);
-
- assembleNoteCreateInput.Details.RemoveAll(p => p.Qty == 0);
- foreach (var detail in assembleNoteCreateInput.Details)
- {
- var location = locations.First(p => p.Code == detail.ToLocationCode);
- await RemovePackingCodeAndContainerCodeAndLotAsync(detail, location.Type).ConfigureAwait(false); //去箱 去托 去批
-
- detail.ToLocationArea = location.AreaCode;
- detail.ToLocationGroup = location.LocationGroupCode;
- detail.ToLocationErpCode = location.ErpLocationCode;
- detail.ToWarehouseCode = location.WarehouseCode;
- }
+ await Task.CompletedTask.ConfigureAwait(false);
return assembleNoteCreateInput;
}
///
- /// 去除箱码 托码 批次
+ /// 判断是不是在最底层 如果不是则把状态变更为等待
///
- private async Task RemovePackingCodeAndContainerCodeAndLotAsync(AssembleNoteDetailInput assembleNoteDetail,
- EnumLocationType locationType)
+ ///
+ ///
+ private async Task IsMinRowAsync(AssembleJob assembleJob)
{
- switch (locationType)
+ var detail = assembleJob.Details.FirstOrDefault();
+
+ var loctionDto = await _locationAppService.GetByCodeAsync(detail.RecommendFromLocationCode)
+ .ConfigureAwait(false);
+ if (loctionDto.RowCode == 1)
{
- case EnumLocationType.WIP:
- {
- //用开关控制 发料到线边后去除箱码和托码 ???
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToWip.IsRemovePackingCode)
- .ConfigureAwait(false))
- {
- assembleNoteDetail.ToPackingCode = "";
- }
-
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToWip.IsRemoveContainerCode)
- .ConfigureAwait(false))
- {
- assembleNoteDetail.ToContainerCode = "";
- }
-
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToWip.IsRemoveLot).ConfigureAwait(false))
- {
- assembleNoteDetail.ToLot = "";
- }
-
- break;
- }
- case EnumLocationType.SEMI:
- {
- //用开关控制 发料到后去除箱码和托码 ???
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToSemi.IsRemovePackingCode)
- .ConfigureAwait(false))
- {
- assembleNoteDetail.ToPackingCode = "";
- }
-
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToSemi.IsRemoveContainerCode)
- .ConfigureAwait(false))
- {
- assembleNoteDetail.ToContainerCode = "";
- }
-
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToSemi.IsRemoveLot).ConfigureAwait(false))
- {
- assembleNoteDetail.ToLot = "";
- }
-
- break;
- }
+ return true;
}
+
+ return false;
}
#endregion
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/CoatingIssueJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/CoatingIssueJobEventHandler.cs
index 8a82f504c..2bc5bb04d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/CoatingIssueJobEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/CoatingIssueJobEventHandler.cs
@@ -1,4 +1,3 @@
-using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@@ -7,9 +6,9 @@ using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
+using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
@@ -18,16 +17,22 @@ namespace Win_in.Sfs.Wms.Store.Event.BusinessJob;
public class CoatingIssueJobEventHandler :
StoreEventHandlerBase
, ILocalEventHandler>
+ , ILocalEventHandler>
+ , ILocalEventHandler>>
{
- private const EnumTransType TransType = EnumTransType.Issue;
-
- private readonly ICoatingIssueNoteAppService _issueNoteAppService;
+ private readonly ICoatingIssueNoteAppService _coatingIssueNoteAppService;
+ private readonly IExpectOutAppService _expectOutAppService;
private readonly ILocationAppService _locationAppService;
+ private readonly ITransferLibRequestAppService _transferLibRequestAppService;
- public CoatingIssueJobEventHandler(ICoatingIssueNoteAppService issueNoteAppService, ILocationAppService locationAppService)
+ public CoatingIssueJobEventHandler(ICoatingIssueNoteAppService coatingIssueNoteAppService,
+ IExpectOutAppService expectOutAppService,
+ ILocationAppService locationAppService, ITransferLibRequestAppService transferLibRequestAppService)
{
- _issueNoteAppService = issueNoteAppService;
+ _coatingIssueNoteAppService = coatingIssueNoteAppService;
+ _expectOutAppService = expectOutAppService;
_locationAppService = locationAppService;
+ _transferLibRequestAppService = transferLibRequestAppService;
}
///
@@ -39,94 +44,183 @@ public class CoatingIssueJobEventHandler :
public virtual async Task HandleEventAsync(SfsCompletedEntityEventData eventData)
{
var entity = eventData.Entity;
- var issueNote = await BuildIssueNoteAsync(entity).ConfigureAwait(false);
- await _issueNoteAppService.CreateAsync(issueNote).ConfigureAwait(false);
+ var coatingIssueNote = await BuildCoatingIssueNoteAsync(entity).ConfigureAwait(false);
+ await _coatingIssueNoteAppService.CreateAsync(coatingIssueNote).ConfigureAwait(false);
}
- #region 私有
-
///
- /// 创建补料记录实体
+ /// 创建后
///
- ///
+ ///
///
- private async Task BuildIssueNoteAsync(CoatingIssueJob entity)
+ public virtual async Task HandleEventAsync(SfsCreatedEntityEventData eventData)
{
- var issueNoteCreateInput = ObjectMapper.Map(entity);
- issueNoteCreateInput.JobNumber = entity.Number;
- var locationCodes = issueNoteCreateInput.Details.Select(p => p.ToLocationCode).Distinct().ToList();
- var locations = await _locationAppService.GetByCodesAsync(locationCodes).ConfigureAwait(false);
+ var entity = eventData.Entity;
- issueNoteCreateInput.Details.RemoveAll(p => p.Qty == 0);
+ await CreateExpectOutAsync(entity).ConfigureAwait(false);
- foreach (var detail in issueNoteCreateInput.Details)
+ await CreateTransferLibAsync(entity).ConfigureAwait(false);
+ }
+
+ ///
+ /// 批量创建后
+ ///
+ ///
+ ///
+ public virtual async Task HandleEventAsync(SfsCreatedEntityEventData> eventData)
+ {
+ var entitys = eventData.Entity;
+
+ foreach (var entity in entitys)
{
- var location = locations.First(p => p.Code == detail.ToLocationCode);
- await RemovePackingCodeAndContainerCodeAndLotAsync(detail, location.Type).ConfigureAwait(false); //去箱 去托 去批
+ await CreateExpectOutAsync(entity).ConfigureAwait(false);
+
+ await CreateTransferLibAsync(entity).ConfigureAwait(false);
+ }
+ }
+
+ #region 私有
- detail.ToLocationArea = location.AreaCode;
- detail.ToLocationGroup = location.LocationGroupCode;
- detail.ToLocationErpCode = location.ErpLocationCode;
- detail.ToWarehouseCode = location.WarehouseCode;
+ ///
+ /// 创建预计出
+ ///
+ ///
+ ///
+ private async Task CreateExpectOutAsync(CoatingIssueJob entity)
+ {
+ var expectOutEditInputs = new List();
+ foreach (var detail in entity.Details)
+ {
+ var inputoExpectOutEditInput = new ExpectOutEditInput();
+ inputoExpectOutEditInput.JobNumber = entity.Number;
+ inputoExpectOutEditInput.ItemCode = detail.ItemCode;
+ inputoExpectOutEditInput.Qty = detail.RecommendFromQty;
+ inputoExpectOutEditInput.LocationCode = detail.RecommendFromLocationCode;
+ inputoExpectOutEditInput.ArriveDate = detail.RecommendFromArriveDate;
+ inputoExpectOutEditInput.ContainerCode = detail.RecommendFromContainerCode;
+ inputoExpectOutEditInput.ExpireDate = detail.RecommendFromExpireDate;
+ inputoExpectOutEditInput.ItemDesc1 = detail.ItemDesc1;
+ inputoExpectOutEditInput.ItemDesc2 = detail.ItemDesc2;
+ inputoExpectOutEditInput.ItemName = detail.ItemName;
+ inputoExpectOutEditInput.LocationArea = detail.RecommendFromLocationArea;
+ inputoExpectOutEditInput.LocationGroup = detail.RecommendFromLocationGroup;
+ inputoExpectOutEditInput.LocationErpCode = detail.RecommendFromLocationErpCode;
+ inputoExpectOutEditInput.PackingCode = detail.RecommendFromPackingCode;
+ inputoExpectOutEditInput.Lot = detail.RecommendFromLot;
+ inputoExpectOutEditInput.ProduceDate = detail.RecommendFromProduceDate;
+ inputoExpectOutEditInput.Status = detail.Status;
+ inputoExpectOutEditInput.Uom = detail.Uom;
+ inputoExpectOutEditInput.SupplierBatch = detail.RecommendFromSupplierBatch;
+ inputoExpectOutEditInput.WarehouseCode = detail.RecommendFromWarehouseCode;
+
+ expectOutEditInputs.Add(inputoExpectOutEditInput);
}
- return issueNoteCreateInput;
+ await _expectOutAppService.AddManyAsync(expectOutEditInputs).ConfigureAwait(false);
+
+ await Task.CompletedTask.ConfigureAwait(false);
}
///
- /// 去除箱码 托码 批次
+ /// 根据是否在 第一层 来创建 是否生成库移任务
///
- private async Task RemovePackingCodeAndContainerCodeAndLotAsync(CoatingIssueNoteDetailInput issueNoteDetail,
- EnumLocationType locationType)
+ ///
+ private async Task CreateTransferLibAsync(CoatingIssueJob coatingIssueJob)
{
- switch (locationType)
+ if (!await IsMinRowAsync(coatingIssueJob).ConfigureAwait(false))
{
- case EnumLocationType.WIP:
+ foreach (var detail in coatingIssueJob.Details)
{
- //用开关控制 发料到线边后去除箱码和托码 ???
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToWip.IsRemovePackingCode)
- .ConfigureAwait(false))
- {
- issueNoteDetail.ToPackingCode = "";
- }
-
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToWip.IsRemoveContainerCode)
- .ConfigureAwait(false))
- {
- issueNoteDetail.ToContainerCode = "";
- }
-
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToWip.IsRemoveLot).ConfigureAwait(false))
- {
- issueNoteDetail.ToLot = "";
- }
-
- break;
- }
- case EnumLocationType.SEMI:
- {
- //用开关控制 发料到后去除箱码和托码 ???
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToSemi.IsRemovePackingCode)
- .ConfigureAwait(false))
- {
- issueNoteDetail.ToPackingCode = "";
- }
-
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToSemi.IsRemoveContainerCode)
- .ConfigureAwait(false))
- {
- issueNoteDetail.ToContainerCode = "";
- }
-
- if (await SettingManager.IsTrueAsync(StoreSettings.Issue.ToSemi.IsRemoveLot).ConfigureAwait(false))
- {
- issueNoteDetail.ToLot = "";
- }
-
- break;
+ var input = new TransferLibRequestEditInput();
+ input.CallBusinessType = nameof(ICoatingIssueJobAppService);
+ input.CallJobNumber = coatingIssueJob.Number;
+ input.CallRequestNumber = coatingIssueJob.MaterialRequestNumber;
+ input.CallServerName = "Win_in.Sfs.Wms.Store.Application.CoatingIssueJobAppService";
+ input.Type = "Transfer_Warehouse";
+ input.UseOnTheWayLocation = true;
+
+ var detailInput = new TransferLibRequestDetailInput();
+ detailInput.CallBusinessType = nameof(ICoatingIssueJobAppService);
+ detailInput.CallRequestNumber = coatingIssueJob.MaterialRequestNumber;
+ detailInput.CallServerName = "Win_in.Sfs.Wms.Store.Application.CoatingIssueJobAppService";
+ detailInput.CallJobNumber = coatingIssueJob.Number;
+
+ detailInput.JobStatus = EnumJobStatus.Open;
+ detailInput.ItemCode = detail.ItemCode;
+ detailInput.StdPackQty = detail.StdPackQty;
+ detailInput.Uom = detail.Uom;
+ detailInput.Status = detail.Status;
+
+ detailInput.RecommendFromQty = detail.RecommendFromQty;
+ detailInput.RecommendFromLot = detail.RecommendFromLot;
+ detailInput.RecommendFromPackingCode = detailInput.RecommendFromPackingCode;
+ detailInput.RecommendToLot = detail.RecommendToLot;
+
+ detailInput.RecommendFromArriveDate = detail.RecommendFromArriveDate;
+ detailInput.RecommendFromExpireDate = detail.RecommendFromExpireDate;
+ detailInput.RecommendFromProduceDate = detail.RecommendFromProduceDate;
+ detailInput.RecommendFromSupplierBatch = detail.RecommendFromSupplierBatch;
+
+ detailInput.RecommendFromLocationCode = detail.RecommendFromLocationCode;
+ detailInput.RecommendFromLocationGroup = detail.RecommendFromLocationGroup;
+ detailInput.RecommendFromLocationArea = detail.RecommendFromLocationArea;
+ detailInput.RecommendFromLocationErpCode = detail.RecommendFromLocationErpCode;
+ detailInput.RecommendFromWarehouseCode = detail.RecommendFromWarehouseCode;
+
+ detailInput.RecommendToQty = detail.RecommendToQty;
+ detailInput.RecommendToLot = detail.RecommendToLot;
+ detailInput.RecommendToPackingCode = detailInput.RecommendToPackingCode;
+ detailInput.RecommendToLot = detail.RecommendToLot;
+
+ detailInput.RecommendToArriveDate = detail.RecommendToArriveDate;
+ detailInput.RecommendToExpireDate = detail.RecommendToExpireDate;
+ detailInput.RecommendToProduceDate = detail.RecommendToProduceDate;
+ detailInput.RecommendToSupplierBatch = detail.RecommendToSupplierBatch;
+
+ detailInput.RecommendToLocationCode = detail.RecommendToLocationCode;
+ detailInput.RecommendToLocationGroup = detail.RecommendToLocationGroup;
+ detailInput.RecommendToLocationArea = detail.RecommendToLocationArea;
+ detailInput.RecommendToLocationErpCode = detail.RecommendToLocationErpCode;
+ detailInput.RecommendToWarehouseCode = detail.RecommendToWarehouseCode;
+
+ await _transferLibRequestAppService.CreateAsync(input).ConfigureAwait(false);
}
}
}
+ ///
+ /// 创建补料记录实体
+ ///
+ ///
+ ///
+ private async Task BuildCoatingIssueNoteAsync(CoatingIssueJob entity)
+ {
+ var coatingIssueNoteCreateInput = ObjectMapper.Map(entity);
+ coatingIssueNoteCreateInput.JobNumber = entity.Number;
+
+ await Task.CompletedTask.ConfigureAwait(false);
+
+ return coatingIssueNoteCreateInput;
+ }
+
+ ///
+ /// 判断是不是在最底层 如果不是则把状态变更为等待
+ ///
+ ///
+ ///
+ private async Task IsMinRowAsync(CoatingIssueJob coatingIssueJob)
+ {
+ var detail = coatingIssueJob.Details.FirstOrDefault();
+
+ var loctionDto = await _locationAppService.GetByCodeAsync(detail.RecommendFromLocationCode)
+ .ConfigureAwait(false);
+ if (loctionDto.RowCode == 1)
+ {
+ return true;
+ }
+
+ return false;
+ }
+
#endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/AssembleIssueRequestsEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/AssembleIssueRequestsEventHandler.cs
new file mode 100644
index 000000000..1a60eb749
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/AssembleIssueRequestsEventHandler.cs
@@ -0,0 +1,512 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.Json;
+using System.Threading.Tasks;
+using Castle.Components.DictionaryAdapter;
+using Volo.Abp;
+using Volo.Abp.EventBus;
+using Win_in.Sfs.Basedata.Application.Contracts;
+using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
+using Win_in.Sfs.Shared.Event;
+using Win_in.Sfs.Wms.Inventory.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Domain;
+using Win_in.Sfs.Wms.Store.Domain.Shared;
+
+namespace Win_in.Sfs.Wms.Store.Event.BusinessRequest;
+
+public class AssembleIssueRequestsEventHandler
+ : StoreEventHandlerBase
+ , ILocalEventHandler>
+ , ILocalEventHandler>
+ , ILocalEventHandler>
+ , ILocalEventHandler>
+ , ILocalEventHandler>>
+{
+ private readonly IAssembleJobAppService _assembleJobAppService;
+ private readonly IProductionLineAppService _productionLineAppService;
+ private readonly IProductionLineItemAppService _productionLineItemAppService;
+ private readonly ILocationAppService _locationAppService;
+ private readonly IBalanceAppService _balanceAppService;
+
+ public AssembleIssueRequestsEventHandler(
+ IAssembleJobAppService assembleJobAppService, IProductionLineAppService productionLineAppService,
+ ILocationAppService locationAppService,
+ IBalanceAppService balanceAppService, IProductionLineItemAppService productionLineItemAppService)
+ {
+ _assembleJobAppService = assembleJobAppService;
+ _productionLineAppService = productionLineAppService;
+ _locationAppService = locationAppService;
+ _balanceAppService = balanceAppService;
+ _productionLineItemAppService = productionLineItemAppService;
+ }
+
+ ///
+ /// 创建后
+ ///
+ /// Event data
+ public virtual async Task HandleEventAsync(SfsCreatedEntityEventData eventData)
+ {
+ await Task.CompletedTask.ConfigureAwait(false);
+ }
+
+ ///
+ /// 批量创建后
+ ///
+ /// Event data
+ public virtual async Task HandleEventAsync(SfsCreatedEntityEventData> eventData)
+ {
+ await Task.CompletedTask.ConfigureAwait(false);
+ }
+
+ ///
+ /// 执行后
+ ///
+ ///
+ ///
+ public virtual async Task HandleEventAsync(SfsHandledEntityEventData eventData)
+ {
+ var entity = eventData.Entity;
+
+ List assembleJobs = new EditableList();
+
+ switch (entity.Type)
+ {
+ case nameof(EnumIssueType.BoxQty):
+ assembleJobs = await CreateAssembleJobWithBoxQtyTypeAsync(entity).ConfigureAwait(false);
+ break;
+ case nameof(EnumIssueType.Qty):
+ assembleJobs = await CreateAssembleJobWithQtyTypeAsync(entity).ConfigureAwait(false);
+ break;
+ }
+
+ if (assembleJobs.Any())
+ {
+ await _assembleJobAppService.CreateManyAsync(assembleJobs).ConfigureAwait(false);
+ }
+ }
+
+ ///
+ /// 驳回后
+ ///
+ ///
+ ///
+ public virtual async Task HandleEventAsync(SfsAbortedEntityEventData eventData)
+ {
+ await Task.CompletedTask.ConfigureAwait(false);
+ }
+
+ ///
+ /// 完成后
+ ///
+ ///
+ ///
+ public virtual async Task HandleEventAsync(SfsCompletedEntityEventData eventData)
+ {
+ _ = eventData.Entity;
+ // await _assembleJobAppService.CompleteByAssembleIssueRequestsAsync(entity.Number);
+
+ await Task.CompletedTask.ConfigureAwait(false);
+ }
+
+ #region 私有
+
+ #region 按数量叫料
+
+ ///
+ /// 创建注塑任务
+ ///
+ ///
+ ///
+ ///
+ private async Task> CreateAssembleJobWithQtyTypeAsync
+ (AssembleIssueRequests assembleRequest)
+ {
+ var jobs = new List();
+
+ var toLocationCodes = assembleRequest.Details.Select(p => p.ToLocationCode).Distinct().ToList(); //所有发送库位的集合
+ var toLocations = await _locationAppService.GetByCodesAsync(toLocationCodes).ConfigureAwait(false); //所有库位的集合
+
+ var assembleRequestDetails = assembleRequest.Details.Where(p => p.ToBeIssuedQty > 0); //所有还没发送物品的集合
+ foreach (var assembleRequestDetail in assembleRequestDetails) //如果有还有剩余未叫料的数量 则创建新的任务
+ {
+ var toLocation =
+ toLocations.FirstOrDefault(p => p.Code == assembleRequestDetail.ToLocationCode); //判断目标库位是否存在
+ Check.NotNull(toLocation, "库位代码", $"库位 {assembleRequestDetail.ToLocationCode} 不存在");
+
+ //创建详情
+ var jobDetails =
+ await CreateAssembleJobDetailInputsWithQtyTypeAsync(assembleRequest, assembleRequestDetail,
+ toLocation.LocationGroupCode).ConfigureAwait(false);
+ if (!jobDetails.Any())
+ {
+ continue;
+ }
+
+ var fromLocationCode = jobDetails[0].RecommendFromLocationCode;
+ var fromLocation = await _locationAppService.GetByCodeAsync(fromLocationCode).ConfigureAwait(false);
+ var job = jobs.FirstOrDefault(p => p.WorkGroupCode == fromLocation?.WorkGroupCode);
+ if (job == null || job.Details.Any(p => p.RecommendToLocationCode != assembleRequestDetail.ToLocationCode))
+ {
+ job = await BuildAssembleJobCreateInputWithQtyTypeAsync(assembleRequest, fromLocation)
+ .ConfigureAwait(false);
+ jobs.Add(job);
+ }
+
+ job.Details.AddRange(jobDetails);
+ if (assembleRequestDetail.ToBeIssuedQty < 0)
+ {
+ assembleRequestDetail.Status = EnumStatus.Close;
+ }
+ }
+
+ jobs = jobs.Where(p => p.Details.Any()).ToList();
+
+ var openRequestDetails =
+ assembleRequest.Details.Where(p => p.Status != EnumStatus.Close).ToList();
+
+ if (!openRequestDetails.Any())
+ {
+ return jobs;
+ }
+
+
+ var enableMultipleCreateAssembleJob = await SettingManager
+ .IsTrueAsync(StoreSettings.MaterialRequest.EnableMultipleCreateIssueJob).ConfigureAwait(false);
+ if (enableMultipleCreateAssembleJob)
+ {
+ //assembleRequest.Partial();
+ }
+ else
+ {
+ var sb = new StringBuilder();
+ foreach (var openRequestDetail in openRequestDetails)
+ {
+ sb.AppendLine(
+ $"{openRequestDetail.ItemCode}请求数量 {openRequestDetail.Qty},可用库存数量 {openRequestDetail.IssuedQty}");
+ }
+
+ throw new UserFriendlyException($"{sb} 可用库存数量不足, 无法生成发料任务");
+ }
+
+ return jobs;
+ }
+
+ ///
+ /// 构造注塑任务
+ ///
+ ///
+ ///
+ ///
+ private async Task BuildAssembleJobCreateInputWithQtyTypeAsync(
+ AssembleIssueRequests assembleRequest,
+ LocationDTO fromLocation)
+ {
+ AssembleJobEditInput job;
+ job = ObjectMapper.Map(assembleRequest);
+ job.JobType = EnumJobType.IssueJob;
+ job.JobStatus = EnumJobStatus.Open;
+ job.WorkGroupCode = fromLocation.WorkGroupCode;
+ job.WarehouseCode = fromLocation.WarehouseCode;
+ job.Worker = assembleRequest.Worker;
+ if (string.IsNullOrEmpty(job.Worker))
+ {
+ job.Worker = "admin";
+ }
+
+ job.AssembleIssueRequestsNumber = assembleRequest.Number;
+
+ await Task.CompletedTask.ConfigureAwait(false);
+
+ return job;
+ }
+
+ ///
+ /// 创建注塑任务明细
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ private async Task> CreateAssembleJobDetailInputsWithQtyTypeAsync(
+ AssembleIssueRequests assembleRequest,
+ AssembleIssueRequestsDetail assembleRequestDetail, string toLocationGroupCode)
+ {
+ var jobDetails = new List();
+
+ //获取推荐库存
+ var productionLineDto = await _productionLineAppService
+ .GetByLocationCodeAsync(assembleRequestDetail.ToLocationCode).ConfigureAwait(false);
+ var productionLineItemDtos = await _productionLineItemAppService
+ .GetByProductLineCodeAsync(productionLineDto.Code).ConfigureAwait(false);
+ if (productionLineItemDtos == null)
+ {
+ throw new UserFriendlyException($"物品代码【{assembleRequestDetail.ItemCode}】没有对应的【生产线物品关系】");
+ }
+
+ var productionLineItemDto =
+ productionLineItemDtos.FirstOrDefault(p => p.ItemCode == assembleRequestDetail.ItemCode);
+ var input = new RecommendBalanceRequestInput
+ {
+ ItemCode = assembleRequestDetail.ItemCode,
+ Qty = assembleRequestDetail.ToBeIssuedQty,
+ //LocationTypes = transactionType.OutLocationTypes, productionLineItemDto.RawLocationCodeListJson
+ Statuses = new EditableList { EnumInventoryStatus.OK },
+ Locations = JsonSerializer.Deserialize>(productionLineItemDto.RawLocationCodeListJson)
+ };
+
+ var recommendList = await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false);
+ //没有推荐库存时 跳过此明细 不生成任务
+ if (recommendList.Count != 0)
+ {
+ foreach (var recommend in recommendList)
+ {
+ //拿走需求量
+ var detail =
+ await BuildAssembleJobDetailWithQtyTypeAsync(assembleRequestDetail, recommend,
+ toLocationGroupCode)
+ .ConfigureAwait(false);
+ if (assembleRequest.UseOnTheWayLocation)
+ {
+ //获取在途库
+ var locationDto = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT)
+ .ConfigureAwait(false);
+
+ detail.OnTheWayLocationCode = locationDto.Code;
+ }
+
+ jobDetails.Add(detail);
+ assembleRequestDetail.IssuedQty += recommend.Qty;
+
+ //await _assembleRequestManager.UpdateDetailsAsync(assembleRequest).ConfigureAwait(false);
+ }
+ }
+
+ return jobDetails;
+ }
+
+ ///
+ /// 构造注塑任务明细
+ ///
+ ///
+ ///
+ ///
+ ///
+ private async Task BuildAssembleJobDetailWithQtyTypeAsync(
+ AssembleIssueRequestsDetail assembleRequestDetail, BalanceDTO balance, string toLocationGroupCode)
+ {
+ //ProductionLineDTO prodLine = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationGroupCode).ConfigureAwait(false);
+
+ var detail = ObjectMapper.Map(balance);
+ detail.RequestLocationCode = assembleRequestDetail.ToLocationCode;
+ detail.PositionCode = assembleRequestDetail.PositionCode;
+ detail.RecommendType = assembleRequestDetail.RecommendType;
+
+ detail.RecommendFromPackingCode = balance.PackingCode;
+ detail.RecommendFromContainerCode = balance.ContainerCode;
+ detail.RecommendFromSupplierBatch = balance.SupplierBatch;
+ detail.RecommendFromProduceDate = balance.ProduceDate;
+ detail.RecommendFromExpireDate = balance.ExpireDate;
+ detail.RecommendFromLot = balance.Lot;
+ detail.RecommendFromProduceDate = balance.ProduceDate;
+ detail.RecommendFromArriveDate = balance.ArriveDate;
+ detail.RecommendFromLocationArea = balance.LocationArea;
+ detail.RecommendFromLocationCode = balance.LocationCode;
+ detail.RecommendFromLocationErpCode = balance.LocationErpCode;
+ detail.RecommendFromLocationGroup = balance.LocationGroup;
+ detail.RecommendFromWarehouseCode = balance.WarehouseCode;
+ detail.RecommendFromQty = balance.Qty;
+ detail.Uom = balance.Uom;
+
+ detail.RecommendToLocationCode = assembleRequestDetail.ToLocationCode;
+ detail.RecommendToLocationErpCode = assembleRequestDetail.ToLocationErpCode;
+ detail.RecommendToLocationArea = assembleRequestDetail.ToLocationArea;
+ detail.RecommendToWarehouseCode = assembleRequestDetail.ToWarehouseCode;
+
+ //detail.ProdLine = prodLine == null ? toLocationGroupCode : prodLine.Code;
+ detail.ProdLine = toLocationGroupCode;
+ await Task.CompletedTask.ConfigureAwait(false);
+ return detail;
+ }
+
+ #endregion
+
+ #region 按箱叫料
+
+ ///
+ /// 创建注塑任务
+ ///
+ ///
+ ///
+ ///
+ private async Task> CreateAssembleJobWithBoxQtyTypeAsync
+ (AssembleIssueRequests assembleRequest)
+ {
+ var inputJobs = new List();
+ var inputExpectOutEditInput = new ExpectOutEditInput();
+ //已用的库存的箱码集合
+ var useBalanceList = new List();
+
+ var groupByItemCodeAndLocationCode =
+ assembleRequest.Details.GroupBy(p => new { p.ItemCode, p.ToLocationCode });
+
+ foreach (var locationCodeItemCodeGroup in groupByItemCodeAndLocationCode)
+ {
+ var inputDetails = assembleRequest.Details.Where(p =>
+ p.ItemCode == locationCodeItemCodeGroup.Key.ItemCode &&
+ p.ToLocationCode == locationCodeItemCodeGroup.Key.ToLocationCode);
+ var inputDetailTemplate = inputDetails.First();
+ //获取请求下 这个零件和这个库位一个需要多少箱
+ var sumBoxQty = inputDetails.Sum(p => p.BoxQty);
+ //获取生产线
+ var productionLineDto = await _productionLineAppService
+ .GetByLocationCodeAsync(inputDetails.First().ToLocationCode).ConfigureAwait(false);
+ if (productionLineDto == null)
+ {
+ throw new UserFriendlyException($"库位【{inputDetailTemplate.ToLocationCode}】没有对应的【生产线】");
+ }
+
+ var productLineCodeAndItemCode = await _productionLineItemAppService
+ .GetByProductLineCodeAndItemCodeAsync(productionLineDto.Code, inputDetailTemplate.ItemCode)
+ .ConfigureAwait(false);
+ if (productLineCodeAndItemCode == null)
+ {
+ throw new UserFriendlyException(
+ $"物品代码【{inputDetailTemplate.ItemCode}】在生产线【{productionLineDto.Code}】中没有对应的【生产线物品关系】");
+ }
+
+ //获取可用库存
+ var input = new RecommendBalanceRequestInput
+ {
+ ItemCode = locationCodeItemCodeGroup.Key.ItemCode,
+ Qty = decimal.MaxValue,
+ Statuses = new EditableList { EnumInventoryStatus.OK },
+ Locations = JsonSerializer.Deserialize>(productLineCodeAndItemCode
+ .RawLocationCodeListJson)
+ };
+ var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);
+ usableList = usableList.Where(p => !useBalanceList.Contains(p.PackingCode)).ToList();
+ if (usableList.Any())
+ {
+ for (var i = 0; i < sumBoxQty; i++)
+ {
+ var firstUsable = usableList.First();
+ useBalanceList.Add(firstUsable.PackingCode);
+ usableList.Remove(firstUsable);
+
+ var assembleJobEditInput =
+ await BuildAssembleJobCreateInputWithBoxQtyTypeAsync(assembleRequest, inputDetailTemplate,
+ firstUsable)
+ .ConfigureAwait(false);
+
+ inputJobs.Add(assembleJobEditInput);
+ }
+ }
+ }
+
+ return inputJobs;
+ }
+
+ ///
+ /// 构造注塑任务
+ ///
+ ///
+ ///
+ ///
+ ///
+ private async Task BuildAssembleJobCreateInputWithBoxQtyTypeAsync(
+ AssembleIssueRequests assembleRequest,
+ AssembleIssueRequestsDetail assembleRequestDetail, BalanceDTO balanceDtos)
+ {
+ var job = ObjectMapper.Map(assembleRequest);
+ job.JobType = EnumJobType.IssueJob;
+ job.JobStatus = EnumJobStatus.Open;
+ job.WorkGroupCode = assembleRequestDetail.ToLocationGroup;
+ job.WarehouseCode = assembleRequestDetail.ToWarehouseCode;
+ job.Worker = assembleRequest.Worker;
+ job.AssembleIssueRequestsNumber = assembleRequest.Number;
+
+ job.Details.Add(await BuildAssembleJobDetailWithBoxQtyTypeAsync(assembleRequestDetail, balanceDtos)
+ .ConfigureAwait(false));
+
+ await Task.CompletedTask.ConfigureAwait(false);
+
+ return job;
+ }
+
+ ///
+ /// 构造注塑任务明细
+ ///
+ ///
+ ///
+ ///
+ ///
+ private async Task BuildAssembleJobDetailWithBoxQtyTypeAsync(
+ AssembleIssueRequestsDetail assembleRequestDetail, BalanceDTO balance)
+ {
+ var detail = new AssembleJobDetailInput();
+ detail.RequestLocationCode = assembleRequestDetail.ToLocationCode;
+ detail.RequestLocationGroup = assembleRequestDetail.ToLocationGroup;
+ detail.RequestLocationArea = assembleRequestDetail.ToLocationArea;
+ detail.RequestLocationErpCode = assembleRequestDetail.ToLocationErpCode;
+ detail.RequestWarehouseCode = assembleRequestDetail.ToWarehouseCode;
+
+ detail.PositionCode = assembleRequestDetail.PositionCode;
+ detail.RecommendType = assembleRequestDetail.RecommendType;
+ detail.ProdLine = assembleRequestDetail.ToLocationCode;
+
+ detail.ItemCode = assembleRequestDetail.ItemCode;
+ detail.ItemName = assembleRequestDetail.ItemName;
+ detail.ItemDesc1 = assembleRequestDetail.ItemDesc1;
+ detail.ItemDesc2 = assembleRequestDetail.ItemDesc2;
+
+ detail.Status = EnumInventoryStatus.OK;
+ detail.Uom = balance.Uom;
+
+ detail.RecommendFromPackingCode = balance.PackingCode;
+ detail.RecommendFromContainerCode = balance.ContainerCode;
+ detail.RecommendFromLot = balance.Lot;
+
+ detail.RecommendFromQty = balance.Qty;
+
+ detail.RecommendFromSupplierBatch = balance.SupplierBatch;
+ detail.RecommendFromProduceDate = balance.ProduceDate;
+ detail.RecommendFromExpireDate = balance.ExpireDate;
+ detail.RecommendFromProduceDate = balance.ProduceDate;
+ detail.RecommendFromArriveDate = balance.ArriveDate;
+
+ detail.RecommendFromLocationArea = balance.LocationArea;
+ detail.RecommendFromLocationCode = balance.LocationCode;
+ detail.RecommendFromLocationErpCode = balance.LocationErpCode;
+ detail.RecommendFromLocationGroup = balance.LocationGroup;
+ detail.RecommendFromWarehouseCode = balance.WarehouseCode;
+
+ detail.RecommendToPackingCode = balance.PackingCode;
+ detail.RecommendToContainerCode = balance.ContainerCode;
+ detail.RecommendToLot = balance.Lot;
+
+ detail.RecommendToQty = balance.Qty;
+
+ detail.RecommendToSupplierBatch = balance.SupplierBatch;
+ detail.RecommendToProduceDate = balance.ProduceDate;
+ detail.RecommendToExpireDate = balance.ExpireDate;
+ detail.RecommendToProduceDate = balance.ProduceDate;
+ detail.RecommendToArriveDate = balance.ArriveDate;
+
+ detail.RecommendToLocationCode = assembleRequestDetail.ToLocationCode;
+ detail.RecommendToLocationErpCode = assembleRequestDetail.ToLocationErpCode;
+ detail.RecommendToLocationArea = assembleRequestDetail.ToLocationArea;
+ detail.RecommendToWarehouseCode = assembleRequestDetail.ToWarehouseCode;
+ detail.RecommendToLocationGroup = assembleRequestDetail.ToLocationGroup;
+
+ await Task.CompletedTask.ConfigureAwait(false);
+ return detail;
+ }
+
+ #endregion
+
+ #endregion
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/AssembleRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/AssembleRequestEventHandler.cs
deleted file mode 100644
index 85bc4ca67..000000000
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/AssembleRequestEventHandler.cs
+++ /dev/null
@@ -1,281 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using FluentValidation.Validators;
-using Volo.Abp;
-using Volo.Abp.EventBus;
-using Volo.Abp.SettingManagement;
-using Win_in.Sfs.Basedata.Application.Contracts;
-using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Shared.Event;
-using Win_in.Sfs.Wms.Inventory.Application.Contracts;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Domain.Shared;
-
-namespace Win_in.Sfs.Wms.Store.Event.BusinessRequest;
-
-public class AssembleRequestEventHandler
- : StoreEventHandlerBase
- , ILocalEventHandler>
- , ILocalEventHandler>
- , ILocalEventHandler>
- , ILocalEventHandler>
- , ILocalEventHandler>>
-{
- private readonly IAssembleJobAppService _assembleJobAppService;
- private readonly IProductionLineAppService _productionLineAppService;
- private readonly IAssembleRequestManager _assembleRequestManager;
- private readonly ILocationAppService _locationAppService;
- private readonly IBalanceAppService _balanceAppService;
-
- public AssembleRequestEventHandler(
- IAssembleJobAppService assembleJobAppService
- , IProductionLineAppService productionLineAppService
- , IAssembleRequestManager assembleRequestManager
- , ILocationAppService locationAppService
- , IBalanceAppService balanceAppService)
- {
- _assembleJobAppService = assembleJobAppService;
- _productionLineAppService = productionLineAppService;
- _assembleRequestManager = assembleRequestManager;
- _locationAppService = locationAppService;
- _balanceAppService = balanceAppService;
- }
-
- ///
- /// 创建后
- ///
- /// Event data
- public virtual async Task HandleEventAsync(SfsCreatedEntityEventData eventData)
- {
- var entity = eventData.Entity;
-
- //if (entity.AutoSubmit)
- //{
- // await _assembleRequestManager.SubmitAsync(entity).ConfigureAwait(false);
- //}
- }
-
- ///
- /// 批量创建后
- ///
- /// Event data
- public virtual async Task HandleEventAsync(SfsCreatedEntityEventData> eventData)
- {
- var entitys = eventData.Entity;
- foreach (var entity in entitys)
- {
- if (entity.AutoSubmit)
- {
- await _assembleRequestManager.SubmitAsync(entity).ConfigureAwait(false);
- }
-
- }
- }
-
- ///
- /// 执行后
- ///
- ///
- ///
- public virtual async Task HandleEventAsync(SfsHandledEntityEventData eventData)
- {
- var entity = eventData.Entity;
- var assembleJobs = await BuildAssembleJobAsync(entity).ConfigureAwait(false);
- if (assembleJobs.Any())
- {
- await _assembleJobAppService.CreateManyAsync(assembleJobs).ConfigureAwait(false);
- }
- }
-
- ///
- /// 驳回后
- ///
- ///
- ///
- public virtual async Task HandleEventAsync(SfsAbortedEntityEventData eventData)
- {
-
- }
-
- ///
- /// 完成后
- ///
- ///
- ///
- public virtual async Task HandleEventAsync(SfsCompletedEntityEventData eventData)
- {
- _ = eventData.Entity;
- // await _assembleJobAppService.CompleteByAssembleRequestAsync(entity.Number);
-
- await Task.CompletedTask.ConfigureAwait(false);
- }
-
- #region 私有
-
- private async Task> BuildAssembleJobAsync
- (AssembleRequest assembleRequest)
- {
- var jobs = new List();
-
- var transactionType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);//库存事务
-
- var toLocationCodes = assembleRequest.Details.Select(p => p.ToLocationCode).Distinct().ToList();//所有发送库位的集合
- var toLocations = await _locationAppService.GetByCodesAsync(toLocationCodes).ConfigureAwait(false);//所有库位的集合
-
- var assembleRequestDetails = assembleRequest.Details.Where(p => p.ToBeIssuedQty > 0);//所有还没发送物品的集合
- foreach (var assembleRequestDetail in assembleRequestDetails)//如果有还有剩余未叫料的数量 则创建新的任务
- {
- var toLocation = toLocations.FirstOrDefault(p => p.Code == assembleRequestDetail.ToLocationCode);//判断目标库位是否存在
- Check.NotNull(toLocation, "库位代码", $"库位 {assembleRequestDetail.ToLocationCode} 不存在");
-
- //创建详情
- var jobDetails = await BuildAssembleJobDetailInputsAsync(assembleRequest, assembleRequestDetail, transactionType, toLocation.LocationGroupCode).ConfigureAwait(false);
- if (!jobDetails.Any())
- {
- continue;
- }
-
- var fromLocationCode = jobDetails[0].RecommendFromLocationCode;
- var fromLocation = await _locationAppService.GetByCodeAsync(fromLocationCode).ConfigureAwait(false);
- var job = jobs.FirstOrDefault(p => p.WorkGroupCode == fromLocation?.WorkGroupCode);
- if (job == null || job.Details.Any(p => p.ToLocationCode != assembleRequestDetail.ToLocationCode))
- {
- job = BuildAssembleJobCreateInput(assembleRequest, fromLocation);
- jobs.Add(job);
- }
- job.Details.AddRange(jobDetails);
- if (assembleRequestDetail.ToBeIssuedQty < 0)
- {
- assembleRequestDetail.Status = EnumStatus.Close;
- }
- }
-
- jobs = jobs.Where(p => p.Details.Any()).ToList();
-
- var openRequestDetails =
- assembleRequest.Details.Where(p => p.Status != EnumStatus.Close).ToList();
-
- if (!openRequestDetails.Any())
- {
- return jobs;
- }
-
-
- var enableMultipleCreateAssembleJob = await SettingManager.IsTrueAsync(StoreSettings.MaterialRequest.EnableMultipleCreateIssueJob).ConfigureAwait(false);
- if (enableMultipleCreateAssembleJob)
- {
-
- //assembleRequest.Partial();
- }
- else
- {
- var sb = new StringBuilder();
- foreach (var openRequestDetail in openRequestDetails)
- {
- sb.AppendLine($"{openRequestDetail.ItemCode}请求数量 {openRequestDetail.Qty},可用库存数量 {openRequestDetail.IssuedQty}");
- }
- throw new UserFriendlyException($"{sb} 可用库存数量不足, 无法生成发料任务");
- }
- return jobs;
- }
-
- private AssembleJobEditInput BuildAssembleJobCreateInput(AssembleRequest assembleRequest, LocationDTO fromLocation)
- {
- AssembleJobEditInput job;
- job = ObjectMapper.Map(assembleRequest);
- job.JobType = EnumJobType.IssueJob;
- job.JobStatus = EnumJobStatus.Open;
- job.WorkGroupCode = fromLocation.WorkGroupCode;
- job.WarehouseCode = fromLocation.WarehouseCode;
-
- job.Worker = assembleRequest.Worker;
- if (string.IsNullOrEmpty(job.Worker))
- {
- job.Worker = "admin";
- }
- job.AssembleRequestNumber = assembleRequest.Number;
- return job;
- }
-
- private async Task> BuildAssembleJobDetailInputsAsync(AssembleRequest assembleRequest,
- AssembleRequestDetail assembleRequestDetail, TransactionTypeDTO transactionType, string toLocationGroupCode)
- {
- var jobDetails = new List