Browse Source

修改 消息

集成Redis
郑渤旭[Irelia] 2 years ago
parent
commit
0548f722fb
  1. 1
      be/Hosts/Core.Host/Win_in.Sfs.Core.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.LabelDbContext.sql
  2. 7
      be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageApplicationAutoMapperProfile.cs
  3. 4
      be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypeSubscribes/MessageTypeSubscribeAutoMapperProfile.cs
  4. 4
      be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypes/MessageTypeAutoMapperProfile.cs
  5. 4
      be/Modules/Message/src/Win_in.Sfs.Message.Application/UserNotifyMessages/UserNotifyMessageAutoMapperProfile.cs
  6. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/DTOs/ProductReceiptRequestDTO.cs
  7. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/Inputs/ProductReceiptRequestEditInput.cs
  8. 106
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductReceiptRequests/ProductReceiptRequestAppService.cs
  9. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ProductReceiptRequests/ProductReceiptRequest.cs

1
be/Hosts/Core.Host/Win_in.Sfs.Core.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.LabelDbContext.sql

@ -49,6 +49,7 @@ CREATE TABLE [Label_InventoryLabel] (
[SupplierSimpleName] nvarchar(max) NULL, [SupplierSimpleName] nvarchar(max) NULL,
[SupplierItemCode] nvarchar(max) NULL, [SupplierItemCode] nvarchar(max) NULL,
[SupplierItemName] nvarchar(max) NULL, [SupplierItemName] nvarchar(max) NULL,
[PlanArriveDate] datetime2 NOT NULL,
[ExtraProperties] nvarchar(max) NULL, [ExtraProperties] nvarchar(max) NULL,
[ConcurrencyStamp] nvarchar(40) NULL, [ConcurrencyStamp] nvarchar(40) NULL,
[CreationTime] datetime2 NOT NULL, [CreationTime] datetime2 NOT NULL,

7
be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageApplicationAutoMapperProfile.cs

@ -2,7 +2,7 @@ using AutoMapper;
namespace Win_in.Sfs.Message.Application; namespace Win_in.Sfs.Message.Application;
public class MessageApplicationAutoMapperProfile : Profile public partial class MessageApplicationAutoMapperProfile : Profile
{ {
public MessageApplicationAutoMapperProfile() public MessageApplicationAutoMapperProfile()
{ {
@ -10,7 +10,8 @@ public class MessageApplicationAutoMapperProfile : Profile
* Alternatively, you can split your mapping configurations * Alternatively, you can split your mapping configurations
* into multiple profile classes for a better organization. */ * into multiple profile classes for a better organization. */
new MessageTypeAutoMapperProfile().MessageTypeAutoMapperProfileConfig(); UserNotifyAutoMapperProfile();
new NotifyMessageAutoMapperProfile().NotifyMessageAutoMapperProfileConfig(); MessageTypeAutoMapperProfile();
MessageTypeSubscribesAutoMapperProfile();
} }
} }

4
be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypeSubscribes/MessageTypeSubscribeAutoMapperProfile.cs

@ -5,9 +5,9 @@ using Win_in.Sfs.Message.Domain;
namespace Win_in.Sfs.Message.Application; namespace Win_in.Sfs.Message.Application;
public class MessageTypeSubscribeAutoMapperProfile : Profile public partial class MessageApplicationAutoMapperProfile : Profile
{ {
public MessageTypeSubscribeAutoMapperProfile() public void MessageTypeSubscribesAutoMapperProfile()
{ {
CreateMap<MessageTypeSubscribe, MessageTypeSubscribeDto>() CreateMap<MessageTypeSubscribe, MessageTypeSubscribeDto>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()

4
be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypes/MessageTypeAutoMapperProfile.cs

@ -5,9 +5,9 @@ using Win_in.Sfs.Message.Domain;
namespace Win_in.Sfs.Message.Application; namespace Win_in.Sfs.Message.Application;
public class MessageTypeAutoMapperProfile : Profile public partial class MessageApplicationAutoMapperProfile : Profile
{ {
public void MessageTypeAutoMapperProfileConfig() public void MessageTypeAutoMapperProfile()
{ {
CreateMap<MessageType, MessageTypeDto>() CreateMap<MessageType, MessageTypeDto>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()

4
be/Modules/Message/src/Win_in.Sfs.Message.Application/UserNotifyMessages/UserNotifyMessageAutoMapperProfile.cs

@ -6,9 +6,9 @@ using Win_in.Sfs.Message.Domain;
namespace Win_in.Sfs.Message.Application; namespace Win_in.Sfs.Message.Application;
public class UserNotifyMessageAutoMapperProfile : Profile public partial class MessageApplicationAutoMapperProfile : Profile
{ {
public UserNotifyMessageAutoMapperProfile() public void UserNotifyAutoMapperProfile()
{ {
CreateMap<UserNotifyMessage, UserNotifyMessageDto>() CreateMap<UserNotifyMessage, UserNotifyMessageDto>()
.IgnoreAuditedObjectProperties() .IgnoreAuditedObjectProperties()

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/DTOs/ProductReceiptRequestDTO.cs

@ -1,6 +1,7 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -54,6 +55,6 @@ public class ProductReceiptRequestDTO : SfsStoreRequestDTOBase<ProductReceiptReq
/// 类型 /// 类型
/// </summary> /// </summary>
[Display(Name = "类型")] [Display(Name = "类型")]
public string Type { get; set; } public EnumProductReceiptType Type { get; set; }
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/Inputs/ProductReceiptRequestEditInput.cs

@ -70,7 +70,7 @@ public class ProductReceiptRequestEditInput : SfsStoreRequestCreateOrUpdateInput
/// 类型 /// 类型
/// </summary> /// </summary>
[Display(Name = "类型")] [Display(Name = "类型")]
public string Type { get; set; } public string EnumProductReceiptType { get; set; }
/// <summary> /// <summary>
/// 明细列表 /// 明细列表

106
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductReceiptRequests/ProductReceiptRequestAppService.cs

@ -5,7 +5,6 @@ using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp; using Volo.Abp;
@ -25,9 +24,10 @@ namespace Win_in.Sfs.Wms.Store.Application;
/// </summary> /// </summary>
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}product-receipt-request")] [Route($"{StoreConsts.RootPath}product-receipt-request")]
public class ProductReceiptRequestAppService : public class ProductReceiptRequestAppService :
SfsStoreRequestAppServiceBase<ProductReceiptRequest, ProductReceiptRequestDTO, SfsStoreRequestInputBase, ProductReceiptRequestEditInput, ProductReceiptRequestDetail, ProductReceiptRequestDetailDTO, SfsStoreRequestInputBase, ProductReceiptRequestImportInput> SfsStoreRequestAppServiceBase<ProductReceiptRequest, ProductReceiptRequestDTO, SfsStoreRequestInputBase,
ProductReceiptRequestEditInput, ProductReceiptRequestDetail, ProductReceiptRequestDetailDTO,
SfsStoreRequestInputBase, ProductReceiptRequestImportInput>
{ {
private readonly IProductReceiptRequestManager _productReceiptRequestManager; private readonly IProductReceiptRequestManager _productReceiptRequestManager;
@ -39,14 +39,50 @@ public class ProductReceiptRequestAppService :
, IAreaAppService areaApp , IAreaAppService areaApp
) : base(repository, productReceiptRequestManager) ) : base(repository, productReceiptRequestManager)
{ {
_areaApp = areaApp;
this._areaApp = areaApp;
_productReceiptRequestManager = productReceiptRequestManager; _productReceiptRequestManager = productReceiptRequestManager;
base.CreatePolicyName = ProductReceiptRequestPermissions.Create; base.CreatePolicyName = ProductReceiptRequestPermissions.Create;
base.UpdatePolicyName = ProductReceiptRequestPermissions.Update; base.UpdatePolicyName = ProductReceiptRequestPermissions.Update;
base.DeletePolicyName = ProductReceiptRequestPermissions.Delete; base.DeletePolicyName = ProductReceiptRequestPermissions.Delete;
} }
#region 东阳
/// <summary>
/// 设置事务类型
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
private async Task SetRequestAutoPropertiesAsync(ProductReceiptRequest entity)
{
var enumTransSubType=EnumTransSubType.None;
switch (entity.Type)
{
case EnumProductReceiptType.ProductReceipt_Manual:
enumTransSubType = EnumTransSubType.ProductReceipt_Manual;
break;
case EnumProductReceiptType.ProductReceipt_WIP:
enumTransSubType = EnumTransSubType.ProductReceipt_WIP;
break;
default:
throw new UserFriendlyException("缴库类型错误");
}
var tranType = await TransactionTypeAclService
.GetByTransTypeAsync(EnumTransType.ProductReceipt, enumTransSubType)
.ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
#endregion
/// <summary> /// <summary>
/// 新增实体 /// 新增实体
/// </summary> /// </summary>
@ -56,7 +92,6 @@ public class ProductReceiptRequestAppService :
//[Authorize(ProductReceiptRequestPermissions.Create)] //[Authorize(ProductReceiptRequestPermissions.Create)]
public override async Task<ProductReceiptRequestDTO> CreateAsync(ProductReceiptRequestEditInput input) public override async Task<ProductReceiptRequestDTO> CreateAsync(ProductReceiptRequestEditInput input)
{ {
var entity = ObjectMapper.Map<ProductReceiptRequestEditInput, ProductReceiptRequest>(input); var entity = ObjectMapper.Map<ProductReceiptRequestEditInput, ProductReceiptRequest>(input);
await _productReceiptRequestManager.CreateAsync(entity).ConfigureAwait(false); await _productReceiptRequestManager.CreateAsync(entity).ConfigureAwait(false);
@ -79,35 +114,37 @@ public class ProductReceiptRequestAppService :
bool includeDetails = false, bool includeDetails = false,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
Expression<Func<ProductReceiptRequest, bool>> expression = p => p.Type == type; Expression<Func<ProductReceiptRequest, bool>> expression = p => p.Type.ToString() == type;
if (requestInput.Condition.Filters?.Count > 0) if (requestInput.Condition.Filters?.Count > 0)
{ {
expression = expression.And(requestInput.Condition.Filters.ToLambda<ProductReceiptRequest>()); expression = expression.And(requestInput.Condition.Filters.ToLambda<ProductReceiptRequest>());
} }
return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount, return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false); requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
} }
[HttpPost("export-by-type")] [HttpPost("export-by-type")]
public virtual async Task<IActionResult> ExportByTypeAsync(SfsExportRequestInput requestInput, string type) public virtual async Task<IActionResult> ExportByTypeAsync(SfsExportRequestInput requestInput, string type)
{ {
Expression<Func<ProductReceiptRequest, bool>> expression = p => p.Type.ToString() == type;
Expression<Func<ProductReceiptRequest, bool>> expression = p => p.Type == type;
if (requestInput.Condition.Filters?.Count > 0) if (requestInput.Condition.Filters?.Count > 0)
{ {
expression = expression.And(requestInput.Condition.Filters.ToLambda<ProductReceiptRequest>()); expression = expression.And(requestInput.Condition.Filters.ToLambda<ProductReceiptRequest>());
} }
var entities = await _repository.GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount, requestInput.Sorting, true).ConfigureAwait(false); var entities = await _repository
.GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount, requestInput.Sorting,
true).ConfigureAwait(false);
var list = ObjectMapper.Map<List<ProductReceiptRequest>, List<ProductReceiptRequestDTO>>(entities); var list = ObjectMapper.Map<List<ProductReceiptRequest>, List<ProductReceiptRequestDTO>>(entities);
return ExportImportService.Export(list, true, "Details"); return ExportImportService.Export(list, true, "Details");
} }
#region Import #region 校验
protected virtual async Task CheckImportInputBusinessAsync(ProductReceiptRequestImportInput importInput, EnumImportMethod importMethod, List<ValidationResult> validationRresult) protected virtual async Task CheckImportInputBusinessAsync(ProductReceiptRequestImportInput importInput,
EnumImportMethod importMethod, List<ValidationResult> validationRresult)
{ {
//await base.CheckImportInputBusinessAsync(importInput, importMethod); //await base.CheckImportInputBusinessAsync(importInput, importMethod);
@ -124,7 +161,8 @@ public class ProductReceiptRequestAppService :
//CheckTransactionType(EnumTransInOut.In, transactionType.InInventoryStatuses.FirstOrDefault(), transactionType, itemBasic, location); //CheckTransactionType(EnumTransInOut.In, transactionType.InInventoryStatuses.FirstOrDefault(), transactionType, itemBasic, location);
} }
protected async Task<ItemBasicDTO> CheckItemBasicAsync(ProductReceiptRequestImportInput importInput, List<ValidationResult> validationRresult) protected async Task<ItemBasicDTO> CheckItemBasicAsync(ProductReceiptRequestImportInput importInput,
List<ValidationResult> validationRresult)
{ {
var item = await ItemBasicAclService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false); var item = await ItemBasicAclService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
@ -132,25 +170,30 @@ public class ProductReceiptRequestAppService :
{ {
validationRresult.Add("物品代码", $"物品代码{importInput.ItemCode}不存在"); validationRresult.Add("物品代码", $"物品代码{importInput.ItemCode}不存在");
} }
//可以缴入负数 //可以缴入负数
if (importInput.Qty == 0) if (importInput.Qty == 0)
{ {
validationRresult.Add("数量", $"数量不能等于0"); validationRresult.Add("数量", $"数量不能等于0");
} }
return item; return item;
} }
protected async Task<LocationDTO> CheckLocationAsync(ProductReceiptRequestImportInput importInput, List<ValidationResult> validationRresult) protected async Task<LocationDTO> CheckLocationAsync(ProductReceiptRequestImportInput importInput,
List<ValidationResult> validationRresult)
{ {
var location = await LocationAclService.GetByCodeAsync(importInput.LocationCode).ConfigureAwait(false); var location = await LocationAclService.GetByCodeAsync(importInput.LocationCode).ConfigureAwait(false);
if (location == null) if (location == null)
{ {
validationRresult.Add("调入库位", $"调入库位{importInput.LocationCode}不存在"); validationRresult.Add("调入库位", $"调入库位{importInput.LocationCode}不存在");
} }
return location; return location;
} }
protected async Task CheckAreaAsync(ProductReceiptRequestImportInput importInput, List<ValidationResult> validationRresult) protected async Task CheckAreaAsync(ProductReceiptRequestImportInput importInput,
List<ValidationResult> validationRresult)
{ {
var location = await _areaApp.GetByCodeAsync(importInput.RawArea).ConfigureAwait(false); var location = await _areaApp.GetByCodeAsync(importInput.RawArea).ConfigureAwait(false);
if (location == null) if (location == null)
@ -161,15 +204,18 @@ public class ProductReceiptRequestAppService :
protected async Task<TransactionTypeDTO> CheckTransactionTypeAsync(List<ValidationResult> validationRresult) protected async Task<TransactionTypeDTO> CheckTransactionTypeAsync(List<ValidationResult> validationRresult)
{ {
var transactionType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.ProductReceipt, EnumTransSubType.None).ConfigureAwait(false); var transactionType = await TransactionTypeAclService
.GetByTransTypeAsync(EnumTransType.ProductReceipt, EnumTransSubType.None).ConfigureAwait(false);
if (transactionType == null) if (transactionType == null)
{ {
validationRresult.Add("事务类型", $"{EnumTransType.ProductReceipt.GetDisplayName()}事务类型不存在"); validationRresult.Add("事务类型", $"{EnumTransType.ProductReceipt.GetDisplayName()}事务类型不存在");
} }
return transactionType; return transactionType;
} }
protected virtual async Task ImportDataAsync(List<ProductReceiptRequest> entites, List<ProductReceiptRequest> deleteEntities) protected virtual async Task ImportDataAsync(List<ProductReceiptRequest> entites,
List<ProductReceiptRequest> deleteEntities)
{ {
await _productReceiptRequestManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false); await _productReceiptRequestManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false);
} }
@ -179,7 +225,9 @@ public class ProductReceiptRequestAppService :
return p => p.Type; return p => p.Type;
} }
protected virtual async Task<(List<ProductReceiptRequest> entites, List<ProductReceiptRequest> deleteEntities)> BuildImportDataAsync(ImportResult<ProductReceiptRequestImportInput> importResult, EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false) protected virtual async Task<(List<ProductReceiptRequest> entites, List<ProductReceiptRequest> deleteEntities)>
BuildImportDataAsync(ImportResult<ProductReceiptRequestImportInput> importResult,
EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false)
{ {
if (importResult.Data.Any(t => t.ReportStatus == EnumImportReportStatus.Failed)) if (importResult.Data.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
{ {
@ -222,6 +270,7 @@ public class ProductReceiptRequestAppService :
{ {
entity.SetId(exist.Id); entity.SetId(exist.Id);
} }
break; break;
case EnumImportMethod.Replace: case EnumImportMethod.Replace:
if (exist != null) if (exist != null)
@ -235,7 +284,8 @@ public class ProductReceiptRequestAppService :
foreach (var inputDetail in inputDetails) foreach (var inputDetail in inputDetails)
{ {
var detail = ObjectMapper.Map<ProductReceiptRequestImportInput, ProductReceiptRequestDetail>(inputDetail); var detail =
ObjectMapper.Map<ProductReceiptRequestImportInput, ProductReceiptRequestDetail>(inputDetail);
detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number); detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number);
@ -250,7 +300,8 @@ public class ProductReceiptRequestAppService :
return (entites, deleteEntites); return (entites, deleteEntites);
} }
private async Task SetDetailPropertiesAsync(ProductReceiptRequestDetail detail, ProductReceiptRequestImportInput input) private async Task SetDetailPropertiesAsync(ProductReceiptRequestDetail detail,
ProductReceiptRequestImportInput input)
{ {
var itemBasic = await ItemBasicAclService.GetByCodeAsync(input.ItemCode).ConfigureAwait(false); var itemBasic = await ItemBasicAclService.GetByCodeAsync(input.ItemCode).ConfigureAwait(false);
@ -279,18 +330,5 @@ public class ProductReceiptRequestAppService :
await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false); await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false);
} }
private async Task SetRequestAutoPropertiesAsync(ProductReceiptRequest entity)
{
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.ProductReceipt, Enum.Parse<EnumTransSubType>(entity.Type)).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
#endregion #endregion
} }

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ProductReceiptRequests/ProductReceiptRequest.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -43,7 +44,7 @@ public class ProductReceiptRequest : SfsStoreRequestAggregateRootBase<ProductRec
/// 类型 /// 类型
/// </summary> /// </summary>
[IgnoreUpdate] [IgnoreUpdate]
public string Type { get; set; } public EnumProductReceiptType Type { get; set; }
/// <summary> /// <summary>
/// 明细列表 /// 明细列表

Loading…
Cancel
Save