Browse Source

更新版本

dev_DY_CC
赵新宇 1 year ago
parent
commit
5175b4aae4
  1. 5
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentDTO.cs
  2. 5
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentEditInput.cs
  3. 9
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentImportInput.cs
  4. 224
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAppService.cs
  5. 1
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentPartCodeAppService.cs
  6. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocCap.cs
  7. 19
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocCapManager.cs
  8. 4
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocCapManager.cs
  9. 11
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocCapRepository.cs
  10. 1
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataEntityFrameworkCoreModule.cs
  11. 24
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentDbContextModelCreatingExtensions.cs
  12. 36
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentEfCoreRepository.cs
  13. 66
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocCapEfCoreRepository.cs
  14. 312
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentRecordManager.cs
  15. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/IEquipmentLocCapRepository.cs
  16. 32
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Equipments/EquipmentLocCapDbContextModelCreatingExtensions.cs
  17. 23
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Equipments/EquipmentLocCapEfCoreRepository.cs
  18. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContextModelCreatingExtensions.cs

5
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/DTOs/EquipmentDTO.cs

@ -6,6 +6,7 @@ namespace Win_in.Sfs.Basedata.Application.Contracts;
using System;
using System.Collections.Generic;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata;
[Display(Name = "器具基本信息")]
@ -15,7 +16,7 @@ public class EquipmentDTO : SfsBaseDataDTOBase, IHasCode
/// 类型
/// </summary>
[Display(Name = "类型")]
public string Type { get; set; } = string.Empty;
public EnumEquipmentType Type { get; set; }
/// <summary>
/// 器具编号
/// </summary>
@ -35,7 +36,7 @@ public class EquipmentDTO : SfsBaseDataDTOBase, IHasCode
/// 型号
/// </summary>
[Display(Name = "型号")]
public string Model { get; set; } = string.Empty;
public EnumEquipmentModel Model { get; set; }
/// <summary>
/// 库位编号
/// </summary>

5
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentEditInput.cs

@ -2,6 +2,7 @@ using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata;
namespace Win_in.Sfs.Basedata.Application.Contracts;
@ -11,7 +12,7 @@ public class EquipmentEditInput : SfsBaseDataCreateOrUpdateInputBase
/// 类型
/// </summary>
[Display(Name = "类型")]
public string Type { get; set; } = string.Empty;
public EnumEquipmentType Type { get; set; }
/// <summary>
/// 器具编号
/// </summary>
@ -31,7 +32,7 @@ public class EquipmentEditInput : SfsBaseDataCreateOrUpdateInputBase
/// 型号
/// </summary>
[Display(Name = "型号")]
public string Model { get; set; } = string.Empty;
public EnumEquipmentModel Model { get; set; }
/// <summary>
/// 库位编号
/// </summary>

9
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Equipments/Inputs/EquipmentImportInput.cs

@ -1,8 +1,7 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata;
namespace Win_in.Sfs.Basedata.Application.Contracts;
@ -13,7 +12,7 @@ public class EquipmentImportInput : SfsBaseDataImportInputBase
/// 类型
/// </summary>
[Display(Name = "类型")]
public string Type { get; set; } = string.Empty;
public Win_in.Sfs.Shared.Domain.Shared.Enums.Basedata.EnumEquipmentType Type { get; set; }
/// <summary>
/// 器具编号
/// </summary>
@ -33,7 +32,7 @@ public class EquipmentImportInput : SfsBaseDataImportInputBase
/// 型号
/// </summary>
[Display(Name = "型号")]
public string Model { get; set; } = string.Empty;
public EnumEquipmentModel Model { get; set; }
/// <summary>
/// 库位编号
/// </summary>

224
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentAppService.cs

@ -30,22 +30,18 @@ public class EquipmentAppService
: SfsBaseDataWithCodeAppServiceBase<Equipment, EquipmentDTO, SfsBaseDataRequestInputBase, EquipmentEditInput, EquipmentImportInput>
, IEquipmentAppService
{
//private readonly ItemValidator _itemValidator;
private readonly IEquipmentManager _manager;
private new readonly IEquipmentRepository _repository;
private readonly IExportImportService _importService;
public EquipmentAppService(
IEquipmentRepository repository,
IDistributedCache<EquipmentDTO> cache,
IExportImportService importService,
// ItemValidator itemValidator,
IEquipmentManager manager)
: base(repository, cache)
{
_importService=importService;
_repository = repository;
//_itemValidator = itemValidator;
_manager = manager;
base.CreatePolicyName = EquipmentPermissions.Create;
base.UpdatePolicyName = EquipmentPermissions.Update;
@ -54,232 +50,15 @@ public class EquipmentAppService
[HttpPost("check")]
//[Authorize(ErpLocationPermissions.Default)]
public virtual async Task CheckAsync(string code, EquipmentCheckInput input)
{
await Task.CompletedTask.ConfigureAwait(false);
}
//public override async Task<IActionResult> ImportAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file)
//{
// List<EquipmentErrorDTO> errors = new List<EquipmentErrorDTO>();
// using var ms = new MemoryStream();
// await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false);
// var inputFileBytes = ms.GetAllBytes();
// var dtos=_importService.Import<EquipmentEditInput>(inputFileBytes).ToList();
// var list=ObjectMapper.Map<List<EquipmentEditInput>, List<Equipment>>(dtos);
// foreach (var itm in list)
// {
// itm.SetId(GuidGenerator.Create());
// itm.Code = string.Format("{0}{1}", "Q", itm.Code);
// }
// ////var bytes = result.FileContents;
// ////result.FileContents = null;
// ////HttpContextAccessor.HttpContext.Response.Headers.AccessControlExposeHeaders = "X-Response";
// ////HttpContextAccessor.HttpContext.Response.Headers.Add("X-Response",
// //// JsonSerializer.Serialize(new { result.ExceptionMessage, result.FileName, result.FileCode, result }));
// ////Console.WriteLine(@"导入错误信息:" + result.ExceptionMessage);
// ////var resultAction = new TestResult(bytes, ExportImportService.ContentType) { FileDownloadName = result.FileName };
// ////resultAction.errorNum = result.ErrorNum;
// ////resultAction.successNum = resultAction.successNum;
// //return resultAction;
// // return base.ImportAsync(requestInput, file);
//}
//protected ICategoryAppService _categoryApp => LazyServiceProvider.LazyGetRequiredService<ICategoryAppService>();
//protected IItemCategoryAppService _itemCategoryApp => LazyServiceProvider.LazyGetRequiredService<IItemCategoryAppService>();
//[HttpPost("check")]
//public virtual async Task CheckAsync(string code, EquipmentCheckInput input)
//{
// var result = new AbpValidationResult();
// _itemValidator.CheckFormat(code);
// var dto = await GetByCodeAsync(code).ConfigureAwait(false);
// var entity = ObjectMapper.Map<EquipmentDTO, Equipment>(dto);
// //_itemValidator.CheckCanBuy(entity, input.CanBuy, result);
// //_itemValidator.CheckCanMake(entity, input.CanMake, result);
// //_itemValidator.CheckStatus(entity, input.Statuses, result);
// //_itemValidator.CheckProject(entity, input.Projects, result);
// //await _itemValidator.CheckCategoryAsync(entity, input.Categories, result).ConfigureAwait(false);
// if (result.Errors.Count > 0)
// {
// throw new AbpValidationException(result.Errors);
// }
//}
///// <summary>
///// 检物品状态 是否可用
///// </summary>
///// <param name="itemCode"></param>
///// <returns></returns>
///// <exception cref="NotImplementedException"></exception>
//[HttpGet("check-item-is-available")]
//public virtual async Task<bool> CheckItemIsAvailable(string itemCode)
//{
// var entity = await _repository.FindAsync(c => c.Code == itemCode).ConfigureAwait(false);
// if (entity == null)
// {
// throw new UserFriendlyException($"未找到代码为 {itemCode} 的物品");
// }
// return entity.Status == EnumItemStatus.Active;
//}
/// <summary>
/// 检物品状态 是否可用(不查询数据库 直接根据对象判断)
/// </summary>
/// <param name="EquipmentDTO"></param>
/// <returns></returns>
//[HttpGet("check-item-is-available-no-select-sql")]
//public void CheckItemIsAvailable(EquipmentDTO EquipmentDTO)
//{
// if (EquipmentDTO != null && EquipmentDTO.Status != EnumItemStatus.Active)
// {
// throw new UserFriendlyException($"物料 {EquipmentDTO.Code} 状态为 {EquipmentDTO.Status} ,不是可用状态");
// }
//}
//[HttpGet("{id}")]
//public override async Task<EquipmentDTO> GetAsync(Guid id)
//{
// var dto = await base.GetAsync(id).ConfigureAwait(false);
// dto.ItemCategoryDictionary = await GetItemCategory(dto.Code).ConfigureAwait(false);
// return dto;
//}
/// <summary>
///
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
//[HttpGet("list-by-name")]
//public virtual async Task<List<EquipmentDTO>> GetListByNameAsync(string name)
//{
// var entities = await _repository.GetListAsync(c => c.Name == name).ConfigureAwait(false);
// var dtos = ObjectMapper.Map<List<Equipment>, List<EquipmentDTO>>(entities);
// return dtos;
//}
//[HttpGet("get-manage-type")]
//public virtual async Task<EnumItemManageType> GetManageTypeAsync(string itemCode)
//{
// var entity = await GetByCodeAsync(itemCode).ConfigureAwait(false);
// Check.NotNull(entity, "物品代码", $"物品 {itemCode} 不存在");
// return entity.ManageType;
//}
//[HttpGet("get-manage-types")]
//public virtual async Task<Dictionary<string, EnumItemManageType>> GetManageTypesAsync(List<string> itemCodes)
//{
// var dtos = await GetByCodesAsync(itemCodes).ConfigureAwait(false);
// var itemManageTypes = dtos.ToDictionary(dto => dto.Code, dto => dto.ManageType);
// return itemManageTypes;
//}
//[HttpPost("get-or-add")]
//public virtual async Task<EquipmentDTO> GetOrAddAsync(EquipmentEditInput input)
//{
// var result = await _repository.FirstOrDefaultAsync(p => p.Code == input.Code).ConfigureAwait(false);
// if (result == null)
// {
// var entity = ObjectMapper.Map<EquipmentEditInput, Equipment>(input);
// result = await _repository.InsertAsync(entity, true).ConfigureAwait(false);
// }
// var dto = ObjectMapper.Map<Equipment, EquipmentDTO>(result);
// return dto;
//}
//[HttpPost("list")]
//public override async Task<PagedResultDto<EquipmentDTO>> GetPagedListByFilterAsync(
// SfsBaseDataRequestInputBase sfsRequestInput,
// bool includeDetails = false,
// CancellationToken cancellationToken = default)
//{
// Expression<Func<Equipment, bool>> expression = sfsRequestInput.Condition.Filters?.Count > 0
// ? sfsRequestInput.Condition.Filters.ToLambda<Equipment>()
// : p => true;
// var pageResult = await GetPagedListAsync(
// expression,
// sfsRequestInput.SkipCount,
// sfsRequestInput.MaxResultCount,
// sfsRequestInput.Sorting,
// includeDetails,
// cancellationToken).ConfigureAwait(false);
// foreach (var item in pageResult.Items)
// {
// item.ItemCategoryDictionary = await GetItemCategory(item.Code).ConfigureAwait(false);
// }
// return pageResult;
//}
//[HttpPost("upsert")]
//public virtual async Task UpsertAsync(EquipmentEditInput input)
//{
// var entity = ObjectMapper.Map<EquipmentEditInput, Equipment>(input);
// await _repository.UpsertAsync(entity).ConfigureAwait(false);
//}
//[HttpPost("upsert-interface")]
//public virtual async Task UpsertAsyncByInterface(EquipmentEditInput input)
//{
// var entity = ObjectMapper.Map<EquipmentEditInput, Equipment>(input);
// await _repository.UpsertAsyncByInterface(entity).ConfigureAwait(false);
//}
//protected override Expression<Func<Equipment, bool>> BuildSearchExpression(string keyWord)
//{
// Expression<Func<Equipment, bool>> expression = p =>
// p.Code.Contains(keyWord)
// || p.Name.Contains(keyWord)
// || p.Desc1.Contains(keyWord)
// || p.Desc2.Contains(keyWord)
// || p.AbcClass.Contains(keyWord)
// || p.BasicUom.Contains(keyWord)
// || p.Elevel.Contains(keyWord)
// || p.Project.Contains(keyWord)
// || p.Version.Contains(keyWord);
// return expression;
//}
//private async Task<Dictionary<string, string>> GetItemCategory(string itemCode)
//{
// // var itemCategorys = await this._itemCategoryApp.GetListByItemCode(itemCode).ConfigureAwait(false);
// // return itemCategorys.ToDictionary(x => x.CategoryCode, y => y.Value);
//}
[HttpPost("upsert")]
public virtual async Task UpsertAsync(EquipmentEditInput input)
{
var entity = ObjectMapper.Map<EquipmentEditInput, Equipment>(input);
await _repository.UpsertAsync(entity).ConfigureAwait(false);
}
@ -292,8 +71,6 @@ public class EquipmentAppService
{
var entity = ObjectMapper.Map<EquipmentEditInput, Equipment>(input);
entity.Code = string.Format("{0}{1}", "Q", entity.Code);
await _repository.UpsertAsync(entity).ConfigureAwait(false);
var entity1=_repository.WithDetails().FirstOrDefault(p => p.Code == input.Code);
return ObjectMapper.Map<Equipment,EquipmentDTO>(entity1);
@ -304,5 +81,4 @@ public class EquipmentAppService
}
}
}

1
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Equipments/EquipmentPartCodeAppService.cs

@ -31,7 +31,6 @@ public class EquipmentPartCodeAppService
: SfsBaseDataWithCodeAppServiceBase<EquipmentPartCode, EquipmentPartCodeDTO, SfsBaseDataRequestInputBase, EquipmentPartCodeEditInput, EquipmentPartCodeImportInput>
, IEquipmentPartCodeAppService
{
private readonly IEquipmentPartCodeManager _manager;
private new readonly IEquipmentPartCodeRepository _repository;
private readonly IExportImportService _importService;

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentLocCap.cs → be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocCap.cs

@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Basedata.Domain;
public class EquipmentLocCap:SfsAggregateRootBase

19
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentLocCapManager.cs → be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/EquipmentLocCapManager.cs

@ -4,18 +4,18 @@ using System.Linq;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Domain.Services;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Basedata.Domain;
public class EquipmentLocCapManager : DomainService, IEquipmentLocCapManager
{
private readonly IEquipmentRecordRepository _repository;
private readonly IEquipmentLocCapRepository _repository;
public EquipmentLocCapManager(IEquipmentRecordRepository repository
public EquipmentLocCapManager(IEquipmentLocCapRepository repository
)
{
@ -24,17 +24,14 @@ public class EquipmentLocCapManager : DomainService, IEquipmentLocCapManager
}
public Task ImportDataAsync(List<EquipmentRecord> entities, List<EquipmentRecord> deleteEntities = null)
{
throw new NotImplementedException();
}
public Task ImportDataAsync(List<EquipmentLocCap> entities, List<EquipmentLocCap> deleteEntities = null)
{
throw new NotImplementedException();
}
private async Task SetDetailAsync(List<PurchaseOrderDetail> details)
private async Task SetDetailAsync(List<EquipmentLocCap> details)
{
}

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/IEquipmentLocCapManager.cs → be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocCapManager.cs

@ -1,9 +1,9 @@
using System;
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Basedata.Domain;
public interface IEquipmentLocCapManager : IBulkImportService<EquipmentLocCap>
{

11
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Equipments/IEquipmentLocCapRepository.cs

@ -0,0 +1,11 @@
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Basedata.Domain;
public interface IEquipmentLocCapRepository : IDomainService, ISfsBulkRepositoryBase<EquipmentLocCap>
{
Task UpsertAsync(EquipmentLocCap newData);
}

1
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataEntityFrameworkCoreModule.cs

@ -74,6 +74,7 @@ public class BasedataEntityFrameworkCoreModule : AbpModule
context.Services.AddTransient<IKittingRepository, KittingEfCoreRepository>();
context.Services.AddTransient<IEquipmentPartCodeRepository, EquipmentPartCodeEfCoreRepository>();
context.Services.AddTransient<IEquipmentLocRepository, EquipmentLocEfCoreRepository>();
context.Services.AddTransient<IEquipmentLocCapRepository, EquipmentLocCapEfCoreRepository>();
ConfigureEntity();
}

24
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentDbContextModelCreatingExtensions.cs

@ -32,6 +32,30 @@ public static class EquipmentDbContextModelCreatingExtensions
//Indexes
b.HasIndex(q => new { q.Code }).IsUnique();
});
builder.Entity<EquipmentLocCap>(b =>
{
//Configure table & schema name
b.ToTable(options.TablePrefix + nameof(EquipmentLocCap), options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Configure Sfs base properties
b.ConfigureSfsBase();
//Properties
b.Property(q => q.EqptCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(true);
b.Property(q => q.PartCode).HasMaxLength(SfsPropertyConst.CodeLength);
//Relations
//None
//Indexes
b.HasIndex(q => new { q.EqptCode }).IsUnique();
});
}
}

36
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentEfCoreRepository.cs

@ -15,10 +15,20 @@ public class EquipmentEfCoreRepository : SfsBaseDataEfCoreRepositoryBase<Basedat
public virtual async Task UpsertAsyncByInterface(Equipment 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);
var cap = new EquipmentLocCap() { EqptCode = entity.Code,PartCode=string.Empty,Percent=0, Qty=0 , StdQty=0 };
await DbContext.Set<EquipmentLocCap>().AddAsync(cap).ConfigureAwait(false);
}
else
{
@ -36,6 +46,15 @@ public class EquipmentEfCoreRepository : SfsBaseDataEfCoreRepositoryBase<Basedat
if (exist == null)
{
var insRet = await InsertAsync(entity).ConfigureAwait(false);
var cap = new EquipmentLocCap() { EqptCode = entity.Code, PartCode = string.Empty, Percent = 0, Qty = 0, StdQty = 0 };
await DbContext.Set<EquipmentLocCap>().AddAsync(cap).ConfigureAwait(false);
}
else
{
@ -43,24 +62,7 @@ public class EquipmentEfCoreRepository : SfsBaseDataEfCoreRepositoryBase<Basedat
exist.Model = entity.Model;
exist.Type = entity.Type;
exist.LastModificationTime = DateTimeOffset.Now.DateTime;
}
// var context = await GetDbContextAsync();
// await context.SingleMergeAsync(entity, options =>
// {
// //业务主键,可以是联合主键
// options.ColumnPrimaryKeyExpression = c => new
// {
// c.Code
// };
// //需要在更新时忽略的属性
// options.IgnoreOnMergeUpdateExpression = c => new
// {
// c.Id,
// c.ManageType,
// };
// });
}
public virtual async Task InsertAutoSaveAsync(Equipment entity)

66
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentLocCapEfCoreRepository.cs

@ -0,0 +1,66 @@
using System;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Basedata.EntityFrameworkCore;
public class EquipmentLocCapEfCoreRepository : SfsBaseDataEfCoreRepositoryBase<BasedataDbContext, EquipmentLocCap>, IEquipmentLocCapRepository, ISfsBulkRepositoryBase<EquipmentLocCap>
{
public EquipmentLocCapEfCoreRepository(IDbContextProvider<BasedataDbContext> dbContextProvider) : base(dbContextProvider)
{
}
public virtual async Task UpsertAsyncByInterface(EquipmentLocCap entity)
{
var dbSet = await GetDbSetAsync().ConfigureAwait(false);
var exist = await dbSet.FirstOrDefaultAsync(p => p.EqptCode == entity.EqptCode).ConfigureAwait(false);
if (exist == null)
{
var insRet = await InsertAsync(entity).ConfigureAwait(false);
}
else
{
exist.Qty = entity.Qty;
exist.StdQty = entity.StdQty;
exist.Percent = entity.Percent;
exist.LastModificationTime = DateTimeOffset.Now.DateTime;
}
}
public virtual async Task UpsertAsync(EquipmentLocCap entity)
{
var dbSet = await GetDbSetAsync().ConfigureAwait(false);
var exist = await dbSet.FirstOrDefaultAsync(p => p.EqptCode == entity.EqptCode).ConfigureAwait(false);
if (exist == null)
{
var insRet = await InsertAsync(entity).ConfigureAwait(false);
}
else
{
exist.Qty = entity.Qty;
exist.StdQty = entity.StdQty;
exist.Percent = entity.Percent;
exist.LastModificationTime = DateTimeOffset.Now.DateTime;
}
}
public virtual async Task InsertAutoSaveAsync(EquipmentLocCap entity)
{
_ = await InsertAsync(entity, true, GetCancellationToken()).ConfigureAwait(false);
}
}

312
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/EquipmentRecordManager.cs

@ -19,118 +19,118 @@ namespace Win_in.Sfs.Wms.Store.Domain;
public class EquipmentRecordManager : DomainService, IEquipmentRecordManager
{
private readonly IEquipmentRecordRepository _repository;
private readonly IEquipmentLocCapRepository _repositoryCap;
// private readonly IEquipmentLocCapRepository _repositoryCap;
private readonly IEquipmentLocAppService _locService;
private readonly IEquipmentPartCodeAppService _partService;
public EquipmentRecordManager(
IEquipmentRecordRepository repository,
IEquipmentLocCapRepository repositoryCap,
//IEquipmentLocCapRepository repositoryCap,
IEquipmentLocAppService locService,
IEquipmentPartCodeAppService partService
)
{
_locService=locService;
_repository = repository;
_repositoryCap = repositoryCap;
// _repositoryCap = repositoryCap;
_partService= partService;
}
public async Task<List<EquipmentRecordErrorDTO>> Bind(List<EquipmentRecord> p_ls)
{
List<EquipmentRecordErrorDTO> errors=new List<EquipmentRecordErrorDTO>();
var list= p_ls.GroupBy(p => new { p.EqptCode, p.PartCode }).Select(p=>new { EqptCode= p.Key.EqptCode, PartCode= p.Key.PartCode,SumQty=p.Sum(p=>p.Qty)});//导入零件
var partialErrors1=list.GroupBy(p => p.EqptCode).Where(g =>g.Count()>1).Select(p => new EquipmentRecordErrorDTO() { EqptCode= p.Key,PartCode=string.Empty,Error=$"同器具代码有{p.Count().ToString()}种零件!" });
errors.AddRange(partialErrors1.ToList());//同容器放不同零件校验
var ls=p_ls.Select(p => p.EqptCode).Distinct().ToList();//录入的器具记录代码列表
var Locs=_locService.GetEquipmentLocAsync(ls).Result;//获取器具库位关系
var parts =_partService.GetEquipmentPartCodesAsync(ls).Result;//获取器具零件关系
//零件和器具关系校验
var partErrorQery = from itm in list
join itm1 in parts on
new { itm.EqptCode, PartCode = itm.PartCode } equals new { EqptCode = itm1.Code, PartCode = itm1.PartCode }
into temp
from tm in temp.DefaultIfEmpty()
where tm == null
select new EquipmentRecordErrorDTO()
{
EqptCode = itm.EqptCode,
PartCode = itm.PartCode,
Error = $"器具零件关系不存在!"
};
errors.AddRange(partErrorQery.ToList());
var query= await _repositoryCap.GetQueryableAsync().ConfigureAwait(false);
var capExistList= query.Where(p => ls.Contains(p.EqptCode)).ToList();//器具容量
var partialErrors2 = from itm in capExistList
join itm1 in list.ToList() on itm.EqptCode equals itm1.EqptCode
where itm.PartCode != itm.PartCode
select new EquipmentRecordErrorDTO() {
EqptCode = itm.EqptCode,PartCode=itm.PartCode ,Error=$"录入器具代码{itm.EqptCode}零件代码{itm.PartCode}与器具容量{itm1.EqptCode}零件代码{itm1.PartCode}不符!"
};
errors.AddRange(partialErrors2.ToList());//导入记录和容量记录零件不是同一零件
var existList = from itm in list
join itm1 in capExistList
on new { itm.EqptCode, itm.PartCode } equals new { itm1.EqptCode, itm1.PartCode }
select itm;
foreach (var itm in existList)
{
var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量
cap.Qty += itm.SumQty;//当前数量
if (cap.Qty > cap.StdQty)
{
errors.Add(new EquipmentRecordErrorDTO() { EqptCode=itm.EqptCode,PartCode=itm.PartCode,Error=$"超出容量限制!" });
}
}
if (errors.Count > 0)
{
return errors;
}
//新建器具容量
var newList =from itm in list
join itm1 in capExistList
on new { itm.EqptCode, itm.PartCode } equals new { itm1.EqptCode, itm1.PartCode }
into temp1
from tm1 in temp1.DefaultIfEmpty()
where tm1 == null
select itm;
List<EquipmentLocCap> newlocList=new List<EquipmentLocCap>();
foreach (var itm in newList)
{
var gpart = parts.FirstOrDefault(p => p.Code == itm.EqptCode && p.PartCode == itm.PartCode);
var stdQty = gpart.StdQty;//标包
var qty = itm.SumQty;
var cap = new EquipmentLocCap()
{
EqptCode=itm.EqptCode,
PartCode=itm.PartCode,
Percent=qty/stdQty,
Qty=qty,
StdQty=stdQty,
};
cap.SetId(GuidGenerator.Create());
newlocList.Add(cap);
}
//已存在器具容量变更
foreach (var itm in existList)
{
var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量
cap.Qty = cap.Qty+itm.SumQty;//当前数量
cap.Percent = cap.Qty / cap.StdQty;
}
foreach (var itm in p_ls)
{
itm.Type = EnumEquipmentRecordType.Bind;
itm.SetId(GuidGenerator.Create());
}
await _repositoryCap.InsertManyAsync(newlocList).ConfigureAwait(false);
await _repository.InsertManyAsync(p_ls).ConfigureAwait(false);
// var list= p_ls.GroupBy(p => new { p.EqptCode, p.PartCode }).Select(p=>new { EqptCode= p.Key.EqptCode, PartCode= p.Key.PartCode,SumQty=p.Sum(p=>p.Qty)});//导入零件
// var partialErrors1=list.GroupBy(p => p.EqptCode).Where(g =>g.Count()>1).Select(p => new EquipmentRecordErrorDTO() { EqptCode= p.Key,PartCode=string.Empty,Error=$"同器具代码有{p.Count().ToString()}种零件!" });
// errors.AddRange(partialErrors1.ToList());//同容器放不同零件校验
// var ls=p_ls.Select(p => p.EqptCode).Distinct().ToList();//录入的器具记录代码列表
// var Locs=_locService.GetEquipmentLocAsync(ls).Result;//获取器具库位关系
// var parts =_partService.GetEquipmentPartCodesAsync(ls).Result;//获取器具零件关系
// //零件和器具关系校验
// var partErrorQery = from itm in list
// join itm1 in parts on
// new { itm.EqptCode, PartCode = itm.PartCode } equals new { EqptCode = itm1.Code, PartCode = itm1.PartCode }
// into temp
// from tm in temp.DefaultIfEmpty()
// where tm == null
// select new EquipmentRecordErrorDTO()
// {
// EqptCode = itm.EqptCode,
// PartCode = itm.PartCode,
// Error = $"器具零件关系不存在!"
// };
// errors.AddRange(partErrorQery.ToList());
// var query= await _repositoryCap.GetQueryableAsync().ConfigureAwait(false);
// var capExistList= query.Where(p => ls.Contains(p.EqptCode)).ToList();//器具容量
// var partialErrors2 = from itm in capExistList
// join itm1 in list.ToList() on itm.EqptCode equals itm1.EqptCode
// where itm.PartCode != itm.PartCode
// select new EquipmentRecordErrorDTO() {
// EqptCode = itm.EqptCode,PartCode=itm.PartCode ,Error=$"录入器具代码{itm.EqptCode}零件代码{itm.PartCode}与器具容量{itm1.EqptCode}零件代码{itm1.PartCode}不符!"
// };
// errors.AddRange(partialErrors2.ToList());//导入记录和容量记录零件不是同一零件
// var existList = from itm in list
// join itm1 in capExistList
// on new { itm.EqptCode, itm.PartCode } equals new { itm1.EqptCode, itm1.PartCode }
// select itm;
// foreach (var itm in existList)
// {
// var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量
// cap.Qty += itm.SumQty;//当前数量
// if (cap.Qty > cap.StdQty)
// {
// errors.Add(new EquipmentRecordErrorDTO() { EqptCode=itm.EqptCode,PartCode=itm.PartCode,Error=$"超出容量限制!" });
// }
// }
// if (errors.Count > 0)
// {
// return errors;
// }
// //新建器具容量
//var newList =from itm in list
// join itm1 in capExistList
// on new { itm.EqptCode, itm.PartCode } equals new { itm1.EqptCode, itm1.PartCode }
// into temp1
// from tm1 in temp1.DefaultIfEmpty()
// where tm1 == null
// select itm;
// List<EquipmentLocCap> newlocList=new List<EquipmentLocCap>();
// foreach (var itm in newList)
// {
// var gpart = parts.FirstOrDefault(p => p.Code == itm.EqptCode && p.PartCode == itm.PartCode);
// var stdQty = gpart.StdQty;//标包
// var qty = itm.SumQty;
// var cap = new EquipmentLocCap()
// {
// EqptCode=itm.EqptCode,
// PartCode=itm.PartCode,
// Percent=qty/stdQty,
// Qty=qty,
// StdQty=stdQty,
// };
// cap.SetId(GuidGenerator.Create());
// newlocList.Add(cap);
// }
// //已存在器具容量变更
// foreach (var itm in existList)
// {
// var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量
// cap.Qty = cap.Qty+itm.SumQty;//当前数量
// cap.Percent = cap.Qty / cap.StdQty;
// }
// foreach (var itm in p_ls)
// {
// itm.Type = EnumEquipmentRecordType.Bind;
// itm.SetId(GuidGenerator.Create());
// }
// await _repositoryCap.InsertManyAsync(newlocList).ConfigureAwait(false);
// await _repository.InsertManyAsync(p_ls).ConfigureAwait(false);
return errors;
@ -143,68 +143,68 @@ public class EquipmentRecordManager : DomainService, IEquipmentRecordManager
public async Task<List<EquipmentRecordErrorDTO>> UnBind(List<EquipmentRecord> p_ls)
{
List<EquipmentRecordErrorDTO> errors = new List<EquipmentRecordErrorDTO>();
var list = p_ls.GroupBy(p => new { p.EqptCode, p.PartCode }).Select(p => new { EqptCode = p.Key.EqptCode, PartCode = p.Key.PartCode, SumQty = p.Sum(p => p.Qty) });//导入零件
var partialErrors1 = list.GroupBy(p => p.EqptCode).Where(g => g.Count() > 1).Select(p => new EquipmentRecordErrorDTO() { EqptCode = p.Key, PartCode = string.Empty, Error = $"同器具代码有{p.Count().ToString()}种零件!" });
errors.AddRange(partialErrors1.ToList());//同容器放不同零件校验
var ls = p_ls.Select(p => p.EqptCode).Distinct().ToList();//录入的器具记录代码列表
var Locs = _locService.GetEquipmentLocAsync(ls).Result;//获取器具库位关系
var parts = _partService.GetEquipmentPartCodesAsync(ls).Result;//获取器具零件关系
//零件和器具关系校验
var partErrorQery = from itm in list
join itm1 in parts on
new { itm.EqptCode, PartCode = itm.PartCode } equals new { EqptCode = itm1.Code, PartCode = itm1.PartCode }
into temp
from tm in temp.DefaultIfEmpty()
where tm == null
select new EquipmentRecordErrorDTO()
{
EqptCode = itm.EqptCode,
PartCode = itm.PartCode,
Error = $"器具零件关系不存在!"
};
errors.AddRange(partErrorQery.ToList());
var query = await _repositoryCap.GetQueryableAsync().ConfigureAwait(false);
var capExistList = query.Where(p => ls.Contains(p.EqptCode)).ToList();//器具容量
var partialErrors2 = from itm in capExistList
join itm1 in list.ToList() on itm.EqptCode equals itm1.EqptCode
where itm.PartCode != itm.PartCode
select new EquipmentRecordErrorDTO()
{
EqptCode = itm.EqptCode,
PartCode = itm.PartCode,
Error = $"录入器具代码{itm.EqptCode}零件代码{itm.PartCode}与器具容量{itm1.EqptCode}零件代码{itm1.PartCode}不符!"
};
errors.AddRange(partialErrors2.ToList());//导入记录和器具容量记录零件不是同一零件
var existList = from itm in list
join itm1 in capExistList
on new { itm.EqptCode, itm.PartCode } equals new { itm1.EqptCode, itm1.PartCode }
select itm;
foreach (var itm in existList)
{
var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量
cap.Qty =cap.Qty- itm.SumQty;//当前数量
if (cap.Qty <0)
{
errors.Add(new EquipmentRecordErrorDTO() { EqptCode = itm.EqptCode, PartCode = itm.PartCode, Error = $"解绑数量小0!" });
}
}
foreach (var itm in existList)
{
var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量
cap.Qty = cap.Qty - itm.SumQty;//当前数量
cap.Percent = cap.Qty / cap.StdQty;
}
foreach (var itm in p_ls)
{
itm.Type = EnumEquipmentRecordType.UnBind;
itm.SetId(GuidGenerator.Create());
}
await _repository.InsertManyAsync(p_ls).ConfigureAwait(false);
//var list = p_ls.GroupBy(p => new { p.EqptCode, p.PartCode }).Select(p => new { EqptCode = p.Key.EqptCode, PartCode = p.Key.PartCode, SumQty = p.Sum(p => p.Qty) });//导入零件
//var partialErrors1 = list.GroupBy(p => p.EqptCode).Where(g => g.Count() > 1).Select(p => new EquipmentRecordErrorDTO() { EqptCode = p.Key, PartCode = string.Empty, Error = $"同器具代码有{p.Count().ToString()}种零件!" });
//errors.AddRange(partialErrors1.ToList());//同容器放不同零件校验
//var ls = p_ls.Select(p => p.EqptCode).Distinct().ToList();//录入的器具记录代码列表
//var Locs = _locService.GetEquipmentLocAsync(ls).Result;//获取器具库位关系
//var parts = _partService.GetEquipmentPartCodesAsync(ls).Result;//获取器具零件关系
////零件和器具关系校验
//var partErrorQery = from itm in list
// join itm1 in parts on
// new { itm.EqptCode, PartCode = itm.PartCode } equals new { EqptCode = itm1.Code, PartCode = itm1.PartCode }
// into temp
// from tm in temp.DefaultIfEmpty()
// where tm == null
// select new EquipmentRecordErrorDTO()
// {
// EqptCode = itm.EqptCode,
// PartCode = itm.PartCode,
// Error = $"器具零件关系不存在!"
// };
//errors.AddRange(partErrorQery.ToList());
//var query = await _repositoryCap.GetQueryableAsync().ConfigureAwait(false);
//var capExistList = query.Where(p => ls.Contains(p.EqptCode)).ToList();//器具容量
//var partialErrors2 = from itm in capExistList
// join itm1 in list.ToList() on itm.EqptCode equals itm1.EqptCode
// where itm.PartCode != itm.PartCode
// select new EquipmentRecordErrorDTO()
// {
// EqptCode = itm.EqptCode,
// PartCode = itm.PartCode,
// Error = $"录入器具代码{itm.EqptCode}零件代码{itm.PartCode}与器具容量{itm1.EqptCode}零件代码{itm1.PartCode}不符!"
// };
//errors.AddRange(partialErrors2.ToList());//导入记录和器具容量记录零件不是同一零件
//var existList = from itm in list
// join itm1 in capExistList
// on new { itm.EqptCode, itm.PartCode } equals new { itm1.EqptCode, itm1.PartCode }
// select itm;
//foreach (var itm in existList)
//{
// var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量
// cap.Qty =cap.Qty- itm.SumQty;//当前数量
// if (cap.Qty <0)
// {
// errors.Add(new EquipmentRecordErrorDTO() { EqptCode = itm.EqptCode, PartCode = itm.PartCode, Error = $"解绑数量小0!" });
// }
//}
//foreach (var itm in existList)
//{
// var cap = capExistList.FirstOrDefault(p => p.EqptCode == itm.EqptCode && p.PartCode == itm.PartCode);//读取当前器具容量
// cap.Qty = cap.Qty - itm.SumQty;//当前数量
// cap.Percent = cap.Qty / cap.StdQty;
//}
//foreach (var itm in p_ls)
//{
// itm.Type = EnumEquipmentRecordType.UnBind;
// itm.SetId(GuidGenerator.Create());
//}
//await _repository.InsertManyAsync(p_ls).ConfigureAwait(false);

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Equipments/IEquipmentLocCapRepository.cs

@ -1,10 +0,0 @@
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.Domain;
public interface IEquipmentLocCapRepository : ISfsStoreRepositoryBase<EquipmentLocCap>, ISfsBulkRepositoryBase<EquipmentLocCap>
{
Task UpsertAsync(EquipmentLocCap newData);
}

32
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Equipments/EquipmentLocCapDbContextModelCreatingExtensions.cs

@ -1,32 +0,0 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
public static class EquipmentLocCapDbContextModelCreatingExtensions
{
public static void ConfigureEquipmentLocCap(this ModelBuilder builder, StoreModelBuilderConfigurationOptions options)
{
builder.Entity<EquipmentLocCap>(b =>
{
//Configure table & schema name
b.ToTable(options.TablePrefix + nameof(EquipmentLocCap), options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Configure Sfs base properties
b.ConfigureSfsStoreBase();
b.Property(q => q.EqptCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.PartCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.HasIndex(q => new { q.EqptCode });
});
}
}

23
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Equipments/EquipmentLocCapEfCoreRepository.cs

@ -1,23 +0,0 @@
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Equipments;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
public class EquipmentLocCapEfCoreRepository : SfsStoreEfCoreRepositoryBase<StoreDbContext, EquipmentLocCap>, IEquipmentLocCapRepository, ISfsBulkRepositoryBase<EquipmentLocCap>
{
public EquipmentLocCapEfCoreRepository(IDbContextProvider<StoreDbContext> dbContextProvider) : base(dbContextProvider)
{
}
public Task UpsertAsync(EquipmentLocCap newData)
{
throw new System.NotImplementedException();
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContextModelCreatingExtensions.cs

@ -30,7 +30,7 @@ public static class StoreDbContextModelCreatingExtensions
builder.ConfigureWorkOrder(options);
builder.ConfigureEquipmentRecord(options);
builder.ConfigureEquipmentLocCap(options);
//builder.ConfigureEquipmentLocCap(options);

Loading…
Cancel
Save