diff --git a/be/Hosts/Basedata.Host/Win_in.Sfs.Basedata.HttpApi.Host/Properties/PublishProfiles/FolderProfile.pubxml b/be/Hosts/Basedata.Host/Win_in.Sfs.Basedata.HttpApi.Host/Properties/PublishProfiles/FolderProfile.pubxml
index 4adc13526..f54bfeceb 100644
--- a/be/Hosts/Basedata.Host/Win_in.Sfs.Basedata.HttpApi.Host/Properties/PublishProfiles/FolderProfile.pubxml
+++ b/be/Hosts/Basedata.Host/Win_in.Sfs.Basedata.HttpApi.Host/Properties/PublishProfiles/FolderProfile.pubxml
@@ -4,17 +4,17 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
-->
- true
+ false
false
true
Release
Any CPU
FileSystem
- .\..\..\..\OutPut\BaseData\
+ D:\发布\WMS
FileSystem
net6.0
6184eab9-b44b-42fc-8cd3-e36933a3dad5
false
-
+
\ No newline at end of file
diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs
index 0cfdd9257..f8ac25b4b 100644
--- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs
@@ -41,8 +41,21 @@ public class IssueNoteController : AbpController
p.ToPackingCode = string.Empty;
if(p.PositionCode.Contains('W'))
{
- p.RecommendType = EnumRecommendType.PositionCode;
+ p.RecommendType = EnumRecommendType.W;
}
+ else if(p.PositionCode.Contains('Q'))
+ {
+ p.RecommendType = EnumRecommendType.Q;
+ }
+ else if (p.PositionCode.Contains('K'))
+ {
+ p.RecommendType = EnumRecommendType.K;
+ }
+ else
+ {
+ p.RecommendType = EnumRecommendType.None;
+ }
+
});
await _issueNoteAppService.CreateAsync(input).ConfigureAwait(false);
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs
index 9f75a7fb0..1372ef60a 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs
@@ -52,5 +52,6 @@ public partial class BasedataApplicationAutoMapperProfile : Profile
EquipmentAutoMapperProfile();
SplitPackingRecAutoMapperProfile();
KittingAutoMapperProfile();
+
}
}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs
index 8f6eccad5..486c39133 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs
@@ -51,15 +51,19 @@ public class PositionCodeAppService
if(input.Code.Contains('W'))
{
- input.Type = EnumRecommendType.PositionCode;
+ input.Type = EnumRecommendType.W;
+ }
+ else if (input.Code.Contains('Q'))
+ {
+ input.Type = EnumRecommendType.Q;
}
else if(input.Code.Contains('K'))
{
- input.Type = EnumRecommendType.KittingCode;
+ input.Type = EnumRecommendType.K;
}
else
{
- input.Type = EnumRecommendType.WareCode;
+ input.Type = EnumRecommendType.None;
}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAutoMapperProfile.cs
index 7a21ce66d..b069821b0 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAutoMapperProfile.cs
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAutoMapperProfile.cs
@@ -22,7 +22,7 @@ public partial class BasedataApplicationAutoMapperProfile : Profile
CreateMap()
.Ignore(x => x.ReportStatus)
- .Ignore(x => x.ReportReason);
+ .Ignore(x => x.ReportReason);
}
}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/PositionCode.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/PositionCode.cs
index 751e5561f..8c5028cdb 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/PositionCode.cs
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/PositionCode.cs
@@ -13,8 +13,7 @@ public class PositionCode : SfsBaseDataAggregateRootBase, IHasCode
///
/// 位置代码
///
- [Display(Name = "位置代码")]
- [IgnoreUpdate]
+ [Display(Name = "位置代码")]
public string Code { get; set; }
///
/// 物料号
diff --git a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumRecommendType.cs b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumRecommendType.cs
index f56c9c2ab..28c6e87d1 100644
--- a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumRecommendType.cs
+++ b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumRecommendType.cs
@@ -7,21 +7,26 @@ namespace Win_in.Sfs.Shared.Domain.Shared;
///
public enum EnumRecommendType
{
+ ///
+ /// 空枚举
+ ///
+ None = 0,
+
///
/// 位置码
///
[Display(Name = "位置码")]
- PositionCode = 1,
+ W = 1,
///
/// 器具码
///
[Display(Name = "器具码")]
- WareCode = 2,
+ Q = 2,
///
/// Kitting箱码
///
[Display(Name = "Kitting箱码")]
- KittingCode = 3,
+ K = 3,
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/ProductRecyclePermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/ProductRecyclePermissions.cs
new file mode 100644
index 000000000..ca438e6ff
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/ProductRecyclePermissions.cs
@@ -0,0 +1,20 @@
+using Volo.Abp.Authorization.Permissions;
+using Win_in.Sfs.Wms.Store.Domain;
+
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
+
+public static class ProductRecyclePermissions
+{
+ public const string Default = StorePermissions.GroupName + "." + nameof(ProductRecycleJob);
+ public const string Create = Default + "." + StorePermissions.CreateStr;
+ public const string Update = Default + "." + StorePermissions.UpdateStr;
+ public const string Delete = Default + "." + StorePermissions.DeleteStr;
+
+ public static void AddProductRecycleJobPermission(this PermissionGroupDefinition permissionGroup)
+ {
+ var productRecycleJobPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(ProductRecycleJob)));
+ productRecycleJobPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
+ productRecycleJobPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
+ productRecycleJobPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj
index a14d0abb2..7430f5c7e 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj
@@ -42,6 +42,8 @@
+
+
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs
index 209abd419..64d689dbc 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs
@@ -214,9 +214,21 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase
+{
+ Task GetAsync(Expression> expression);
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/IProductRecycleJobRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/IProductRecycleJobRepository.cs
new file mode 100644
index 000000000..3aeb5085e
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/IProductRecycleJobRepository.cs
@@ -0,0 +1,6 @@
+namespace Win_in.Sfs.Wms.Store.Domain;
+
+public interface IProductRecycleJobRepository : ISfsJobRepositoryBase
+{
+
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleExtension.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleExtension.cs
new file mode 100644
index 000000000..d57cac32a
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleExtension.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Timing;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Wms.Store.Domain;
+
+public static class ProductRecycleExtension
+{
+ public static ProductRecycleJob SetWorkGroup(this ProductRecycleJob job, string warehouseCode, string workGroupCode)
+ {
+ job.WorkGroupCode = workGroupCode;
+ job.WarehouseCode = warehouseCode;
+ return job;
+ }
+
+ public static ProductRecycleJob SetPriority(this ProductRecycleJob job, IClock clock)
+ {
+ job.Priority = PriorityHelper.GetPriority(clock);
+ job.PriorityIncrement = 1;
+ return job;
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJob.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJob.cs
new file mode 100644
index 000000000..99c3ebc7c
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJob.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Threading.Tasks;
+using Win_in.Sfs.Shared.Domain.Entities;
+
+namespace Win_in.Sfs.Wms.Store.Domain;
+
+///
+/// 产品退拆任务
+///
+[Display(Name = "产品退拆任务")]
+public class ProductRecycleJob : SfsJobAggregateRootBase
+{
+ ///
+ /// 车间
+ ///
+ [Display(Name = "车间")]
+ public string Workshop { get; set; }
+
+ ///
+ /// 班次
+ ///
+ [Display(Name = "班次")]
+ public string Shift { get; set; }
+
+ ///
+ /// 明细列表
+ ///
+ [IgnoreUpdate]
+ public override List Details { get; set; } = new List();
+
+ ///
+ /// 设置任务明细的实际库位和实际数量
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public virtual async Task SetDetail(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.HandledToLocationCode = handledLocationCode;
+ detail.HandledToLocationErpCode = handledLocationErpCode;
+ detail.HandledToWarehouseCode = 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/ProductRecycleJobs/ProductRecycleJobDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJobDetail.cs
new file mode 100644
index 000000000..b8d8827f6
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJobDetail.cs
@@ -0,0 +1,88 @@
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using Volo.Abp.Data;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Wms.Store.Domain;
+
+public class ProductRecycleJobDetail : SfsJobRecommendToDetailEntityBase
+{
+ ///
+ /// Bom版本
+ ///
+ public string BomVersion { get; set; }
+
+ ///
+ /// 库位代码
+ ///
+ public string LocationCode { get; set; }
+
+ ///
+ /// 库区
+ ///
+ public string LocationArea { get; set; }
+
+ ///
+ /// 库位组
+ ///
+ public string LocationGroup { get; set; }
+
+ ///
+ /// ERP库位代码
+ ///
+ public string LocationErpCode { get; set; }
+
+ ///
+ /// 原料库位代码
+ ///
+ public string RawLocationCode { get; set; }
+
+ ///
+ /// 原料库区
+ ///
+ public string RawLocationArea { get; set; }
+
+ ///
+ /// 原料库位组
+ ///
+ public string RawLocationGroup { get; set; }
+
+ ///
+ /// 原料ERP库位
+ ///
+ public string RawLocationErpCode { get; set; }
+
+ ///
+ /// 原料仓库
+ ///
+ public string RawWarehouseCode { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ [Display(Name = "计量单位")]
+ [MaxLength(SfsPropertyConst.CodeLength)]
+ public string Uom { get; set; }
+
+ ///
+ /// 数量
+ ///
+ [Display(Name = "数量")]
+ [Column(TypeName = "decimal(18,6)")]
+ public decimal Qty { get; set; }
+
+ ///
+ /// 扩展属性
+ ///
+ public ExtraPropertyDictionary ExtraProperties { get; } = new ExtraPropertyDictionary();
+
+ ///
+ /// 库存状态
+ ///
+ public EnumInventoryStatus Status { get; set; }
+
+ ///
+ /// 仓库代码
+ ///
+ public string WarehouseCode { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJobManager.cs
new file mode 100644
index 000000000..f6f8db851
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJobManager.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Win_in.Sfs.Wms.Store.Jobs.ProductRecycleJobs;
+internal class ProductRecycleJobManager
+{
+}