Browse Source

报废申请导出

dev_DY_CC
赵新宇 1 year ago
parent
commit
fc1bd01bd2
  1. 61
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs
  2. 10
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/Kitting.cs
  3. 6
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingDetail.cs
  4. 5
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingDbContextModelCreatingExtensions.cs
  5. 27
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/ProductRecycleNotes/DTOs/ProductRecycleNoteDetailExtendDto.cs
  6. 55
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/ProductRecycleNotes/ProductRecycleNoteAppService.cs

61
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs

@ -47,24 +47,25 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase<Kitting, Kitt
if (first != null)
{
throw new UserFriendlyException($"已存在编码:{input.Code}的Kitting箱");
// var query = from itm in input.Details
// join itm1 in first.Details on itm.PartCode equals itm1.PartCode
// into temp1
// from tm1 in temp1.DefaultIfEmpty()
// where tm1==null
// select itm;
//var details=ObjectMapper.Map<List<KittingDetailInput>,List<KittingDetail>>(query.ToList());
//foreach (var itm in details)
//{
// itm.MasterId = first.Id;
// first.Details.Add(itm);
//}
//var entity = await _repository.UpdateAsync(first, true).ConfigureAwait(false);
// return ObjectMapper.Map<Kitting, KittingDTO>(first);
throw new UserFriendlyException($"已存在编码:{input.Code}的Kitting箱");
//var query = from itm in input.Details
// join itm1 in first.Details on itm.PartCode equals itm1.PartCode
// into temp1
// from tm1 in temp1.DefaultIfEmpty()
// where tm1 == null
// select itm;
//var details = ObjectMapper.Map<List<KittingDetailInput>, List<KittingDetail>>(query.ToList());
//foreach (var itm in details)
//{
// itm.SetId(GuidGenerator.Create());
// itm.MasterId = first.Id;
// first.AddDetails(itm);
//}
//var entity= await _repository.UpdateAsync(first).ConfigureAwait(false);
//return ObjectMapper.Map<Kitting, KittingDTO>(entity);
}
else
{
@ -92,8 +93,30 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase<Kitting, Kitt
[HttpPut]
[Route("{id}")]
public override Task<KittingDTO> UpdateAsync(Guid id, KittingEditInput input)
public override Task<KittingDTO> UpdateAsync(Guid id, KittingEditInput input)
{
var detailquery = _repository.WithDetails();
var first = detailquery.FirstOrDefault(p => p.Id == id);
if (first.Code == input.Code)
{
throw new UserFriendlyException($"已存在编码:{input.Code}的Kitting箱");
}
var query = from itm in input.Details
join itm1 in first.Details on itm.PartCode equals itm1.PartCode
select itm;
List<string> errors = new List<string>();
foreach (var itm in query.ToList())
{
errors.Add(itm.PartCode);
}
if(errors.Count > 0)
{
throw new UserFriendlyException($"零件号${string.Join(",", errors)}已存在");
}
return base.UpdateAsync(id, input);
}

10
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/Kitting.cs

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using NetTopologySuite.Index.HPRtree;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared;
@ -24,6 +25,13 @@ public class Kitting : SfsBaseDataAggregateRootBase, IHasCode
this.Id = id;
}
public void AddDetails(KittingDetail item)
{
Details.Add(item);
}
///// <summary>
///// 设置任务明细的实际库位和实际数量
@ -40,7 +48,7 @@ public class Kitting : SfsBaseDataAggregateRootBase, IHasCode
// detail.Desc2 = desc2;
// detail.Qty = qty;
// detail.Conf = conf;
// await Task.CompletedTask.ConfigureAwait(false);
//}
}

6
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingDetail.cs

@ -37,5 +37,11 @@ public class KittingDetail : AuditedEntity<Guid>, IMultiTenant, IRemark
public string Remark { get; set; }
public void SetId(Guid guid)
{
Id= guid;
}
}

5
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingDbContextModelCreatingExtensions.cs

@ -23,6 +23,11 @@ public static class KittingDbContextModelCreatingExtensions
b.Property(q => q.Code).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
//Relations
b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterId).IsRequired();
//Indexes
b.HasIndex(q => new { q.Code }).IsUnique();
});

27
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/ProductRecycleNotes/DTOs/ProductRecycleNoteDetailExtendDto.cs

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.Store.Notes.ProductRecycleNotes.DTOs;
public class ProductRecycleNoteDetailExtendDto
{
[Display(Name ="报废类型")]
public string Type { get; set; }
[Display(Name = "物料代码")]
public string ItemCode { get; set; }
[Display(Name = "报废库位")]
public string LocCode { get; set; }
[Display(Name = "数量")]
public Decimal Qty { get; set; }
[Display(Name = "报废原因")]
public string Reason { get; set; }
}

55
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/ProductRecycleNotes/ProductRecycleNoteAppService.cs

@ -13,6 +13,7 @@ using System.Collections.Generic;
using System.Linq;
using Volo.Abp.Data;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Wms.Store.Notes.ProductRecycleNotes.DTOs;
/// <summary>
/// 成品回收记录
@ -91,6 +92,60 @@ public class ProductRecycleNoteAppService :
}
}
/// <summary>
/// 导出报废
/// </summary>
[HttpPost("export-scrap")]
public virtual async Task<IActionResult> ExportScrapAsync(SfsExportRequestInput requestInput)
{
try
{
var pagedResult = await GetPagedListByFilterAsync(
new SfsStoreRequestInputBase() { Condition = requestInput.Condition },
true).ConfigureAwait(false);
var items = pagedResult.Items.ToList();
await SetNoteAndBackFlushDetailsAsync(pagedResult.Items.ToList()).ConfigureAwait(false);
var exports = BuildProductRecycleNoteAndBackFlushDetailExport(items);
List<ProductRecycleNoteDetailExtendDto> exportlist=new List<ProductRecycleNoteDetailExtendDto>();
foreach (var itm in exports)
{
exportlist.Add(new ProductRecycleNoteDetailExtendDto()
{
ItemCode = itm.ItemCode,
LocCode = itm.LocationCode,
Reason = string.Empty,
Qty = itm.Qty,
Type = "客户退拆"
});
}
return ExportImportService.Export(exports);
}
catch (Exception ex)
{
Logger.LogException(ex);
throw new Exception(ex.Message);
}
}
protected virtual async Task SetNoteAndBackFlushDetailsAsync(List<ProductRecycleNoteDTO> dtos)
{
await Task.CompletedTask.ConfigureAwait(false);

Loading…
Cancel
Save