Browse Source

Merge branch 'dev_DY_CC' of http://dev.ccwin-in.com:3000/BoXu.Zheng/WZC2 into dev_DY_CC

dev_DY_CC
郑勃旭 1 year ago
parent
commit
f001acf63f
  1. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/DTOs/PositionCodeDTO.cs
  2. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeEditInput.cs
  3. 6
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeImportInput.cs
  4. 28
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs
  5. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/PositionCode.cs
  6. 8
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs
  7. 36
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumPositionCodeType.cs
  8. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/IGaoTongAppService.cs
  9. 97
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/GaoTongs/GaoTongAppService.cs

2
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/DTOs/PositionCodeDTO.cs

@ -59,5 +59,5 @@ public class PositionCodeDTO : SfsBaseDataDTOBase, IHasCode
/// 类型 /// 类型
/// </summary> /// </summary>
[Display(Name = "类型")] [Display(Name = "类型")]
public EnumRecommendType Type { get; set; } public EnumPositionCodeType Type { get; set; }
} }

2
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeEditInput.cs

@ -51,7 +51,7 @@ public class PositionCodeEditInput : SfsBaseDataCreateOrUpdateInputBase
/// </summary> /// </summary>
[Display(Name = "类型")] [Display(Name = "类型")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
public EnumRecommendType Type { get; set; } public EnumPositionCodeType Type { get; set; }
#endregion #endregion

6
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/Inputs/PositionCodeImportInput.cs

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
@ -56,13 +57,14 @@ public class PositionCodeImportInput : SfsBaseDataImportInputBase
/// <summary> /// <summary>
/// 箱数/数量 /// 箱数/数量
/// </summary> /// </summary>
[Display(Name = "箱数/数量")] [Display(Name = "箱数/数量")]
[Required(ErrorMessage = "{0}是必填项")]
public decimal StdPackQty { get; set; } public decimal StdPackQty { get; set; }
/// <summary> /// <summary>
/// 类型 /// 类型
/// </summary> /// </summary>
[Display(Name = "类型")] [Display(Name = "类型")]
[Required(ErrorMessage = "{0}是必填项")] [Required(ErrorMessage = "{0}是必填项")]
public EnumRecommendType Type { get; set; } public EnumPositionCodeType Type { get; set; }
} }

28
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); var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false);
Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在"); Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在");
//如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验
if (input.Type == EnumRecommendType.RAW && itemBasic.CanBuy != true)
{
throw new UserFriendlyException($"{input.PartCode} 物料号类型必须为采购件");
}
input.PartName = itemBasic.Name; input.PartName = itemBasic.Name;
input.PartDesc = itemBasic.Desc1; input.PartDesc = itemBasic.Desc1;
var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false); var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在"); 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) input.LocationName = location.Name;
{
throw new UserFriendlyException($"{input.Type} 位置码类型不正确");
}
return await base.CreateAsync(input).ConfigureAwait(false); return await base.CreateAsync(input).ConfigureAwait(false);
} }
@ -118,22 +104,14 @@ public class PositionCodeAppService
var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false); var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false);
Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在"); Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在");
//如果类型选择为原料,校验物料号类型必须为原料,器具、KItting 的不用加校验
if (input.Type == EnumRecommendType.RAW && itemBasic.Type != "10C02")
{
throw new UserFriendlyException($"{input.PartCode} 物料号类型必须为原料");
}
entity.PartName = itemBasic.Name; entity.PartName = itemBasic.Name;
entity.PartDesc = itemBasic.Desc1; entity.PartDesc = itemBasic.Desc1;
var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false); var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在"); Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在");
//如果类型选择为原料,库位的类型必须为原料库位
if (input.Type == EnumRecommendType.RAW && location.Type!= EnumLocationType.RAW)
{
throw new UserFriendlyException($"{input.LocationCode} 库位的类型必须为原料库位");
}
entity.LocationName = location.Name; entity.LocationName = location.Name;
await _repository.UpdateAsync(entity).ConfigureAwait(false); await _repository.UpdateAsync(entity).ConfigureAwait(false);

2
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/PositionCode.cs

@ -54,6 +54,6 @@ public class PositionCode : SfsBaseDataAggregateRootBase, IHasCode
/// 类型 /// 类型
/// </summary> /// </summary>
[Display(Name = "类型")] [Display(Name = "类型")]
public EnumRecommendType Type { get; set; } public EnumPositionCodeType Type { get; set; }
} }

8
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs

@ -214,8 +214,10 @@ public enum EnumTransSubType
/// </summary> /// </summary>
[Display(Name = "导入盘点计划")] [Display(Name = "导入盘点计划")]
ExcelInCountPlan = 6002, ExcelInCountPlan = 6002,
/// <summary>
/// 立库出库
/// </summary>
[Display(Name = "立库出库")]
Depot_Out = 1510
} }

36
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;
/// <summary>
/// 位置码类型
/// </summary>
public enum EnumPositionCodeType
{
/// <summary>
/// 注塑区
/// </summary>
[Display(Name = "注塑区")]
InjectionIssue = 1,
/// <summary>
/// 喷涂区
/// </summary>
[Display(Name = "喷涂区")]
CoatingIssue = 2,
/// <summary>
/// 装配区
/// </summary>
[Display(Name = "装配区")]
AssembleIssue = 3,
/// <summary>
/// kitting区
/// </summary>
[Display(Name = "Kitting区")]
KITTING = 4
}

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/GaoTongs/IGaoTongAppService.cs

@ -26,4 +26,12 @@ public interface IGaoTongAppService : IApplicationService
/// <param name="input">位置码列表</param> /// <param name="input">位置码列表</param>
/// <returns>库位信息列表</returns> /// <returns>库位信息列表</returns>
Task<List<LocationCodeInfoDTO>> GetLocationInfoByPositionCode(LocationCodeInfoEditInput input); Task<List<LocationCodeInfoDTO>> GetLocationInfoByPositionCode(LocationCodeInfoEditInput input);
/// <summary>
/// 人工拣选反馈富维东阳WMS【我方提供】【出库、立库系统直接出库、通知我方】
/// 人工拣选出库缴库完成,高通WMS反馈到富维东阳WMS
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<GaoTongResultDTO> ManualSelection(ZuPanEditInput input);
} }

97
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/GaoTongs/GaoTongAppService.cs

@ -162,5 +162,102 @@ public class GaoTongAppService : ApplicationService, IGaoTongAppService
}).ToList(); }).ToList();
return ret; return ret;
} }
/// <summary>
/// 人工拣选反馈富维东阳WMS【我方提供】【出库、立库系统直接出库、通知我方】
/// 人工拣选出库缴库完成,高通WMS反馈到富维东阳WMS
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("manual-selection")]
public async Task<GaoTongResultDTO> 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>();
}
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;
}
}
} }

Loading…
Cancel
Save