Browse Source

更新版本

dev_DY_CC
赵新宇 7 months ago
parent
commit
f3d05af16d
  1. BIN
      .vs/WMS/v17/.wsuo
  2. 39
      .vs/WMS/v17/DocumentLayout.json
  3. 7
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumUnplannedIssueType.cs
  4. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDTO.cs
  5. 36
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDetailDTO.cs
  6. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/IUnplannedIssueJobAppService.cs
  7. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/Inputs/UnplannedIssueRequestEditInput.cs
  8. 122
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
  9. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
  10. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs
  11. 32
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/UnplannedIssueJobs/UnplannedIssueJobDbContextModelCreatingExtensions.cs
  12. 28
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs

BIN
.vs/WMS/v17/.wsuo

Binary file not shown.

39
.vs/WMS/v17/DocumentLayout.json

@ -0,0 +1,39 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\89237\\source\\repos\\WMS\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": -1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
},
{
"$type": "Bookmark",
"Name": "ST:131:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
},
{
"$type": "Bookmark",
"Name": "ST:130:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
},
{
"$type": "Bookmark",
"Name": "ST:133:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
},
{
"$type": "Bookmark",
"Name": "ST:132:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
}
]
}
]
}
]
}

7
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumUnplannedIssueType.cs

@ -12,4 +12,11 @@ public enum EnumUnplannedIssueType
Raw = 1,//原料 非生产领料 Raw = 1,//原料 非生产领料
[Display(Name = "线边 非生产领料")] [Display(Name = "线边 非生产领料")]
Wip =2,//线边 非生产领料 Wip =2,//线边 非生产领料
[Display(Name = "OA 非生产领料")]
OA = 3,//原料 非生产领料
[Display(Name = "导入 非生产领料")]
IMPORT = 4,//原料 非生产领料
} }

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDTO.cs

@ -1,7 +1,9 @@
using System; using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -48,4 +50,11 @@ public class UnplannedIssueJobDTO : SfsJobDTOBase<UnplannedIssueJobDetailDTO>
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")] [StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string OANumber { get; set; } public string OANumber { get; set; }
/// <summary>
/// 实际明细
/// </summary>
[Display(Name = "实际明细")]
public List<UnplannedIssueJobFacDetailDTO> FacDetails;
} }

36
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDetailDTO.cs

@ -35,3 +35,39 @@ public class UnplannedIssueJobDetailDTO : SfsJobRecommendFromDetailDTOBase
[Display(Name = "说明")] [Display(Name = "说明")]
public string Explain { get; set; } public string Explain { get; set; }
} }
public class UnplannedIssueJobFacDetailDTO : SfsJobRecommendFromDetailDTOBase
{
/// <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; }
}

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/IUnplannedIssueJobAppService.cs

@ -1,4 +1,5 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -6,4 +7,7 @@ public interface IUnplannedIssueJobAppService
: ISfsJobAppServiceBase<UnplannedIssueJobDTO, SfsJobRequestInputBase, UnplannedIssueJobCheckInput, UnplannedIssueJobEditInput> : ISfsJobAppServiceBase<UnplannedIssueJobDTO, SfsJobRequestInputBase, UnplannedIssueJobCheckInput, UnplannedIssueJobEditInput>
{ {
Task CancelByRequestNumberAsync(string number); Task CancelByRequestNumberAsync(string number);
Task CreateByRecommendAsync(UnplannedIssueRequest requestDto);
} }

12
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/Inputs/UnplannedIssueRequestEditInput.cs

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -59,6 +60,17 @@ public class UnplannedIssueRequestEditInput : SfsStoreRequestCreateOrUpdateInput
public class UnplannedIssueRequestImportDto public class UnplannedIssueRequestImportDto
{ {
/// <summary>
/// 部门代码
/// </summary>
[Display(Name = "部门代码")]
public string DeptCode { get; set; }
/// <summary>
/// 部门名称
/// </summary>
[Display(Name = "部门名称")]
public string DeptName { get; set; }
/// <summary> /// <summary>
/// 料号 /// 料号

122
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
@ -7,6 +8,7 @@ using Irony;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Omu.ValueInjecter; using Omu.ValueInjecter;
using Volo.Abp;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
@ -65,17 +67,48 @@ public class UnplannedIssueJobAppService
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost("create-by-recommend")] [HttpPost("create-by-recommend")]
public async Task CreateByRecommendAsync(UnplannedReceiptRequestDTO requestDto) public async Task CreateByRecommendAsync(UnplannedIssueRequest requestDto)
{ {
List<BalanceDTO> useBalancesOut = new EditableList<BalanceDTO>(); List<BalanceDTO> useBalancesOut = new EditableList<BalanceDTO>();
var jobs = await BuildUnplannedIssueJobAsync(requestDto, useBalancesOut).ConfigureAwait(false); var jobs = await BuildUnplannedIssueJobAsync(requestDto, useBalancesOut).ConfigureAwait(false);
await _repository.InsertManyAsync(jobs.ToList()).ConfigureAwait(false); await _unplannedIssueJobManager.AddManyAsync(jobs).ConfigureAwait(false);
//await _repository.InsertManyAsync(jobs.ToList()).ConfigureAwait(false);
var first = jobs.FirstOrDefault();
var outEditInputs = await BuildExpectOutAsync(useBalancesOut).ConfigureAwait(false); var outEditInputs = await BuildExpectOutAsync(useBalancesOut).ConfigureAwait(false);
foreach (var itm in outEditInputs)
{
itm.JobNumber = first.Number;
}
await _expectOutAppService.AddManyAsync(outEditInputs).ConfigureAwait(false); await _expectOutAppService.AddManyAsync(outEditInputs).ConfigureAwait(false);
} }
public List<BalanceDTO> DeductInventory(List<BalanceDTO> inventory, decimal quantityToDeduct)
{
List<BalanceDTO> balanceDTOs = new List<BalanceDTO>();
decimal totalDeducted = 0;
foreach (var item in inventory)
{
decimal availableToDeduct = Math.Min(item.Qty, quantityToDeduct - totalDeducted);
item.Qty -= availableToDeduct;
totalDeducted += availableToDeduct;
BalanceDTO dto = new BalanceDTO();
dto.InjectFrom(item);
dto.Qty = availableToDeduct;
balanceDTOs.Add(dto);
// 如果已经扣减达到所需数量,退出循环
if (totalDeducted >= quantityToDeduct)
{
break;
}
}
// 返回实际扣减的库存数量
return balanceDTOs;
}
@ -83,13 +116,15 @@ public class UnplannedIssueJobAppService
private async Task<List<UnplannedIssueJob>> BuildUnplannedIssueJobAsync(UnplannedReceiptRequestDTO requestDto, List<BalanceDTO> useBalancesOut)
private async Task<List<UnplannedIssueJob>> BuildUnplannedIssueJobAsync(UnplannedIssueRequest requestDto, List<BalanceDTO> useBalancesOut)
{ {
List<UnplannedIssueJob> jobs = new EditableList<UnplannedIssueJob>(); List<UnplannedIssueJob> jobs = new EditableList<UnplannedIssueJob>();
foreach (var requestDtoDetail in requestDto.Details)//非计划领料明细 foreach (var requestDtoDetail in requestDto.Details)//非计划领料明细
{ {
var locationCodes = await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.ErpLocationCode)).ConfigureAwait(false);//获取存放库位 var locationCodes = await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.LocationErpCode)).ConfigureAwait(false);//获取存放库位
var input = new RecommendBalanceRequestInput var input = new RecommendBalanceRequestInput
{ {
ItemCode = requestDtoDetail.ItemCode, ItemCode = requestDtoDetail.ItemCode,
@ -98,6 +133,8 @@ public class UnplannedIssueJobAppService
Locations = locationCodes.Select(p => p.Code).ToList(), Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = false IsPackingCode = false
}; };
var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);//获取推荐库存 var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);//获取推荐库存
usableList = usableList usableList = usableList
.OrderBy(p => p.Lot) .OrderBy(p => p.Lot)
@ -110,35 +147,60 @@ public class UnplannedIssueJobAppService
decimal qty = 0; decimal qty = 0;
//实际要用库存 //实际要用库存
List<BalanceDTO> useBalances = new List<BalanceDTO>(); List<BalanceDTO> useBalances = new List<BalanceDTO>();
foreach (var balanceDto in usableList)
{
if (qty >= requestDtoDetail.Qty)
{
break;
}
if (qty + balanceDto.Qty > requestDtoDetail.Qty)
{
qty += requestDtoDetail.Qty - balanceDto.Qty;
}
else
{
qty += balanceDto.Qty;
}
useBalances.Add(balanceDto);
useBalancesOut.Add(balanceDto); var returnlist=DeductInventory(usableList, requestDtoDetail.Qty);
useBalances.AddRange(returnlist);
useBalancesOut.AddRange(returnlist);
//foreach (var balanceDto in usableList)
//{
// decimal availableToDeduct = Math.Min(balanceDto.Qty, balanceDto.Qty - qty);
// balanceDto.Qty -= availableToDeduct;
// qty += availableToDeduct;
// if (qty >= balanceDto.Qty)
// break;
// if (qty >= requestDtoDetail.Qty)
// {
// break;
// }
// if (qty + balanceDto.Qty > requestDtoDetail.Qty)
// {
// qty += requestDtoDetail.Qty - balanceDto.Qty;
// }
// else
// {
// qty += balanceDto.Qty;
// }
// if (qty > 0)
// {
// useBalances.Add(balanceDto);
// useBalancesOut.Add(balanceDto);
// }
//}
if (returnlist.Count == 0)
{
throw new UserFriendlyException("库存余额不够!");
} }
foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationCode)) foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationCode))
{ {
var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false); var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false);
var job = new UnplannedIssueJob(); var job = new UnplannedIssueJob();
job.SetId(GuidGenerator.Create());
job.UnplannedIssueRequestNumber= requestDto.Number; job.UnplannedIssueRequestNumber= requestDto.Number;
job.JobType = EnumJobType.UnplannedIssueJob; job.JobType = EnumJobType.UnplannedIssueJob;
job.JobStatus = EnumJobStatus.Open; job.JobStatus = EnumJobStatus.Open;
job.IsAutoComplete = false; job.IsAutoComplete = false;
job.OANumber = requestDto.OANumber; job.OANumber = requestDto.OANumber;
job.Number =await _unplannedIssueJobManager.GetNumber().ConfigureAwait(true);
job.Details = new List<UnplannedIssueJobDetail>(); job.Details = new List<UnplannedIssueJobDetail>();
job.FacDetails = new List<UnplannedIssueJobFacDetail>(); job.FacDetails = new List<UnplannedIssueJobFacDetail>();
job.WarehouseCode = balanceDtoGroup.First().WarehouseCode; job.WarehouseCode = balanceDtoGroup.First().WarehouseCode;
@ -146,11 +208,15 @@ public class UnplannedIssueJobAppService
foreach (var balanceDto in balanceDtoGroup) foreach (var balanceDto in balanceDtoGroup)
{ {
var jobDetail = new UnplannedIssueJobDetail(); var jobDetail = new UnplannedIssueJobDetail();
jobDetail.Number = job.Number;
jobDetail.SetIdAndNumber(GuidGenerator,job.Id,job.Number);
jobDetail.CaseCode = requestDtoDetail.CaseCode; jobDetail.CaseCode = requestDtoDetail.CaseCode;
jobDetail.Explain = requestDtoDetail.Explain; jobDetail.Explain = requestDtoDetail.Explain;
jobDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode; jobDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode;
jobDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode; jobDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode;
jobDetail.ReasonCode = requestDtoDetail.ReasonCode; //jobDetail.ReasonCode = requestDtoDetail.ReasonCode;
jobDetail.ItemCode = requestDtoDetail.ItemCode; jobDetail.ItemCode = requestDtoDetail.ItemCode;
jobDetail.ItemDesc1 = requestDtoDetail.ItemDesc1; jobDetail.ItemDesc1 = requestDtoDetail.ItemDesc1;
jobDetail.ItemDesc2 = requestDtoDetail.ItemDesc2; jobDetail.ItemDesc2 = requestDtoDetail.ItemDesc2;
@ -165,11 +231,14 @@ public class UnplannedIssueJobAppService
jobDetail.RecommendSupplierBatch = balanceDto.SupplierBatch; jobDetail.RecommendSupplierBatch = balanceDto.SupplierBatch;
var jobfacDetail = new UnplannedIssueJobFacDetail(); var jobfacDetail = new UnplannedIssueJobFacDetail();
jobfacDetail.Number = job.Number;
jobfacDetail.SetIdAndNumber(GuidGenerator, job.Id, job.Number);
jobfacDetail.CaseCode = requestDtoDetail.CaseCode; jobfacDetail.CaseCode = requestDtoDetail.CaseCode;
jobfacDetail.Explain = requestDtoDetail.Explain; jobfacDetail.Explain = requestDtoDetail.Explain;
jobfacDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode; jobfacDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode;
jobfacDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode; jobfacDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode;
jobfacDetail.ReasonCode = requestDtoDetail.ReasonCode; //jobfacDetail.ReasonCode = requestDtoDetail.ReasonCode;
jobfacDetail.ItemCode = requestDtoDetail.ItemCode; jobfacDetail.ItemCode = requestDtoDetail.ItemCode;
jobfacDetail.ItemDesc1 = requestDtoDetail.ItemDesc1; jobfacDetail.ItemDesc1 = requestDtoDetail.ItemDesc1;
jobfacDetail.ItemDesc2 = requestDtoDetail.ItemDesc2; jobfacDetail.ItemDesc2 = requestDtoDetail.ItemDesc2;
@ -182,6 +251,8 @@ public class UnplannedIssueJobAppService
jobfacDetail.RecommendProduceDate = balanceDto.ProduceDate; jobfacDetail.RecommendProduceDate = balanceDto.ProduceDate;
jobfacDetail.RecommendQty = balanceDto.Qty; jobfacDetail.RecommendQty = balanceDto.Qty;
jobfacDetail.RecommendSupplierBatch = balanceDto.SupplierBatch; jobfacDetail.RecommendSupplierBatch = balanceDto.SupplierBatch;
//jobDetail.recommendRecommendToLocationArea = balanceDto.LocationArea; //jobDetail.recommendRecommendToLocationArea = balanceDto.LocationArea;
//jobDetail.RecommendToLocationCode = balanceDto.LocationCode; //jobDetail.RecommendToLocationCode = balanceDto.LocationCode;
//jobDetail.RecommendToLocationErpCode = balanceDto.LocationErpCode; //jobDetail.RecommendToLocationErpCode = balanceDto.LocationErpCode;
@ -190,9 +261,12 @@ public class UnplannedIssueJobAppService
job.Details.Add(jobDetail); job.Details.Add(jobDetail);
job.FacDetails.Add(jobfacDetail); job.FacDetails.Add(jobfacDetail);
} }
//job.SetProperty("details", System.Text.Json.JsonSerializer.Serialize(job.Details)); //job.SetProperty("details", System.Text.Json.JsonSerializer.Serialize(job.Details));

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

@ -93,7 +93,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false); await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false);
var inputFileBytes = ms.GetAllBytes(); var inputFileBytes = ms.GetAllBytes();
var importList = _excelService.Import<UnplannedIssueRequestImportDto>(inputFileBytes).ToList(); var importList = _excelService.Import<UnplannedIssueRequestImportDto>(inputFileBytes).ToList();
await CreateByDYOAsync(importList).ConfigureAwait(false); await CreateByDYOAsync(importList, EnumUnplannedIssueType.IMPORT).ConfigureAwait(false);
//if (errors.Count > 0) //if (errors.Count > 0)
@ -123,16 +123,23 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
public async Task<UnplannedIssueRequestDTO> CreateByAsync(List<UnplannedIssueRequestImportDto> p_list) public async Task<UnplannedIssueRequestDTO> CreateByAsync(List<UnplannedIssueRequestImportDto> p_list)
{ {
return await CreateByDYOAsync(p_list, true).ConfigureAwait(false); return await CreateByDYOAsync(p_list, EnumUnplannedIssueType.OA, true).ConfigureAwait(false);
} }
protected async Task<UnplannedIssueRequestDTO> CreateByDYOAsync(List<UnplannedIssueRequestImportDto> p_list, bool isAutoSubmit=false) protected async Task<UnplannedIssueRequestDTO> CreateByDYOAsync(List<UnplannedIssueRequestImportDto> p_list, EnumUnplannedIssueType type, bool isAutoSubmit=false)
{ {
UnplannedIssueRequest request = new UnplannedIssueRequest(); UnplannedIssueRequest request = new UnplannedIssueRequest();
if (p_list.Count == 0)
{
throw new UserFriendlyException("导入内容为空请填写!");
}
var first = p_list.FirstOrDefault();
request.UnplannedIssueType = type;
request.SetId(GuidGenerator.Create()); request.SetId(GuidGenerator.Create());
request.AutoCompleteJob = false; request.AutoCompleteJob = false;
request.AutoSubmit = isAutoSubmit; request.AutoSubmit = isAutoSubmit;
@ -143,7 +150,6 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
foreach (var itm in p_list) foreach (var itm in p_list)
{ {
var detail = new UnplannedIssueRequestDetail(); var detail = new UnplannedIssueRequestDetail();
detail.ItemCode = itm.ItemCode; detail.ItemCode = itm.ItemCode;
detail.Qty = itm.Qty; detail.Qty = itm.Qty;
detail.LocationErpCode = itm.LocationErpCode; detail.LocationErpCode = itm.LocationErpCode;
@ -151,7 +157,6 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
detail.WarehouseCode ="Random"; detail.WarehouseCode ="Random";
detail.LocationGroup ="Random"; detail.LocationGroup ="Random";
detail.LocationArea = "Random"; detail.LocationArea = "Random";
await SetDetailPropertiesAsync(detail).ConfigureAwait(false); await SetDetailPropertiesAsync(detail).ConfigureAwait(false);
detailList.Add(detail); detailList.Add(detail);
} }

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

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Data; using Volo.Abp.Data;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;

32
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/UnplannedIssueJobs/UnplannedIssueJobDbContextModelCreatingExtensions.cs

@ -48,24 +48,24 @@ public static class UnplannedIssueJobDbContextModelCreatingExtensions
//Indexes //Indexes
//b.HasIndex(q => new { q.PackingCode }).IsUnique(); //b.HasIndex(q => new { q.PackingCode }).IsUnique();
}); });
//builder.Entity<UnplannedIssueJobFacDetail>(b => builder.Entity<UnplannedIssueJobFacDetail>(b =>
//{ {
// //Configure table & schema name //Configure table & schema name
// b.ToTable(StoreDbProperties.JobDbTablePrefix + nameof(UnplannedIssueJobFacDetail), options.Schema); b.ToTable(StoreDbProperties.JobDbTablePrefix + nameof(UnplannedIssueJobFacDetail), options.Schema);
// //Configure ABP properties //Configure ABP properties
// b.ConfigureByConvention(); b.ConfigureByConvention();
// //Configure Sfs base properties //Configure Sfs base properties
// b.ConfigureSfsBase(); b.ConfigureSfsBase();
// //Configure Job base properties //Configure Job base properties
// b.ConfigureJobRecommendFromDetail(); b.ConfigureJobRecommendFromDetail();
// //Properties //Properties
// //Relations //Relations
// //None //None
// //Indexes //Indexes
// //b.HasIndex(q => new { q.PackingCode }).IsUnique(); //b.HasIndex(q => new { q.PackingCode }).IsUnique();
//}); });

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

@ -1,5 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.Json.Nodes;
using System.Threading.Tasks; using System.Threading.Tasks;
using Omu.ValueInjecter;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Volo.Abp.EventBus; using Volo.Abp.EventBus;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
@ -93,8 +95,21 @@ public class UnplannedIssueRequestEventHandler
} }
else else
{ {
var job = await BuildUnplannedIssueJobCreateInputAsync(entity).ConfigureAwait(false); if (entity.UnplannedIssueType == EnumUnplannedIssueType.OA || entity.UnplannedIssueType == EnumUnplannedIssueType.IMPORT)
await _unplannedIssueJobApp.CreateAsync(job).ConfigureAwait(false); {
//var job = await BuildUnplannedIssueJobCreateInputAsync(entity).ConfigureAwait(false);
var request= new UnplannedIssueRequest();
request.InjectFrom(entity);
await _unplannedIssueJobApp.CreateByRecommendAsync(request).ConfigureAwait(false);
}
else
{
var job = await BuildUnplannedIssueJobCreateInputAsync(entity).ConfigureAwait(false);
await _unplannedIssueJobApp.CreateAsync(job).ConfigureAwait(false);
}
} }
} }
public virtual async Task HandleEventAsync(SfsRefusedEntityEventData<UnplannedIssueRequest> eventData) public virtual async Task HandleEventAsync(SfsRefusedEntityEventData<UnplannedIssueRequest> eventData)
@ -171,10 +186,16 @@ public class UnplannedIssueRequestEventHandler
{ {
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
var createInput = ObjectMapper.Map<UnplannedIssueRequest, UnplannedIssueJobEditInput>(entity); var createInput = ObjectMapper.Map<UnplannedIssueRequest, UnplannedIssueJobEditInput>(entity);
createInput.UnplannedIssueRequestNumber = entity.Number; createInput.UnplannedIssueRequestNumber = entity.Number;
createInput.JobType = EnumJobType.UnplannedIssueJob; createInput.JobType = EnumJobType.UnplannedIssueJob;
createInput.JobStatus = EnumJobStatus.Open; createInput.JobStatus = EnumJobStatus.Open;
createInput.IsAutoComplete = entity.AutoCompleteJob; createInput.IsAutoComplete = entity.AutoCompleteJob;
createInput.Worker = string.IsNullOrEmpty(createInput.Worker)?"导入":createInput.Worker;
createInput.Details = new List<UnplannedIssueJobDetailInput>(); createInput.Details = new List<UnplannedIssueJobDetailInput>();
@ -183,7 +204,8 @@ public class UnplannedIssueRequestEventHandler
var detail = ObjectMapper.Map<UnplannedIssueRequestDetail, UnplannedIssueJobDetailInput>(inputDetail); var detail = ObjectMapper.Map<UnplannedIssueRequestDetail, UnplannedIssueJobDetailInput>(inputDetail);
detail.ExtraProperties = inputDetail.ExtraProperties; detail.ExtraProperties = inputDetail.ExtraProperties;
detail.HandledLot = string.IsNullOrEmpty(detail.HandledLot) ? "导入" : detail.HandledLot;
detail.RecommendLot = string.IsNullOrEmpty(detail.RecommendLot) ? "导入" : detail.RecommendLot;
createInput.Details.Add(detail); createInput.Details.Add(detail);
} }
createInput.WarehouseCode = createInput.Details[0].RecommendFromWarehouseCode; createInput.WarehouseCode = createInput.Details[0].RecommendFromWarehouseCode;

Loading…
Cancel
Save