Browse Source

Merge branch 'dev_DY_CC' of http://dev.ccwin-in.com:3000/BoXu.Zheng/WZC2 into dev_DY_CC

dev_DY_CC
周红军 1 year ago
parent
commit
7bc0e7f398
  1. 28
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/TransferNoteController.cs
  2. 1
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Permissions/BasedataPermissionDefinitionProvider.cs
  3. 20
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/SplitPackingRecPermissions.cs
  4. 52
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAppService.cs
  5. 1
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAreaAutoMapperProfile.cs
  6. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAutoMapperProfile.cs
  7. 13
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs
  8. 8
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs
  9. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/InspectJobs/IInspectJobAppService.cs
  10. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/IIssueJobAppService.cs
  11. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobAppService.cs
  12. 24
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/ITransferNoteAppService.cs
  13. 38
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/Inputs/SplitPacking_UpdateJobDetailInput.cs
  14. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReceiptRequests/IPurchaseReceiptRequestAppService.cs
  15. 36
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Equipments/EquipmentRecordAppService.cs
  16. 34
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/InspectJobs/InspectJobAppService.cs
  17. 32
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/IssueJobAppService.cs
  18. 48
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobAppService.cs
  19. 134
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs
  20. 46
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs
  21. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJob.cs
  22. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJobDetail.cs
  23. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/IssueJobDetail.cs
  24. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/IPurchaseReceiptJobManager.cs
  25. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobDetail.cs
  26. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReceiptJobs/PurchaseReceiptJobManager.cs
  27. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestDetail.cs
  28. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.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); 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;
}
} }

1
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Permissions/BasedataPermissionDefinitionProvider.cs

@ -30,6 +30,7 @@ public class BasedataPermissionDefinitionProvider : PermissionDefinitionProvider
basedataGroup.AddSalePriceSheetPermission(); basedataGroup.AddSalePriceSheetPermission();
basedataGroup.AddShiftPermission(); basedataGroup.AddShiftPermission();
basedataGroup.AddStdCostPriceSheetPermission(); basedataGroup.AddStdCostPriceSheetPermission();
basedataGroup.AddSplitPackingRecPermission();
basedataGroup.AddUomPermission(); basedataGroup.AddUomPermission();
basedataGroup.AddItemBasicPermission(); basedataGroup.AddItemBasicPermission();
basedataGroup.AddItemCategoryPermission(); basedataGroup.AddItemCategoryPermission();

20
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/SplitPackingRecPermissions.cs

@ -0,0 +1,20 @@
using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Basedata.Domain;
namespace Win_in.Sfs.Basedata.Application.Contracts;
public static class SplitPackingRecPermissions
{
public const string Default = BasedataPermissions.GroupName + "." + nameof(SplitPackingRec);
public const string Create = Default + "." + BasedataPermissions.CreateStr;
public const string Update = Default + "." + BasedataPermissions.UpdateStr;
public const string Delete = Default + "." + BasedataPermissions.DeleteStr;
public static void AddSplitPackingRecPermission(this PermissionGroupDefinition permissionGroup)
{
var SplitPackingRecPermission = permissionGroup.AddPermission(Default, BasedataPermissionDefinitionProvider.L(nameof(SplitPackingRec)));
SplitPackingRecPermission.AddChild(Create, BasedataPermissionDefinitionProvider.L(BasedataPermissions.CreateStr));
SplitPackingRecPermission.AddChild(Update, BasedataPermissionDefinitionProvider.L(BasedataPermissions.UpdateStr));
SplitPackingRecPermission.AddChild(Delete, BasedataPermissionDefinitionProvider.L(BasedataPermissions.DeleteStr));
}
}

52
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAppService.cs

@ -1,11 +1,13 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
@ -15,6 +17,8 @@ using Volo.Abp.Validation;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts.ExportAndImport;
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;
@ -29,14 +33,17 @@ public class EquipmentAppService
//private readonly ItemValidator _itemValidator; //private readonly ItemValidator _itemValidator;
private readonly IEquipmentManager _manager; private readonly IEquipmentManager _manager;
private new readonly IEquipmentRepository _repository; private new readonly IEquipmentRepository _repository;
private readonly IExportImportService _importService;
public EquipmentAppService( public EquipmentAppService(
IEquipmentRepository repository, IEquipmentRepository repository,
IDistributedCache<EquipmentDTO> cache, IDistributedCache<EquipmentDTO> cache,
IExportImportService importService,
// ItemValidator itemValidator, // ItemValidator itemValidator,
IEquipmentManager manager) IEquipmentManager manager)
: base(repository, cache) : base(repository, cache)
{ {
_importService=importService;
_repository = repository; _repository = repository;
//_itemValidator = itemValidator; //_itemValidator = itemValidator;
_manager = manager; _manager = manager;
@ -52,7 +59,52 @@ public class EquipmentAppService
{ {
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
} }
//public override async Task<IActionResult> ImportAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file)
//{
// List<EquipmentErrorDTO> errors = new List<EquipmentErrorDTO>();
// using var ms = new MemoryStream();
// await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false);
// var inputFileBytes = ms.GetAllBytes();
// var dtos=_importService.Import<EquipmentEditInput>(inputFileBytes).ToList();
// var list=ObjectMapper.Map<List<EquipmentEditInput>, List<Equipment>>(dtos);
// foreach (var itm in list)
// {
// itm.SetId(GuidGenerator.Create());
// itm.Code = string.Format("{0}{1}", "Q", itm.Code);
// }
// ////var bytes = result.FileContents;
// ////result.FileContents = null;
// ////HttpContextAccessor.HttpContext.Response.Headers.AccessControlExposeHeaders = "X-Response";
// ////HttpContextAccessor.HttpContext.Response.Headers.Add("X-Response",
// //// JsonSerializer.Serialize(new { result.ExceptionMessage, result.FileName, result.FileCode, result }));
// ////Console.WriteLine(@"导入错误信息:" + result.ExceptionMessage);
// ////var resultAction = new TestResult(bytes, ExportImportService.ContentType) { FileDownloadName = result.FileName };
// ////resultAction.errorNum = result.ErrorNum;
// ////resultAction.successNum = resultAction.successNum;
// //return resultAction;
// // return base.ImportAsync(requestInput, file);
//}
//protected ICategoryAppService _categoryApp => LazyServiceProvider.LazyGetRequiredService<ICategoryAppService>(); //protected ICategoryAppService _categoryApp => LazyServiceProvider.LazyGetRequiredService<ICategoryAppService>();
//protected IItemCategoryAppService _itemCategoryApp => LazyServiceProvider.LazyGetRequiredService<IItemCategoryAppService>(); //protected IItemCategoryAppService _itemCategoryApp => LazyServiceProvider.LazyGetRequiredService<IItemCategoryAppService>();

1
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAreaAutoMapperProfile.cs

@ -19,6 +19,7 @@ public partial class BasedataApplicationAutoMapperProfile : Profile
.Ignore(x => x.Remark) .Ignore(x => x.Remark)
.Ignore(x => x.ExtraProperties) .Ignore(x => x.ExtraProperties)
.Ignore(x => x.ConcurrencyStamp) .Ignore(x => x.ConcurrencyStamp)
; ;
//CreateMap<Equipment, EquipmentImportInput>() //CreateMap<Equipment, EquipmentImportInput>()

2
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAutoMapperProfile.cs

@ -19,6 +19,8 @@ public partial class BasedataApplicationAutoMapperProfile : Profile
.Ignore(x => x.Remark) .Ignore(x => x.Remark)
.Ignore(x => x.ExtraProperties) .Ignore(x => x.ExtraProperties)
.Ignore(x => x.ConcurrencyStamp) .Ignore(x => x.ConcurrencyStamp)
.ForMember(p =>p.Code, p => p.MapFrom(q =>"Q" +q.Code))
; ;
//CreateMap<Equipment, EquipmentImportInput>() //CreateMap<Equipment, EquipmentImportInput>()

13
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs

@ -1,9 +1,7 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Caching; using Volo.Abp.Caching;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
@ -14,7 +12,7 @@ namespace Win_in.Sfs.Basedata.Application;
/// <summary> /// <summary>
/// 拆箱记录 /// 拆箱记录
/// </summary> /// </summary>
//[Authorize] [Authorize]
[Route($"{BasedataConsts.RootPath}split-packing-rec")] [Route($"{BasedataConsts.RootPath}split-packing-rec")]
public class SplitPackingRecAppService : public class SplitPackingRecAppService :
SfsBaseDataAppServiceBase<SplitPackingRec, SplitPackingRecDTO, SfsBaseDataRequestInputBase, SplitPackingRecEditInput SfsBaseDataAppServiceBase<SplitPackingRec, SplitPackingRecDTO, SfsBaseDataRequestInputBase, SplitPackingRecEditInput
@ -28,9 +26,12 @@ public class SplitPackingRecAppService :
,IDistributedCache<SplitPackingRecDTO> cache ,IDistributedCache<SplitPackingRecDTO> cache
) : base(repository, cache) ) : base(repository, cache)
{ {
base.CreatePolicyName = StdCostPriceSheetPermissions.Create;
base.UpdatePolicyName = StdCostPriceSheetPermissions.Update;
base.DeletePolicyName = StdCostPriceSheetPermissions.Delete;
_splitPackingRecManager = splitPackingRecManager; _splitPackingRecManager = splitPackingRecManager;
} }
[HttpPost("batch-insert")]
public async Task<bool> BatchInsertAsync(List<SplitPackingRecEditInput> inputs) public async Task<bool> BatchInsertAsync(List<SplitPackingRecEditInput> inputs)
{ {
List<SplitPackingRec> lst = ObjectMapper.Map<List<SplitPackingRecEditInput>, List<SplitPackingRec>>(inputs); List<SplitPackingRec> lst = ObjectMapper.Map<List<SplitPackingRecEditInput>, List<SplitPackingRec>>(inputs);
@ -43,6 +44,7 @@ public class SplitPackingRecAppService :
/// </summary> /// </summary>
/// <param name="toPackingCodeList">目标箱码列表</param> /// <param name="toPackingCodeList">目标箱码列表</param>
/// <returns></returns> /// <returns></returns>
[HttpGet("by-to-packing-code")]
public async Task<List<SplitPackingRecDTO>> GetListByToPackingCode(List<string> toPackingCodeList) public async Task<List<SplitPackingRecDTO>> GetListByToPackingCode(List<string> toPackingCodeList)
{ {
var lst = await _splitPackingRecManager.GetListByToPackingCode(toPackingCodeList).ConfigureAwait(false); var lst = await _splitPackingRecManager.GetListByToPackingCode(toPackingCodeList).ConfigureAwait(false);
@ -55,6 +57,7 @@ public class SplitPackingRecAppService :
/// </summary> /// </summary>
/// <param name="fromPackingCodeList">源标箱码列表</param> /// <param name="fromPackingCodeList">源标箱码列表</param>
/// <returns></returns> /// <returns></returns>
[HttpGet("by-from-packing-code")]
public async Task<List<SplitPackingRecDTO>> GetListByFromPackingCode(List<string> fromPackingCodeList) public async Task<List<SplitPackingRecDTO>> GetListByFromPackingCode(List<string> fromPackingCodeList)
{ {
var lst = await _splitPackingRecManager.GetListByFromPackingCode(fromPackingCodeList).ConfigureAwait(false); var lst = await _splitPackingRecManager.GetListByFromPackingCode(fromPackingCodeList).ConfigureAwait(false);

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); var ret = JsonConvert.DeserializeObject<T>(json);
return ret; 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 CancelByInspectRequestAsync(string inspectRequestNumber);
Task<InspectJobDTO> GetInspectNoteDetailByPackingCodeAsync(string packingCode); 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); bool includeDetails = false, CancellationToken cancellationToken = default);
Task<List<IssueJobDTO>> GetByRequestNumberAsync(string requestNumber); 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> /// </summary>
/// <returns></returns> /// <returns></returns>
Task<List<PurchaseReceiptJobDTO>> GetListBySupplierCodeOnTodayAsync(string supplierCode); 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( Task<PagedResultDto<TransferNoteDTO>> GetSplitPackingTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false, SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default); 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> /// <returns></returns>
Task<PurchaseReceiptRequestDTO> UpdatePurchaseReceiptRequestAsync(string number, Task<PurchaseReceiptRequestDTO> UpdatePurchaseReceiptRequestAsync(string number,
EnumRequestStatus enumRequestStatus); 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);
} }

36
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Equipments/EquipmentRecordAppService.cs

@ -23,7 +23,7 @@ namespace Win_in.Sfs.Wms.Store.Application;
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}EquipmentRecord")] [Route($"{StoreConsts.RootPath}EquipmentRecord")]
public class EquipmentRecordAppService public class EquipmentRecordAppService
: SfsCrudAppServiceBase<EquipmentRecord, EquipmentRecordDTO, SfsStoreRequestInputBase, EquipmentRecordEditInput, : SfsStoreAppServiceBase<EquipmentRecord, EquipmentRecordDTO, SfsStoreRequestInputBase, EquipmentRecordEditInput,
ExchangeDataImportInput> ExchangeDataImportInput>
, IEquipmentRecordAppService , IEquipmentRecordAppService
@ -42,32 +42,54 @@ public class EquipmentRecordAppService
_manager = manager; _manager = manager;
_repository = repository; _repository = repository;
} }
/// <summary>
/// 没用
/// </summary>
/// <param name="id"></param>
/// <param name="list"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
[HttpPost("addDetail")]
public Task AddDetailListAsync(Guid id, List<EquipmentRecordDTO> list) public Task AddDetailListAsync(Guid id, List<EquipmentRecordDTO> list)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
/// <summary>
/// 没用
/// </summary>
[HttpPost("check")]
public Task CheckStatusAsync(string number) public Task CheckStatusAsync(string number)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
/// <summary>
/// 没用
/// </summary>
[HttpPost("getlist")]
public Task<List<EquipmentRecordDTO>> GetDetailListAsync(Guid id, SfsStoreRequestInputBase requestInput) public Task<List<EquipmentRecordDTO>> GetDetailListAsync(Guid id, SfsStoreRequestInputBase requestInput)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
/// <summary>
/// 没用
/// </summary>
[HttpPost("updateDetail")]
public Task UpdateDetailAsync(Guid id, Guid detailId, EquipmentRecordDTO updateDTO) public Task UpdateDetailAsync(Guid id, Guid detailId, EquipmentRecordDTO updateDTO)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
/// <summary>
/// 没用
/// </summary>
[HttpPost("upsertAsync")]
public Task UpsertAsync(EquipmentRecordEditInput input) public Task UpsertAsync(EquipmentRecordEditInput input)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
/// <summary>
/// 没用
/// </summary>
[HttpPost("withDetil")]
Task<EquipmentRecordDTO> ISfsReadOnlyWithDetailsAppService<EquipmentRecordDTO, SfsStoreRequestInputBase, EquipmentRecordDTO, SfsStoreRequestInputBase>.GetDetailAsync(Guid id, Guid detailId) Task<EquipmentRecordDTO> ISfsReadOnlyWithDetailsAppService<EquipmentRecordDTO, SfsStoreRequestInputBase, EquipmentRecordDTO, SfsStoreRequestInputBase>.GetDetailAsync(Guid id, Guid detailId)
{ {
throw new NotImplementedException(); throw new NotImplementedException();

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 System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.FileStorage.Application.Contracts; using Win_in.Sfs.FileStorage.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
@ -160,6 +162,38 @@ public class InspectJobAppService
return dto; 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")] //[HttpPost("pick-inspect")]
//public virtual async Task AddPickInspectJobAsync(InspectJobCreateInput input) //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;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Domain.Shared;
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.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
@ -159,6 +160,37 @@ public class IssueJobAppService
return ObjectMapper.Map<List<IssueJob>, List<IssueJobDTO>>(entitys); 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> /// <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 System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.FileStorage.Application.Contracts; using Win_in.Sfs.FileStorage.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
@ -214,6 +216,52 @@ public class PurchaseReceiptJobAppService :
return dto; 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>
///// 取消请求 ///// 取消请求
///// </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 IBalanceAppService _balanceAppService;
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly ISplitPackingRecAppService _splitPackingRecAppService; private readonly ISplitPackingRecAppService _splitPackingRecAppService;
private readonly IPurchaseReceiptJobAppService _purchaseReceiptJobAppService;
private readonly IPurchaseReceiptRequestAppService _purchaseReceiptRequestAppService; //采购收货
private readonly IInspectJobAppService _inspectJobAppService; //质检
private readonly IIssueJobAppService _issueJobAppService; //发料
public TransferNoteAppService( public TransferNoteAppService(
ITransferNoteRepository repository, ITransferNoteRepository repository,
ITransferNoteManager transferNoteManager, ITransferNoteManager transferNoteManager,
IBalanceAppService balanceAppService, IBalanceAppService balanceAppService,
ILocationAppService locationAppService, ILocationAppService locationAppService,
ISplitPackingRecAppService splitPackingRecAppService) : base(repository) ISplitPackingRecAppService splitPackingRecAppService,
IPurchaseReceiptJobAppService purchaseReceiptJobAppService,
IPurchaseReceiptRequestAppService purchaseReceiptRequestAppService,
IInspectJobAppService inspectJobAppService,
IIssueJobAppService issueJobAppService) : base(repository)
{ {
_transferNoteManager = transferNoteManager; _transferNoteManager = transferNoteManager;
_balanceAppService = balanceAppService; _balanceAppService = balanceAppService;
_locationAppService = locationAppService; _locationAppService = locationAppService;
_splitPackingRecAppService = splitPackingRecAppService; _splitPackingRecAppService = splitPackingRecAppService;
_purchaseReceiptJobAppService = purchaseReceiptJobAppService;
_purchaseReceiptRequestAppService = purchaseReceiptRequestAppService;
_inspectJobAppService = inspectJobAppService;
_issueJobAppService = issueJobAppService;
} }
#region 东阳使用 #region 东阳使用
@ -126,36 +140,7 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
public async Task<TransferNoteDTO> SplitPackingAsync(TransferNoteEditInput transferNoteEditInput) public async Task<TransferNoteDTO> SplitPackingAsync(TransferNoteEditInput transferNoteEditInput)
{ {
//插入拆箱记录表 //插入拆箱记录表
foreach (var inputDetail in transferNoteEditInput.Details) await WriteSplitPackingRec(transferNoteEditInput).ConfigureAwait(false);
{
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);
}
//更新库存 //更新库存
transferNoteEditInput.Type = EnumTransSubType.Transfer_SplitPacking.ToString(); transferNoteEditInput.Type = EnumTransSubType.Transfer_SplitPacking.ToString();
return await CreateAsync(transferNoteEditInput).ConfigureAwait(false); return await CreateAsync(transferNoteEditInput).ConfigureAwait(false);
@ -389,5 +374,92 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
return dto; 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 System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow; using Volo.Abp.Uow;
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.Label.Application.Contracts; using Win_in.Sfs.Label.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
@ -142,4 +144,48 @@ public class PurchaseReceiptRequestAppService :
{ {
throw new NotImplementedException(); 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; 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;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
@ -115,4 +116,10 @@ public class InspectJobDetail : SfsJobDetailEntityBase
/// </summary> /// </summary>
[Display(Name = "其他属性Json")] [Display(Name = "其他属性Json")]
public string OtherPropertyJson { get; set; } 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> /// </summary>
public string RecommendType { get; set; } public string 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; namespace Win_in.Sfs.Wms.Store.Domain;
public interface IPurchaseReceiptJobManager : IJobManager<PurchaseReceiptJob> 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 = "供应商包装")] [Display(Name = "供应商包装")]
public decimal SupplierPackQty { get; set; } 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); 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 System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
@ -35,4 +36,10 @@ public class PurchaseReceiptRequestDetail : SfsStoreDetailWithLotPackingQtyEntit
/// </summary> /// </summary>
[Display(Name = "推荐ERP储位")] [Display(Name = "推荐ERP储位")]
public string RecommendErpCode { get; set; } public string RecommendErpCode { get; set; }
public void SetId(Guid id)
{
this.Id = Id;
}
} }

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs

@ -32,6 +32,7 @@ public class StoreEntityFrameworkCoreModule : AbpModule
context.Services.AddTransient<IPurchaseOrderRepository, PurchaseOrderEfCoreRepository>(); context.Services.AddTransient<IPurchaseOrderRepository, PurchaseOrderEfCoreRepository>();
context.Services.AddTransient<ISaleOrderRepository, SaleOrderEfCoreRepository>(); context.Services.AddTransient<ISaleOrderRepository, SaleOrderEfCoreRepository>();
context.Services.AddTransient<IWorkOrderRepository, WorkOrderEfCoreRepository>(); context.Services.AddTransient<IWorkOrderRepository, WorkOrderEfCoreRepository>();
context.Services.AddTransient<IEquipmentRecordRepository, EquipmentRecordEfCoreRepository>();
#endregion #endregion

Loading…
Cancel
Save