diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/TransferLibJobController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/TransferLibJobController.cs
index 5caf96652..5c6aed4cb 100644
--- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/TransferLibJobController.cs
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/TransferLibJobController.cs
@@ -72,7 +72,6 @@ public class TransferLibJobController : AbpController
///
///
[HttpPost("complete/{id}")]
-
public virtual async Task CompleteAsync(Guid id, TransferLibJobDTO jobDTO)
{
var entity = await _transferLibJobAppService.CompleteAsync(id, jobDTO).ConfigureAwait(false);
diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueRequest/KittingRequestController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueRequest/KittingRequestController.cs
index fcc062f5a..110c5a417 100644
--- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueRequest/KittingRequestController.cs
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueRequest/KittingRequestController.cs
@@ -97,7 +97,7 @@ public class KittingRequestController : AbpController
///
/// 根据Job Number 获取盘点任务列表
///
- ///
+ ///
///
[HttpGet("by-number/{requestNumber}")]
public virtual async Task> GetByNumberAsync(string requestNumber)
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs
index c70f4caf8..97596b08d 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs
@@ -75,7 +75,6 @@ public class PositionCodeAppService
input.PartName = itemBasic.Name;
input.PartDesc = itemBasic.Desc1;
input.BasicUom = itemBasic.BasicUom;
- input.StdPackQty = itemBasic.StdPackQty;
var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在");
@@ -173,23 +172,23 @@ public class PositionCodeAppService
private async Task CheckPositionCodeInputAsync(PositionCodeImportInput input, List validationRresult)
{
- var itemEntity = await _repository.FirstOrDefaultAsync(p => p.PartCode == input.PartCode && p.Code != input.Code).ConfigureAwait(false);
- if (itemEntity != null)
- {
- validationRresult.Add(new ValidationResult($"物品代码{input.PartCode}已存在", new string[] { "物品代码" }));
- }
- var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false);
- //如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验
- if (input.Type == EnumRecommendType.RAW && itemBasic.Type != "10C02")
- {
- validationRresult.Add(new ValidationResult($"物品代码{input.PartCode} 物料号类型必须为原料", new string[] { "物料号类型" }));
- }
- var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
- //如果类型选择为原料,库位的类型必须为原料库位
- if (input.Type==EnumRecommendType.RAW && location.Type != EnumLocationType.RAW)
- {
- validationRresult.Add(new ValidationResult($"库位代码{input.LocationCode} 库位的类型必须为原料库位", new string[] { "库位类型" }));
- }
+ //var itemEntity = await _repository.FirstOrDefaultAsync(p => p.PartCode == input.PartCode && p.Code != input.Code).ConfigureAwait(false);
+ //if (itemEntity != null)
+ //{
+ // validationRresult.Add(new ValidationResult($"物品代码{input.PartCode}已存在", new string[] { "物品代码" }));
+ //}
+ //var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false);
+ ////如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验
+ //if (input.Type == EnumRecommendType.RAW && itemBasic.Type != "10C02")
+ //{
+ // validationRresult.Add(new ValidationResult($"物品代码{input.PartCode} 物料号类型必须为原料", new string[] { "物料号类型" }));
+ //}
+ //var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
+ ////如果类型选择为原料,库位的类型必须为原料库位
+ //if (input.Type==EnumRecommendType.RAW && location.Type != EnumLocationType.RAW)
+ //{
+ // validationRresult.Add(new ValidationResult($"库位代码{input.LocationCode} 库位的类型必须为原料库位", new string[] { "库位类型" }));
+ //}
}
protected override async Task ValidateImportModelAsync(PositionCodeImportInput importInput, List validationRresult)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IChassisAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IChassisAppService.cs
index eb28b2756..c807299ab 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IChassisAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Chassis/IChassisAppService.cs
@@ -12,10 +12,5 @@ public interface IChassisAppService
ISfsCheckStatusAppService
, ISfsUpsertAppService
{
- ///
- /// ƽֳʹ յ̷ڲ20
- ///
- ///
- Task> GetListWithNextCountAsync(long sortNumber,int count,
- CancellationToken cancellationToken = default);
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/IChassisOperationSequenceAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/IChassisOperationSequenceAppService.cs
index 0454175f1..dbc631dc4 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/IChassisOperationSequenceAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/ChassisOperationSequence/IChassisOperationSequenceAppService.cs
@@ -1,4 +1,6 @@
+using System.Threading;
using System.Threading.Tasks;
+using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Shared.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@@ -18,4 +20,11 @@ public interface IChassisOperationSequenceAppService
///
///
Task UpdateChassisSortNumberByKittingCodeAsync(string kittingCode, long newChassisSortNumber,string chassisNumber);
+
+ ///
+ /// 平板或手持使用 按照底盘返回排序大于参数中20个的
+ ///
+ ///
+ Task> GetListWithNextCountAsync(int count, string kittingCode,
+ CancellationToken cancellationToken = default);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs
index 97483d727..bded6701f 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs
@@ -1,11 +1,8 @@
using System;
using System.Collections.Generic;
-using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-using Volo.Abp.Application.Dtos;
-using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
@@ -74,32 +71,5 @@ public class ChassisAppService
throw new NotImplementedException();
}
- ///
- /// 平板或手持使用 按照底盘返回排序大于参数中20个的
- ///
- ///
- [HttpPost("get-list-with-next-count")]
- public async Task> GetListWithNextCountAsync(long sortNumber,int count,
- CancellationToken cancellationToken = default)
- {
- var requestInput = new SfsStoreRequestInputBase
- {
- MaxResultCount = count,
- SkipCount = 0,
- Sorting = $"{nameof(Chassis.SortNumber)} DESC",
- Condition = new Condition
- {
- Filters = new List { new(nameof(Chassis.SortNumber), sortNumber.ToString(), ">=") }
- }
- };
-
- var expression = requestInput.Condition.Filters?.Count > 0
- ? requestInput.Condition.Filters.ToLambda()
- : p => true;
-
- return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
- requestInput.Sorting, false, cancellationToken).ConfigureAwait(false);
- }
-
#endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs
index ef2bcadd0..93187a8f7 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs
@@ -1,8 +1,11 @@
using System;
using System.Collections.Generic;
+using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using Volo.Abp.Application.Dtos;
+using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
@@ -21,10 +24,10 @@ public class ChassisOperationSequenceAppService
{
private new readonly IChassisOperationSequenceRepository _repository;
private readonly IChassisOperationSequenceManager _manager;
+ private readonly IChassisAppService _chassisAppService;
public ChassisOperationSequenceAppService(
- IChassisOperationSequenceRepository repository, IChassisOperationSequenceManager manager
- ) : base(repository)
+ IChassisOperationSequenceRepository repository, IChassisOperationSequenceManager manager, IChassisAppService chassisAppService) : base(repository)
{
base.CreatePolicyName = ChassisOperationSequencePermissions.Create;
base.UpdatePolicyName = ChassisOperationSequencePermissions.Update;
@@ -32,6 +35,7 @@ public class ChassisOperationSequenceAppService
_repository = repository;
_manager = manager;
+ _chassisAppService = chassisAppService;
}
///
@@ -39,6 +43,7 @@ public class ChassisOperationSequenceAppService
///
///
///
+ ///
///
[HttpPost("update-chassis-sort-number-by-kitting-code")]
public async Task UpdateChassisSortNumberByKittingCodeAsync(string kittingCode, long newChassisSortNumber, string chassisNumber)
@@ -62,6 +67,38 @@ public class ChassisOperationSequenceAppService
}
}
+ ///
+ /// 平板或手持使用 按照底盘返回排序大于参数中20个的
+ ///
+ ///
+ [HttpPost("get-list-with-next-count")]
+ public async Task> GetListWithNextCountAsync(int count, string kittingCode,
+ CancellationToken cancellationToken = default)
+ {
+ var chassisOperationSequence=await _repository.FindAsync(p => p.KittingCode == kittingCode).ConfigureAwait(false);
+ long sortNumber = 1;
+ if (chassisOperationSequence != null)
+ {
+ sortNumber = chassisOperationSequence.ChassisSortNumber;
+ }
+
+ var requestInput = new SfsStoreRequestInputBase
+ {
+ MaxResultCount = count,
+ SkipCount = 0,
+ Sorting = $"{nameof(Chassis.SortNumber)} DESC",
+ Condition = new Condition
+ {
+ Filters = new List
+ {
+ new(nameof(Chassis.SortNumber), sortNumber.ToString(), ">="),
+ }
+
+ }
+ };
+ return await _chassisAppService.GetPagedListByFilterAsync(requestInput,false, cancellationToken).ConfigureAwait(false);
+ }
+
#region 无用
[NonAction]
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs
index e583f0a43..b6152abf8 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs
@@ -2,9 +2,11 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
+using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
@@ -78,7 +80,6 @@ public class KittingIssueJobAppService
await _kittingIssueJobManager.CancelAsync(injectionJob).ConfigureAwait(false);
}
-
[HttpPost("cancel-by-request/{requestNumber}")]
public virtual async Task CancelByMaterialRequestAsync(string requestNumber)
{
@@ -161,20 +162,24 @@ public class KittingIssueJobAppService
var kittingIssueNoteEditInput = await BuildKittingIssueNoteAsync(kittingIssueJobDto).ConfigureAwait(false);
await _kittingIssueNoteAppService.CreateAsync(kittingIssueNoteEditInput).ConfigureAwait(false);
- kittingIssueJobDto = ObjectMapper.Map(kittingIssueJob);
+ var issueJobDetail=ObjectMapper.Map(issueJobDetailDto);
+ issueJobDetail.HandledToQty += issueJobDetailDto.HandledToQty;
+ kittingIssueJob.Details = new EditableList() { issueJobDetail };
if (kittingIssueJob.EnumIssueSendType == EnumIssueSendType.BoxQtyType) //按箱叫料 因为任务只有1箱 所以可以直接完成
{
- await UpdateJobStatusDoneAsync(kittingIssueJob, issueJobDetailDto).ConfigureAwait(false);
+ await UpdateRequestAndjobStatusDoneAsync(kittingIssueJob, issueJobDetailDto).ConfigureAwait(false);
}
else
{
var detail = kittingIssueJob.Details.First(p => p.Id == issueJobDetailDto.Id);
- if (issueJobDetailDto.HandledToQty >= detail.RequestQty)
+ if (issueJobDetail.HandledToQty >= detail.RequestQty)
{
- await UpdateJobStatusDoneAsync(kittingIssueJob, issueJobDetailDto).ConfigureAwait(false);
+ await UpdateRequestAndjobStatusDoneAsync(kittingIssueJob, issueJobDetailDto).ConfigureAwait(false);
}
}
+
+ await _repository.UpdateAsync(kittingIssueJob).ConfigureAwait(false);
}
#region 私有
@@ -263,14 +268,21 @@ public class KittingIssueJobAppService
}
}
- private async Task UpdateJobStatusDoneAsync(KittingIssueJob kittingIssueJob,
+ ///
+ /// 修改当前任务状态 和 该任务的请求状态
+ ///
+ ///
+ ///
+ ///
+ ///
+ private async Task UpdateRequestAndjobStatusDoneAsync(KittingIssueJob kittingIssueJob,
KittingIssueJobDetailDTO kittingIssueJobDetailDto)
{
if (kittingIssueJob.JobStatus is EnumJobStatus.Closed or EnumJobStatus.Cancelled or EnumJobStatus.None
or EnumJobStatus.Done) //需要考虑下 多次提交的问题 所以不判断 进行中
{
throw new UserFriendlyException(
- $"任务状态错误:编号为【{kittingIssueJob.Number}】的任务已经【{kittingIssueJob.JobStatus.GetDisplayName()}】");
+ $"任务状态错误:编号为【{kittingIssueJob.Number}】的任务状态为【{kittingIssueJob.JobStatus.GetDisplayName()}】");
}
kittingIssueJob.JobStatus = EnumJobStatus.Done;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAppService.cs
index 7fbf30d55..37689d407 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAppService.cs
@@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
using Volo.Abp.Uow;
+using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
@@ -21,11 +22,13 @@ public class TransferLibJobAppService
ITransferLibJobAppService
{
private readonly IServiceProvider _serviceProvider;
+ private readonly ILocationAppService _locationAppService;
public TransferLibJobAppService(
- ITransferLibJobRepository repository, ITransferLibJobManager TransferLibJobManager, IServiceProvider serviceProvider) : base(repository, TransferLibJobManager)
+ ITransferLibJobRepository repository, ITransferLibJobManager TransferLibJobManager, IServiceProvider serviceProvider, ILocationAppService locationAppService) : base(repository, TransferLibJobManager)
{
_serviceProvider = serviceProvider;
+ _locationAppService = locationAppService;
}
///
@@ -172,6 +175,27 @@ public class TransferLibJobAppService
}
#endregion
+ foreach (var detail in dto.Details)
+ {
+ detail.HandledFromContainerCode = string.Empty;
+ detail.HandledToContainerCode = string.Empty;
+
+ var fromLocationDto=await _locationAppService.GetByCodeAsync(detail.HandledFromLocationCode).ConfigureAwait(false);
+ var toLocationDto=await _locationAppService.GetByCodeAsync(detail.HandledToLocationCode).ConfigureAwait(false);
+
+ detail.HandledFromLocationArea = fromLocationDto.AreaCode;
+ detail.HandledFromLocationCode = fromLocationDto.Code;
+ detail.HandledFromLocationErpCode = fromLocationDto.ErpLocationCode;
+ detail.HandledFromLocationGroup = fromLocationDto.LocationGroupCode;
+ detail.HandledFromWarehouseCode = fromLocationDto.WarehouseCode;
+
+ detail.HandledToLocationArea = toLocationDto.AreaCode;
+ detail.HandledToLocationCode = toLocationDto.Code ;
+ detail.HandledToLocationErpCode = toLocationDto.ErpLocationCode;
+ detail.HandledToLocationGroup = toLocationDto.LocationGroupCode;
+ detail.HandledToWarehouseCode = toLocationDto.WarehouseCode;
+ }
+
var ret = await base.CompleteAsync(id, dto).ConfigureAwait(false);
if (ret != null)
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAppService.cs
index f0315fb80..7dac2cb09 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAppService.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using NUglify.Helpers;
@@ -139,14 +140,38 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase CancelAsync(Guid id)
+ {
+ var request=await _repository.GetAsync(id).ConfigureAwait(false);
+
+ var list=await _kittingIssueJobAppService.GetByRequestNumberAsync(request.Number).ConfigureAwait(false);
+ if (list.Any())
+ {
+ foreach (var kittingIssueJobDto in list)
+ {
+ if (kittingIssueJobDto.JobStatus == EnumJobStatus.Open ||
+ kittingIssueJobDto.JobStatus == EnumJobStatus.Partial ||
+ kittingIssueJobDto.JobStatus == EnumJobStatus.Doing ||
+ kittingIssueJobDto.JobStatus == EnumJobStatus.Wait)
+ {
+ await _kittingIssueJobAppService.CancelAsync(kittingIssueJobDto.Id).ConfigureAwait(false);
+ }
+ }
+ }
+
+ return await base.CancelAsync(id).ConfigureAwait(false);
+ }
+
[HttpPost("UpdateStatusCompleted")]
public async Task UpdateStatusCompletedAsync(string number)
{
var kittingIssueRequest=await _repository.FindAsync(p=>p.Number== number).ConfigureAwait(false);
+ await UpdateKittingIssueRequestDetailQtyAsync(kittingIssueRequest,new EditableList()).ConfigureAwait(false);
+
var kittingIssueJobDtos=await _kittingIssueJobAppService.GetByRequestNumberAsync(kittingIssueRequest.Number).ConfigureAwait(false);
- if (!kittingIssueJobDtos.Any(p =>
+ if (kittingIssueJobDtos.Any(p =>
p.JobStatus == EnumJobStatus.Open || p.JobStatus == EnumJobStatus.Doing ||
p.JobStatus == EnumJobStatus.Partial) )
{
@@ -176,6 +201,54 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase
+ /// 修改请求的 已发 已收数量
+ ///
+ ///
+ ///
+ ///
+ private async Task UpdateKittingIssueRequestDetailQtyAsync(KittingIssueRequest kittingIssueRequest,
+ List addKittingIssueJobDtos)
+ {
+ //原有任务
+ var existKittingIssueJobDtos = await _kittingIssueJobAppService.GetByRequestNumberAsync(kittingIssueRequest.Number)
+ .ConfigureAwait(false);
+
+ //新增的任务和已有的任务总和
+ var allKittingIssueJobDtos = new List();
+ allKittingIssueJobDtos.AddRange(addKittingIssueJobDtos);
+ allKittingIssueJobDtos.AddRange(existKittingIssueJobDtos);
+
+ var groupByItemCodeLocationCode = kittingIssueRequest.Details.GroupBy(p =>
+ new { p.ItemCode, p.ToLocationCode });
+ foreach (var group in groupByItemCodeLocationCode)
+ {
+ foreach (var requestDetail in group)
+ {
+ //所有已发数量
+ decimal allIssuedQty = 0;
+
+ //所有已发数量
+ decimal allReceivedQty = 0;
+
+ foreach (var allKittingIssueJobDto in allKittingIssueJobDtos)
+ {
+ var jobDetailDtos = allKittingIssueJobDto.Details.Where(p =>
+ p.ItemCode == group.Key.ItemCode && p.RequestLocationCode == group.Key.ToLocationCode);
+ //所有已发数量
+ allIssuedQty += jobDetailDtos.Sum(p => p.RequestQty);
+ //所有已发数量
+ allReceivedQty += jobDetailDtos.Sum(p => p.HandledToQty);
+ }
+
+ requestDetail.IssuedQty += allIssuedQty;
+ requestDetail.ReceivedQty += allReceivedQty;
+ }
+ }
+
+ await _repository.UpdateAsync(kittingIssueRequest).ConfigureAwait(false);
+ }
+
[HttpPost("IsHasNewJob")]
public async Task IsHasNewJobAsync(string requestNumber,List jobNumber)
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobManager.cs
index 0725bd952..dd45e4f9b 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobManager.cs
@@ -5,6 +5,7 @@ using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using Volo.Abp;
+using Volo.Abp.Domain.Repositories;
using Volo.Abp.Users;
using Volo.Abp.Validation;
using Win_in.Sfs.Shared.Domain.Shared;
@@ -18,7 +19,9 @@ public class KittingIssueJobManager : SfsJobManagerBase() { detailInput };
+
await _transferLibRequestAppService.CreateAsync(input).ConfigureAwait(false);
}
}