song zhou
2025-05-18 5c5a26ca4f99953d06e75010eed5b0b59dff3b3f
wcs交互
已修改7个文件
134 ■■■■■ 文件已修改
HIAWms/hiawms_web/components.d.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/QueryTaskTypeInput.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/WmsTaskDto.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/components.d.ts
@@ -21,6 +21,8 @@
    Dialog: typeof import('./src/components/Dialog/index.vue')['default']
    ElButton: typeof import('element-plus/es')['ElButton']
    ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
    ElCollapse: typeof import('element-plus/es')['ElCollapse']
    ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
    ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
    ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
    ElDialog: typeof import('element-plus/es')['ElDialog']
@@ -42,6 +44,7 @@
    ElPopover: typeof import('element-plus/es')['ElPopover']
    ElRadio: typeof import('element-plus/es')['ElRadio']
    ElSelect: typeof import('element-plus/es')['ElSelect']
    ElSwitch: typeof import('element-plus/es')['ElSwitch']
    ElTabPane: typeof import('element-plus/es')['ElTabPane']
    ElTabs: typeof import('element-plus/es')['ElTabs']
    ElTag: typeof import('element-plus/es')['ElTag']
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/QueryTaskTypeInput.cs
@@ -12,6 +12,31 @@
    /// </summary>
    public class QueryTaskTypeInput
    {
        /// <summary>
        /// 任务类型
        /// </summary>
        public TaskTypeEnum TaskType { get; set; }
        /// <summary>
        /// 入库口有货
        /// </summary>
        public bool InStockHasGood { get; set; }
        /// <summary>
        /// 出库口有货
        /// </summary>
        public bool OutStockHasGood { get; set; }
    }
    /// <summary>
    /// 下发完成的任务入参.
    /// </summary>
    public class ExcecuteTaskInput
    {
        /// <summary>
        /// 任务号
        /// </summary>
        public string TaskNo { get; set;}
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/WmsTaskDto.cs
@@ -29,6 +29,7 @@
    {
        get
        {
            if (TaskType == 0) return "";
            return GetEnumDescriptionUtil.GetEnumDescription(TaskType);
        }
    }
@@ -49,6 +50,7 @@
    {
        get
        {
            if (TaskStatus == 0) return "";
            return GetEnumDescriptionUtil.GetEnumDescription(TaskStatus);
        }
    }
@@ -95,6 +97,7 @@
    {
        get
        {
            if (Dodevicetype == 0) return "";
            return GetEnumDescriptionUtil.GetEnumDescription(Dodevicetype);
        }
    }
@@ -111,6 +114,7 @@
    {
        get
        {
            if (TaskDodeviceStatus == 0) return "";
            return GetEnumDescriptionUtil.GetEnumDescription(TaskDodeviceStatus);
        }
    }
@@ -132,6 +136,7 @@
    {
        get
        {
            if (SonTaskType == 0 || !SonTaskType.HasValue) return "";
            return GetEnumDescriptionUtil.GetEnumDescription(SonTaskType);
        }
    }
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs
@@ -49,7 +49,7 @@
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task FinishTaskAsync(WmsTaskStatusDto input);
    Task<WmsTaskDto> FinishTaskAsync(WmsTaskStatusDto input);
    /// <summary>
    /// 取消任务
@@ -71,4 +71,11 @@
    /// <param name="input"></param>
    /// <returns></returns>
    Task<WmsTaskDto> GetToExecuteTaskAsync(QueryTaskTypeInput input);
    /// <summary>
    /// 更新任务为执行中
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<WmsTaskDto> StartExecuteTaskAsync(ExcecuteTaskInput input);
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
@@ -526,8 +526,12 @@
    /// <param name="input"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public async Task FinishTaskAsync(WmsTaskStatusDto input)
    public async Task<WmsTaskDto> FinishTaskAsync(WmsTaskStatusDto input)
    {
        if (string.IsNullOrEmpty(input.TaskNo))
        {
            throw new UserFriendlyException("任务号不能为空");
        }
        using var scope = _serviceProvider.CreateScope();
        var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
        using var uow = unitOfWorkManager.Begin(requiresNew: true);
@@ -640,6 +644,8 @@
        await uow.SaveChangesAsync();
        await uow.CompleteAsync();
        return ObjectMapper.Map<WmsTask, WmsTaskDto>(task);
    }
    /// <summary>
@@ -650,7 +656,10 @@
    /// <exception cref="UserFriendlyException"></exception>
    public async Task CancelTaskAysnc(WmsTaskStatusDto input)
    {
        if (string.IsNullOrEmpty(input.TaskNo))
        {
            throw new UserFriendlyException("任务号不能为空");
        }
        using var scope = _serviceProvider.CreateScope();
        var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
        using var uow = unitOfWorkManager.Begin(requiresNew: true);
@@ -705,7 +714,13 @@
    /// <exception cref="UserFriendlyException"></exception>
    public async Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input)
    {
        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
        if (string.IsNullOrEmpty(input.TaskNo))
        {
            throw new UserFriendlyException("任务号不能为空");
        }
        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
        if (task == null)
        {
            throw new UserFriendlyException("任务信息不存在");
@@ -722,13 +737,13 @@
            throw new UserFriendlyException("目标库位信息不存在");
        }
        if(toPlaceInfo.IsDisabled)
        if (toPlaceInfo.IsDisabled)
        {
            throw new UserFriendlyException("目标库位已被禁用");
        }
        var toplaceStock = await _wmsMaterialStockRepository.GetStockListAsync(new WmsMaterialStock { PlaceNo = input.ToPlace });
        if (toplaceStock != null && toplaceStock.Count>0)
        if (toplaceStock != null && toplaceStock.Count > 0)
        {
            var model = toplaceStock.FirstOrDefault();
            if (model.MaterialModel != input.MutableParam1)
@@ -755,14 +770,56 @@
        var whereConditions = DynamicGetQueryParams(queryInput);
        var NoStartTaskList = await wmsTaskRepository.GetTaskListAsync(whereConditions);
        if(NoStartTaskList.Count<=0) return null;
        var executeTask = NoStartTaskList.FirstOrDefault(x=>x.TaskType == input.TaskType);
        if(executeTask == null)
        if (NoStartTaskList.Count <= 0) return null;
        var executeTaskList = NoStartTaskList.WhereIf(input.TaskType > 0, x => x.TaskType == input.TaskType).OrderBy(x => x.TaskType).ThenBy(x => x.TaskLevel).ToList();
        var executeTask = executeTaskList.FirstOrDefault();
        if (input.OutStockHasGood)
        {
            executeTask = NoStartTaskList.OrderByDescending(x => x.TaskType == TaskTypeEnum.RUKU).ThenBy(x => x.TaskLevel).FirstOrDefault();
        }
        if (executeTask == null)
        {
            return ObjectMapper.Map<WmsTask, WmsTaskDto>(NoStartTaskList.FirstOrDefault());
        }
        if (executeTask.TaskType == TaskTypeEnum.CHUKU && input.OutStockHasGood)
        {
            return null;
        }
        if(executeTask.TaskType == TaskTypeEnum.RUKU && !input.InStockHasGood)
        {
            return null;
        }
        return ObjectMapper.Map<WmsTask, WmsTaskDto>(executeTask);
    }
    /// <summary>
    /// 更新任务为执行中
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task<WmsTaskDto> StartExecuteTaskAsync(ExcecuteTaskInput input)
    {
        if (string.IsNullOrEmpty(input.TaskNo))
        {
            throw new UserFriendlyException("任务号不能为空");
        }
        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
        if(task == null)
        {
            return new WmsTaskDto();
        }
        task.TaskStatus = WmsTaskStatus.ZHIXINGZHONG;
        task.TaskDodeviceStatus = TaskDodeviceStatus.SrmProgress;
         await wmsTaskRepository.UpdateAsync(task);
        return ObjectMapper.Map<WmsTask, WmsTaskDto>(task);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms/CMS.Plugin.HIAWms.csproj
@@ -11,7 +11,7 @@
    </PropertyGroup>
    <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
        <CMSRootPath>D:\syc\CMS Editor</CMSRootPath>
        <CMSRootPath>E:\syc_cms\CMS Editor</CMSRootPath>
        <OutputPath>$(CMSRootPath)\plugins\cms.plugin.hiawms</OutputPath>
    </PropertyGroup>
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs
@@ -192,9 +192,9 @@
        /// <returns></returns>
        [HttpPost]
        [Route("FinishTask")]
        public async Task FinishTaskAsync(WmsTaskStatusDto input)
        public async Task<WmsTaskDto> FinishTaskAsync(WmsTaskStatusDto input)
        {
            await _wmsTaskAppService.FinishTaskAsync(input);
            return await _wmsTaskAppService.FinishTaskAsync(input);
        }
        /// <summary>
@@ -227,10 +227,21 @@
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("ToExecuteTask")]
        [Route("GetExecuteTask")]
        public async Task<WmsTaskDto> GetToExecuteTaskAsync(QueryTaskTypeInput input)
        {
            return await _wmsTaskAppService.GetToExecuteTaskAsync(input);
        }
        /// <summary>
        /// 更新任务为执行中
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("ToExecuteTask")]
        public async Task<WmsTaskDto> StartExecuteTaskAsync(ExcecuteTaskInput input)
        {
            return await _wmsTaskAppService.StartExecuteTaskAsync(input);
        }
    }