From 733c975cd8647f6d006736f1863bad731e32e6fb Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期日, 26 十月 2025 17:15:52 +0800
Subject: [PATCH] 上传最新代码,ERP接口,MES接口优化,WMS业务优化等
---
项目代码/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs | 558 ++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 422 insertions(+), 136 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
index d8d1275..ecd627f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
@@ -1,17 +1,27 @@
锘縰sing Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
+using System.Text;
using WIDESEA_DTO.Agv;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.LogHelper;
+using WIDESEAWCS_DTO.Agv;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_Tasks;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using WIDESEAWCS_Tasks.DBNames;
+using WIDESEAWCS_Tasks.StackPlateJob;
+using static Dm.net.buffer.ByteArrayBuffer;
namespace WIDESEAWCS_Server.Controllers
{
@@ -22,12 +32,14 @@
private readonly IStationMangerRepository _stationMangerRepository;
private readonly ITaskService _taskService;
private readonly ITaskRepository _taskRepository;
+ private readonly IRouterRepository _routerRepository;
- public AGVController(IStationMangerRepository stationMangerRepository, ITaskService taskService, ITaskRepository taskRepository)
+ public AGVController(IStationMangerRepository stationMangerRepository, ITaskService taskService, ITaskRepository taskRepository,IRouterRepository routerRepository)
{
_stationMangerRepository = stationMangerRepository;
_taskService = taskService;
_taskRepository = taskRepository;
+ _routerRepository = routerRepository;
}
@@ -38,42 +50,166 @@
/// <param name="secureApplyModel"></param>
/// <returns></returns>
[HttpPost, HttpGet, Route("AgvSecureApply"), AllowAnonymous]
- public AgvResponseContent AgvSecureApply([FromBody] AgvSecureApplyDTO secureApplyModel)
+ public AgvResponse AgvSecureApply([FromBody] AgvSecureApplyDTO secureApplyModel)
{
- AgvResponseContent agvResponseContent = new AgvResponseContent();
- agvResponseContent.ReqCode = secureApplyModel.ReqCode;
+ AgvResponse agvResponse = new AgvResponse();
try
{
- var task = _taskRepository.QueryFirst(x => secureApplyModel.TaskCode == x.AgvTaskNum);
+ var task = _taskRepository.QueryFirst(x => secureApplyModel.ReceiveTaskID.ObjToInt() == x.TaskNum);
if (task == null) throw new Exception("鏈壘鍒颁换鍔�");
- if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt())
+ if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
- var content = TakeRequest(task.CurrentAddress);
- //if (!content.Status)
- //{
- // throw new Exception(content.Message);
- //}
+ if (task.TaskState==TaskStatusEnum.AGV_Executing.ObjToInt())//鍑哄簱鍙栬揣璇锋眰
+ {
+ var content = TakeRequest(secureApplyModel.WbCode);
+ if (!content.Status)
+ {
+ throw new Exception(content.Message);
+ }
+ }
+ else//鍑哄簱鏀捐揣璇锋眰
+ {
+ var content = PutRequest(task.NextAddress, task.PalletType);
+ if (!content.Status)
+ {
+ throw new Exception(content.Message);
+ }
+ }
}
else
{
- var content = PutRequest(task.NextAddress, task.PalletType);
- //if (!content.Status)
- //{
- // throw new Exception(content.Message);
- //}
+ if (task.TaskState == TaskStatusEnum.AGV_Executing.ObjToInt())//鍏ュ簱鍙栬揣璇锋眰
+ {
+ var content = TakeRequest(secureApplyModel.WbCode);
+ if (!content.Status)
+ {
+ throw new Exception(content.Message);
+ }
+ }
+ else//鍏ュ簱鏀捐揣璇锋眰
+ {
+ var content = PutRequest(task.NextAddress, task.TaskNum);
+ if (!content.Status)
+ {
+ throw new Exception(content.Message);
+ }
+ }
}
- task.TaskState = TaskStatusEnum.AGV_WaitToExecute.ObjToInt();
- var up = _taskRepository.UpdateData(task);
- agvResponseContent.Code = up ? "0" : "1";
- agvResponseContent.Message = up ? "鎴愬姛" : "澶辫触";
+ agvResponse.OK("鎴愬姛","0");
}
catch (Exception ex)
{
- agvResponseContent.Code = "1";
- agvResponseContent.Message = ex.Message;
+ agvResponse.Error(ex.Message);
}
- return agvResponseContent;
- //return _taskService.AgvSecureApply(secureApplyModel);
+ return agvResponse;
+ }
+ /// <summary>
+ /// 鎻愬崌鏈虹敵璇� AGV-WCS
+ /// </summary>
+ /// <param name="secureApplyModel"></param>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("AgvHoisterApply"), AllowAnonymous]
+ public AgvResponse AgvHoisterApply([FromBody] AgvHoisterApplyDTO agvHoisterApplyDTO)
+ {
+ AgvResponse agvResponse = new AgvResponse();
+ try
+ {
+ IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == agvHoisterApplyDTO.HoisterCode);
+ if (device == null)
+ {
+ return agvResponse.Error($"鏈壘鍒板搴旇澶噞agvHoisterApplyDTO.HoisterCode}");
+ }
+ OtherDevice otherDevice = (OtherDevice)device;
+ //鑾峰彇璁惧鍗忚
+ DeviceProDTO? deviceProRead = otherDevice.DeviceProDTOs.Where(x => x.DeviceChildCode == device.DeviceCode && x.DeviceProParamType == nameof(R_HoisterDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ DeviceProDTO? deviceProWrite = otherDevice.DeviceProDTOs.Where(x => x.DeviceChildCode == device.DeviceCode && x.DeviceProParamType == nameof(W_HoisterDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ if (deviceProRead == null || deviceProWrite == null)
+ {
+ return agvResponse.Error($"鏈壘鍒拌澶噞device.DeviceCode}鍗忚");
+ }
+ //鑾峰彇璇诲彇鍜屽啓鍏�
+ R_HoisterInfo r_HoisterInfo = otherDevice.Communicator.ReadCustomer<R_HoisterInfo>(deviceProRead.DeviceProAddress);
+ W_HoisterInfo w_HoisterInfo = otherDevice.Communicator.ReadCustomer<W_HoisterInfo>(deviceProWrite.DeviceProAddress);
+ if (r_HoisterInfo == null || w_HoisterInfo == null)
+ {
+ return agvResponse.Error($"鏈鍙栧埌璁惧{device.DeviceCode}淇″彿");
+ }
+ if (r_HoisterInfo.R_HoisterSysStatus!=3)
+ {
+ return agvResponse.Error($"璁惧鐘舵�佷笉涓鸿嚜鍔�");
+ }
+ QuartzLogger.WriteLogToFile("Info_" + device.DeviceCode, $"r_HoisterInfo:{r_HoisterInfo.Serialize()}{Environment.NewLine}w_HoisterInfo:{w_HoisterInfo.Serialize()}{Environment.NewLine}");
+ bool IsSuccess = false;
+ switch (agvHoisterApplyDTO.Request)
+ {
+ case "1":
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀湪褰撳墠灞� 濡傛灉褰撳墠灞傦紝鍏抽棬鐘舵�侊紝鏃犺揣寰呭懡鐩存帴鍐欏叆寮�闂ㄤ俊鍙�
+ if (r_HoisterInfo.R_HoisterCurrent == agvHoisterApplyDTO.CurrentLayer && r_HoisterInfo.R_HoisterLoadStatus == 2 && r_HoisterInfo.R_HoisterDoorStatus == 2)
+ {
+ otherDevice.SetValue(W_HoisterDB.W_HoisterDoorStatus, 1);
+ IsSuccess = true;
+ }
+ else if (r_HoisterInfo.R_HoisterCurrent == agvHoisterApplyDTO.CurrentLayer && r_HoisterInfo.R_HoisterLoadStatus == 2 && r_HoisterInfo.R_HoisterDoorStatus == 1)
+ {
+ IsSuccess = true;
+ }
+ else if (r_HoisterInfo.R_HoisterCurrent != agvHoisterApplyDTO.CurrentLayer && r_HoisterInfo.R_HoisterLoadStatus == 2 && r_HoisterInfo.R_HoisterDoorStatus == 1)
+ {
+ otherDevice.SetValue(W_HoisterDB.W_HoisterDoorStatus, 2);
+ }
+ //鍒ゆ柇鎻愬崌鏈轰笉鍦ㄥ綋鍓嶅眰 濡傛灉涓嶅湪褰撳墠灞傦紝鍏抽棬鐘舵�侊紝鏃犺揣寰呭懡鐩存帴鍐欏叆绉诲姩寮�闂ㄤ俊鍙�(褰撳墠)
+ else if (r_HoisterInfo.R_HoisterCurrent != agvHoisterApplyDTO.CurrentLayer && r_HoisterInfo.R_HoisterLoadStatus == 2 && r_HoisterInfo.R_HoisterDoorStatus == 2)
+ {
+ otherDevice.SetValue(W_HoisterDB.W_HoisterTarget, agvHoisterApplyDTO.CurrentLayer);
+ otherDevice.SetValue(W_HoisterDB.W_HoisterTask, 99);
+ }
+ return IsSuccess ? agvResponse.OK($"璇锋眰{agvHoisterApplyDTO.Request}鎴愬姛,浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}","1"): agvResponse.Error($"璇锋眰{agvHoisterApplyDTO.Request}澶辫触,浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}");
+ case "2":
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀湪褰撳墠灞� 濡傛灉褰撳墠灞傦紝寮�闂ㄧ姸鎬侊紝鏃犺揣寰呭懡 鏀捐
+ if (r_HoisterInfo.R_HoisterCurrent == agvHoisterApplyDTO.CurrentLayer && r_HoisterInfo.R_HoisterLoadStatus == 2 && r_HoisterInfo.R_HoisterDoorStatus == 1)
+ {
+ IsSuccess = true;
+ }
+ return IsSuccess ? agvResponse.OK($"璇锋眰{agvHoisterApplyDTO.Request}鎴愬姛,浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}", "2") : agvResponse.Error($"璇锋眰{agvHoisterApplyDTO.Request}澶辫触,浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}");
+ case "3":
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀湪褰撳墠灞� 濡傛灉褰撳墠灞傦紝寮�闂ㄧ姸鎬侊紝鏈夎揣寰呭懡鍐欏叆鍏抽棬淇″彿
+ if (r_HoisterInfo.R_HoisterCurrent == agvHoisterApplyDTO.CurrentLayer && r_HoisterInfo.R_HoisterLoadStatus == 1 && r_HoisterInfo.R_HoisterDoorStatus == 1 && w_HoisterInfo.W_HoisterDoorStatus!=2)
+ {
+ otherDevice.SetValue(W_HoisterDB.W_HoisterDoorStatus, 2);
+ }
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀湪褰撳墠灞� 濡傛灉褰撳墠灞傦紝鍏抽棬鐘舵�侊紝鏈夎揣寰呭懡鍐欏叆绉诲姩寮�闂ㄤ俊鍙�(鐩殑)
+ if (r_HoisterInfo.R_HoisterCurrent == agvHoisterApplyDTO.CurrentLayer && r_HoisterInfo.R_HoisterLoadStatus == 1 && r_HoisterInfo.R_HoisterDoorStatus == 2)
+ {
+ otherDevice.SetValue(W_HoisterDB.W_HoisterTarget, agvHoisterApplyDTO.TargetLayer);
+ otherDevice.SetValue(W_HoisterDB.W_HoisterDoorStatus, 1);
+ otherDevice.SetValue(W_HoisterDB.W_HoisterTask, 99);
+ IsSuccess = true;
+ }
+ return IsSuccess ? agvResponse.OK($"璇锋眰{agvHoisterApplyDTO.Request}鎴愬姛,浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}", "3") : agvResponse.Error($"璇锋眰{agvHoisterApplyDTO.Request}澶辫触,浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}");
+ case "4":
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀湪鐩殑灞� 濡傛灉鐩殑灞傦紝寮�闂ㄧ姸鎬侊紝鏈夎揣寰呭懡 鏀捐
+ if (r_HoisterInfo.R_HoisterCurrent == agvHoisterApplyDTO.TargetLayer && r_HoisterInfo.R_HoisterLoadStatus == 1 && r_HoisterInfo.R_HoisterDoorStatus == 1)
+ {
+ IsSuccess = true;
+ }
+ return IsSuccess ? agvResponse.OK($"璇锋眰{agvHoisterApplyDTO.Request}鎴愬姛,浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}", "4") : agvResponse.Error($"璇锋眰{agvHoisterApplyDTO.Request}澶辫触,浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}");
+ case "5":
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀湪鐩殑灞� 濡傛灉鐩殑灞傦紝寮�闂ㄧ姸鎬侊紝鏃犺揣寰呭懡鍐欏叆鍏抽棬淇″彿
+ if (r_HoisterInfo.R_HoisterCurrent == agvHoisterApplyDTO.TargetLayer && r_HoisterInfo.R_HoisterLoadStatus == 2 && r_HoisterInfo.R_HoisterDoorStatus == 1)
+ {
+ otherDevice.SetValue(W_HoisterDB.W_HoisterDoorStatus, 2);
+ IsSuccess = true;
+ }
+ return IsSuccess ? agvResponse.OK($"璇锋眰{agvHoisterApplyDTO.Request}鎴愬姛,浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}", "5") : agvResponse.Error($"璇锋眰{agvHoisterApplyDTO.Request}澶辫触,浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}");
+ default:
+ return agvResponse.Error($"鏈壘鍒板搴旇姹�,Request:{agvHoisterApplyDTO.Request}");
+ }
+ }
+ catch (Exception ex)
+ {
+ agvResponse.Error($"璇锋眰{agvHoisterApplyDTO.Request}澶辫触,閿欒{ex.Message},浠诲姟{agvHoisterApplyDTO.ReceiveTaskID}");
+ }
+ return agvResponse;
}
/// <summary>
/// AGV浠诲姟鏇存柊/瀹屾垚
@@ -81,87 +217,91 @@
/// <param name="agvUpdateModel"></param>
/// <returns></returns>
[HttpPost, HttpGet, Route("AgvCallback"), AllowAnonymous]
- public AgvResponseContent AgvUpdateTask([FromBody] AgvUpdateDTO agvUpdateModel)
+ public AgvResponse AgvCallback([FromBody] AgvUpdateDTO agvUpdateModel)
{
- AgvResponseContent agvResponseContent = new AgvResponseContent();
+ AgvResponse agvResponse = new AgvResponse();
try
{
- if (agvUpdateModel == null) throw new Exception("鏈幏鍙栧埌璇锋眰鍙傛暟");
- agvResponseContent.ReqCode = agvUpdateModel.ReqCode;
- var task = _taskRepository.QueryFirst(x => agvUpdateModel.TaskCode == x.AgvTaskNum);
- if (task == null) throw new Exception($"鏈壘鍒颁换鍔�,浠诲姟鍙枫�恵agvUpdateModel.TaskCode}銆�");
- switch (agvUpdateModel.Method)
+ var task = _taskRepository.QueryFirst(x => agvUpdateModel.ReceiveTaskID == x.TaskNum.ToString());
+ if (task == null) throw new Exception($"鏈壘鍒颁换鍔�,浠诲姟鍙枫�恵agvUpdateModel.ReceiveTaskID}銆�");
+ switch (agvUpdateModel.GoodsState)
{
- case "start":
- break;
- case "outbin"://鍑哄簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鍙栬揣瀹屾垚
- if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt())
+ case "1"://鍑哄簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鍙栬揣瀹屾垚
+
+ //鏇存柊浠诲姟鐘舵��
+ _taskService.UpdateTask(task, TaskStatusEnum.AGV_TakeFinish);
+ if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
var content = TakeFinish(task.CurrentAddress);
- if (!content.Status) throw new Exception(content.Message);
- task.TaskState = TaskStatusEnum.AGV_Finish.ObjToInt();
- var up = _taskRepository.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
- _taskService.TaskCompleted(task.TaskNum);
- agvResponseContent.Code = up ? "0" : "1";
- agvResponseContent.Message = up ? "鎴愬姛" : "澶辫触";
- return agvResponseContent;
- }
- break;
- case "getSafetySignal"://瀹夊叏淇″彿鐢宠
- {
- if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt())
+ if (!content.Status)
{
- var content = TakeRequest(task.CurrentAddress);
- //if (!content.Status) throw new Exception(content.Message);
- }
- else
- {
- var content = PutRequest(task.NextAddress, task.PalletType);
- //if (!content.Status) throw new Exception(content.Message);
- }
- task.TaskState = TaskStatusEnum.AGV_WaitToExecute.ObjToInt();
- var up = _taskRepository.UpdateData(task);
- agvResponseContent.Code = up ? "0" : "1";
- agvResponseContent.Message = up ? "鎴愬姛" : "澶辫触";
- return agvResponseContent;
+ throw new Exception(content.Message);
+ };
}
- case "end"://鍏ュ簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鏀捐揣瀹屾垚
- if (task.TaskType != TaskTypeEnum.Outbound.ObjToInt())
+ else
{
- var content = PutFinish(task.NextAddress);
- if (!content.Status) throw new Exception(content.Message);
- Dt_StationManger dt_Station = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == task.NextAddress);
+ if (task.TaskType == TaskTypeEnum.PrintYLInbound.ObjToInt() || task.TaskType == TaskTypeEnum.PrintYLBackInbound.ObjToInt())
+ {
+ var content = TakeFinish(task.CurrentAddress);
+ if (!content.Status)
+ {
+ throw new Exception(content.Message);
+ };
+ }
+ }
+ return agvResponse.OK("鎴愬姛", "0");
+ case "2"://鍏ュ簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鏀捐揣瀹屾垚
+ if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
+ {
+ Dt_StationManger dt_Station = _stationMangerRepository.QueryFirst(x => x.StationCode == task.NextAddress);
if (dt_Station == null)
{
throw new Exception($"{task.NextAddress}AGV绔欏彴鏈畾涔�");
}
- task.CurrentAddress = dt_Station.StationCode;
- task.NextAddress = "";
- task.TaskState = TaskStatusEnum.AGV_Finish.ObjToInt();
- task.DeviceCode = "SC01_CSJ";
- var up = _taskRepository.UpdateData(task);
- agvResponseContent.Code = up ? "0" : "1";
- agvResponseContent.Message = up ? "鎴愬姛" : "澶辫触";
- return agvResponseContent;
+ if (task.TaskType == TaskTypeEnum.PrintYLInbound.ObjToInt() || task.TaskType == TaskTypeEnum.PrintYLBackInbound.ObjToInt())
+ {
+ List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.NextAddress == x.StartPosi);
+ Dt_Router router = routers.FirstOrDefault();
+ if (router == null)
+ {
+ throw new Exception($"浠诲姟鍙�:{task.TaskNum}鏈壘鍒拌矾鐢遍厤缃俊鎭�");
+ }
+ string oldAddress = task.NextAddress;
+ //鏇存柊浠诲姟鐘舵��
+ task.CurrentAddress = router.NextPosi;
+ task.NextAddress = "";
+ task.DeviceCode = router.ChildPosiDeviceCode;
+ _taskService.UpdateTask(task, TaskStatusEnum.AGV_Finish);
+ PutFinish(oldAddress, task.TaskNum);
+ }
+ else
+ {
+ task.CurrentAddress = dt_Station.StationCode;
+ task.NextAddress = "";
+ task.TaskState = TaskStatusEnum.AGV_Finish.ObjToInt();
+ task.DeviceCode = dt_Station.StationDeviceCode;
+ _taskRepository.UpdateData(task);
+ }
+ return agvResponse.OK("鎴愬姛","0");
}
- break;
- case "cancel":
- task.TaskState = TaskStatusEnum.Cancel.ObjToInt();
- _taskRepository.UpdateData(task);
- break;
+ else
+ {
+ _taskService.TaskCompleted(task.TaskNum);
+ if (task.TaskType==TaskTypeEnum.PrintYLOutbound.ObjToInt() || task.TaskType == TaskTypeEnum.OutCarton.ObjToInt())
+ {
+ PutFinish(task.NextAddress);
+ }
+ return agvResponse.OK("鎴愬姛", "0");
+ }
default:
- throw new Exception($"鏈畾涔夋柟娉曞悕銆恵agvUpdateModel.Method}銆�");
+ throw new Exception($"鏈畾涔夋柟娉曞悕銆恵agvUpdateModel.TaskState}銆�");
}
- agvResponseContent.Code = "0";
- agvResponseContent.Message = "鎴愬姛";
}
catch (Exception ex)
{
- agvResponseContent.Code = "1";
- agvResponseContent.Message = ex.Message;
+ agvResponse.Error(ex.Message);
}
- return agvResponseContent;
- //return _taskService.AgvUpdateTask(agvUpdateModel);
+ return agvResponse;
}
/// <summary>
@@ -171,47 +311,100 @@
/// <param name="palletType"></param>
/// <returns></returns>
[HttpPost, HttpGet, Route("PutRequest"), AllowAnonymous]
- public WebResponseContent PutRequest(string code, int palletType)
+ public WebResponseContent PutRequest(string code, int taskNum)
{
+ WebResponseContent content = new WebResponseContent();
try
{
- Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
+ Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == code);
if (stationManger == null)
{
- return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
+ return content.Error($"鏈壘鍒扮珯鍙伴厤缃�");
}
IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
if (device == null)
{
- return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶�");
+ return content.Error($"鏈壘鍒板搴旇澶�");
}
-
- OtherDevice otherDevice = (OtherDevice)device;
-
- bool canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode);
- if (canPut)
+ if (device.DeviceCode.Contains("Plate"))
{
- otherDevice.SetValue(GroundStationDBName.W_PutRequest, true, stationManger.StationCode);
- return WebResponseContent.Instance.OK();
- }
- else
- {
- otherDevice.SetValue(GroundStationDBName.W_PutRequest, true, stationManger.StationCode);
- Thread.Sleep(1000);
- canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode);
- if (canPut)
+ CommonConveyorLine commonConveyorLine = (CommonConveyorLine)device;
+ StackPlateTaskCommandCommand command = commonConveyorLine.ReadCustomer<StackPlateTaskCommandCommand>(device.DeviceCode);
+
+ if (command != null && command.State == 2 && command.InteractiveSignal == 1)
{
- return WebResponseContent.Instance.OK();
+ return content.OK("鍏佽鏀炬枡");
}
else
{
- return WebResponseContent.Instance.Error($"鏀捐揣鐢宠涓�");
+ return content.Error("绂佹鏀炬枡");
}
}
+ else
+ {
+
+ OtherDevice otherDevice = (OtherDevice)device;
+
+ if (device.DeviceCode.Contains("CP"))//鎴愬搧杈撻�佺嚎
+ {
+ short Command = otherDevice.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode);
+ if (Command == 3)
+ {
+ content.OK("鍏佽鏀炬枡");
+ }
+ else
+ {
+ return content.Error("绂佹鏀炬枡");
+ }
+ }
+ else if (device.DeviceCode.Contains("Coveryor"))//鎺ラ┏鍙�
+ {
+ bool RequestPut = otherDevice.GetValue<CoveryorDB, bool>(CoveryorDB.C_RequestPut, stationManger.StationDeviceCode);
+ if (!RequestPut)
+ {
+ otherDevice.SetValue(CoveryorDB.C_InTaskNum, taskNum, stationManger.StationDeviceCode);
+ otherDevice.SetValue(CoveryorDB.C_RequestPut, true, stationManger.StationDeviceCode);
+ Thread.Sleep(1000);
+ }
+ bool AllowFinish = otherDevice.GetValue<CoveryorDB, bool>(CoveryorDB.C_AllowFinish, stationManger.StationDeviceCode);
+ if (AllowFinish)
+ {
+ content.OK("鍏佽鏀炬枡");
+ }
+ else
+ {
+ return content.Error("绂佹鏀炬枡");
+ }
+ }
+ else if (device.DeviceCode.Contains("Retract"))//浼哥缉璐у弶
+ {
+ bool RequestPut = otherDevice.GetValue<RetractDB, bool>(RetractDB.Ret_RequestPut, stationManger.StationDeviceCode);
+ if (!RequestPut)
+ {
+ otherDevice.SetValue(RetractDB.Ret_TargetAddress, Convert.ToInt16(stationManger.StationCode), stationManger.StationDeviceCode);
+ otherDevice.SetValue(RetractDB.Ret_RequestPut, true, stationManger.StationDeviceCode);
+ Thread.Sleep(1000);
+ }
+ bool AllowFinish = otherDevice.GetValue<RetractDB, bool>(RetractDB.Ret_AllowFinish, stationManger.StationDeviceCode);
+ if (AllowFinish)
+ {
+ content.OK("鍏佽鏀炬枡");
+ }
+ else
+ {
+ return content.Error("绂佹鏀炬枡");
+ }
+ }
+ else if (device.DeviceCode.Contains("TrussCarton"))//妗佹灦
+ {
+ content.OK("鍏佽鏀炬枡");
+ }
+ }
+ return content;
}
catch (Exception ex)
{
- return WebResponseContent.Instance.Error(ex.Message);
+ return content.Error(ex.Message);
}
}
@@ -222,11 +415,11 @@
/// <param name="code"></param>
/// <returns></returns>
[HttpPost, HttpGet, Route("PutFinish"), AllowAnonymous]
- public WebResponseContent PutFinish(string code)
+ public WebResponseContent PutFinish(string code,int taskNum=0)
{
try
{
- Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
+ Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == code);
if (stationManger == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
@@ -236,14 +429,56 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶�");
}
-
- OtherDevice otherDevice = (OtherDevice)device;
- otherDevice.SetValue(GroundStationDBName.W_PutFinish, true, stationManger.StationCode);
+ if (device.DeviceCode.Contains("Plate"))
+ {
+ CommonConveyorLine commonConveyorLine = (CommonConveyorLine)device;
+ commonConveyorLine.SetValue(StackPlateDBName.WriteInteractiveSignal, Convert.ToInt16(1), device.DeviceCode);
+ return WebResponseContent.Instance.OK();
+ }
+ else
+ {
+ OtherDevice otherDevice = (OtherDevice)device;
+ if (device.DeviceCode.Contains("Coveryor"))//鎺ラ┏鍙�
+ {
+ otherDevice.SetValue(CoveryorDB.C_PutFinish, true, stationManger.StationDeviceCode);
+ }
+ else if (device.DeviceCode.Contains("Retract"))//浼哥缉璐у弶
+ {
+ otherDevice.SetValue(RetractDB.Ret_PutFinish, true, stationManger.StationDeviceCode);
+ }
+ else if (device.DeviceCode.Contains("TrussCarton"))//绾哥妗佹灦
+ {
+ otherDevice.SetValue(GetCartonPut(stationManger.StackerCraneStationCode), true, stationManger.StationDeviceCode);
+ }
+ }
return WebResponseContent.Instance.OK();
}
catch (Exception ex)
{
return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+ /// <summary>
+ /// 鑾峰彇妗佹灦鏀炬枡淇″彿
+ /// </summary>
+ public W_TrussCartonDB GetCartonPut(string StationCode)
+ {
+ switch (StationCode)
+ {
+ case "1":
+ return W_TrussCartonDB.W_CartonPut1;
+ case "2":
+ return W_TrussCartonDB.W_CartonPut2;
+ case "3":
+ return W_TrussCartonDB.W_CartonPut3;
+ case "4":
+ return W_TrussCartonDB.W_CartonPut4;
+ case "5":
+ return W_TrussCartonDB.W_CartonPut5;
+ case "6":
+ return W_TrussCartonDB.W_CartonPut6;
+ default:
+ throw new Exception("鏈畾涔夊伐浣�");
}
}
@@ -256,49 +491,82 @@
[HttpPost, HttpGet, Route("TakeRequest"), AllowAnonymous]
public WebResponseContent TakeRequest(string code)
{
+ WebResponseContent content = new WebResponseContent();
try
{
Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
if (stationManger == null)
{
- return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
+ return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃畕code}");
}
IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
if (device == null)
{
- return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶�");
+ return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶噞stationManger.StationDeviceCode}");
}
-
- OtherDevice otherDevice = (OtherDevice)device;
-
- bool canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanTake, stationManger.StationCode);
- if (canPut)
+ if (device.DeviceCode.Contains("Plate"))
{
- otherDevice.SetValue(GroundStationDBName.W_TakeRequest, true, stationManger.StationCode);
- return WebResponseContent.Instance.OK();
- }
- else
- {
- otherDevice.SetValue(GroundStationDBName.W_TakeRequest, true, stationManger.StationCode);
- Thread.Sleep(1000);
- canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanTake, stationManger.StationCode);
- if (canPut)
+ CommonConveyorLine commonConveyorLine = (CommonConveyorLine)device;
+ StackPlateTaskCommandCommand command = commonConveyorLine.ReadCustomer<StackPlateTaskCommandCommand>(device.DeviceCode);
+
+ if (command != null&&command.State == 2 && command.InteractiveSignal == 2)
{
- return WebResponseContent.Instance.OK();
+ return content.OK("鍏佽鍙栨枡");
}
else
{
- return WebResponseContent.Instance.Error($"鍙栬揣鐢宠涓�");
+ return content.Error("绂佹鍙栨枡");
}
}
+ else
+ {
+ OtherDevice otherDevice = (OtherDevice)device;
+
+ if (otherDevice.DeviceCode.Contains("CP"))//鎴愬搧杈撻�佺嚎
+ {
+ short Command = otherDevice.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode);
+ if (Command == 2)
+ {
+ content.OK("鍏佽鍙栨枡");
+ }
+ else
+ {
+ return content.Error("绂佹鍙栨枡");
+ }
+ }
+ else if (device.DeviceCode.Contains("Coveryor"))//鎺ラ┏鍙�
+ {
+ bool AllowTake = otherDevice.GetValue<CoveryorDB, bool>(CoveryorDB.C_AllowTake, stationManger.StationDeviceCode);
+ if (AllowTake)
+ {
+ content.OK("鍏佽鍙栨枡");
+ }
+ else
+ {
+ return content.Error("绂佹鍙栨枡");
+ }
+ }
+ else if (device.DeviceCode.Contains("Retract"))//浼哥缉璐у弶
+ {
+ bool AllowTake = otherDevice.GetValue<RetractDB, bool>(RetractDB.Ret_AllowTake, stationManger.StationDeviceCode);
+ if (AllowTake)
+ {
+ content.OK("鍏佽鍙栨枡");
+ }
+ else
+ {
+ return content.Error("绂佹鍙栨枡");
+ }
+ }
+ }
+ return content;
}
catch (Exception ex)
{
- return WebResponseContent.Instance.Error(ex.Message);
+ return content.Error(ex.Message);
}
}
- //[HttpPost, HttpGet, Route("TakeFinish"), AllowAnonymous]
/// <summary>
/// 鍙栬揣瀹屾垚
/// </summary>
@@ -309,7 +577,7 @@
{
try
{
- Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
+ Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == code);
if (stationManger == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
@@ -319,11 +587,29 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶�");
}
+ if (device.DeviceCode.Contains("Plate"))
+ {
+ CommonConveyorLine commonConveyorLine = (CommonConveyorLine)device;
+ commonConveyorLine.SetValue(StackPlateDBName.WriteInteractiveSignal, Convert.ToInt16(2), device.DeviceCode);
+ return WebResponseContent.Instance.OK();
+ }
+ else
+ {
+ OtherDevice otherDevice = (OtherDevice)device;
+ if (device.DeviceCode.Contains("CP"))
+ {
+ otherDevice.SetValue(W_ConveyorLineCPDB.W_Command, 2, stationManger.StationCode);
+ }
+ else if (device.DeviceCode.Contains("Coveryor"))
+ {
+ otherDevice.SetValue(CoveryorDB.C_TakeFinish, true, stationManger.StationDeviceCode);
+ }
+ else if (device.DeviceCode.Contains("Retract"))//浼哥缉璐у弶
+ {
+ otherDevice.SetValue(RetractDB.Ret_TakeFinish, true, stationManger.StationDeviceCode);
+ }
+ }
- OtherDevice otherDevice = (OtherDevice)device;
- otherDevice.SetValue(GroundStationDBName.W_TakeFinish, true, stationManger.StationCode);
- Thread.Sleep(1000);
- otherDevice.SetValue(GroundStationDBName.W_TakeFinish, false, stationManger.StationCode);
return WebResponseContent.Instance.OK();
}
catch (Exception ex)
--
Gitblit v1.9.3