xiazhengtongxue
2026-04-07 b0b5deb5825684bca5b3fa7c2ab59f60ce0e799f
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCSTaskService.cs
@@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
using Org.BouncyCastle.Math.EC;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -38,7 +39,9 @@
                wcstaskinfo.FromPoint = FromPoint;
                wcstaskinfo.ToPoint = ToPoint;
                wcstaskinfo.ToStation = ToStation;
                WriteLog.Write_Log("WCS_输送线任务下发", $"任务下发信息", "成功,下发参数", $"下发的参数:{wcstaskinfo.ToJson()}");
                WCS_Parame = HttpHelper.Post<WCSginseng>(WCS_SendConveyorTask, wcstaskinfo, "输送线任务下发");
                WriteLog.Write_Log("WCS_输送线任务下发", $"任务下发信息", "成功,回参", $"wcs回参:{WCS_Parame.ToJson()}");
                return WCS_Parame;
            }
            catch (Exception ex)
@@ -46,6 +49,7 @@
                WCS_Parame.IsSuccess = false;
                WCS_Parame.Code = "-1";
                WCS_Parame.Message = $"输送线任务调取下发失败:WMS系统下发任务失败,任务号:{TaskId},原因:{ex.Message}";
                WriteLog.Write_Log("WCS_输送线任务下发", $"任务下发信息", "失败", $"输送线任务调取下发失败:WMS系统下发任务失败,任务号:{TaskId},原因:{ex.Message}");
                return WCS_Parame;
            }
        }
@@ -65,8 +69,10 @@
                wcstaskinfo.FromPoint = FromPoint;
                wcstaskinfo.ToPoint = ToPoint;
                wcstaskinfo.ToStation = ToStation;
                Console.WriteLine(wcstaskinfo.ToJson());
                WriteLog.Write_Log("WCS_堆垛机任务下发", $"任务下发信息", "成功,下发参数", $"下发的参数:{wcstaskinfo.ToJson()}");
                WCS_Parame = HttpHelper.Post<WCSginseng>(WCS_SendStackerTask, wcstaskinfo, "堆垛机任务下发");
                WriteLog.Write_Log("WCS_堆垛机任务下发", $"任务下发信息", "成功,回参", $"wcs回参:{WCS_Parame.ToJson()}");
                return WCS_Parame;
            }
            catch (Exception ex)
@@ -74,6 +80,7 @@
                WCS_Parame.IsSuccess = false;
                WCS_Parame.Code = "-1";
                WCS_Parame.Message = $"堆垛机任务调取下发失败:WMS系统下发任务失败,任务号:{TaskId},原因:{ex.Message}";
                WriteLog.Write_Log("WCS_堆垛机任务下发", $"任务下发信息", "失败", $"堆垛机任务调取下发失败:WMS系统下发任务失败,任务号:{TaskId},原因:{ex.Message}");
                return WCS_Parame;
            }
        }
@@ -81,31 +88,63 @@
        //WCS获取任务进行反馈
        public WebResponseContent PalletInboundTask(WCSTaskDTO wCSTask)
        {
            WriteLog.Write_Log("WCS_输送线请求入库", $"任务信息", "接收参数", $"参数:{wCSTask.ToJson()}");
            WebResponseContent webResponse = new WebResponseContent();
            try
            {
                Dt_Task task = BaseDal.QueryData(x => x.PalletCode == wCSTask.PalletCode).FirstOrDefault();
                if (task == null)
                    return WebResponseContent.Instance.Error($"未找到任务信息,托盘条码:{wCSTask.PalletCode}");
                    return webResponse.Error($"未找到任务信息,托盘条码:{wCSTask.PalletCode}");
                //Dt_Task Outtask = BaseDal.QueryData(x => x.TargetAddress == task.SourceAddress).FirstOrDefault();
                // å¤„理地址转换
                string targetAddress = wCSTask.FromPoint;
                if (targetAddress == "1104")
                {
                    targetAddress = "1103";
                }
                else if (targetAddress == "1102")
                {
                    targetAddress = "1101";
                }
                Dt_Task Outtask = BaseDal.QueryData(x => x.TargetAddress == targetAddress).FirstOrDefault();
                if (Outtask != null) return webResponse.Error($"当前已有来该目标位置{wCSTask.FromPoint}的任务,不可进行入库,托盘条码:{wCSTask.PalletCode}", 501);
                if (task.PalletType != wCSTask.ContainerType.ToString())
                {
                    return WebResponseContent.Instance.Error($"托盘类型不匹配,当前任务中托盘类型为:{task.PalletType},WCS上报类型为:{wCSTask.ContainerType},托盘条码:{wCSTask.PalletCode}");
                    return webResponse.Error($"托盘类型不匹配,当前任务中托盘类型为:{task.PalletType},WCS上报类型为:{wCSTask.ContainerType},托盘条码:{wCSTask.PalletCode}", 502);
                }
                // ä»»åŠ¡é‡å‘
                if (task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting)
                {
                    WCStask wcstaskinfo = new WCStask();
                    wcstaskinfo.TaskId = task.TaskId;
                    wcstaskinfo.AreaNo = int.Parse(task.Roadway);
                    wcstaskinfo.TransNo = task.TaskNum;
                    wcstaskinfo.ContainerNo = task.PalletCode;
                    wcstaskinfo.ContainerType = int.Parse(task.PalletType);
                    wcstaskinfo.FromPoint = wCSTask.FromPoint;
                    wcstaskinfo.ToPoint = task.NextAddress;
                    wcstaskinfo.ToStation = "";
                    WriteLog.Write_Log("WCS_输送线请求入库", $"任务信息", $"返回输送线任务信息", $"返回给输送线的任务信息:{wcstaskinfo.ToJson()}");
                    return webResponse.OK(data: wcstaskinfo);
                }
                if (task.TargetAddress!="" && task.TargetAddress!=null)
                {
                    int taskcount = BaseDal.QueryData(x => x.TargetAddress == task.TargetAddress && x.PalletType != task.PalletCode).Count();
                    int taskcount = BaseDal.QueryData(x => x.TargetAddress == task.TargetAddress && x.PalletCode != task.PalletCode).Count();
                    if (taskcount > 0)
                        return WebResponseContent.Instance.Error($"当前已有去该目标位置的任务了,不可下发!!!");
                        return webResponse.Error($"当前已有去该目标位置的任务了,不可下发!!!");
                }
                
                if (task.TaskStatus == (int)InTaskStatusEnum.InNew)
                // ä¸Šä¼ EMS
                if (task.TaskStatus == (int)InTaskStatusEnum.InNew)
                {
                    task.TaskStatus = (int)InTaskStatusEnum.PLC_InExecuting;
                    task.Dispatchertime = DateTime.Now;
                    MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, "Start", "操作成功", task.PalletCode, "");
                    if (mES_Parameter.Result != "Y")    //记得改回来
                    if (mES_Parameter.Result == "Y")    //记得改回来
                    {
                        WCStask wcstaskinfo = new WCStask();
                        wcstaskinfo.TaskId = task.TaskId;
@@ -116,12 +155,16 @@
                        wcstaskinfo.FromPoint = wCSTask.FromPoint;
                        wcstaskinfo.ToPoint = task.NextAddress;
                        wcstaskinfo.ToStation = "";
                        //进行修改数据库
                        BaseDal.UpdateData(task);
                        WriteLog.Write_Log("WCS_输送线请求入库", $"任务信息", "返回输送线任务信息", $"返回给输送线的任务信息:{wcstaskinfo.ToJson()}");
                        return webResponse.OK(data: wcstaskinfo);
                    }
                    else
                    {
                        return webResponse.Error("上传MES失败,原因:" + mES_Parameter.ResultMsg);
                    }
                }
@@ -132,6 +175,7 @@
            }
            catch (Exception ex)
            {
                WriteLog.Write_Log("WCS_输送线请求入库", $"任务信息", "失败", $"任务获取失败,wms系统故障,原因:{ex.Message}");
                return webResponse.Error("任务获取失败,wms系统故障,原因:" + ex.Message);
            }
        }