zs
2025-05-15 cb8543b802db2aa3891e93c3ca3a1eeb5bea0663
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
@@ -20,6 +20,8 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
using Volo.Abp.Uow;
using Microsoft.Extensions.DependencyInjection;
using NPOI.SS.Formula.Functions;
using System.Collections.Generic;
namespace CMS.Plugin.HIAWms.Application.Implements;
@@ -167,6 +169,7 @@
        var insertObj = ObjectMapper.Map<WmsTaskCreateDto, WmsTask>(input);
        insertObj.Sort = sort;
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
        insertObj.PlcTaskId = new Random(Guid.NewGuid().GetHashCode()).Next(101, 99999);
        await wmsTaskRepository.InsertAsync(insertObj);
@@ -693,4 +696,73 @@
        await uow.SaveChangesAsync();
        await uow.CompleteAsync();
    }
    /// <summary>
    /// 修改目标库位
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public async Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input)
    {
        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
        if (task == null)
        {
            throw new UserFriendlyException("任务信息不存在");
        }
        if (task.TaskStatus != WmsTaskStatus.WEIZHIXING)
        {
            throw new UserFriendlyException("已开始或者结束的任务不允许修改");
        }
        var toPlaceInfo = await _wmsPlaceRepository.FindByNameAsync(input.ToPlace);
        if (toPlaceInfo == null)
        {
            throw new UserFriendlyException("目标库位信息不存在");
        }
        if(toPlaceInfo.IsDisabled)
        {
            throw new UserFriendlyException("目标库位已被禁用");
        }
        var toplaceStock = await _wmsMaterialStockRepository.GetStockListAsync(new WmsMaterialStock { PlaceNo = input.ToPlace });
        if (toplaceStock != null && toplaceStock.Count>0)
        {
            var model = toplaceStock.FirstOrDefault();
            if (model.MaterialModel != input.MutableParam1)
            {
                throw new UserFriendlyException("目标库位型号与当前型号不一致不允许修改");
            }
        }
        task.ToPlace = input.ToPlace;
        await wmsTaskRepository.UpdateAsync(task);
    }
    /// <summary>
    /// 获取需要执行的任务
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task<WmsTaskDto> GetToExecuteTaskAsync(QueryTaskTypeInput input)
    {
        var queryInput = new GetWmsTaskInput
        {
            TaskStatus = WmsTaskStatus.WEIZHIXING,
        };
        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)
        {
            return ObjectMapper.Map<WmsTask, WmsTaskDto>(NoStartTaskList.FirstOrDefault());
        }
        return ObjectMapper.Map<WmsTask, WmsTaskDto>(executeTask);
    }
}