Browse Source

非生产领料代码

master
lvzb 1 year ago
parent
commit
7c4e07b350
  1. 2
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedIssueJobController.cs
  2. 2
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs
  3. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAutoMapperProfile.cs
  4. 118
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
  5. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs
  6. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs
  7. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs
  8. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJob.cs
  9. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobManager.cs
  10. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/UnplannedIssueRequestAutoMapperProfile.cs
  11. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs
  12. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedReceiptRequestEventHandler.cs

2
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedIssueJobController.cs

@ -68,7 +68,7 @@ public class UnplannedIssueJobController : AbpController
{
Filters = new List<Filter>
{
new(nameof(UnplannedIssueJobDTO.WorkGroupCode),jsonWlgCodes,"In"),
// new(nameof(UnplannedIssueJobDTO.WorkGroupCode),jsonWlgCodes,"In"),
new(nameof(UnplannedIssueJobDTO.JobStatus),jsonStatus,"In")
}
}

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

@ -67,7 +67,7 @@ public class UnplannedReceiptJobController : AbpController
{
Filters = new List<Filter>
{
new(nameof(UnplannedReceiptJobDTO.WorkGroupCode),jsonWlgCodes,"In"),
// new(nameof(UnplannedReceiptJobDTO.WorkGroupCode),jsonWlgCodes,"In"),
new(nameof(UnplannedReceiptJobDTO.JobStatus),jsonStatus,"In")
}
}

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAutoMapperProfile.cs

@ -63,5 +63,11 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.TenantId)
.Ignore(x => x.Id)
.Ignore(x => x.ExtraProperties);
CreateMap<UnplannedIssueRequestEditInput, UnplannedIssueRequest>();
CreateMap<UnplannedIssueRequestDetailInput, UnplannedIssueRequestDetail>();
}
}

118
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs

@ -54,21 +54,20 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
var entity = ObjectMapper.Map<UnplannedIssueRequestEditInput, UnplannedIssueRequest>(input);
foreach (var item in entity.Details)
{
await SetDetailPropertiesAsync(item).ConfigureAwait(false);
await SetDetailPropertiesAsync(item, input.UnplannedIssueType).ConfigureAwait(false);
}
entity.AutoCompleteJob = true;
entity.AutoCompleteJob = false;
entity.AutoSubmit = true;
entity.AutoAgree = true;
entity.AutoHandle = true;
if (entity.UnplannedIssueType == EnumUnplannedIssueType.Wip)
{
entity.DirectCreateNote = false;
entity.DirectCreateNote = true;
}
else
{
entity.DirectCreateNote = true;
entity.DirectCreateNote = false;
}
entity.DirectCreateNote = true;
await _unplannedIssueRequestManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<UnplannedIssueRequest, UnplannedIssueRequestDTO>(entity);
@ -85,41 +84,31 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
foreach (var unplannedIssueRequest in addList)
{
if(unplannedIssueRequest.UnplannedIssueType != EnumUnplannedIssueType.Wip|| unplannedIssueRequest.UnplannedIssueType != EnumUnplannedIssueType.Raw)
{
throw new UserFriendlyException($"【{unplannedIssueRequest.UnplannedIssueType}】领料类型," +
$"不是{EnumUnplannedIssueType.Wip.GetDisplayName()}" +
$"或{EnumUnplannedIssueType.Raw.GetDisplayName()}】");
}
unplannedIssueRequest.Worker = CurrentUser.GetUserName();
unplannedIssueRequest.CreatorId = CurrentUser.Id;
await SetRequestAutoPropertiesAsync(unplannedIssueRequest).ConfigureAwait(false);
await SetEntityPropertiesAsync(unplannedIssueRequest).ConfigureAwait(false);
List<UnplannedIssueRequestDetail> newDetails = new List<UnplannedIssueRequestDetail>();
foreach (var detail in unplannedIssueRequest.Details)
{
if (unplannedIssueRequest.UnplannedIssueType == EnumUnplannedIssueType.Raw)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
if (locationDto.Type != EnumLocationType.RAW || locationDto.Type != EnumLocationType.SEMI)
if (locationDto.Type != EnumLocationType.RAW && locationDto.Type != EnumLocationType.SEMI)
{
throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," +
$"不是{EnumLocationType.RAW.GetDisplayName()}" +
$"或{EnumLocationType.SEMI.GetDisplayName()}】");
}
//需要复制一个这个方法 去掉区域参数 换成库位参数
RecommendBalanceRequestInput input = new RecommendBalanceRequestInput();
input.ItemCode = detail.ItemCode;
input.Locations = new List<string>() { detail.LocationCode };
input.Qty = detail.Qty;
input.Statuses = new List<EnumInventoryStatus> { EnumInventoryStatus.OK };
var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false);
if (balanceLst.Count == 0)
{
throw new UserFriendlyException($"GetRecommendBalancesByLocationsAsync返回0条记录");
}
if (detail.Qty > balanceLst[0].Qty)
{
throw new UserFriendlyException($"库存数量不足:GetRecommendBalancesByLocationsAsync");
}
unplannedIssueRequest.DirectCreateNote = false;
}
if (unplannedIssueRequest.UnplannedIssueType == EnumUnplannedIssueType.Wip)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
@ -127,32 +116,61 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
{
throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," +
$"不是{EnumLocationType.WIP.GetDisplayName()}】");
}
//需要复制一个这个方法 去掉区域参数 换成库位参数
RecommendBalanceRequestInput input = new RecommendBalanceRequestInput();
input.ItemCode = detail.ItemCode;
input.Locations = new List<string>() { detail.LocationCode };
input.Qty = detail.Qty;
input.Statuses=new List<EnumInventoryStatus> { EnumInventoryStatus.OK };
var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false);
if (balanceLst.Count == 0)
{
throw new UserFriendlyException($"GetRecommendBalancesByLocationsAsync返回0条记录");
}
var sumQty = balanceLst.Sum(itm => itm.Qty);
if (detail.Qty > sumQty)
{
throw new UserFriendlyException($"库存数量不足:GetRecommendBalancesByLocationsAsync");
}
}
}
//需要复制一个这个方法 去掉区域参数 换成库位参数
RecommendBalanceRequestInput input = new RecommendBalanceRequestInput();
input.ItemCode = detail.ItemCode;
input.Locations = new List<string>() { detail.LocationCode };
input.Qty = detail.Qty;
input.Statuses = new List<EnumInventoryStatus> { EnumInventoryStatus.OK };
var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false);
if (balanceLst.Count == 0)
{
throw new UserFriendlyException($"GetRecommendBalancesByLocationsAsync返回0条记录");
}
var sumQty = balanceLst.Sum(itm => itm.Qty);
if (detail.Qty > sumQty)
{
throw new UserFriendlyException($"库存数量不足:GetRecommendBalancesByLocationsAsync");
}
foreach (var balance in balanceLst)
{
var newDetail = CreateNewDetail(detail, balance);
await SetDetailPropertiesAsync(newDetail, unplannedIssueRequest.UnplannedIssueType).ConfigureAwait(false);
newDetails.Add(newDetail);
}
await SetDetailPropertiesAsync(detail).ConfigureAwait(false);
}
unplannedIssueRequest.Details.Clear();//删除所有明细}
unplannedIssueRequest.Details.AddRange(newDetails);//按推荐添加
}
return dictionary;
}
/// <summary>
/// 创建明细
/// </summary>
/// <param name="detail"></param>
/// <param name="balance"></param>
/// <returns></returns>
protected UnplannedIssueRequestDetail CreateNewDetail(UnplannedIssueRequestDetail detail,BalanceDTO balance)
{
UnplannedIssueRequestDetail newDetail = new UnplannedIssueRequestDetail();
newDetail.ArriveDate = detail.ArriveDate;
newDetail.CaseCode = detail.CaseCode;
newDetail.ContainerCode = detail.ContainerCode;
newDetail.Explain = detail.Explain;
newDetail.ItemCode = detail.ItemCode;
newDetail.LocationCode = detail.LocationCode;
newDetail.Number = detail.Number;
newDetail.OnceBusiCode = detail.OnceBusiCode;
newDetail.ProjCapacityCode = detail.ProjCapacityCode;
newDetail.ProduceDate = detail.ProduceDate;
newDetail.PackingCode = balance.PackingCode;
newDetail.Qty = balance.Qty;
newDetail.SetIdAndNumber(GuidGenerator, detail.MasterID, detail.Number);
return newDetail;
}
protected override UnplannedIssueRequest ModifyEntityBeforeAgree(UnplannedIssueRequest obj)
{
@ -170,7 +188,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
/// </summary>
/// <param name="detail"></param>
/// <returns></returns>
private async Task SetDetailPropertiesAsync(UnplannedIssueRequestDetail detail)
private async Task SetDetailPropertiesAsync(UnplannedIssueRequestDetail detail, EnumUnplannedIssueType type)
{
var itemBasic = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasic, detail.ItemCode);
@ -196,9 +214,13 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
detail.LocationArea = location.AreaCode;
detail.LocationCode = location.Code;
}
string packingcode = string.Empty;
if(type!= EnumUnplannedIssueType.Wip)
{
packingcode = detail.PackingCode;
}
var balance = await _balanceAppService.GetByItemLocationAndPackingAsync(
string.Empty,
packingcode,
detail.ItemCode,
detail.LocationCode).ConfigureAwait(false);
@ -387,7 +409,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
await CheckOnceBusiCodeAsync(model, validationRresult).ConfigureAwait(false);//次交易码
await CheckCaseCodeAsync(model, validationRresult).ConfigureAwait(false);//专案代码
await CheckProjCapacityCodeAsync(model, validationRresult).ConfigureAwait(false);//项目分类
_ = await CheckBalanceAsync(model, validationRresult).ConfigureAwait(false);
// _ = await CheckBalanceAsync(model, validationRresult).ConfigureAwait(false);
}
protected async Task<ItemBasicDTO> CheckItemBasicAsync(UnplannedIssueRequestImportInput importInput, List<ValidationResult> validationRresult)

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

@ -86,6 +86,12 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
foreach (var unplannedReceiptRequest in addList)
{
if (unplannedReceiptRequest.UnplannedReceiptType != EnumUnplannedReceiptType.Wip || unplannedReceiptRequest.UnplannedReceiptType != EnumUnplannedReceiptType.Raw)
{
throw new UserFriendlyException($"【{unplannedReceiptRequest.UnplannedReceiptType}】退料料类型," +
$"不是{EnumUnplannedReceiptType.Wip.GetDisplayName()}" +
$"或{EnumUnplannedReceiptType.Raw.GetDisplayName()}】");
}
unplannedReceiptRequest.Worker = CurrentUser.GetUserName();
unplannedReceiptRequest.CreatorId = CurrentUser.Id;
@ -97,13 +103,13 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
if (unplannedReceiptRequest.UnplannedReceiptType == EnumUnplannedReceiptType.Raw)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
if (locationDto.Type != EnumLocationType.RAW || locationDto.Type != EnumLocationType.SEMI)
if (locationDto.Type != EnumLocationType.RAW && locationDto.Type != EnumLocationType.SEMI)
{
throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," +
$"不是{EnumLocationType.RAW.GetDisplayName()}" +
$"或{EnumLocationType.SEMI.GetDisplayName()}】");
}
unplannedReceiptRequest.DirectCreateNote = false;
//需要复制一个这个方法 去掉区域参数 换成库位参数
//RecommendBalanceRequestInput input = new RecommendBalanceRequestInput();
//input.ItemCode = detail.ItemCode;

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs

@ -64,10 +64,12 @@ public class UnplannedIssueJob : SfsJobAggregateRootBase<UnplannedIssueJobDetail
/// <param name="locationCode"></param>
/// <param name="qty"></param>
/// <returns></returns>
public virtual async Task BuildDetail(Guid id, string handledLocationCode, string handledLocationErpCode, string handledWarehouseCode, decimal handledQty, string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate
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.HandledFromLocationGroup= handledLocationGroup;
detail.HandledFromLocationArea = handledLocationArea;
detail.HandledFromLocationCode = handledLocationCode;
detail.HandledFromLocationErpCode = handledLocationErpCode;
detail.HandledFromWarehouseCode = handledWarehouseCode;

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs

@ -33,11 +33,12 @@ public class UnplannedIssueJobManager : SfsJobManagerBase<UnplannedIssueJob, Unp
entity.BuildDate = input.BuildDate;
entity.DeptCode = input.DeptCode;
entity.DeptName = input.DeptName;
entity.CompleteUserName = input.CompleteUserName;
entity.CompleteUserId = input.CompleteUserId;
foreach (var detail in input.Details)
{
//发料子任务 赋值实际转移
await entity.BuildDetail(detail.Id, detail.HandledFromLocationCode, detail.HandledFromLocationErpCode, detail.HandledFromWarehouseCode, detail.HandledQty, detail.HandledSupplierBatch, detail.HandledArriveDate, detail.HandledProduceDate, detail.HandledExpireDate,
await entity.BuildDetail(detail.Id, detail.HandledFromLocationGroup, detail.HandledFromLocationArea,detail.HandledFromLocationCode, detail.HandledFromLocationErpCode, detail.HandledFromWarehouseCode, detail.HandledQty, detail.HandledSupplierBatch, detail.HandledArriveDate, detail.HandledProduceDate, detail.HandledExpireDate,
detail.HandledContainerCode, detail.HandledLot, detail.HandledPackingCode, detail.ExtraProperties).ConfigureAwait(false);
}

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

@ -62,9 +62,11 @@ public class UnplannedReceiptJob : SfsJobAggregateRootBase<UnplannedReceiptJobDe
/// <param name="handledPackingCode"></param>
/// <param name="extraProperty"></param>
/// <returns></returns>
public virtual async Task BuildDetail(Guid id, 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;
detail.HandledToLocationArea = handledLocationArea;
detail.HandledToLocationCode = handledLocationCode;
detail.HandledToLocationErpCode = handledLocationErpCode;
detail.HandledToWarehouseCode = handledWarehouseCode;

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobManager.cs

@ -33,7 +33,7 @@ public class UnplannedReceiptJobManager : SfsJobManagerBase<UnplannedReceiptJob,
foreach (var detail in input.Details)
{
//发料子任务 赋值实际转移
await entity.BuildDetail(detail.Id, detail.HandledToLocationCode, detail.HandledToLocationErpCode, detail.HandledToWarehouseCode,
await entity.BuildDetail(detail.Id, detail.HandledToLocationGroup, detail.HandledToLocationArea, detail.HandledToLocationCode, detail.HandledToLocationErpCode, detail.HandledToWarehouseCode,
detail.HandledQty, detail.HandledSupplierBatch, detail.HandledArriveDate, detail.HandledProduceDate, detail.HandledExpireDate, detail.HandledContainerCode, detail.HandledLot, detail.HandledPackingCode, detail.ExtraProperties).ConfigureAwait(false);
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/UnplannedIssueRequestAutoMapperProfile.cs

@ -56,7 +56,7 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.HandledQty)
.Ignore(x => x.HandledUom)
.Ignore(x => x.ReasonCode)
.IgnoreIHasRecommendAndHandledFrom();
;
CreateMap<UnplannedIssueRequest, UnplannedIssueNoteEditInput>()
.ForMember(x => x.UnplannedIssueRequestNumber, y => y.MapFrom(d => d.Number)).Ignore(x => x.JobNumber)

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs

@ -35,10 +35,10 @@ public class UnplannedIssueRequestEventHandler
public async Task HandleEventAsync(SfsCreatedEntityEventData<UnplannedIssueRequest> eventData)
{
var entity = eventData.Entity;
if (entity.AutoSubmit)
{
await _unplannedIssueRequestManager.SubmitAsync(entity).ConfigureAwait(false);
}
//if (entity.AutoSubmit)
//{
// await _unplannedIssueRequestManager.SubmitAsync(entity).ConfigureAwait(false);
//}
}
/// <summary>
@ -112,7 +112,7 @@ public class UnplannedIssueRequestEventHandler
createInput.Details.Add(detail);
}
createInput.WarehouseCode = createInput.Details[0].RecommendFromWarehouseCode;
return createInput;
}

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

@ -113,7 +113,7 @@ public class UnplannedReceiptRequestEventHandler
createInput.Details.Add(detail);
}
createInput.WarehouseCode = createInput.Details[0].RecommendToWarehouseCode;
return createInput;
}

Loading…
Cancel
Save