From b7a89c248b9dcbbe99d4d7a84f4677c73e46dd93 Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期二, 29 四月 2025 15:14:33 +0800
Subject: [PATCH] 修改测试问题
---
Admin.NET/WCS.Application/PLC/PLCService.cs | 284 ++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 200 insertions(+), 84 deletions(-)
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 670f1e5..bc201db 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -6,6 +6,7 @@
using Furion.Logging;
using IoTClient;
using NewLife.Reflection;
+using SixLabors.ImageSharp.ColorSpaces;
using WCS.Application.Entity;
using WCS.Application.Util;
@@ -159,8 +160,8 @@
var (resultTaskStatus, valueTaskStatus) = plcConn.GetDBValue(modPosTaskStatus.PosType, modPosTaskStatus.PlcPos);
//鍒ゆ柇璇诲彇浠诲姟鐘舵�佹槸鍚︽垚鍔� 骞朵笖浠诲姟鐘舵�佹槸1 0:鏃犱换鍔�,1:浠诲姟瀹屾垚,2:浠诲姟鍙栨秷,3:浠诲姟鏆傚仠锛�4锛氫换鍔″紓甯� 5锛氫换鍔℃墽琛屼腑
- WcsCarTasks carTask2 = null;//null 鏂颁换鍔� not null 璺緞2浠诲姟
-
+ WcsCarTasks carTaskNext = null;//null 鏂颁换鍔� not null 褰撳墠灏忚溅&&褰撳墠浠诲姟 涓嬩竴鑺備换鍔�
+
if (resultTaskStatus.IsSucceed && valueTaskStatus == 1)
{
var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
@@ -169,104 +170,210 @@
int valueTaskStr = Convert.ToInt32(valueTask);
//鑾峰彇浠诲姟淇℃伅 鏍规嵁 浠诲姟鍙枫�佸皬杞︾紪鍙�
var carTask = _db.Queryable<WcsCarTasks>().First(m=>m.IsDelete == false && m.Status == TaskStatusEnum.Doing && m.CarTaskNo == valueTaskStr && m.CarNo == modDevice.PlcIdIP);
- if (carTask == null)
+ if (carTask != null)
{
- var modRests = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅");
- plcConn.SetDBValue(modRests.PosType, modRests.PlcPos, "1");//娌℃湁鎵惧埌浠诲姟 澶嶄綅
- return;
- }
-
- var modFinshTask = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.TaskNo == carTask.TaskNo);
- if (modFinshTask == null)
- {
- break;//娌℃湁鏌ヨ鍒版�讳换鍔�
- }
- //鑾峰彇璺緞2鐨勪换鍔� 涓嬪彂
- carTask2 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.PreId.Contains(carTask.Id.ToString())).OrderBy(m=>m.CreateTime).First();
-
- if (carTask != null && carTask.Status != TaskStatusEnum.Complete)
- {
- carTask.Status = TaskStatusEnum.Complete;
- carTask.UpdateTime = DateTime.Now;
- _db.Updateable(carTask).ExecuteCommand();
- //娣诲姞浠诲姟鏄庣粏
- var taskMonitor = new WcsTaskMonitor()
+ //var modRests = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅");
+ //plcConn.SetDBValue(modRests.PosType, modRests.PlcPos, "1");//娌℃湁鎵惧埌浠诲姟 澶嶄綅
+
+ var modFinshTask = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.TaskNo == carTask.TaskNo);
+ if (modFinshTask == null)
{
- TaskNo = carTask.TaskNo,
- PlcName = modDevice.Text,
- InteractiveMsg = $"绌挎杞﹀弽棣堜换鍔″畬鎴�"
- };
- _db.Insertable(taskMonitor).ExecuteCommand();
- //涓嬪彂浠诲姟鏃ュ織
+ break;//娌℃湁鏌ヨ鍒版�讳换鍔�
+ }
+ if (carTask != null && carTask.Status != TaskStatusEnum.Complete)
+ {
+ carTask.Status = TaskStatusEnum.Complete;
+ carTask.UpdateTime = DateTime.Now;
+ _db.Updateable(carTask).ExecuteCommand();
+ //娣诲姞浠诲姟鏄庣粏
+ var taskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = carTask.TaskNo,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"绌挎杞﹀弽棣堜换鍔″畬鎴�"
+ };
+ _db.Insertable(taskMonitor).ExecuteCommand();
+ //涓嬪彂浠诲姟鏃ュ織
- HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
+ HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
+ }
+ //鑾峰彇璺緞2鐨勪换鍔� 涓嬪彂
+ carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing).OrderBy(m => m.CreateTime).First();
+ //鎬讳换鍔′笅娌℃湁鍏朵粬鏈墽琛屽皬杞︾殑浠诲姟 鍙樻洿鎬讳换鍔′俊鎭�
+ if (carTaskNext == null && modFinshTask != null && modFinshTask.Status != TaskStatusEnum.Complete)
+ {
+ modFinshTask.Status = TaskStatusEnum.Complete;
+ modFinshTask.FinishDate = DateTime.Now;
+ _db.Updateable(modFinshTask).ExecuteCommand();
+
+ //鍒ゆ柇浠诲姟鏄惁鍏呯數浠诲姟,涓嬪彂寮�濮嬪厖鐢靛懡浠�
+ if (modFinshTask.Levels == 888)
+ {
+ //鍐欏叆寮�濮嬪厖鐢�
+ var modCd = modDevice.listStation.FirstOrDefault(s => s.Text == "鍏呯數鍛戒护");
+ plcConn.SetDBValue(modCd.PosType, modCd.PlcPos.ToString(), "2");
+ }
+
+ //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚
+ //HttpService httpService = new HttpService();
+ //var requestMode = new TaskRequestWMS()
+ //{
+ // TaskNo = modFinshTask.TaskNo,
+ // PalletNo = modFinshTask.PalletNo,
+ // TaskType = ((int)modFinshTask.TaskType).ToString(),
+ // TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
+ //};
+ //var modResponseTask = httpService.RequestTask(requestMode).Result;
+ //modFinshTask.IsSuccess = TaskSuccessEnum.Success;
+ //_db.Updateable(modFinshTask).ExecuteCommand();
+ HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
+
+ }
}
- //娌℃湁璺緞2鐨勪换鍔� 鍙樻洿鎬讳换鍔′俊鎭�
- if (carTask2 == null && modFinshTask != null && modFinshTask.Status != TaskStatusEnum.Complete)
- {
- modFinshTask.Status = TaskStatusEnum.Complete;
- modFinshTask.FinishDate = DateTime.Now;
- _db.Updateable(modFinshTask).ExecuteCommand();
-
- //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚
- //HttpService httpService = new HttpService();
- //var requestMode = new TaskRequestWMS()
- //{
- // TaskNo = modFinshTask.TaskNo,
- // PalletNo = modFinshTask.PalletNo,
- // TaskType = ((int)modFinshTask.TaskType).ToString(),
- // TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
- //};
- //var modResponseTask = httpService.RequestTask(requestMode).Result;
- //modFinshTask.IsSuccess = TaskSuccessEnum.Success;
- //_db.Updateable(modFinshTask).ExecuteCommand();
- HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
-
- }
-
}
+ WcsTask modTask;
+ //瑕佷笅鍙戣矾寰�2浠诲姟
+ if (carTaskNext != null)
+ {
+ modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.TaskNo == carTaskNext.TaskNo && s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.CarIp == modDevice.PlcIdIP);
+
+ carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == modTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status == TaskStatusEnum.Wait).OrderBy(m => m.CreateTime).First();
+ }
+ else
+ {
+ // 鑾峰彇浠诲姟淇℃伅
+ modTask = _db.Queryable<WcsTask>().Where(s => s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.CarIp == modDevice.PlcIdIP).OrderBy(m => m.Levels).OrderBy(m => m.CreateTime).First();
+ if (modTask != null)
+ {
+ carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == modTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status == TaskStatusEnum.Wait).OrderBy(m => m.CreateTime).First();
+ }
+ }
+
+ //璇诲彇灏忚溅浣嶇疆
var modStationX = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(X)");
var (resultx, valuex) = plcConn.GetDBValue(modStationX.PosType, modStationX.PlcPos);
var modStationY = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Y)");
var (resulty, valuey) = plcConn.GetDBValue(modStationY.PosType, modStationY.PlcPos);
var modStationZ = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Z)");
var (resultz, valuez) = plcConn.GetDBValue(modStationZ.PosType, modStationZ.PlcPos);
-
-
- WcsTask modTask;
- //瑕佷笅鍙戣矾寰�2浠诲姟
- if (carTask2 != null)
+ var carXYZ = valuex.ToString().PadLeft(2, '0') + valuey.ToString().PadLeft(2, '0') + valuez.ToString().PadLeft(2, '0');
+ if (modTask == null)
{
- modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.TaskNo == carTask2.TaskNo && s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar);
-
- carTask2= _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == modTask.TaskNo && m.CarNo == modDevice.PlcIdIP).OrderBy(m => m.CreateTime).First();
- }
- else
- {
- // 鑾峰彇浠诲姟淇℃伅
- modTask = _db.Queryable<WcsTask>().Where(s => s.Status <= TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar).OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime).First();
- if (modTask == null)
+ //璇诲彇灏忚溅鐢甸噺
+ var modPosCarDl = modDevice.listStation.FirstOrDefault(s => s.Text == "鐢垫睜鐢甸噺");
+ var (resultDl, valueDl) = plcConn.GetDBValue(modPosCarDl.PosType, modPosCarDl.PlcPos);
+ if (resultDl.IsSucceed && valueDl < (int)FourWayCarDLEnum.Dl)
{
- return;
+ var endLocateCar = "";
+ if (valuez == 1)
+ {
+ endLocateCar = "210401";
+ }
+ else if (valuez == 2)
+ {
+ endLocateCar = "210402"; //011202
+ }
+ else
+ {
+ return; // 灞傛暟閿欒
+ }
+ //娣诲姞灏忚溅鍏呯數浣嶇疆
+ WcsTask modCarTask = new WcsTask()
+ {
+ TaskNo = _taskService.GetTaskCode(),
+ TaskType = TaskTypeEnum.Move,
+ Type = PLCTypeEnum.ShuttleCar,
+ StartLocate = carXYZ,
+ EndLocate = endLocateCar,
+ PalletNo = "",
+ Status = TaskStatusEnum.Wait,
+ Levels = 888, //鍏呯數绛夌骇浼樺厛浠诲姟绛夌骇
+ Origin = "WCS",
+ CarIp = modDevice.PlcIdIP
+ };
+ _db.Insertable(modCarTask).ExecuteCommand();
+ HubUtil.PublicTask(modCarTask.Adapt<WcsTaskOutput>());
}
- carTask2 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == modTask.TaskNo && m.CarNo == modDevice.PlcIdIP).OrderBy(m => m.CreateTime).First();
- }
+ else if(resultDl.IsSucceed && valueDl < (int)FourWayCarDLEnum.Dl2)
+ {
+ //鍒ゆ柇灏忚溅鏄惁鏈夌┖闂叉椂闂磋褰� 娌℃湁锛氭坊鍔� 鏈夛細鍒ゆ柇褰撳墠鏃堕棿涓庤褰曟椂闂存槸鍚︽弧瓒�5鍒嗛挓 婊¤冻锛氭坊鍔犺灏忚溅鍘诲厖鐢典换鍔�
+ var carTime = _db.Queryable<WcsCarTime>().First(m => m.IsDelete == false && m.CarIp == modDevice.PlcIdIP);
+ if (carTime == null)
+ {
+ var carTimeAdd = new WcsCarTime()
+ {
+ CarIp = modDevice.PlcIdIP,
+ CarTime = DateTime.Now
+ };
+ _db.Insertable(carTimeAdd).ExecuteCommand();
+ }
+ else
+ {
+ if (carTime.CarTime == null)
+ {
+ carTime.CarTime = DateTime.Now;
+ carTime.UpdateTime = DateTime.Now;
+ _db.Updateable(carTime).ExecuteCommand();
+ }
+ else
+ {
+ var date1 = DateTime.Now;
+ var data2 = (DateTime)carTime.CarTime;
+ TimeSpan interval = date1 - data2;
+ if (interval.TotalMinutes >= 5)
+ {
+ var endLocateCar = "";
+ if (valuez == 1)
+ {
+ endLocateCar = "011201";
+ }
+ else if (valuez == 2)
+ {
+ endLocateCar = "011202";
+ }
+ else
+ {
+ return; // 灞傛暟閿欒
+ }
+ //娣诲姞灏忚溅鍏呯數浣嶇疆
+ WcsTask modCarTask = new WcsTask()
+ {
+ TaskNo = _taskService.GetTaskCode(),
+ TaskType = TaskTypeEnum.Move,
+ Type = PLCTypeEnum.ShuttleCar,
+ StartLocate = carXYZ,
+ EndLocate = endLocateCar,
+ PalletNo = "",
+ Status = TaskStatusEnum.Wait,
+ Levels = 888, //鍏呯數绛夌骇浼樺厛浠诲姟绛夌骇
+ Origin = "WCS",
+ CarIp = modDevice.PlcIdIP
+ };
+ _db.Insertable(modCarTask).ExecuteCommand();
+ HubUtil.PublicTask(modCarTask.Adapt<WcsTaskOutput>());
+ }
+ }
- //return;
- if (modTask == null || carTask2 == null)
- {
- //鍒ゆ柇灏忚溅鏄惁鏈夌┖闂叉椂闂磋褰� 娌℃湁锛氭坊鍔� 鏈夛細鍒ゆ柇褰撳墠鏃堕棿涓庤褰曟椂闂存槸鍚︽弧瓒�5鍒嗛挓 婊¤冻锛氭坊鍔犺灏忚溅鍘诲厖鐢典换鍔�
+
+ }
+ }
+
+
return;
}
-
- if (carTask2.Status == TaskStatusEnum.Doing)
+ if (carTaskNext == null)
+ {
+ return;
+ }
+ if (carTaskNext.Status == TaskStatusEnum.Doing)
{
Thread.Sleep(3000);
return;
}
+
//鍒ゆ柇褰撳墠浠诲姟鏄惁杩樻湁鍓嶇疆浠诲姟鏈畬鎴�
- var preStrs = carTask2.PreId.Split(';');
+ var preStrs = carTaskNext.PreId.Split(';');
foreach (var preStr in preStrs)
{
if (string.IsNullOrWhiteSpace(preStr))
@@ -280,6 +387,7 @@
return;//鍓嶇疆浠诲姟鏈畬鎴�
}
}
+
//鍏堝浣�
var modRest = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅");
plcConn.SetDBValue(modRest.PosType, modRest.PlcPos, "1");
@@ -287,7 +395,15 @@
List<Result> listResult = new List<Result>();
//鑾峰彇灏忚溅浠诲姟鍙�
var carTaskNo = FourWayCarUtil.GetTaskNo();
-
+
+ //鍒ゆ柇浠诲姟鏄惁鍏呯數浠诲姟
+ if (modTask.Levels == 888)
+ {
+ //鍐欏叆鍏呯數鍛戒护
+ var modCd = modDevice.listStation.FirstOrDefault(s => s.Text == "鍏呯數鍛戒护");
+ listResult.Add(plcConn.SetDBValue(modCd.PosType, modCd.PlcPos.ToString(), "1"));
+ }
+
var modWriteTask = modDevice.listStation.FirstOrDefault(s => s.Text == "鍐欏叆浠诲姟鍙�");
listResult.Add(plcConn.SetDBValue(modWriteTask.PosType, modWriteTask.PlcPos, carTaskNo.ToString()));
@@ -301,7 +417,7 @@
int posStatus = Convert.ToInt32(modNodeStatus.PlcPos);
//浜や簰璺緞
- var execuPath = carTask2.ExecutionPath.Split(';');
+ var execuPath = carTaskNext.ExecutionPath.Split(';');
if (Convert.ToInt32(valuex) != Convert.ToInt32(execuPath[0].Substring(0, 2)) || Convert.ToInt32(valuey) != Convert.ToInt32(execuPath[0].Substring(2, 2)) || Convert.ToInt32(valuez) != Convert.ToInt32(execuPath[0].Substring(4, 2)))
{
return; //灏忚溅浣嶇疆涓庤矾寰勮捣濮嬩綅缃笉鍚�
@@ -343,15 +459,15 @@
var result = plcConn.SetDBValue(modStart.PosType, modStart.PlcPos, "1");
if (result.IsSucceed)
{
- carTask2.Status = TaskStatusEnum.Doing;
- carTask2.CarTaskNo = carTaskNo;
- _db.Updateable(carTask2).ExecuteCommand();
+ carTaskNext.Status = TaskStatusEnum.Doing;
+ carTaskNext.CarTaskNo = carTaskNo;
+ _db.Updateable(carTaskNext).ExecuteCommand();
//娓呴櫎灏忚溅绌洪棽鏃堕棿
var taskMonitor = new WcsTaskMonitor()
{
- TaskNo = carTask2.TaskNo,
+ TaskNo = carTaskNext.TaskNo,
PlcName = modDevice.Text,
- InteractiveMsg = $"鍚戠┛姊溅涓嬪彂浠诲姟{carTask2.TaskNo}"
+ InteractiveMsg = $"鍚戠┛姊溅涓嬪彂浠诲姟{carTaskNext.TaskNo}"
};
_db.Insertable(taskMonitor).ExecuteCommand();
//涓嬪彂浠诲姟鏃ュ織
--
Gitblit v1.8.0