From fb77cc8fe39bd3c3f49b336bf9e664957fe2dc07 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 15 十一月 2024 11:28:51 +0800
Subject: [PATCH] 11.06
---
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 430 ++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 387 insertions(+), 43 deletions(-)
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
index b1f3bab..ec87b7c 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -1,4 +1,5 @@
锘�#region << 鐗� 鏈� 娉� 閲� >>
+
/*----------------------------------------------------------------
* 鍛藉悕绌洪棿锛歐IDESEAWCS_Tasks.ConveyorLineJob
* 鍒涘缓鑰咃細鑳$搴�
@@ -11,24 +12,27 @@
* 淇敼鏃堕棿锛�
* 鐗堟湰锛歏1.0.1
* 淇敼璇存槑锛�
- *
+ *
*----------------------------------------------------------------*/
+
#endregion << 鐗� 鏈� 娉� 閲� >>
using AutoMapper;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using HslCommunication;
+using Newtonsoft.Json;
using Quartz;
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using SqlSugar;
using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.TaskInfo;
+using WIDESEAWCS_IProcessRepository;
+using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DeviceBase;
using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_Tasks.ConveyorLineJob;
@@ -36,24 +40,27 @@
namespace WIDESEAWCS_Tasks
{
[DisallowConcurrentExecution]
- public class CommonConveyorLineJob : JobBase, IJob
+ public partial class CommonConveyorLineJob : JobBase, IJob
{
- private readonly ITaskService _taskService;
+ public readonly ITaskService _taskService;
+ private readonly ITaskRepository _taskRepository;
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
private readonly IRouterService _routerService;
+ private readonly IPlatFormRepository _platFormRepository;
private readonly IMapper _mapper;
- public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper)
+ public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IPlatFormRepository platFormRepository)
{
_taskService = taskService;
_taskExecuteDetailService = taskExecuteDetailService;
_routerService = routerService;
_mapper = mapper;
+ _taskRepository = taskRepository;
+ _platFormRepository = platFormRepository;
}
public Task Execute(IJobExecutionContext context)
{
- //Console.Out.WriteLine(DateTime.Now);
try
{
CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams");
@@ -66,39 +73,96 @@
//Task task = Task.Run(() =>
//{
ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode);
- if (command != null)
+ ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(childDeviceCode, "DeviceCommand");
+ if (command != null && commandWrite != null)
{
- DeviceProtocolDetailDTO? deviceProtocolDetail = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.ProtocalDetailValue == command.InteractiveSignal.ToString() && x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal));
- if (deviceProtocolDetail != null)
+ var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray();
+
+ List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal)).ToList();
+
+ if (deviceProtocolDetails != null)
{
- MethodInfo? method = GetType().GetMethod(deviceProtocolDetail.ProtocolDetailType);
- if (method != null)
+ foreach (var item in deviceProtocolDetails)
{
- method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode });
+ var outDeviceCodes = _routerService.QueryOutDeviceCodes(conveyorLine.DeviceCode);
+ if (structs[item.ProtocalDetailValue.ObjToInt()] == true)
+ {
+ MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType);
+ if (method != null)
+ {
+ command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, item.ProtocalDetailValue.ObjToInt() });
+ }
+ }
+ else
+ {
+ DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ string[] x = devicePro.DeviceProAddress.Split('.');
+ x[x.Length - 1] = (item.ProtocalDetailValue.ObjToInt() + 1).ToString();
+ string DeviceProAddress = string.Join(".", x);
+ var writeRead = conveyorLine.Communicator.Read<bool>(DeviceProAddress);
+ if (writeRead)
+ {
+ ConveyorLineSendFinish(conveyorLine, childDeviceCode, item.ProtocalDetailValue.ObjToInt(), false);
+ }
+ }
+ }
+ }
+
+ Platform platform = _platFormRepository.QueryFirst(x => x.PLCCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active");
+ if (platform != null)
+ {
+ if (command.InteractiveSignal != 2)
+ {
+ MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod);
+ if (method != null)
+ {
+ command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
+ int count = string.IsNullOrEmpty(platform.Location) ? 0 + 1 : platform.Location.Split(',').Count() + 1;
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
+ }
}
else
{
- //todo 鏈壘鍒版柟娉曟椂
+ if (!string.IsNullOrEmpty(platform.Location))
+ {
+ var strings = platform.Location.Split(',').ToList();
+ foreach (var ite in strings)
+ {
+ int index = strings.FindIndex(p => p == ite);
+ ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite);
+ if (command1.InteractiveSignal != 2)
+ {
+ MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod);
+ if (method != null)
+ {
+ command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
+ int count = strings.Count - index;
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
+ }
+ }
+ }
+ }
}
}
}
//});
+
//tasks.Add(task);
+ Task.WaitAll(tasks.ToArray());
}
-
- Task.WaitAll(tasks.ToArray());
}
-
}
catch (Exception ex)
{
- //Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
+ Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
}
finally
{
- WriteDebug("CommonConveyorLineJob", "test");
+ //WriteDebug("CommonConveyorLineJob", "test");
//Console.Out.WriteLine(DateTime.Now);
}
+
return Task.CompletedTask;
}
@@ -108,20 +172,142 @@
/// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
/// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- public void RequestInbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ public void RequestInbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
- if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
- {
- Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
- if (task != null)
- {
- ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
- taskCommand.InteractiveSignal = command.InteractiveSignal;
- conveyorLine.SendCommand(taskCommand, childDeviceCode);
+ // 鑾峰彇涓嬩竴涓换鍔�
+ var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
+ //var taskOut = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+ //return;
+ // 澶勭悊鍑哄簱浠诲姟
+ HandleTaskOut(conveyorLine, command, childDeviceCode, ProtocalDetailValue, task);
- _taskService.UpdateTaskStatusToNext(task);
- }
+ // 濡傛灉娌℃湁鍑哄簱浠诲姟锛屽鐞嗘柊浠诲姟
+ if (task == null)
+ {
+ HandleNewTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
}
+
+ #region 鑰佺増鏈�
+
+ //var taskNew = _taskService.QueryCraneConveyorLineTask(command.Barcode.ObjToInt(), childDeviceCode);
+ //var Taskout = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+ //if (Taskout != null)
+ //{
+ // // 绌烘墭鐩樹换鍔�
+ // if (Taskout.TaskType == (int)TaskOutboundTypeEnum.OutTray)
+ // {
+ // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout);
+ // taskCommand.InteractiveSignal = command.InteractiveSignal;
+ // if (command.Barcode == "")
+ // {
+ // var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity;
+ // taskCommand.TargetAddress = NGAddress;
+ // }
+ // conveyorLine.SendCommand(taskCommand, childDeviceCode);
+
+ // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+
+ // _taskService.UpdateTaskStatusToNext(Taskout);
+ // }
+ // else if (Taskout.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+ // {
+ // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout);
+ // taskCommand.InteractiveSignal = command.InteractiveSignal;
+ // if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)
+ // {
+ // if (command.Barcode == "")
+ // {
+ // var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity;
+ // taskCommand.TargetAddress = NGAddress;
+ // }
+ // conveyorLine.SendCommand(taskCommand, childDeviceCode);
+
+ // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+
+ // _taskService.UpdateTaskStatusToNext(Taskout);
+ // }
+ // else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
+ // {
+ // if (command.Barcode == "")
+ // {
+ // var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity;
+ // taskCommand.TargetAddress = NGAddress;
+
+ // conveyorLine.SendCommand(taskCommand, childDeviceCode);
+
+ // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+ // _taskService.UpdateTaskStatusToNext(Taskout);
+ // }
+ // else
+ // {
+ // // todo 璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛
+ // var x = new { taskNum = Taskout.TaskNum };
+ // var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result;
+ // WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+ // if (content.Status)
+ // {
+ // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+ // _taskService.UpdateTaskStatusToNext(Taskout);
+ // }
+ // }
+ // }
+ // }
+ //}
+ //if (taskNew == null)
+ //{
+ // // 鍖栨垚->闄堝寲绌烘墭鐩樺洖娴�
+ // if (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016")
+ // {
+ // //TODO 璋冪敤WMS鍒涘缓鍖栨垚->闄堝寲绌烘墭鐩樺洖娴�
+ // WMSTaskDTO taskDTO = new WMSTaskDTO()
+ // {
+ // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
+ // Grade = 1,
+ // PalletCode = command.Barcode,
+ // RoadWay = "CHSC01",
+ // SourceAddress = childDeviceCode,
+ // TargetAddress = "CHSC01",
+ // TaskState = (int)TaskInStatusEnum.InNew,
+ // Id = 0,
+ // TaskType = (int)TaskInboundTypeEnum.InTray,
+ // };
+ // WebResponseContent content = CreateAndSendTask(taskDTO);
+ // if (content.Status)
+ // {
+ // Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+ // if (task != null)
+ // {
+ // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
+ // taskCommand.InteractiveSignal = command.InteractiveSignal;
+ // conveyorLine.SendCommand(taskCommand, childDeviceCode);
+
+ // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+
+ // _taskService.UpdateTaskStatusToNext(task);
+ // }
+ // }
+ // }
+ // else
+ // {
+ // if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
+ // {
+ // Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+ // if (task != null)
+ // {
+ // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
+ // taskCommand.InteractiveSignal = command.InteractiveSignal;
+ // conveyorLine.SendCommand(taskCommand, childDeviceCode);
+
+ // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+
+ // _taskService.UpdateTaskStatusToNext(task);
+ // }
+ // }
+ // }
+ //}
+
+ #endregion
}
/// <summary>
@@ -151,13 +337,17 @@
/// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
/// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- public void ConveyorLineInFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ public void ConveyorLineInFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
- if (task != null)
+ if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish)
{
- conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
+ ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+
+ //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
+
Console.Out.WriteLine(content.Serialize());
}
}
@@ -168,7 +358,8 @@
/// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
/// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- public void RequestOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ public void RequestOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
if (task != null)
@@ -177,6 +368,7 @@
taskCommand.InteractiveSignal = command.InteractiveSignal;
conveyorLine.SendCommand(taskCommand, childDeviceCode);
+ ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
_taskService.UpdateTaskStatusToNext(task);
}
}
@@ -208,15 +400,167 @@
/// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
/// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- public void ConveyorLineOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ public void ConveyorLineOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
if (task != null)
{
- conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
- WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
- Console.Out.WriteLine(content.Serialize());
+ WebResponseContent content = new WebResponseContent();
+ ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
+ taskCommand.InteractiveSignal = command.InteractiveSignal;
+ if (task.PalletCode != command.Barcode)
+ {
+ var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == task.TargetAddress).Capacity;
+ taskCommand.TargetAddress = NGAddress;
+ }
+ else
+ {
+ taskCommand.TargetAddress = 0;
+ }
+
+ #region 鍚慦MS涓婃姤浠诲姟瀹屾垚
+
+ WMSTaskDTO wMSTaskDTO = new WMSTaskDTO();
+ var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", (new { taskNum = command.TaskNum }).ToJsonString()).Result;
+
+ content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+ // 妫�鏌ョ姸鎬佸苟杩斿洖
+ if (!content.Status)
+ return;
+
+ #endregion 鍚慦MS璇锋眰绌烘墭鐩樹换鍔�
+
+ conveyorLine.SendCommand(taskCommand, childDeviceCode);
+ ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+ content = _taskService.UpdateTaskStatusToNext(task);
}
}
+
+ /// <summary>
+ /// 鍒涘缓浠诲姟骞跺彂閫佽姹�
+ /// </summary>
+ public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO)
+ {
+ var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+ if (content.Status)
+ {
+ Console.WriteLine($"{taskDTO.TaskType}鍛煎彨鎴愬姛");
+ }
+ return content;
+ }
+
+ /// <summary>
+ /// 闄堝寲绌烘墭鐩樺嚭搴�
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ /// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ public void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index, Platform platform)
+ {
+ TaskOutboundTypeEnum taskOutboundTypeEnum;
+ if (platform.PlatformType.Contains("OutTray"))
+ taskOutboundTypeEnum = TaskOutboundTypeEnum.OutTray;
+ else
+ taskOutboundTypeEnum = TaskOutboundTypeEnum.Outbound;
+ CheckAndCreateTask(TaskOutboundTypeEnum.OutTray, childDeviceCode, index, platform.Stacker.Split(',')[0], platform.Stacker.Split(',').ToList());
+ }
+
+ #region
+ ///// <summary>
+ ///// 闄堝寲瀹炵洏鍑哄簱)
+ ///// </summary>
+ ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ //public void ChuanhuaOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ //{
+ // CheckAndCreateTask(TaskOutboundTypeEnum.Outbound, childDeviceCode, "CHSC01", "001-001-001");
+ //}
+
+ ///// 闈欑疆绌烘墭鐩樺嚭搴�
+ ///// </summary>
+ ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ //public void EmptyTrayOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
+ //{
+ // CheckAndCreateTask(TaskOutboundTypeEnum.OutTray, childDeviceCode, index, "JZSC01", "002-020-001");
+ //}
+ ///// <summary>
+ ///// 闈欑疆瀹炵洏鍑哄簱
+ ///// </summary>
+ ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ //public void JingzhiOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
+ //{
+ // CheckAndCreateTask(TaskOutboundTypeEnum.Outbound, childDeviceCode, index, "JZSC01", "002-000-001");
+ //}
+ #endregion
+
+ /// <summary>
+ /// 妫�鏌ヤ换鍔″苟鍒涘缓鏂颁换鍔�
+ /// </summary>
+ private void CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, List<string> roadways = null)
+ {
+ var tasks = _taskRepository.QueryData(x => x.TaskType == (int)taskType && x.TargetAddress == childDeviceCode);
+ if (tasks.Count < index)
+ {
+ //var taskDTO = new WMSTaskDTO()
+ //{
+ // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
+ // Grade = 1,
+ // PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"),
+ // RoadWay = roadWay,
+ // SourceAddress = sourceAddress,
+ // TargetAddress = childDeviceCode,
+ // TaskState = (int)TaskOutStatusEnum.OutNew,
+ // Id = 0,
+ // TaskType = (int)taskType
+ //};
+ #region 璋冪敤WMS鑾峰彇鍑哄簱浠诲姟
+ WMSTaskDTO taskDTO = new WMSTaskDTO();
+ dynamic dynamic = new
+ {
+ position = childDeviceCode,
+ tag = (int)taskType,
+ areaCdoe = roadWay,
+ roadways = roadways
+ };
+ var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", dynamic.ToJsonString()).Result;
+
+ WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+ // 妫�鏌ョ姸鎬佸苟杩斿洖
+ if (!content.Status)
+ return;
+
+ taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+ #endregion
+
+ CreateAndSendTask(taskDTO);
+ }
+ }
+
+ /// <summary>
+ /// 杈撻�佺嚎浜や簰瀹屾垚
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ /// <param name="value">鍊�</param>
+ public void ConveyorLineSendFinish(CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue, bool value)
+ {
+ DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ string[] x = devicePro.DeviceProAddress.Split('.');
+ x[x.Length - 1] = (ProtocalDetailValue + 1).ToString();
+ string DeviceProAddress = string.Join(".", x);
+ conveyorLine.Communicator.Write(DeviceProAddress, value);
+ }
}
-}
+}
\ No newline at end of file
--
Gitblit v1.9.3