Browse Source

完成 非生产退料

dev_DY_CC
郑勃旭 7 months ago
parent
commit
1669e4a6fd
  1. 4
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs
  2. 71
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedReceiptJobs/DTOs/UnplannedReceiptJobDTO.cs
  3. 36
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedReceiptJobs/DTOs/UnplannedReceiptJobDetailDTO.cs
  4. 24
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedReceiptJobs/IUnplannedReceiptJobAppService.cs
  5. 38
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedReceiptJobs/Inputs/UnplannedReceiptJobDetailInput.cs
  6. 74
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedReceiptJobs/Inputs/UnplannedReceiptJobEditInput.cs
  7. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedReceiptRequests/DTOs/UnplannedReceiptRequestDetailDTO.cs
  8. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedReceiptRequests/IUnplannedReceiptRequestAppService.cs
  9. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedReceiptRequests/Inputs/UnplannedReceiptRequestDetailInput.cs
  10. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedReceiptRequests/Inputs/UnplannedReceiptRequestImportInput.cs
  11. 179
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs
  12. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/CustomerProductionReturnNotes/CustomerProductionReturnNoteAppService.cs
  13. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedReceiptNotes/UnplannedReceiptNoteAppService.cs
  14. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestAppService.cs
  15. 156
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs
  16. 78
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJob.cs
  17. 35
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobDetail.cs
  18. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestDetail.cs
  19. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ExchangeData/ExchangeDataDbContextModelCreatingExtensions.cs
  20. 34581
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009052809_Updata_UnplannedReceipt2.Designer.cs
  21. 256
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009052809_Updata_UnplannedReceipt2.cs
  22. 34581
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009061526_Updata_UnplannedReceipt3.Designer.cs
  23. 43
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009061526_Updata_UnplannedReceipt3.cs
  24. 34581
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009082825_Updata_UnplannedReceipt4.Designer.cs
  25. 25
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009082825_Updata_UnplannedReceipt4.cs
  26. 70
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs
  27. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/UnplannedReceiptJobAutoMapperProfile.cs
  28. 26
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/UnplannedReceiptRequestAutoMapperProfile.cs
  29. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs
  30. 75
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedReceiptRequestEventHandler.cs
  31. 4
      build/src/docker/publish/conf/settings/appsettings.Development.json

4
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs

@ -217,9 +217,9 @@ public class UnplannedReceiptJobController : AbpController
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("finish/{id}")]
public virtual async Task FinishAsync(Guid id, [FromBody] UnplannedReceiptJobDTO dto)
public virtual async Task FinishAsync(string jobNumber,string worker,List<UnplannedReceiptJobDetailDTO> list)
{
await _unplannedReceiptJobAppService.CompleteAsync(id, dto).ConfigureAwait(false);
await _unplannedReceiptJobAppService.DoByFreeAsync(jobNumber,worker,list).ConfigureAwait(false);
}
/// <summary>

71
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedReceiptJobs/DTOs/UnplannedReceiptJobDTO.cs

@ -18,8 +18,8 @@ public class UnplannedReceiptJobDTO : SfsJobDTOBase<UnplannedReceiptJobDetailDTO
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string UnplannedReceiptRequestNumber { get; set; }
[Display(Name = "退料类别")]
public EnumUnplannedReceiptType UnplannedReceiptType { get; set; }
[Display(Name = "退料类别")] public EnumUnplannedReceiptType UnplannedReceiptType { get; set; }
/// <summary>
/// 部门代码
/// </summary>
@ -34,12 +34,12 @@ public class UnplannedReceiptJobDTO : SfsJobDTOBase<UnplannedReceiptJobDetailDTO
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string DeptName { get; set; }
/// <summary>
/// 建档日
/// </summary>
[Display(Name = "建档日")]
public DateTime BuildDate { get; set; }
/// <summary>
/// OA单据号
/// </summary>
@ -47,4 +47,69 @@ public class UnplannedReceiptJobDTO : SfsJobDTOBase<UnplannedReceiptJobDetailDTO
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string OANumber { get; set; }
/// <summary>
/// 原因代码
/// </summary>
[Display(Name = "原因代码")]
public string ReasonCode { get; set; }
/// <summary>
/// 专案
/// </summary>
[Display(Name = "专案")]
public string CaseCode { get; set; }
/// <summary>
/// 项目分类
/// </summary>
[Display(Name = "项目分类")]
public string ProjCapacityCode { get; set; }
/// <summary>
/// 次交易码
/// </summary>
[Display(Name = "次交易码")]
public string OnceBusiCode { get; set; }
/// <summary>
/// 说明
/// </summary>
[Display(Name = "说明")]
public string Explain { get; set; }
/// <summary>
/// ERP料号
/// </summary>
[Display(Name = "ERP料号")]
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
[Display(Name = "物品名称")]
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
[Display(Name = "物品描述1")]
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
[Display(Name = "物品描述2")]
public string ItemDesc2 { get; set; }
/// <summary>
/// ERP储位
/// </summary>
[Display(Name = "ERP储位")]
public string FromErpLocationCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
}

36
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedReceiptJobs/DTOs/UnplannedReceiptJobDetailDTO.cs

@ -1,47 +1,13 @@
using DocumentFormat.OpenXml.Wordprocessing;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Data;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class UnplannedReceiptJobDetailDTO : SfsJobRecommendToDetailDTOBase
{
/// <summary>
/// 原因代码
/// </summary>
[Display(Name = "原因代码")]
public string ReasonCode { get; set; }
/// <summary>
/// 专案
/// </summary>
[Display(Name = "专案")]
public string CaseCode { get; set; }
/// <summary>
/// 项目分类
/// </summary>
[Display(Name = "项目分类")]
public string ProjCapacityCode { get; set; }
/// <summary>
/// 次交易码
/// </summary>
[Display(Name = "次交易码")]
public string OnceBusiCode { get; set; }
/// <summary>
/// 扩展属性
/// </summary>
[Display(Name = "扩展属性")]
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
/// <summary>
/// 说明
/// </summary>
[Display(Name = "说明")]
public string Explain { get; set; }
public ExtraPropertyDictionary ExtraProperties { get; set; } = new();
}

24
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedReceiptJobs/IUnplannedReceiptJobAppService.cs

@ -1,4 +1,6 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -6,4 +8,26 @@ public interface IUnplannedReceiptJobAppService
: ISfsJobAppServiceBase<UnplannedReceiptJobDTO, SfsJobRequestInputBase, UnplannedReceiptJobCheckInput, UnplannedReceiptJobEditInput>
{
Task CancelByRequestNumberAsync(string number);
/// <summary>
/// 根据储位任意退料
/// </summary>
/// <returns></returns>
Task CreateByFreeAsync(UnplannedReceiptRequestDTO requestDto);
/// <summary>
/// 执行任务储位任意退料
/// </summary>
/// <param name="jobNumber"></param>
/// <param name="worker"></param>
/// <param name="detailDtos"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
Task DoByFreeAsync(string jobNumber,string worker,List<UnplannedReceiptJobDetailDTO> detailDtos);
/// <summary>
///
/// </summary>
/// <returns></returns>
Task<bool> IsAllJobOverByRequestNumberAsync(string requestNumber);
}

38
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedReceiptJobs/Inputs/UnplannedReceiptJobDetailInput.cs

@ -1,45 +1,13 @@
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Data;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class UnplannedReceiptJobDetailInput : SfsJobRecommendToDetailInputBase, IHasExtraProperties
{
/// <summary>
/// 原因代码
/// </summary>
[Display(Name = "原因代码")]
public string ReasonCode { get; set; }
/// <summary>
/// 专案
/// </summary>
[Display(Name = "专案")]
public string CaseCode { get; set; }
/// <summary>
/// 项目分类
/// </summary>
[Display(Name = "项目分类")]
public string ProjCapacityCode { get; set; }
/// <summary>
/// 次交易码
/// </summary>
[Display(Name = "次交易码")]
public string OnceBusiCode { get; set; }
/// <summary>
/// 扩展属性
/// </summary>
[Display(Name = "扩展属性")]
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
/// <summary>
/// 说明
/// </summary>
[Display(Name = "说明")]
public string Explain { get; set; }
public ExtraPropertyDictionary ExtraProperties { get; set; } = new();
}

74
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedReceiptJobs/Inputs/UnplannedReceiptJobEditInput.cs

@ -7,9 +7,9 @@ using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class UnplannedReceiptJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCreateInput<UnplannedReceiptJobDetailInput>
public class UnplannedReceiptJobEditInput : SfsJobCreateUpdateInputBase,
ISfsJobCreateInput<UnplannedReceiptJobDetailInput>
{
#region Create
/// <summary>
/// 要货单号
/// </summary>
@ -64,14 +64,78 @@ public class UnplannedReceiptJobEditInput : SfsJobCreateUpdateInputBase, ISfsJob
[Display(Name = "任务明细")]
[Required(ErrorMessage = "{0}是必填项")]
public List<UnplannedReceiptJobDetailInput> Details { get; set; }
#endregion
[Display(Name = "退料类别", Order = 0)]
public EnumUnplannedReceiptType UnplannedReceiptType { get; set; }
[Display(Name = "退料类别", Order = 0)] public EnumUnplannedReceiptType UnplannedReceiptType { get; set; }
/// <summary>
/// OA单据号
/// </summary>
[Display(Name = "OA单据号")]
public string OANumber { get; set; }
/// <summary>
/// 原因代码
/// </summary>
[Display(Name = "原因代码")]
public string ReasonCode { get; set; }
/// <summary>
/// 专案
/// </summary>
[Display(Name = "专案")]
public string CaseCode { get; set; }
/// <summary>
/// 项目分类
/// </summary>
[Display(Name = "项目分类")]
public string ProjCapacityCode { get; set; }
/// <summary>
/// 次交易码
/// </summary>
[Display(Name = "次交易码")]
public string OnceBusiCode { get; set; }
/// <summary>
/// 说明
/// </summary>
[Display(Name = "说明")]
public string Explain { get; set; }
/// <summary>
/// ERP料号
/// </summary>
[Display(Name = "ERP料号")]
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
[Display(Name = "物品名称")]
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
[Display(Name = "物品描述1")]
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
[Display(Name = "物品描述2")]
public string ItemDesc2 { get; set; }
/// <summary>
/// ERP储位
/// </summary>
[Display(Name = "ERP储位")]
public string FromErpLocationCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedReceiptRequests/DTOs/UnplannedReceiptRequestDetailDTO.cs

@ -48,5 +48,5 @@ public class UnplannedReceiptRequestDetailDTO
/// 储位
/// </summary>
[Display(Name = "储位")]
public string ErpLocationCode { get; set; }
public string FromErpLocationCode { get; set; }
}

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedReceiptRequests/IUnplannedReceiptRequestAppService.cs

@ -6,4 +6,5 @@ public interface IUnplannedReceiptRequestAppService
: ISfsStoreRequestMasterAppServiceBase<UnplannedReceiptRequestDTO, SfsStoreRequestInputBase, UnplannedReceiptRequestEditInput, UnplannedReceiptRequestDetailDTO, SfsStoreRequestInputBase>
{
Task<UnplannedReceiptRequestDTO> CreateByOAAsync(UnplannedReceiptRequestEditInput input);
Task UpdateStatusByJobAsync(string requestNumber);
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedReceiptRequests/Inputs/UnplannedReceiptRequestDetailInput.cs

@ -41,5 +41,5 @@ public class UnplannedReceiptRequestDetailInput : SfsStoreDetailWithLotPackingQt
/// 储位
/// </summary>
[Display(Name = "储位")]
public string ErpLocationCode { get; set; }
public string FromErpLocationCode { get; set; }
}

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedReceiptRequests/Inputs/UnplannedReceiptRequestImportInput.cs

@ -68,12 +68,6 @@ public class UnplannedReceiptRequestImportInput : SfsStoreImportInputBase
[ExporterHeader(IsIgnore = true)]
public string WarehouseCode { get; set; }
/// <summary>
/// 说明
/// </summary>
//[Display(Name = "说明2")]
//public string Remark { get; set; }
/// <summary>
/// 说明
/// </summary>
@ -85,5 +79,6 @@ public class UnplannedReceiptRequestImportInput : SfsStoreImportInputBase
/// 储位
/// </summary>
[Display(Name = "储位")]
public string ErpLocationCode { get; set; }
[Required(ErrorMessage = "储位不能为空")]
public string FromErpLocationCode { get; set; }
}

179
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
@ -21,6 +22,8 @@ using Castle.Components.DictionaryAdapter;
using Irony;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
[Authorize]
@ -30,22 +33,26 @@ public class UnplannedReceiptJobAppService
: SfsJobAppServiceBase<UnplannedReceiptJob, UnplannedReceiptJobDetail, UnplannedReceiptJobDTO, SfsJobRequestInputBase, UnplannedReceiptJobCheckInput, UnplannedReceiptJobEditInput>,
IUnplannedReceiptJobAppService
{
protected IUnplannedReceiptRequestAppService UnplannedReceiptRequestAppService=>
LazyServiceProvider.LazyGetRequiredService<IUnplannedReceiptRequestAppService>();
private readonly IUnplannedReceiptJobManager _unplannedReceiptJobManager;
private readonly ILocationAppService _locationAppService;
private readonly IBalanceAppService _balanceAppService;
private readonly IExpectOutAppService _expectOutAppService;
private readonly IItemBasicAppService _itemBasicAppService;
public UnplannedReceiptJobAppService(
IUnplannedReceiptJobRepository repository, IUnplannedReceiptJobManager UnplannedReceiptJobManager,
ILocationAppService locationAppService,
IBalanceAppService balanceAppService,
IExpectOutAppService expectOutAppService) : base(repository, UnplannedReceiptJobManager)
IExpectOutAppService expectOutAppService, IItemBasicAppService itemBasicAppService) : base(repository, UnplannedReceiptJobManager)
{
_unplannedReceiptJobManager = UnplannedReceiptJobManager;
_locationAppService = locationAppService;
_balanceAppService = balanceAppService;
_expectOutAppService = expectOutAppService;
_itemBasicAppService = itemBasicAppService;
}
@ -71,27 +78,141 @@ public class UnplannedReceiptJobAppService
[HttpPost("create-by-free")]
public async Task CreateByFreeAsync(UnplannedReceiptRequestDTO requestDto)
{
var jobs=await BuildUnplannedIssueJobAsync(requestDto).ConfigureAwait(false);
await _repository.InsertManyAsync(jobs).ConfigureAwait(false);
var jobs=await BuildUnplannedReceiptJobAsync(requestDto).ConfigureAwait(false);
await CreateManyAsync(jobs).ConfigureAwait(false);
}
private async Task<List<UnplannedReceiptJob>> BuildUnplannedIssueJobAsync(UnplannedReceiptRequestDTO requestDto)
/// <summary>
/// 执行任务储位任意退料
/// </summary>
/// <param name="jobNumber"></param>
/// <param name="worker"></param>
/// <param name="detailDtos"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("do-by-free")]
public async Task DoByFreeAsync(string jobNumber,string worker,List<UnplannedReceiptJobDetailDTO> detailDtos)
{
var details = ObjectMapper.Map<List<UnplannedReceiptJobDetailDTO>, List<UnplannedReceiptJobDetail>>(detailDtos);
var job=await _repository.FindAsync(p => p.Number == jobNumber).ConfigureAwait(false);
if (job == null)
{
throw new UserFriendlyException($"{jobNumber}【任务】不存在");
}
if (job.JobStatus != EnumJobStatus.Open)
{
throw new UserFriendlyException($"{jobNumber}【任务】不是【打开】状态");
}
if (detailDtos.Count(p => p.ItemCode != job.ItemCode)>0)
{
throw new UserFriendlyException("请确认ERP料号是否正确");
}
if (detailDtos.Sum(p => p.HandledQty) > job.Qty)
{
throw new UserFriendlyException("实际数量大于申请数量");
}
foreach (var detail in details)
{
var locationDto=await _locationAppService.GetByCodeAsync(detail.HandledToLocationCode).ConfigureAwait(false);
var itemBasicDto=await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
detail.HandledToLocationArea = locationDto.AreaCode;
detail.HandledToLocationErpCode = locationDto.ErpLocationCode;
detail.HandledToLocationGroup = locationDto.LocationGroupCode;
detail.HandledToLocationCode=locationDto.Code;
detail.Status = EnumInventoryStatus.OK;
detail.HandledArriveDate=DateTime.Now;
detail.HandledProduceDate = DateTime.Now;
detail.Uom = itemBasicDto.BasicUom;
detail.ItemName=itemBasicDto.Name;
detail.ItemDesc1 = itemBasicDto.Desc1;
detail.ItemDesc2 = itemBasicDto.Desc2;
detail.StdPackQty=itemBasicDto.StdPackQty;
#region 过期时间
if (itemBasicDto.ValidityUnit == EnumValidityUnit.Day)
{
detail.HandledExpireDate = detail.HandledArriveDate.AddDays(itemBasicDto.Validity);
}
else if (itemBasicDto.ValidityUnit == EnumValidityUnit.WeeK)
{
detail.HandledExpireDate = detail.HandledArriveDate.AddDays(itemBasicDto.Validity * 7);
}
else if (itemBasicDto.ValidityUnit == EnumValidityUnit.Month)
{
detail.HandledExpireDate = detail.HandledArriveDate.AddDays(itemBasicDto.Validity * 30);
}
else if (itemBasicDto.ValidityUnit == EnumValidityUnit.Infinite)
{
detail.HandledExpireDate = DateTime.MaxValue;
}
#endregion
if (locationDto.ErpLocationCode != job.FromErpLocationCode)
{
List<UnplannedReceiptJob> jobs = new EditableList<UnplannedReceiptJob>();
throw new UserFriendlyException($"库位【{locationDto.ErpLocationCode}】不在【{job.FromErpLocationCode}】储位下");
}
if (locationDto.Type == EnumLocationType.DimensionalStorehouse)
{
throw new UserFriendlyException("立库功能暂未开放");
}
}
job.Details = details;
job.CompleteUserName = worker;
job.JobStatus = EnumJobStatus.Done;
job =await _repository.UpdateAsync(job).ConfigureAwait(false);
await LocalEventBus.PublishAsync(new SfsCompletedEntityEventData<UnplannedReceiptJob>(job), false).ConfigureAwait(false);
await UpdateRequestStatusAsync(job.UnplannedReceiptRequestNumber).ConfigureAwait(false);
}
/// <summary>
/// 构造任务Dto
/// </summary>
/// <param name="requestDto"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
private async Task<List<UnplannedReceiptJobEditInput>> BuildUnplannedReceiptJobAsync(UnplannedReceiptRequestDTO requestDto)
{
List<UnplannedReceiptJobEditInput> jobs = new EditableList<UnplannedReceiptJobEditInput>();
foreach (var requestDtoDetail in requestDto.Details)
{
var locationDtos = await _locationAppService.GetListByErpLocationCodes(new List<string>{ requestDtoDetail.ErpLocationCode }).ConfigureAwait(false);
var job = new UnplannedReceiptJob();
var locationDtos = await _locationAppService.GetListByErpLocationCodes(new List<string>{ requestDtoDetail.FromErpLocationCode }).ConfigureAwait(false);
var job = new UnplannedReceiptJobEditInput();
job.UnplannedReceiptRequestNumber = requestDto.Number;
job.JobType = EnumJobType.UnplannedReceiptJob;
job.JobStatus = EnumJobStatus.Open;
job.IsAutoComplete = false;
job.OANumber = requestDto.OANumber;
job.Details = new List<UnplannedReceiptJobDetail>();
job.Details = new List<UnplannedReceiptJobDetailInput>();
job.WarehouseCode = requestDtoDetail.WarehouseCode;
switch (locationDtos.First().Type)
job.CaseCode = requestDtoDetail.CaseCode;
job.Explain = requestDtoDetail.Explain;
job.OnceBusiCode = requestDtoDetail.OnceBusiCode;
job.ProjCapacityCode = requestDtoDetail.ProjCapacityCode;
job.ReasonCode = requestDtoDetail.ReasonCode;
job.ItemCode = requestDtoDetail.ItemCode;
job.ItemDesc1 = requestDtoDetail.ItemDesc1;
job.ItemDesc2 = requestDtoDetail.ItemDesc2;
job.ItemName = requestDtoDetail.ItemName;
job.FromErpLocationCode= requestDtoDetail.FromErpLocationCode;
job.DeptCode = requestDto.DeptCode;
job.DeptName = requestDto.DeptName;
job.Qty = requestDtoDetail.Qty;
if (locationDtos == null || locationDtos.Count < 1)
{
throw new UserFriendlyException($"该【{requestDtoDetail.FromErpLocationCode}】储位下没有库位");
}
switch(locationDtos.First().Type)
{
case EnumLocationType.RAW:
job.UnplannedReceiptType = EnumUnplannedReceiptType.Raw;
@ -108,33 +229,41 @@ public class UnplannedReceiptJobAppService
break;
}
var jobDetail = new UnplannedReceiptJobDetail();
jobDetail.CaseCode = requestDtoDetail.CaseCode;
jobDetail.Explain = requestDtoDetail.Explain;
jobDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode;
jobDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode;
jobDetail.ReasonCode = requestDtoDetail.ReasonCode;
jobDetail.ItemCode = requestDtoDetail.ItemCode;
jobDetail.ItemDesc1 = requestDtoDetail.ItemDesc1;
jobDetail.ItemDesc2 = requestDtoDetail.ItemDesc2;
jobDetail.ItemName = requestDtoDetail.ItemName;
job.Details.Add(jobDetail);
jobs.Add(job);
}
return jobs;
}
private async Task<List<ExpectOutEditInput>> BuildExpectOutAsync(List<BalanceDTO> balanceDtos)
{
return ObjectMapper.Map<List<BalanceDTO>, List<ExpectOutEditInput>>(balanceDtos);
}
/// <summary>
/// 给立体库发送
/// </summary>
/// <returns></returns>
[HttpPost("send-dimensional-storehouse")]
public async Task SendDimensionalStorehouseAsync()
{
throw new System.NotImplementedException();
}
private async Task UpdateRequestStatusAsync(string requestNumber)
{
await UnplannedReceiptRequestAppService.UpdateStatusByJobAsync(requestNumber).ConfigureAwait(false);
}
/// <summary>
/// 根据申请单号判断下面的任务是否都是完成或取消
/// </summary>
/// <returns></returns>
[HttpPost("is-all-job-over-by-request-number")]
public async Task<bool> IsAllJobOverByRequestNumberAsync(string requestNumber)
{
var unplannedReceiptJobs=await _repository.GetListAsync(p=>p.UnplannedReceiptRequestNumber==requestNumber).ConfigureAwait(false);
if (unplannedReceiptJobs.Any(p =>
p.JobStatus == EnumJobStatus.Open || p.JobStatus == EnumJobStatus.Partial ||
p.JobStatus == EnumJobStatus.Doing || p.JobStatus == EnumJobStatus.Wait))
{
return false;
}
return true;
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/CustomerProductionReturnNotes/CustomerProductionReturnNoteAppService.cs

@ -92,8 +92,6 @@ public class CustomerProductionReturnNoteAppService :
itm.ToStatus=EnumInventoryStatus.OK;
itm.FromLocationArea = "OK";
itm.FromLocationErpCode= "OK";
itm.FromLot = "";
itm.FromPackingCode = "";
itm.FromWarehouseCode = "OK";
itm.FromLocationGroup = "OK";
itm.FromContainerCode = "OK";

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedReceiptNotes/UnplannedReceiptNoteAppService.cs

@ -51,7 +51,6 @@ public class UnplannedReceiptNoteAppService :
var userName = await _userAppService.GetUserNameByUserAsync(input.Worker).ConfigureAwait(false);
entity.Details.Add(detail);
entity.Worker = userName;
}
await _unplannedReceiptNoteManager.CreateAsync(entity).ConfigureAwait(false);

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestAppService.cs

@ -57,4 +57,9 @@ public abstract class UnplannedReceiptRequestAppService :
var dto = ObjectMapper.Map<UnplannedReceiptRequest, UnplannedReceiptRequestDTO>(entity);
return dto;
}
[HttpPost("update-status-by-job")]
public virtual async Task UpdateStatusByJobAsync(string requestNumber)
{
throw new System.NotImplementedException();
}
}

156
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs

@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Data;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Auth.Application.Contracts;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain;
@ -24,27 +25,23 @@ namespace Win_in.Sfs.Wms.Store.Application;
public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequestAppService
{
private readonly IDepartmentAppService _departmentApp;
private readonly LocationManager _locationManager;
private readonly ILocationAppService _locationAppService;
private readonly IUnplannedReceiptRequestManager _unplannedReceiptRequestManager;
private readonly IBalanceAppService _balanceAppService;
private new readonly IDictAclService DictAclService;
private readonly IUnplannedReceiptJobAppService _unplannedReceiptJobAppService;
public UnplannedReceiptRequestForDongyangAppService(IUnplannedReceiptRequestRepository repository,
IUnplannedReceiptRequestManager unplannedReceiptRequestManager,
IDepartmentAppService departmentApp,
//LocationManager locationManager,
ILocationAppService locationAppService,
IBalanceAppService balanceAppService,
IDictAclService dictAclService
) : base(repository, unplannedReceiptRequestManager)
IUnplannedReceiptJobAppService unplannedReceiptJobAppService) : base(repository, unplannedReceiptRequestManager)
{
_unplannedReceiptRequestManager = unplannedReceiptRequestManager;
_departmentApp = departmentApp;
//_locationManager = locationManager;
_locationAppService = locationAppService;
_balanceAppService = balanceAppService;
DictAclService = dictAclService;
_unplannedReceiptJobAppService = unplannedReceiptJobAppService;
}
/// <summary>
/// OA创建计划外入库申请
@ -65,19 +62,23 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
entity.AutoAgree = true;
entity.AutoHandle = true;
entity.DirectCreateNote = false;
//if (entity.UnplannedReceiptType == EnumUnplannedReceiptType.Wip)
//{
// entity.DirectCreateNote = true; //线边直接生成记录
//}
//else
//{
// entity.DirectCreateNote = false; //原料先生成任务、再生成记录
//}
var res = await _unplannedReceiptRequestManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<UnplannedReceiptRequest, UnplannedReceiptRequestDTO>(entity);
return dto;
}
[HttpPost("update-status-by-job")]
public override async Task UpdateStatusByJobAsync(string requestNumber)
{
var flag = await _unplannedReceiptJobAppService.IsAllJobOverByRequestNumberAsync(requestNumber).ConfigureAwait(false);
if (flag)
{
var unplannedReceiptRequest = await _repository.FindAsync(p => p.Number == requestNumber).ConfigureAwait(false);
await _repository.UpdateAsync(unplannedReceiptRequest).ConfigureAwait(false);
}
}
/// <summary>
/// 用来重写 导入数据时可以加工数据
/// </summary>
@ -100,40 +101,6 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
foreach (var detail in unplannedReceiptRequest.Details)
{
if (unplannedReceiptRequest.UnplannedReceiptType == EnumUnplannedReceiptType.Raw)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
if (locationDto.Type != EnumLocationType.RAW && locationDto.Type != EnumLocationType.SEMI && locationDto.Type != EnumLocationType.FG)
{
throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," +
$"不是{EnumLocationType.RAW.GetDisplayName()}" +
$"或{EnumLocationType.SEMI.GetDisplayName()}】" +
$"或{EnumLocationType.FG.GetDisplayName()}】");
}
// unplannedReceiptRequest.DirectCreateNote = false;
//需要复制一个这个方法 去掉区域参数 换成库位参数
//RecommendBalanceRequestInput input = new RecommendBalanceRequestInput();
//input.ItemCode = detail.ItemCode;
//input.Locations = new List<string>() { detail.LocationCode };
//await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false);
}
if (unplannedReceiptRequest.UnplannedReceiptType == EnumUnplannedReceiptType.Wip)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
if (locationDto.Type != EnumLocationType.WIP)
{
throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," +
$"不是{EnumLocationType.WIP.GetDisplayName()}");
}
//需要复制一个这个方法 去掉区域参数 换成库位参数
//RecommendBalanceRequestInput input = new RecommendBalanceRequestInput();
//input.ItemCode = detail.ItemCode;
//input.Locations = new List<string>() { detail.LocationCode };
//await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false);
}
await SetDetailPropertiesAsync(detail).ConfigureAwait(false);
}
}
@ -141,7 +108,6 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
return dictionary;
}
#region 赋值
/// <summary>
@ -153,7 +119,6 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
{
var itemBasic = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasic, detail.ItemCode);
//CheckOnceBusiCodeAsync(detail);
if (itemBasic != null)
{
detail.ItemName = itemBasic.Name;
@ -163,65 +128,15 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
detail.Uom = itemBasic.BasicUom;
}
var location = await LocationAclService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
CheckLocation(location, detail.LocationCode);
if (location != null)
{
detail.LocationErpCode = location.ErpLocationCode;
detail.WarehouseCode = location.WarehouseCode;
detail.LocationArea = location.AreaCode;
detail.LocationGroup = location.LocationGroupCode;
}
detail.Lot = string.Empty;
detail.ContainerCode = string.Empty;
detail.PackingCode = string.Empty;
detail.Status = EnumInventoryStatus.OK;
//if (!string.IsNullOrEmpty(detail.OnceBusiCode))
//{
// var dict = await DictAclService.GetByCodeAsync(nameof(input.OnceBusiCode)).ConfigureAwait(false);
// if (dict.Items != null && dict.Items.Count > 0)
// {
// var item = dict.Items.FirstOrDefault(t => t.Code == input.OnceBusiCode);
// Check.NotNull(item, "次交易码", "次交易码不存在");
// detail.SetProperty("OnceBusiCode", item.Code);
// detail.SetProperty("OnceBusiName", item.Name);
// }
//}
//if (!string.IsNullOrEmpty(input.CaseCode))
//{
// var dict = await DictAclService.GetByCodeAsync(nameof(input.CaseCode)).ConfigureAwait(false);
// if (dict.Items != null && dict.Items.Count > 0)
// {
// var item = dict.Items.FirstOrDefault(t => t.Code == input.CaseCode);
// Check.NotNull(item, "专案代码", "专案代码不存在");
// detail.SetProperty("CaseCode", item.Code);
// detail.SetProperty("CaseName", item.Name);
// }
//}
//if (!string.IsNullOrEmpty(input.ProjCapacityCode))
//{
// var dict = await DictAclService.GetByCodeAsync(nameof(input.ProjCapacityCode)).ConfigureAwait(false);
// if (dict.Items != null && dict.Items.Count > 0)
// {
// var item = dict.Items.FirstOrDefault(t => t.Code == input.ProjCapacityCode);
// Check.NotNull(item, "项目分类代码", "项目分类代码不存在");
// detail.SetProperty("ProjCapacityCode", item.Code);
// detail.SetProperty("ProjCapacityName", item.Name);
// }
//}
detail.LocationCode = "随便填";
detail.LocationArea = "随便填";
detail.LocationGroup = "随便填";
detail.LocationErpCode = "随便填";
detail.WarehouseCode = "随便填";
}
/// <summary>
@ -258,15 +173,11 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
/// <returns></returns>
private async Task SetRequestAutoPropertiesAsync(UnplannedReceiptRequest entity)
{
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.UnplannedReceipt, EnumTransSubType.None).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
entity.AutoCompleteJob = false;
entity.AutoSubmit = true;
entity.AutoAgree = false;
entity.AutoHandle = true;
entity.DirectCreateNote = false;
}
#endregion
@ -293,11 +204,11 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
var balance = await BalanceAclService.GetByItemLocationAndPackingAsync(
string.Empty,
importInput.ItemCode,
importInput.ErpLocationCode).ConfigureAwait(false);
importInput.FromErpLocationCode).ConfigureAwait(false);
if (balance == null)
{
validationRresult.Add("库存余额", $"ERP料号{importInput.ItemCode}在储位{importInput.ErpLocationCode}没有库存记录");
validationRresult.Add("库存余额", $"ERP料号{importInput.ItemCode}在储位{importInput.FromErpLocationCode}没有库存记录");
}
else
{
@ -347,7 +258,7 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
//await base.CheckImportInputBusinessAsync(importInput, importMethod);
_ = await CheckItemBasicAsync(importInput, validationRresult).ConfigureAwait(false);
_ = await CheckLocationAsync(importInput.ErpLocationCode, validationRresult).ConfigureAwait(false);
await CheckErpLocationAsync(importInput.FromErpLocationCode, validationRresult).ConfigureAwait(false);
await CheckOnceBusiCodeAsync(importInput, validationRresult).ConfigureAwait(false);//次交易码
// await CheckCaseCodeAsync(importInput, validationRresult).ConfigureAwait(false);//专案代码
@ -375,14 +286,13 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
return item;
}
protected virtual async Task<LocationDTO> CheckLocationAsync(string locationCode, List<ValidationResult> validationRresult)
protected virtual async Task CheckErpLocationAsync(string locationCode, List<ValidationResult> validationRresult)
{
var location = await LocationAclService.GetByCodeAsync(locationCode).ConfigureAwait(false);
if (location == null)
var location = await _locationAppService.GetListByErpLocationCodes(new List<string>{ locationCode }).ConfigureAwait(false);
if (location == null||location.Count==0)
{
validationRresult.Add("调入位", $"调入库位{locationCode}不存在");
validationRresult.Add("调入位", $"调入库位{locationCode}不存在");
}
return location;
}
protected virtual async Task CheckOnceBusiCodeAsync(UnplannedReceiptRequestImportInput importInput, List<ValidationResult> validationRresult)

78
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJob.cs

@ -38,19 +38,85 @@ public class UnplannedReceiptJob : SfsJobAggregateRootBase<UnplannedReceiptJobDe
[IgnoreUpdate]
public DateTime BuildDate { get; set; }
[Display(Name = "退料类别", Order = 0)]
public EnumUnplannedReceiptType UnplannedReceiptType { get; set; }
[Display(Name = "退料类别", Order = 0)] public EnumUnplannedReceiptType UnplannedReceiptType { get; set; }
/// <summary>
/// OA单据号
/// </summary>
[Display(Name = "OA单据号")]
public string OANumber { get; set; }
/// <summary>
/// 原因代码
/// </summary>
[Display(Name = "原因代码")]
public string ReasonCode { get; set; }
/// <summary>
/// 专案
/// </summary>
[Display(Name = "专案")]
public string CaseCode { get; set; }
/// <summary>
/// 项目分类
/// </summary>
[Display(Name = "项目分类")]
public string ProjCapacityCode { get; set; }
/// <summary>
/// 次交易码
/// </summary>
[Display(Name = "次交易码")]
public string OnceBusiCode { get; set; }
/// <summary>
/// 说明
/// </summary>
[Display(Name = "说明")]
public string Explain { get; set; }
/// <summary>
/// ERP料号
/// </summary>
[Display(Name = "ERP料号")]
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
[Display(Name = "物品名称")]
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
[Display(Name = "物品描述1")]
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
[Display(Name = "物品描述2")]
public string ItemDesc2 { get; set; }
/// <summary>
/// ERP储位
/// </summary>
[Display(Name = "ERP储位")]
public string FromErpLocationCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
/// <summary>
/// 任务明细
/// </summary>
[IgnoreUpdate]
public override List<UnplannedReceiptJobDetail> Details { get; set; } = new List<UnplannedReceiptJobDetail>();
public override List<UnplannedReceiptJobDetail> Details { get; set; } = new();
/// <summary>
/// 设置任务明细的实际库位和实际数量
@ -66,7 +132,11 @@ public class UnplannedReceiptJob : SfsJobAggregateRootBase<UnplannedReceiptJobDe
/// <param name="handledPackingCode"></param>
/// <param name="extraProperty"></param>
/// <returns></returns>
public virtual async Task BuildDetail(Guid id,string handledLocationGroup ,string handledLocationArea, string handledLocationCode, string handledLocationErpCode, string handledWarehouseCode, decimal handledQty, string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate, string handledContainerCode, string handledLot, string handledPackingCode, ExtraPropertyDictionary extraProperty)
public virtual async Task BuildDetail(Guid id, string handledLocationGroup, string handledLocationArea,
string handledLocationCode, string handledLocationErpCode, string handledWarehouseCode, decimal handledQty,
string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate,
DateTime handledExpireDate, string handledContainerCode, string handledLot, string handledPackingCode,
ExtraPropertyDictionary extraProperty)
{
var detail = GetDetail(id);
detail.HandledToLocationGroup = handledLocationGroup;

35
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobDetail.cs

@ -1,45 +1,12 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Data;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Domain;
public class UnplannedReceiptJobDetail : SfsJobRecommendToDetailEntityBase, IHasExtraProperties
{
/// <summary>
/// 原因代码
/// </summary>
public string ReasonCode { get; set; }
/// <summary>
/// 专案
/// </summary>
[Display(Name = "专案")]
public string CaseCode { get; set; }
/// <summary>
/// 项目分类
/// </summary>
[Display(Name = "项目分类")]
public string ProjCapacityCode { get; set; }
/// <summary>
/// 次交易码
/// </summary>
[Display(Name = "次交易码")]
public string OnceBusiCode { get; set; }
/// <summary>
/// 扩展属性
/// </summary>
public ExtraPropertyDictionary ExtraProperties { get; set; } = new ExtraPropertyDictionary();
/// <summary>
/// 说明
/// </summary>
[Display(Name = "说明")]
public string Explain { get; set; }
public ExtraPropertyDictionary ExtraProperties { get; set; } = new();
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestDetail.cs

@ -48,6 +48,6 @@ public class UnplannedReceiptRequestDetail : SfsStoreDetailWithLotPackingQtyLoca
/// 储位
/// </summary>
[Display(Name = "储位")]
public string ErpLocationCode { get; set; }
public string FromErpLocationCode { get; set; }
}

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ExchangeData/ExchangeDataDbContextModelCreatingExtensions.cs

@ -30,7 +30,8 @@ public static class ExchangeDataDbContextModelCreatingExtensions
b.Property(p => p.ReadTime);
b.Property(p => p.ErrorCode).IsRequired().HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(p => p.ErrorMessage).HasMaxLength(SfsPropertyConst.RemarkLength);
b.Property(p => p.TyrpNumber).IsRequired().HasDefaultValueSql();
//b.Property(p => p.TyrpNumber).IsRequired().HasDefaultValueSql();
b.Property(p => p.TyrpNumber).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
//Relations
//Indexes

34581
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009052809_Updata_UnplannedReceipt2.Designer.cs

File diff suppressed because it is too large

256
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009052809_Updata_UnplannedReceipt2.cs

@ -0,0 +1,256 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Win_in.Sfs.Wms.Store.Migrations
{
public partial class Updata_UnplannedReceipt2 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "CaseCode",
table: "Job_UnplannedReceiptJobDetail");
migrationBuilder.DropColumn(
name: "Explain",
table: "Job_UnplannedReceiptJobDetail");
migrationBuilder.DropColumn(
name: "OnceBusiCode",
table: "Job_UnplannedReceiptJobDetail");
migrationBuilder.DropColumn(
name: "ProjCapacityCode",
table: "Job_UnplannedReceiptJobDetail");
migrationBuilder.DropColumn(
name: "ReasonCode",
table: "Job_UnplannedReceiptJobDetail");
migrationBuilder.RenameColumn(
name: "MesDeliveryNo",
table: "Store_DeliverRequestDetail",
newName: "MesDeliveryContainer");
migrationBuilder.RenameColumn(
name: "MesDeliveryNo",
table: "Store_DeliverNoteDetail",
newName: "MesDeliveryContainer");
migrationBuilder.AddColumn<string>(
name: "ErpLocationCode",
table: "Store_UnplannedReceiptRequestDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AlterColumn<string>(
name: "TyrpNumber",
table: "Store_ExchangeData",
type: "nvarchar(64)",
maxLength: 64,
nullable: false,
oldClrType: typeof(string),
oldType: "nvarchar(max)");
migrationBuilder.AddColumn<string>(
name: "MesTruckNumber",
table: "Store_DeliverRequest",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "MesTruckNumber",
table: "Store_DeliverNote",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "CaseCode",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ErpLocationCode",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Explain",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ItemCode",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ItemDesc1",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ItemDesc2",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ItemName",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OnceBusiCode",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ProjCapacityCode",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Qty",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ReasonCode",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "MesTruckNumber",
table: "Job_DeliverJob",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "ErpLocationCode",
table: "Store_UnplannedReceiptRequestDetail");
migrationBuilder.DropColumn(
name: "MesTruckNumber",
table: "Store_DeliverRequest");
migrationBuilder.DropColumn(
name: "MesTruckNumber",
table: "Store_DeliverNote");
migrationBuilder.DropColumn(
name: "CaseCode",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "ErpLocationCode",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "Explain",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "ItemCode",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "ItemDesc1",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "ItemDesc2",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "ItemName",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "OnceBusiCode",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "ProjCapacityCode",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "Qty",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "ReasonCode",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "MesTruckNumber",
table: "Job_DeliverJob");
migrationBuilder.RenameColumn(
name: "MesDeliveryContainer",
table: "Store_DeliverRequestDetail",
newName: "MesDeliveryNo");
migrationBuilder.RenameColumn(
name: "MesDeliveryContainer",
table: "Store_DeliverNoteDetail",
newName: "MesDeliveryNo");
migrationBuilder.AlterColumn<string>(
name: "TyrpNumber",
table: "Store_ExchangeData",
type: "nvarchar(max)",
nullable: false,
oldClrType: typeof(string),
oldType: "nvarchar(64)",
oldMaxLength: 64);
migrationBuilder.AddColumn<string>(
name: "CaseCode",
table: "Job_UnplannedReceiptJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Explain",
table: "Job_UnplannedReceiptJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OnceBusiCode",
table: "Job_UnplannedReceiptJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ProjCapacityCode",
table: "Job_UnplannedReceiptJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ReasonCode",
table: "Job_UnplannedReceiptJobDetail",
type: "nvarchar(max)",
nullable: true);
}
}
}

34581
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009061526_Updata_UnplannedReceipt3.Designer.cs

File diff suppressed because it is too large

43
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009061526_Updata_UnplannedReceipt3.cs

@ -0,0 +1,43 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Win_in.Sfs.Wms.Store.Migrations
{
public partial class Updata_UnplannedReceipt3 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "ErpLocationCode",
table: "Store_UnplannedReceiptRequestDetail",
newName: "FromErpLocationCode");
migrationBuilder.AlterColumn<decimal>(
name: "Qty",
table: "Job_UnplannedReceiptJob",
type: "decimal(18,6)",
nullable: false,
defaultValue: 0m,
oldClrType: typeof(string),
oldType: "nvarchar(max)",
oldNullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "FromErpLocationCode",
table: "Store_UnplannedReceiptRequestDetail",
newName: "ErpLocationCode");
migrationBuilder.AlterColumn<string>(
name: "Qty",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true,
oldClrType: typeof(decimal),
oldType: "decimal(18,6)");
}
}
}

34581
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009082825_Updata_UnplannedReceipt4.Designer.cs

File diff suppressed because it is too large

25
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20241009082825_Updata_UnplannedReceipt4.cs

@ -0,0 +1,25 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Win_in.Sfs.Wms.Store.Migrations
{
public partial class Updata_UnplannedReceipt4 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "ErpLocationCode",
table: "Job_UnplannedReceiptJob",
newName: "FromErpLocationCode");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "FromErpLocationCode",
table: "Job_UnplannedReceiptJob",
newName: "ErpLocationCode");
}
}
}

70
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs

@ -6775,6 +6775,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("MesTruckNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("Number")
.IsRequired()
.HasMaxLength(64)
@ -7099,6 +7103,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("MesTruckNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("Number")
.IsRequired()
.HasMaxLength(64)
@ -7287,7 +7295,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<Guid>("MasterID")
.HasColumnType("uniqueidentifier");
b.Property<string>("MesDeliveryNo")
b.Property<string>("MesDeliveryContainer")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@ -7714,6 +7722,10 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("MesTruckNumber")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("Number")
.IsRequired()
.HasMaxLength(64)
@ -7801,7 +7813,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<Guid>("MasterID")
.HasColumnType("uniqueidentifier");
b.Property<string>("MesDeliveryNo")
b.Property<string>("MesDeliveryContainer")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
@ -7945,7 +7957,8 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<string>("TyrpNumber")
.IsRequired()
.HasColumnType("nvarchar(max)");
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<DateTime>("WriteTime")
.HasColumnType("datetime2");
@ -30976,6 +30989,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<DateTime>("BuildDate")
.HasColumnType("datetime2");
b.Property<string>("CaseCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime?>("CompleteTime")
.HasColumnType("datetime2");
@ -31008,15 +31024,33 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("Explain")
.HasColumnType("nvarchar(max)");
b.Property<string>("ExtraProperties")
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<string>("FromErpLocationCode")
.HasColumnType("nvarchar(max)");
b.Property<bool>("IsAutoComplete")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false);
b.Property<string>("ItemCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ItemDesc1")
.HasColumnType("nvarchar(max)");
b.Property<string>("ItemDesc2")
.HasColumnType("nvarchar(max)");
b.Property<string>("ItemName")
.HasColumnType("nvarchar(max)");
b.Property<string>("JobDescription")
.HasMaxLength(1024)
.HasColumnType("nvarchar(1024)");
@ -31047,6 +31081,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<string>("OANumber")
.HasColumnType("nvarchar(max)");
b.Property<string>("OnceBusiCode")
.HasColumnType("nvarchar(max)");
b.Property<int>("Priority")
.ValueGeneratedOnAdd()
.HasColumnType("int")
@ -31057,6 +31094,15 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("int")
.HasDefaultValue(0);
b.Property<string>("ProjCapacityCode")
.HasColumnType("nvarchar(max)");
b.Property<decimal>("Qty")
.HasColumnType("decimal(18,6)");
b.Property<string>("ReasonCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("Remark")
.HasMaxLength(3072)
.HasColumnType("nvarchar(3072)")
@ -31100,9 +31146,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<string>("CaseCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
@ -31111,9 +31154,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<string>("Explain")
.HasColumnType("nvarchar(max)");
b.Property<string>("ExtraProperties")
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
@ -31212,15 +31252,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property<string>("OnceBusiCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ProjCapacityCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ReasonCode")
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("RecommendArriveDate")
.HasColumnType("datetime2");
@ -31802,6 +31833,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<string>("FromErpLocationCode")
.HasColumnType("nvarchar(max)");
b.Property<string>("ItemCode")
.IsRequired()
.HasMaxLength(64)

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/UnplannedReceiptJobAutoMapperProfile.cs

@ -24,6 +24,11 @@ public partial class StoreEventAutoMapperProfile : Profile
CreateMap<UnplannedReceiptJobDetail, UnplannedReceiptNoteDetailInput>()
.MapNormalFromHandledTo()
.MapExtraProperties()
.Ignore(x=>x.CaseCode)
.Ignore(x => x.ProjCapacityCode)
.Ignore(x => x.OnceBusiCode)
.Ignore(x => x.Explain)
.Ignore(x => x.ReasonCode)
;
}
}

26
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/UnplannedReceiptRequestAutoMapperProfile.cs

@ -13,31 +13,6 @@ public partial class StoreEventAutoMapperProfile : Profile
{
private void UnplannedReceiptRequestAutoMapperProfile()
{
CreateMap<UnplannedReceiptRequest, UnplannedReceiptJobEditInput>()
.ForMember(x => x.UnplannedReceiptRequestNumber, y => y.MapFrom(d => d.Number))
.Ignore(x => x.WarehouseCode)
.Ignore(x => x.Details)
.Ignore(x => x.IsAutoComplete)
.Ignore(x => x.JobType)
.Ignore(x => x.JobDescription)
.Ignore(x => x.JobStatus)
.Ignore(x => x.WorkGroupCode)
.Ignore(x => x.Priority)
.Ignore(x => x.PriorityIncrement)
.Ignore(x => x.AcceptUserId)
.Ignore(x => x.AcceptUserName)
.Ignore(x => x.AcceptTime)
.Ignore(x => x.CompleteUserId)
.Ignore(x => x.CompleteUserName)
.Ignore(x => x.CompleteTime)
.Ignore(x => x.UpStreamJobNumber)
.BeforeMap((notice, input) => input.JobType = EnumJobType.UnplannedReceiptJob)
.BeforeMap((notice, input) => input.JobStatus = EnumJobStatus.Open)
.BeforeMap((notice, input) => input.IsAutoComplete = false)
;
CreateMap<UnplannedReceiptRequestDetail, UnplannedReceiptJobDetailInput>()
.MapRecommendToNormal()
.MapRecommendToLocation()
@ -56,7 +31,6 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.HandledToWarehouseCode)
.Ignore(x => x.HandledQty)
.Ignore(x => x.HandledUom)
.Ignore(t => t.ReasonCode)
;
CreateMap<UnplannedReceiptRequest, UnplannedReceiptNoteEditInput>()

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs

@ -66,19 +66,6 @@ public class UnplannedReceiptJobEventHandler :
createInput.Details.RemoveAll(p => p.Qty == 0);
/*
createInput.Details = new List<UnplannedReceiptNoteDetailInput>();
foreach (var detail in entity.Details)
{
var inputDetail = ObjectMapper.Map<UnplannedReceiptJobDetail, UnplannedReceiptNoteDetailInput>(detail);
inputDetail.ExtraProperties = detail.ExtraProperties;
createInput.Details.Add(inputDetail);
}
*/
return createInput;
}

75
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedReceiptRequestEventHandler.cs

@ -1,6 +1,8 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
using Volo.Abp.EventBus;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts;
@ -47,11 +49,7 @@ public class UnplannedReceiptRequestEventHandler
/// <param name="eventData">Event data</param>
public async Task HandleEventAsync(SfsCreatedEntityEventData<UnplannedReceiptRequest> eventData)
{
//var entity = eventData.Entity;
//if (entity.AutoSubmit)
//{
// await _unplannedReceiptRequestManager.SubmitAsync(entity).ConfigureAwait(false);
//}
await Task.CompletedTask.ConfigureAwait(false);
}
/// <summary>
@ -90,9 +88,8 @@ public class UnplannedReceiptRequestEventHandler
}
else
{
var jobs = await BuildToUnplannedReceiptJobCreateInputAsync(entity).ConfigureAwait(false);
await _unplannedReceiptJobApp.CreateAsync(jobs).ConfigureAwait(false);
var requestDto=ObjectMapper.Map<UnplannedReceiptRequest, UnplannedReceiptRequestDTO>(entity);
await _unplannedReceiptJobApp.CreateByFreeAsync(requestDto).ConfigureAwait(false);
}
}
@ -110,67 +107,5 @@ public class UnplannedReceiptRequestEventHandler
return createInput;
}
private async Task<UnplannedReceiptJobEditInput> BuildToUnplannedReceiptJobCreateInputAsync(
UnplannedReceiptRequest entity)
{
await Task.CompletedTask.ConfigureAwait(false);
var createInput = ObjectMapper.Map<UnplannedReceiptRequest, UnplannedReceiptJobEditInput>(entity);
createInput.UnplannedReceiptRequestNumber = entity.Number;
createInput.JobType = EnumJobType.UnplannedReceiptJob;
createInput.JobStatus = EnumJobStatus.Open;
createInput.IsAutoComplete = entity.AutoCompleteJob;
createInput.Details = new List<UnplannedReceiptJobDetailInput>();
foreach (var inputDetail in entity.Details)
{
var detail = ObjectMapper.Map<UnplannedReceiptRequestDetail, UnplannedReceiptJobDetailInput>(inputDetail);
detail.ExtraProperties = inputDetail.ExtraProperties;
createInput.Details.Add(detail);
}
createInput.WarehouseCode = createInput.Details[0].RecommendToWarehouseCode;
return createInput;
}
#endregion
/* AutoMapper实现
private void SetUnplannedReceiptJobDetails(UnplannedReceiptJobCreateInput createInput, List<UnplannedReceiptRequestDetail> details)
{
createInput.Details = new List<UnplannedReceiptJobDetailInput>();
foreach (var detail in details)
{
var detailInput = new UnplannedReceiptJobDetailInput();
detailInput.WarehouseCode = detail.WarehouseCode;
detailInput.ItemId = detail.Item.Id;
detailInput.ItemName = detail.Name;
detailInput.ItemDesc1 = detail.Item.Desc1;
detailInput.ItemDesc2 = detail.Item.Desc2;
detailInput.ItemCode = detail.ItemCode;
detailInput.StdPackUom = detail.StdPack.PackUom;
detailInput.StdPackQty = detail.StdPack.PackQty;
detailInput.Status = detail.Status;
detailInput.RecommendContainerCode = detail.ContainerCode;
detailInput.RecommendPackingCode = detail.PackingCode;
detailInput.RecommendSupplierBatch = detail.Batch.SupplierBatch;
detailInput.RecommendArriveDate = detail.Batch.ArriveDate;
detailInput.RecommendProduceDate = detail.Batch.ProduceDate;
detailInput.RecommendExpireDate = detail.Batch.ExpireDate;
detailInput.RecommendLot = detail.Lot;
detailInput.RecommendLocationCode = detail.LocationCode;
detailInput.RecommendAreaCode = detail.Location.Area;
detailInput.RecommendLocationGroup = detail.Location.Group;
detailInput.RecommendErpLocationCode = detail.Location.ErpCode;
detailInput.Uom = detail.Qty.Uom;
detailInput.RecommendQty = detail.Qty;
createInput.Details.Add(detailInput);
}
}
*/
}

4
build/src/docker/publish/conf/settings/appsettings.Development.json

@ -133,8 +133,8 @@
//"BaseUrl": "http://localhost:59093/"
},
"BaseData": {
//"BaseUrl": "http://dev.ccwin-in.com:60084/"
"BaseUrl": "http://localhost:59094/"
"BaseUrl": "http://dev.ccwin-in.com:60084/"
//"BaseUrl": "http://localhost:59094/"
},
"Default": {
"BaseUrl": "http://dev.ccwin-in.com:60083/"

Loading…
Cancel
Save