Browse Source

拆箱涉及expectOut相关

dev_DY_CC
刘云峰 1 year ago
parent
commit
24d0b06084
  1. 40
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/Commons/SplitPacking_UpdateDetailInput.cs
  2. 8
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/ExpectOuts/IExpectOutAppService.cs
  3. 34
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/ExpectOuts/ExpectOutAppService.cs
  4. 23
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs

40
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/Commons/SplitPacking_UpdateDetailInput.cs

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Basedata.SplitPackings.Commons;
public class SplitPacking_UpdateDetailInput
{
/// <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; }
}

8
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/ExpectOuts/IExpectOutAppService.cs

@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Win_in.Sfs.Basedata.SplitPackings.Commons;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Inventory.Application.Contracts; namespace Win_in.Sfs.Wms.Inventory.Application.Contracts;
@ -29,4 +30,11 @@ public interface IExpectOutAppService
string packingCode, string packingCode,
EnumInventoryStatus enumInventoryStatus, EnumInventoryStatus enumInventoryStatus,
string lot); string lot);
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
Task<List<ExpectOutDTO>> SaveDetail_SplitPackingAsync(SplitPacking_UpdateDetailInput input);
} }

34
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/ExpectOuts/ExpectOutAppService.cs

@ -6,6 +6,8 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Basedata.SplitPackings.Commons;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts; using Win_in.Sfs.Wms.Inventory.Application.Contracts;
@ -179,4 +181,36 @@ public class ExpectOutAppService
return ObjectMapper.Map<List<ExpectOut>, List<ExpectOutDTO>>(entitys); return ObjectMapper.Map<List<ExpectOut>, List<ExpectOutDTO>>(entitys);
} }
/// <summary>
/// 保存拆箱时涉及的明细修改
/// </summary>
/// <returns></returns>
[HttpPost("save-detail-split-packing")]
public virtual async Task<List<ExpectOutDTO>> SaveDetail_SplitPackingAsync(SplitPacking_UpdateDetailInput input)
{
var obj = await _repository.FindAsync(p => p.JobNumber == input.Number && p.PackingCode == input.FromPackingCode && p.Qty == input.FromQty).ConfigureAwait(false);
if (obj == null)
{
return null;
}
//插入目标箱
var newObj = CommonHelper.CloneObj(obj);
newObj.SetId(GuidGenerator.Create());
newObj.PackingCode = input.ToPackingCode;
newObj.Qty = input.ToQty;
var insRet = await _repository.InsertAsync(newObj).ConfigureAwait(false);
//修改源箱
obj.Qty = input.FromQty - input.ToQty;
var updRet = await _repository.UpdateAsync(obj).ConfigureAwait(false);
List<ExpectOut> lst = new List<ExpectOut>();
lst.Add(insRet);
lst.Add(updRet);
var ret = ObjectMapper.Map<List<ExpectOut>, List<ExpectOutDTO>>(lst);
return ret;
}
} }

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

@ -10,6 +10,7 @@ using Volo.Abp;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Basedata.SplitPackings.Commons;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts; using Win_in.Sfs.Wms.Inventory.Application.Contracts;
@ -38,6 +39,10 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
private readonly IInspectJobAppService _inspectJobAppService; //质检 private readonly IInspectJobAppService _inspectJobAppService; //质检
private readonly IIssueJobAppService _issueJobAppService; //发料 private readonly IIssueJobAppService _issueJobAppService; //发料
private readonly IExpectOutAppService _expectOutAppService; //
public TransferNoteAppService( public TransferNoteAppService(
@ -49,7 +54,8 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
IPurchaseReceiptJobAppService purchaseReceiptJobAppService, IPurchaseReceiptJobAppService purchaseReceiptJobAppService,
IPurchaseReceiptRequestAppService purchaseReceiptRequestAppService, IPurchaseReceiptRequestAppService purchaseReceiptRequestAppService,
IInspectJobAppService inspectJobAppService, IInspectJobAppService inspectJobAppService,
IIssueJobAppService issueJobAppService) : base(repository) IIssueJobAppService issueJobAppService,
IExpectOutAppService expectOutAppService) : base(repository)
{ {
_transferNoteManager = transferNoteManager; _transferNoteManager = transferNoteManager;
_balanceAppService = balanceAppService; _balanceAppService = balanceAppService;
@ -59,6 +65,7 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
_purchaseReceiptRequestAppService = purchaseReceiptRequestAppService; _purchaseReceiptRequestAppService = purchaseReceiptRequestAppService;
_inspectJobAppService = inspectJobAppService; _inspectJobAppService = inspectJobAppService;
_issueJobAppService = issueJobAppService; _issueJobAppService = issueJobAppService;
_expectOutAppService = expectOutAppService;
} }
#region 东阳使用 #region 东阳使用
@ -438,6 +445,13 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
[HttpPost("split-packing-inspect")] [HttpPost("split-packing-inspect")]
public async Task<TransferNoteDTO> SplitPacking_InspectAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput) public async Task<TransferNoteDTO> SplitPacking_InspectAsync(TransferNoteEditInput transferNoteEditInput, [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;
var expectOutRet = await _expectOutAppService.SaveDetail_SplitPackingAsync(newInput).ConfigureAwait(false);
var jobRet = await _inspectJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false); var jobRet = await _inspectJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var ret = await SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false); //库存操作 var ret = await SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false); //库存操作
return ret; return ret;
@ -452,6 +466,13 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
[HttpPost("split-packing-issue")] [HttpPost("split-packing-issue")]
public async Task<TransferNoteDTO> SplitPacking_IssueAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput) public async Task<TransferNoteDTO> SplitPacking_IssueAsync(TransferNoteEditInput transferNoteEditInput, [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;
var expectOutRet = await _expectOutAppService.SaveDetail_SplitPackingAsync(newInput).ConfigureAwait(false);
var jobRet = await _issueJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false); var jobRet = await _issueJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var ret = await SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false); //库存操作 var ret = await SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false); //库存操作
return ret; return ret;

Loading…
Cancel
Save