From 42254b6d2eded3873879b164e8125c4b793898e8 Mon Sep 17 00:00:00 2001 From: lvzb <35200379@qq.com> Date: Mon, 13 May 2024 10:35:44 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E7=A0=81=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PositionCode/DTOs/PositionCodeDTO.cs | 2 +- .../Inputs/PositionCodeEditInput.cs | 2 +- .../Inputs/PositionCodeImportInput.cs | 6 ++-- .../PositionCodes/PositionCodeAppService.cs | 28 ++------------- .../PositionCodes/PositionCode.cs | 2 +- .../Enums/Store/EnumPositionCodeType.cs | 36 +++++++++++++++++++ 6 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumPositionCodeType.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/DTOs/PositionCodeDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/DTOs/PositionCodeDTO.cs index be37df2bf..b6e33ad2d 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/DTOs/PositionCodeDTO.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/DTOs/PositionCodeDTO.cs @@ -59,5 +59,5 @@ public class PositionCodeDTO : SfsBaseDataDTOBase, IHasCode /// 类型 /// [Display(Name = "类型")] - public EnumRecommendType Type { get; set; } + public EnumPositionCodeType Type { get; set; } } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeEditInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeEditInput.cs index 303ad35db..83cac8b1f 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeEditInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeEditInput.cs @@ -51,7 +51,7 @@ public class PositionCodeEditInput : SfsBaseDataCreateOrUpdateInputBase /// [Display(Name = "类型")] [Required(ErrorMessage = "{0}是必填项")] - public EnumRecommendType Type { get; set; } + public EnumPositionCodeType Type { get; set; } #endregion diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeImportInput.cs index 22d29a09e..121cdb5b7 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeImportInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeImportInput.cs @@ -1,4 +1,5 @@ using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared; @@ -56,13 +57,14 @@ public class PositionCodeImportInput : SfsBaseDataImportInputBase /// /// 箱数/数量 /// - [Display(Name = "箱数/数量")] + [Display(Name = "箱数/数量")] + [Required(ErrorMessage = "{0}是必填项")] public decimal StdPackQty { get; set; } /// /// 类型 /// [Display(Name = "类型")] [Required(ErrorMessage = "{0}是必填项")] - public EnumRecommendType Type { get; set; } + public EnumPositionCodeType Type { get; set; } } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs index a60a80354..f0c117d1f 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs @@ -67,28 +67,14 @@ public class PositionCodeAppService var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false); Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在"); - //如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验 - if (input.Type == EnumRecommendType.RAW && itemBasic.CanBuy != true) - { - throw new UserFriendlyException($"{input.PartCode} 物料号类型必须为采购件"); - } input.PartName = itemBasic.Name; input.PartDesc = itemBasic.Desc1; var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false); Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在"); - //如果类型选择为原料,库位的类型必须为原料库位 - if (input.Type == EnumRecommendType.RAW && location.Type != EnumLocationType.RAW) - { - throw new UserFriendlyException($"{input.LocationCode} 库位的类型必须为原料库位"); - } - input.LocationName = location.Name; - if(input.Type== EnumRecommendType.None) - { - throw new UserFriendlyException($"{input.Type} 位置码类型不正确"); - } + input.LocationName = location.Name; return await base.CreateAsync(input).ConfigureAwait(false); } @@ -118,22 +104,14 @@ public class PositionCodeAppService var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false); Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在"); - //如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验 - if (input.Type == EnumRecommendType.RAW && itemBasic.Type != "10C02") - { - throw new UserFriendlyException($"{input.PartCode} 物料号类型必须为原料"); - } + entity.PartName = itemBasic.Name; entity.PartDesc = itemBasic.Desc1; var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false); Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在"); - //如果类型选择为原料,库位的类型必须为原料库位 - if (input.Type == EnumRecommendType.RAW && location.Type!= EnumLocationType.RAW) - { - throw new UserFriendlyException($"{input.LocationCode} 库位的类型必须为原料库位"); - } + entity.LocationName = location.Name; await _repository.UpdateAsync(entity).ConfigureAwait(false); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/PositionCode.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/PositionCode.cs index be22d6fa4..9a0651fea 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/PositionCode.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/PositionCode.cs @@ -54,6 +54,6 @@ public class PositionCode : SfsBaseDataAggregateRootBase, IHasCode /// 类型 /// [Display(Name = "类型")] - public EnumRecommendType Type { get; set; } + public EnumPositionCodeType Type { get; set; } } diff --git a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumPositionCodeType.cs b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumPositionCodeType.cs new file mode 100644 index 000000000..6e4110404 --- /dev/null +++ b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumPositionCodeType.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace Win_in.Sfs.Shared.Domain.Shared; +/// +/// 位置码类型 +/// +public enum EnumPositionCodeType +{ + /// + /// 注塑区 + /// + [Display(Name = "注塑区")] + InjectionIssue = 1, + + /// + /// 喷涂区 + /// + [Display(Name = "喷涂区")] + CoatingIssue = 2, + /// + /// 装配区 + /// + [Display(Name = "装配区")] + AssembleIssue = 3, + /// + /// kitting区 + /// + [Display(Name = "Kitting区")] + KITTING = 4 +} From c43408b6acfb4e15688726b8b9405802d72cc261 Mon Sep 17 00:00:00 2001 From: liuyunfeng Date: Mon, 13 May 2024 16:13:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=89=8B=E5=B7=A5=E6=8B=A3=E9=80=89?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Enums/Inventory/EnumTransSubType.cs | 8 +- .../GaoTongs/IGaoTongAppService.cs | 8 ++ .../GaoTongs/GaoTongAppService.cs | 97 +++++++++++++++++++ 3 files changed, 110 insertions(+), 3 deletions(-) diff --git a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs index d29f32c3a..c0569f598 100644 --- a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs +++ b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs @@ -214,8 +214,10 @@ public enum EnumTransSubType /// [Display(Name = "导入盘点计划")] ExcelInCountPlan = 6002, - - - + /// + /// 立库出库 + /// + [Display(Name = "立库出库")] + Depot_Out = 1510 } 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 index 13399f076..24cebd522 100644 --- 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 @@ -26,4 +26,12 @@ public interface IGaoTongAppService : IApplicationService /// 位置码列表 /// 库位信息列表 Task> GetLocationInfoByPositionCode(LocationCodeInfoEditInput input); + + /// + /// 人工拣选反馈富维东阳WMS【我方提供】【出库、立库系统直接出库、通知我方】 + /// 人工拣选出库缴库完成,高通WMS反馈到富维东阳WMS + /// + /// + /// + Task ManualSelection(ZuPanEditInput input); } 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 aece5cf16..80143b4d8 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 @@ -162,5 +162,102 @@ public class GaoTongAppService : ApplicationService, IGaoTongAppService }).ToList(); return ret; } + + /// + /// 人工拣选反馈富维东阳WMS【我方提供】【出库、立库系统直接出库、通知我方】 + /// 人工拣选出库缴库完成,高通WMS反馈到富维东阳WMS + /// + /// + /// + [HttpPost("manual-selection")] + public async Task ManualSelection(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.Depot_Out.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 = "ManualSelection执行失败:" + ex.Message; + ret.OperateTime = CommonHelper.CurTimeStr; + return ret; + } + } + }