肖洋
2024-11-29 a4254c45c86d19a76147cbf375cba7f1a7aff5d6
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -1,17 +1,9 @@
using log4net.Core;
using Mapster;
using Mapster;
using Masuit.Tools;
using Masuit.Tools.Models;
using System.Linq;
using System.Threading.Tasks;
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_BasicInfoRepository;
namespace WIDESEA_StorageOutTaskServices;
@@ -106,7 +98,12 @@
                {
                    var agingOutputDto = MapToAgingOutputDto(stock);
                    content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
                    ValidateResponse(content);
                    //ValidateResponse(content);
                    var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
                    if (!result.Success)
                    {
                        task.Remark = "NG";
                    }
                }
            }
@@ -119,10 +116,11 @@
                await UpdateLocationAsync(loc);
                await DeleteStockInfoAsync(stock.Id);
                await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);
                //await DeleteTaskAsync(task.TaskId);
                if (task.Roadway.Contains("FR") || task.Roadway.Contains("GW"))   //如果是分容或高温出库 将任务删除
                    await DeleteTaskAsync(task.TaskId);
            });
            return content.OK("任务完成成功");
            return content.OK("任务完成成功", task.Remark);
        }
        catch (Exception err)
        {
@@ -145,7 +143,8 @@
        var outHours = (DateTime.Now - stock.OutboundTime.Value).TotalHours;
        var isNG = outHours > parameterInfo.LowerSpecificationsLimit.ToDouble() && outHours < parameterInfo.UpperSpecificationsLimit.ToDouble();
        var defectCode = string.Empty;
        if (!isNG) defectCode = "TQCK";
        return new AgingOutputDto
        {
            OpFlag = 1,
@@ -166,6 +165,7 @@
                        TargetValue = parameterInfo.TargetValue,
                        LowerLomit = parameterInfo.LowerSpecificationsLimit,
                        UpperLimit = parameterInfo.UpperSpecificationsLimit,
                        DefectCode = defectCode
                    }
                }
            }).ToList()
@@ -174,11 +174,7 @@
    private void ValidateResponse(WebResponseContent content)
    {
        var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
        if (!result.Success)
        {
            throw new Exception(result.MOMMessage);
        }
    }
    private (DtLocationInfo, Dt_Task) UpdateStockAndTaskStatus(DtStockInfo stock, Dt_Task task)
@@ -303,7 +299,7 @@
            // 获取装箱信息和目标位置信息
            var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
            var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress);
            var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress && x.RoadwayNo == task.Roadway);
            // 更新目标位置状态为库存中
            locationInf.LocationStatus = (int)LocationEnum.InStock;
@@ -316,7 +312,7 @@
            // 执行数据库事务
            bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId);
            bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId, boxing);
            if (isResult)
            {
                content.OK("入库任务完成成功");
@@ -433,7 +429,7 @@
        stock.LinedProcessFeedbackTime = respone.LinedProcessFeedbackTime;
        stock.SpecialParameterDuration = respone.SpecialParameterDuration;
        //2024年11月16日:新增字段计算应出库时间
        stock.OutboundTime = Convert.ToDateTime(respone.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(respone.SpecialParameterDuration));
        stock.OutboundTime = Convert.ToDateTime(respone.LinedProcessFeedbackTime == null ? DateTime.Now : respone.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(respone.SpecialParameterDuration));
        stock.ProductionLine = respone.ProductionLine;
        stock.ParameterInfos = respone.ParameterInfos.ToJsonString();
        stock.StockStatus = 1;
@@ -570,7 +566,17 @@
            if (serialNosError.Count > 0)
            {
                // TODO 创建任务送至NG排出口
                List<string> NGStation = input.Position == "1088" ? new List<string>() { "1020" } : new List<string>() { "JZSC01" };
                var efg = _stationManagerRepository.QueryData(x => x.stationType == 1 && x.stationChildCode == input.Position && x.stationArea == area.AreaCode).ToList();
                //List<string> NGStation = input.Position == "1088" ? new List<string>() { "1020" } : new List<string>() { "JZSC01" };
                if (efg.Count <= 0)
                {
                    throw new Exception("未找到NG入库站台配置");
                }
                List<string> NGStation = efg.Select(x => x.stationNGLocation).ToList();
                if (NGStation.Count <= 0)
                {
                    NGStation = efg.Select(x => x.stationNGChildCode).ToList();
                }
                content = await CreateNewTask(input, NGStation, 2);
                return content.Error("存在异常电芯");
            }
@@ -581,6 +587,7 @@
                content = await RequestTrayInTaskAsync(input);
                return content;
            }
            //Console.WriteLine("qqqqq");
            // TODO 获取本地料框属性与整盘电芯属性获取的值进行对比,如果一致则继续,否则返回错误信息
            //var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
@@ -590,6 +597,7 @@
            // 调用CreateBoxingInfo方法,创建组盘信息
            var boxing = CreateBoxingInfo(result, input.PalletCode);
            //Console.WriteLine(boxing.ToJsonString());
            if (boxing == null) return content.Error("组盘失败");
            // 调用GetProcessApplyAsync方法,获取工艺路线
@@ -613,8 +621,14 @@
            //// 调用GetProcessResponseAsync方法,获取工艺响应
            //var processResponse = await GetProcessResponseAsync(process, input.Position);
            List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" };
            // 调用CreateNewTask方法,创建新任务
            //List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" };
            var stationManagers = _stationManagerRepository.QueryData(x => x.stationType == 1 && x.stationChildCode == input.Position && x.stationArea == area.AreaCode).ToList();
            if (stationManagers.Count <= 0)
            {
                throw new Exception("未找到NG入库站台配置");
            }
            List<string> strings = stationManagers.Select(x => x.Roadway).ToList();
            //// 调用CreateNewTask方法,创建新任务
            content = await CreateNewTask(input, strings);
            if (content.Status)
            {
@@ -687,8 +701,15 @@
                return content.OK(data: task);
            }
            var stationManagers = _stationManagerRepository.QueryData(x => x.stationType == 1 && x.stationChildCode == input.Position).ToList();
            if (stationManagers.Count <= 0)
            {
                throw new Exception("未找到空托盘入库站台配置");
            }
            // 获取目标地址
            List<string> strings = input.Position == "1016" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" };
            List<string> strings = stationManagers.Select(x => x.Roadway).ToList();
            return await CreateNewTask(input, strings, 1);
        }
@@ -1216,8 +1237,8 @@
                if (boxingInfo != null)
                {
                    isDeleteBoxing = await _boxingInfoRepository.Db.DeleteNav<DtBoxingInfo>(x => x.Id == boxingInfo.Id)
                .Include(x => x.BoxingInfoDetails)
                .ExecuteCommandAsync();
                                            .Include(x => x.BoxingInfoDetails)
                                            .ExecuteCommandAsync();
                }
            }