diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferNoteController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferNoteController.cs
index 87891bec2..dfcc5ce45 100644
--- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferNoteController.cs
+++ b/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);
}
+ ///
+ /// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
+ ///
+ ///
+ ///
+ ///
+ [HttpPost("split-packing-purchase-receipt")]
+ public async Task SplitPacking_PurchaseReceiptAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
+ {
+ var ret = await _transferNoteAppService.SplitPacking_PurchaseReceiptAsync(transferNoteEditInput, updateJobDetailInput).ConfigureAwait(false);
+ return ret;
+ }
+
+ ///
+ /// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
+ ///
+ ///
+ ///
+ ///
+ [HttpPost("split-packing-issue")]
+ public async Task SplitPacking_IssueAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
+ {
+ var ret = await _transferNoteAppService.SplitPacking_IssueAsync(transferNoteEditInput, updateJobDetailInput).ConfigureAwait(false);
+ return ret;
+ }
+
+
+
}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs
index 4f8e1c8b5..1859b5324 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs
+++ b/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(json);
return ret;
}
+
+ public static DateTime CurTime
+ {
+ get
+ {
+ return DateTime.Now;
+ }
+ }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/InspectJobs/IInspectJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/InspectJobs/IInspectJobAppService.cs
index 2bc8a2f43..65fe5830a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/InspectJobs/IInspectJobAppService.cs
+++ b/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 GetInspectNoteDetailByPackingCodeAsync(string packingCode);
+
+ ///
+ /// 保存拆箱时涉及的明细修改
+ ///
+ ///
+ Task SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input);
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/IIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/IIssueJobAppService.cs
index 1b9ad5f7d..306f0df4e 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/IIssueJobAppService.cs
+++ b/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> GetByRequestNumberAsync(string requestNumber);
+
+ ///
+ /// 保存拆箱时涉及的明细修改
+ ///
+ ///
+ Task SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input);
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobAppService.cs
index 027134838..921906b69 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobAppService.cs
@@ -46,4 +46,19 @@ public interface IPurchaseReceiptJobAppService
///
///
Task> GetListBySupplierCodeOnTodayAsync(string supplierCode);
+
+ ///
+ /// 根据number取列表
+ ///
+ ///
+ ///
+ Task> GetListByNumberAsync(string number);
+
+ ///
+ /// 保存拆箱时涉及的明细修改
+ ///
+ ///
+ Task SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input);
+
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/ITransferNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/ITransferNoteAppService.cs
index fc797cf4f..aceb3662a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/ITransferNoteAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/ITransferNoteAppService.cs
@@ -63,4 +63,28 @@ public interface ITransferNoteAppService :
Task> GetSplitPackingTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default);
+
+ ///
+ /// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
+ ///
+ ///
+ ///
+ ///
+ Task SplitPacking_PurchaseReceiptAsync(TransferNoteEditInput transferNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
+
+ ///
+ /// 质检拆箱,同时更新、插入Inspect任务表(不更新申请表)
+ ///
+ ///
+ ///
+ ///
+ Task SplitPacking_InspectAsync(TransferNoteEditInput transferNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
+
+ ///
+ /// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
+ ///
+ ///
+ ///
+ ///
+ Task SplitPacking_IssueAsync(TransferNoteEditInput transferNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/Inputs/SplitPacking_UpdateJobDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/Inputs/SplitPacking_UpdateJobDetailInput.cs
new file mode 100644
index 000000000..61a8befe6
--- /dev/null
+++ b/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;
+
+///
+///
+///
+public class SplitPacking_UpdateJobDetailInput
+{
+ ///
+ /// 主表number
+ ///
+ [Required(ErrorMessage = "{0}是必填项")]
+ public string Number { get; set; }
+ ///
+ /// 子表from标签
+ ///
+ [Required(ErrorMessage = "{0}是必填项")]
+ public string FromPackingCode { get; set; }
+ ///
+ /// from数量
+ ///
+ [Required(ErrorMessage = "{0}是必填项")]
+ [Range(1, 99999, ErrorMessage = "{0}值范围在1至99999之间")]
+ public decimal FromQty { get; set; }
+ ///
+ /// 子表的to标签
+ ///
+ [Required(ErrorMessage = "{0}是必填项")]
+ public string ToPackingCode { get; set; }
+ ///
+ /// to数量
+ ///
+ [Required(ErrorMessage = "{0}是必填项")]
+ [Range(1, 99999, ErrorMessage = "{0}值范围在1至99999之间")]
+ public decimal ToQty { get; set; }
+
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReceiptRequests/IPurchaseReceiptRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReceiptRequests/IPurchaseReceiptRequestAppService.cs
index 8cb796843..9bb0ff309 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReceiptRequests/IPurchaseReceiptRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReceiptRequests/IPurchaseReceiptRequestAppService.cs
@@ -39,4 +39,21 @@ public interface IPurchaseReceiptRequestAppService
///
Task UpdatePurchaseReceiptRequestAsync(string number,
EnumRequestStatus enumRequestStatus);
+
+ ///
+ /// 根据number取列表
+ ///
+ ///
+ ///
+ Task> GetListByNumberAsync(string number);
+
+ ///
+ /// 保存拆箱时涉及的明细修改
+ ///
+ ///
+ ///
+ Task SaveDetail_SplitPackingAsync(SplitPacking_UpdateJobDetailInput input, string packingCode);
+
+
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/InspectJobs/InspectJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/InspectJobs/InspectJobAppService.cs
index 1f534b9e1..677079a54 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/InspectJobs/InspectJobAppService.cs
+++ b/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;
}
+ ///
+ /// 保存拆箱时涉及的明细修改
+ ///
+ ///
+ [HttpPost("save-detail-split-packing")]
+ public virtual async Task 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(entity);
+ return ret;
+ }
+
+
//[HttpPost("pick-inspect")]
//public virtual async Task AddPickInspectJobAsync(InspectJobCreateInput input)
//{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/IssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/IssueJobAppService.cs
index 6ec183a2b..6439fc1e8 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/IssueJobAppService.cs
+++ b/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>(entitys);
}
+ ///
+ /// 保存拆箱时涉及的明细修改
+ ///
+ ///
+ [HttpPost("save-detail-split-packing")]
+ public virtual async Task 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(entity);
+ return ret;
+ }
+
+
/*
///
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobAppService.cs
index 2c646ae7e..75d502fb6 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobAppService.cs
+++ b/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;
}
+ ///
+ /// 根据number取列表
+ ///
+ ///
+ ///
+ [HttpGet("get-list-by-number")]
+ public async Task> GetListByNumberAsync(string number)
+ {
+ var entity = await _repository.GetListAsync(itm => itm.Number == number).ConfigureAwait(false);
+ var dto = ObjectMapper.Map, List>(entity);
+ return dto;
+ }
+
+ ///
+ /// 保存拆箱时涉及的明细修改
+ ///
+ ///
+ [HttpPost("save-detail-split-packing")]
+ public virtual async Task 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(entity);
+ return ret;
+ }
+
+
+
+
/////
///// 取消请求
/////
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs
index 3188e6c7b..f2ee44369 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs
+++ b/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 SplitPackingAsync(TransferNoteEditInput transferNoteEditInput)
{
//插入拆箱记录表
- foreach (var inputDetail in transferNoteEditInput.Details)
- {
- List recLst = new List();
- 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;
}
-
+ ///
+ /// 插入拆箱记录表
+ ///
+ ///
+ ///
+ private async Task WriteSplitPackingRec(TransferNoteEditInput transferNoteEditInput)
+ {
+ List recLst = new List();
+ 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;
+ }
+
+ ///
+ /// 采购收货拆箱,同时更新、插入PurchaseReceipt任务表、申请表
+ ///
+ ///
+ ///
+ ///
+ [HttpPost("split-packing-purchase-receipt")]
+ public async Task 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;
+ }
+
+ ///
+ /// 质检拆箱,同时更新、插入Inspect任务表(不更新申请表)
+ ///
+ ///
+ ///
+ ///
+ [HttpPost("split-packing-inspect")]
+ public async Task 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;
+ }
+
+ ///
+ /// 发料拆箱,同时更新、插入Inspect任务表(没有找到申请表//??)
+ ///
+ ///
+ ///
+ ///
+ [HttpPost("split-packing-issue")]
+ public async Task 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;
+ }
+
+
+
+
+
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs
index 59210677d..2c0039268 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs
+++ b/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();
}
+
+ ///
+ /// 根据number取列表
+ ///
+ ///
+ ///
+ [HttpGet("get-list-by-number")]
+ public async Task> GetListByNumberAsync(string number)
+ {
+ var entity = await _repository.GetListAsync(itm => itm.Number == number).ConfigureAwait(false);
+ var dto = ObjectMapper.Map, List>(entity);
+ return dto;
+ }
+
+ ///
+ /// 保存拆箱时涉及的明细修改
+ ///
+ ///
+ ///
+ ///
+ [HttpGet("save-detail-split-packing")]
+ public virtual async Task 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(entity);
+ return ret;
+ }
+
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJob.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJob.cs
index 8e4165387..4f5a09fad 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJob.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJob.cs
@@ -144,4 +144,5 @@ public class InspectJob : SfsJobAggregateRootBase
{
Number = number;
}
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJobDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJobDetail.cs
index 07b445d27..85d50803d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJobDetail.cs
+++ b/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
///
[Display(Name = "其他属性Json")]
public string OtherPropertyJson { get; set; }
+
+ public virtual void SetId(Guid id)
+ {
+ this.Id = id;
+ }
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IssueJobDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IssueJobDetail.cs
index 3e426bfa8..160e7d6f3 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IssueJobDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IssueJobDetail.cs
@@ -101,4 +101,8 @@ public class IssueJobDetail : SfsJobRecommendFromDetailEntityBase, IHasToLocatio
///
public EnumRecommendType RecommendType { get; set; }
+ public void SetId(Guid id)
+ {
+ this.Id = id;
+ }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobManager.cs
index 5976b0943..914b42d92 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobManager.cs
+++ b/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
{
+ Task> GetListByNumberAsync(string number);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobDetail.cs
index 7ffb4d379..fb1d28694 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobDetail.cs
+++ b/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;
+ }
+
+
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobManager.cs
index 11d85fc8d..f87404a63 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobManager.cs
@@ -110,4 +110,16 @@ public class PurchaseReceiptJobManager : SfsJobManagerBase c.Details.Any(p => p.RecommendPackingCode == packingCode) && c.JobStatus != EnumJobStatus.Closed && c.JobStatus != EnumJobStatus.Cancelled, true).ConfigureAwait(false);
}
+
+ ///
+ /// 根据number取列表
+ ///
+ ///
+ ///
+ public async Task> GetListByNumberAsync(string number)
+ {
+ var result = await Repository.GetListAsync(c => c.Number == number).ConfigureAwait(false);
+ return result;
+ }
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestDetail.cs
index 0bc5acf14..a15477c2a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestDetail.cs
+++ b/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
///
[Display(Name = "推荐ERP储位")]
public string RecommendErpCode { get; set; }
+
+
+ public void SetId(Guid id)
+ {
+ this.Id = Id;
+ }
}