diff --git a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/AsnDetDTO.cs b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/AsnDetDTO.cs index ca2ff8f..4fe8030 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/AsnDetDTO.cs +++ b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/AsnDetDTO.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.Application.Dtos; using Win_in.Sfs.Scp.WebApi.Domain.Shared; namespace Win_in.Sfs.Scp.WebApi @@ -7,7 +8,7 @@ namespace Win_in.Sfs.Scp.WebApi /// /// QAD发货单明细(ASN detail) SupplierAsnDetailInput /// - public class AsnDetDTO :EntityDtoBase + public class AsnDetDTO : EntityDto { /// /// 送货单号(ASN number)(Asn number) diff --git a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/AsnMstrDTO.cs b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/AsnMstrDTO.cs index 47db1e6..f940aae 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/AsnMstrDTO.cs +++ b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/AsnMstrDTO.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using Volo.Abp.Application.Dtos; using Win_in.Sfs.Scp.WebApi.Asns; using Win_in.Sfs.Scp.WebApi.Domain.Shared; @@ -9,8 +10,13 @@ namespace Win_in.Sfs.Scp.WebApi /// /// QAD发货单主表(ASN Master) SupplierAsnCreateInput ISupplierAsnAppService /// - public class AsnMstrDTO:EntityDtoBase + public class AsnMstrDTO:EntityDto { + /// + /// + /// + public virtual string TraceId { get; set; } + /// /// /// @@ -31,6 +37,11 @@ namespace Win_in.Sfs.Scp.WebApi /// public virtual string AsnNbr { get; set; } + /// + /// 要货计划号(Request plan number) + /// + public virtual string RpNbr { get; set; } + /// /// 采购订单号(Purchase order number) /// @@ -40,7 +51,12 @@ namespace Win_in.Sfs.Scp.WebApi /// 供应商(Vendor) /// public virtual string VendorCode { get; set; } - + + /// + /// 状态 + /// + public string Status { get; set; } + /// /// 联系人(Contacts name) /// @@ -83,10 +99,7 @@ namespace Win_in.Sfs.Scp.WebApi /// public string TimeWindow { get; set; } - /// - /// 状态 - /// - public string Status { get; set; } + /// /// 备注(Remark) diff --git a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/IX12AsnAppService.cs b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/IX12AsnAppService.cs index 3446cbb..751ca87 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/IX12AsnAppService.cs +++ b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application.Contracts/Asns/IX12AsnAppService.cs @@ -15,7 +15,12 @@ namespace Win_in.Sfs.Scp.WebApi public interface IX12AsnAppService : IReadOnlyAppService { Task> GetUnreadListAsync(string site, int count,bool autoUpdateStatus); - Task> GetNoPoUnreadListAsync(string site, int count, bool autoUpdateStatus); + + Task> GetNoPoUnreadListAsync(string site, int count, bool autoUpdateStatus); + + Task> GetNoPoUnreadFirstAsync(string site); + + Task> GetNoPoAsync(string site, long uid); Task> GetListAsync(string site, long beginUid,long endUid); diff --git a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application/Asns/X12AsnAppService.cs b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application/Asns/X12AsnAppService.cs index 0bb049b..e9b5bab 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application/Asns/X12AsnAppService.cs +++ b/WebApiService/src/Win_in.Sfs.Scp.WebApi.Application/Asns/X12AsnAppService.cs @@ -29,6 +29,7 @@ using System.Security.Cryptography; using IdentityModel; using Microsoft.Extensions.Options; using Volo.Abp; +using System.Drawing; namespace Win_in.Sfs.Scp.WebApi { @@ -122,15 +123,15 @@ namespace Win_in.Sfs.Scp.WebApi } /// - /// 获取未读无POASN列表(Get unread Asn listwithout PO) + /// 获取未读无PO ASN列表(Get unread Asn list without PO) /// /// 地点(Site) /// 数量(Count) /// 是否自动更新状态(Auto update data status to finish) /// [HttpGet] - [Route("nopo-unread-list")] - public async Task> GetNoPoUnreadListAsync(string site, int count, bool autoUpdateStatus) + [Route("nopo/unread-list")] + public async Task> GetNoPoUnreadListAsync(string site, int count, bool autoUpdateStatus) { try { @@ -151,10 +152,85 @@ namespace Win_in.Sfs.Scp.WebApi var entities = await _x12AsnRepository.GetNoPoUnreadListAsync(site, count, autoUpdateStatus); - var dtos = BuildDtos(entities); + // var dtos = BuildDtos(entities); - return new ListResultDto(dtos); + var dtos = BuildAsnMstrDtos(entities); + + return new ListResultDto(dtos); + + } + + /// + /// 获取首个未读无PO ASN,并更新状态为已读(Get first unread Asn without PO and update status to read) + /// + /// 地点 + /// + /// + [HttpGet] + [Route("nopo/unread-first")] + public async Task> GetNoPoUnreadFirstAsync(string site) + { + try + { + Validator.CheckSite(_tenantRepository, site); + + } + catch (Exception ex) + { + throw new AbpValidationException(new List + { + new(ex.Message) + }); + } + + var entities = await _x12AsnRepository.GetNoPoUnreadListAsync(site, 1, true); + + if (entities == null || entities.Count == 0) + { + return new OkResult(); + } + // var dtos = BuildDtos(entities); + + var dto = BuildAsnMstrDto(entities[0]); + + return dto; + } + + /// + /// 根据UID获取无PO ASN(Get Asn without PO by UID) + /// + /// 地点(Site) + /// UID(UID) + /// + /// + [HttpGet] + [Route("nopo/by-uid")] + public async Task> GetNoPoAsync(string site,long uid) + { + X12Asn entity; + try + { + Validator.CheckSite(_tenantRepository, site); + entity = await _x12AsnRepository.FirstOrDefaultAsync(p => p.Site == site && p.DataType==ScpWebApiConsts.NO_PO_ASN && p.UID == uid); + + if (entity == null) + { + + throw new UserFriendlyException($"No Po ASN of {uid} in {site} is not found"); + } + } + catch (Exception ex) + { + throw new AbpValidationException(new List + { + new(ex.Message) + }); + } + + var dto = BuildAsnMstrDto(entity); + + return dto; } /// @@ -352,6 +428,24 @@ namespace Win_in.Sfs.Scp.WebApi return dtos; } + private List BuildAsnMstrDtos(List entities) + { + var dtos = new List(); + foreach (var entity in entities) + { + var dto = BuildAsnMstrDto(entity); + dtos.Add(dto); + } + return dtos; + } + + private AsnMstrDTO BuildAsnMstrDto(X12Asn entity) + { + var dto = JsonSerializer.Deserialize(entity.JsonString); + dto.TraceId = $"{dto.Site}-{dto.UID}-{DateTime.Now.Ticks}"; + return dto; + } + private X12AsnDTO BuildDto(X12Asn entity) { var dto = ObjectMapper.Map(entity); diff --git a/WebApiService/src/Win_in.Sfs.Scp.WebApi.HttpApi.Host/Win_in.Sfs.Scp.WebApi.HttpApi.Host.csproj b/WebApiService/src/Win_in.Sfs.Scp.WebApi.HttpApi.Host/Win_in.Sfs.Scp.WebApi.HttpApi.Host.csproj index a831399..244f957 100644 --- a/WebApiService/src/Win_in.Sfs.Scp.WebApi.HttpApi.Host/Win_in.Sfs.Scp.WebApi.HttpApi.Host.csproj +++ b/WebApiService/src/Win_in.Sfs.Scp.WebApi.HttpApi.Host/Win_in.Sfs.Scp.WebApi.HttpApi.Host.csproj @@ -7,8 +7,8 @@ Win_in.Sfs.Scp.WebApi true Win_in.Sfs.Scp.WebApi-4681b4fd-151f-4221-84a4-929d86723e4c - 1.22.0706.1 - 1.22.0706.1 + 1.22.0711.1 + 1.22.0711.1