From af08db0b1fb86034f0ce8007b58a18acdadd6096 Mon Sep 17 00:00:00 2001
From: zhouhongjun <565221961@qq.com>
Date: Fri, 19 Apr 2024 16:16:50 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E6=B3=A8=E5=A1=91=E5=8F=91=E6=96=99?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Stores/InjectionRequestController.cs | 5 +-
.../ProductionLineAppService.cs | 3 +-
.../InjectionIssueRequestAppService.cs | 23 +++++--
.../InjectionIssueRequestEventHandler.cs | 62 +++++++++++++------
4 files changed, 66 insertions(+), 27 deletions(-)
diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs
index 4a67b9616..9c2c3045b 100644
--- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs
@@ -32,9 +32,10 @@ public class InjectionIssueRequestController : AbpController
///
///
[HttpPost("")]
- public virtual async Task CreateAsync(InjectionIssueRequestEditInput input)
+ public virtual async Task> CreateAsync(InjectionIssueRequestEditInput input)
{
- _ = await _injectionRequestAppService.CreateAsync(input).ConfigureAwait(false);
+ var result = await _injectionRequestAppService.CreateAsync(input).ConfigureAwait(false);
+ return Ok(result);
}
///
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs
index 188bfb5f4..3bb63cb76 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs
+++ b/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 Volo.Abp;
using Volo.Abp.Caching;
+using Volo.Abp.Domain.Repositories;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared;
@@ -48,7 +49,7 @@ public class ProductionLineAppService
[HttpPost("get-by-location")]
public virtual async Task 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)
{
throw new UserFriendlyException($"【{locationCode}】库位不存在");
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs
index 8a87550c5..b998f6bbc 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs
@@ -42,6 +42,7 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase0)
+ {
+ detailInput.Uom = itemContainerDto[0].BasicUom;
+ detailInput.Qty = itemContainerDto[0].Qty;
+ detailInput.StdPackQty = itemBasicDto.StdPackQty;
+ }
+ else
+ {
+ detailInput.Uom = itemBasicDto.BasicUom;
+ detailInput.StdPackQty = itemBasicDto.StdPackQty;
+ detailInput.Qty = itemBasicDto.StdPackQty;
+ }
+
detailInput.Status = EnumStatus.Open;
//因为是刚创建的 所以发料数一定是0
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs
index deb859cb5..29927219a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs
@@ -249,6 +249,11 @@ public class InjectionIssueRequestEventHandler
var productionLineItemDto =
productionLineItemDtos.FirstOrDefault(p => p.ItemCode == injectionRequestDetail.ItemCode);
+ if (productionLineItemDto == null)
+ {
+ throw new UserFriendlyException(
+ $"物品代码【{injectionRequestDetail.ItemCode}】在生产线【{productionLineDto.Code}】中没有对应的【生产线物品关系】");
+ }
var input = new RecommendBalanceRequestInput
{
ItemCode = injectionRequestDetail.ItemCode,
@@ -268,20 +273,10 @@ public class InjectionIssueRequestEventHandler
var detail =
await BuildInjectionIssueJobDetailWithQtyTypeAsync(injectionRequestDetail, recommend,
toLocationGroupCode)
- .ConfigureAwait(false);
- if (injectionRequest.UseOnTheWayLocation)
- {
- //获取在途库
- var locationDto = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT)
- .ConfigureAwait(false);
-
- detail.OnTheWayLocationCode = locationDto.Code;
- }
+ .ConfigureAwait(false);
jobDetails.Add(detail);
- injectionRequestDetail.IssuedQty += recommend.Qty;
-
- //await _injectionRequestManager.UpdateDetailsAsync(injectionRequest).ConfigureAwait(false);
+
}
}
@@ -298,36 +293,63 @@ public class InjectionIssueRequestEventHandler
private async Task BuildInjectionIssueJobDetailWithQtyTypeAsync(
InjectionIssueRequestDetail injectionRequestDetail, BalanceDTO balance, string toLocationGroupCode)
{
- //ProductionLineDTO prodLine = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationGroupCode).ConfigureAwait(false);
-
- var detail = ObjectMapper.Map(balance);
+ var detail = new InjectionIssueJobDetailInput();
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.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.RecommendFromContainerCode = balance.ContainerCode;
+ detail.RecommendFromLot = balance.Lot;
+
+ detail.RecommendFromQty = balance.Qty;
+
detail.RecommendFromSupplierBatch = balance.SupplierBatch;
detail.RecommendFromProduceDate = balance.ProduceDate;
detail.RecommendFromExpireDate = balance.ExpireDate;
- detail.RecommendFromLot = balance.Lot;
detail.RecommendFromProduceDate = balance.ProduceDate;
detail.RecommendFromArriveDate = balance.ArriveDate;
+
detail.RecommendFromLocationArea = balance.LocationArea;
detail.RecommendFromLocationCode = balance.LocationCode;
detail.RecommendFromLocationErpCode = balance.LocationErpCode;
detail.RecommendFromLocationGroup = balance.LocationGroup;
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.RecommendToLocationErpCode = injectionRequestDetail.ToLocationErpCode;
detail.RecommendToLocationArea = injectionRequestDetail.ToLocationArea;
detail.RecommendToWarehouseCode = injectionRequestDetail.ToWarehouseCode;
+ detail.RecommendToLocationGroup = injectionRequestDetail.ToLocationGroup;
- //detail.ProdLine = prodLine == null ? toLocationGroupCode : prodLine.Code;
- detail.ProdLine = toLocationGroupCode;
await Task.CompletedTask.ConfigureAwait(false);
return detail;
}
From 960f5348128cd5ffb44bfa23ed801b76035759f6 Mon Sep 17 00:00:00 2001
From: "boxu.zheng"
Date: Fri, 19 Apr 2024 17:03:59 +0800
Subject: [PATCH 2/3] =?UTF-8?q?zheng=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Boms/BomAppService.cs | 88 ++++++---------
.../IJisProductReceiptNoteAppService.cs | 7 +-
.../DTOs/KittingPackagingNoteDTO.cs | 61 +++++++++++
.../KittingPackagingNoteDependentDetailDTO.cs | 58 ++++++++++
.../DTOs/KittingPackagingNoteDetailDTO.cs | 58 ++++++++++
.../IKittingPackagingNoteAppService.cs | 10 ++
.../Inputs/KittingPackagingNoteCheckInput.cs | 6 ++
.../KittingPackagingNoteCreateRequestInput.cs | 101 ++++++++++++++++++
.../Inputs/KittingPackagingNoteDetailInput.cs | 58 ++++++++++
.../Inputs/KittingPackagingNoteEditInput.cs | 82 ++++++++++++++
.../Inputs/KittingPackagingNoteImportInput.cs | 32 ++++++
.../KittingPackagingNotePermissions.cs | 21 ++++
.../JisProductReceiptNoteAppService.cs | 11 +-
.../KittingPackagingNoteAppService.cs | 34 ++++++
.../KittingPackagingNoteAutoMapperProfile.cs | 15 +++
.../IKittingPackagingNoteManager.cs | 11 ++
.../IKittingPackagingNoteRepository.cs | 6 ++
.../KittingPackagingNote.cs | 31 ++++++
.../KittingPackagingNoteChassisDetail.cs | 51 +++++++++
.../KittingPackagingNoteDetail.cs | 40 +++++++
.../KittingPackagingNoteManager.cs | 26 +++++
...ingNoteDbContextModelCreatingExtensions.cs | 77 +++++++++++++
.../KittingPackagingNoteEfCoreRepository.cs | 11 ++
23 files changed, 839 insertions(+), 56 deletions(-)
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDependentDetailDTO.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDetailDTO.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/IKittingPackagingNoteAppService.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCheckInput.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCreateRequestInput.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteDetailInput.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteImportInput.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/KittingPackagingNotePermissions.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAutoMapperProfile.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteManager.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteRepository.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteManager.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs
create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteEfCoreRepository.cs
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs
index 41e51c39a..b4744eabb 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs
+++ b/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 _bomList=new List();
+ private List _bomList = new();
public BomAppService(IBomRepository repository
, IBomManager bomManager
, IDistributedCache 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> 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>(entities);
}
@@ -65,7 +53,8 @@ public class BomAppService :
[HttpGet("list/for-preparation-plan")]
public virtual async Task> 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>(entities);
}
@@ -73,20 +62,23 @@ public class BomAppService :
[HttpGet("list/for-backflush")]
public virtual async Task> 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>(entities);
}
[HttpGet("get-by-productitemcode-sbs")]
- public virtual async Task> GetBomStepByStepAsync(string productItemCode, DateTime validTime, bool isStepByStep = true)
+ public virtual async Task> 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>(entities);
}
///
- /// 所有子物料号
+ /// 所有子物料号
///
///
///
@@ -97,7 +89,7 @@ public class BomAppService :
}
///
- /// 所有父物料号
+ /// 所有父物料号
///
///
///
@@ -106,8 +98,9 @@ public class BomAppService :
{
return await _bomManager.GetListOfComponentAsync(component).ConfigureAwait(false);
}
+
///
- /// 获取bomtree
+ /// 获取bomtree
///
///
///
@@ -120,8 +113,9 @@ public class BomAppService :
return dtos;
}
+
///
- /// 获取所有子物料关系
+ /// 获取所有子物料关系
///
///
///
@@ -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>(entities)).ConfigureAwait(false);
+ dto.ComponentDTOs = await GetChildBomsAsync(ObjectMapper.Map, List>(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 inputs)
{
- List entitys = new List();
+ var entitys = new List();
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 validationRresult)
+ protected override async Task ValidateImportModelAsync(BomImportInput importInput,
+ List 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);
}
///
- /// 根据总成号、总成数量取所有子物料及其汇总数量
+ /// 根据总成号、总成数量取所有子物料及其汇总数量
///
/// 总成号
/// 总成数量
@@ -223,31 +219,17 @@ public class BomAppService :
{
var entities = await _bomManager.GetMaterialTotalQtyAsync(productCode, productNum).ConfigureAwait(false);
return ObjectMapper.Map, List>(entities);
-
}
[HttpPost("get_bom_sublist")]
-
- public async Task> GetSubcomponentsRecursiveList(List p_lst, EnumBomSelectedType p_type
+ public async Task> GetSubcomponentsRecursiveList(List p_lst,
+ EnumBomSelectedType p_type
)
{
- var entities=ObjectMapper.Map, List>(p_lst);
- var list=await _bomManager.GetSubcomponentsRecursiveList(entities, p_type).ConfigureAwait(false);
+ var entities = ObjectMapper.Map, List>(p_lst);
+ var list = await _bomManager.GetSubcomponentsRecursiveList(entities, p_type).ConfigureAwait(false);
var sublist = ObjectMapper.Map, List>(list);
return sublist;
-
}
-
-
-
-
-
-
-
}
-
-
-
-
-
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/JisProductReceiptNotes/IJisProductReceiptNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/JisProductReceiptNotes/IJisProductReceiptNoteAppService.cs
index 6f9114073..25bd7b142 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/JisProductReceiptNotes/IJisProductReceiptNoteAppService.cs
+++ b/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
+public interface IJisProductReceiptNoteAppService :
+ ISfsStoreMasterReadOnlyAppServiceBase<
+ JisProductReceiptNoteDTO,
+ SfsStoreRequestInputBase,
+ JisProductReceiptNoteDetailDTO,
+ SfsStoreRequestInputBase>
{
Task CreateAsync(JisProductReceiptNoteEditInput input);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs
new file mode 100644
index 000000000..8e89587cb
--- /dev/null
+++ b/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
+{
+
+ ///
+ /// 生产计划号
+ ///
+ [Display(Name = "盘点计划号")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string CountPlanNumber { get; set; }
+
+ ///
+ /// 盘点阶段
+ ///
+ [Display(Name = "盘点阶段")]
+ public EnumCountStage CountStage { get; set; }
+
+ ///
+ /// 盘点方式
+ ///
+ [Display(Name = "盘点方式")]
+ public EnumCountMethod CountMethod { get; set; }
+
+ ///
+ /// 类型
+ ///
+ [Display(Name = "盘点类型")]
+ public EnumCountType Type { get; set; }
+
+ ///
+ /// 描述
+ ///
+ [Display(Name = "描述")]
+ public string Description { get; set; }
+
+ ///
+ /// 物料代码
+ ///
+ [Display(Name = "物料代码")]
+ public string ItemCode { get; set; }
+
+ ///
+ /// 库位代码
+ ///
+ [Display(Name = "库位代码")]
+ public string LocationCode { get; set; }
+
+ ///
+ /// 任务从表明细(记录每次扫得明细)
+ ///
+ public List DepDetails { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDependentDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDependentDetailDTO.cs
new file mode 100644
index 000000000..1f89a3ba2
--- /dev/null
+++ b/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
+{
+
+ ///
+ /// 盘点标签
+ ///
+ [Display(Name = "盘点标签")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string CountLabel { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ [Display(Name = "计量单位")]
+ public string Uom { get; set; }
+
+ ///
+ /// 库存数量
+ ///
+ [Display(Name = "库存数量")]
+ public decimal InventoryQty { get; set; }
+
+ ///
+ /// 库存库位
+ ///
+ [Display(Name = "库存库位")]
+ public string InventoryLocationCode { get; set; }
+
+ ///
+ /// 盘点数量
+ ///
+ [Display(Name = "盘点数量")]
+ public decimal CountQty { get; set; }
+
+ ///
+ /// 盘点时间
+ ///
+ [Display(Name = "盘点时间")]
+ public DateTime? CountTime { get; set; }
+
+ ///
+ /// 盘点操作员
+ ///
+ [Display(Name = "盘点操作员")]
+ public string CountOperator { get; set; }
+
+ ///
+ /// 盘点描述
+ ///
+ [Display(Name = "盘点描述")]
+ public string CountDescription { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDetailDTO.cs
new file mode 100644
index 000000000..3e9edb5cc
--- /dev/null
+++ b/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
+{
+
+ ///
+ /// 盘点标签
+ ///
+ [Display(Name = "盘点标签")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string CountLabel { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ [Display(Name = "计量单位")]
+ public string Uom { get; set; }
+
+ ///
+ /// 库存数量
+ ///
+ [Display(Name = "库存数量")]
+ public decimal InventoryQty { get; set; }
+
+ ///
+ /// 库存库位
+ ///
+ [Display(Name = "库存库位")]
+ public string InventoryLocationCode { get; set; }
+
+ ///
+ /// 盘点数量
+ ///
+ [Display(Name = "盘点数量")]
+ public decimal CountQty { get; set; }
+
+ ///
+ /// 盘点时间
+ ///
+ [Display(Name = "盘点时间")]
+ public DateTime? CountTime { get; set; }
+
+ ///
+ /// 盘点操作员
+ ///
+ [Display(Name = "盘点操作员")]
+ public string CountOperator { get; set; }
+
+ ///
+ /// 盘点描述
+ ///
+ [Display(Name = "盘点描述")]
+ public string CountDescription { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/IKittingPackagingNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/IKittingPackagingNoteAppService.cs
new file mode 100644
index 000000000..9ad863aec
--- /dev/null
+++ b/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>
+{
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCheckInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCheckInput.cs
new file mode 100644
index 000000000..13e414fd7
--- /dev/null
+++ b/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
+{
+
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCreateRequestInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCreateRequestInput.cs
new file mode 100644
index 000000000..d5eececd8
--- /dev/null
+++ b/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;
+
+///
+/// 查询条件 DTO
+///
+public class KittingPackagingNoteCreateRequestInput
+{
+ ///
+ /// 盘点方式
+ ///
+ [Display(Name = "盘点方式")]
+ public EnumCountMethod CountMethod { get; set; }
+
+ ///
+ /// 描述
+ ///
+ [Display(Name = "描述")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string Description { get; set; }
+
+ ///
+ /// 盘点执行形式
+ ///
+ [Display(Name = "盘点执行形式")]
+ public CountPlanRequestType RequestType { get; set; }
+
+ ///
+ /// 类型
+ ///
+ [Display(Name = "盘点类型")]
+ public EnumCountType Type { get; set; }
+
+ ///
+ /// 零件条件集合
+ ///
+ [Display(Name = "零件条件集合")]
+ public List PartCondition { get; set; } = new();
+
+ ///
+ /// 库位条件集合
+ ///
+ [Display(Name = "库位条件集合")]
+ public List LocCondition { get; set; } = new();
+
+ ///
+ /// 状态
+ ///
+ [Display(Name = "状态")]
+ public List StatusList { get; set; }
+
+ ///
+ /// 操作员
+ ///
+ [Display(Name = "操作员")]
+ //[Required(ErrorMessage = "{0}是必填项")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string Worker { get; set; }
+
+ ///
+ /// 仓库
+ ///
+ [Display(Name = "仓库")]
+ //[Required(ErrorMessage = "{0}是必填项")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string WarehouseCode { get; set; }
+
+ ///
+ /// 备注
+ ///
+ [Display(Name = "备注")]
+ public string Remark { get; set; }
+
+ ///
+ /// 盘点阶段
+ ///
+ [Display(Name = "盘点阶段")]
+ public EnumCountStage CountStage { get; set; } = EnumCountStage.Circulate;
+
+ ///
+ /// 盘点的零件集合
+ ///
+ [Display(Name = "盘点的零件集合")]
+ public string JsonItemCodes { get; set; }
+
+ ///
+ /// 盘点的库位集合
+ ///
+ [Display(Name = "盘点的库位集合")]
+ public string JsonLocationCodes { get; set; }
+
+ ///
+ /// 盘点的库存状态集合
+ ///
+ [Display(Name = "盘点的库存状态集合")]
+ public string JsonInventoryStatus { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteDetailInput.cs
new file mode 100644
index 000000000..a02d61277
--- /dev/null
+++ b/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
+{
+
+ ///
+ /// 盘点标签
+ ///
+ [Display(Name = "盘点标签")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string CountLabel { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ [Display(Name = "计量单位")]
+ public string Uom { get; set; }
+
+ ///
+ /// 库存数量
+ ///
+ [Display(Name = "库存数量")]
+ public decimal InventoryQty { get; set; }
+
+ ///
+ /// 库存库位
+ ///
+ [Display(Name = "库存库位")]
+ public string InventoryLocationCode { get; set; }
+
+ ///
+ /// 盘点数量
+ ///
+ [Display(Name = "盘点数量")]
+ public decimal CountQty { get; set; }
+
+ ///
+ /// 盘点时间
+ ///
+ [Display(Name = "盘点时间")]
+ public DateTime? CountTime { get; set; }
+
+ ///
+ /// 盘点操作员
+ ///
+ [Display(Name = "盘点操作员")]
+ public string CountOperator { get; set; }
+
+ ///
+ /// 盘点描述
+ ///
+ [Display(Name = "盘点描述")]
+ public string CountDescription { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs
new file mode 100644
index 000000000..233be52d8
--- /dev/null
+++ b/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
+{
+ #region Base
+ ///
+ /// 盘点方式
+ ///
+ [Display(Name = "盘点方式")]
+ public EnumCountMethod CountMethod { get; set; }
+ ///
+ /// 类型
+ ///
+ [Display(Name = "盘点类型")]
+
+ public EnumCountType Type { get; set; }
+
+ ///
+ /// 描述
+ ///
+ [Display(Name = "描述")]
+
+ public string Description { get; set; }
+
+ ///
+ /// 物料代码
+ ///
+ [Display(Name = "物料代码")]
+ public string ItemCode { get; set; }
+
+ ///
+ /// 库位代码
+ ///
+ [Display(Name = "库位代码")]
+ public string LocationCode { get; set; }
+ #endregion
+
+ #region Create
+ ///
+ /// 上游任务编号
+ ///
+ [Display(Name = "上游任务编号")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string UpStreamJobNumber { get; set; }
+
+ ///
+ /// 盘点计划号
+ ///
+ [Display(Name = "盘点计划号")]
+ [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
+ public string CountPlanNumber { get; set; }
+
+ ///
+ /// 盘点阶段
+ ///
+ [Display(Name = "盘点阶段")]
+ public EnumCountStage CountStage { get; set; }
+
+ ///
+ /// 任务类型
+ ///
+ [Display(Name = "任务类型")]
+ public EnumJobType JobType { get; set; }
+
+ ///
+ /// 是否自动完成
+ ///
+ [Display(Name = "是否自动完成")]
+ public bool IsAutoComplete { get; set; }
+
+ ///
+ /// 任务明细
+ ///
+ [Display(Name = "任务明细")]
+ public List Details { get; set; }
+ #endregion
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteImportInput.cs
new file mode 100644
index 000000000..793c3611e
--- /dev/null
+++ b/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
+{
+
+ ///
+ /// 盘点任务单号
+ ///
+ [Display(Name = "盘点任务单号")]
+ public string CountJobNumber { get; set; }
+
+ ///
+ /// 盘点计划单号
+ ///
+ [Display(Name = "盘点计划单号")]
+ public string CountPlanNumber { get; set; }
+
+ ///
+ /// 调整类型
+ ///
+ [Display(Name = "调整类型")]
+ public string Type { get; set; }
+
+ ///
+ /// 是否已经调整
+ ///
+ [Display(Name = "是否已经调整")]
+ [Required(ErrorMessage = "{0}是必填项")]
+ public bool IsAdjusted { get; set; } = false;
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/KittingPackagingNotePermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/KittingPackagingNotePermissions.cs
new file mode 100644
index 000000000..422bd3ca2
--- /dev/null
+++ b/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));
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/JisProductReceiptNotes/JisProductReceiptNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/JisProductReceiptNotes/JisProductReceiptNoteAppService.cs
index 864362e7a..aa49659cc 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/JisProductReceiptNotes/JisProductReceiptNoteAppService.cs
+++ b/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,
+ SfsStoreWithDetailsAppServiceBase<
+ JisProductReceiptNote,
+ JisProductReceiptNoteDTO,
+ SfsStoreRequestInputBase,
+ JisProductReceiptNoteEditInput,
+ JisProductReceiptNoteDetail,
+ JisProductReceiptNoteDetailDTO,
+ SfsStoreRequestInputBase,
+ JisProductReceiptNoteImportInput>,
IJisProductReceiptNoteAppService
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs
new file mode 100644
index 000000000..a59670213
--- /dev/null
+++ b/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;
+
+///
+/// 盘点接口
+///
+[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;
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAutoMapperProfile.cs
new file mode 100644
index 000000000..c7b01d559
--- /dev/null
+++ b/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()
+ .ReverseMap();
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteManager.cs
new file mode 100644
index 000000000..b439f482a
--- /dev/null
+++ b/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
+{
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteRepository.cs
new file mode 100644
index 000000000..0ba04487d
--- /dev/null
+++ b/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
+{
+
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs
new file mode 100644
index 000000000..ba220dc50
--- /dev/null
+++ b/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;
+
+///
+/// kitting打包记录
+///
+[Display(Name = "kitting打包记录")]
+public class KittingPackagingNote : SfsStoreAggregateRootBase
+{
+ ///
+ /// kitting代码
+ ///
+ [Display(Name = "Kitting代码")]
+ public string KittingCode { get; set; }
+
+ ///
+ /// 任务明细
+ ///
+ [IgnoreUpdate]
+ public override List Details { get; set; } = new();
+
+ ///
+ /// 任务从表明细(记录每次扫得明细)
+ ///
+ [IgnoreUpdate]
+ public List DepDetails { get; set; } = new();
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs
new file mode 100644
index 000000000..2f2a0bdf7
--- /dev/null
+++ b/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
+{
+
+ ///
+ /// 盘点标签
+ ///
+ public string CountLabel { get; set; }
+
+ ///
+ /// 库存数量
+ ///
+ public decimal InventoryQty { get; set; }
+
+ ///
+ /// 计量单位
+ ///
+ [Display(Name = "计量单位")]
+ public string Uom { get; set; }
+
+ ///
+ /// 库存库位
+ ///
+ public string InventoryLocationCode { get; set; }
+
+ ///
+ /// 盘点数量(每次扫得数量)
+ ///
+ public decimal CountQty { get; set; }
+
+ ///
+ /// 盘点时间
+ ///
+ public DateTime? CountTime { get; set; }
+
+ ///
+ /// 盘点操作员
+ ///
+ public string CountOperator { get; set; }
+
+ ///
+ /// 盘点描述
+ ///
+ public string CountDescription { get; set; }
+}
+
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs
new file mode 100644
index 000000000..d71bf4ebf
--- /dev/null
+++ b/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
+{
+ ///
+ /// 物品代码
+ ///
+ [Display(Name = "物品代码")]
+ [Required(ErrorMessage = "{0}是必填项")]
+ [IgnoreUpdate]
+ public string ItemCode { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ [Display(Name = "物品名称")]
+ public string ItemName { get; set; }
+
+ ///
+ /// 物品描述1
+ ///
+ [Display(Name = "物品描述1")]
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ [Display(Name = "物品描述2")]
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// 数量
+ ///
+ [Display(Name = "数量")]
+ public decimal Qty { get; set; }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteManager.cs
new file mode 100644
index 000000000..7d4782c6c
--- /dev/null
+++ b/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,
+ IKittingPackagingNoteManager
+{
+ public KittingPackagingNoteManager(
+ IKittingPackagingNoteRepository repository
+ ) : base(repository)
+
+ {
+
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs
new file mode 100644
index 000000000..dc17b7d52
--- /dev/null
+++ b/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(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(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(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();
+ });
+ }
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteEfCoreRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteEfCoreRepository.cs
new file mode 100644
index 000000000..9a22020c0
--- /dev/null
+++ b/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, IKittingPackagingNoteRepository
+{
+ public KittingPackagingNoteEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider)
+ {
+ }
+}
From 374fb561f7601c1f80cdc830a398db67407d9b20 Mon Sep 17 00:00:00 2001
From: "boxu.zheng"
Date: Fri, 19 Apr 2024 17:12:53 +0800
Subject: [PATCH 3/3] =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90=20KittingPackin?=
=?UTF-8?q?gNote?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../KittingPackagingNotes/KittingPackagingNoteDetail.cs | 2 +-
...ittingPackagingNoteDbContextModelCreatingExtensions.cs | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs
index d71bf4ebf..a195a60a5 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs
@@ -4,7 +4,7 @@ using Win_in.Sfs.Shared.Domain.Entities;
namespace Win_in.Sfs.Wms.Store.Domain;
-public class KittingPackagingNoteDetail : SfsDetailEntityBase
+public class KittingPackagingNoteDetail : SfsStoreDetailEntityBase
{
///
/// 物品代码
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs
index dc17b7d52..77c0950d8 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs
@@ -38,10 +38,10 @@ public static class KittingPackagingNoteDbContextModelCreatingExtensions
//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);
+ //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