diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Properties/PublishProfiles/ClickOnceProfile.pubxml b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Properties/PublishProfiles/ClickOnceProfile.pubxml
new file mode 100644
index 000000000..621261801
--- /dev/null
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Properties/PublishProfiles/ClickOnceProfile.pubxml
@@ -0,0 +1,41 @@
+
+
+
+
+ 0
+ 1.0.0.*
+ True
+ Release
+ False
+ true
+ True
+ Disk
+ True
+ False
+ True
+ False
+ Any CPU
+ bin\Release\net6.0\app.publish\
+ bin\publish\
+ ClickOnce
+ False
+ False
+ False
+ (无)
+ False
+ false
+ net6.0
+ False
+ Foreground
+ False
+ Publish.html
+
+
+
+ True
+ .NET 运行时 6.0.31 (x64)
+
+
+
\ No newline at end of file
diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Properties/PublishProfiles/FolderProfile.pubxml b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 000000000..154e03532
--- /dev/null
+++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+
+
+
+
+ Release
+ Any CPU
+ bin\Release\net6.0\publish\
+ FileSystem
+ <_TargetId>Folder
+
+
\ No newline at end of file
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
index f684d06a8..79907054d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
@@ -42,7 +42,8 @@ public class UnplannedIssueJobAppService
IUnplannedIssueJobRepository repository, IUnplannedIssueJobManager unplannedIssueJobManager,
ILocationAppService locationAppService,
IBalanceAppService balanceAppService, IExpectOutAppService expectOutAppService,
- IUnitOfWorkManager unitOfWorkManager, ILogger logger, IItemBasicAppService itemBasicAppService) : base(repository, unplannedIssueJobManager)
+ IUnitOfWorkManager unitOfWorkManager, ILogger logger,
+ IItemBasicAppService itemBasicAppService) : base(repository, unplannedIssueJobManager)
{
_unplannedIssueJobManager = unplannedIssueJobManager;
_locationAppService = locationAppService;
@@ -84,41 +85,15 @@ public class UnplannedIssueJobAppService
{
List useBalancesOut = new EditableList();
var jobs = await BuildUnplannedIssueJobAsync(requestDto, useBalancesOut).ConfigureAwait(false);
- //if (useBalancesOut.Count == 0)
- //{
- // throw new UserFriendlyException($"请求单号{requestDto.Number},无推荐库位请检查是否又库存!");
- //}
+
foreach (var job in jobs)
{
job.SetIdAndNumberWithDetails(GuidGenerator, job.Number);
- //await SendNotifyMessageAsync(job).ConfigureAwait(false);
}
- //await PublishCreatedAsync(jobs).ConfigureAwait(false);
await Repository.InsertManyAsync(jobs).ConfigureAwait(false);
-
- //await _unplannedIssueJobManager.AddManyAsync(jobs).ConfigureAwait(false);
- //await _repository.InsertManyAsync(jobs.ToList()).ConfigureAwait(false);
-
- var outEditInputs = await BuildExpectOutAsync(useBalancesOut).ConfigureAwait(false);
- //foreach (var itm in outEditInputs)
- //{
- // itm.JobNumber = first.Number;
- //}
- await _expectOutAppService.AddManyAsync(outEditInputs).ConfigureAwait(false);
}
-
- //public static string[] GetAllFields(Type type)
- //{
- // // 获取公共实例字段
- // var fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
-
- // // 返回字段名称
- // return fields.Select(f => f.Name).ToArray();
- //}
-
-
private async Task, List>> DeductInventory(List inventory,
decimal quantityToDeduct, EnumLocationType enumLocationType)
{
@@ -142,7 +117,7 @@ public class UnplannedIssueJobAppService
if (enumLocationType == EnumLocationType.RAW)
{
undto.InjectFrom(item);
-
+
undto.Qty = item.Qty;
unbalanceDTOs.Add(undto);
}
@@ -161,7 +136,7 @@ public class UnplannedIssueJobAppService
}
}
- var tuple = new Tuple, List>(balanceDTOs, unbalanceDTOs);//ITEM1整箱、
+ var tuple = new Tuple, List>(balanceDTOs, unbalanceDTOs); //ITEM1整箱、
// 返回实际扣减的库存数量
@@ -173,120 +148,141 @@ public class UnplannedIssueJobAppService
List useBalancesOut)
{
List jobs = new EditableList();
- var Errors = new List();
foreach (var requestDtoDetail in requestDto.Details) //非计划领料明细
{
var locationCodes = await _locationAppService
.GetListByErpLocationCodes(new StringList(requestDtoDetail.LocationErpCode))
.ConfigureAwait(false); //获取存放库位
+ var locationDto = locationCodes.First();
if (locationCodes.Count == 0)
{
throw new UserFriendlyException("ERP库位没有对应WMS库位!");
}
- var first = locationCodes.FirstOrDefault();
- var locationDto = await _locationAppService.GetByCodeAsync(first.Code).ConfigureAwait(false);
- var input = new RecommendBalanceRequestInput();
+ var job = new UnplannedIssueJob();
+ switch (locationDto.Type)
+ {
+ case EnumLocationType.SEMI:
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
+ break;
+ case EnumLocationType.CUST:
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
+ break;
+ case EnumLocationType.FG:
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
+ break;
+ case EnumLocationType.RAW:
+ job.IsHasPackingCode = 1;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
+ break;
+ case EnumLocationType.THIRDPARTY:
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
+ break;
+ case EnumLocationType.OUTSIDE:
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
+ break;
+ case EnumLocationType.DimensionalStorehouse:
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
+ job.IsHasPackingCode = 0;
+ break;
+ case EnumLocationType.KittingWip:
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
+ break;
+ case EnumLocationType.WIP:
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
+ break;
+ }
+
+ job.ItemCode = requestDtoDetail.ItemCode;
+ job.ItemName = requestDtoDetail.ItemName;
+ job.ItemDesc1 = requestDtoDetail.ItemDesc1;
+ job.ItemDesc2 = requestDtoDetail.ItemDesc2;
+ job.FromErpLocationCode = requestDtoDetail.LocationErpCode;
+ job.Qty = requestDtoDetail.Qty;
+ job.SetId(GuidGenerator.Create());
+ job.UnplannedIssueRequestNumber = requestDto.Number;
+ job.JobType = EnumJobType.UnplannedIssueJob;
+ job.JobStatus = EnumJobStatus.Open;
+ job.IsAutoComplete = false;
+ job.DeptCode = requestDto.DeptCode;
+ job.DeptName = requestDto.DeptName;
+ job.Worker = "未执行";
+ job.OANumber = requestDto.OANumber;
+ job.Number = await _unplannedIssueJobManager.GetNumber().ConfigureAwait(true);
+ job.Details = new List();
+ job.FacDetails = new List();
+ job.WarehouseCode = locationDto.WarehouseCode;
+ job.BuildDate = DateTime.Now;
+
+ var input = new RecommendBalanceRequestInput
+ {
+ ItemCode = requestDtoDetail.ItemCode,
+ Qty = requestDtoDetail.Qty,
+ Statuses = new EditableList { EnumInventoryStatus.OK },
+ Locations = locationCodes.Select(p => p.Code).ToList()
+ };
switch (locationDto.Type)
{
case EnumLocationType.RAW:
- input = new RecommendBalanceRequestInput
- {
- ItemCode = requestDtoDetail.ItemCode,
- Qty = requestDtoDetail.Qty,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = locationCodes.Select(p => p.Code).ToList(),
- IsPackingCode = true
- };
+ input.IsPackingCode = true;
+ job.IsHasPackingCode = 1;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
case EnumLocationType.FG:
- input = new RecommendBalanceRequestInput
- {
- ItemCode = requestDtoDetail.ItemCode,
- Qty = requestDtoDetail.Qty,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = locationCodes.Select(p => p.Code).ToList(),
- IsPackingCode = false
- };
+ input.IsPackingCode = false;
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
case EnumLocationType.DimensionalStorehouse:
- input = new RecommendBalanceRequestInput
- {
- ItemCode = requestDtoDetail.ItemCode,
- Qty = requestDtoDetail.Qty,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = locationCodes.Select(p => p.Code).ToList(),
- IsPackingCode = false
- };
+ input.IsPackingCode = false;
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
break;
case EnumLocationType.CUST:
- input = new RecommendBalanceRequestInput
- {
- ItemCode = requestDtoDetail.ItemCode,
- Qty = requestDtoDetail.Qty,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = locationCodes.Select(p => p.Code).ToList(),
- IsPackingCode = false
- };
+ input.IsPackingCode = false;
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
case EnumLocationType.KittingWip:
- input = new RecommendBalanceRequestInput
- {
- ItemCode = requestDtoDetail.ItemCode,
- Qty = requestDtoDetail.Qty,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = locationCodes.Select(p => p.Code).ToList(),
- IsPackingCode = false
- };
+ input.IsPackingCode = false;
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
break;
case EnumLocationType.OUTSIDE:
- input = new RecommendBalanceRequestInput
- {
- ItemCode = requestDtoDetail.ItemCode,
- Qty = requestDtoDetail.Qty,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = locationCodes.Select(p => p.Code).ToList(),
- IsPackingCode = false
- };
+ input.IsPackingCode = false;
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
case EnumLocationType.SEMI:
- input = new RecommendBalanceRequestInput
- {
- ItemCode = requestDtoDetail.ItemCode,
- Qty = requestDtoDetail.Qty,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = locationCodes.Select(p => p.Code).ToList(),
- IsPackingCode = false
- };
+ input.IsPackingCode = false;
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
break;
case EnumLocationType.WIP:
- input = new RecommendBalanceRequestInput
- {
- ItemCode = requestDtoDetail.ItemCode,
- Qty = requestDtoDetail.Qty,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = locationCodes.Select(p => p.Code).ToList(),
- IsPackingCode = false
- };
+ input.IsPackingCode = false;
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
break;
case EnumLocationType.THIRDPARTY:
- input = new RecommendBalanceRequestInput
- {
- ItemCode = requestDtoDetail.ItemCode,
- Qty = requestDtoDetail.Qty,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = locationCodes.Select(p => p.Code).ToList(),
- IsPackingCode = false
- };
+ input.IsPackingCode = false;
+ job.IsHasPackingCode = 0;
+ job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
}
var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false); //获取推荐库存
-
+
usableList = usableList
.OrderBy(p => p.Lot)
.ThenBy(p => p.PutInTime)
@@ -296,114 +292,17 @@ public class UnplannedIssueJobAppService
.ToList();
var usableList1 = usableList.Where(p => p.Qty > 0).ToList();
- decimal qty = 0;
//实际要用库存
var useBalances = new List();
var returnlist = await DeductInventory(usableList1, requestDtoDetail.Qty, locationDto.Type)
.ConfigureAwait(false);
useBalances.AddRange(returnlist.Item1);
-
-
- //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.Item1.Count == 0)
- {
- _logger.LogError(
- $"{"非生产领料" + requestDto.Number + "零件号:" + requestDtoDetail.ItemCode + "库存不够" + requestDtoDetail.Qty}");
- // Errors.Add($"{"非生产领料"+requestDto.Number+"零件号:"+requestDtoDetail.ItemCode + "库存不够" + requestDtoDetail.Qty.ToString()}");
- }
if (useBalances.Count > 0)
{
foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationErpCode))
{
- //var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false);
- var job = new UnplannedIssueJob();
-
-
- switch (locationDto.Type)
- {
- case EnumLocationType.CUST:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- case EnumLocationType.FG:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- case EnumLocationType.RAW:
- job.IsHasPackingCode = 1;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- case EnumLocationType.THIRDPARTY:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- case EnumLocationType.OUTSIDE:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- //------------------
- case EnumLocationType.KittingWip:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
- break;
- case EnumLocationType.WIP:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
- break;
- case EnumLocationType.SEMI:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
- break;
- case EnumLocationType.DimensionalStorehouse:
- job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
- job.IsHasPackingCode = 0;
- break;
- }
-
- job.ItemCode = requestDtoDetail.ItemCode;
- job.ItemName = requestDtoDetail.ItemName;
- job.ItemDesc1 = requestDtoDetail.ItemDesc1;
- job.ItemDesc2 = requestDtoDetail.ItemDesc2;
- job.FromErpLocationCode = requestDtoDetail.LocationErpCode;
- job.Qty = requestDtoDetail.Qty;
-
-
- job.SetId(GuidGenerator.Create());
- job.UnplannedIssueRequestNumber = requestDto.Number;
- job.JobType = EnumJobType.UnplannedIssueJob;
- job.JobStatus = EnumJobStatus.Open;
- job.IsAutoComplete = false;
- job.DeptCode = requestDto.DeptCode;
- job.DeptName = requestDto.DeptName;
- job.Worker = "未执行";
- job.OANumber = requestDto.OANumber;
- job.Number = await _unplannedIssueJobManager.GetNumber().ConfigureAwait(true);
job.Details = new List();
job.FacDetails = new List();
job.WarehouseCode = balanceDtoGroup.First().WarehouseCode;
@@ -460,7 +359,6 @@ public class UnplannedIssueJobAppService
jobfacDetail.Status = balanceDto.Status;
jobfacDetail.HandledQty = balanceDto.Qty;
jobfacDetail.Uom = balanceDto.Uom;
- //job.Details.Add(jobDetail);
job.FacDetails.Add(jobfacDetail);
}
@@ -478,99 +376,33 @@ public class UnplannedIssueJobAppService
itm.Remark = job.Number;
useBalancesOut.Add(itm);
}
- //useBalancesOut.AddRange(returnlist.Item2);
}
}
- else
- {
- var job = new UnplannedIssueJob();
- switch (locationDto.Type)
- {
- case EnumLocationType.SEMI:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- case EnumLocationType.CUST:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- case EnumLocationType.FG:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- case EnumLocationType.RAW:
- job.IsHasPackingCode = 1;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- case EnumLocationType.THIRDPARTY:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- case EnumLocationType.OUTSIDE:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- break;
- case EnumLocationType.DimensionalStorehouse:
- job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
- job.IsHasPackingCode = 0;
- break;
- case EnumLocationType.KittingWip:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
- break;
- case EnumLocationType.WIP:
- job.IsHasPackingCode = 0;
- job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
- break;
- }
+ var outEditInputs = await BuildExpectOutAsync(useBalances, job.Number).ConfigureAwait(false);
+ await _expectOutAppService.AddManyAsync(outEditInputs).ConfigureAwait(false);
- job.ItemCode = requestDtoDetail.ItemCode;
- job.ItemName = requestDtoDetail.ItemName;
- job.ItemDesc1 = requestDtoDetail.ItemDesc1;
- job.ItemDesc2 = requestDtoDetail.ItemDesc2;
- job.FromErpLocationCode = requestDtoDetail.LocationErpCode;
- job.Qty = requestDtoDetail.Qty;
-
-
- job.SetId(GuidGenerator.Create());
- job.UnplannedIssueRequestNumber = requestDto.Number;
- job.JobType = EnumJobType.UnplannedIssueJob;
- job.JobStatus = EnumJobStatus.Open;
- job.IsAutoComplete = false;
- job.DeptCode = requestDto.DeptCode;
- job.DeptName = requestDto.DeptName;
- job.Worker = requestDto.Worker;
- job.OANumber = requestDto.OANumber;
- job.Number = await _unplannedIssueJobManager.GetNumber().ConfigureAwait(true);
- job.Details = new List();
- job.FacDetails = new List();
- job.WarehouseCode = locationDto.WarehouseCode;
- job.BuildDate = DateTime.Now;
-
- jobs.Add(job);
- }
+ jobs.Add(job);
}
- //if (Errors.Count > 0)
- //{
- // foreach (var itm in Errors)
- // {
- // _logger.LogError(itm);
- // }
- //}
return jobs;
}
- private async Task> BuildExpectOutAsync(List balanceDtos)
+ private async Task> BuildExpectOutAsync(List balanceDtos, string jobNumber)
{
- var lst = ObjectMapper.Map, List>(balanceDtos);
- foreach (var itm in lst)
+ var list = ObjectMapper.Map, List>(balanceDtos);
+ foreach (var outEditInput in list)
{
- itm.JobNumber = itm.Remark;
+ outEditInput.JobNumber = jobNumber;
+ if (!string.IsNullOrEmpty(outEditInput.PackingCode))
+ {
+ var balanceDto = await _balanceAppService.GetByPackingCodeAsync(outEditInput.PackingCode)
+ .ConfigureAwait(false);
+ outEditInput.Qty = balanceDto.Qty;
+ }
}
- return lst;
+ return list;
}
///
@@ -582,42 +414,6 @@ public class UnplannedIssueJobAppService
throw new NotImplementedException();
}
- ///
- /// 创建补料记录实体
- ///
- ///
- ///
- private async Task BuildUnplannedIssueNoteAsync(UnplannedIssueJob unplannedIssueJobDto)
- {
- if (!unplannedIssueJobDto.Details.Any())
- {
- return new UnplannedIssueNoteEditInput();
- }
-
- //var createInput =
- // ObjectMapper.Map(unplannedIssueJobDto);
- var issuenote = new UnplannedIssueNoteEditInput();
-
- issuenote.DeptCode = unplannedIssueJobDto.DeptCode;
- issuenote.DeptName = unplannedIssueJobDto.DeptName;
- issuenote.BuildDate = unplannedIssueJobDto.BuildDate;
- issuenote.UnplannedIssueRequestNumber = unplannedIssueJobDto.UnplannedIssueRequestNumber;
- issuenote.JobNumber = unplannedIssueJobDto.Number;
- issuenote.UnplannedIssueType = issuenote.UnplannedIssueType;
- issuenote.OANumber = issuenote.OANumber;
- issuenote.Details = new List();
- foreach (var detail in unplannedIssueJobDto.FacDetails)
- {
- var entity = new UnplannedIssueNoteDetailInput();
- entity.InjectFrom(detail);
- entity.Qty = detail.HandledQty;
- issuenote.Details.Add(entity);
- }
-
- await Task.CompletedTask.ConfigureAwait(false);
- return issuenote;
- }
-
///
/// 根据申请单号判断下面的任务是否都是完成或取消
///
@@ -643,16 +439,13 @@ public class UnplannedIssueJobAppService
{
var job = await _repository.GetAsync(id).ConfigureAwait(false);
//var facQuery=job.FacDetails.GroupBy(p => new { p.ItemCode }).Select(p=>new {ItemCode= p.Key.ItemCode,Qty= p.Sum(itm=>itm.RecommendQty) });
-
-
if (dto.Details.Count > 0)
{
-
var query = dto.Details.GroupBy(p => new { p.ItemCode })
- .Select(p => new { p.Key.ItemCode, Qty = p.Sum(itm => itm.HandledQty) });
-
+ .Select(p => new { p.Key.ItemCode, Qty = p.Sum(itm => itm.HandledQty) });
+
var sumQty = query.FirstOrDefault().Qty;
if (job.Qty < sumQty)
@@ -661,14 +454,11 @@ public class UnplannedIssueJobAppService
}
-
-
-
if (dto.FacDetails.Count == 0)
{
var locationCodes = await _locationAppService
- .GetListByErpLocationCodes(new StringList(job.FromErpLocationCode))
- .ConfigureAwait(false); //获取存放库位
+ .GetListByErpLocationCodes(new StringList(job.FromErpLocationCode))
+ .ConfigureAwait(false); //获取存放库位
if (locationCodes.Count == 0)
{
@@ -784,38 +574,22 @@ public class UnplannedIssueJobAppService
.ThenBy(p => p.PackingCode)
.ToList();
- var avbQty= usableList.Sum(p => p.Qty);
+ var avbQty = usableList.Sum(p => p.Qty);
if (usableList.Count == 0)
{
throw new UserFriendlyException("库存数量不够!");
}
- else
+
+ if (avbQty < sumQty)
{
- if (avbQty < sumQty)
- {
- throw new UserFriendlyException("库存数量不够!");
- }
+ throw new UserFriendlyException("库存数量不够!");
}
-
-
-
-
-
}
-
-
-
-
-
}
-
-
-
-
var handleDto = new UnplannedIssueJobDTO();
//using (var uow = _unitOfWorkManager.Begin())
//{
@@ -830,9 +604,10 @@ public class UnplannedIssueJobAppService
var handleEntity = ObjectMapper.Map(dto);
foreach (var detail in dto.Details)
{
- var itemBasicDto=await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
+ var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
detail.Uom = itemBasicDto.BasicUom;
}
+
var handleResult =
await _unplannedIssueJobManager.CompleteAsync(handleEntity, CurrentUser).ConfigureAwait(false);
handleDto = ObjectMapper.Map(handleResult);
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
index d11629674..ead1f79bb 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
@@ -98,113 +98,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
var dto = ObjectMapper.Map(entity);
return dto;
}
- ///
- /// 自定义导入接口
- ///
- ///
- ///
- ///
- ///
- //[HttpPost("import-dongyang")]
- //public async Task ImportDYAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file)
- //{
- // try
- // {
- // using var ms = new MemoryStream();
- // await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false);
- // var inputFileBytes = ms.GetAllBytes();
- // var importList = _excelService.Import(inputFileBytes).ToList();
- // await CreateByDYOAsync(importList).ConfigureAwait(false);
- // List errorsList = new List();
- // foreach (var itm in importList)
- // {
- // if (string.IsNullOrEmpty(itm.CaseCode)
- // || string.IsNullOrEmpty(itm.ItemCode)
- // || itm.Qty == 0
- // || string.IsNullOrEmpty(itm.ProjCapacityCode)
- // || string.IsNullOrEmpty(itm.FromLocationErpCode)
-
- // )
- // {
- // itm.Explain = "此项错误";
- // errorsList.Add(itm);
- // }
- // }
-
- // if (errorsList.Count > 0)
- // {
- // var fileContent = _excelService.Export(errorsList);
- // return new TestResult(fileContent.FileContents, ExportImportService.ContentType) { FileDownloadName = fileContent.FileDownloadName };
- // }
-
- // var fileContent1 = _excelService.Export(importList);
-
- // return new JsonResult(new { Code = 200, FileDownloadName = fileContent1.FileDownloadName });
- // }
- // catch (Exception e)
- // {
- // throw new UserFriendlyException(e.Message);
- // }
- //}
-
-
- //[HttpPost("import")]
- //[Consumes("multipart/form-data")]
- ////[UnitOfWork]
- //public override async Task ImportAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file)
- //{
- // try
- // {
- // using var ms = new MemoryStream();
- // await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false);
- // var inputFileBytes = ms.GetAllBytes();
- // var importList = _excelService.Import(inputFileBytes).ToList();
- // await CreateByDYOAsync(importList).ConfigureAwait(false);
- // List errorsList = new List();
- // foreach (var itm in importList)
- // {
- // if (string.IsNullOrEmpty(itm.CaseCode)
- // || string.IsNullOrEmpty(itm.ItemCode)
- // || itm.Qty == 0
- // || string.IsNullOrEmpty(itm.ProjCapacityCode)
- // || string.IsNullOrEmpty(itm.FromErpLocationCode)
-
- // )
- // {
- // itm.Explain = "此项错误";
- // errorsList.Add(itm);
- // }
- // }
-
- // if (errorsList.Count > 0)
- // {
- // var fileContent = _excelService.Export(errorsList);
- // return new TestResult(fileContent.FileContents, ExportImportService.ContentType) { FileDownloadName = fileContent.FileDownloadName };
- // }
-
- // var fileContent1 = _excelService.Export(importList);
-
- // return new JsonResult(new { Code = 200, FileDownloadName = fileContent1.FileDownloadName });
- // }
- // catch (Exception e)
- // {
- // throw new UserFriendlyException(e.Message);
- // }
- //}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
private async Task SetEntityPropertiesAsync(UnplannedIssueRequest entity)
{
var userName = CurrentUser.GetUserName_New();
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs
index aca027384..9aa790c5d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs
@@ -1,15 +1,8 @@
using System.Collections.Generic;
-using System.Text.Json.Nodes;
using System.Threading.Tasks;
using Omu.ValueInjecter;
-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.Domain.Shared.Enums.Store;
using Win_in.Sfs.Shared.Event;
-using Win_in.Sfs.Wms.Inventory.Application.Contracts;
-using Win_in.Sfs.Wms.Inventory.Domain;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Event.Inventories;
@@ -46,14 +39,6 @@ public class UnplannedIssueRequestEventHandler
public async Task HandleEventAsync(SfsCreatedEntityEventData eventData)
{
var entity = eventData.Entity;
- //if (entity.UnplannedIssueType == EnumUnplannedIssueType.Raw)
- //{
- // await AddExpectOutsAsync(entity).ConfigureAwait(false);
- //}
- //if (entity.AutoSubmit)
- //{
- // await _unplannedIssueRequestManager.SubmitAsync(entity).ConfigureAwait(false);
- //}
}
///
@@ -68,186 +53,47 @@ public class UnplannedIssueRequestEventHandler
if (entity.AutoSubmit)
{
await _unplannedIssueRequestManager.SubmitAsync(entity).ConfigureAwait(false);
- if(entity.UnplannedIssueType== EnumUnplannedIssueType.Raw)
- {
- await AddExpectOutsAsync(entity).ConfigureAwait(false);
- }
}
}
}
///
- /// 执行后
+ /// 执行后
///
///
///
public virtual async Task HandleEventAsync(SfsHandledEntityEventData eventData)
{
var entity = eventData.Entity;
- //if (entity.UnplannedIssueType == Shared.Domain.Shared.Enums.Store.EnumUnplannedIssueType.Wip&&!string.IsNullOrEmpty(entity.OANumber))
- //{
- // entity.RequestStatus = EnumRequestStatus.Completed;
- //}
- //if (entity.DirectCreateNote)
- //{
- // var note = await BuildUnplannedIssueNoteCreateInputAsync(entity).ConfigureAwait(false);
- // await _unplannedIssueNoteAppService.CreateAsync(note).ConfigureAwait(false);
- //}
- //else
- //{
- //if (entity.UnplannedIssueType == EnumUnplannedIssueType.OA || entity.UnplannedIssueType == EnumUnplannedIssueType.IMPORT)
- //{
- //var job = await BuildUnplannedIssueJobCreateInputAsync(entity).ConfigureAwait(false);
- var request= new UnplannedIssueRequest();
- request.InjectFrom(entity);
+ 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);
- //}
-
- //}
+ await _unplannedIssueJobApp.CreateByRecommendAsync(request).ConfigureAwait(false);
}
+
public virtual async Task HandleEventAsync(SfsRefusedEntityEventData eventData)
{
var entity = eventData.Entity;
- if (entity.UnplannedIssueType == EnumUnplannedIssueType.Raw)
- {
- await ExpectOutAppService.RemoveAsync(entity.Number).ConfigureAwait(false);
- }
}
+
///
- /// 中止订阅
+ /// 中止订阅
///
///
///
public virtual async Task HandleEventAsync(SfsAbortedEntityEventData eventData)
{
var entity = eventData.Entity;
- // if (entity.UnplannedIssueType == EnumUnplannedIssueType.Raw)
- // {
- await ExpectOutAppService.RemoveAsync(entity.Number).ConfigureAwait(false);
- // }
- if (!entity.DirectCreateNote)//作废任务
+
+ if (!entity.DirectCreateNote) //作废任务
{
await _unplannedIssueJobApp.CancelByRequestNumberAsync(entity.Number).ConfigureAwait(false);
}
}
+
public virtual async Task HandleEventAsync(SfsCancelledEntityEventData eventData)
{
var entity = eventData.Entity;
- if (entity.UnplannedIssueType == EnumUnplannedIssueType.Raw)
- {
- await ExpectOutAppService.RemoveAsync(entity.Number).ConfigureAwait(false);
- }
- }
-
-
-
- #region 私有
- private async Task AddExpectOutsAsync(UnplannedIssueRequest entitie)
- {
- var expectOuts = new List();
- var entityExpectOuts = BuildExpectOutInventoryAsync(entitie);
- expectOuts.AddRange(entityExpectOuts);
-
- await ExpectOutAppService.AddManyAsync(expectOuts).ConfigureAwait(false);
- }
-
- private List BuildExpectOutInventoryAsync(UnplannedIssueRequest request)
- {
- var inputs = ObjectMapper.Map, List>(request.Details);
- foreach (var input in inputs)
- {
- input.JobNumber = request.Number;
- input.Worker = request.Worker;
- }
- return inputs;
- }
- private async Task BuildUnplannedIssueNoteCreateInputAsync(
- UnplannedIssueRequest entity)
- {
- await Task.CompletedTask.ConfigureAwait(false);
- var createInput = ObjectMapper.Map(entity);
- createInput.UnplannedIssueRequestNumber = entity.Number;
- createInput.JobNumber = "";
- createInput.ActiveDate = Clock.Now;
-
- return createInput;
- }
-
- #endregion
-
- private async Task BuildUnplannedIssueJobCreateInputAsync(UnplannedIssueRequest entity)
- {
- await Task.CompletedTask.ConfigureAwait(false);
- var createInput = ObjectMapper.Map(entity);
-
-
-
-
- createInput.UnplannedIssueRequestNumber = entity.Number;
- createInput.JobType = EnumJobType.UnplannedIssueJob;
- createInput.JobStatus = EnumJobStatus.Open;
- createInput.IsAutoComplete = entity.AutoCompleteJob;
- createInput.Worker = string.IsNullOrEmpty(createInput.Worker)?"导入":createInput.Worker;
-
-
- createInput.Details = new List();
-
- foreach (var inputDetail in entity.Details)
- {
- var detail = ObjectMapper.Map(inputDetail);
-
- 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.WarehouseCode = createInput.Details[0].RecommendFromWarehouseCode;
- return createInput;
- }
-
-
-
- /* 改用AutoMapper实现
- private void SetUnplannedIssueJobDetails(UnplannedIssueJobCreateInput createInput, List details)
- {
- createInput.Details = new List();
-
- foreach (var detail in details)
- {
- var detailInput = new UnplannedIssueJobDetailInput();
-
- 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);
- }
}
- */
}