zs
2025-05-07 086e8d457fb6480f126aedbd2677c7e97bdac193
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
@@ -1,8 +1,8 @@
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;
@@ -10,27 +10,33 @@
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> 
@@ -40,7 +46,7 @@
    }
    /// <summary> 
    /// 分页获取Wms任务管理表
    /// 分页获取Wms任务管理
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
@@ -90,7 +96,7 @@
    }
    /// <summary> 
    /// 新建Wms任务管理表
    /// 新建Wms任务管理
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
@@ -103,6 +109,24 @@
        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();
@@ -123,7 +147,7 @@
    }
    /// <summary> 
    /// 更新Wms任务管理表
    /// 更新Wms任务管理
    /// </summary> 
    /// <param name="id"></param> 
    /// <param name="input"></param> 
@@ -143,26 +167,25 @@
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        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);
@@ -170,7 +193,7 @@
    }
    /// <summary> 
    /// 克隆Wms任务管理表
    /// 克隆Wms任务管理
    /// </summary> 
    /// <param name="ids"></param> 
    /// <returns></returns> 
@@ -210,7 +233,7 @@
    }
    /// <summary> 
    /// 删除单个Wms任务管理表
    /// 删除单个Wms任务管理
    /// </summary> 
    /// <param name="id"></param> 
    /// <returns></returns> 
@@ -220,7 +243,7 @@
    }
    /// <summary> 
    /// 删除多个Wms任务管理表
    /// 删除多个Wms任务管理
    /// </summary> 
    /// <param name="ids"></param> 
    /// <returns></returns> 
@@ -233,7 +256,7 @@
    }
    /// <summary> 
    /// 调整排序Wms任务管理表
    /// 调整排序Wms任务管理
    /// </summary> 
    /// <param name="id"></param> 
    /// <param name="sort"></param> 
@@ -271,7 +294,7 @@
    }
    /// <summary> 
    /// 导入Wms任务管理表
    /// 导入Wms任务管理
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
@@ -317,25 +340,25 @@
                {
                    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,
                    };
@@ -345,25 +368,25 @@
                {
                    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,
                    };
@@ -402,7 +425,7 @@
    }
    /// <summary> 
    /// 导出Wms任务管理表
    /// 导出Wms任务管理
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
@@ -431,25 +454,28 @@
            ["配置"] = 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;
    }