Browse Source

加3个更新任务的拆箱方法

dev_DY_CC
刘云峰 1 year ago
parent
commit
8148d1dfcc
  1. 28
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferNoteController.cs
  2. 8
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs
  3. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/InspectJobs/IInspectJobAppService.cs
  4. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/IIssueJobAppService.cs
  5. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobAppService.cs
  6. 24
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/ITransferNoteAppService.cs
  7. 38
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/Inputs/SplitPacking_UpdateJobDetailInput.cs
  8. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReceiptRequests/IPurchaseReceiptRequestAppService.cs
  9. 34
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/InspectJobs/InspectJobAppService.cs
  10. 32
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/IssueJobAppService.cs
  11. 48
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobAppService.cs
  12. 134
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs
  13. 46
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs
  14. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJob.cs
  15. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJobDetail.cs
  16. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IssueJobDetail.cs
  17. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobManager.cs
  18. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobDetail.cs
  19. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobManager.cs
  20. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestDetail.cs

28
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferNoteController.cs

@ -156,4 +156,32 @@ public class TransferNoteController : AbpController
return await _transferNoteAppService.SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false);
}
/// <summary>
/// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-purchase-receipt")]
public async Task<bool> SplitPacking_PurchaseReceiptAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var ret = await _transferNoteAppService.SplitPacking_PurchaseReceiptAsync(transferNoteEditInput, updateJobDetailInput).ConfigureAwait(false);
return ret;
}
/// <summary>
/// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-issue")]
public async Task<TransferNoteDTO> SplitPacking_IssueAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var ret = await _transferNoteAppService.SplitPacking_IssueAsync(transferNoteEditInput, updateJobDetailInput).ConfigureAwait(false);
return ret;
}
}

8
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs

@ -20,4 +20,12 @@ public sealed class CommonHelper
var ret = JsonConvert.DeserializeObject<T>(json);
return ret;
}
public static DateTime CurTime
{
get
{
return DateTime.Now;
}
}
}

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/InspectJobs/IInspectJobAppService.cs

@ -43,4 +43,11 @@ public interface IInspectJobAppService
Task CancelByInspectRequestAsync(string inspectRequestNumber);
Task<InspectJobDTO> GetInspectNoteDetailByPackingCodeAsync(string packingCode);
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
Task<InspectJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input);
}

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/IIssueJobAppService.cs

@ -16,4 +16,11 @@ public interface IIssueJobAppService
bool includeDetails = false, CancellationToken cancellationToken = default);
Task<List<IssueJobDTO>> GetByRequestNumberAsync(string requestNumber);
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
Task<IssueJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input);
}

15
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobAppService.cs

@ -46,4 +46,19 @@ public interface IPurchaseReceiptJobAppService
/// </summary>
/// <returns></returns>
Task<List<PurchaseReceiptJobDTO>> GetListBySupplierCodeOnTodayAsync(string supplierCode);
/// <summary>
/// 根据number取列表
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
Task<List<PurchaseReceiptJobDTO>> GetListByNumberAsync(string number);
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
Task<PurchaseReceiptJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input);
}

24
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/ITransferNoteAppService.cs

@ -63,4 +63,28 @@ public interface ITransferNoteAppService :
Task<PagedResultDto<TransferNoteDTO>> GetSplitPackingTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default);
/// <summary>
/// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
Task<bool> SplitPacking_PurchaseReceiptAsync(TransferNoteEditInput transferNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
/// <summary>
/// 质检拆箱,同时更新、插入Inspect任务表(不更新申请表)
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
Task<TransferNoteDTO> SplitPacking_InspectAsync(TransferNoteEditInput transferNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
/// <summary>
/// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
Task<TransferNoteDTO> SplitPacking_IssueAsync(TransferNoteEditInput transferNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
}

38
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/Inputs/SplitPacking_UpdateJobDetailInput.cs

@ -0,0 +1,38 @@
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
///
/// </summary>
public class SplitPacking_UpdateJobDetailInput
{
/// <summary>
/// 主表number
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
public string Number { get; set; }
/// <summary>
/// 子表from标签
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
public string FromPackingCode { get; set; }
/// <summary>
/// from数量
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
[Range(1, 99999, ErrorMessage = "{0}值范围在1至99999之间")]
public decimal FromQty { get; set; }
/// <summary>
/// 子表的to标签
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
public string ToPackingCode { get; set; }
/// <summary>
/// to数量
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
[Range(1, 99999, ErrorMessage = "{0}值范围在1至99999之间")]
public decimal ToQty { get; set; }
}

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReceiptRequests/IPurchaseReceiptRequestAppService.cs

@ -39,4 +39,21 @@ public interface IPurchaseReceiptRequestAppService
/// <returns></returns>
Task<PurchaseReceiptRequestDTO> UpdatePurchaseReceiptRequestAsync(string number,
EnumRequestStatus enumRequestStatus);
/// <summary>
/// 根据number取列表
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
Task<List<PurchaseReceiptRequestDTO>> GetListByNumberAsync(string number);
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<PurchaseReceiptRequestDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input, string packingCode);
}

34
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/InspectJobs/InspectJobAppService.cs

@ -4,7 +4,9 @@ using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.FileStorage.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
@ -160,6 +162,38 @@ public class InspectJobAppService
return dto;
}
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
[HttpPost("save-detail-split-packing")]
public virtual async Task<InspectJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input)
{
InspectJob job = await _repository.FindAsync(p => p.Number == input.Number).ConfigureAwait(false);
InspectJobDetail detail = job.Details.FirstOrDefault(p => p.PackingCode == input.FromPackingCode && p.InspectQty == input.FromQty);
if (detail == null)
{
throw new UserFriendlyException($"根据PackingCode={input.FromPackingCode}取InspectDetail表为空!");
}
//插入目标箱
var newDetail = CommonHelper.CloneObj(detail);
newDetail.SetId(GuidGenerator.Create());
newDetail.PackingCode = input.ToPackingCode;
newDetail.ReceiveQty = input.ToQty;
newDetail.InspectQty = input.ToQty;
newDetail.GoodQty = input.ToQty;
//newDetail.CreationTime = CommonHelper.CurTime;
job.Details.Add(newDetail);
//修改源箱
detail.ReceiveQty = input.FromQty - input.ToQty;
detail.InspectQty = input.FromQty - input.ToQty;
detail.GoodQty = input.FromQty - input.ToQty;
var entity = await _repository.UpdateAsync(job).ConfigureAwait(false);
var ret = ObjectMapper.Map<InspectJob, InspectJobDTO>(entity);
return ret;
}
//[HttpPost("pick-inspect")]
//public virtual async Task AddPickInspectJobAsync(InspectJobCreateInput input)
//{

32
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/IssueJobAppService.cs

@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts;
@ -159,6 +160,37 @@ public class IssueJobAppService
return ObjectMapper.Map<List<IssueJob>, List<IssueJobDTO>>(entitys);
}
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
[HttpPost("save-detail-split-packing")]
public virtual async Task<IssueJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input)
{
var job = await _repository.FindAsync(p => p.Number == input.Number).ConfigureAwait(false);
IssueJobDetail detail = job.Details.FirstOrDefault(p => p.HandledPackingCode == input.FromPackingCode && p.HandledQty == input.FromQty);
if (detail == null)
{
throw new UserFriendlyException($"根据HandledPackingCode={input.FromPackingCode}取IssueJobDetail表为空!");
}
//插入目标箱
var newDetail = CommonHelper.CloneObj(detail);
newDetail.SetId(GuidGenerator.Create());
newDetail.RecommendPackingCode = input.ToPackingCode;
newDetail.RecommendQty = input.ToQty;
newDetail.HandledPackingCode = input.ToPackingCode;
newDetail.HandledQty = input.ToQty;
//newDetail.CreationTime = CommonHelper.CurTime;
job.Details.Add(newDetail);
//修改源箱
detail.RecommendQty = input.FromQty - input.ToQty;
detail.HandledQty = input.FromQty - input.ToQty;
var entity = await _repository.UpdateAsync(job).ConfigureAwait(false);
var ret = ObjectMapper.Map<IssueJob, IssueJobDTO>(entity);
return ret;
}
/*
/// <summary>
///

48
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobAppService.cs

@ -5,7 +5,9 @@ using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.FileStorage.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts;
@ -214,6 +216,52 @@ public class PurchaseReceiptJobAppService :
return dto;
}
/// <summary>
/// 根据number取列表
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
[HttpGet("get-list-by-number")]
public async Task<List<PurchaseReceiptJobDTO>> GetListByNumberAsync(string number)
{
var entity = await _repository.GetListAsync(itm => itm.Number == number).ConfigureAwait(false);
var dto = ObjectMapper.Map<List<PurchaseReceiptJob>, List<PurchaseReceiptJobDTO>>(entity);
return dto;
}
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
[HttpPost("save-detail-split-packing")]
public virtual async Task<PurchaseReceiptJobDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input)
{
var job = await _repository.FindAsync(p => p.Number == input.Number).ConfigureAwait(false);
PurchaseReceiptJobDetail detail = job.Details.FirstOrDefault(p => p.HandledPackingCode == input.FromPackingCode && p.HandledQty == input.FromQty);
if (detail == null)
{
throw new UserFriendlyException($"根据HandledPackingCode={input.FromPackingCode}取ReceiptRequestDetail表为空!");
}
//插入目标箱
var newDetail = CommonHelper.CloneObj(detail);
newDetail.SetId(GuidGenerator.Create());
newDetail.RecommendPackingCode = input.ToPackingCode;
newDetail.RecommendQty = input.ToQty;
newDetail.HandledPackingCode = input.ToPackingCode;
newDetail.HandledQty = input.ToQty;
//newDetail.CreationTime = CommonHelper.CurTime;
job.Details.Add(newDetail);
//修改源箱
detail.RecommendQty = input.FromQty - input.ToQty;
detail.HandledQty = input.FromQty - input.ToQty;
var entity = await _repository.UpdateAsync(job).ConfigureAwait(false);
var ret = ObjectMapper.Map<PurchaseReceiptJob, PurchaseReceiptJobDTO>(entity);
return ret;
}
///// <summary>
///// 取消请求
///// </summary>

134
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs

@ -33,18 +33,32 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
private readonly IBalanceAppService _balanceAppService;
private readonly ILocationAppService _locationAppService;
private readonly ISplitPackingRecAppService _splitPackingRecAppService;
private readonly IPurchaseReceiptJobAppService _purchaseReceiptJobAppService;
private readonly IPurchaseReceiptRequestAppService _purchaseReceiptRequestAppService; //采购收货
private readonly IInspectJobAppService _inspectJobAppService; //质检
private readonly IIssueJobAppService _issueJobAppService; //发料
public TransferNoteAppService(
ITransferNoteRepository repository,
ITransferNoteManager transferNoteManager,
IBalanceAppService balanceAppService,
ILocationAppService locationAppService,
ISplitPackingRecAppService splitPackingRecAppService) : base(repository)
ISplitPackingRecAppService splitPackingRecAppService,
IPurchaseReceiptJobAppService purchaseReceiptJobAppService,
IPurchaseReceiptRequestAppService purchaseReceiptRequestAppService,
IInspectJobAppService inspectJobAppService,
IIssueJobAppService issueJobAppService) : base(repository)
{
_transferNoteManager = transferNoteManager;
_balanceAppService = balanceAppService;
_locationAppService = locationAppService;
_splitPackingRecAppService = splitPackingRecAppService;
_purchaseReceiptJobAppService = purchaseReceiptJobAppService;
_purchaseReceiptRequestAppService = purchaseReceiptRequestAppService;
_inspectJobAppService = inspectJobAppService;
_issueJobAppService = issueJobAppService;
}
#region 东阳使用
@ -126,36 +140,7 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
public async Task<TransferNoteDTO> SplitPackingAsync(TransferNoteEditInput transferNoteEditInput)
{
//插入拆箱记录表
foreach (var inputDetail in transferNoteEditInput.Details)
{
List<SplitPackingRecEditInput> recLst = new List<SplitPackingRecEditInput>();
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);
await _splitPackingRecAppService.BatchInsertAsync(recLst).ConfigureAwait(false);
}
await WriteSplitPackingRec(transferNoteEditInput).ConfigureAwait(false);
//更新库存
transferNoteEditInput.Type = EnumTransSubType.Transfer_SplitPacking.ToString();
return await CreateAsync(transferNoteEditInput).ConfigureAwait(false);
@ -389,5 +374,92 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
return dto;
}
/// <summary>
/// 插入拆箱记录表
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <returns></returns>
private async Task<bool> WriteSplitPackingRec(TransferNoteEditInput transferNoteEditInput)
{
List<SplitPackingRecEditInput> recLst = new List<SplitPackingRecEditInput>();
foreach (var inputDetail in transferNoteEditInput.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="transferNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-purchase-receipt")]
public async Task<bool> SplitPacking_PurchaseReceiptAsync(TransferNoteEditInput transferNoteEditInput, [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(transferNoteEditInput).ConfigureAwait(false); //采购收货-目检-拆箱时,还没有入库,不涉及库存操作
return ret;
}
/// <summary>
/// 质检拆箱,同时更新、插入Inspect任务表(不更新申请表)
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-inspect")]
public async Task<TransferNoteDTO> SplitPacking_InspectAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var jobRet = await _inspectJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var ret = await SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false); //库存操作
return ret;
}
/// <summary>
/// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <param name="updateJobDetailInput"></param>
/// <returns></returns>
[HttpPost("split-packing-issue")]
public async Task<TransferNoteDTO> SplitPacking_IssueAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
var jobRet = await _issueJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var ret = await SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false); //库存操作
return ret;
}
}

46
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs

@ -4,9 +4,11 @@ using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Label.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts;
@ -142,4 +144,48 @@ public class PurchaseReceiptRequestAppService :
{
throw new NotImplementedException();
}
/// <summary>
/// 根据number取列表
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
[HttpGet("get-list-by-number")]
public async Task<List<PurchaseReceiptRequestDTO>> GetListByNumberAsync(string number)
{
var entity = await _repository.GetListAsync(itm => itm.Number == number).ConfigureAwait(false);
var dto = ObjectMapper.Map<List<PurchaseReceiptRequest>, List<PurchaseReceiptRequestDTO>>(entity);
return dto;
}
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpGet("save-detail-split-packing")]
public virtual async Task<PurchaseReceiptRequestDTO> SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input, string packingCode)
{
var request = await _repository.FindAsync(p => p.Number == packingCode).ConfigureAwait(false);
PurchaseReceiptRequestDetail detail = request.Details.FirstOrDefault(p => p.PackingCode == input.FromPackingCode && p.Qty == input.FromQty);
if (detail == null)
{
throw new UserFriendlyException($"根据PackingCode={input.FromPackingCode}取ReceiptRequestDetail表为空!");
}
//插入目标箱
var newDetail = CommonHelper.CloneObj(detail);
newDetail.SetId(GuidGenerator.Create());
newDetail.PackingCode = input.ToPackingCode;
newDetail.Qty = input.ToQty;
//newDetail.CreationTime = CommonHelper.CurTime;
request.Details.Add(newDetail);
//修改源箱
detail.Qty = input.FromQty - input.ToQty;
var entity = await _repository.UpdateAsync(request).ConfigureAwait(false);
var ret = ObjectMapper.Map<PurchaseReceiptRequest, PurchaseReceiptRequestDTO>(entity);
return ret;
}
}

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJob.cs

@ -144,4 +144,5 @@ public class InspectJob : SfsJobAggregateRootBase<InspectJobDetail>
{
Number = number;
}
}

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJobDetail.cs

@ -1,3 +1,4 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain;
@ -115,4 +116,10 @@ public class InspectJobDetail : SfsJobDetailEntityBase
/// </summary>
[Display(Name = "其他属性Json")]
public string OtherPropertyJson { get; set; }
public virtual void SetId(Guid id)
{
this.Id = id;
}
}

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IssueJobDetail.cs

@ -101,4 +101,8 @@ public class IssueJobDetail : SfsJobRecommendFromDetailEntityBase, IHasToLocatio
/// </summary>
public EnumRecommendType RecommendType { get; set; }
public void SetId(Guid id)
{
this.Id = id;
}
}

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobManager.cs

@ -1,5 +1,9 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.Store.Domain;
public interface IPurchaseReceiptJobManager : IJobManager<PurchaseReceiptJob>
{
Task<List<PurchaseReceiptJob>> GetListByNumberAsync(string number);
}

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobDetail.cs

@ -59,4 +59,11 @@ public class PurchaseReceiptJobDetail : SfsJobRecommendToDetailEntityBase, IHasP
[Display(Name = "供应商包装")]
public decimal SupplierPackQty { get; set; }
public void SetId(Guid id)
{
this.Id = id;
}
}

12
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobManager.cs

@ -110,4 +110,16 @@ public class PurchaseReceiptJobManager : SfsJobManagerBase<PurchaseReceiptJob, P
return await Repository.GetListAsync(c => c.Details.Any(p => p.RecommendPackingCode == packingCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false);
}
/// <summary>
/// 根据number取列表
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public async Task<List<PurchaseReceiptJob>> GetListByNumberAsync(string number)
{
var result = await Repository.GetListAsync(c => c.Number == number).ConfigureAwait(false);
return result;
}
}

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestDetail.cs

@ -1,3 +1,4 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
@ -35,4 +36,10 @@ public class PurchaseReceiptRequestDetail : SfsStoreDetailWithLotPackingQtyEntit
/// </summary>
[Display(Name = "推荐ERP储位")]
public string RecommendErpCode { get; set; }
public void SetId(Guid id)
{
this.Id = Id;
}
}

Loading…
Cancel
Save