Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -1,31 +1,14 @@

using log4net.Core;
using Mapster;
using Masuit.Tools;
using Masuit.Tools.Models;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using SixLabors.Fonts.Tables.AdvancedTypographic;
using System.Diagnostics;
using WIDESEA_Common;
using Masuit.Tools;
using WIDESEA_Core.Const;
using WIDESEA_DTO;
using WIDESEA_DTO.MOM;
using WIDESEA_DTO.WMS;
using WIDESEA_IStorageBasicRepository;
using WIDESEA_IStoragIntegrationServices;
using WIDESEA_Model.Models;
using WIDESEA_StorageBasicRepository;
using WIDESEA_StorageTaskRepository;
using WIDESEA_StoragIntegrationServices;
using WIDESEAWCS_Model.Models;
namespace WIDESEA_StorageTaskServices;
public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
{
    #region 出库任务完成
    //public async Task<WebResponseContent> CompleteStackTaskAsync(Dt_Task task, DtStockInfo stock)
    //{
@@ -357,6 +340,7 @@
    #endregion 任务完成
    #region 请求任务入库
    /// <summary>
    /// 请求入库
    /// </summary>
@@ -391,61 +375,8 @@
                }
            }
            //if (input.area != 3)
            //{
            //    if (input.PalletCode == null || input.PalletCode.Trim() == "")
            //        return content.Error("托盘条码为空");
            //}
            //创建一个TrayCellsStatusDto对象,并赋值
            //TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
            //{
            //    Software = "WMS",
            //    TrayBarcode = input.PalletCode,
            //    //EquipmentCode = "EQ_CWJZ01"
            //    EquipmentCode = input.EquiCodeMOM
            //};
            // 调用GetTrayCellStatusAsync方法,获取整盘电芯
            //content = await GetTrayCellStatusAsync(trayCells);
            // 如果状态为false,则返回content
            //if (!content.Status) return content;
            // 添加组盘信息
            // 将content.Data转换为ResultTrayCellsStatus对象
            //var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
            //if (result.SerialNos.Count <= 0)
            //    return content.Error(result.MOMMessage);
            //Console.WriteLine(result);
            //// TODO 获取本地料框属性与整盘电芯属性获取的值进行对比,如果一致则继续,否则返回错误信息
            ////var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
            ////if (productions.Count <= 0)
            ////    return content.Error("料框属性不存在");
            //// 调用CreateBoxingInfo方法,创建组盘信息
            //var boxing = CreateBoxingInfo(result, input.PalletCode);
            //if (boxing == null) return content.Error("组盘失败");
            //// 调用GetProcessApplyAsync方法,获取工艺路线
            //ProcessApplyDto process = await GetProcessApplyAsync(input, result);
            //// 如果process为null,则返回content
            //if (process == null) return content;
            //// 调用_processApplyService.GetProcessApplyAsync方法,获取工艺申请
            //content = await _processApplyService.GetProcessApplyAsync(process);
            //// 如果状态为false,则返回null
            //if (!content.Status) return content.Error("工艺申请失败");
            ////// 调用GetProcessResponseAsync方法,获取工艺响应
            ////var processResponse = await GetProcessResponseAsync(process, input.Position);
            // 调用CreateNewTask方法,创建新任务
            content = await CreateNewTask(input);
            //if (content.Status)
            //{
            //    var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
            //}
        }
        catch (Exception err)
        {
@@ -458,7 +389,7 @@
    }
    /// <summary>
    ///
    ///
    /// </summary>
    /// <param name="input">请求参数</param>
    /// <param name="flag">实框空框标识</param>
@@ -482,26 +413,8 @@
        }
        var task = await CreateNewTaskByStation(input, stationinfo);
        // 创建新任务实例
        //var task = new Dt_Task
        //{
        //    CurrentAddress = input.Position,
        //    Grade = 1,
        //    Roadway = input.Roadways,
        //    TargetAddress = locationInfo.LocationCode,
        //    Dispatchertime = DateTime.Now,
        //    MaterialNo = "",
        //    NextAddress = input.Roadways,
        //    OrderNo = null,
        //    PalletCode = input.PalletCode,
        //    SourceAddress = stationinfo.stationLocation,
        //    TaskState = (int)TaskInStatusEnum.Line_InFinish,
        //    TaskType = (int)TaskInboundTypeEnum.Inbound,
        //    TaskNum = await BaseDal.GetTaskNo(),
        //    Creater = "Systeam"
        //};
        // 尝试添加新任务
        if (task == null) return content.Error();
        var taskId = await BaseDal.AddDataAsync(task);
        bool isResult = taskId > 0;
        if (isResult)
@@ -520,8 +433,6 @@
                TaskType = task.TaskType,
            };
            content.OK(data: taskDTO);
        }
        else
            content.Error("添加任务失败");
@@ -557,10 +468,10 @@
    }
    #region 直接出库任务
    private async Task<Dt_Task> CreateInToOutTaskAsync(RequestTaskDto input, Dt_StationManager stationManager)
    {
        //if (stationManager.stationType != 5) throw new Exception("错误的调取");
        input.EquiCodeMOM = "24MEJQ11-1006-1";
@@ -604,6 +515,10 @@
                    Creater = "Systeam"
                };
                return taskNG;
            }
            else
            {
                return null;
            }
        }
@@ -656,10 +571,11 @@
        return task;
    }
    #endregion
    #endregion 直接出库任务
    #region 入库任务
    private async Task<Dt_Task> CreateInTaskAsync(RequestTaskDto input, Dt_StationManager stationManager)
    {
        if (stationManager.stationType != 1 && stationManager.stationType != 6) throw new Exception("错误的调取");
@@ -770,17 +686,20 @@
        return task;
    }
    #endregion
    #endregion 入库任务
    #region 库位分配
    /// <summary>
    ///
    ///
    /// </summary>
    /// <param name="requestTask">请求参数</param>
    /// <returns></returns>
    private async Task<DtLocationInfo> RequestLocation(RequestTaskDto requestTask, bool isCheckRequest = false)
    {
        #region 获取货位
        try
        {
            List<DtLocationInfo> locations;
@@ -805,9 +724,11 @@
            Console.WriteLine(err.Message.ToString());
            return null;
        }
        #endregion 获取货位
    }
    #endregion
    #endregion 库位分配
    // 获取工艺申请
    private async Task<ProcessApplyDto> GetProcessApplyAsync(RequestTaskDto input, ResultTrayCellsStatus content)
@@ -825,7 +746,7 @@
        };
    }
    #endregion 请求空框出库
    #endregion 请求任务入库
    public async Task<Dt_Task> CreateEmptyOutTaskAsync(RequestTaskDto input, Dt_StationManager stationManager)
    {
@@ -864,12 +785,12 @@
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
    #region 直接出库任务完成
    public async Task<WebResponseContent> CompleteInToOutTaskAsync(Dt_Task task)
    {
        WebResponseContent content = new WebResponseContent();
@@ -888,11 +809,12 @@
            return content.Error(ex.Message);
        }
    }
    #endregion
    #endregion 直接出库任务完成
    #region MyRegion
    private async Task<bool> ExecuteTransaction(DtStockInfo stock, Dt_Task_Hty taskHty, DtLocationInfo fromLocation,DtLocationInfo toLocation, int taskId)
    private async Task<bool> ExecuteTransaction(DtStockInfo stock, Dt_Task_Hty taskHty, DtLocationInfo fromLocation, DtLocationInfo toLocation, int taskId)
    {
        _unitOfWorkManage.BeginTran();
        try
@@ -930,13 +852,13 @@
            throw new Exception(err.Message); // 抛出异常以便外部捕获
        }
    }
    #endregion
    #endregion MyRegion
    #region 检测高温库是否有可出库库存
    public WebResponseContent StockCheckingAsync()
    {
        WebResponseContent webResponseContent = new WebResponseContent();
        try
        {
@@ -960,7 +882,6 @@
                        if (stockInfo.Count <= 0) continue;
                        foreach (var item in stockInfo)
                        {
                            var hasTask = BaseDal.QueryFirst(x => x.PalletCode == item.PalletCode);
                            if (hasTask != null)
                            {
@@ -978,7 +899,6 @@
                            task.NextAddress = "002-000-002";
                            // 创建任务DTO
                            WMSTaskDTO taskDTO = CreateTaskDTO(task);
                            var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                            var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue;
@@ -1015,7 +935,7 @@
        }
    }
    #endregion
    #endregion 检测高温库是否有可出库库存
    #region 常温补空托盘至分容
@@ -1033,7 +953,7 @@
                var location = locations.OrderBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).FirstOrDefault();
                var stockInfo = await QueryStockInfoForEmptyTrayAsync("CWSC1", new List<string>());
                var stockInfo = await QueryStockInfoForEmptyTrayAsync("CWSC1");
                if (stockInfo != null)
                {
@@ -1066,6 +986,5 @@
        return content;
    }
    #endregion
    #endregion 常温补空托盘至分容
}