Browse Source

更新版本

dev_DY_CC
赵新宇 8 months ago
parent
commit
f5b0033a87
  1. 184
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
  2. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs
  3. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
  4. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs
  5. 33
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs
  6. 73
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs

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

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
using Irony;
@ -84,6 +85,68 @@ public class UnplannedIssueJobAppService
/// <summary>
/// 根据储位推荐
/// </summary>
/// <returns></returns>
//[HttpPost("add-detail")]
//public async Task AddDetailsAsync(UnplannedIssueJobDTO jobInput)
//{
// var entity=await _repository.GetAsync(p=>p.Id==jobInput.Id).ConfigureAwait(false);
// var details=ObjectMapper.Map<List<UnplannedIssueJobDetailDTO>, List<UnplannedIssueJobDetail>>(jobInput.Details);
// var balances=new List<BalanceDTO>();
// foreach (var itm in entity.Details)
// {
// entity.RemoveDetail(itm.Id);
// }
// //var strs=GetAllFields(typeof(UnplannedIssueJobDetail));
// foreach (var detail in details)//明细
// {
// //_locationAppService.get detail.HandledFromLocationCode
// var input = new RecommendBalanceRequestInput
// {
// ItemCode = detail.ItemCode,
// Qty = detail.HandledQty,
// Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
// Locations = new List<string>() { detail.RecommendFromLocationCode },
// IsPackingCode = false
// };
// var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);//获取推荐库存
// usableList = usableList
// .OrderBy(p => p.Lot)
// .ThenBy(p => p.PutInTime)
// .ThenBy(p => p.Qty) //2023-9-14 苑静雯 从小数开始发料
// .ThenBy(p => p.LocationCode)
// .ThenBy(p => p.PackingCode)
// .ToList();
// decimal qty = 0;
// //实际要用库存
// var returnlist = DeductInventory(usableList, detail.HandledQty);
// balances.AddRange(returnlist);
// //useBalancesOut.AddRange(returnlist);
// entity.AddDetail(detail);
// }
// var outEditInputs = await BuildExpectOutAsync(balances).ConfigureAwait(false);
// foreach (var itm in outEditInputs)
// {
// itm.JobNumber = jobInput.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 List<BalanceDTO> DeductInventory(List<BalanceDTO> inventory, decimal quantityToDeduct)
{
List<BalanceDTO> balanceDTOs = new List<BalanceDTO>();
@ -110,30 +173,6 @@ public class UnplannedIssueJobAppService
//public override async Task<UnplannedIssueJobDTO> GetAsync(Guid id)
//{
// var entity=await _repository.GetAsync(id).ConfigureAwait(false);
// var entityDTO=ObjectMapper.Map<UnplannedIssueJob, UnplannedIssueJobDTO>(entity);
// var details=ObjectMapper.Map<List<UnplannedIssueJobDetail>, List<UnplannedIssueJobDetailDTO>>(entity.Details);
// var facDetails=ObjectMapper.Map<List<UnplannedIssueJobFacDetail>, List<UnplannedIssueJobFacDetailDTO>>(entity.FacDetails);
// entityDTO.Details = details;
// entityDTO.FacDetails = facDetails;
// return entityDTO;
// // var inspectJob = await _repository.FindAsync(id).ConfigureAwait(false);
//}
private async Task<List<UnplannedIssueJob>> BuildUnplannedIssueJobAsync(UnplannedIssueRequest requestDto, List<BalanceDTO> useBalancesOut)
{
List<UnplannedIssueJob> jobs = new EditableList<UnplannedIssueJob>();
@ -165,8 +204,6 @@ public class UnplannedIssueJobAppService
useBalances.AddRange(returnlist);
useBalancesOut.AddRange(returnlist);
//foreach (var balanceDto in usableList)
//{
// decimal availableToDeduct = Math.Min(balanceDto.Qty, balanceDto.Qty - qty);
@ -215,39 +252,48 @@ public class UnplannedIssueJobAppService
foreach (var balanceDto in balanceDtoGroup)
{
var jobDetail = new UnplannedIssueJobDetail();
jobDetail.Number = job.Number;
jobDetail.SetIdAndNumber(GuidGenerator,job.Id,job.Number);
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;
jobDetail.RecommendArriveDate = balanceDto.ArriveDate;
jobDetail.RecommendContainerCode = string.Empty;
jobDetail.RecommendExpireDate = balanceDto.ExpireDate;
jobDetail.RecommendLot = balanceDto.Lot;
jobDetail.RecommendPackingCode = balanceDto.PackingCode;
jobDetail.RecommendProduceDate = balanceDto.ProduceDate;
jobDetail.RecommendQty = balanceDto.Qty;
jobDetail.RecommendSupplierBatch = balanceDto.SupplierBatch;
jobDetail.StdPackQty = requestDtoDetail.StdPackQty;
jobDetail.RecommendPackingCode = balanceDto.PackingCode;
jobDetail.HandledPackingCode = balanceDto.PackingCode;
jobDetail.RecommendFromLocationArea = balanceDto.LocationArea;
jobDetail.RecommendFromLocationCode = balanceDto.LocationCode;
jobDetail.RecommendFromLocationErpCode = balanceDto.LocationErpCode;
jobDetail.RecommendFromLocationGroup = balanceDto.LocationGroup;
jobDetail.RecommendFromWarehouseCode = balanceDto.WarehouseCode;
jobDetail.HandledQty = balanceDto.Qty;
//var jobDetail = new UnplannedIssueJobDetail();
//jobDetail.Number = job.Number;
//jobDetail.SetIdAndNumber(GuidGenerator,job.Id,job.Number);
//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;
//jobDetail.RecommendArriveDate = balanceDto.ArriveDate;
//jobDetail.RecommendContainerCode = string.Empty;
//jobDetail.RecommendExpireDate = balanceDto.ExpireDate;
//jobDetail.RecommendLot = balanceDto.Lot;
//jobDetail.RecommendPackingCode = balanceDto.PackingCode;
//jobDetail.RecommendProduceDate = balanceDto.ProduceDate;
//jobDetail.RecommendQty = balanceDto.Qty;
//jobDetail.RecommendSupplierBatch = balanceDto.SupplierBatch;
//jobDetail.StdPackQty = requestDtoDetail.StdPackQty;
//jobDetail.RecommendPackingCode = balanceDto.PackingCode;
//jobDetail.HandledPackingCode = balanceDto.PackingCode;
//jobDetail.RecommendFromLocationArea = balanceDto.LocationArea;
//jobDetail.RecommendFromLocationCode = balanceDto.LocationCode;
//jobDetail.RecommendFromLocationErpCode = balanceDto.LocationErpCode;
//jobDetail.RecommendFromLocationGroup = balanceDto.LocationGroup;
//jobDetail.RecommendFromWarehouseCode = balanceDto.WarehouseCode;
//jobDetail.HandledFromLocationGroup = balanceDto.LocationGroup;
//jobDetail.HandledFromLocationArea = balanceDto.LocationArea;
//jobDetail.HandledFromLocationCode = balanceDto.LocationCode;
//jobDetail.HandledFromLocationErpCode = balanceDto.LocationErpCode;
//jobDetail.HandledFromWarehouseCode = balanceDto.WarehouseCode;
//jobDetail.HandledQty = balanceDto.Qty;
//jobDetail.HandledSupplierBatch = balanceDto.Lot;
//jobDetail.HandledArriveDate = balanceDto.ArriveDate;
//jobDetail.HandledProduceDate = balanceDto.ProduceDate;
//jobDetail.HandledExpireDate = balanceDto.ExpireDate;
//jobDetail.HandledContainerCode = balanceDto.ContainerCode;
//jobDetail.HandledLot = balanceDto.Lot;
//jobDetail.HandledPackingCode = balanceDto.PackingCode;
//jobDetail.Uom = balanceDto.Uom;
var jobfacDetail = new UnplannedIssueJobFacDetail();
@ -272,17 +318,29 @@ public class UnplannedIssueJobAppService
jobfacDetail.RecommendSupplierBatch = balanceDto.SupplierBatch;
jobfacDetail.StdPackQty = requestDtoDetail.StdPackQty;
jobfacDetail.RecommendPackingCode = balanceDto.PackingCode;
jobfacDetail.HandledPackingCode = balanceDto.PackingCode;
jobfacDetail.HandledFromLocationGroup = balanceDto.LocationGroup;
jobfacDetail.HandledFromLocationArea = balanceDto.LocationArea;
jobfacDetail.HandledFromLocationCode = balanceDto.LocationCode;
jobfacDetail.HandledFromLocationErpCode = balanceDto.LocationErpCode;
jobfacDetail.HandledFromWarehouseCode = balanceDto.WarehouseCode;
jobfacDetail.HandledQty = balanceDto.Qty;
jobfacDetail.HandledSupplierBatch = balanceDto.Lot;
jobfacDetail.HandledArriveDate = balanceDto.ArriveDate;
jobfacDetail.HandledProduceDate = balanceDto.ProduceDate;
jobfacDetail.HandledExpireDate = balanceDto.ExpireDate;
jobfacDetail.HandledContainerCode =balanceDto.ContainerCode ;
jobfacDetail.HandledLot = balanceDto.Lot;
jobfacDetail.HandledPackingCode =balanceDto.PackingCode;
jobfacDetail.RecommendFromLocationArea = balanceDto.LocationArea;
jobfacDetail.RecommendFromLocationCode = balanceDto.LocationCode;
jobfacDetail.RecommendFromLocationErpCode = balanceDto.LocationErpCode;
jobfacDetail.RecommendFromLocationGroup = balanceDto.LocationGroup;
jobfacDetail.RecommendFromWarehouseCode = balanceDto.WarehouseCode;
jobfacDetail.Status = balanceDto.Status;
jobfacDetail.HandledQty = balanceDto.Qty;
jobfacDetail.Uom = balanceDto.Uom;
job.Details.Add(jobDetail);
//job.Details.Add(jobDetail);
job.FacDetails.Add(jobfacDetail);
}
if (locationDto.Type == EnumLocationType.DimensionalStorehouse)//如果是立库的

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs

@ -50,7 +50,8 @@ public class UnplannedIssueNoteAppService :
entity.Details.Add(detail);
//2023-10-20 袁静雯要求修改计划外出入库 Worker为userName
var userName = await _userAppService.GetUserNameByUserAsync(input.Worker).ConfigureAwait(false);
var userName = input.Worker;
//await _userAppService.GetUserNameByUserAsync(input.Worker).ConfigureAwait(false);
entity.Worker = userName;
}

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

@ -86,7 +86,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("import-dongyang")]
public async Task<IActionResult> ImportDYAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file)
public async Task<IActionResult> ImportDYAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file)
{
try
@ -207,6 +207,9 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
detail.PackingCode = packingcode;
detail.Status = EnumInventoryStatus.OK;
}

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

@ -101,4 +101,7 @@ public class UnplannedIssueJob : SfsJobAggregateRootBase<UnplannedIssueJobDetail
detail.ExtraProperties = extraProperty;
await Task.CompletedTask.ConfigureAwait(false);
}
}

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

@ -4,6 +4,10 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Office.CustomUI;
using DocumentFormat.OpenXml.Office2010.Excel;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Users;
using Volo.Abp.Validation;
using Win_in.Sfs.Shared.Domain.Shared;
@ -22,26 +26,35 @@ public class UnplannedIssueJobManager : SfsJobManagerBase<UnplannedIssueJob, Unp
/// <summary>
/// 执行任务 发料任务
/// </summary>
/// <param name="id"></param>
/// <param name="input"></param>
/// <param name="user"></param>
/// <param name=id></param>
/// <param name=input></param>
/// <param name=user></param>
/// <returns></returns>
public override async Task<UnplannedIssueJob> CompleteAsync(UnplannedIssueJob input, ICurrentUser user)
{
UnplannedIssueJob entity = await Repository.FindAsync(input.Id).ConfigureAwait(false);
var entity = await Repository.GetAsync(input.Id).ConfigureAwait(false);
entity.BuildDate = input.BuildDate;
entity.DeptCode = input.DeptCode;
entity.DeptName = input.DeptName;
entity.CompleteUserName = input.CompleteUserName;
entity.CompleteUserId = input.CompleteUserId;
var first= entity.FacDetails.FirstOrDefault();
foreach (var detail in input.Details)
{
detail.SetIdAndNumber(GuidGenerator, input.Id, input.Number);
detail.ReasonCode = first.ReasonCode;
detail.CaseCode = first.CaseCode;
detail.ProjCapacityCode = first.ProjCapacityCode;
detail.OnceBusiCode = first.OnceBusiCode;
detail.Explain = first.Explain;
detail.Status = EnumInventoryStatus.OK;
entity.AddDetail(detail);
//发料子任务 赋值实际转移
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);
}
return await base.CompleteAsync(entity, user).ConfigureAwait(false);
}
@ -52,7 +65,7 @@ public class UnplannedIssueJobManager : SfsJobManagerBase<UnplannedIssueJob, Unp
{
if (detail.HandledFromLocationCode == null)
{
result.Errors.Add(new ValidationResult($"{detail.HandledFromLocationCode} 不能为空"));
result.Errors.Add(new ValidationResult($"{detail.HandledFromLocationCode}不能为空"));
}
}
@ -73,7 +86,7 @@ public class UnplannedIssueJobManager : SfsJobManagerBase<UnplannedIssueJob, Unp
///// <summary>
///// 临时修改 解决补料无法拿到订阅错误
///// </summary>
///// <param name="eventData"></param>
///// <param name=eventData></param>
///// <returns></returns>
//public virtual async Task<List<UnplannedIssueJob>> AddByEtoAsync(MaterialRequestHandledETO eventData)
//{
@ -89,7 +102,7 @@ public class UnplannedIssueJobManager : SfsJobManagerBase<UnplannedIssueJob, Unp
//public virtual async Task TestError()
//{
// throw new UserFriendlyException("我是测试的异常");
// throw new UserFriendlyException(我是测试的异常);
//}
public async Task<UnplannedIssueJob> GetAsync(Expression<Func<UnplannedIssueJob, bool>> expression)
{

73
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs

@ -1,3 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
@ -63,22 +67,73 @@ public class UnplannedIssueJobEventHandler :
private UnplannedIssueNoteEditInput BuildUnplannedIssueNoteCreateInput(UnplannedIssueJob entity)
{
var createInput = ObjectMapper.Map<UnplannedIssueJob, UnplannedIssueNoteEditInput>(entity);
createInput.Details.RemoveAll(p => p.Qty == 0);
/*
createInput.Details = new List<UnplannedIssueNoteDetailInput>();
//var strs= GetDifferentPropertyNames(typeof(UnplannedIssueJobDetail), typeof(UnplannedIssueNoteDetailInput));
//var strs1 = GetDifferentPropertyNames(typeof(UnplannedIssueNoteDetailInput), typeof(UnplannedIssueJobDetail));
foreach (var inputDetail in entity.Details)
{
var detail = ObjectMapper.Map<UnplannedIssueJobDetail, UnplannedIssueNoteDetailInput>(inputDetail);
if (inputDetail.HandledQty > 0)
{
var detail = ObjectMapper.Map<UnplannedIssueJobDetail, UnplannedIssueNoteDetailInput>(inputDetail);
detail.LocationCode = inputDetail.HandledFromLocationCode;
detail.LocationArea = inputDetail.HandledFromLocationArea;
detail.LocationGroup=inputDetail.HandledFromLocationGroup;
detail.LocationErpCode = inputDetail.HandledFromLocationErpCode;
detail.WarehouseCode = inputDetail.HandledFromWarehouseCode;
detail.PackingCode = inputDetail.HandledPackingCode;
detail.ContainerCode=inputDetail.HandledContainerCode;
detail.Qty=inputDetail.HandledQty;
detail.Lot=inputDetail.HandledLot;
detail.SupplierBatch = inputDetail.HandledSupplierBatch;
detail.ArriveDate=inputDetail.HandledArriveDate;
detail.ProduceDate = inputDetail.HandledProduceDate;
detail.ExpireDate=inputDetail.HandledExpireDate;
detail.Uom = inputDetail.Uom;
detail.ExtraProperties = inputDetail.ExtraProperties;
createInput.Details.Add(detail);
}
}
return createInput;
}
detail.ExtraProperties = inputDetail.ExtraProperties;
//public static string[] GetDifferentFieldNames(Type type1, Type type2)
//{
// // 获取两个类型的字段
// var fields1 = type1.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
// var fields2 = type2.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
createInput.Details.Add(detail);
}
*/
// // 获取字段名称
// var fieldNames1 = fields1.Select(f => f.Name).ToArray();
// var fieldNames2 = fields2.Select(f => f.Name).ToArray();
return createInput;
// // 找出不同的字段名称
// var differentFields = fieldNames1.Except(fieldNames2).ToArray();
// return differentFields;
//}
public static string[] GetDifferentPropertyNames(Type type1, Type type2)
{
// 获取两个类型的属性
var properties1 = type1.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
var properties2 = type2.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
// 获取属性名称
var propertyNames1 = properties1.Select(p => p.Name).ToArray();
var propertyNames2 = properties2.Select(p => p.Name).ToArray();
// 找出不同的属性名称
var differentProperties = propertyNames1.Except(propertyNames2)
.ToArray();
return differentProperties;
}
}

Loading…
Cancel
Save