using MailKit.Search;
|
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;
|
using System.Reflection;
|
using System.Reflection.Metadata;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Common.Log;
|
using WIDESEA_Common.TaskEnum;
|
using WIDESEA_Core;
|
using WIDESEA_Core.Enums;
|
using WIDESEA_Core.Helper;
|
using WIDESEA_DTO.Inbound;
|
using WIDESEA_DTO.Task;
|
using WIDESEA_Model.Models;
|
using static WIDESEA_ITaskInfoService.ITaskService;
|
|
namespace WIDESEA_TaskInfoService
|
{
|
public partial class TaskService
|
{
|
//输送线任务下发
|
public WCSginseng PLC_IssueTasks(int TaskId,int AreaNo,string TransNo, string ContainerNo,int ContainerType,string FromPoint,string ToPoint,string ToStation)
|
{
|
WCSginseng WCS_Parame = new WCSginseng();
|
try
|
{
|
WCStask wcstaskinfo = new WCStask();
|
wcstaskinfo.TaskId = TaskId;
|
wcstaskinfo.AreaNo = AreaNo;
|
wcstaskinfo.TransNo = TransNo;
|
wcstaskinfo.ContainerNo = ContainerNo;
|
wcstaskinfo.ContainerType = ContainerType;
|
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)
|
{
|
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;
|
}
|
}
|
|
//堆垛机任务下发
|
public WCSginseng SC_IssueTasks(int TaskId, int AreaNo, string TransNo, string ContainerNo, int ContainerType, string FromPoint, string ToPoint, string ToStation)
|
{
|
WCSginseng WCS_Parame = new WCSginseng();
|
try
|
{
|
WCStask wcstaskinfo = new WCStask();
|
wcstaskinfo.TaskId = TaskId;
|
wcstaskinfo.AreaNo = AreaNo;
|
wcstaskinfo.TransNo = TransNo;
|
wcstaskinfo.ContainerNo = ContainerNo;
|
wcstaskinfo.ContainerType = ContainerType;
|
wcstaskinfo.FromPoint = FromPoint;
|
wcstaskinfo.ToPoint = ToPoint;
|
wcstaskinfo.ToStation = ToStation;
|
|
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)
|
{
|
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;
|
}
|
}
|
|
//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 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 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.PalletCode != task.PalletCode).Count();
|
if (taskcount > 0)
|
return webResponse.Error($"当前已有去该目标位置的任务了,不可下发!!!");
|
}
|
|
// 上传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") //记得改回来
|
{
|
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 = "";
|
|
//进行修改数据库
|
BaseDal.UpdateData(task);
|
|
WriteLog.Write_Log("WCS_输送线请求入库", $"任务信息", "返回输送线任务信息", $"返回给输送线的任务信息:{wcstaskinfo.ToJson()}");
|
return webResponse.OK(data: wcstaskinfo);
|
}
|
else
|
{
|
|
return webResponse.Error("上传MES失败,原因:" + mES_Parameter.ResultMsg);
|
}
|
}
|
else
|
{
|
return webResponse.Error($"下发输送线任务失败,当前托盘条码:{task.PalletCode},不在新建中,不可重复下发");
|
}
|
}
|
catch (Exception ex)
|
{
|
WriteLog.Write_Log("WCS_输送线请求入库", $"任务信息", "失败", $"任务获取失败,wms系统故障,原因:{ex.Message}");
|
return webResponse.Error("任务获取失败,wms系统故障,原因:" + ex.Message);
|
}
|
}
|
|
}
|
}
|