Browse Source

采购订单同步和发货单同步添加判断,上价判断订货单是否关闭

dev_DY_CC
lvzb 1 year ago
parent
commit
6cdc537cb5
  1. 7
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/PlanReader.cs
  2. 13
      be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/ShipReader.cs
  3. 2
      be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs
  4. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Orders/PurchaseOrders/IPurchaseOrderAppService.cs
  5. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/PutawayNotes/PutawayNoteAppService.cs
  6. 51
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs
  7. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Orders/PurchaseOrders/IPurchaseOrderManager.cs
  8. 14
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Orders/PurchaseOrders/PurchaseOrderManager.cs

7
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/PlanReader.cs

@ -109,9 +109,10 @@ public class PlanReader : IReader
OrderDate = plan.ReleaseDate, OrderDate = plan.ReleaseDate,
DueDate = plan.PlanArriveDate, DueDate = plan.PlanArriveDate,
ContactName = plan.PlanUserCode, ContactName = plan.PlanUserCode,
OrderStatus = plan.PlanBillState == 0 //OrderStatus = plan.PlanBillState == 0
? EnumOrderStatus.Open // ? EnumOrderStatus.Open
: EnumOrderStatus.Close, // : EnumOrderStatus.Close,
OrderStatus= EnumOrderStatus.Open,
ActiveDate = plan.EosDate, ActiveDate = plan.EosDate,
Worker = plan.PlanUserCode, Worker = plan.PlanUserCode,
// PoType = "2", // PoType = "2",

13
be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/ShipReader.cs

@ -11,6 +11,7 @@ using Win_in.Sfs.Wms.DataExchange.Domain;
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.EOS; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.EOS;
using Win_in.Sfs.Wms.DataExchange.Domain.Shared; using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
using Win_in.Sfs.Wms.DataExchange.WMS.SuppplierAsn; using Win_in.Sfs.Wms.DataExchange.WMS.SuppplierAsn;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent;
@ -22,12 +23,14 @@ public class ShipReader : IReader
private readonly ILogger<ShipReader> _logger; private readonly ILogger<ShipReader> _logger;
private readonly ISupplierItemAppService _supplierItemAppService; private readonly ISupplierItemAppService _supplierItemAppService;
private readonly ISupplierAppService _supplierAppService; private readonly ISupplierAppService _supplierAppService;
private readonly IPurchaseOrderAppService _purchaseOrderAppService;
public ShipReader( public ShipReader(
IShipManager shipManager IShipManager shipManager
, IIncomingFromExternalManager incomingFromExternalManager , IIncomingFromExternalManager incomingFromExternalManager
, ILogger<ShipReader> logger, , ILogger<ShipReader> logger,
ISupplierItemAppService supplierItemAppService, ISupplierItemAppService supplierItemAppService,
ISupplierAppService supplierAppService ISupplierAppService supplierAppService,
IPurchaseOrderAppService purchaseOrderAppService
) )
{ {
_shipManager = shipManager; _shipManager = shipManager;
@ -35,6 +38,7 @@ public class ShipReader : IReader
_logger = logger; _logger = logger;
_supplierItemAppService = supplierItemAppService; _supplierItemAppService = supplierItemAppService;
_supplierAppService = supplierAppService; _supplierAppService = supplierAppService;
_purchaseOrderAppService=purchaseOrderAppService;
} }
public virtual async Task<List<IncomingFromExternal>> ReadAsync() public virtual async Task<List<IncomingFromExternal>> ReadAsync()
@ -52,6 +56,13 @@ public class ShipReader : IReader
{ {
toBeProcessedShips = toBeProcessedShips.Where(r => !shipbillno.Contains(r.ShipBillNo)).ToList(); toBeProcessedShips = toBeProcessedShips.Where(r => !shipbillno.Contains(r.ShipBillNo)).ToList();
} }
//排除没有订单号的收货单(被排出的下次同步)
var pobilllist= toBeProcessedShips.Select(r => r.PlanBillNo).Distinct().ToList();
var ponumber =await _purchaseOrderAppService.GetNoPoBillList(pobilllist).ConfigureAwait(false);
if(ponumber.Count > 0)
{
toBeProcessedShips = toBeProcessedShips.Where(r => !ponumber.Contains(r.PlanBillNo)).ToList();
}
//Ship逐一转换为SupplierAsn //Ship逐一转换为SupplierAsn
var incomingDataList = await BuildIncomingFromExternalFromShipAsync(toBeProcessedShips).ConfigureAwait(false); var incomingDataList = await BuildIncomingFromExternalFromShipAsync(toBeProcessedShips).ConfigureAwait(false);
await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false); await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false);

2
be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs

@ -21,7 +21,7 @@ public static class IncomingToWmsExtensions
{ {
var purchaseOrder = JsonSerializer.Deserialize<PurchaseOrderEditInput>(incomingConverted.DataContent); var purchaseOrder = JsonSerializer.Deserialize<PurchaseOrderEditInput>(incomingConverted.DataContent);
var purchaseOrderAppService = workerContext.ServiceProvider.GetRequiredService<IPurchaseOrderAppService>(); var purchaseOrderAppService = workerContext.ServiceProvider.GetRequiredService<IPurchaseOrderAppService>();
await purchaseOrderAppService.CreateAsync(purchaseOrder).ConfigureAwait(false); await purchaseOrderAppService.CreateOrUpdateAsync(purchaseOrder).ConfigureAwait(false);
} }
public static async Task HandleAsnsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext) public static async Task HandleAsnsAsync(this IncomingToWms incomingConverted, PeriodicBackgroundWorkerContext workerContext)

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Orders/PurchaseOrders/IPurchaseOrderAppService.cs

@ -39,4 +39,6 @@ public interface IPurchaseOrderAppService
Task<List<PurchaseOrderDTO>> CreateManyAsync(List<PurchaseOrderEditInput> inputs); Task<List<PurchaseOrderDTO>> CreateManyAsync(List<PurchaseOrderEditInput> inputs);
Task<List<PurchaseOrderDTO>> GetListBySupplierCodeAsync(string supplierCode, string itemCode); Task<List<PurchaseOrderDTO>> GetListBySupplierCodeAsync(string supplierCode, string itemCode);
Task<List<string>> GetNoPoBillList(List<string> poBillNo);
Task<PurchaseOrderDTO> CreateOrUpdateAsync(PurchaseOrderEditInput input);
} }

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/PutawayNotes/PutawayNoteAppService.cs

@ -28,16 +28,19 @@ public class PutawayNoteAppService :
private readonly IPutawayNoteManager _putawayNoteManager; private readonly IPutawayNoteManager _putawayNoteManager;
private readonly IPurchaseReceiptNoteAppService _purchaseReceiptNoteAppService; private readonly IPurchaseReceiptNoteAppService _purchaseReceiptNoteAppService;
public readonly IInspectJobAppService _inspectJobAppService; public readonly IInspectJobAppService _inspectJobAppService;
public readonly IPurchaseOrderManager _purchaseOrderManager;
public PutawayNoteAppService( public PutawayNoteAppService(
IPutawayNoteRepository repository, IPutawayNoteRepository repository,
IPutawayNoteManager putawayNoteManager, IPutawayNoteManager putawayNoteManager,
IPurchaseReceiptNoteAppService purchaseReceiptNoteAppService, IPurchaseReceiptNoteAppService purchaseReceiptNoteAppService,
IInspectJobAppService inspectJobAppService) : base(repository) IInspectJobAppService inspectJobAppService,
IPurchaseOrderManager purchaseOrderManager) : base(repository)
{ {
_putawayNoteManager = putawayNoteManager; _putawayNoteManager = putawayNoteManager;
_purchaseReceiptNoteAppService = purchaseReceiptNoteAppService; _purchaseReceiptNoteAppService = purchaseReceiptNoteAppService;
_inspectJobAppService = inspectJobAppService; _inspectJobAppService = inspectJobAppService;
_purchaseOrderManager = purchaseOrderManager;
} }
/// <summary> /// <summary>
@ -53,6 +56,11 @@ public class PutawayNoteAppService :
{ {
try try
{ {
var isClosed = await _purchaseOrderManager.CheckIsCloseAsync(input.Number,input.SupplierCode, detail.ItemCode).ConfigureAwait(false);
if (isClosed)
{
throw new UserFriendlyException($"零件名称【{detail.ItemCode}】的订单明细行以关闭无法执行采购上价!");
}
var purchasereDetail = await _purchaseReceiptNoteAppService var purchasereDetail = await _purchaseReceiptNoteAppService
.GetDetailByItemAndPackingAsync(detail.ItemCode, detail.ToPackingCode).ConfigureAwait(false); .GetDetailByItemAndPackingAsync(detail.ItemCode, detail.ToPackingCode).ConfigureAwait(false);
if (purchasereDetail != null) if (purchasereDetail != null)

51
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs

@ -111,14 +111,48 @@ public class PurchaseOrderAppService :
input.Number = await _purchaseOrderManager input.Number = await _purchaseOrderManager
.GenerateNumberAsync(nameof(PurchaseOrder), Clock.Normalize(input.ActiveDate)).ConfigureAwait(false); .GenerateNumberAsync(nameof(PurchaseOrder), Clock.Normalize(input.ActiveDate)).ConfigureAwait(false);
} }
var entity = ObjectMapper.Map<PurchaseOrderEditInput, PurchaseOrder>(input); var entity = ObjectMapper.Map<PurchaseOrderEditInput, PurchaseOrder>(input);
entity.Remark = "接口数据"; entity.Remark = "接口数据";
await _purchaseOrderManager.CreateAsync(entity).ConfigureAwait(false); await _purchaseOrderManager.CreateAsync(entity).ConfigureAwait(false);
return ObjectMapper.Map<PurchaseOrder, PurchaseOrderDTO>(entity); return ObjectMapper.Map<PurchaseOrder, PurchaseOrderDTO>(entity);
} }
/// <summary>
/// 采购订单新增和修改(目前修改只支持关闭操作)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("create-or-update")]
public async Task<PurchaseOrderDTO> CreateOrUpdateAsync(PurchaseOrderEditInput input)
{
if (string.IsNullOrWhiteSpace(input.Number))
{
input.Number = await _purchaseOrderManager
.GenerateNumberAsync(nameof(PurchaseOrder), Clock.Normalize(input.ActiveDate)).ConfigureAwait(false);
}
var olditem= await _purchaseOrderManager.GetByNumberAsync(input.Number).ConfigureAwait(false);
var entity = ObjectMapper.Map<PurchaseOrderEditInput, PurchaseOrder>(input);
if (olditem == null)
{
entity.Remark = "接口数据";
await _purchaseOrderManager.CreateAsync(entity).ConfigureAwait(false);
}
else
{
olditem.Remark = "接口数据(明细关闭)";
var closeItemCode= input.Details.Select(r=>r.ItemCode).ToList();
foreach (var detail in olditem.Details)
{
if (closeItemCode.Contains(detail.ItemCode))
{
detail.LineStatus = EnumOrderStatus.Close;
}
}
await _purchaseOrderManager.UpdateAsync(olditem).ConfigureAwait(false);
}
return ObjectMapper.Map<PurchaseOrder, PurchaseOrderDTO>(entity);
}
#region 校验 #region 校验
/// <summary> /// <summary>
@ -304,4 +338,17 @@ public class PurchaseOrderAppService :
return dtos; return dtos;
} }
/// <summary>
/// 获取不存在的订单号
/// </summary>
/// <param name="poBillNo">订单号集合</param>
/// <returns>返回的是不存在系统中的订单号</returns>
[HttpGet("get-no-po-bill-list")]
public virtual async Task<List<string>> GetNoPoBillList(List<string> poBillNo)
{
var entitys = await _repository.GetListAsync(p =>poBillNo.Contains(p.Number)).ConfigureAwait(false);
var list = entitys.Select(r => r.Number).ToList();
list= poBillNo.Except(list).ToList();
return list;
}
} }

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Orders/PurchaseOrders/IPurchaseOrderManager.cs

@ -8,4 +8,5 @@ public interface IPurchaseOrderManager : ISfsStoreManager<PurchaseOrder, Purchas
{ {
Task OpenDetailAsync(Guid id, Guid detailId); Task OpenDetailAsync(Guid id, Guid detailId);
Task CloseDetailAsync(Guid id, Guid detailId); Task CloseDetailAsync(Guid id, Guid detailId);
Task<bool> CheckIsCloseAsync(string number, string supplierCode, string itemCode);
} }

14
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Orders/PurchaseOrders/PurchaseOrderManager.cs

@ -1,8 +1,10 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp; using Volo.Abp;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
@ -24,7 +26,17 @@ public class PurchaseOrderManager : SfsStoreManagerBase<PurchaseOrder, PurchaseO
_supplierApp = supplierApp; _supplierApp = supplierApp;
_warehouseApp = warehouseApp; _warehouseApp = warehouseApp;
} }
/// <summary>
/// 打开订单明细
/// </summary>
/// <returns></returns>
public virtual async Task<bool> CheckIsCloseAsync(string number,string supplierCode, string itemCode)
{
bool result = false;
var entitys = await _repository.GetListAsync(p =>p.Number==number && p.Details.Any(y => y.ItemCode == itemCode&&y.LineStatus== EnumOrderStatus.Close) && p.SupplierCode == supplierCode, true).ConfigureAwait(false);
if (entitys.Count!=0) result = true;
return result;
}
/// <summary> /// <summary>
/// 打开订单明细 /// 打开订单明细
/// </summary> /// </summary>

Loading…
Cancel
Save