| | |
| | | using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsTask; |
| | | using CMS.Plugin.HIAWms.Application.Contracts.Services; |
| | | using CMS.Plugin.HIAWms.Domain.Shared; |
| | | using CMS.Plugin.HIAWms.Domain.WmsTask; |
| | | using CmsQueryExtensions; |
| | | using CMS.Plugin.HIAWms.Domain.WmsTask; |
| | | using CmsQueryExtensions.Extension; |
| | | using System.Linq.Expressions; |
| | | using Volo.Abp; |
| | |
| | | using Volo.Abp.Data; |
| | | using Volo.Abp.ObjectExtending; |
| | | using Volo.Abp.ObjectMapping; |
| | | using CMS.Plugin.HIAWms.Domain.WmsContainers; |
| | | using CMS.Plugin.HIAWms.Domain.WmsPlaces; |
| | | |
| | | namespace CMS.Plugin.HIAWms.Application.Implements; |
| | | |
| | | /// <summary> |
| | | /// Wms任务管理表应用服务 |
| | | /// Wms任务管理应用服务 |
| | | /// </summary> |
| | | public class WmsTaskAppService : CMSPluginAppService, IWmsTaskAppService |
| | | { |
| | | private readonly IWmsTaskRepository wmsTaskRepository; |
| | | private readonly IWmsContainerRepository _wmsContainerRepository; |
| | | private readonly IWmsPlaceRepository _wmsPlaceRepository; |
| | | |
| | | /// <summary> |
| | | /// Initializes a new instance of the <see cref="WmsTaskAppService"/> class. |
| | | /// </summary> |
| | | /// <param name="WmsTaskRepository">The task job repository.</param> |
| | | public WmsTaskAppService(IWmsTaskRepository _WmsTaskRepository) |
| | | public WmsTaskAppService(IWmsTaskRepository _WmsTaskRepository, IWmsContainerRepository wmsContainerRepository, IWmsPlaceRepository wmsPlaceRepository) |
| | | { |
| | | wmsTaskRepository = _WmsTaskRepository; |
| | | _wmsContainerRepository = wmsContainerRepository; |
| | | _wmsPlaceRepository = wmsPlaceRepository; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取指定Wms任务管理表 |
| | | /// 获取指定Wms任务管理 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 分页获取Wms任务管理表 |
| | | /// 分页获取Wms任务管理 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 新建Wms任务管理表 |
| | | /// 新建Wms任务管理 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | |
| | | if (exist) |
| | | { |
| | | throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskNo]); |
| | | } |
| | | // 校验托盘是否存在 |
| | | var existContainer = await _wmsContainerRepository.NameExistAsync(input.ContainerNo); |
| | | if (existContainer) |
| | | { |
| | | throw new UserFriendlyException("托盘不存在,请先添加托盘"); |
| | | } |
| | | // 校验物料是否存在 |
| | | var existSourcePlace = await _wmsPlaceRepository.NameExistAsync(input.SourcePlace); |
| | | if (existSourcePlace) |
| | | { |
| | | throw new UserFriendlyException("起始库位不存在,请先添加库位"); |
| | | } |
| | | //校验库位是否存在 |
| | | var existToPlace = await _wmsPlaceRepository.NameExistAsync(input.ToPlace); |
| | | if (existToPlace) |
| | | { |
| | | throw new UserFriendlyException("目标库位不存在,请先添加库位"); |
| | | } |
| | | |
| | | var maxSort = await wmsTaskRepository.GetMaxSortAsync(); |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新Wms任务管理表 |
| | | /// 更新Wms任务管理 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <param name="input"></param> |
| | |
| | | } |
| | | |
| | | updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); |
| | | if(input.TaskStatus == Domain.Shared.Enums.WmsTaskStatus.WANCHENG || input.TaskStatus == Domain.Shared.Enums.WmsTaskStatus.QUXIAO) |
| | | { |
| | | throw new UserFriendlyException("完成或者取消的任务不允许更改"); |
| | | } |
| | | |
| | | input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); |
| | | |
| | | updateObj.Aisle = input.Aisle; |
| | | updateObj.TaskNo = input.TaskNo; |
| | | updateObj.TaskType = input.TaskType; |
| | | updateObj.TaskLevel = input.TaskLevel; |
| | | updateObj.TaskStatus = input.TaskStatus; |
| | | updateObj.ContainerNo = input.ContainerNo; |
| | | updateObj.SourcePlace = input.SourcePlace; |
| | | updateObj.ToPlace = input.ToPlace; |
| | | updateObj.Aisle = input.Aisle; |
| | | updateObj.DodeviceId = input.DodeviceId; |
| | | updateObj.Dodevicetype = input.Dodevicetype; |
| | | updateObj.IsDisabled = input.IsDisabled; |
| | | updateObj.IsNextTask = input.IsNextTask; |
| | | updateObj.TaskDodeviceStatus = input.TaskDodeviceStatus; |
| | | updateObj.IsRead = input.IsRead; |
| | | updateObj.SonTaskType = input.SonTaskType; |
| | | updateObj.SourceOrderNo = input.SourceOrderNo; |
| | | updateObj.IsNextTask = input.IsNextTask; |
| | | updateObj.MutableParam1 = input.MutableParam1; |
| | | updateObj.MutableParam2 = input.MutableParam2; |
| | | updateObj.MutableParam3 = input.MutableParam3; |
| | | updateObj.SonTaskType = input.SonTaskType; |
| | | updateObj.SourceOrderNo = input.SourceOrderNo; |
| | | updateObj.SourcePlace = input.SourcePlace; |
| | | updateObj.TaskDodeviceStatus = input.TaskDodeviceStatus; |
| | | updateObj.TaskLevel = input.TaskLevel; |
| | | updateObj.TaskNo = input.TaskNo; |
| | | updateObj.TaskStatus = input.TaskStatus; |
| | | updateObj.TaskType = input.TaskType; |
| | | updateObj.ToPlace = input.ToPlace; |
| | | |
| | | updateObj.IsDisabled = input.IsDisabled; |
| | | |
| | | await wmsTaskRepository.UpdateAsync(updateObj); |
| | | |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 克隆Wms任务管理表 |
| | | /// 克隆Wms任务管理 |
| | | /// </summary> |
| | | /// <param name="ids"></param> |
| | | /// <returns></returns> |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除单个Wms任务管理表 |
| | | /// 删除单个Wms任务管理 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除多个Wms任务管理表 |
| | | /// 删除多个Wms任务管理 |
| | | /// </summary> |
| | | /// <param name="ids"></param> |
| | | /// <returns></returns> |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 调整排序Wms任务管理表 |
| | | /// 调整排序Wms任务管理 |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <param name="sort"></param> |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 导入Wms任务管理表 |
| | | /// 导入Wms任务管理 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | |
| | | { |
| | | var wmsTaskUpdateDto = new WmsTaskUpdateDto |
| | | { |
| | | Aisle = impItem.Aisle, |
| | | TaskNo = impItem.TaskNo, |
| | | TaskType = impItem.TaskType, |
| | | TaskLevel = impItem.TaskLevel, |
| | | TaskStatus = impItem.TaskStatus, |
| | | ContainerNo = impItem.ContainerNo, |
| | | SourcePlace = impItem.SourcePlace, |
| | | ToPlace = impItem.ToPlace, |
| | | Aisle = impItem.Aisle, |
| | | DodeviceId = impItem.DodeviceId, |
| | | Dodevicetype = impItem.Dodevicetype, |
| | | IsDisabled = impItem.IsDisabled, |
| | | IsNextTask = impItem.IsNextTask, |
| | | TaskDodeviceStatus = impItem.TaskDodeviceStatus, |
| | | IsRead = impItem.IsRead, |
| | | SonTaskType = impItem.SonTaskType, |
| | | SourceOrderNo = impItem.SourceOrderNo, |
| | | IsNextTask = impItem.IsNextTask, |
| | | MutableParam1 = impItem.MutableParam1, |
| | | MutableParam2 = impItem.MutableParam2, |
| | | MutableParam3 = impItem.MutableParam3, |
| | | SonTaskType = impItem.SonTaskType, |
| | | SourceOrderNo = impItem.SourceOrderNo, |
| | | SourcePlace = impItem.SourcePlace, |
| | | TaskDodeviceStatus = impItem.TaskDodeviceStatus, |
| | | TaskLevel = impItem.TaskLevel, |
| | | TaskNo = impItem.TaskNo, |
| | | TaskStatus = impItem.TaskStatus, |
| | | TaskType = impItem.TaskType, |
| | | ToPlace = impItem.ToPlace, |
| | | IsDisabled = impItem.IsDisabled, |
| | | |
| | | }; |
| | | |
| | |
| | | { |
| | | var wmsTaskCreateDto = new WmsTaskCreateDto |
| | | { |
| | | Aisle = impItem.Aisle, |
| | | TaskNo = impItem.TaskNo, |
| | | TaskType = impItem.TaskType, |
| | | TaskLevel = impItem.TaskLevel, |
| | | TaskStatus = impItem.TaskStatus, |
| | | ContainerNo = impItem.ContainerNo, |
| | | SourcePlace = impItem.SourcePlace, |
| | | ToPlace = impItem.ToPlace, |
| | | Aisle = impItem.Aisle, |
| | | DodeviceId = impItem.DodeviceId, |
| | | Dodevicetype = impItem.Dodevicetype, |
| | | IsDisabled = impItem.IsDisabled, |
| | | IsNextTask = impItem.IsNextTask, |
| | | TaskDodeviceStatus = impItem.TaskDodeviceStatus, |
| | | IsRead = impItem.IsRead, |
| | | SonTaskType = impItem.SonTaskType, |
| | | SourceOrderNo = impItem.SourceOrderNo, |
| | | IsNextTask = impItem.IsNextTask, |
| | | MutableParam1 = impItem.MutableParam1, |
| | | MutableParam2 = impItem.MutableParam2, |
| | | MutableParam3 = impItem.MutableParam3, |
| | | SonTaskType = impItem.SonTaskType, |
| | | SourceOrderNo = impItem.SourceOrderNo, |
| | | SourcePlace = impItem.SourcePlace, |
| | | TaskDodeviceStatus = impItem.TaskDodeviceStatus, |
| | | TaskLevel = impItem.TaskLevel, |
| | | TaskNo = impItem.TaskNo, |
| | | TaskStatus = impItem.TaskStatus, |
| | | TaskType = impItem.TaskType, |
| | | ToPlace = impItem.ToPlace, |
| | | IsDisabled = impItem.IsDisabled, |
| | | |
| | | }; |
| | | |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 导出Wms任务管理表 |
| | | /// 导出Wms任务管理 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | |
| | | ["配置"] = ExportHelper.ConvertListToExportData(result), |
| | | }; |
| | | |
| | | var fileName = result.Count > 1 ? "Wms任务管理表列表" : result.Count == 1 ? result[0]?.TaskNo : "WmsTask模版"; |
| | | var fileName = result.Count > 1 ? "Wms任务管理列表" : result.Count == 1 ? result[0]?.TaskNo : "WmsTask模版"; |
| | | return (sheets, fileName); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 校验Wms任务管理表,当新建或更新时 |
| | | /// 校验Wms任务管理,当新建或更新时 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | protected Task CheckCreateOrUpdateDtoAsync(WmsTaskCreateOrUpdateDtoBase input) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | Check.NotNull(input.Dodevicetype, "设备类型"); |
| | | Check.NotNull(input.IsRead, "WCS是否可以读取"); |
| | | Check.NotNull(input.TaskDodeviceStatus, "设备任务状态"); |
| | | Check.NotNull(input.TaskLevel, "任务等级"); |
| | | Check.NotNullOrWhiteSpace(input.TaskNo, "任务号", 50); |
| | | Check.NotNull(input.TaskStatus, "任务状态"); |
| | | Check.NotNull(input.TaskType, "任务类型"); |
| | | Check.NotNull(input.TaskLevel, "任务等级"); |
| | | Check.NotNull(input.TaskStatus, "任务状态"); |
| | | Check.NotNull(input.Dodevicetype, "设备类型"); |
| | | Check.NotNull(input.ContainerNo, "托盘号"); |
| | | Check.NotNull(input.SourcePlace, "起始位置"); |
| | | Check.NotNull(input.ToPlace, "目标未知"); |
| | | Check.NotNull(input.TaskDodeviceStatus, "设备任务状态"); |
| | | Check.NotNull(input.IsRead, "WCS是否可以读取"); |
| | | |
| | | return Task.CompletedTask; |
| | | } |