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; } public string Name { get; set; }
[Display(Name = "明细")] [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 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箱"); 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
@ -101,7 +99,6 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase<Kitting, Kitt
{ {
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
select itm; select itm;
@ -113,10 +110,7 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase<Kitting, Kitt
if(errors.Count > 0) if(errors.Count > 0)
{ {
throw new UserFriendlyException($"零件号${string.Join(",", errors)}已存在"); throw new UserFriendlyException($"零件号${string.Join(",", errors)}已存在");
} }
return base.UpdateAsync(id, input); return base.UpdateAsync(id, input);
} }
@ -133,6 +127,17 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase<Kitting, Kitt
await _repository.UpdateAsync(entity).ConfigureAwait(false); 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) protected override async Task<KittingDTO> GetFromRepositoryAsync(string code)
{ {
var displayName = typeof(KittingDTO).GetNameOfDisplay(); 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; using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Basedata.Domain; namespace Win_in.Sfs.Basedata.Domain;
public interface IKittingRepository : ISfsBaseDataRepositoryBase<Kitting>, ISfsBulkRepositoryBase<Kitting> 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> /// </summary>
[Serializable] [Serializable]
[Display(Name = "Kitting箱")] [Display(Name = "Kitting箱")]
public class Kitting : SfsBaseDataAggregateRootBase, IHasCode public class Kitting : SfsBaseDataAggregateRootBase, IHasCode
{ {
public string Code { get ; set ; } public string Code { get ; set ; }
public string Name { get ; set ; } public string Name { get ; set ; }
public virtual ICollection<KittingDetail> Details { get; set; } = new List<KittingDetail>(); public virtual List<KittingDetail> Details { get; set; } = new List<KittingDetail>();
public void SetId(Guid id) //public void SetId(Guid id)
{ //{
this.Id = id; // this.Id = id;
} //}
public void AddDetails(KittingDetail item) 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(); b.ConfigureByConvention();
//Configure Sfs base properties //Configure Sfs base properties
b.ConfigureSfsBase(); b.ConfigureSfsBase();
b.Property(p=>p.Name).HasMaxLength(SfsPropertyConst.DescLength); b.Property(p => p.Name).HasMaxLength(SfsPropertyConst.DescLength);
//Properties //Properties
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();
@ -47,7 +47,12 @@ public static class KittingDbContextModelCreatingExtensions
//Relations //Relations
b.Property(q => q.MasterId).IsRequired(); b.Property(q => q.MasterId).IsRequired();
//Indexes //Indexes
//b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired();
}); });
} }
//public static void ConfigureCustomer(this ModelBuilder builder, BasedataModelBuilderConfigurationOptions options) //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 System.Threading.Tasks;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Volo.Abp.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 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) if (exist == null)
{ {
var insRet = await InsertAsync(entity).ConfigureAwait(false); newData.SetId(GuidGenerator.Create());
await InsertAsync(newData).ConfigureAwait(false);
} }
else 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; //foreach (var itm in detail)
exist.Name = entity.Name; //{
//exist.Address = entity.Address; // var existDetail =
//exist.Country = entity.Country; // detailList.FirstOrDefault(p => p.PartCode == newDetail.PartCode);
//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;
//}
//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