Browse Source

zheng代码提交

dev_DY_CC
郑勃旭 1 year ago
parent
commit
960f534812
  1. 88
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs
  2. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/JisProductReceiptNotes/IJisProductReceiptNoteAppService.cs
  3. 61
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs
  4. 58
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDependentDetailDTO.cs
  5. 58
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDetailDTO.cs
  6. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/IKittingPackagingNoteAppService.cs
  7. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCheckInput.cs
  8. 101
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCreateRequestInput.cs
  9. 58
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteDetailInput.cs
  10. 82
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs
  11. 32
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteImportInput.cs
  12. 21
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/KittingPackagingNotePermissions.cs
  13. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/JisProductReceiptNotes/JisProductReceiptNoteAppService.cs
  14. 34
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs
  15. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAutoMapperProfile.cs
  16. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteManager.cs
  17. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteRepository.cs
  18. 31
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs
  19. 51
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs
  20. 40
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs
  21. 26
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteManager.cs
  22. 77
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs
  23. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteEfCoreRepository.cs

88
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs

@ -2,10 +2,8 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Spreadsheet;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Caching;
using Volo.Abp.Domain.Repositories;
using Win_in.Sfs.Basedata.Application.Contracts;
@ -25,31 +23,21 @@ public class BomAppService :
private new readonly IBomRepository _repository;
private readonly IBomManager _bomManager;
List<BomComponent> _bomList=new List<BomComponent>();
private List<BomComponent> _bomList = new();
public BomAppService(IBomRepository repository
, IBomManager bomManager
, IDistributedCache<BomDTO> cache
) : base(repository, cache)
) : base(repository, cache)
{
_repository = repository;
_bomManager = bomManager;
base.CreatePolicyName = BomPermissions.Create;
base.UpdatePolicyName = BomPermissions.Update;
base.DeletePolicyName = BomPermissions.Delete;
}
#region Get
[HttpGet("get-by-productitemcode")]
@ -57,7 +45,7 @@ public class BomAppService :
public virtual async Task<List<BomDTO>> GetListAsync(string productItemCode, string mfgOp)
{
var entities = await _repository.GetListAsync(p => p.Product == productItemCode
// && p.MFGOp == mfgOp
// && p.MFGOp == mfgOp
).ConfigureAwait(false);
return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities);
}
@ -65,7 +53,8 @@ public class BomAppService :
[HttpGet("list/for-preparation-plan")]
public virtual async Task<List<BomDTO>> GetPlanListAsync(string productItemCode, string mfgOp)
{
var entities = await _bomManager.GetListWithPhantomItemAsync(productItemCode, mfgOp, Clock.Now, true).ConfigureAwait(false);
var entities = await _bomManager.GetListWithPhantomItemAsync(productItemCode, mfgOp, Clock.Now, true)
.ConfigureAwait(false);
return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities);
}
@ -73,20 +62,23 @@ public class BomAppService :
[HttpGet("list/for-backflush")]
public virtual async Task<List<BomDTO>> GetBackFlushListAsync(string productItemCode, string mfgOp)
{
var entities = await _bomManager.GetListWithPhantomItemAsync(productItemCode, mfgOp, Clock.Now, false).ConfigureAwait(false);
var entities = await _bomManager.GetListWithPhantomItemAsync(productItemCode, mfgOp, Clock.Now, false)
.ConfigureAwait(false);
return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities);
}
[HttpGet("get-by-productitemcode-sbs")]
public virtual async Task<List<BomDTO>> GetBomStepByStepAsync(string productItemCode, DateTime validTime, bool isStepByStep = true)
public virtual async Task<List<BomDTO>> GetBomStepByStepAsync(string productItemCode, DateTime validTime,
bool isStepByStep = true)
{
var entities = await _bomManager.GetRecursiveListAsync(productItemCode, validTime, isStepByStep).ConfigureAwait(false);
var entities = await _bomManager.GetRecursiveListAsync(productItemCode, validTime, isStepByStep)
.ConfigureAwait(false);
return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities);
}
/// <summary>
/// 所有子物料号
/// 所有子物料号
/// </summary>
/// <param name="product"></param>
/// <returns></returns>
@ -97,7 +89,7 @@ public class BomAppService :
}
/// <summary>
/// 所有父物料号
/// 所有父物料号
/// </summary>
/// <param name="component"></param>
/// <returns></returns>
@ -106,8 +98,9 @@ public class BomAppService :
{
return await _bomManager.GetListOfComponentAsync(component).ConfigureAwait(false);
}
/// <summary>
/// 获取bomtree
/// 获取bomtree
/// </summary>
/// <param name="productCode"></param>
/// <returns></returns>
@ -120,8 +113,9 @@ public class BomAppService :
return dtos;
}
/// <summary>
/// 获取所有子物料关系
/// 获取所有子物料关系
/// </summary>
/// <param name="component"></param>
/// <returns></returns>
@ -141,11 +135,12 @@ public class BomAppService :
foreach (var dto in dtos)
{
var entities = (await _bomManager.GetListOfProductAsync(dto.Component).ConfigureAwait(false))
.FindAll(t => t.Component != dto.Component);
.FindAll(t => t.Component != dto.Component);
if (entities.Count > 0)
{
dto.ComponentDTOs = await GetChildBomsAsync(ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities)).ConfigureAwait(false);
dto.ComponentDTOs = await GetChildBomsAsync(ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities))
.ConfigureAwait(false);
}
}
@ -162,7 +157,6 @@ public class BomAppService :
entity.ComponentQty = input.ComponentQty;
await _repository.UpsertAsync(entity).ConfigureAwait(false);
return;
}
[HttpPost("upsert-interface")]
@ -173,18 +167,18 @@ public class BomAppService :
entity.ComponentQty = input.ComponentQty;
await _repository.UpsertAsyncByInterface(entity);
return;
}
[HttpPost("add-upsert-lsit")]
public virtual async Task AddOrUpsertListAsync(List<BomEditInput> inputs)
{
List<Bom> entitys = new List<Bom>();
var entitys = new List<Bom>();
foreach (var input in inputs)
{
var oldBom = await _repository.FirstOrDefaultAsync(t => t.Product == input.Product && t.Component == input.Component).ConfigureAwait(false);
var oldBom = await _repository
.FirstOrDefaultAsync(t => t.Product == input.Product && t.Component == input.Component)
.ConfigureAwait(false);
if (oldBom == null)
{
@ -202,18 +196,20 @@ public class BomAppService :
entitys.Add(oldBom);
}
}
await _repository.BulkMergeAsync(entitys).ConfigureAwait(false);
return;
}
protected override async Task ValidateImportModelAsync(BomImportInput importInput, List<ValidationResult> validationRresult)
protected override async Task ValidateImportModelAsync(BomImportInput importInput,
List<ValidationResult> validationRresult)
{
await base.CheckProductAsync(importInput.Product, validationRresult).ConfigureAwait(false);
await base.CheckComponentAndComponentQtyAsync(importInput.Component, importInput.ComponentQty, validationRresult).ConfigureAwait(false);
await CheckProductAsync(importInput.Product, validationRresult).ConfigureAwait(false);
await CheckComponentAndComponentQtyAsync(importInput.Component, importInput.ComponentQty, validationRresult)
.ConfigureAwait(false);
}
/// <summary>
/// 根据总成号、总成数量取所有子物料及其汇总数量
/// 根据总成号、总成数量取所有子物料及其汇总数量
/// </summary>
/// <param name="productCode">总成号</param>
/// <param name="productNum">总成数量</param>
@ -223,31 +219,17 @@ public class BomAppService :
{
var entities = await _bomManager.GetMaterialTotalQtyAsync(productCode, productNum).ConfigureAwait(false);
return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities);
}
[HttpPost("get_bom_sublist")]
public async Task<List<BomComponentDTO>> GetSubcomponentsRecursiveList(List<BomComponentDTO> p_lst, EnumBomSelectedType p_type
public async Task<List<BomComponentDTO>> GetSubcomponentsRecursiveList(List<BomComponentDTO> p_lst,
EnumBomSelectedType p_type
)
{
var entities=ObjectMapper.Map<List<BomComponentDTO>, List<BomComponent>>(p_lst);
var list=await _bomManager.GetSubcomponentsRecursiveList(entities, p_type).ConfigureAwait(false);
var entities = ObjectMapper.Map<List<BomComponentDTO>, List<BomComponent>>(p_lst);
var list = await _bomManager.GetSubcomponentsRecursiveList(entities, p_type).ConfigureAwait(false);
var sublist = ObjectMapper.Map<List<BomComponent>, List<BomComponentDTO>>(list);
return sublist;
}
}

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/JisProductReceiptNotes/IJisProductReceiptNoteAppService.cs

@ -2,7 +2,12 @@ using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface IJisProductReceiptNoteAppService : ISfsStoreMasterReadOnlyAppServiceBase<JisProductReceiptNoteDTO, SfsStoreRequestInputBase, JisProductReceiptNoteDetailDTO, SfsStoreRequestInputBase>
public interface IJisProductReceiptNoteAppService :
ISfsStoreMasterReadOnlyAppServiceBase<
JisProductReceiptNoteDTO,
SfsStoreRequestInputBase,
JisProductReceiptNoteDetailDTO,
SfsStoreRequestInputBase>
{
Task<JisProductReceiptNoteDTO> CreateAsync(JisProductReceiptNoteEditInput input);
}

61
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs

@ -0,0 +1,61 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
[Display(Name = "盘点任务")]
public class KittingPackagingNoteDTO : SfsJobDTOBase<KittingPackagingNoteDetailDTO>
{
/// <summary>
/// 生产计划号
/// </summary>
[Display(Name = "盘点计划号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string CountPlanNumber { get; set; }
/// <summary>
/// 盘点阶段
/// </summary>
[Display(Name = "盘点阶段")]
public EnumCountStage CountStage { get; set; }
/// <summary>
/// 盘点方式
/// </summary>
[Display(Name = "盘点方式")]
public EnumCountMethod CountMethod { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "盘点类型")]
public EnumCountType Type { get; set; }
/// <summary>
/// 描述
/// </summary>
[Display(Name = "描述")]
public string Description { get; set; }
/// <summary>
/// 物料代码
/// </summary>
[Display(Name = "物料代码")]
public string ItemCode { get; set; }
/// <summary>
/// 库位代码
/// </summary>
[Display(Name = "库位代码")]
public string LocationCode { get; set; }
/// <summary>
/// 任务从表明细(记录每次扫得明细)
/// </summary>
public List<KittingPackagingNoteDependentDetailDTO> DepDetails { get; set; }
}

58
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDependentDetailDTO.cs

@ -0,0 +1,58 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class KittingPackagingNoteDependentDetailDTO : SfsJobDetailDTOBase, IHasCountResult
{
/// <summary>
/// 盘点标签
/// </summary>
[Display(Name = "盘点标签")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string CountLabel { get; set; }
/// <summary>
/// 计量单位
/// </summary>
[Display(Name = "计量单位")]
public string Uom { get; set; }
/// <summary>
/// 库存数量
/// </summary>
[Display(Name = "库存数量")]
public decimal InventoryQty { get; set; }
/// <summary>
/// 库存库位
/// </summary>
[Display(Name = "库存库位")]
public string InventoryLocationCode { get; set; }
/// <summary>
/// 盘点数量
/// </summary>
[Display(Name = "盘点数量")]
public decimal CountQty { get; set; }
/// <summary>
/// 盘点时间
/// </summary>
[Display(Name = "盘点时间")]
public DateTime? CountTime { get; set; }
/// <summary>
/// 盘点操作员
/// </summary>
[Display(Name = "盘点操作员")]
public string CountOperator { get; set; }
/// <summary>
/// 盘点描述
/// </summary>
[Display(Name = "盘点描述")]
public string CountDescription { get; set; }
}

58
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDetailDTO.cs

@ -0,0 +1,58 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class KittingPackagingNoteDetailDTO : SfsJobDetailDTOBase, IHasCountResult
{
/// <summary>
/// 盘点标签
/// </summary>
[Display(Name = "盘点标签")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string CountLabel { get; set; }
/// <summary>
/// 计量单位
/// </summary>
[Display(Name = "计量单位")]
public string Uom { get; set; }
/// <summary>
/// 库存数量
/// </summary>
[Display(Name = "库存数量")]
public decimal InventoryQty { get; set; }
/// <summary>
/// 库存库位
/// </summary>
[Display(Name = "库存库位")]
public string InventoryLocationCode { get; set; }
/// <summary>
/// 盘点数量
/// </summary>
[Display(Name = "盘点数量")]
public decimal CountQty { get; set; }
/// <summary>
/// 盘点时间
/// </summary>
[Display(Name = "盘点时间")]
public DateTime? CountTime { get; set; }
/// <summary>
/// 盘点操作员
/// </summary>
[Display(Name = "盘点操作员")]
public string CountOperator { get; set; }
/// <summary>
/// 盘点描述
/// </summary>
[Display(Name = "盘点描述")]
public string CountDescription { get; set; }
}

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/IKittingPackagingNoteAppService.cs

@ -0,0 +1,10 @@
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface IKittingPackagingNoteAppService :
ISfsStoreMasterReadOnlyAppServiceBase<
KittingPackagingNoteDTO,
SfsStoreRequestInputBase,
KittingPackagingNoteDetailDTO,
SfsStoreRequestInputBase>
{
}

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCheckInput.cs

@ -0,0 +1,6 @@
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class KittingPackagingNoteCheckInput : SfsJobCheckInputBase
{
}

101
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCreateRequestInput.cs

@ -0,0 +1,101 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
/// 查询条件 DTO
/// </summary>
public class KittingPackagingNoteCreateRequestInput
{
/// <summary>
/// 盘点方式
/// </summary>
[Display(Name = "盘点方式")]
public EnumCountMethod CountMethod { get; set; }
/// <summary>
/// 描述
/// </summary>
[Display(Name = "描述")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Description { get; set; }
/// <summary>
/// 盘点执行形式
/// </summary>
[Display(Name = "盘点执行形式")]
public CountPlanRequestType RequestType { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "盘点类型")]
public EnumCountType Type { get; set; }
/// <summary>
/// 零件条件集合
/// </summary>
[Display(Name = "零件条件集合")]
public List<string> PartCondition { get; set; } = new();
/// <summary>
/// 库位条件集合
/// </summary>
[Display(Name = "库位条件集合")]
public List<string> LocCondition { get; set; } = new();
/// <summary>
/// 状态
/// </summary>
[Display(Name = "状态")]
public List<EnumInventoryStatus> StatusList { get; set; }
/// <summary>
/// 操作员
/// </summary>
[Display(Name = "操作员")]
//[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string Worker { get; set; }
/// <summary>
/// 仓库
/// </summary>
[Display(Name = "仓库")]
//[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string WarehouseCode { get; set; }
/// <summary>
/// 备注
/// </summary>
[Display(Name = "备注")]
public string Remark { get; set; }
/// <summary>
/// 盘点阶段
/// </summary>
[Display(Name = "盘点阶段")]
public EnumCountStage CountStage { get; set; } = EnumCountStage.Circulate;
/// <summary>
/// 盘点的零件集合
/// </summary>
[Display(Name = "盘点的零件集合")]
public string JsonItemCodes { get; set; }
/// <summary>
/// 盘点的库位集合
/// </summary>
[Display(Name = "盘点的库位集合")]
public string JsonLocationCodes { get; set; }
/// <summary>
/// 盘点的库存状态集合
/// </summary>
[Display(Name = "盘点的库存状态集合")]
public string JsonInventoryStatus { get; set; }
}

58
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteDetailInput.cs

@ -0,0 +1,58 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class KittingPackagingNoteDetailInput : SfsJobDetailInputBase, IHasCountResult
{
/// <summary>
/// 盘点标签
/// </summary>
[Display(Name = "盘点标签")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string CountLabel { get; set; }
/// <summary>
/// 计量单位
/// </summary>
[Display(Name = "计量单位")]
public string Uom { get; set; }
/// <summary>
/// 库存数量
/// </summary>
[Display(Name = "库存数量")]
public decimal InventoryQty { get; set; }
/// <summary>
/// 库存库位
/// </summary>
[Display(Name = "库存库位")]
public string InventoryLocationCode { get; set; }
/// <summary>
/// 盘点数量
/// </summary>
[Display(Name = "盘点数量")]
public decimal CountQty { get; set; }
/// <summary>
/// 盘点时间
/// </summary>
[Display(Name = "盘点时间")]
public DateTime? CountTime { get; set; }
/// <summary>
/// 盘点操作员
/// </summary>
[Display(Name = "盘点操作员")]
public string CountOperator { get; set; }
/// <summary>
/// 盘点描述
/// </summary>
[Display(Name = "盘点描述")]
public string CountDescription { get; set; }
}

82
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs

@ -0,0 +1,82 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class KittingPackagingNoteEditInput : SfsJobCreateUpdateInputBase, ISfsJobCreateInput<KittingPackagingNoteDetailInput>
{
#region Base
/// <summary>
/// 盘点方式
/// </summary>
[Display(Name = "盘点方式")]
public EnumCountMethod CountMethod { get; set; }
/// <summary>
/// 类型
/// </summary>
[Display(Name = "盘点类型")]
public EnumCountType Type { get; set; }
/// <summary>
/// 描述
/// </summary>
[Display(Name = "描述")]
public string Description { get; set; }
/// <summary>
/// 物料代码
/// </summary>
[Display(Name = "物料代码")]
public string ItemCode { get; set; }
/// <summary>
/// 库位代码
/// </summary>
[Display(Name = "库位代码")]
public string LocationCode { get; set; }
#endregion
#region Create
/// <summary>
/// 上游任务编号
/// </summary>
[Display(Name = "上游任务编号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string UpStreamJobNumber { get; set; }
/// <summary>
/// 盘点计划号
/// </summary>
[Display(Name = "盘点计划号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string CountPlanNumber { get; set; }
/// <summary>
/// 盘点阶段
/// </summary>
[Display(Name = "盘点阶段")]
public EnumCountStage CountStage { get; set; }
/// <summary>
/// 任务类型
/// </summary>
[Display(Name = "任务类型")]
public EnumJobType JobType { get; set; }
/// <summary>
/// 是否自动完成
/// </summary>
[Display(Name = "是否自动完成")]
public bool IsAutoComplete { get; set; }
/// <summary>
/// 任务明细
/// </summary>
[Display(Name = "任务明细")]
public List<KittingPackagingNoteDetailInput> Details { get; set; }
#endregion
}

32
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteImportInput.cs

@ -0,0 +1,32 @@
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class KittingPackagingNoteImportInput : SfsStoreImportInputBase
{
/// <summary>
/// 盘点任务单号
/// </summary>
[Display(Name = "盘点任务单号")]
public string CountJobNumber { get; set; }
/// <summary>
/// 盘点计划单号
/// </summary>
[Display(Name = "盘点计划单号")]
public string CountPlanNumber { get; set; }
/// <summary>
/// 调整类型
/// </summary>
[Display(Name = "调整类型")]
public string Type { get; set; }
/// <summary>
/// 是否已经调整
/// </summary>
[Display(Name = "是否已经调整")]
[Required(ErrorMessage = "{0}是必填项")]
public bool IsAdjusted { get; set; } = false;
}

21
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/KittingPackagingNotePermissions.cs

@ -0,0 +1,21 @@
using Volo.Abp.Authorization.Permissions;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public static class KittingPackagingNotePermissions
{
public const string Default = StorePermissions.GroupName + "." + nameof(KittingPackagingNote);
public const string Create = Default + "." + StorePermissions.CreateStr;
public const string Update = Default + "." + StorePermissions.UpdateStr;
public const string Delete = Default + "." + StorePermissions.DeleteStr;
public static void AddKittingPackagingNotePermission(this PermissionGroupDefinition permissionGroup)
{
var countJobPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(KittingPackagingNote)));
countJobPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
countJobPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
countJobPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
}
}

11
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/JisProductReceiptNotes/JisProductReceiptNoteAppService.cs

@ -10,8 +10,15 @@ namespace Win_in.Sfs.Wms.Store.Application;
[Authorize]
[Route($"{StoreConsts.RootPath}jis-product-receipt-note")]
public class JisProductReceiptNoteAppService :
SfsStoreWithDetailsAppServiceBase<JisProductReceiptNote, JisProductReceiptNoteDTO, SfsStoreRequestInputBase, JisProductReceiptNoteEditInput,
JisProductReceiptNoteDetail, JisProductReceiptNoteDetailDTO, SfsStoreRequestInputBase, JisProductReceiptNoteImportInput>,
SfsStoreWithDetailsAppServiceBase<
JisProductReceiptNote,
JisProductReceiptNoteDTO,
SfsStoreRequestInputBase,
JisProductReceiptNoteEditInput,
JisProductReceiptNoteDetail,
JisProductReceiptNoteDetailDTO,
SfsStoreRequestInputBase,
JisProductReceiptNoteImportInput>,
IJisProductReceiptNoteAppService
{

34
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs

@ -0,0 +1,34 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application;
/// <summary>
/// 盘点接口
/// </summary>
[Authorize]
[Route($"{StoreConsts.RootPath}KittingPackagingNote")]
public class KittingPackagingNoteAppService
: SfsStoreWithDetailsAppServiceBase<
KittingPackagingNote,
KittingPackagingNoteDTO,
SfsStoreRequestInputBase,
KittingPackagingNoteEditInput,
KittingPackagingNoteDetail,
KittingPackagingNoteDetailDTO,
SfsStoreRequestInputBase,
KittingPackagingNoteImportInput>, IKittingPackagingNoteAppService
{
private readonly IKittingPackagingNoteManager _kittingPackagingNoteManager;
public KittingPackagingNoteAppService(
IKittingPackagingNoteRepository repository,
IJisProductReceiptNoteManager KittingPackagingNoteManager,
IKittingPackagingNoteManager kittingPackagingNoteManager) : base(repository)
{
_kittingPackagingNoteManager = kittingPackagingNoteManager;
}
}

15
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAutoMapperProfile.cs

@ -0,0 +1,15 @@
using AutoMapper;
using Volo.Abp.AutoMapper;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Application;
public partial class StoreApplicationAutoMapperProfile : Profile
{
private void KittingPackagingNoteAutoMapperProfile()
{
CreateMap<KittingPackagingNote, KittingPackagingNoteDTO>()
.ReverseMap();
}
}

11
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteManager.cs

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain;
public interface IKittingPackagingNoteManager : ISfsStoreManager<KittingPackagingNote, KittingPackagingNoteDetail>
{
}

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteRepository.cs

@ -0,0 +1,6 @@
namespace Win_in.Sfs.Wms.Store.Domain;
public interface IKittingPackagingNoteRepository : ISfsStoreRepositoryBase<KittingPackagingNote>
{
}

31
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Entities;
namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary>
/// kitting打包记录
/// </summary>
[Display(Name = "kitting打包记录")]
public class KittingPackagingNote : SfsStoreAggregateRootBase<KittingPackagingNoteDetail>
{
/// <summary>
/// kitting代码
/// </summary>
[Display(Name = "Kitting代码")]
public string KittingCode { get; set; }
/// <summary>
/// 任务明细
/// </summary>
[IgnoreUpdate]
public override List<KittingPackagingNoteDetail> Details { get; set; } = new();
/// <summary>
/// 任务从表明细(记录每次扫得明细)
/// </summary>
[IgnoreUpdate]
public List<KittingPackagingNoteChassisDetail> DepDetails { get; set; } = new();
}

51
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs

@ -0,0 +1,51 @@
using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Domain;
public class KittingPackagingNoteChassisDetail : SfsJobDetailEntityBase, IHasCountResult, IHasInventoryQty
{
/// <summary>
/// 盘点标签
/// </summary>
public string CountLabel { get; set; }
/// <summary>
/// 库存数量
/// </summary>
public decimal InventoryQty { get; set; }
/// <summary>
/// 计量单位
/// </summary>
[Display(Name = "计量单位")]
public string Uom { get; set; }
/// <summary>
/// 库存库位
/// </summary>
public string InventoryLocationCode { get; set; }
/// <summary>
/// 盘点数量(每次扫得数量)
/// </summary>
public decimal CountQty { get; set; }
/// <summary>
/// 盘点时间
/// </summary>
public DateTime? CountTime { get; set; }
/// <summary>
/// 盘点操作员
/// </summary>
public string CountOperator { get; set; }
/// <summary>
/// 盘点描述
/// </summary>
public string CountDescription { get; set; }
}

40
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs

@ -0,0 +1,40 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Entities;
namespace Win_in.Sfs.Wms.Store.Domain;
public class KittingPackagingNoteDetail : SfsDetailEntityBase
{
/// <summary>
/// 物品代码
/// </summary>
[Display(Name = "物品代码")]
[Required(ErrorMessage = "{0}是必填项")]
[IgnoreUpdate]
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
[Display(Name = "物品名称")]
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
[Display(Name = "物品描述1")]
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
[Display(Name = "物品描述2")]
public string ItemDesc2 { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
}

26
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteManager.cs

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Users;
using Volo.Abp.Validation;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Domain;
public class KittingPackagingNoteManager : SfsStoreManagerBase<KittingPackagingNote, KittingPackagingNoteDetail>,
IKittingPackagingNoteManager
{
public KittingPackagingNoteManager(
IKittingPackagingNoteRepository repository
) : base(repository)
{
}
}

77
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs

@ -0,0 +1,77 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.EntityFrameworkCore;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
public static class KittingPackagingNoteDbContextModelCreatingExtensions
{
public static void ConfigureKittingPackagingNote(this ModelBuilder builder, StoreModelBuilderConfigurationOptions options)
{
builder.Entity<KittingPackagingNote>(b =>
{
//Configure table & schema name
b.ToTable(StoreDbProperties.JobDbTablePrefix + nameof(KittingPackagingNote), options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Configure Sfs base properties
b.ConfigureSfsBase();
//Properties
b.Property(q => q.KittingCode).HasMaxLength(SfsPropertyConst.CodeLength);
//Relations
b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired();
b.HasMany(q => q.DepDetails).WithOne().HasForeignKey(d => d.MasterID).IsRequired();
//Indexes
b.HasIndex(q => new { q.Number }).IsUnique();
});
builder.Entity<KittingPackagingNoteDetail>(b =>
{
//Configure table & schema name
b.ToTable(StoreDbProperties.JobDbTablePrefix + nameof(KittingPackagingNoteDetail), options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Configure Sfs base properties
b.ConfigureSfsBase();
//Configure Job base properties
b.ConfigureSfsStoreDetailBase();
//Properties
b.Property(q => q.CountLabel).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.InventoryLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.CountOperator).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.CountDescription).HasMaxLength(SfsPropertyConst.CodeLength);
//Relations
//None
//Indexes
//b.HasIndex(q => new { q.PackingCode }).IsUnique();
});
builder.Entity<KittingPackagingNoteChassisDetail>(b =>
{
//Configure table & schema name
b.ToTable(StoreDbProperties.JobDbTablePrefix + nameof(KittingPackagingNoteChassisDetail), options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Configure Sfs base properties
b.ConfigureSfsBase();
//Configure Job base properties
b.ConfigureJobDetail();
//Properties
b.Property(q => q.CountLabel).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.InventoryLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.CountOperator).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.CountDescription).HasMaxLength(SfsPropertyConst.CodeLength);
//Relations
//None
//Indexes
//b.HasIndex(q => new { q.PackingCode }).IsUnique();
});
}
}

11
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteEfCoreRepository.cs

@ -0,0 +1,11 @@
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
public class KittingPackagingNoteEfCoreRepository : SfsJobEfCoreRepositoryBase<StoreDbContext, KittingPackagingNote>, IKittingPackagingNoteRepository
{
public KittingPackagingNoteEfCoreRepository(IDbContextProvider<StoreDbContext> dbContextProvider) : base(dbContextProvider)
{
}
}
Loading…
Cancel
Save