Browse Source

更新版本

dev_DY_CC
赵新宇 1 year ago
parent
commit
3171c6d9ca
  1. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs
  2. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingEditInput.cs
  3. 17
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs
  4. 3
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/IKittingRepository.cs
  5. 12
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/Kitting.cs
  6. 11
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingDbContextModelCreatingExtensions.cs
  7. 231
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingEfCoreRepository.cs

2
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs

@ -16,5 +16,5 @@ public class KittingDTO : SfsBaseDataDTOBase, IHasCode, IHasName
public string Name { get; set; }
[Display(Name = "明细")]
public virtual ICollection<KittingDetailDTO> Details { set; get; }= new List<KittingDetailDTO>();
public List<KittingDetailDTO> Details { set; get; }= new List<KittingDetailDTO>();
}

2
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingEditInput.cs

@ -15,7 +15,7 @@ public class KittingEditInput : SfsBaseDataCreateOrUpdateInputBase
public string Name { get; set; }
public virtual ICollection<KittingDetailInput> Details { get; set; }=new List<KittingDetailInput>();
public virtual List<KittingDetailInput> Details { get; set; }=new List<KittingDetailInput>();
}

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

@ -48,8 +48,6 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase<Kitting, Kitt
{
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
@ -101,7 +99,6 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase<Kitting, Kitt
{
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;
@ -113,10 +110,7 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase<Kitting, Kitt
if(errors.Count > 0)
{
throw new UserFriendlyException($"零件号${string.Join(",", errors)}已存在");
}
return base.UpdateAsync(id, input);
}
@ -133,6 +127,17 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase<Kitting, Kitt
await _repository.UpdateAsync(entity).ConfigureAwait(false);
}
[HttpPost("upsert")]
public virtual async Task UpsertAsync(KittingEditInput input)
{
var entity = ObjectMapper.Map<KittingEditInput, Kitting>(input);
await _repository.UpsertAsync(entity).ConfigureAwait(false);
}
protected override async Task<KittingDTO> GetFromRepositoryAsync(string code)
{
var displayName = typeof(KittingDTO).GetNameOfDisplay();

3
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/IKittingRepository.cs

@ -1,9 +1,10 @@
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Basedata.Domain;
public interface IKittingRepository : ISfsBaseDataRepositoryBase<Kitting>, ISfsBulkRepositoryBase<Kitting>
{
Task UpsertAsync(Kitting newData);
}

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

@ -15,15 +15,15 @@ namespace Win_in.Sfs.Basedata.Domain;
/// </summary>
[Serializable]
[Display(Name = "Kitting箱")]
public class Kitting : SfsBaseDataAggregateRootBase, IHasCode
public class Kitting : SfsBaseDataAggregateRootBase, IHasCode
{
public string Code { get ; set ; }
public string Name { get ; set ; }
public virtual ICollection<KittingDetail> Details { get; set; } = new List<KittingDetail>();
public void SetId(Guid id)
{
this.Id = id;
}
public virtual List<KittingDetail> Details { get; set; } = new List<KittingDetail>();
//public void SetId(Guid id)
//{
// this.Id = id;
//}
public void AddDetails(KittingDetail item)
{

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

@ -18,13 +18,13 @@ public static class KittingDbContextModelCreatingExtensions
b.ConfigureByConvention();
//Configure Sfs base properties
b.ConfigureSfsBase();
b.Property(p=>p.Name).HasMaxLength(SfsPropertyConst.DescLength);
b.Property(p => p.Name).HasMaxLength(SfsPropertyConst.DescLength);
//Properties
b.Property(q => q.Code).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
//Relations
b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterId).IsRequired();
@ -47,7 +47,12 @@ public static class KittingDbContextModelCreatingExtensions
//Relations
b.Property(q => q.MasterId).IsRequired();
//Indexes
//b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired();
});
}
//public static void ConfigureCustomer(this ModelBuilder builder, BasedataModelBuilderConfigurationOptions options)

231
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Kittings/KittingEfCoreRepository.cs

@ -1,4 +1,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
@ -13,66 +15,201 @@ public class KittingEfCoreRepository : SfsBaseDataEfCoreRepositoryBase<BasedataD
{
}
public virtual async Task UpsertAsync(Kitting entity)
public virtual async Task UpsertAsync(Kitting newData)
{
var main=DbContext.Set<Kitting>();
var detail=DbContext.Set<KittingDetail>();
var dbSet = await GetDbSetAsync().ConfigureAwait(false);
var exist = await dbSet.FirstOrDefaultAsync(p => p.Code == entity.Code).ConfigureAwait(false);
var exist = await main.FirstOrDefaultAsync(p => p.Code == newData.Code).ConfigureAwait(false);
if (exist == null)
{
var insRet = await InsertAsync(entity).ConfigureAwait(false);
newData.SetId(GuidGenerator.Create());
await InsertAsync(newData).ConfigureAwait(false);
}
else
{
var detailList= detail.Where(p => p.MasterId == exist.Id).ToList();
var left=from itm in newData.Details join itm1 in detailList on
itm.PartCode equals itm1.PartCode
into temp
from tm in temp.DefaultIfEmpty()
where tm == null
select itm;
var inner = from itm in detailList
join itm1 in newData.Details on
itm.PartCode equals itm1.PartCode
select itm1;
//await detail.AddRangeAsync(left.ToList()).ConfigureAwait(false);
List<KittingDetail> insert = new List<KittingDetail>();
List<KittingDetail> update = new List<KittingDetail>();
foreach (var itm in inner.ToList())
{
var first=newData.Details.FirstOrDefault(p=>p.PartCode==itm.PartCode);
itm.Qty = first.Qty;
itm.Desc1= first.Desc1;
itm.Desc2=first.Desc2;
update.Add(itm);
}
foreach (var itm in left.ToList())
{
itm.SetId(GuidGenerator.Create());
itm.MasterId = exist.Id;
insert.Add(itm);
}
detail.AddRange(insert.ToArray());
detail.UpdateRange(update.ToArray());
DbContext.SaveChanges();
//exist.Code = entity.Code;
exist.Name = entity.Name;
//exist.Address = entity.Address;
//exist.Country = entity.Country;
//exist.City = entity.City;
//exist.Phone = entity.Phone;
//exist.Fax = entity.Fax;
//exist.PostID = entity.PostID;
//exist.Contacts = entity.Contacts;
//exist.Currency = entity.Currency;
//exist.IsActive = entity.IsActive;
//exist.Type = entity.Type;
exist.TenantId = entity.TenantId;
exist.Remark = entity.Remark;
//foreach (var itm in detail)
//{
// var existDetail =
// detailList.FirstOrDefault(p => p.PartCode == newDetail.PartCode);
//}
//detailRep.Where(p=>p.PartCode==);
//exist.Name = newData.Name;
//UpsertDetail(newData, exist);
//await UpdateAsync(exist).ConfigureAwait(false);
}
// var context = await GetDbContextAsync();
// await context.SingleMergeAsync(entity, options =>
// {
// //业务主键,可以是联合主键
// options.ColumnPrimaryKeyExpression = c => new
// {
// c.Company,
// c.Code
// };
// //需要在更新时忽略的属性
// options.IgnoreOnMergeUpdateExpression = c => new
// {
// c.Id,
// };
// });
}
//private void UpsertDetail(List<KittingDetail> newData, List<KittingDetail> exist)
//{
// foreach (var newDetail in newData)
// {
// var existDetail =
// exist.FirstOrDefault(p =>p.PartCode==newDetail.PartCode);
// if (existDetail == null)
// {
// newDetail.SetId(GuidGenerator.Create());
// newDetail.MasterId = exist.Id;
// exist.Details.Add(newDetail);
// }
// else
// {
// existDetail.Desc1= newDetail.Desc1;
// existDetail.Desc2= newDetail.Desc2;
// existDetail.Qty= newDetail.Qty;
// existDetail.Remark= newDetail.Remark;
// //existDetail.SupplierPackUom = newDetail.SupplierPackUom;
// //existDetail.SupplierPackQty = newDetail.SupplierPackQty;
// //existDetail.ConvertRate = newDetail.ConvertRate;
// //existDetail.IsConsignment = newDetail.IsConsignment;
// //existDetail.LineStatus = newDetail.LineStatus;
// //existDetail.Uom = newDetail.Uom;
// //existDetail.Qty = newDetail.Qty;
// //existDetail.StdPackQty = newDetail.StdPackQty;
// //existDetail.ItemName = newDetail.ItemName;
// //existDetail.ItemDesc1 = newDetail.ItemDesc1;
// //existDetail.ItemDesc2 = newDetail.ItemDesc2;
// //existDetail.ItemCode = newDetail.ItemCode;
// //existDetail.Remark = newDetail.Remark;
// }
// }
//}
public virtual async Task UpsertAsyncByInterface(Kitting entity)
{
//var dbSet = await GetDbSetAsync().ConfigureAwait(false);
//var exist = await dbSet.FirstOrDefaultAsync(p => p.Code == entity.Code).ConfigureAwait(false);
//if (exist == null)
//{
// var insRet = await InsertAsync(entity).ConfigureAwait(false);
//}
//else
//{
// exist.Name = entity.Name;
// exist.ShortName = entity.ShortName;
// exist.LastModificationTime = DateTime.Now;
//}
}
//public virtual async Task UpsertAsync(Kitting entity)
//{
// var dbSet = await GetDbSetAsync().ConfigureAwait(false);
// var exist = await dbSet.FirstOrDefaultAsync(p => p.Code == entity.Code).ConfigureAwait(false);
// if (exist == null)
// {
// var insRet = await InsertAsync(entity).ConfigureAwait(false);
// }
// else
// {
// //exist.Code = entity.Code;
// exist.Name = entity.Name;
// //exist.Address = entity.Address;
// //exist.Country = entity.Country;
// //exist.City = entity.City;
// //exist.Phone = entity.Phone;
// //exist.Fax = entity.Fax;
// //exist.PostID = entity.PostID;
// //exist.Contacts = entity.Contacts;
// //exist.Currency = entity.Currency;
// //exist.IsActive = entity.IsActive;
// //exist.Type = entity.Type;
// exist.TenantId = entity.TenantId;
// exist.Remark = entity.Remark;
// }
// // var context = await GetDbContextAsync();
// // await context.SingleMergeAsync(entity, options =>
// // {
// // //业务主键,可以是联合主键
// // options.ColumnPrimaryKeyExpression = c => new
// // {
// // c.Company,
// // c.Code
// // };
// // //需要在更新时忽略的属性
// // options.IgnoreOnMergeUpdateExpression = c => new
// // {
// // c.Id,
// // };
// // });
//}
//public virtual async Task UpsertAsyncByInterface(Kitting entity)
//{
// //var dbSet = await GetDbSetAsync().ConfigureAwait(false);
// //var exist = await dbSet.FirstOrDefaultAsync(p => p.Code == entity.Code).ConfigureAwait(false);
// //if (exist == null)
// //{
// // var insRet = await InsertAsync(entity).ConfigureAwait(false);
// //}
// //else
// //{
// // exist.Name = entity.Name;
// // exist.ShortName = entity.ShortName;
// // exist.LastModificationTime = DateTime.Now;
// //}
//}
}

Loading…
Cancel
Save