diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs index 1859b5324..ade4d7ddb 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Commons/CommonHelper.cs @@ -28,4 +28,13 @@ public sealed class CommonHelper return DateTime.Now; } } + + public static string CurTimeStr + { + get + { + return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + } + } + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/DTOs/GaoTongResultDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/DTOs/GaoTongResultDTO.cs new file mode 100644 index 000000000..dce8b9274 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/DTOs/GaoTongResultDTO.cs @@ -0,0 +1,34 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Application.Dtos; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +/// +/// 库存转移记录-实体DTO //??TransferLib实体 +/// +public class GaoTongResultDTO : EntityDto +{ + /// + /// + /// + [Display(Name = "")] + public string Code { get; set; } + + /// + /// + /// + [Display(Name = "")] + public string Message { get; set; } + + /// + /// + /// + [Display(Name = "")] + public string OperateTime { get; set; } +} +/* +{"code":"1","message":"接收成功", +"operateTime":"2020-01-0513:50:01"} + +*/ diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/DTOs/GaoTongResultStatus.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/DTOs/GaoTongResultStatus.cs new file mode 100644 index 000000000..306df7ca1 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/DTOs/GaoTongResultStatus.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public sealed class GaoTongResultStatus +{ + /// + /// 成功 + /// + public const string Success = "1"; + + /// + /// 失败 + /// + public const string Failure = "-1"; +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/GaoTongPermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/GaoTongPermissions.cs new file mode 100644 index 000000000..e5fc16d51 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/GaoTongPermissions.cs @@ -0,0 +1,8 @@ +using Volo.Abp.Authorization.Permissions; +using Win_in.Sfs.Wms.Store.Domain; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public static class GaoTongPermissions +{ +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/IGaoTongAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/IGaoTongAppService.cs new file mode 100644 index 000000000..b7daebf3c --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/IGaoTongAppService.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +/// +/// 立库接口 +/// +public interface IGaoTongAppService : IApplicationService +{ + /// + /// 组盘信息反馈到东阳WMS(喷涂完工转储) + /// + /// 组盘接口输入参数 + /// 立库接口通用输出参数 + Task FeedbackZuPanAsync(ZuPanEditInput input); +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/Inputs/ZuPanEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/Inputs/ZuPanEditInput.cs new file mode 100644 index 000000000..743546879 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/Inputs/ZuPanEditInput.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Application.Dtos; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +/// +/// 新增和更新基础DTO //??TransferLib实体 +/// +public class ZuPanEditInput : EntityDto +{ + [Display(Name = "产品编号:映射ERP料号")] + public string ItemCode { get; set; } + + [Display(Name = "器具号")] + public string ContainerCode { get; set; } + + [Display(Name = "数量")] + public string Qty { get; set; } + + [Display(Name = "固定值,在立库中配置。用于多立库时区分哪个立库")] + public string ToLocationCode { get; set; } + + [Display(Name = "由1.2接口中获取富维东阳MES提供的来源位置")] + public string FromLocationCode { get; set; } + +} +/* +{ + "ItemCode": "ERPCODE0001", + "Qty": 122, + "ContainerCode": "C111123", + "ToLocationCode": "W1", + "FromLocationCode": "WIPT" +} +*/ diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/GaoTongs/GaoTongAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/GaoTongs/GaoTongAppService.cs index f7f61320f..f898c8741 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/GaoTongs/GaoTongAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/GaoTongs/GaoTongAppService.cs @@ -1,10 +1,142 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; +using Volo.Abp.Application.Services; +using Volo.Abp.Users; +using Win_in.Sfs.Basedata.Application.Contracts; +using Win_in.Sfs.Basedata.Domain.Shared; +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.Shared; -namespace Win_in.Sfs.Wms.Store.GaoTongs; -internal class GaoTongAppService +namespace Win_in.Sfs.Wms.Store.Application; + +/// +/// 立库接口 +/// +//[Authorize] +[AllowAnonymous] +[Route($"{StoreConsts.RootPath}gao-tong")] +public class GaoTongAppService : ApplicationService, IGaoTongAppService { + private readonly IBalanceAppService _balanceAppService; + private readonly ITransferNoteAppService _transferNoteAppService; + private readonly CurrentUser _currentUser; + private readonly IItemBasicAppService _itemBasicAppService; + private readonly ILocationAppService _locationAppService; + + public GaoTongAppService( + IBalanceAppService balanceAppService + , ITransferNoteAppService transferNoteAppService + , CurrentUser currentUser + , IItemBasicAppService itemBasicAppService + ,ILocationAppService locationAppService) + { + _balanceAppService = balanceAppService; + _transferNoteAppService = transferNoteAppService; + _currentUser = currentUser; + _itemBasicAppService = itemBasicAppService; + _locationAppService = locationAppService; + } + /// + /// 组盘信息反馈到东阳WMS + /// + /// + /// + [HttpPost("feedback-zu-pan")] + public async Task FeedbackZuPanAsync(ZuPanEditInput input) + { + GaoTongResultDTO ret = new GaoTongResultDTO(); + try + { + ItemBasicDTO itemBasicObj = await _itemBasicAppService.GetByCodeAsync(input.ItemCode).ConfigureAwait(false); + if (itemBasicObj == null) + { + throw new UserFriendlyException($"{input.ItemCode}在Item表不存在!"); + } + + TransferNoteEditInput transferNoteEditInput = new TransferNoteEditInput(); + transferNoteEditInput.TenantId = null; + transferNoteEditInput.Remark = String.Empty; + transferNoteEditInput.Worker = _currentUser.UserName; + transferNoteEditInput.ActiveDate = CommonHelper.CurTime; + transferNoteEditInput.Type = EnumTransSubType.Transfer_Coating.ToString(); //喷涂完工转储 + transferNoteEditInput.UseOnTheWayLocation = false; + //transferNoteEditInput.number + //transferNoteEditInput.CallServerName + //transferNoteEditInput.Confirmed = true; + //transferNoteEditInput.ConfirmTime = CommonHelper.CurTime; + if (transferNoteEditInput.Details == null) + { + transferNoteEditInput.Details = new List(); + } + TransferNoteDetailInput detailObj = new TransferNoteDetailInput(); + transferNoteEditInput.Details.Add(detailObj); + detailObj.Remark = ""; + detailObj.ItemCode = input.ItemCode; + detailObj.ItemName = itemBasicObj.Name; + detailObj.ItemDesc1 = itemBasicObj.Desc1; + detailObj.ItemDesc2 = itemBasicObj.Desc2; + detailObj.Uom = itemBasicObj.BasicUom; + detailObj.Qty = input.Qty.TryToDecimalZero(); + detailObj.StdPackQty = itemBasicObj.StdPackQty; + + #region 去箱、去批、去托 + detailObj.FromPackingCode = String.Empty; + detailObj.ToPackingCode = String.Empty; + detailObj.FromContainerCode = String.Empty; + detailObj.ToContainerCode = String.Empty; + detailObj.FromLot = String.Empty; + detailObj.ToLot = String.Empty; + #endregion + + detailObj.SupplierBatch = String.Empty; + detailObj.ArriveDate = CommonHelper.CurTime; + detailObj.ProduceDate = CommonHelper.CurTime; + detailObj.ExpireDate = DateTime.MaxValue; + var fromLocationObj = await _locationAppService.GetByCodeAsync(input.FromLocationCode).ConfigureAwait(false); + if (fromLocationObj == null) + { + throw new UserFriendlyException($"{input.FromLocationCode}在Location表不存在!"); + } + detailObj.FromLocationCode = input.FromLocationCode; + detailObj.FromLocationArea = fromLocationObj.AreaCode; + detailObj.FromLocationGroup = fromLocationObj.LocationGroupCode; + detailObj.FromLocationErpCode = fromLocationObj.ErpLocationCode; + detailObj.FromWarehouseCode = fromLocationObj.WarehouseCode; + var toLocationObj = await _locationAppService.GetByCodeAsync(input.ToLocationCode).ConfigureAwait(false); + if (toLocationObj == null) + { + throw new UserFriendlyException($"{input.ToLocationCode}在Location表不存在!"); + } + detailObj.ToLocationCode = input.ToLocationCode; + detailObj.ToLocationArea = toLocationObj.AreaCode; + detailObj.ToLocationGroup = toLocationObj.LocationGroupCode; + detailObj.ToLocationErpCode = toLocationObj.ErpLocationCode; + detailObj.ToWarehouseCode = toLocationObj.WarehouseCode; + detailObj.FromStatus = EnumInventoryStatus.OK; + detailObj.ToStatus = EnumInventoryStatus.OK; + detailObj.OnTheWayLocationCode = String.Empty; + detailObj.Reason = ""; + var temp = await _transferNoteAppService.CreateAsync(transferNoteEditInput).ConfigureAwait(false); + ret.Code = GaoTongResultStatus.Success; + ret.Message = "接收成功"; + ret.OperateTime = CommonHelper.CurTimeStr; + return ret; + } + catch (Exception ex) + { + ret.Code = GaoTongResultStatus.Failure; + ret.Message = "FeedbackZuPanAsync执行失败:" + ex.Message; + ret.OperateTime = CommonHelper.CurTimeStr; + return ret; + } + } } + diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationAutoMapperProfile.cs index 2e3025d3c..29ab23d85 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationAutoMapperProfile.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationAutoMapperProfile.cs @@ -137,5 +137,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile ChassisOperationSequenceAutoMapperProfile(); KittingPackagingNoteAutoMapperProfile(); + //高通WMS-立库接口 + GaoTongAutoMapperProfile(); } }