wanggang 2 years ago
parent
commit
6fed02f917
  1. 19
      be/Hosts/Win_in.Sfs.Wms.Dashboard.Host/Controllers/PlanAndActualController.cs
  2. 2
      be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql
  3. 12
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/TransferLogs/TransferLogAutoMapperProfile.cs
  4. 3
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Transactions/Transaction.cs
  5. 2
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/TransferLogs/TransferLogExtensions.cs
  6. 2
      be/Modules/Message/src/Win_in.Sfs.Message.Application/UserNotifyMessages/UserNotifyMessageAutoMapperProfile.cs
  7. 1
      be/Modules/Message/src/Win_in.Sfs.Message.Application/UserNotifyMessages/UserNotifyMessageService.cs
  8. 11
      be/Modules/Shared/src/Win_in.Sfs.Shared.Application/ExportAndImport/ClosedXmlExportImportService.cs
  9. 2
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain/CurrentUserExtensions.cs
  10. 1
      be/Modules/Shared/src/Win_in.Sfs.Shared.Event/SfsCreatedEntityEventData.cs
  11. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/Inputs/TransferNoteImportInput.cs
  12. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/TransferRequests/Inputs/TransferRequestImportInput.cs
  13. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/InventoryTransferNotes/InventoryTransferNoteMapperProfile.cs
  14. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/NoOkConvertOKNotes/NoOkConvertOKNoteAutoMapperProfile.cs
  15. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/PutawayNotes/PutawayNoteAutoMapperProfile.cs
  16. 362
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs
  17. 299
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/TransferRequests/TransferRequestAppService.cs
  18. 21
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJobManager.cs
  19. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/TransferNotes/TransferNote.cs
  20. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/PurchaseReceiptRequestAutoMapperProfile.cs
  21. 109
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/InspectJobEventHandler.cs
  22. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/PutawayRequestEventHandler.cs
  23. 97
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/TransferRequestEventHandler.cs
  24. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/InspectNoteEventHandler.cs
  25. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/PurchaseReceiptNoteEventHandler.cs
  26. 37
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/TransferNoteEventHandler.cs
  27. 42
      build/src/docker/publish/conf/settings/appsettings.Development.json
  28. 4
      build/src/docker/publish/conf/settings/appsettings.json

19
be/Hosts/Win_in.Sfs.Wms.Dashboard.Host/Controllers/PlanAndActualController.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Serilog;
using Volo.Abp.AspNetCore.Mvc;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.Dashboard.Host.Models;
@ -101,9 +102,9 @@ public class PlanAndActualController : AbpController
dto.MinQty = itemSafetyStork.MinStock;
}
dto.ReceiptNoteCount = CountReceiptNoteCount(purchaseReceipts, detail.ItemCode);
dto.ReceiptQty = CountReceiptQty(purchaseReceipts, detail.ItemCode);
dto.PutawayQty = CountPutawayQty(putawayNotes, detail.ItemCode);
dto.ReceiptNoteCount = CountReceiptNoteCount(purchaseReceipts, detail.ItemCode, detail.Lot);
dto.ReceiptQty = CountReceiptQty(purchaseReceipts, detail.ItemCode, detail.Lot);
dto.PutawayQty = CountPutawayQty(putawayNotes, detail.ItemCode, detail.Lot);
dtos.Add(dto);
}
@ -117,19 +118,19 @@ public class PlanAndActualController : AbpController
return dtos.OrderBy(t => t.SupplierShortName).ToList();
}
private static decimal CountPutawayQty(List<PutawayNoteDTO> putawayNotes, string itemCode)
private static decimal CountPutawayQty(List<PutawayNoteDTO> putawayNotes, string itemCode, string lot)
{
return putawayNotes.Sum(t => t.Details.Where(t => t.ItemCode == itemCode).Sum(t => t.Qty));
return putawayNotes.Sum(t => t.Details.Where(t => t.ItemCode == itemCode && t.ToLot == lot).Sum(t => t.Qty));
}
private static decimal CountReceiptQty(List<PurchaseReceiptNoteDTO> purchaseReceipts, string itemCode)
private static decimal CountReceiptQty(List<PurchaseReceiptNoteDTO> purchaseReceipts, string itemCode, string lot)
{
return purchaseReceipts.Sum(t => t.Details.Where(t => t.ItemCode == itemCode).Sum(t => t.Qty));
return purchaseReceipts.Sum(t => t.Details.Where(t => t.ItemCode == itemCode && t.HandledLot == lot).Sum(t => t.Qty));
}
private static int CountReceiptNoteCount(List<PurchaseReceiptNoteDTO> purchaseReceipts, string itemCode)
private static int CountReceiptNoteCount(List<PurchaseReceiptNoteDTO> purchaseReceipts, string itemCode, string lot)
{
return purchaseReceipts.Sum(t => t.Details.Count(t => t.ItemCode == itemCode));
return purchaseReceipts.Sum(t => t.Details.Count(t => t.ItemCode == itemCode && t.Lot == lot));
}
private async Task<List<SupplierAsnDTO>> GetSupplierAsnsAsync()

2
be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql

@ -1703,7 +1703,7 @@ CREATE TABLE [Store_TransferNote] (
[Id] uniqueidentifier NOT NULL,
[RequestNumber] nvarchar(max) NULL,
[JobNumber] nvarchar(64) NULL,
[Type] nvarchar(64) NULL,
[Type] nvarchar(64) NOT NULL,
[UseOnTheWayLocation] bit NOT NULL,
[ConfirmTime] datetime2 NULL,
[Confirmed] bit NOT NULL,

12
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/TransferLogs/TransferLogAutoMapperProfile.cs

@ -1,4 +1,5 @@
using AutoMapper;
using Volo.Abp.AutoMapper;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Inventory.Domain;
@ -10,6 +11,17 @@ public partial class InventoryApplicationAutoMapperProfile : Profile
{
CreateMap<TransferLog, TransferLogDTO>()
.ReverseMap();
CreateMap<TransferLogEditInput, TransferLog>()
.IgnoreAuditedObjectProperties()
.Ignore(x => x.TransferNumber)
.Ignore(x => x.FromTransNumber)
.Ignore(x => x.ToTransNumber)
.Ignore(x => x.TransferTime)
.Ignore(x => x.ActiveDate)
.Ignore(x => x.ConcurrencyStamp)
.Ignore(x => x.Id)
;
}
}

3
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Transactions/Transaction.cs

@ -56,6 +56,9 @@ public class Transaction : SfsInventoryAggregateRootBase
JobNumber = other.JobNumber;
DocNumber = other.DocNumber;
ManageType = other.ManageType;
LocationGroup= other.LocationGroup;
LocationArea= other.LocationArea;
LocationErpCode= other.LocationErpCode;
}
/// <summary>

2
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/TransferLogs/TransferLogExtensions.cs

@ -62,6 +62,7 @@ public static class TransferLogExtensions
transaction.ProduceDate = transferLog.ProduceDate;
transaction.ExpireDate = transferLog.ExpireDate;
transaction.StdPackQty = transferLog.StdPackQty;
transaction.Uom = transferLog.Uom;
//出库库存事务的数量要改成负数
transaction.Qty = -transferLog.Qty;
@ -92,6 +93,7 @@ public static class TransferLogExtensions
transaction.ProduceDate = transferLog.ProduceDate;
transaction.ExpireDate = transferLog.ExpireDate;
transaction.StdPackQty = transferLog.StdPackQty;
transaction.Uom = transferLog.Uom;
transaction.Qty = transferLog.Qty;
return transaction;

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

@ -1,3 +1,4 @@
using System;
using AutoMapper;
using Volo.Abp.AutoMapper;
using Win_in.Sfs.Message.Application.Contracts;
@ -11,6 +12,7 @@ public class UserNotifyMessageAutoMapperProfile : Profile
{
CreateMap<UserNotifyMessage, UserNotifyMessageDto>()
.IgnoreAuditedObjectProperties()
.BeforeMap((x, y) => y.UserId = x.CreatorId==null?Guid.Empty: x.CreatorId.Value)
.ReverseMap();
CreateMap<UserNotifyMessage, UserNotifyMessageEditInput>();

1
be/Modules/Message/src/Win_in.Sfs.Message.Application/UserNotifyMessages/UserNotifyMessageService.cs

@ -23,7 +23,6 @@ namespace Win_in.Sfs.Message.Application;
public class UserNotifyMessageService : SfsMessageCrudAppServiceBase<UserNotifyMessage, UserNotifyMessageDto, SfsMessageRequestInputBase, UserNotifyMessageEditInput>
, IUserNotifyMessageService
{
public UserNotifyMessageService(IUserNotifyMessageRepository repository) : base(repository)
{
}

11
be/Modules/Shared/src/Win_in.Sfs.Shared.Application/ExportAndImport/ClosedXmlExportImportService.cs

@ -11,6 +11,7 @@ using ClosedXML;
using ClosedXML.Excel;
using ClosedXML.Graphics;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Wordprocessing;
using Irony;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
@ -37,6 +38,11 @@ public class ClosedXmlExportImportService : IExportImportService
{
using var workbook = new XLWorkbook();
var name = typeof(TModel).GetCustomAttribute<DisplayAttribute>()?.Name ?? typeof(TModel).Name;
if (name.Length > 30)
{
name=name.Substring(0, 30);
}
var fileName = $"{name}_导出.xlsx";
var ws = workbook.Worksheets.Add(name);
ws.Style.Font.FontName = "宋体";
@ -79,6 +85,11 @@ public class ClosedXmlExportImportService : IExportImportService
using var workbook = new XLWorkbook();
var type = typeof(TImportModel);
var name = type.GetCustomAttribute<DisplayAttribute>()?.Name ?? type.Name;
if (name.Length > 30)
{
name=name.Substring(0, 30);
}
var fileName = $"{name}_导入模板.xlsx";
var ws = workbook.Worksheets.Add(name);
var properties = GetPropertiesForImportModel(type);

2
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain/CurrentUserExtensions.cs

@ -6,7 +6,7 @@ public static class CurrentUserExtensions
{
public static string GetUserName(this ICurrentUser currentUser)
{
return currentUser.FindClaimValue("name");
return currentUser.Name;
}
public static string GetName(this ICurrentUser currentUser)

1
be/Modules/Shared/src/Win_in.Sfs.Shared.Event/SfsCreatedEntityEventData.cs

@ -6,5 +6,6 @@ public class SfsCreatedEntityEventData<TEntity> : EntityEventData<TEntity>
{
public SfsCreatedEntityEventData(TEntity entity) : base(entity)
{
}
}

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/Inputs/TransferNoteImportInput.cs

@ -1,4 +1,6 @@
using System;
using System.ComponentModel.DataAnnotations;
using DocumentFormat.OpenXml.Drawing;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
@ -11,6 +13,9 @@ public class TransferNoteImportInput : SfsStoreImportInputBase
/// </summary>
[Display(Name = "调拨类型")]
[Required(ErrorMessage = "{0}是必填项")]
[ImporterHeader(Name = "调拨类型")]
[ExporterHeader(DisplayName = "调拨类型")]
[ValueMapping("区域内调拨(储位内移库)", EnumTransSubType.Transfer_Inside)]
public string Type { get; set; }
/// <summary>

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/TransferRequests/Inputs/TransferRequestImportInput.cs

@ -12,6 +12,9 @@ public class TransferRequestImportInput : SfsStoreImportInputBase
/// </summary>
[Display(Name = "调拨类型")]
[Required(ErrorMessage = "{0}是必填项")]
[ImporterHeader(Name = "调拨类型")]
[ExporterHeader(DisplayName = "调拨类型")]
[ValueMapping("客户库位调拨(客户储位调拨)", EnumTransSubType.Transfer_Customer)]
public string Type { get; set; }
/// <summary>

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/InventoryTransferNotes/InventoryTransferNoteMapperProfile.cs

@ -17,9 +17,22 @@ public partial class StoreApplicationAutoMapperProfile : Profile
CreateMap<InventoryTransferNoteDetailInput, InventoryTransferNoteDetail>()
.IgnoreAuditedObjectProperties()
.Ignore(x => x.MasterID)
.Ignore(x => x.TenantId)
.Ignore(x => x.Number)
.Ignore(x => x.Id);
.Ignore(x => x.Id)
;
CreateMap<InventoryTransferNoteEditInput, InventoryTransferNote>()
.IgnoreAuditedObjectProperties()
.Ignore(x => x.TenantId)
.Ignore(x => x.Id)
;
CreateMap<InventoryTransferNoteImportInput, InventoryTransferNote>()
.IgnoreAuditedObjectProperties()
.Ignore(x => x.TenantId)
.Ignore(x => x.Id)
;
}
}

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/NoOkConvertOKNotes/NoOkConvertOKNoteAutoMapperProfile.cs

@ -19,7 +19,10 @@ public partial class StoreApplicationAutoMapperProfile : Profile
CreateMap<NoOkConvertOkNoteEditInput, NoOkConvertOkNote>()
.IgnoreAuditedObjectProperties()
.Ignore(x => x.Number)
.Ignore(x => x.Details)
.Ignore(x => x.Id);
CreateMap<NoOkConvertOkNoteDetailInput, NoOkConvertOkNoteDetail>()
.IgnoreAuditedObjectProperties()
;
}
}

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/PutawayNotes/PutawayNoteAutoMapperProfile.cs

@ -23,5 +23,9 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.Number)
.Ignore(x => x.Id)
.Ignore(x => x.JobNumber);
CreateMap<PutawayNoteEditInput, PutawayNote>()
.IgnoreAuditedObjectProperties()
;
}
}

362
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs

@ -1,14 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
@ -19,290 +18,279 @@ using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application;
/// <summary>
/// 调拨转移记录
/// 调拨转移记录
/// </summary>
[Authorize]
[Route($"{StoreConsts.RootPath}transfer-note")]
public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
<TransferNote, TransferNoteDTO, SfsStoreRequestInputBase, TransferNoteEditInput, TransferNoteDetail, TransferNoteDetailDTO, SfsStoreRequestInputBase, TransferNoteImportInput>,
<TransferNote, TransferNoteDTO, SfsStoreRequestInputBase, TransferNoteEditInput, TransferNoteDetail,
TransferNoteDetailDTO, SfsStoreRequestInputBase, TransferNoteImportInput>,
ITransferNoteAppService
{
private readonly ITransferNoteManager _transferNoteManager;
private readonly ILocationCapacityAppService _locationCapacityAppService;
private readonly IBalanceAppService _balanceAppService;
private readonly ILocationAppService _locationAppService;
public TransferNoteAppService(
ITransferNoteRepository repository
, ITransferNoteManager transferNoteManager
, ILocationCapacityAppService locationCapacityAppService
) : base(repository)
ITransferNoteRepository repository,
ITransferNoteManager transferNoteManager,
IBalanceAppService balanceAppService,
ILocationAppService locationAppService) : base(repository)
{
_transferNoteManager = transferNoteManager;
_locationCapacityAppService = locationCapacityAppService;
_balanceAppService = balanceAppService;
_locationAppService = locationAppService;
}
/// <summary>
/// 库存转移
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("")]
public override async Task<TransferNoteDTO> CreateAsync(TransferNoteEditInput input)
{
var entity = ObjectMapper.Map<TransferNoteEditInput, TransferNote>(input);
await _transferNoteManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<TransferNote, TransferNoteDTO>(entity);
return dto;
}
#region 东阳使用
/// <summary>
/// 【批量】 库存转移
/// 用来重写 导入数据时可以加工数据
/// </summary>
/// <param name="input"></param>
/// <param name="dictionary"></param>
/// <returns></returns>
[HttpPost("create-many")]
public async Task<List<TransferNoteDTO>> CreateManyAsync(List<TransferNoteEditInput> input)
protected override async Task<Dictionary<TransferNote, EntityState>> ImportProcessingEntityAsync(
Dictionary<TransferNote, EntityState> dictionary)
{
var entitys = ObjectMapper.Map<List<TransferNoteEditInput>, List<TransferNote>>(input);
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
var resultEntity = new List<TransferNote>();
foreach (var entity in entitys)
foreach (var transferNote in addList)
{
resultEntity.Add(await _transferNoteManager.CreateAsync(entity).ConfigureAwait(false));
_ = ObjectMapper.Map<TransferNote, TransferNoteDTO>(entity);
if (transferNote.Type == EnumTransSubType.Transfer_Inside.GetDisplayName()) //储位内调拨
{
transferNote.Type = EnumTransSubType.Transfer_Inside.ToString();//重点 需要转换
foreach (var detail in transferNote.Details)
{
var balanceDto = await _balanceAppService.GetByItemLocationAndPackingAsync(detail.FromPackingCode,
detail.ItemCode, detail.FromLocationCode).ConfigureAwait(false);
var toLocationDto= await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
detail.OnTheWayLocationCode = bool.FalseString;
detail.ItemCode=balanceDto.ItemCode;
detail.ArriveDate=balanceDto.ArriveDate;
detail.ItemDesc1=balanceDto.ItemDesc1;
detail.ItemDesc2=balanceDto.ItemDesc2;
detail.ItemName=balanceDto.ItemName;
detail.ProduceDate=balanceDto.ProduceDate;
detail.Qty=balanceDto.Qty;
detail.Uom=balanceDto.Uom;
detail.ExpireDate=balanceDto.ExpireDate;
detail.StdPackQty=balanceDto.StdPackQty;
detail.SupplierBatch=balanceDto.SupplierBatch;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromContainerCode = balanceDto.ContainerCode;
detail.FromLocationErpCode = balanceDto.LocationErpCode;
detail.FromLocationGroup = balanceDto.LocationGroup;
detail.FromPackingCode = balanceDto.PackingCode;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromStatus = balanceDto.Status;
detail.FromWarehouseCode = balanceDto.WarehouseCode;
detail.FromLot = balanceDto.Lot;
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.LocationGroupCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ToContainerCode = balanceDto.ContainerCode;
detail.ToPackingCode = balanceDto.PackingCode;
detail.ToLocationArea = balanceDto.LocationArea;
detail.ToStatus = balanceDto.Status;
detail.ToLot = balanceDto.Lot;
}
}
}
return ObjectMapper.Map<List<TransferNote>, List<TransferNoteDTO>>(resultEntity);
return dictionary;
}
/// <summary>
/// 确认对应的记录单
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost("confirm/{id}")]
public virtual async Task<TransferNoteDTO> ConfirmAsync(Guid id)
{
var entity = await _transferNoteManager.ConfirmAsync(id).ConfigureAwait(false);
var dto = ObjectMapper.Map<TransferNote, TransferNoteDTO>(entity);
return dto;
}
/// <summary>
/// 按条件获取线边调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// 按条件获取线边调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-wip-list")]
public virtual async Task<PagedResultDto<TransferNoteDTO>> GetWipTransferListAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
public virtual async Task<PagedResultDto<TransferNoteDTO>> GetWipTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_WIP, includeDetails, cancellationToken).ConfigureAwait(false);
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_WIP, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// 按条件获取储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-erp-loc-list")]
public virtual async Task<PagedResultDto<TransferNoteDTO>> GetAreaTransferListAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
public virtual async Task<PagedResultDto<TransferNoteDTO>> GetAreaTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Area, includeDetails, cancellationToken).ConfigureAwait(false);
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Area, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// 按条件获取储位内移库的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-inside-list")]
public virtual async Task<PagedResultDto<TransferNoteDTO>> GetInsideTransferListAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
public virtual async Task<PagedResultDto<TransferNoteDTO>> GetInsideTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Inside, includeDetails, cancellationToken).ConfigureAwait(false);
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Inside, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取客户储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// 按条件获取客户储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-custom-loc-list")]
public virtual async Task<PagedResultDto<TransferNoteDTO>> GetCustomerTransferListAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
public virtual async Task<PagedResultDto<TransferNoteDTO>> GetCustomerTransferListAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Customer, includeDetails, cancellationToken).ConfigureAwait(false);
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Customer, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// 按条件获取储位间调拨的分页列表
/// request sample
/// {
/// "maxResultCount": 1000,
/// "skipCount": 0,
/// "sorting": "",
/// "condition": { "filters": []}
/// }
/// </summary>
/// <param name="sfsRequestDTO"></param>
/// <param name="includeDetails"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("get-diff-erp-loc-list")]
public virtual async Task<PagedResultDto<TransferNoteDTO>> GetListForDiffERPLocAsync(SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
public virtual async Task<PagedResultDto<TransferNoteDTO>> GetListForDiffERPLocAsync(
SfsStoreRequestInputBase sfsRequestDTO, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Warehouse, includeDetails, cancellationToken).ConfigureAwait(false);
return await GetSubTypeListAsync(sfsRequestDTO, EnumTransSubType.Transfer_Warehouse, includeDetails,
cancellationToken).ConfigureAwait(false);
}
private async Task<PagedResultDto<TransferNoteDTO>> GetSubTypeListAsync(SfsStoreRequestInputBase sfsRequestDTO, EnumTransSubType type, bool includeDetails = false,
CancellationToken cancellationToken = default)
private async Task<PagedResultDto<TransferNoteDTO>> GetSubTypeListAsync(SfsStoreRequestInputBase sfsRequestDTO,
EnumTransSubType type, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
sfsRequestDTO.Condition.Filters.Add(new Filter
{
Action = "==",
Column = "Type",
Logic = EnumFilterLogic.And.ToString(),
Value = type.ToString()
});
sfsRequestDTO.Condition.Filters.Add(new Sfs.Shared.Domain.Filter() { Action = "==", Column = "Type", Logic = EnumFilterLogic.And.ToString(), Value = ((int)type).ToString(), });
Expression<Func<TransferNote, bool>> expression = sfsRequestDTO.Condition.Filters?.Count > 0
var expression = sfsRequestDTO.Condition.Filters?.Count > 0
? sfsRequestDTO.Condition.Filters.ToLambda<TransferNote>()
: p => true;
return await GetPagedListAsync(expression, sfsRequestDTO.SkipCount, sfsRequestDTO.MaxResultCount, sfsRequestDTO.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
return await GetPagedListAsync(expression, sfsRequestDTO.SkipCount, sfsRequestDTO.MaxResultCount,
sfsRequestDTO.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
}
protected virtual async Task ImportDataAsync(List<TransferNote> entites, List<TransferNote> deleteEntities)
{
await _transferNoteManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false);
}
#endregion
protected override Func<TransferNoteImportInput, object> GetEntityExpression()
{
return p => (1);
}
protected virtual async Task<(List<TransferNote> entites, List<TransferNote> deleteEntities)> BuildImportDataAsync(ImportResult<TransferNoteImportInput> importResult, EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false)
/// <summary>
/// 库存转移
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("")]
public override async Task<TransferNoteDTO> CreateAsync(TransferNoteEditInput input)
{
if (importResult.Data.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
{
if (!isAllowPartImport)
{
return (null, null);
}
}
var entity = ObjectMapper.Map<TransferNoteEditInput, TransferNote>(input);
var entites = new List<TransferNote>();
await _transferNoteManager.CreateAsync(entity).ConfigureAwait(false);
var details = new List<TransferNoteDetail>();
var dto = ObjectMapper.Map<TransferNote, TransferNoteDTO>(entity);
var deleteEntites = new List<TransferNote>();
return dto;
}
var entityExpression = GetEntityExpression();
/// <summary>
/// 【批量】 库存转移
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("create-many")]
public async Task<List<TransferNoteDTO>> CreateManyAsync(List<TransferNoteEditInput> input)
{
var entitys = ObjectMapper.Map<List<TransferNoteEditInput>, List<TransferNote>>(input);
var groupList = importResult.Data.ToList().GroupBy(entityExpression).Distinct().ToList();
var resultEntity = new List<TransferNote>();
foreach (var group in groupList)
foreach (var entity in entitys)
{
var input = group.FirstOrDefault();
var inputDetails = group.ToList();
if (inputDetails.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
{
continue;
}
var exist = await GetEntityAsync(input).ConfigureAwait(false);
var entity = ObjectMapper.Map<TransferNoteImportInput, TransferNote>(input);
await SetEntityPropertiesAsync(entity, input).ConfigureAwait(false);
switch (importMethod)
{
case EnumImportMethod.Update:
if (exist != null)
{
entity.SetId(exist.Id);
}
break;
case EnumImportMethod.Replace:
if (exist != null)
{
deleteEntites.Add(exist);
}
break;
}
foreach (var inputDetail in inputDetails)
{
var detail = ObjectMapper.Map<TransferNoteImportInput, TransferNoteDetail>(inputDetail);
await SetDetailPropertiesAsync(detail, input).ConfigureAwait(false);
entity.AddDetail(detail);
}
entites.Add(entity);
resultEntity.Add(await _transferNoteManager.CreateAsync(entity).ConfigureAwait(false));
_ = ObjectMapper.Map<TransferNote, TransferNoteDTO>(entity);
}
return (entites, deleteEntites);
}
private static async Task SetDetailPropertiesAsync(TransferNoteDetail detail, TransferNoteImportInput input)
{
await Task.CompletedTask.ConfigureAwait(false);
return ObjectMapper.Map<List<TransferNote>, List<TransferNoteDTO>>(resultEntity);
}
private static async Task SetEntityPropertiesAsync(TransferNote entity, TransferNoteImportInput input)
/// <summary>
/// 确认对应的记录单
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost("confirm/{id}")]
public virtual async Task<TransferNoteDTO> ConfirmAsync(Guid id)
{
await Task.CompletedTask.ConfigureAwait(false);
entity.UseOnTheWayLocation = false;//不需要中间库
entity.Confirmed = true;//自动确认
var entity = await _transferNoteManager.ConfirmAsync(id).ConfigureAwait(false);
var dto = ObjectMapper.Map<TransferNote, TransferNoteDTO>(entity);
return dto;
}
}

299
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/TransferRequests/TransferRequestAppService.cs

@ -4,13 +4,15 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Application.Dtos;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -23,43 +25,102 @@ namespace Win_in.Sfs.Wms.Store.Application;
[Authorize]
[Route($"{StoreConsts.RootPath}transfer-request")]
public class TransferRequestAppService : SfsStoreRequestAppServiceBase
<TransferRequest, TransferRequestDTO, SfsStoreRequestInputBase, TransferRequestEditInput, TransferRequestDetail, TransferRequestDetailDTO, SfsStoreRequestInputBase, TransferRequestImportInput>,
<TransferRequest, TransferRequestDTO, SfsStoreRequestInputBase, TransferRequestEditInput, TransferRequestDetail,
TransferRequestDetailDTO, SfsStoreRequestInputBase, TransferRequestImportInput>,
ITransferRequestAppService
{
private readonly ITransferRequestManager _transferRequestManager;
private readonly IBalanceAppService _balanceAppService;
private readonly ILocationAppService _locationAppService;
public TransferRequestAppService(
ITransferRequestRepository repository
, ITransferRequestManager transferRequestManager
) : base(repository, transferRequestManager)
ITransferRequestRepository repository,
ITransferRequestManager transferRequestManager,
IBalanceAppService balanceAppService,
ILocationAppService locationAppService) : base(repository, transferRequestManager)
{
_transferRequestManager = transferRequestManager;
_balanceAppService = balanceAppService;
_locationAppService = locationAppService;
}
#region 东阳使用
/// <summary>
/// 【创建】库移请求
/// 用来重写 导入数据时可以加工数据
/// </summary>
/// <param name="input"></param>
/// <param name="dictionary"></param>
/// <returns></returns>
[HttpPost("")]
public override async Task<TransferRequestDTO> CreateAsync(TransferRequestEditInput input)
protected override async Task<Dictionary<TransferRequest, EntityState>> ImportProcessingEntityAsync(
Dictionary<TransferRequest, EntityState> dictionary)
{
var entity = ObjectMapper.Map<TransferRequestEditInput, TransferRequest>(input);
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var transferRequest in addList)
{
if (transferRequest.Type == EnumTransSubType.Transfer_Customer.GetDisplayName()) //客户储位调拨
{
transferRequest.Type = EnumTransSubType.Transfer_Customer.ToString(); //重点 需要转换
transferRequest.UseOnTheWayLocation = true;
foreach (var detail in transferRequest.Details)
{
var balanceDto = await _balanceAppService.GetByItemLocationAndPackingAsync(detail.FromPackingCode,
detail.ItemCode, detail.FromLocationCode).ConfigureAwait(false);
var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode)
.ConfigureAwait(false);
detail.ItemCode = balanceDto.ItemCode;
detail.ArriveDate = balanceDto.ArriveDate;
detail.ItemDesc1 = balanceDto.ItemDesc1;
detail.ItemDesc2 = balanceDto.ItemDesc2;
detail.ItemName = balanceDto.ItemName;
detail.ProduceDate = balanceDto.ProduceDate;
detail.Qty = balanceDto.Qty;
detail.Uom = balanceDto.Uom;
detail.ExpireDate = balanceDto.ExpireDate;
detail.StdPackQty = balanceDto.StdPackQty;
detail.SupplierBatch = balanceDto.SupplierBatch;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromContainerCode = balanceDto.ContainerCode;
detail.FromLocationErpCode = balanceDto.LocationErpCode;
detail.FromLocationGroup = balanceDto.LocationGroup;
detail.FromPackingCode = balanceDto.PackingCode;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromStatus = balanceDto.Status;
detail.FromWarehouseCode = balanceDto.WarehouseCode;
detail.FromLot = balanceDto.Lot;
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.LocationGroupCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ToContainerCode = balanceDto.ContainerCode;
detail.ToPackingCode = balanceDto.PackingCode;
detail.ToLocationArea = balanceDto.LocationArea;
detail.ToStatus = balanceDto.Status;
detail.ToLot = balanceDto.Lot;
}
await SetEntityPropertiesAsync(transferRequest, EnumTransSubType.Transfer_Customer).ConfigureAwait(false);
}
}
return dictionary;
}
private async Task SetEntityPropertiesAsync(TransferRequest entity, EnumTransSubType subType)
{
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Transfer, subType)
.ConfigureAwait(false);
entity.Worker = CurrentUser.GetUserName();
var subType = Enum.Parse<EnumTransSubType>(input.Type);
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Transfer, subType).ConfigureAwait(false);
entity.Type = ((int)subType).ToString();
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
await _transferRequestManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<TransferRequest, TransferRequestDTO>(entity);
return dto;
}
#region 查询相关
@ -155,6 +216,7 @@ public class TransferRequestAppService : SfsStoreRequestAppServiceBase
return await GetListForOtherBaseAsync(sfsRequestDTO, EnumTransSubType.Transfer_WIP, includeDetails,
cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// 按条件获取分页列表
/// </summary>
@ -168,7 +230,9 @@ public class TransferRequestAppService : SfsStoreRequestAppServiceBase
CancellationToken cancellationToken = default)
{
sfsRequestDTO.Condition.Filters.Add(new Filter
{ Action = "==", Column = "Type", Logic = EnumFilterLogic.And.ToString(), Value = ((int)type).ToString() });
{
Action = "==", Column = "Type", Logic = EnumFilterLogic.And.ToString(), Value = type.ToString()
});
var expression = sfsRequestDTO.Condition.Filters?.Count > 0
? sfsRequestDTO.Condition.Filters.ToLambda<TransferRequest>()
@ -178,84 +242,36 @@ public class TransferRequestAppService : SfsStoreRequestAppServiceBase
sfsRequestDTO.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
}
#endregion 查询相关
#endregion
#endregion
/// <summary>
/// 【创建】库移请求
/// </summary>
/// <param name="importResult"></param>
/// <param name="importMethod"></param>
/// <param name="isAllowPartImport"></param>
/// <param name="input"></param>
/// <returns></returns>
protected virtual async Task<(List<TransferRequest> entites, List<TransferRequest> deleteEntities)>
BuildImportDataAsync(ImportResult<TransferRequestImportInput> importResult,
EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false)
[HttpPost("")]
public override async Task<TransferRequestDTO> CreateAsync(TransferRequestEditInput input)
{
if (importResult.Data.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
{
if (!isAllowPartImport)
{
return (null, null);
}
}
var entites = new List<TransferRequest>();
var details = new List<TransferRequestDetail>();
var deleteEntites = new List<TransferRequest>();
var entityExpression = GetEntityExpression();
var groupList = importResult.Data.ToList().GroupBy(entityExpression).Distinct().ToList();
foreach (var group in groupList)
{
var input = group.FirstOrDefault();
var inputDetails = group.ToList();
if (!inputDetails.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
{
var exist = await GetEntityAsync(input).ConfigureAwait(false);
var entity = ObjectMapper.Map<TransferRequestImportInput, TransferRequest>(input);
await SetEntityPropertiesAsync(entity, input.Type).ConfigureAwait(false);
switch (importMethod)
{
case EnumImportMethod.Update:
if (exist != null)
{
entity.SetId(exist.Id);
}
break;
case EnumImportMethod.Replace:
if (exist != null)
{
deleteEntites.Add(exist);
}
break;
}
foreach (var inputDetail in inputDetails)
{
var detail = ObjectMapper.Map<TransferRequestImportInput, TransferRequestDetail>(inputDetail);
var entity = ObjectMapper.Map<TransferRequestEditInput, TransferRequest>(input);
//detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number);
var subType = Enum.Parse<EnumTransSubType>(input.Type);
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Transfer, subType)
.ConfigureAwait(false);
entity.Type = ((int)subType).ToString();
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
await SetDetailPropertiesAsync(detail, input).ConfigureAwait(false);
entity.AddDetail(detail);
}
await _transferRequestManager.CreateAsync(entity).ConfigureAwait(false);
entites.Add(entity);
}
}
var dto = ObjectMapper.Map<TransferRequest, TransferRequestDTO>(entity);
return (entites, deleteEntites);
return dto;
}
protected async Task CheckFromLocationAsync(string locationCode, List<ValidationResult> validationRresult)
@ -268,7 +284,7 @@ public class TransferRequestAppService : SfsStoreRequestAppServiceBase
}
protected virtual async Task CheckImportInputBusinessAsync(TransferRequestImportInput importInput,
EnumImportMethod importMethod, List<ValidationResult> validationRresult)
EnumImportMethod importMethod, List<ValidationResult> validationRresult)
{
ChecktQty(importInput, validationRresult);
await CheckItemBasicAsync(importInput, validationRresult).ConfigureAwait(false);
@ -277,13 +293,15 @@ public class TransferRequestAppService : SfsStoreRequestAppServiceBase
await CheckToLocationAsync(importInput.ToLocationCode, validationRresult).ConfigureAwait(false);
}
protected async Task CheckItemBasicAsync(TransferRequestImportInput importInput, List<ValidationResult> validationRresult)
protected async Task CheckItemBasicAsync(TransferRequestImportInput importInput,
List<ValidationResult> validationRresult)
{
var item = await ItemBasicAclService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false);
if (item == null)
{
validationRresult.Add("物品代码", $"物品代码{importInput.ItemCode}不存在");
}
if (importInput.Qty <= 0)
{
validationRresult.Add("调整数量", $"调整数量{importInput.Qty}必须大于0");
@ -302,103 +320,4 @@ public class TransferRequestAppService : SfsStoreRequestAppServiceBase
protected void ChecktQty(TransferRequestImportInput importInput, List<ValidationResult> validationRresult)
{
}
/// <summary>
/// 导入汇总
/// </summary>
/// <returns></returns>
protected override Func<TransferRequestImportInput, object> GetEntityExpression()
{
return p => 1;
}
protected virtual async Task ImportDataAsync(List<TransferRequest> entites, List<TransferRequest> deleteEntities)
{
await _transferRequestManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false);
}
private static EnumTransSubType ConvertToTransSubType(string type)
{
switch (type)
{
case "线边仓调拨":
return EnumTransSubType.Transfer_WIP;
case "客户储位调拨":
return EnumTransSubType.Transfer_Customer;
case "区域内调拨":
return EnumTransSubType.Transfer_Inside;
case "区域间调拨":
return EnumTransSubType.Transfer_Area;
case "库间调拨":
return EnumTransSubType.Transfer_Warehouse;
}
return EnumTransSubType.None;
}
private static async Task SetDetailPropertiesAsync(TransferRequestDetail detail, TransferRequestImportInput input)
{
await Task.CompletedTask.ConfigureAwait(false);
//if (!string.IsNullOrEmpty(input.OnceBusiCode))
//{
// var dict = await _dictApp.GetByTypeAsync(nameof(input.OnceBusiCode));
// if (dict.Items != null && dict.Items.Count > 0)
// {
// var item = dict.Items.FirstOrDefault(t => t.Code == input.OnceBusiCode);
// Check.NotNull(item, "次交易码", "次交易码不存在");
// detail.SetProperty("OnceBusiCode", item.Code);
// detail.SetProperty("OnceBusiName", item.Name);
// }
//}
//if (!string.IsNullOrEmpty(input.CaseCode))
//{
// var dict = await _dictApp.GetByTypeAsync(nameof(input.CaseCode));
// if (dict.Items != null && dict.Items.Count > 0)
// {
// var item = dict.Items.FirstOrDefault(t => t.Code == input.CaseCode);
// Check.NotNull(item, "专案代码", "专案代码不存在");
// detail.SetProperty("CaseCode", item.Code);
// detail.SetProperty("CaseName", item.Name);
// }
//}
//if (!string.IsNullOrEmpty(input.ProjCapacityCode))
//{
// var dict = await _dictApp.GetByTypeAsync(nameof(input.ProjCapacityCode));
// if (dict.Items != null && dict.Items.Count > 0)
// {
// var item = dict.Items.FirstOrDefault(t => t.Code == input.ProjCapacityCode);
// Check.NotNull(item, "项目分类代码", "项目分类代码不存在");
// detail.SetProperty("ProjCapacityCode", item.Code);
// detail.SetProperty("ProjCapacityName", item.Name);
// }
//}
}
private async Task SetEntityPropertiesAsync(TransferRequest entity, string inputType)
{
var subType = ConvertToTransSubType(inputType);
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Transfer, subType).ConfigureAwait(false);
entity.Type = ((int)subType).ToString();
entity.Worker = CurrentUser.GetUserName();
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
}

21
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/InspectJobs/InspectJobManager.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Uow;
using Volo.Abp.Users;
using Volo.Abp.Validation;
using Win_in.Sfs.Basedata.Application.Contracts;
@ -47,6 +48,7 @@ public class InspectJobManager : SfsJobManagerBase<InspectJob, InspectJobDetail>
/// <param name="user"></param>
/// <param name="entity"></param>
/// <returns></returns>
[UnitOfWork]
public override async Task<InspectJob> CompleteAsync(InspectJob input, ICurrentUser user)
{
//执行任务
@ -134,12 +136,22 @@ public class InspectJobManager : SfsJobManagerBase<InspectJob, InspectJobDetail>
/// <returns></returns>
public async Task<InspectJobSummaryDetail> CompleteSummaryDetailStatusAsync(Guid id, Guid summaryDetailId, InspectJobSummaryDetail input, ICurrentUser currentUser)
{
var jobEntity = await Repository.FindAsync(id).ConfigureAwait(false);
var jobEntity = await Repository.FindAsync(id);
jobEntity.Details.Where(p => p.DetailInspectStatus == EnumDetailInspectStatus.DefaultOK ||
p.DetailInspectStatus == EnumDetailInspectStatus.OK).ToList().ForEach(p =>
{
p.GoodQty = p.ReceiveQty;
});
var goodqty = jobEntity.Details.Where(p =>
p.DetailInspectStatus == EnumDetailInspectStatus.DefaultOK ||
p.DetailInspectStatus == EnumDetailInspectStatus.OK).Sum(p => p.GoodQty);
//获取 汇总详情
var summaryDetailEntity = jobEntity.SummaryDetails.Find(p => p.Id == summaryDetailId);
var itemQuality = await _itemQualityAclService.GetByItemCodeAsync(summaryDetailEntity.ItemCode, jobEntity.SupplierCode).ConfigureAwait(false);
var itemQuality = await _itemQualityAclService.GetByItemCodeAsync(summaryDetailEntity.ItemCode, jobEntity.SupplierCode);
if (itemQuality.InspectType != EnumInspectType.Exempt)
{
//获取质检标准
@ -150,6 +162,9 @@ public class InspectJobManager : SfsJobManagerBase<InspectJob, InspectJobDetail>
await CheckCompleteSummaryDetailAsync(summaryDetailEntity, aql, input).ConfigureAwait(false);
}
input.GoodQty = goodqty;
summaryDetailEntity.GoodQty = goodqty;
//构造 汇总详情
await BuildInspectJobSummaryDetailAsync(input, summaryDetailEntity).ConfigureAwait(false);
@ -174,7 +189,7 @@ public class InspectJobManager : SfsJobManagerBase<InspectJob, InspectJobDetail>
#endregion
await LocalEventBus.PublishAsync(new SfsUpdateEntitySummaryDetailEventData<InspectJob>(CopyJob),false).ConfigureAwait(false);
await LocalEventBus.PublishAsync(new SfsUpdateEntitySummaryDetailEventData<InspectJob>(CopyJob)).ConfigureAwait(false);
return summaryDetailEntity;
}

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/TransferNotes/TransferNote.cs

@ -28,14 +28,13 @@ public class TransferNote : SfsStoreAggregateRootBase<TransferNoteDetail>, IHasJ
/// 调拨类型
/// </summary>
[Display(Name = "调拨类型")]
[IgnoreUpdate]
[Required(ErrorMessage = "调拨类型不能为空")]
public string Type { get; set; }
/// <summary>
/// 使用中间库
/// </summary>
[Display(Name = "使用中间库")]
[IgnoreUpdate]
public bool UseOnTheWayLocation { get; set; }
/// <summary>

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/PurchaseReceiptRequestAutoMapperProfile.cs

@ -41,7 +41,6 @@ public partial class StoreEventAutoMapperProfile : Profile
#region PurchaseReceiptRequestDetail, PurchaseReceiptJobDetailInput
CreateMap<PurchaseReceiptRequestDetail, PurchaseReceiptJobDetailInput>()
.Ignore(x => x.ArriveDate)
.Ignore(x => x.Status)
.Ignore(x => x.RecommendToLocationCode)
.Ignore(x => x.RecommendToLocationErpCode)

109
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/InspectJobEventHandler.cs

@ -15,51 +15,74 @@ public class InspectJobEventHandler :
, ILocalEventHandler<SfsCreatedEntityEventData<InspectJob>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<InspectJob>>>
, ILocalEventHandler<SfsCompletedEntityEventData<InspectJob>>
, ILocalEventHandler<SfsUpdateEntitySummaryDetailEventData<InspectJob>>
, ILocalEventHandler<SfsUpdateEntitySummaryDetailEventData<InspectJob>>
{
private readonly IInspectNoteAppService _inspectNoteAppService;
public InspectJobEventHandler(
IInspectNoteAppService inspectNoteAppService
)
)
{
_inspectNoteAppService = inspectNoteAppService;
}
/// <summary>
/// 质检任务 完成后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCompletedEntityEventData<InspectJob> eventData)
{
var entity = eventData.Entity;
var inspectNote = BuildInspectNote(entity);
await _inspectNoteAppService.CreateAsync(inspectNote).ConfigureAwait(false);
//var entity = eventData.Entity;
await Task.CompletedTask.ConfigureAwait(false);
}
/// <summary>
/// 创建 质检任务
/// 质检任务创建
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<InspectJob> eventData)
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<InspectJob>> eventData)
{
var entity = eventData.Entity;
var inspectNote = BuildInspectNote(entity);
await _inspectNoteAppService.CreateAsync(inspectNote).ConfigureAwait(false);
//await CompleteExemptInspectJobAsync(new List<InspectJob> { entity });
var entities = eventData.Entity;
foreach (var entity in entities)
{
await CreateInspectNoteAsync(entity).ConfigureAwait(false);
}
}
/// <summary>
/// 创建 质检任务后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<InspectJob>> eventData)
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<InspectJob> eventData)
{
_ = eventData.Entity;
var entity = eventData.Entity;
await CreateInspectNoteAsync(entity).ConfigureAwait(false);
}
//await CompleteExemptInspectJobAsync(entities);
await Task.CompletedTask.ConfigureAwait(false);
#region 私有
/// <summary>
/// 创建质检记录
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
private async Task<InspectNoteEditInput> CreateInspectNoteAsync(InspectJob entity)
{
var input = ObjectMapper.Map<InspectJob, InspectNoteEditInput>(entity);
await _inspectNoteAppService.CreateAsync(input).ConfigureAwait(false);
return input;
}
/// <summary>
/// 汇总 详情被修改后
/// 汇总 详情被修改后
/// </summary>
/// <param name="eventData">Event data</param>
[UnitOfWork]
@ -75,7 +98,8 @@ public class InspectJobEventHandler :
{
var noteCreateInput = new InspectNoteEditInput();
var noteSummaryDetailInput = ObjectMapper.Map<InspectJobSummaryDetail, InspectNoteSummaryDetailInput>(jobSummaryDetail);
var noteSummaryDetailInput =
ObjectMapper.Map<InspectJobSummaryDetail, InspectNoteSummaryDetailInput>(jobSummaryDetail);
noteCreateInput.SummaryDetails.Add(noteSummaryDetailInput);
@ -92,13 +116,54 @@ public class InspectJobEventHandler :
}
/// <summary>
/// 构造 质检记录
/// 完成免检任务
/// </summary>
/// <param name="entity"></param>
/// <param name="entities"></param>
/// <returns></returns>
private InspectNoteEditInput BuildInspectNote(InspectJob entity)
private async Task CompleteExemptInspectJobAsync(List<InspectJob> entities)
{
var input = ObjectMapper.Map<InspectJob, InspectNoteEditInput>(entity);
return input;
foreach (var inspectJob in entities)
{
var summaryDetail = inspectJob.SummaryDetails.FirstOrDefault();
//免检任务自动完成 并调用检验记录生成业务
if (summaryDetail?.InspectType != EnumInspectType.Exempt)
{
await CompleteExemptInspectJobAsync(inspectJob, summaryDetail).ConfigureAwait(false);
}
}
}
/// <summary>
/// 处理免检 物品
/// </summary>
/// <param name="inspectJob"></param>
/// <param name="summarydDetail"></param>
/// <returns></returns>
private async Task CompleteExemptInspectJobAsync(InspectJob inspectJob, InspectJobSummaryDetail summarydDetail)
{
//任务状态直接完成
await inspectJob.CompleteAsync(inspectJob.CreatorId, "", Clock.Now).ConfigureAwait(false);
foreach (var detail in inspectJob.Details)
{
await inspectJob.SetDetail(
detail.Id,
detail.GoodQty,
detail.FailedReason,
detail.FailedQty,
detail.CrackQty,
detail.NotPassedQty,
inspectJob.Worker,
detail.SupplierBatch,
detail.ArriveDate,
detail.ProduceDate,
detail.ExpireDate,
detail.ContainerCode,
detail.LocationCode,
detail.Lot,
detail.PackingCode,
detail.ReceiveQty).ConfigureAwait(false);
}
}
#endregion
}

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/PutawayRequestEventHandler.cs

@ -70,7 +70,6 @@ public class PutawayRequestEventHandler
/// <returns></returns>
private async Task<PutawayJobEditInput> BulidPutawayJobCreateInputAsync(PutawayRequest putawayRequest)
{
await Task.CompletedTask.ConfigureAwait(false);
var createInput = ObjectMapper.Map<PutawayRequest, PutawayJobEditInput>(putawayRequest);
createInput.JobType = EnumJobType.PutawayJob;
createInput.JobStatus = EnumJobStatus.Open;

97
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/TransferRequestEventHandler.cs

@ -1,8 +1,12 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Bibliography;
using Volo.Abp.EventBus;
using Volo.Abp.EventBus.Local;
using Volo.Abp.SettingManagement;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Domain;
@ -12,18 +16,29 @@ namespace Win_in.Sfs.Wms.Store.Event.BusinessRequest;
public class TransferRequestEventHandler
: StoreEventHandlerBase
, ILocalEventHandler<SfsCreatedEntityEventData<TransferRequest>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<TransferRequest>>>
, ILocalEventHandler<SfsHandledEntityEventData<TransferRequest>>
//, ILocalEventHandler<SfsSubmittedEntityEventData<TransferRequest>>
//, ILocalEventHandler<SfsAgreedEntityEventData<TransferRequest>>
{
private readonly ITransferNoteManager _transferNoteManager;
private readonly ILocationAppService _locationAppService;
private readonly ITransferRequestManager _transferRequestManager;
protected ILocalEventBus LocalEventBus => LazyServiceProvider.LazyGetRequiredService<ILocalEventBus>();
public TransferRequestEventHandler(
ITransferNoteManager transferNoteManager)
ITransferNoteManager transferNoteManager, ILocationAppService locationAppService, ITransferRequestManager transferRequestManager)
{
_transferNoteManager = transferNoteManager;
_locationAppService = locationAppService;
_transferRequestManager = transferRequestManager;
}
/// <summary>
/// 库存转移 审批通过 后
/// 库存转移 审批通过 后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
@ -32,28 +47,29 @@ public class TransferRequestEventHandler
public async Task HandleEventAsync(SfsHandledEntityEventData<TransferRequest> eventData)
{
var entity = eventData.Entity;
EnumTransSubType enumTransSubType = Enum.Parse<EnumTransSubType>(entity.Type);
var enumTransSubType = Enum.Parse<EnumTransSubType>(entity.Type);
if (entity.DirectCreateNote)
{
var input = ObjectMapper.Map<TransferRequest, TransferNote>(entity);
var transferOnTheWayLocation =
await SettingManager.GetOrNullGlobalAsync(StoreSettings.Common.TransferOnTheWayLocation).ConfigureAwait(false);
//获取在途库
var locationDto = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT)
.ConfigureAwait(false);
input.Details.ForEach(p => p.OnTheWayLocationCode = transferOnTheWayLocation);
var transferOnTheWayLocation =
await SettingManager.GetOrNullGlobalAsync(StoreSettings.Common.TransferOnTheWayLocation)
.ConfigureAwait(false);
// input.
input.Details.ForEach(p => { p.OnTheWayLocationCode = locationDto.Code; });
await _transferNoteManager.CreateAsync(input).ConfigureAwait(false);
}
switch (enumTransSubType)
{
case EnumTransSubType.Transfer_Inside:
case EnumTransSubType.Transfer_Area:
break;
case EnumTransSubType.Transfer_Warehouse:
case EnumTransSubType.Transfer_Customer:
@ -63,4 +79,67 @@ public class TransferRequestEventHandler
break;
}
}
/// <summary>
/// 库移创建后
/// </summary>
/// <param name="eventData">Event data</param>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<TransferRequest> eventData)
{
var entity = eventData.Entity;
if (entity.AutoSubmit)
{
await _transferRequestManager.SubmitAsync(entity).ConfigureAwait(false);
}
}
/// <summary>
/// 库移批量创建后
/// </summary>
/// <param name="eventData">Event data</param>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<TransferRequest>> eventData)
{
var entitys = eventData.Entity;
foreach (var entity in entitys)
{
if (entity.AutoSubmit)
{
await _transferRequestManager.SubmitAsync(entity).ConfigureAwait(false);
}
}
}
///// <summary>
///// 提交后
///// </summary>
///// <param name="eventData">Event data</param>
//[UnitOfWork]
//public virtual async Task HandleEventAsync(SfsSubmittedEntityEventData<TransferRequest> eventData)
//{
// var entity = eventData.Entity;
// if (entity.AutoAgree)
// {
// entity.Agree();
// await LocalEventBus.PublishAsync(new SfsAgreedEntityEventData<TransferRequest>(entity), false)
// .ConfigureAwait(false);
// }
//}
///// <summary>
///// 审批后
///// </summary>
///// <param name="eventData">Event data</param>
//[UnitOfWork]
//public virtual async Task HandleEventAsync(SfsAgreedEntityEventData<TransferRequest> eventData)
//{
// var entity = eventData.Entity;
// if (entity.AutoHandle)
// {
// entity.Handle();
// await LocalEventBus.PublishAsync(new SfsHandledEntityEventData<TransferRequest>(entity), false)
// .ConfigureAwait(false);
// }
//}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/InspectNoteEventHandler.cs

@ -57,6 +57,8 @@ public class InspectNoteEventHandler
FromContainerCode = detail.ContainerCode,
FromLocationCode = detail.LocationCode,
FromLocationErpCode = detail.LocationErpCode,
FromLocationArea = detail.LocationArea,
FromLocationGroup = detail.LocationGroup,
FromLot = detail.Lot,
FromPackingCode = detail.PackingCode,
FromStatus = EnumInventoryStatus.INSP,

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/PurchaseReceiptNoteEventHandler.cs

@ -303,6 +303,8 @@ public class PurchaseReceiptNoteEventHandler
createInput.Details.ForEach(p =>
{
p.LocationGroup = inspectLocation.LocationGroupCode;
p.LocationArea = inspectLocation.AreaCode;
p.LocationCode = inspectLocation.Code;
p.LocationErpCode = inspectLocation.ErpLocationCode;
p.WarehouseCode = inspectLocation.WarehouseCode;

37
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/TransferNoteEventHandler.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
@ -16,13 +17,16 @@ public class TransferNoteEventHandler
: StoreInventoryEventHandlerBase
, ILocalEventHandler<SfsCreatedEntityEventData<TransferNote>>
, ILocalEventHandler<SfsConfirmedEntityEventData<TransferNote>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<TransferNote>>>
{
private const EnumTransType TransType = EnumTransType.Transfer;
private readonly ITransferRequestAppService _transferRequestApp;
private readonly ILocationAppService _locationAppService;
private readonly ITransferLogAppService _transferLogAppService;
public TransferNoteEventHandler(ITransferRequestAppService transferRequestApp)
public TransferNoteEventHandler(ITransferRequestAppService transferRequestApp, ILocationAppService locationAppService, ITransferLogAppService transferLogAppService)
{
_transferRequestApp = transferRequestApp;
_locationAppService = locationAppService;
_transferLogAppService = transferLogAppService;
}
/// <summary>
@ -43,6 +47,25 @@ public class TransferNoteEventHandler
await AddTransferLogsAsync(inputList).ConfigureAwait(false);
}
/// <summary>
/// 批量创建 后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<TransferNote>> eventData)
{
foreach (var entity in eventData.Entity)
{
var route = entity.UseOnTheWayLocation
? EnumTransferRoute.SourceToOnTheWay
: EnumTransferRoute.SourceToDestination;
var inputList = await BuildTransferLogsAsync(entity, route).ConfigureAwait(false);
await AddTransferLogsAsync(inputList).ConfigureAwait(false);
}
}
/// <summary>
/// 确认 后
/// </summary>
@ -63,7 +86,7 @@ public class TransferNoteEventHandler
transferLogs.AddRange(inputList);
await TransferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
await _transferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
}
@ -83,9 +106,9 @@ public class TransferNoteEventHandler
if (note.UseOnTheWayLocation)
{
var fromLocation = await LocationAclService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
var toLocation = await LocationAclService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
var transferOnTheWay = await LocationAclService.GetByCodeAsync(detail.OnTheWayLocationCode).ConfigureAwait(false);
var fromLocation = await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
var toLocation = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
var transferOnTheWay = await _locationAppService.GetByCodeAsync(detail.OnTheWayLocationCode).ConfigureAwait(false);
switch (route)
{

42
build/src/docker/publish/conf/settings/appsettings.Development.json

@ -43,16 +43,16 @@
"http://localhost:9527"
]
},
"AuthServer": {
"Audience": "Auth",
"Authority": "http://dev.ccwin-in.com:21293/",
"ClientId": "Auth_App",
"ClientSecret": "1q2w3E*",
"RequireHttpsMetadata": "false",
"SwaggerClientId": "Auth_App",
"SwaggerClientSecret": "1q2w3e*",
"UseAuth": "true"
},
"AuthServer": {
"Audience": "Auth",
"Authority": "http://dev.ccwin-in.com:21293/",
"ClientId": "Auth_App",
"ClientSecret": "1q2w3E*",
"RequireHttpsMetadata": "false",
"SwaggerClientId": "Auth_App",
"SwaggerClientSecret": "1q2w3e*",
"UseAuth": "true"
},
// "ConnectionStrings": {
// "AbpAuditLogging": "Server=localhost,21195;Database=Wms;Uid=sa;Pwd=aA123456!;timeout=6000;",
// "AbpBackgroundJobs": "Server=localhost,21195;Database=Wms;Uid=sa;Pwd=aA123456!;timeout=6000;",
@ -95,12 +95,12 @@
},
"IdentityClients": {
"Default": {
"Authority": "http://dev.ccwin-in.com:21293",
"ClientId": "Auth_App",
"ClientSecret": "1q2w3E*",
"GrantType": "client_credentials",
"RequireHttps": "false",
"Scope": "Auth"
"Authority": "http://dev.ccwin-in.com:21293",
"ClientId": "Auth_App",
"ClientSecret": "1q2w3E*",
"GrantType": "client_credentials",
"RequireHttps": "false",
"Scope": "Auth"
}
},
"IsMultiTenancy": "True",
@ -110,22 +110,22 @@
},
"RemoteServices": {
"Auth": {
"BaseUrl": "http://dev.ccwin-in.com:21293/"
"BaseUrl": "http://dev.ccwin-in.com:21293/"
},
"BaseData": {
"BaseUrl": "http://dev.ccwin-in.com:21294/"
},
"Default": {
"BaseUrl": "http://dev.ccwin-in.com:21293/"
"BaseUrl": "http://dev.ccwin-in.com:21293/"
},
"FileStorage": {
"BaseUrl": "http://dev.ccwin-in.com:21292/"
},
"Inventory": {
"BaseUrl": "http://localhost:59095/"
"BaseUrl": "http://dev.ccwin-in.com:21295/"
},
"Job": {
"BaseUrl": "http://localhost:59095/"
"BaseUrl": "http://dev.ccwin-in.com:21295/"
},
"Label": {
"BaseUrl": "http://dev.ccwin-in.com:21292/"
@ -134,7 +134,7 @@
"BaseUrl": "http://dev.ccwin-in.com:21292/"
},
"Store": {
"BaseUrl": "http://localhost:59095/"
"BaseUrl": "http://dev.ccwin-in.com:21295"
}
},
"Serilog": {

4
build/src/docker/publish/conf/settings/appsettings.json

@ -100,13 +100,13 @@
//
"RemoteServices": {
"Auth": {
"BaseUrl": "http://localhost:59093/"
"BaseUrl": "http://dev.ccwin-in.com:59093/"
},
"BaseData": {
"BaseUrl": "http://dev.ccwin-in.com:59094/"
},
"Default": {
"BaseUrl": "http://localhost:59093/"
"BaseUrl": "http://dev.ccwin-in.com:59093/"
},
"FileStorage": {
"BaseUrl": "http://dev.ccwin-in.com:59092/"

Loading…
Cancel
Save