From 8bc65cd3363d7148c356fe2eecca3590a9a3b4e0 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期二, 21 十月 2025 09:34:41 +0800
Subject: [PATCH] 修改问题
---
Admin.NET/WCS.Application/OpenApi/OpenApi.cs | 321 ++++++++++++++++++++++++++++++-----------------------
1 files changed, 181 insertions(+), 140 deletions(-)
diff --git a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
index 62c9a4d..69ab9f6 100644
--- a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
+++ b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
@@ -1,22 +1,9 @@
-锘縰sing DocumentFormat.OpenXml.Presentation;
-using Elastic.Clients.Elasticsearch;
+锘縰sing Admin.NET.Core.Service;
using Furion.DatabaseAccessor;
using Furion.Logging;
-using NewLife.Serialization;
-using Newtonsoft.Json;
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Text;
using WCS.Application.Entity;
-using Microsoft.AspNetCore.Mvc;
-using Admin.NET.Core.Service;
-using DocumentFormat.OpenXml.Bibliography;
-using AngleSharp.Common;
-using AngleSharp.Text;
-using Newtonsoft.Json.Linq;
-using SqlSugar;
-using NewLife.Reflection;
+using WCS.Application.Util;
+using static SKIT.FlurlHttpClient.Wechat.Api.Models.ComponentTCBBatchCreateContainerServiceVersionRequest.Types;
namespace WCS.Application;
@@ -42,7 +29,59 @@
_taskService = taskService;
}
- // <summary>
+ /// <summary>
+ /// 娴嬭瘯鍒嗛厤浠诲姟璺緞
+ /// </summary>
+ /// <param name="models">浠诲姟淇℃伅</param>
+ /// <returns>鍙嶉淇℃伅</returns>
+ [AllowAnonymous]
+ public async Task<ResponseAgvDto> AddAssignTasks(AgvTaskSend models)
+ {
+
+ var response = await new HttpService().GenAgvSendTask(models);
+ //var response2 = await new HttpService().GenAgvContinueTask("Tk20250503000001");
+ //var response3 = await new HttpService().GenAgvUnbind("models", "B010101");
+ return response;
+ // 楠岃瘉浠诲姟鏄惁宸插瓨鍦�
+ //var taskInfo = await _db.Queryable<WcsTask>().FirstAsync(w => w.TaskNo == models.TaskNo);
+ //if (taskInfo == null)
+ //{
+ // throw Oops.Bah("浠诲姟:" + models.TaskNo + ";涓嶅瓨鍦�!");
+ //}
+ //var data1 = FourWayCarUtil.GetCarPath("091501", "091601","0");
+ //if (data1 == null) //|| data1.Count == 0
+ //{
+ // throw Oops.Bah("鍒嗛厤璺緞涓嶅瓨鍦�!");
+ //}
+
+ //// 鏍规嵁浠诲姟鐘舵�� 琛ュ厖璧峰缁撴潫鑺傜偣鐘舵��
+ //var data2 = FourWayCarUtil.GetCarPathUp(data1, 0);
+ //var path = "";
+ //var executionPath1 = "";
+ //foreach (var item in data1)
+ //{
+ // //璺緞鑺傜偣
+ // var pathXYZ = item.X.ToString().PadLeft(2, '0') + item.Y.ToString().PadLeft(2, '0') + item.Z.ToString().PadLeft(2, '0') + item.NodeCom.ToString();
+ // path += pathXYZ + ";";
+ // if (item.IsSendPlc)
+ // {
+ // executionPath1 += pathXYZ + ";";
+ // }
+ //}
+ //// 鎻掑叆鍥涘悜杞︿换鍔¤〃
+ //var carTask1 = new WcsCarTasks()
+ //{
+ // TaskNo = taskInfo.TaskNo,
+ // PreId = "",
+ // ExecutionPath = executionPath1,
+ // Path = path,
+ // CarNo = "",
+ // Status = TaskStatusEnum.Wait
+ //};
+ //var i = _db.Insertable(carTask1).ExecuteCommand();
+ //Console.WriteLine(""+i);
+ }
+
/// WCS鎺ュ彈WMS涓嬪彂鐨勪换鍔�(澶�
/// 鏉′换鍔�)
/// <param name="models">浠诲姟淇℃伅</param>
@@ -60,7 +99,8 @@
throw Oops.Bah("浠诲姟宸插瓨鍦�!");
}
var listTask = new List<WcsTask>();
- foreach (var models in modelList)
+ var list = modelList.OrderBy(m => m.Order).ThenBy(m => m.TaskNo).ToList();
+ foreach (var models in list)
{
if (models.TaskType == "0")
{
@@ -73,21 +113,32 @@
//鏂板浠诲姟
var taskAdd = new WcsTask()
{
- TaskNo = models.TaskNo,
+ TaskNo = models.TaskNo,
TaskType = (TaskTypeEnum)Convert.ToInt32(models.TaskType),
Type = models.Type,
Status = TaskStatusEnum.Wait,
Levels = 999,
Origin = "WMS",
+ SkuNo = models.SkuNo,
+ SkuName=models.SkuName,
+ LotNo=models.LotNo,
StartRoadway = models.StartRoadway,
StartLocate = models.StartLocate,
EndLocate = models.EndLocate,
EndRoadway = models.EndRoadway,
PalletNo = models.PalletNo,
+ CreateTime = DateTime.Now
};
- listTask.Add(taskAdd);
+
+ // 鑻ラ潪AGV浠诲姟澧炲姞浠诲姟ID
+ if (models.Type != PLCTypeEnum.AGV)
+ {
+ taskAdd.TaskId = FourWayCarUtil.GetTaskId();
+ }
+
+ await _db.Insertable(taskAdd).ExecuteCommandAsync();
}
- await _db.Insertable(listTask).ExecuteCommandAsync();
+
}
/// <summary>
/// WCS鎺ュ彈WMS涓嬪彂鐨勪换鍔�(鍗曟潯浠诲姟)
@@ -115,16 +166,27 @@
var taskAdd = new WcsTask()
{
TaskNo = models.TaskNo,
- TaskType = TaskTypeEnum.Out,
+ TaskType = (TaskTypeEnum?)int.Parse(models.TaskType),
Status = TaskStatusEnum.Wait,
+ Type = models.Type,
Levels = 999,
Origin = "WMS",
+ SkuNo = models.SkuNo,
+ SkuName = models.SkuName,
+ LotNo = models.LotNo,
StartRoadway = models.StartRoadway,
StartLocate = models.StartLocate,
EndLocate = models.EndLocate,
EndRoadway = models.EndRoadway,
PalletNo = models.PalletNo,
};
+
+ // 鑻ラ潪AGV浠诲姟澧炲姞浠诲姟ID
+ if (models.Type != PLCTypeEnum.AGV)
+ {
+ taskAdd.TaskId = FourWayCarUtil.GetTaskId();
+ }
+
await _db.Insertable(taskAdd).ExecuteCommandAsync();
}
@@ -359,53 +421,29 @@
[UnitOfWork]
public async Task<dynamic> agvCallback(AGVCallBackInput input)
{
+ Log.Information("AGV鍙嶉浠诲姟" + input.ToJson());
AGVCallBackResponse result = new AGVCallBackResponse()
{
ReqCode = input.ReqCode,
Message = "鎴愬姛",
Code = "0"
};
- if (input.TaskCode.Substring(0, 3) != "WCS" && input.TaskCode.Substring(0, 2) != "TK")
+ if (input.robotTaskCode.Substring(0, 3) != "WCS" && input.robotTaskCode.Substring(0, 2) != "TK")
+ {
+ result.Message = "鍙嶉鐨勪换鍔′笉鏄疻CS鐨勪换鍔�";
+ result.Code = "1";
return result;
+ }
PLCUtil modUtil = null;
try
{
- var modTask = await _db.Queryable<WcsTask>().FirstAsync(s => s.TaskNo == input.TaskCode);
+ var modTask = await _db.Queryable<WcsTask>().FirstAsync(s => s.TaskNo == input.robotTaskCode);
if (modTask != null)
{
- switch (input.Method)
+ switch (input.Extra.Values.Method)
{
case "end"://浠诲姟瀹屾垚
{
-
- //璐у搧鎷夊埌瀵嗛泦搴撳叆搴撳彛闇�瑕佸悜杈撻�佺嚎鍐欏叆鍊�
- if (modTask.EndLocate == AGVStaionEnum.A1.ToString())
- {
- var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == "杈撻�佺嚎");
- var modConn = new PLCUtil(modPlc);
- var modDevice = PLCTaskAction.plcDevices.First(s => s.Text == "C鍙�");
- var modStation = PLCTaskAction.plcPositions.First(s => s.Text == "C鍙g敵璇峰叆搴�");
- var plcResult = modConn.SetPlcDBValue(modStation.PosType, modDevice.DbNumber, modStation.PlcPos, "100");
- if (plcResult.IsSucceed)
- {
- WcsTaskMonitor modTaskMonitorPLC = new WcsTaskMonitor()
- {
- TaskNo = modTask.TaskNo,
- PlcId = modDevice.PlcId,
- PlcName = modStation.PlcPos,
- StartLocat = modTask.StartLocate,
- EndLocat = modTask.EndLocate,
- Status = TaskStatusEnum.Doing,
- InteractiveMsg = $"鍚憑modStation.Text}鍐欏叆鎸囦护100锛岀粨鏋渰plcResult.IsSucceed}",
- };
- _db.Insertable(modTaskMonitorPLC).ExecuteCommand();
- HubUtil.PublicTaskMonitor(modTaskMonitorPLC.Adapt<WcsTaskMonitorOutput>());
- }
- else
- {
- Log.Error("C鍙g敵璇峰叆搴撳啓鍏ュ��100澶辫触");
- }
- }
modTask.Status = TaskStatusEnum.Complete;
modTask.FinishDate = DateTime.Now;
await _db.Updateable(modTask).ExecuteCommandAsync();
@@ -429,7 +467,7 @@
var inputs = new TaskRequestWMS();
inputs.TaskNo = modTask.TaskNo;
inputs.PalletNo = modTask.PalletNo;
- inputs.TaskType = "2";
+ inputs.TaskType = ((int)modTask.TaskType).ToString();
inputs.TaskStatus = "2";
var modResponseTask = httpService.RequestTask(inputs).Result;
}
@@ -438,6 +476,17 @@
break;
case "outbin"://璧板嚭鍌ㄤ綅
{
+ WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = modTask.TaskNo,
+ //PlcId = modDevice.PlcId,
+ PlcName = "AGV",
+ StartLocat = modTask.StartLocate,
+ EndLocat = modTask.EndLocate,
+ Status = TaskStatusEnum.Complete,
+ InteractiveMsg = $"AGV灏忚溅鍙嶉浠诲姟鍙栬揣瀹屾垚锛岃蛋鍑哄偍浣�",
+ };
+ await _db.Insertable(modTaskMonitor).ExecuteCommandAsync();
//鍙嶉WMS浠诲姟鍙栬揣瀹屾垚銆乄MS鍒ゆ柇鏄钩搴撳偍浣嶅氨鏇存柊鍌ㄤ綅鐘舵��
if (modTask.Origin == "WMS")
{
@@ -445,74 +494,67 @@
var inputs = new TaskRequestWMS();
inputs.TaskNo = modTask.TaskNo;
inputs.PalletNo = modTask.PalletNo;
- inputs.TaskType = "2";
+ inputs.TaskType = ((int)modTask.TaskType).ToString();
inputs.TaskStatus = "2";
var modResponseTask = httpService.RequestTaskQh(inputs).Result;
}
}
break;
- case "apply"://鏀捐揣鐢宠
+ case "release"://鏀捐揣鐢宠
{
- //todo:鍘荤爜鍨涘伐浣嶅彇璐э紝闇�瑕佸啓PLC淇″彿鍏抽棴鍏夊箷
- if ((modTask.StartLocate == AGVStaionEnum.B1.ToString() || modTask.StartLocate == AGVStaionEnum.B2.ToString())
- && (modTask.EndLocate == AGVStaionEnum.C1.ToString() || modTask.EndLocate == AGVStaionEnum.C2.ToString()))
+ if (modTask.EndLocate != "B040101")//9鍙峰伐浣嶅湴鍧�
{
- var no = modTask.StartLocate.Substring(1, 1);
- var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.RobotPalletizer && s.WareHouseNo == no);
- var modConn = new PLCUtil(modPlc);
- var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Level == DeviceLevelEnum.DB);
- var modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice.Id && s.Text == "鍏抽棴鍏夊箷");
- var res = modConn.SetPlcDBValue(modPos.PosType, modDevice.DbNumber, modPos.PlcPos, "1");
- var modTaskMonitor = new WcsTaskMonitor()
- {
- TaskNo = modTask.TaskNo,
- PlcId = modDevice.PlcId,
- PlcName = modPos.PlcPos,
- Status = TaskStatusEnum.Doing,
- InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆鍏抽棴鍏夊箷1锛岀粨鏋渰res.IsSucceed}",
- };
- _db.Insertable(modTaskMonitor).ExecuteCommand();
- HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
- Task.Run(() =>
- {
- Thread.Sleep(1000);
- modConn.SetPlcDBValue(modPos.PosType, modDevice.DbNumber, modPos.PlcPos, "0");
- var modTaskMonitor = new WcsTaskMonitor()
- {
- TaskNo = modTask.TaskNo,
- PlcId = modDevice.PlcId,
- PlcName = modPos.PlcPos,
- Status = TaskStatusEnum.Doing,
- InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆寮�鍚厜骞�0锛岀粨鏋渰res.IsSucceed}",
- };
- _db.Insertable(modTaskMonitor).ExecuteCommand();
- HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
- });
- modConn.Close();
+ result.Code = "1";
+ result.Message = "鎵句笉鍒拌浠诲姟";
+ return result;
+ }
+ //modTask.Status = TaskStatusEnum.Complete;
+ modTask.IsComple = "1";
+ await _db.Updateable(modTask).ExecuteCommandAsync();
+ WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = modTask.TaskNo,
+ //PlcId = modDevice.PlcId,
+ PlcName = "AGV",
+ StartLocat = modTask.StartLocate,
+ EndLocat = modTask.EndLocate,
+ Status = TaskStatusEnum.Complete,
+ InteractiveMsg = $"AGV灏忚溅鍙嶉浠诲姟鍒拌揪9宸ヤ綅",
+ };
+ await _db.Insertable(modTaskMonitor).ExecuteCommandAsync();
+ HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ if (modTask.Origin == "WMS")
+ {
+ HttpService httpService = new HttpService();
+ var inputs = new TaskRequestWMS();
+ inputs.TaskNo = modTask.TaskNo;
+ inputs.PalletNo = modTask.PalletNo;
+ inputs.TaskType = ((int)modTask.TaskType).ToString();
+ inputs.TaskStatus = "2";
+ var modResponseTask = httpService.RequestTaskQh(inputs).Result;
}
}
break;
- case "start"://浠诲姟寮�濮�
+ case "notifyFullSite":
{
- //寮�濮嬪悜鎷嗘墭鏈烘斁鍏ユ墭鐩樹换鍔�
- if (modTask.EndLocate == AGVStaionEnum.D1.ToString())
+ var palletNo = input.Extra.Values.carrierCode;
+ var count = input.Extra.Values.pileCount;
+ if (string.IsNullOrWhiteSpace(palletNo) || count <= 0)
{
- var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.PalletMachine);
- var modConn = new PLCUtil(modPlc);
- var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.Text == "鎷嗘墭鏈�");
- var res = modConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "1");
- modConn.Close();
+ throw new Exception("鍙傛暟锛氭墭鐩樺彿/鏁伴噺楠岃瘉澶辫触");
}
+ //鍚慦MS鐢宠绌烘墭鍏ュ簱
+ HttpService httpService = new HttpService();
+ var inputs = new NullPallInRequest();
+
+ inputs.PalletNo = palletNo;
+ inputs.PallNum = count;
+ inputs.Locate = "B100101";//鍙犳墭鐩樻満浣嶇疆
+ inputs.HouseNo = "W02";
+ var modResponseTask = httpService.RequestLiKuPallet(inputs);
- var taskMonitor = new WcsTaskMonitor()
- {
- TaskNo = modTask.TaskNo,
- PlcName = input.Method,
- InteractiveMsg = $"AGV灏忚溅鍙嶉浠诲姟寮�濮�"
- };
- await _db.Insertable(taskMonitor).ExecuteCommandAsync();
- HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
}
break;
case "cancel"://浠诲姟鍙栨秷
@@ -561,11 +603,10 @@
modUtil?.Close();
}
-
+ Log.Information("AGV鍙嶉浠诲姟杩斿洖" + result.ToJson());
return result;
}
-
-
+
/// <summary>
/// 鑾峰彇鍘熸潗鏂欎粨鐘舵��
/// </summary>
@@ -625,35 +666,35 @@
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
- [HttpPost]
- [UnitOfWork]
- public async Task ProductStorage(RequestStorage input)
- {
- var intProduct = AGVStorageUtil.ProductCount();
- var intTask = await _db.Queryable<WcsTask>().Where(s => s.TaskType == TaskTypeEnum.Move
- && s.Type == PLCTypeEnum.AGV && s.Status <= TaskStatusEnum.Doing
- && s.StartLocate.StartsWith("Z") && s.EndLocate == AGVStaionEnum.A1.ToString()).CountAsync();
- if (input.Qty > intProduct)
- throw Oops.Bah($"杈撳叆鏁伴噺澶т簬鍙嚭鏁伴噺{intProduct}");
- var listTask = new List<WcsTask>();
- var TaskNo = GetTaskCode("WCS");
- for (int i = 0; i < input.Qty; i++)
- {
- listTask.Add(new WcsTask()
- {
- TaskNo = "WCS" + DateTime.Now.ToString("yyyyMMdd") + (TaskNo++).ToString().PadLeft(4, '0'),
- TaskType = TaskTypeEnum.Move,
- Type = PLCTypeEnum.AGV,
- StartLocate = AGVStaionEnum.Z11.ToString(),
- EndLocate = AGVStaionEnum.A1.ToString(),
- PalletNo = "",
- Status = TaskStatusEnum.Wait,
- Levels = 10,
- Origin = "PDA"
- });
- }
- await _db.Insertable(listTask).ExecuteCommandAsync();
- }
+ //[HttpPost]
+ //[UnitOfWork]
+ //public async Task ProductStorage(RequestStorage input)
+ //{
+ // var intProduct = AGVStorageUtil.ProductCount();
+ // var intTask = await _db.Queryable<WcsTask>().Where(s => s.TaskType == TaskTypeEnum.Move
+ // && s.Type == PLCTypeEnum.AGV && s.Status <= TaskStatusEnum.Doing
+ // && s.StartLocate.StartsWith("Z") && s.EndLocate == AGVStaionEnum.A1.ToString()).CountAsync();
+ // if (input.Qty > intProduct)
+ // throw Oops.Bah($"杈撳叆鏁伴噺澶т簬鍙嚭鏁伴噺{intProduct}");
+ // var listTask = new List<WcsTask>();
+ // var TaskNo = GetTaskCode("WCS");
+ // for (int i = 0; i < input.Qty; i++)
+ // {
+ // listTask.Add(new WcsTask()
+ // {
+ // TaskNo = "WCS" + DateTime.Now.ToString("yyyyMMdd") + (TaskNo++).ToString().PadLeft(4, '0'),
+ // TaskType = TaskTypeEnum.Move,
+ // Type = PLCTypeEnum.AGV,
+ // StartLocate = AGVStaionEnum.Z11.ToString(),
+ // EndLocate = AGVStaionEnum.A1.ToString(),
+ // PalletNo = "",
+ // Status = TaskStatusEnum.Wait,
+ // Levels = 10,
+ // Origin = "PDA"
+ // });
+ // }
+ // await _db.Insertable(listTask).ExecuteCommandAsync();
+ //}
/// <summary>
/// 鑷姩鐢熸垚浠诲姟鍙�
/// </summary>
--
Gitblit v1.8.0