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. 8
      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) if (first != null)
{ {
throw new UserFriendlyException($"已存在编码:{input.Code}的Kitting箱"); throw new UserFriendlyException($"已存在编码:{input.Code}的Kitting箱");
// var query = from itm in input.Details //var query = from itm in input.Details
// join itm1 in first.Details on itm.PartCode equals itm1.PartCode // join itm1 in first.Details on itm.PartCode equals itm1.PartCode
// into temp1 // into temp1
// from tm1 in temp1.DefaultIfEmpty() // from tm1 in temp1.DefaultIfEmpty()
// where tm1==null // where tm1 == null
// select itm; // select itm;
//var details=ObjectMapper.Map<List<KittingDetailInput>,List<KittingDetail>>(query.ToList()); //var details = ObjectMapper.Map<List<KittingDetailInput>, List<KittingDetail>>(query.ToList());
//foreach (var itm in details) //foreach (var itm in details)
//{ //{
// itm.MasterId = first.Id; // itm.SetId(GuidGenerator.Create());
// first.Details.Add(itm); // itm.MasterId = first.Id;
//} // first.AddDetails(itm);
//}
//var entity = await _repository.UpdateAsync(first, true).ConfigureAwait(false); //var entity= await _repository.UpdateAsync(first).ConfigureAwait(false);
// return ObjectMapper.Map<Kitting, KittingDTO>(first);
//return ObjectMapper.Map<Kitting, KittingDTO>(entity);
} }
else else
{ {
@ -92,8 +93,30 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase<Kitting, Kitt
[HttpPut] [HttpPut]
[Route("{id}")] [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); return base.UpdateAsync(id, input);
} }

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

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks; using System.Threading.Tasks;
using NetTopologySuite.Index.HPRtree;
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.Entities;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
@ -24,6 +25,13 @@ public class Kitting : SfsBaseDataAggregateRootBase, IHasCode
this.Id = id; this.Id = id;
} }
public void AddDetails(KittingDetail item)
{
Details.Add(item);
}
///// <summary> ///// <summary>
///// 设置任务明细的实际库位和实际数量 ///// 设置任务明细的实际库位和实际数量

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

@ -38,4 +38,10 @@ public class KittingDetail : AuditedEntity<Guid>, IMultiTenant, IRemark
public string Remark { get; set; } 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); b.Property(q => q.Code).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
//Relations //Relations
b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterId).IsRequired(); b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterId).IsRequired();
//Indexes //Indexes
b.HasIndex(q => new { q.Code }).IsUnique(); 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 System.Linq;
using Volo.Abp.Data; using Volo.Abp.Data;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Wms.Store.Notes.ProductRecycleNotes.DTOs;
/// <summary> /// <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) protected virtual async Task SetNoteAndBackFlushDetailsAsync(List<ProductRecycleNoteDTO> dtos)
{ {
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);

Loading…
Cancel
Save