Browse Source

Merge branch 'dev_DY_CC' of http://dev.ccwin-in.com:3000/BoXu.Zheng/WZC2 into dev_DY_CC

dev_DY_CC
lvzb 1 year ago
parent
commit
7bd451451b
  1. 5
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs
  2. 58
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs
  3. 3
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs
  4. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/JisProductReceiptNotes/IJisProductReceiptNoteAppService.cs
  5. 61
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs
  6. 58
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDependentDetailDTO.cs
  7. 58
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDetailDTO.cs
  8. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/IKittingPackagingNoteAppService.cs
  9. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCheckInput.cs
  10. 101
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCreateRequestInput.cs
  11. 58
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteDetailInput.cs
  12. 82
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs
  13. 32
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteImportInput.cs
  14. 21
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/KittingPackagingNotePermissions.cs
  15. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/JisProductReceiptNotes/JisProductReceiptNoteAppService.cs
  16. 34
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs
  17. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAutoMapperProfile.cs
  18. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs
  19. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteManager.cs
  20. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteRepository.cs
  21. 31
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs
  22. 51
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs
  23. 40
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs
  24. 26
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteManager.cs
  25. 77
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs
  26. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteEfCoreRepository.cs
  27. 58
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs

5
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs

@ -32,9 +32,10 @@ public class InjectionIssueRequestController : AbpController
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost("")] [HttpPost("")]
public virtual async Task CreateAsync(InjectionIssueRequestEditInput input) public virtual async Task<ActionResult<InjectionIssueRequestDTO>> CreateAsync(InjectionIssueRequestEditInput input)
{ {
_ = await _injectionRequestAppService.CreateAsync(input).ConfigureAwait(false); var result = await _injectionRequestAppService.CreateAsync(input).ConfigureAwait(false);
return Ok(result);
} }
/// <summary> /// <summary>

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

@ -2,10 +2,8 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks; using System.Threading.Tasks;
using DocumentFormat.OpenXml.Spreadsheet;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Caching; using Volo.Abp.Caching;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
@ -27,12 +25,12 @@ public class BomAppService :
private new readonly IBomRepository _repository; private new readonly IBomRepository _repository;
private readonly IBomManager _bomManager; private readonly IBomManager _bomManager;
private List<BomComponent> _bomList = new();
public BomAppService(IBomRepository repository public BomAppService(IBomRepository repository
, IBomManager bomManager , IBomManager bomManager
, IDistributedCache<BomDTO> cache , IDistributedCache<BomDTO> cache
) : base(repository, cache) ) : base(repository, cache)
{ {
_repository = repository; _repository = repository;
@ -58,7 +56,8 @@ public class BomAppService :
[HttpGet("list/for-preparation-plan")] [HttpGet("list/for-preparation-plan")]
public virtual async Task<List<BomDTO>> GetPlanListAsync(string productItemCode, string mfgOp) 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); return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities);
} }
@ -66,15 +65,18 @@ public class BomAppService :
[HttpGet("list/for-backflush")] [HttpGet("list/for-backflush")]
public virtual async Task<List<BomDTO>> GetBackFlushListAsync(string productItemCode, string mfgOp) 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); return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities);
} }
[HttpGet("get-by-productitemcode-sbs")] [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); return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities);
} }
@ -99,6 +101,7 @@ public class BomAppService :
{ {
return await _bomManager.GetListOfComponentAsync(component).ConfigureAwait(false); return await _bomManager.GetListOfComponentAsync(component).ConfigureAwait(false);
} }
/// <summary> /// <summary>
/// 获取bomtree /// 获取bomtree
/// </summary> /// </summary>
@ -113,6 +116,7 @@ public class BomAppService :
return dtos; return dtos;
} }
/// <summary> /// <summary>
/// 获取所有子物料关系 /// 获取所有子物料关系
/// </summary> /// </summary>
@ -138,7 +142,8 @@ public class BomAppService :
if (entities.Count > 0) 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);
} }
} }
@ -155,7 +160,6 @@ public class BomAppService :
entity.ComponentQty = input.ComponentQty; entity.ComponentQty = input.ComponentQty;
await _repository.UpsertAsync(entity).ConfigureAwait(false); await _repository.UpsertAsync(entity).ConfigureAwait(false);
return;
} }
[HttpPost("upsert-interface")] [HttpPost("upsert-interface")]
@ -166,18 +170,18 @@ public class BomAppService :
entity.ComponentQty = input.ComponentQty; entity.ComponentQty = input.ComponentQty;
await _repository.UpsertAsyncByInterface(entity); await _repository.UpsertAsyncByInterface(entity);
return;
} }
[HttpPost("add-upsert-lsit")] [HttpPost("add-upsert-lsit")]
public virtual async Task AddOrUpsertListAsync(List<BomEditInput> inputs) public virtual async Task AddOrUpsertListAsync(List<BomEditInput> inputs)
{ {
List<Bom> entitys = new List<Bom>(); var entitys = new List<Bom>();
foreach (var input in inputs) 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) if (oldBom == null)
{ {
@ -195,14 +199,16 @@ public class BomAppService :
entitys.Add(oldBom); entitys.Add(oldBom);
} }
} }
await _repository.BulkMergeAsync(entitys).ConfigureAwait(false); 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 CheckProductAsync(importInput.Product, validationRresult).ConfigureAwait(false);
await base.CheckComponentAndComponentQtyAsync(importInput.Component, importInput.ComponentQty, validationRresult).ConfigureAwait(false); await CheckComponentAndComponentQtyAsync(importInput.Component, importInput.ComponentQty, validationRresult)
.ConfigureAwait(false);
} }
/// <summary> /// <summary>
@ -216,12 +222,11 @@ public class BomAppService :
{ {
var entities = await _bomManager.GetMaterialTotalQtyAsync(productCode, productNum).ConfigureAwait(false); var entities = await _bomManager.GetMaterialTotalQtyAsync(productCode, productNum).ConfigureAwait(false);
return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities); return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities);
} }
[HttpPost("get_bom_sublist")] [HttpPost("get_bom_sublist")]
public async Task<List<BomComponentDTO>> GetSubcomponentsRecursiveList(List<BomComponentDTO> p_lst,
public async Task<List<BomComponentDTO>> GetSubcomponentsRecursiveList(List<BomComponentDTO> p_lst, EnumBomSelectedType p_type EnumBomSelectedType p_type
) )
{ {
var entities = ObjectMapper.Map<List<BomComponentDTO>, List<BomComponent>>(p_lst); var entities = ObjectMapper.Map<List<BomComponentDTO>, List<BomComponent>>(p_lst);
@ -229,18 +234,5 @@ public class BomAppService :
var sublist = ObjectMapper.Map<List<BomComponent>, List<BomComponentDTO>>(list); var sublist = ObjectMapper.Map<List<BomComponent>, List<BomComponentDTO>>(list);
return sublist; return sublist;
} }
} }

3
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs

@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Caching; using Volo.Abp.Caching;
using Volo.Abp.Domain.Repositories;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
@ -48,7 +49,7 @@ public class ProductionLineAppService
[HttpPost("get-by-location")] [HttpPost("get-by-location")]
public virtual async Task<ProductionLineDTO> GetByLocationCodeAsync(string locationCode) public virtual async Task<ProductionLineDTO> GetByLocationCodeAsync(string locationCode)
{ {
var entity = await _repository.FindAsync(p => p.LocationCode == locationCode).ConfigureAwait(false); var entity = await _repository.FirstOrDefaultAsync(p => p.LocationCode == locationCode).ConfigureAwait(false);
if (entity == null) if (entity == null)
{ {
throw new UserFriendlyException($"【{locationCode}】库位不存在"); throw new UserFriendlyException($"【{locationCode}】库位不存在");

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; 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); 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] [Authorize]
[Route($"{StoreConsts.RootPath}jis-product-receipt-note")] [Route($"{StoreConsts.RootPath}jis-product-receipt-note")]
public class JisProductReceiptNoteAppService : public class JisProductReceiptNoteAppService :
SfsStoreWithDetailsAppServiceBase<JisProductReceiptNote, JisProductReceiptNoteDTO, SfsStoreRequestInputBase, JisProductReceiptNoteEditInput, SfsStoreWithDetailsAppServiceBase<
JisProductReceiptNoteDetail, JisProductReceiptNoteDetailDTO, SfsStoreRequestInputBase, JisProductReceiptNoteImportInput>, JisProductReceiptNote,
JisProductReceiptNoteDTO,
SfsStoreRequestInputBase,
JisProductReceiptNoteEditInput,
JisProductReceiptNoteDetail,
JisProductReceiptNoteDetailDTO,
SfsStoreRequestInputBase,
JisProductReceiptNoteImportInput>,
IJisProductReceiptNoteAppService 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();
}
}

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs

@ -42,6 +42,7 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<Inj
private readonly IAreaAppService _areaApp; private readonly IAreaAppService _areaApp;
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
private readonly IItemContainerAppService _itemContainerAppService;
private readonly IProductionLineAppService _productionLineAppService; private readonly IProductionLineAppService _productionLineAppService;
private readonly ITransactionTypeAppService _transactionTypeAppService; private readonly ITransactionTypeAppService _transactionTypeAppService;
@ -54,6 +55,7 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<Inj
IAreaAppService areaApp, IAreaAppService areaApp,
ILocationAppService locationAppService, ILocationAppService locationAppService,
IItemBasicAppService itemBasicAppService, IItemBasicAppService itemBasicAppService,
IItemContainerAppService itemContainerAppService,
IProductionLineAppService productionLineAppService, IProductionLineAppService productionLineAppService,
ITransactionTypeAppService transactionTypeAppService ITransactionTypeAppService transactionTypeAppService
) )
@ -64,8 +66,8 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<Inj
_areaApp = areaApp; _areaApp = areaApp;
_locationAppService = locationAppService; _locationAppService = locationAppService;
_itemBasicAppService = itemBasicAppService; _itemBasicAppService = itemBasicAppService;
_itemContainerAppService= itemContainerAppService;
_productionLineAppService = productionLineAppService; _productionLineAppService = productionLineAppService;
_transactionTypeAppService = transactionTypeAppService; _transactionTypeAppService = transactionTypeAppService;
} }
@ -106,8 +108,21 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase<Inj
detailInput.ItemDesc1 = itemBasicDto.Desc1; detailInput.ItemDesc1 = itemBasicDto.Desc1;
detailInput.ItemDesc2 = itemBasicDto.Desc2; detailInput.ItemDesc2 = itemBasicDto.Desc2;
detailInput.ItemName = itemBasicDto.Name; detailInput.ItemName = itemBasicDto.Name;
var itemContainerDto = await _itemContainerAppService.GetListByItemCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
if(itemContainerDto.Count>0)
{
detailInput.Uom = itemContainerDto[0].BasicUom;
detailInput.Qty = itemContainerDto[0].Qty;
detailInput.StdPackQty = itemBasicDto.StdPackQty;
}
else
{
detailInput.Uom = itemBasicDto.BasicUom; detailInput.Uom = itemBasicDto.BasicUom;
detailInput.StdPackQty = itemBasicDto.StdPackQty; detailInput.StdPackQty = itemBasicDto.StdPackQty;
detailInput.Qty = itemBasicDto.StdPackQty;
}
detailInput.Status = EnumStatus.Open; detailInput.Status = EnumStatus.Open;
//因为是刚创建的 所以发料数一定是0 //因为是刚创建的 所以发料数一定是0

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 : SfsStoreDetailEntityBase
{
/// <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)
{
}
}

58
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs

@ -249,6 +249,11 @@ public class InjectionIssueRequestEventHandler
var productionLineItemDto = var productionLineItemDto =
productionLineItemDtos.FirstOrDefault(p => p.ItemCode == injectionRequestDetail.ItemCode); productionLineItemDtos.FirstOrDefault(p => p.ItemCode == injectionRequestDetail.ItemCode);
if (productionLineItemDto == null)
{
throw new UserFriendlyException(
$"物品代码【{injectionRequestDetail.ItemCode}】在生产线【{productionLineDto.Code}】中没有对应的【生产线物品关系】");
}
var input = new RecommendBalanceRequestInput var input = new RecommendBalanceRequestInput
{ {
ItemCode = injectionRequestDetail.ItemCode, ItemCode = injectionRequestDetail.ItemCode,
@ -269,19 +274,9 @@ public class InjectionIssueRequestEventHandler
await BuildInjectionIssueJobDetailWithQtyTypeAsync(injectionRequestDetail, recommend, await BuildInjectionIssueJobDetailWithQtyTypeAsync(injectionRequestDetail, recommend,
toLocationGroupCode) toLocationGroupCode)
.ConfigureAwait(false); .ConfigureAwait(false);
if (injectionRequest.UseOnTheWayLocation)
{
//获取在途库
var locationDto = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT)
.ConfigureAwait(false);
detail.OnTheWayLocationCode = locationDto.Code;
}
jobDetails.Add(detail); jobDetails.Add(detail);
injectionRequestDetail.IssuedQty += recommend.Qty;
//await _injectionRequestManager.UpdateDetailsAsync(injectionRequest).ConfigureAwait(false);
} }
} }
@ -298,36 +293,63 @@ public class InjectionIssueRequestEventHandler
private async Task<InjectionIssueJobDetailInput> BuildInjectionIssueJobDetailWithQtyTypeAsync( private async Task<InjectionIssueJobDetailInput> BuildInjectionIssueJobDetailWithQtyTypeAsync(
InjectionIssueRequestDetail injectionRequestDetail, BalanceDTO balance, string toLocationGroupCode) InjectionIssueRequestDetail injectionRequestDetail, BalanceDTO balance, string toLocationGroupCode)
{ {
//ProductionLineDTO prodLine = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationGroupCode).ConfigureAwait(false); var detail = new InjectionIssueJobDetailInput();
var detail = ObjectMapper.Map<BalanceDTO, InjectionIssueJobDetailInput>(balance);
detail.RequestLocationCode = injectionRequestDetail.ToLocationCode; detail.RequestLocationCode = injectionRequestDetail.ToLocationCode;
detail.RequestLocationGroup=injectionRequestDetail.ToLocationGroup;
detail.RequestLocationArea = injectionRequestDetail.ToLocationArea;
detail.RequestLocationErpCode = injectionRequestDetail.ToLocationErpCode;
detail.RequestWarehouseCode=injectionRequestDetail.ToWarehouseCode;
detail.PositionCode = injectionRequestDetail.PositionCode; detail.PositionCode = injectionRequestDetail.PositionCode;
detail.RecommendType = injectionRequestDetail.RecommendType; detail.RecommendType = injectionRequestDetail.RecommendType;
detail.ProdLine = injectionRequestDetail.ToLocationCode;
detail.ItemCode = injectionRequestDetail.ItemCode;
detail.ItemName=injectionRequestDetail.ItemName;
detail.ItemDesc1=injectionRequestDetail.ItemDesc1;
detail.ItemDesc2 = injectionRequestDetail.ItemDesc2;
detail.StdPackQty = injectionRequestDetail.StdPackQty;
detail.RequestQty= injectionRequestDetail.Qty;
detail.Status = EnumInventoryStatus.OK;
detail.Uom = balance.Uom;
detail.RecommendFromPackingCode = balance.PackingCode; detail.RecommendFromPackingCode = balance.PackingCode;
detail.RecommendFromContainerCode = balance.ContainerCode; detail.RecommendFromContainerCode = balance.ContainerCode;
detail.RecommendFromLot = balance.Lot;
detail.RecommendFromQty = balance.Qty;
detail.RecommendFromSupplierBatch = balance.SupplierBatch; detail.RecommendFromSupplierBatch = balance.SupplierBatch;
detail.RecommendFromProduceDate = balance.ProduceDate; detail.RecommendFromProduceDate = balance.ProduceDate;
detail.RecommendFromExpireDate = balance.ExpireDate; detail.RecommendFromExpireDate = balance.ExpireDate;
detail.RecommendFromLot = balance.Lot;
detail.RecommendFromProduceDate = balance.ProduceDate; detail.RecommendFromProduceDate = balance.ProduceDate;
detail.RecommendFromArriveDate = balance.ArriveDate; detail.RecommendFromArriveDate = balance.ArriveDate;
detail.RecommendFromLocationArea = balance.LocationArea; detail.RecommendFromLocationArea = balance.LocationArea;
detail.RecommendFromLocationCode = balance.LocationCode; detail.RecommendFromLocationCode = balance.LocationCode;
detail.RecommendFromLocationErpCode = balance.LocationErpCode; detail.RecommendFromLocationErpCode = balance.LocationErpCode;
detail.RecommendFromLocationGroup = balance.LocationGroup; detail.RecommendFromLocationGroup = balance.LocationGroup;
detail.RecommendFromWarehouseCode = balance.WarehouseCode; detail.RecommendFromWarehouseCode = balance.WarehouseCode;
detail.RecommendFromQty = balance.Qty;
detail.Uom = balance.Uom; detail.RecommendToPackingCode = balance.PackingCode;
detail.RecommendToContainerCode = balance.ContainerCode;
detail.RecommendToLot = balance.Lot;
detail.RecommendToQty = balance.Qty;
detail.RecommendToSupplierBatch = balance.SupplierBatch;
detail.RecommendToProduceDate = balance.ProduceDate;
detail.RecommendToExpireDate = balance.ExpireDate;
detail.RecommendToProduceDate = balance.ProduceDate;
detail.RecommendToArriveDate = balance.ArriveDate;
detail.RecommendToLocationCode = injectionRequestDetail.ToLocationCode; detail.RecommendToLocationCode = injectionRequestDetail.ToLocationCode;
detail.RecommendToLocationErpCode = injectionRequestDetail.ToLocationErpCode; detail.RecommendToLocationErpCode = injectionRequestDetail.ToLocationErpCode;
detail.RecommendToLocationArea = injectionRequestDetail.ToLocationArea; detail.RecommendToLocationArea = injectionRequestDetail.ToLocationArea;
detail.RecommendToWarehouseCode = injectionRequestDetail.ToWarehouseCode; detail.RecommendToWarehouseCode = injectionRequestDetail.ToWarehouseCode;
detail.RecommendToLocationGroup = injectionRequestDetail.ToLocationGroup;
//detail.ProdLine = prodLine == null ? toLocationGroupCode : prodLine.Code;
detail.ProdLine = toLocationGroupCode;
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
return detail; return detail;
} }

Loading…
Cancel
Save