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/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/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
+}
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;
+ }
+ }
+
}