Browse Source

修改 业务库移

dev_DY_CC
郑勃旭 1 year ago
parent
commit
2927329071
  1. 64
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferLibNoteController.cs
  2. 450
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/TransferLibJobs/DTOs/TransferLibJobDetailDTO.cs
  3. 452
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/TransferLibJobs/Inputs/TransferLibJobDetailInput.cs
  4. 450
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/DTOs/TransferLibNoteDetailDTO.cs
  5. 76
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/ITransferLibNoteAppService.cs
  6. 453
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/Inputs/TransferLibNoteDetailInput.cs
  7. 393
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferLibNotes/TransferLibNoteAppService.cs
  8. 30
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferLibNotes/TransferLibNoteMapperProfile.cs
  9. 62
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/TransferLibRequests/TransferLibRequestAppService.cs
  10. 33
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJob.cs
  11. 444
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobDetail.cs
  12. 428
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/TransferLibNotes/TransferLibNoteDetail.cs
  13. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/TransferLibNotes/TransferLibNoteDbContextModelCreatingExtensions.cs
  14. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/TransferLibRequests/TransferLibRequestDbContextModelCreatingExtensions.cs
  15. 21
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/TransferLibJobEventHandler.cs

64
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferLibNoteController.cs

@ -120,68 +120,4 @@ public class TransferLibNoteController : AbpController
var result = await _transferLibNoteAppService.GetByNumberAsync(number).ConfigureAwait(false);
return Ok(result);
}
/// <summary>
/// 完成对应的请求
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost("complete/{id}")]
public virtual async Task<TransferLibNoteDTO> CompleteAsync(Guid id)
{
var entity = await _transferLibNoteAppService.ConfirmAsync(id).ConfigureAwait(false);
return entity;
}
/// <summary>
/// 库存转移
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("")]
public virtual async Task<TransferLibNoteDTO> Create(TransferLibNoteEditInput input)
{
return await _transferLibNoteAppService.CreateAsync(input).ConfigureAwait(false);
}
/// <summary>
/// 拆箱
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <returns></returns>
[HttpPost("split-packing")]
public async Task<TransferLibNoteDTO> SplitPackingAsync(TransferLibNoteEditInput transferLibNoteEditInput)
{
return await _transferLibNoteAppService.SplitPackingAsync(transferLibNoteEditInput).ConfigureAwait(false);
}
/// <summary>
/// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-purchase-receipt")]
public async Task<bool> SplitPacking_PurchaseReceiptAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var ret = await _transferLibNoteAppService.SplitPacking_PurchaseReceiptAsync(transferLibNoteEditInput, updateJobDetailInput).ConfigureAwait(false);
return ret;
}
/// <summary>
/// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-issue")]
public async Task<TransferLibNoteDTO> SplitPacking_IssueAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var ret = await _transferLibNoteAppService.SplitPacking_IssueAsync(transferLibNoteEditInput, updateJobDetailInput).ConfigureAwait(false);
return ret;
}
}

450
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/TransferLibJobs/DTOs/TransferLibJobDetailDTO.cs

@ -1,97 +1,467 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// //??TransferLib实体
/// //??TransferLib实体
/// </summary>
public class TransferLibJobDetailDTO : NewRecommendHandledFromTo
public class TransferLibJobDetailDTO : SfsDetailDTOBase
{
/// <summary>
/// 在途库地址
/// </summary>
[Display(Name = "在途库地址")]
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// 原因
/// </summary>
[Display(Name = "原因")]
public string Reason { get; set; }
/// <summary>
/// 执行任务状态
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
[Display(Name = "回调服务名称")]
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
[Display(Name = "回调业务类型")]
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
[Display(Name = "传入申请单号")]
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
[Display(Name = "传入任务单号")]
public string CallJobNumber { get; set; }
#endregion
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// </summary>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary>
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 校验
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
#region 开关
//箱码
public bool CheckPackingCodeFrom { get; set; }
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
public bool CheckPackingCodeTo { get; set; }
//批次
public bool CheckLotFrom { get; set; }
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
public bool CheckLotTo { get; set; }
//零件号
public bool CheckItemCodeFrom { get; set; }
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
public bool CheckItemCodeTo { get; set; }
//状态
public bool CheckStatusFrom { get; set; }
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
public bool CheckStatusTo { get; set; }
//库位
public bool CheckLocationCodeFrom { get; set; }
public bool IsLocationCodeFrom { get; set; }
public bool CheckLocationCodeTo { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool CheckLocationGroupFrom { get; set; }
public bool IsLocationGroupFrom { get; set; }
public bool CheckLocationGroupTo { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool CheckLocationAreaFrom { get; set; }
public bool IsLocationAreaFrom { get; set; }
public bool CheckLocationAreaTo { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool CheckLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
public bool CheckLocationErpCodeTo { get; set; }
//数量
public bool CheckQtyFrom { get; set; }
public bool IsQtyFrom { get; set; }
public bool CheckQtyTo { get; set; }
public bool IsQtyTo { get; set; }
#endregion
}

452
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/TransferLibJobs/Inputs/TransferLibJobDetailInput.cs

@ -1,101 +1,467 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Data;
using Win_in.Sfs.Shared.Domain;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// //??TransferLib实体
/// //??TransferLib实体
/// </summary>
public class TransferLibJobDetailInput : NewRecommendHandledFromTo
public class TransferLibJobDetailInput : SfsStoreCreateOrUpdateInputBase
{
/// <summary>
/// 在途库地址
/// </summary>
[Display(Name = "在途库地址")]
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// 原因
/// </summary>
[Display(Name = "原因")]
[StringLength(SfsEfCorePropertyConst.RemarkLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Reason { get; set; }
/// <summary>
/// 执行任务状态
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
[Display(Name = "回调服务名称")]
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
[Display(Name = "回调业务类型")]
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
[Display(Name = "传入申请单号")]
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
[Display(Name = "传入任务单号")]
public string CallJobNumber { get; set; }
#endregion
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// </summary>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary>
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
#region 校验
#region 开关
//箱码
public bool CheckPackingCodeFrom { get; set; }
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
public bool CheckPackingCodeTo { get; set; }
//批次
public bool CheckLotFrom { get; set; }
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
public bool CheckLotTo { get; set; }
//零件号
public bool CheckItemCodeFrom { get; set; }
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
public bool CheckItemCodeTo { get; set; }
//状态
public bool CheckStatusFrom { get; set; }
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
public bool CheckStatusTo { get; set; }
//库位
public bool CheckLocationCodeFrom { get; set; }
public bool IsLocationCodeFrom { get; set; }
public bool CheckLocationCodeTo { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool CheckLocationGroupFrom { get; set; }
public bool IsLocationGroupFrom { get; set; }
public bool CheckLocationGroupTo { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool CheckLocationAreaFrom { get; set; }
public bool IsLocationAreaFrom { get; set; }
public bool CheckLocationAreaTo { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool CheckLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
public bool CheckLocationErpCodeTo { get; set; }
//数量
public bool CheckQtyFrom { get; set; }
public bool IsQtyFrom { get; set; }
public bool CheckQtyTo { get; set; }
public bool IsQtyTo { get; set; }
#endregion
}

450
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/DTOs/TransferLibNoteDetailDTO.cs

@ -1,97 +1,467 @@
using System;
using System.ComponentModel.DataAnnotations;
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.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// 库存转移记录-明细表 //??TransferLib实体
/// 库存转移记录-明细表 //??TransferLib实体
/// </summary>
public class TransferLibNoteDetailDTO : NewRecommendHandledFromTo
public class TransferLibNoteDetailDTO : SfsDetailDTOBase
{
/// <summary>
/// 在途库地址
/// </summary>
[Display(Name = "在途库地址")]
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// 原因
/// </summary>
[Display(Name = "原因")]
public string Reason { get; set; }
/// <summary>
/// 执行任务状态
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
[Display(Name = "回调服务名称")]
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
[Display(Name = "回调业务类型")]
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
[Display(Name = "传入申请单号")]
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
[Display(Name = "传入任务单号")]
public string CallJobNumber { get; set; }
#endregion
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// </summary>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary>
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
#region 校验
#region 开关
//箱码
public bool CheckPackingCodeFrom { get; set; }
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
public bool CheckPackingCodeTo { get; set; }
//批次
public bool CheckLotFrom { get; set; }
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
public bool CheckLotTo { get; set; }
//零件号
public bool CheckItemCodeFrom { get; set; }
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
public bool CheckItemCodeTo { get; set; }
//状态
public bool CheckStatusFrom { get; set; }
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
public bool CheckStatusTo { get; set; }
//库位
public bool CheckLocationCodeFrom { get; set; }
public bool IsLocationCodeFrom { get; set; }
public bool CheckLocationCodeTo { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool CheckLocationGroupFrom { get; set; }
public bool IsLocationGroupFrom { get; set; }
public bool CheckLocationGroupTo { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool CheckLocationAreaFrom { get; set; }
public bool IsLocationAreaFrom { get; set; }
public bool CheckLocationAreaTo { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool CheckLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
public bool CheckLocationErpCodeTo { get; set; }
//数量
public bool CheckQtyFrom { get; set; }
public bool IsQtyFrom { get; set; }
public bool CheckQtyTo { get; set; }
public bool IsQtyTo { get; set; }
#endregion
}

76
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/ITransferLibNoteAppService.cs

@ -9,82 +9,10 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface ITransferLibNoteAppService :
ISfsStoreMasterReadOnlyAppServiceBase<TransferLibNoteDTO, SfsStoreRequestInputBase, TransferLibNoteDetailDTO, SfsStoreRequestInputBase>
{
Task<TransferLibNoteDTO> CreateAsync(TransferLibNoteEditInput input);
Task<PagedResultDto<TransferLibNoteDTO>> GetWipTransferListAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default);
Task<PagedResultDto<TransferLibNoteDTO>> GetAreaTransferListAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default);
Task<PagedResultDto<TransferLibNoteDTO>> GetCustomerTransferListAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default);
Task<PagedResultDto<TransferLibNoteDTO>> GetListForDiffERPLocAsync(
SfsStoreRequestInputBase sfsRequestDTO,
bool includeDetails = false,
CancellationToken cancellationToken = default);
Task<PagedResultDto<TransferLibNoteDTO>> GetInsideTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO,
bool includeDetails = false,
CancellationToken cancellationToken = default);
Task<TransferLibNoteDTO> ConfirmAsync(Guid id);
/// <summary>
/// 库存转移
/// ¿â´æ×ªÒÆ
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<List<TransferLibNoteDTO>> CreateManyAsync(List<TransferLibNoteEditInput> input);
/// <summary>
/// 拆箱
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <returns></returns>
Task<TransferLibNoteDTO> SplitPackingAsync(TransferLibNoteEditInput transferLibNoteEditInput);
/// <summary>
/// 按条件获取拆箱的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
Task<PagedResultDto<TransferLibNoteDTO>> GetSplitPackingTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default);
/// <summary>
/// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
Task<bool> SplitPacking_PurchaseReceiptAsync(TransferLibNoteEditInput transferLibNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
/// <summary>
/// 质检拆箱,同时更新、插入Inspect任务表(不更新申请表)
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
Task<TransferLibNoteDTO> SplitPacking_InspectAsync(TransferLibNoteEditInput transferLibNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
/// <summary>
/// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
Task<TransferLibNoteDTO> SplitPacking_IssueAsync(TransferLibNoteEditInput transferLibNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
Task<TransferLibNoteDTO> CreateAsync(TransferLibNoteEditInput input);
}

453
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferLibNotes/Inputs/TransferLibNoteDetailInput.cs

@ -1,100 +1,467 @@
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.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// 库存转移记录-明细表 //??TransferLib实体
/// 库存转移记录-明细表 //??TransferLib实体
/// </summary>
public class TransferLibNoteDetailInput : NewRecommendHandledFromTo
public class TransferLibNoteDetailInput : SfsDetailInputBase
{
/// <summary>
/// 在途库地址
/// </summary>
[Display(Name = "在途库地址")]
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// 原因
/// </summary>
[Display(Name = "原因")]
[StringLength(SfsEfCorePropertyConst.RemarkLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Reason { get; set; }
/// <summary>
/// 执行任务状态
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
[Display(Name = "回调服务名称")]
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
[Display(Name = "回调业务类型")]
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
[Display(Name = "传入申请单号")]
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
[Display(Name = "传入任务单号")]
public string CallJobNumber { get; set; }
#endregion
#region 校验
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// </summary>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary>
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
#region 开关
//箱码
public bool CheckPackingCodeFrom { get; set; }
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
public bool CheckPackingCodeTo { get; set; }
//批次
public bool CheckLotFrom { get; set; }
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
public bool CheckLotTo { get; set; }
//零件号
public bool CheckItemCodeFrom { get; set; }
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
public bool CheckItemCodeTo { get; set; }
//状态
public bool CheckStatusFrom { get; set; }
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
public bool CheckStatusTo { get; set; }
//库位
public bool CheckLocationCodeFrom { get; set; }
public bool IsLocationCodeFrom { get; set; }
public bool CheckLocationCodeTo { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool CheckLocationGroupFrom { get; set; }
public bool IsLocationGroupFrom { get; set; }
public bool CheckLocationGroupTo { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool CheckLocationAreaFrom { get; set; }
public bool IsLocationAreaFrom { get; set; }
public bool CheckLocationAreaTo { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool CheckLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
public bool CheckLocationErpCodeTo { get; set; }
//数量
public bool CheckQtyFrom { get; set; }
public bool IsQtyFrom { get; set; }
public bool CheckQtyTo { get; set; }
public bool IsQtyTo { get; set; }
#endregion
}

393
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferLibNotes/TransferLibNoteAppService.cs

@ -67,269 +67,7 @@ public class TransferLibNoteAppService : SfsStoreWithDetailsAppServiceBase
_issueJobAppService = issueJobAppService;
_expectOutAppService = expectOutAppService;
}
#region 东阳使用
/// <summary>
/// 用来重写 导入数据时可以加工数据
/// </summary>
/// <param name="dictionary"></param>
/// <returns></returns>
protected override async Task<Dictionary<TransferLibNote, EntityState>> ImportProcessingEntityAsync(
Dictionary<TransferLibNote, EntityState> dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var transferLibNote in addList)
{
if (transferLibNote.Type == EnumTransSubType.Transfer_Inside.GetDisplayName()) //储位内调拨
{
transferLibNote.Type = EnumTransSubType.Transfer_Inside.ToString();//重点 需要转换
foreach (var detail in transferLibNote.Details)
{
var balanceDto = await _balanceAppService.GetByItemLocationAndPackingAsync(detail.FromPackingCode,
detail.ItemCode, detail.FromLocationCode).ConfigureAwait(false);
var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
var fromLocationDto = await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
CheckLocation(toLocationDto, detail);
CheckFromLocation(fromLocationDto, detail);
if (toLocationDto.Type != fromLocationDto.Type)
{
throw new UserFriendlyException($"来源库位与目标库位类型不一致");
}
detail.OnTheWayLocationCode = bool.FalseString;
detail.ItemCode=balanceDto.ItemCode;
detail.ArriveDate=balanceDto.ArriveDate;
detail.ItemDesc1=balanceDto.ItemDesc1;
detail.ItemDesc2=balanceDto.ItemDesc2;
detail.ItemName=balanceDto.ItemName;
detail.ProduceDate=balanceDto.ProduceDate;
detail.Qty=balanceDto.Qty;
detail.Uom=balanceDto.Uom;
detail.ExpireDate=balanceDto.ExpireDate;
detail.StdPackQty=balanceDto.StdPackQty;
detail.SupplierBatch=balanceDto.SupplierBatch;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromContainerCode = balanceDto.ContainerCode;
detail.FromLocationErpCode = balanceDto.LocationErpCode;
detail.FromLocationGroup = balanceDto.LocationGroup;
detail.FromPackingCode = balanceDto.PackingCode;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromStatus = balanceDto.Status;
detail.FromWarehouseCode = balanceDto.WarehouseCode;
detail.FromLot = balanceDto.Lot;
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ToContainerCode = balanceDto.ContainerCode;
detail.ToPackingCode = balanceDto.PackingCode;
detail.ToLocationArea = balanceDto.LocationArea;
detail.ToStatus = balanceDto.Status;
detail.ToLot = balanceDto.Lot;
}
}
}
return dictionary;
}
/// <summary>
/// 拆箱
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <returns></returns>
[HttpPost("split-packing")]
public async Task<TransferLibNoteDTO> SplitPackingAsync(TransferLibNoteEditInput transferLibNoteEditInput)
{
//插入拆箱记录表
await WriteSplitPackingRec(transferLibNoteEditInput).ConfigureAwait(false);
//更新库存
transferLibNoteEditInput.Type = EnumTransSubType.Transfer_SplitPacking.ToString();
return await CreateAsync(transferLibNoteEditInput).ConfigureAwait(false);
}
#region 校验
private void CheckLocation(LocationDTO locationDto, TransferLibNoteDetail detail)
{
if (locationDto == null)
{
throw new UserFriendlyException($"库位代码为【{detail.ToLocationCode}】不存在");
}
}
private void CheckFromLocation(LocationDTO locationDto, TransferLibNoteDetail detail)
{
if (locationDto == null)
{
throw new UserFriendlyException($"库位代码为【{detail.FromLocationCode}】不存在");
}
}
#endregion
/// <summary>
/// 按条件获取拆箱的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-split-packing-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetSplitPackingTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_SplitPacking, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取线边调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-wip-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetWipTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_WIP, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-erp-loc-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetAreaTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Area, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取储位内移库的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-inside-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetInsideTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Inside, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取客户储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-custom-loc-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetCustomerTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Customer, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-diff-erp-loc-list")]
public virtual async Task<PagedResultDto<TransferLibNoteDTO>> GetListForDiffERPLocAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Warehouse, includeDetails,
cancellationToken).ConfigureAwait(false);
}
private async Task<PagedResultDto<TransferLibNoteDTO>> GetSubTypeListAsync(SfsStoreRequestInputBase sfsRequestDTO,
EnumTransSubType type, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
sfsRequestDTO.Condition.Filters.Add(new Filter
{
Action = "==",
Column = "Type",
Logic = EnumFilterLogic.And.ToString(),
Value = type.ToString()
});
var expression = sfsRequestDTO.Condition.Filters?.Count > 0
? sfsRequestDTO.Condition.Filters.ToLambda<TransferLibNote>()
: p => true;
return await GetPagedListAsync(expression, sfsRequestDTO.SkipCount, sfsRequestDTO.MaxResultCount,
sfsRequestDTO.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
}
#endregion
/// <summary>
/// 库存转移
/// </summary>
@ -380,133 +118,4 @@ public class TransferLibNoteAppService : SfsStoreWithDetailsAppServiceBase
var dto = ObjectMapper.Map<TransferLibNote, TransferLibNoteDTO>(entity);
return dto;
}
/// <summary>
/// 插入拆箱记录表
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <returns></returns>
private async Task<bool> WriteSplitPackingRec(TransferLibNoteEditInput transferLibNoteEditInput)
{
List<SplitPackingRecEditInput> recLst = new List<SplitPackingRecEditInput>();
foreach (var inputDetail in transferLibNoteEditInput.Details)
{
SplitPackingRecEditInput packRec = new SplitPackingRecEditInput();
packRec.OprType = OprTypeEnum.SplitBox;
packRec.FromPackingCode = inputDetail.FromPackingCode;
//packRec.FromTopPackingCode = inputDetail.;
packRec.FromStdPackQty = inputDetail.StdPackQty;
packRec.FromUom = inputDetail.Uom;
packRec.FromQty = inputDetail.Qty;
packRec.ToPackingCode = inputDetail.ToPackingCode;
//packRec.ToTopPackingCode = inputDetail.;
packRec.ToStdPackQty = inputDetail.StdPackQty;
packRec.ToUom = inputDetail.Uom;
packRec.ToQty = inputDetail.Qty;
packRec.ItemCode = inputDetail.ItemCode;
packRec.ItemName = inputDetail.ItemName;
packRec.ItemDesc1 = inputDetail.ItemDesc1;
packRec.ItemDesc2 = inputDetail.ItemDesc2;
packRec.FromLot = inputDetail.FromLot;
packRec.ToLot = inputDetail.ToLot;
//packRec.PurchaseInfo_PoNumber = inputDetail.; // 采购订单
//packRec.PurchaseInfo_AsnNumber = inputDetail.; //供应商发货单
//packRec.ArrivalNoticNumber = inputDetail.; //到货通知
//packRec.TaskOrderNumber = inputDetail.; //任务单
//packRec.ReceiptRecNumber = inputDetail.; //收货记录单
//packRec.PutOnShelfNumber = inputDetail.; //上架单
recLst.Add(packRec);
}
var ret = await _splitPackingRecAppService.BatchInsertAsync(recLst).ConfigureAwait(false);
return ret;
}
/// <summary>
/// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-purchase-receipt")]
public async Task<bool> SplitPacking_PurchaseReceiptAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var jobRet = await _purchaseReceiptJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var requestRet = await _purchaseReceiptRequestAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput, jobRet.PurchaseReceiptRequestNumber).ConfigureAwait(false);
bool ret = await WriteSplitPackingRec(transferLibNoteEditInput).ConfigureAwait(false); //采购收货-目检-拆箱时,还没有入库,不涉及库存操作
return ret;
}
/// <summary>
/// 质检拆箱,同时更新、插入Inspect任务表(不更新申请表)
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-inspect")]
public async Task<TransferLibNoteDTO> SplitPacking_InspectAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
//SplitPacking_UpdateDetailInput newInput = new SplitPacking_UpdateDetailInput();
//newInput.Number = updateJobDetailInput.Number;
//newInput.FromPackingCode = updateJobDetailInput.FromPackingCode;
//newInput.FromQty = updateJobDetailInput.FromQty;
//newInput.ToPackingCode = updateJobDetailInput.ToPackingCode;
//newInput.ToQty = updateJobDetailInput.ToQty;
//newInput.FromLocationCode = transferLibNoteEditInput.Details[0].FromLocationCode;
//newInput.ToLocationCode = transferLibNoteEditInput.Details[0].ToLocationCode;
//var expectOutRet = await _expectOutAppService.SaveDetail_SplitPackingAsync(newInput).ConfigureAwait(false);
var jobRet = await _inspectJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var ret = await SplitPackingAsync(transferLibNoteEditInput).ConfigureAwait(false); //库存操作
return ret;
}
/// <summary>
/// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-issue")]
public async Task<TransferLibNoteDTO> SplitPacking_IssueAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
SplitPacking_UpdateDetailInput newInput = new SplitPacking_UpdateDetailInput();
newInput.Number = updateJobDetailInput.Number;
newInput.FromPackingCode = updateJobDetailInput.FromPackingCode;
newInput.FromQty = updateJobDetailInput.FromQty;
newInput.ToPackingCode = updateJobDetailInput.ToPackingCode;
newInput.ToQty = updateJobDetailInput.ToQty;
newInput.FromLocationCode = transferLibNoteEditInput.Details[0].FromLocationCode;
newInput.ToLocationCode = transferLibNoteEditInput.Details[0].ToLocationCode;
var expectOutRet = await _expectOutAppService.SaveDetail_SplitPackingAsync(newInput).ConfigureAwait(false);
var jobRet = await _issueJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var ret = await SplitPackingAsync(transferLibNoteEditInput).ConfigureAwait(false); //库存操作
return ret;
}
/// <summary>
/// 拆箱,预计出表存在数据时不允许办理
/// </summary>
/// <param name="transferLibNoteEditInput"></param>
/// <param name="updateJobDetailInputBase"></param>
/// <returns></returns>
[HttpPost("split-packing-check-expect-out")]
public async Task<TransferLibNoteDTO> SplitPackingCheckExpectOutAsync(TransferLibNoteEditInput transferLibNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInputBase updateJobDetailInputBase)
{
var detailObj = transferLibNoteEditInput.Details[0];
SplitPacking_UpdateDetailInput newInput = new SplitPacking_UpdateDetailInput();
newInput.Number = updateJobDetailInputBase.Number;
newInput.FromPackingCode = detailObj.FromPackingCode;
newInput.FromQty = detailObj.Qty;
newInput.ToPackingCode = detailObj.ToPackingCode;
newInput.ToQty = detailObj.Qty;
newInput.FromLocationCode = detailObj.FromLocationCode;
newInput.ToLocationCode = detailObj.ToLocationCode;
var expectOutLst = await _expectOutAppService.GetListByJobNumberAsync(newInput).ConfigureAwait(false);
if (expectOutLst.Count > 0)
{
throw new UserFriendlyException($"预计出表存在数据,不允许办理拆箱:JobNumber={newInput.Number}|PackingCode={newInput.FromPackingCode}|Qty={newInput.FromQty}|LocationCode={newInput.FromLocationCode}");
}
var ret = await SplitPackingAsync(transferLibNoteEditInput).ConfigureAwait(false);
return ret;
}
}

30
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferLibNotes/TransferLibNoteMapperProfile.cs

@ -38,34 +38,6 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Id);
CreateMap<TransferLibNoteImportInput, TransferLibNoteDetail>()
.IgnoreAuditedObjectProperties()
.ForMember(x => x.ToPackingCode, y => y.MapFrom(d => d.PackingCode))
.ForMember(x => x.FromPackingCode, y => y.MapFrom(d => d.PackingCode))
.ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
.ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
.Ignore(x => x.FromLocationGroup)
.Ignore(x => x.FromLocationArea)
.Ignore(x => x.FromLocationErpCode)
.Ignore(x => x.FromWarehouseCode)
.Ignore(x => x.ToLocationArea)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ToLocationErpCode)
.Ignore(x => x.ToWarehouseCode)
.Ignore(x => x.Reason)
.Ignore(x => x.SupplierBatch).Ignore(x => x.ArriveDate).Ignore(x => x.ProduceDate).Ignore(x => x.ExpireDate)
.Ignore(x => x.Remark)
.Ignore(x => x.ItemName)
.Ignore(x => x.ItemDesc1)
.Ignore(x => x.ItemDesc2)
.Ignore(x => x.FromContainerCode)
.Ignore(x => x.ToContainerCode)
.Ignore(x => x.FromLot)
.Ignore(x => x.ToLot)
.Ignore(x => x.StdPackQty)
.Ignore(x => x.Uom)
.Ignore(x => x.MasterID)
.Ignore(x => x.TenantId)
.Ignore(x => x.Number)
.Ignore(x => x.Id);
.IgnoreAuditedObjectProperties();
}
}

62
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/TransferLibRequests/TransferLibRequestAppService.cs

@ -120,37 +120,37 @@ public class TransferLibRequestAppService : SfsStoreRequestAppServiceBase
throw new UserFriendlyException($"来源库位与目标库位类型不一致");
}
detail.ItemCode = balanceDto.ItemCode;
detail.ArriveDate = balanceDto.ArriveDate;
detail.ItemDesc1 = balanceDto.ItemDesc1;
detail.ItemDesc2 = balanceDto.ItemDesc2;
detail.ItemName = balanceDto.ItemName;
detail.ProduceDate = balanceDto.ProduceDate;
detail.Qty = detail.Qty;
detail.Uom = balanceDto.Uom;
detail.ExpireDate = balanceDto.ExpireDate;
detail.StdPackQty = balanceDto.StdPackQty;
detail.SupplierBatch = balanceDto.SupplierBatch;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromContainerCode = balanceDto.ContainerCode;
detail.FromLocationErpCode = balanceDto.LocationErpCode;
detail.FromLocationGroup = balanceDto.LocationGroup;
detail.FromPackingCode = balanceDto.PackingCode;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromStatus = balanceDto.Status;
detail.FromWarehouseCode = balanceDto.WarehouseCode;
detail.FromLot = balanceDto.Lot;
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ToContainerCode = balanceDto.ContainerCode;
detail.ToPackingCode = balanceDto.PackingCode;
detail.ToLocationArea = balanceDto.LocationArea;
detail.ToStatus = balanceDto.Status;
detail.ToLot = balanceDto.Lot;
//detail.ItemCode = balanceDto.ItemCode;
//detail.ArriveDate = balanceDto.ArriveDate;
//detail.ItemDesc1 = balanceDto.ItemDesc1;
//detail.ItemDesc2 = balanceDto.ItemDesc2;
//detail.ItemName = balanceDto.ItemName;
//detail.ProduceDate = balanceDto.ProduceDate;
//detail.Qty = detail.Qty;
//detail.Uom = balanceDto.Uom;
//detail.ExpireDate = balanceDto.ExpireDate;
//detail.StdPackQty = balanceDto.StdPackQty;
//detail.SupplierBatch = balanceDto.SupplierBatch;
//detail.FromLocationArea = balanceDto.LocationArea;
//detail.FromContainerCode = balanceDto.ContainerCode;
//detail.FromLocationErpCode = balanceDto.LocationErpCode;
//detail.FromLocationGroup = balanceDto.LocationGroup;
//detail.FromPackingCode = balanceDto.PackingCode;
//detail.FromLocationArea = balanceDto.LocationArea;
//detail.FromStatus = balanceDto.Status;
//detail.FromWarehouseCode = balanceDto.WarehouseCode;
//detail.FromLot = balanceDto.Lot;
//detail.ToLocationArea = toLocationDto.AreaCode;
//detail.ToLocationErpCode = toLocationDto.ErpLocationCode;
//detail.ToLocationGroup = toLocationDto.LocationGroupCode;
//detail.ToWarehouseCode = toLocationDto.WarehouseCode;
//detail.ToContainerCode = balanceDto.ContainerCode;
//detail.ToPackingCode = balanceDto.PackingCode;
//detail.ToLocationArea = balanceDto.LocationArea;
//detail.ToStatus = balanceDto.Status;
//detail.ToLot = balanceDto.Lot;
}
await SetEntityPropertiesAsync(transferLibRequest, enumTransSubType)

33
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJob.cs

@ -1,86 +1,85 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Volo.Abp.Data;
using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary>
/// 计划外出库任务 //??TransferLib实体
/// 计划外出库任务 //??TransferLib实体
/// </summary>
[Display(Name = "计划外出库任务")]
public class TransferLibJob : SfsJobAggregateRootBase<TransferLibJobDetail>
{
/// <summary>
/// 申请单号
/// 申请单号
/// </summary>
[IgnoreUpdate]
public string RequestNumber { get; set; }
/// <summary>
/// 任务单号
/// 任务单号
/// </summary>
[IgnoreUpdate]
public string JobNumber { get; set; }
/// <summary>
/// 调拨类型
/// 调拨类型
/// </summary>
[Display(Name = "调拨类型")]
[Required(ErrorMessage = "调拨类型不能为空")]
public string Type { get; set; }
/// <summary>
/// 使用中间库
/// 使用中间库
/// </summary>
[Display(Name = "使用中间库")]
public bool UseOnTheWayLocation { get; set; }
/// <summary>
/// 确认时间
/// 确认时间
/// </summary>
[Display(Name = "确认时间")]
[IgnoreUpdate]
public DateTime? ConfirmTime { get; set; }
/// <summary>
/// 已确认
/// 已确认
/// </summary>
[Display(Name = "已确认")]
public bool Confirmed { get; set; }
/// <summary>
/// 任务明细
/// 任务明细
/// </summary>
[IgnoreUpdate]
public override List<TransferLibJobDetail> Details { get; set; } = new List<TransferLibJobDetail>();
public override List<TransferLibJobDetail> Details { get; set; } = new();
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
[Display(Name = "回调服务名称")]
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
[Display(Name = "回调业务类型")]
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
[Display(Name = "传入申请单号")]
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
[Display(Name = "传入任务单号")]
public string CallJobNumber { get; set; }
#endregion
#endregion
}

444
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobDetail.cs

@ -1,92 +1,466 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Data;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary>
/// //??TransferLib实体
/// //??TransferLib实体
/// </summary>
public class TransferLibJobDetail : NewRecommendHandledFromTo
public class TransferLibJobDetail : SfsStoreDetailEntityBase
{
/// <summary>
/// 中间库地址
/// </summary>
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// 原因
/// </summary>
public string Reason { get; set; }
/// <summary>
/// 执行任务状态
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
/// 回调服务名称
/// </summary>
public string CallServerName { get; set; }
/// <summary>
/// 回调业务类型
/// 回调业务类型
/// </summary>
public string CallBusinessType { get; set; }
/// <summary>
/// 调用者传入申请单号
/// 调用者传入申请单号
/// </summary>
public string CallRequestNumber { get; set; }
/// <summary>
/// 调用者传入任务单号
/// 调用者传入任务单号
/// </summary>
public string CallJobNumber { get; set; }
#endregion
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// </summary>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary>
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
#region 校验
#region 开关
//箱码
public bool CheckPackingCodeFrom { get; set; }
public bool IsPackingCodeFrom { get; set; }
public bool IsPackingCodeTo { get; set; }
public bool CheckPackingCodeTo { get; set; }
//批次
public bool CheckLotFrom { get; set; }
public bool IsLotFrom { get; set; }
public bool IsLotTo { get; set; }
public bool CheckLotTo { get; set; }
//零件号
public bool CheckItemCodeFrom { get; set; }
public bool IsItemCodeFrom { get; set; }
public bool IsItemCodeTo { get; set; }
public bool CheckItemCodeTo { get; set; }
//状态
public bool CheckStatusFrom { get; set; }
public bool IsStatusFrom { get; set; }
public bool IsStatusTo { get; set; }
public bool CheckStatusTo { get; set; }
//库位
public bool CheckLocationCodeFrom { get; set; }
public bool IsLocationCodeFrom { get; set; }
public bool CheckLocationCodeTo { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool CheckLocationGroupFrom { get; set; }
public bool IsLocationGroupFrom { get; set; }
public bool CheckLocationGroupTo { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool CheckLocationAreaFrom { get; set; }
public bool IsLocationAreaFrom { get; set; }
public bool CheckLocationAreaTo { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool CheckLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeTo { get; set; }
public bool CheckLocationErpCodeTo { get; set; }
//数量
public bool CheckQtyFrom { get; set; }
public bool IsQtyFrom { get; set; }
public bool CheckQtyTo { get; set; }
public bool IsQtyTo { get; set; }
#endregion
}

428
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/TransferLibNotes/TransferLibNoteDetail.cs

@ -1,3 +1,8 @@
using System;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities.Auditing;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain;
@ -5,14 +10,8 @@ namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary>
/// 库存转移记录-明细表 //??TransferLib实体
/// </summary>
public class TransferLibNoteDetail : NewRecommendHandledFromTo
public class TransferLibNoteDetail : SfsStoreDetailEntityBase
{
/// <summary>
/// 中间库地址
/// </summary>
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 原因
/// </summary>
@ -22,6 +21,7 @@ public class TransferLibNoteDetail : NewRecommendHandledFromTo
/// 执行任务状态
/// </summary>
public EnumJobStatus JobStatus { get; set; }
#region 回调服务相关
/// <summary>
/// 回调服务名称
@ -44,47 +44,423 @@ public class TransferLibNoteDetail : NewRecommendHandledFromTo
public string CallJobNumber { get; set; }
#endregion
#region 校验
#region 库存基础信息
/// <summary>
/// 物品代码
/// </summary>
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
public string ItemDesc2 { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 库存状态
/// </summary>
public EnumInventoryStatus Status { get; set; }
/// <summary>
/// 计量单位
/// </summary>
public string Uom { get; set; }
#endregion
#region 请求信息
/// <summary>
/// 请求库位
/// </summary>
public string RequestLocationCode { get; set; }
/// <summary>
/// 到库区
/// </summary>
public string RequestLocationArea { get; set; }
/// <summary>
/// 到库位组
/// </summary>
public string RequestLocationGroup { get; set; }
/// <summary>
/// 到ERP库位
/// </summary>
public string RequestLocationErpCode { get; set; }
/// <summary>
/// 到仓库
/// </summary>
public string RequestWarehouseCode { get; set; }
/// <summary>
/// 在途库库位
/// </summary>
public string OnTheWayLocationCode { get; set; }
/// <summary>
/// 生产线
/// </summary>
public string ProdLine { get; set; }
/// <summary>
/// 位置码
/// </summary>
public string PositionCode { get; set; }
/// <summary>
/// 推荐的类型
/// </summary>
public EnumRecommendType RecommendType { get; set; }
/// <summary>
/// 需求数量
/// </summary>
public decimal RequestQty { get; set; }
#endregion
#region 推荐来源
/// <summary>
/// 推荐来源托标签
/// </summary>
public string RecommendFromContainerCode { get; set; }
/// <summary>
/// 推荐来源箱标签
/// </summary>
public string RecommendFromPackingCode { get; set; }
/// <summary>
/// 推荐来源批次供应商批次
/// </summary>
public string RecommendFromSupplierBatch { get; set; }
/// <summary>
/// 推荐来源批次到货时间
/// </summary>
public DateTime RecommendFromArriveDate { get; set; }
/// <summary>
/// 推荐来源批次生产时间
/// </summary>
public DateTime RecommendFromProduceDate { get; set; }
/// <summary>
/// 推荐来源批次过期时间
/// </summary>
public DateTime RecommendFromExpireDate { get; set; }
/// <summary>
/// 推荐来源批次排序
/// </summary>
public string RecommendFromLot { get; set; }
/// <summary>
/// 推荐来源库位
/// </summary>
public string RecommendFromLocationCode { get; set; }
/// <summary>
/// 推荐来源库区
/// </summary>
public string RecommendFromLocationArea { get; set; }
/// <summary>
/// 推荐来源库位组
/// </summary>
public string RecommendFromLocationGroup { get; set; }
/// <summary>
/// 推荐来源ERP库位
/// </summary>
public string RecommendFromLocationErpCode { get; set; }
/// <summary>
/// 推荐来源仓库
/// </summary>
public string RecommendFromWarehouseCode { get; set; }
/// <summary>
/// 推荐来源数量
/// </summary>
public decimal RecommendFromQty { get; set; }
#endregion
#region 推荐目标
/// <summary>
/// 推荐目标托标签
/// </summary>
public string RecommendToContainerCode { get; set; }
/// <summary>
/// 推荐目标箱标签
/// </summary>
public string RecommendToPackingCode { get; set; }
/// <summary>
/// 推荐目标批次供应商批次
/// </summary>
public string RecommendToSupplierBatch { get; set; }
/// <summary>
/// 推荐目标批次到货时间
/// </summary>
public DateTime RecommendToArriveDate { get; set; }
/// <summary>
/// 推荐目标批次生产时间
/// </summary>
public DateTime RecommendToProduceDate { get; set; }
/// <summary>
/// 推荐目标批次过期时间
/// </summary>
public DateTime RecommendToExpireDate { get; set; }
/// <summary>
/// 推荐目标批次排序
/// </summary>
public string RecommendToLot { get; set; }
/// <summary>
/// 推荐目标库位
/// </summary>
public string RecommendToLocationCode { get; set; }
/// <summary>
/// 推荐目标库区
/// </summary>
public string RecommendToLocationArea { get; set; }
/// <summary>
/// 推荐目标库位组
/// </summary>
public string RecommendToLocationGroup { get; set; }
/// <summary>
/// 推荐目标ERP库位
/// </summary>
public string RecommendToLocationErpCode { get; set; }
/// <summary>
/// 推荐目标仓库
/// </summary>
public string RecommendToWarehouseCode { get; set; }
/// <summary>
/// 推荐目标数量
/// </summary>
public decimal RecommendToQty { get; set; }
#endregion
#region 实际来源
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledFromContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledFromPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledFromSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledFromArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledFromProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledFromExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledFromLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledFromLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledFromLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledFromLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledFromLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledFromWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledFromQty { get; set; }
#endregion
#region 实际目标
/// <summary>
/// 实际目标托标签
/// </summary>
public string HandledToContainerCode { get; set; }
/// <summary>
/// 实际箱标签
/// </summary>
public string HandledToPackingCode { get; set; }
/// <summary>
/// 实际批次供应商批次
/// </summary>
public string HandledToSupplierBatch { get; set; }
/// <summary>
/// 实际批次到货时间
/// </summary>
public DateTime HandledToArriveDate { get; set; }
/// <summary>
/// 实际批次生产时间
/// </summary>
public DateTime HandledToProduceDate { get; set; }
/// <summary>
/// 实际批次过期时间
/// </summary>
public DateTime HandledToExpireDate { get; set; }
/// <summary>
/// 实际批次排序
/// </summary>
public string HandledToLot { get; set; }
/// <summary>
/// 实际库位
/// </summary>
public string HandledToLocationCode { get; set; }
/// <summary>
/// 实际库区
/// </summary>
public string HandledToLocationArea { get; set; }
/// <summary>
/// 实际库位组
/// </summary>
public string HandledToLocationGroup { get; set; }
/// <summary>
/// 实际ERP库位
/// </summary>
public string HandledToLocationErpCode { get; set; }
/// <summary>
/// 实际仓库
/// </summary>
public string HandledToWarehouseCode { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal HandledToQty { get; set; }
#endregion
#region 开关
//箱码
public bool CheckPackingCodeFrom { get; set; }
public bool IsPackingCodeFrom { get; set; }
public bool CheckPackingCodeTo { get; set; }
public bool IsPackingCodeTo { get; set; }
//批次
public bool CheckLotFrom { get; set; }
public bool IsLotFrom { get; set; }
public bool CheckLotTo { get; set; }
public bool IsLotTo { get; set; }
//零件号
public bool CheckItemCodeFrom { get; set; }
public bool IsItemCodeFrom { get; set; }
public bool CheckItemCodeTo { get; set; }
public bool IsItemCodeTo { get; set; }
//状态
public bool CheckStatusFrom { get; set; }
public bool IsStatusFrom { get; set; }
public bool CheckStatusTo { get; set; }
public bool IsStatusTo { get; set; }
//库位
public bool CheckLocationCodeFrom { get; set; }
public bool IsLocationCodeFrom { get; set; }
public bool CheckLocationCodeTo { get; set; }
public bool IsLocationCodeTo { get; set; }
//库位组
public bool CheckLocationGroupFrom { get; set; }
public bool IsLocationGroupFrom { get; set; }
public bool CheckLocationGroupTo { get; set; }
public bool IsLocationGroupTo { get; set; }
//区域
public bool CheckLocationAreaFrom { get; set; }
public bool IsLocationAreaFrom { get; set; }
public bool CheckLocationAreaTo { get; set; }
public bool IsLocationAreaTo { get; set; }
//储位
public bool CheckLocationErpCodeFrom { get; set; }
public bool IsLocationErpCodeFrom { get; set; }
public bool CheckLocationErpCodeTo { get; set; }
public bool IsLocationErpCodeTo { get; set; }
//数量
public bool CheckQtyFrom { get; set; }
public bool IsQtyFrom { get; set; }
public bool CheckQtyTo { get; set; }
public bool IsQtyTo { get; set; }
#endregion
public void SetId(Guid id)
{
this.Id = id;
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/TransferLibNotes/TransferLibNoteDbContextModelCreatingExtensions.cs

@ -46,7 +46,7 @@ public static class TransferLibNoteDbContextModelCreatingExtensions
//Relations
//Indexes
b.HasIndex(q => new { q.Number, q.HandledFromPackingCode, q.HandledFromLocationCode, q.HandledToLocationCode, q.Status, q.Status }).IsUnique();
b.HasIndex(q => new { q.Number, q.HandledFromPackingCode, q.HandledFromLocationCode, q.HandledToLocationCode, q.Status }).IsUnique();
});
}
}

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/TransferLibRequests/TransferLibRequestDbContextModelCreatingExtensions.cs

@ -40,8 +40,8 @@ public static class TransferLibRequestDbContextModelCreatingExtensions
b.ConfigureSfsStoreDetailBase();
//Properties
b.Property(q => q.FromStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(q => q.ToStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//b.Property(q => q.FromStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//b.Property(q => q.ToStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
//Relations

21
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/TransferLibJobEventHandler.cs

@ -17,7 +17,7 @@ public class TransferLibJobEventHandler :
public TransferLibJobEventHandler(
ITransferLibNoteAppService noteApp
)
)
{
_noteApp = noteApp;
}
@ -42,7 +42,6 @@ public class TransferLibJobEventHandler :
var note = BuildTransferLibNoteCreateInput(entity);
await _noteApp.CreateAsync(note).ConfigureAwait(false);
}
[UnitOfWork]
@ -51,11 +50,10 @@ public class TransferLibJobEventHandler :
var entity = eventData.Entity;
var note = BuildTransferLibNoteCreateInput(entity);
await _noteApp.CreateAsync(note).ConfigureAwait(false);
}
/// <summary>
/// 创建补料记录实体
/// 创建补料记录实体
/// </summary>
/// <param name="entity"></param>
/// <param name="input"></param>
@ -63,22 +61,7 @@ public class TransferLibJobEventHandler :
private TransferLibNoteEditInput BuildTransferLibNoteCreateInput(TransferLibJob entity)
{
var createInput = ObjectMapper.Map<TransferLibJob, TransferLibNoteEditInput>(entity);
createInput.Details.RemoveAll(p => p.Qty == 0);
/*
createInput.Details = new List<TransferLibNoteDetailInput>();
foreach (var inputDetail in entity.Details)
{
var detail = ObjectMapper.Map<TransferLibJobDetail, TransferLibNoteDetailInput>(inputDetail);
detail.ExtraProperties = inputDetail.ExtraProperties;
createInput.Details.Add(detail);
}
*/
return createInput;
}
}

Loading…
Cancel
Save