From c06382f1b619e1dc7f37be36a0cee126239abdee Mon Sep 17 00:00:00 2001
From: chengsc <Demo@DESKTOP-CPA90BF>
Date: 星期三, 30 十月 2024 11:35:22 +0800
Subject: [PATCH] Merge branch 'master' into csc
---
Admin.NET/WCS.Application/PLC/PLCService.cs | 298 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 253 insertions(+), 45 deletions(-)
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 058b15d..0d50872 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -1,6 +1,7 @@
锘�
using Dm.filter;
using DocumentFormat.OpenXml.Bibliography;
+using DocumentFormat.OpenXml.Drawing.Charts;
using Elastic.Clients.Elasticsearch.Tasks;
using Furion.Logging;
using IoTClient;
@@ -13,10 +14,13 @@
using System.Reflection.Emit;
using WCS.Application.Entity;
using WCS.Application.Util;
+using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressIntracityUpdateStoreRequest.Types;
+using static SKIT.FlurlHttpClient.Wechat.Api.Models.NontaxInsertBillRequest.Types.CardExtra.Types.BillCard.Types;
namespace WCS.Application;
public static class PLCService
{
+
private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
public static void OnChangeEvent(object sender, EventArgs e)
@@ -58,24 +62,30 @@
private static void StackingMachine(WcsDeviceDto modDevice)
{
var plcConn = modDevice.PLCUtil;
+ string ledText = "";
switch (modDevice.Value.ToString())
{
case "820":
// 璺烘満绌洪棽锛岃幏鍙栧嚭搴撲换鍔°�佺Щ搴撲换鍔�
{
// 鑾峰彇浠诲姟淇℃伅
- var modTask = _db.Queryable<WcsTask>().OrderBy(m => m.CreateTime).OrderBy(m => m.Levels, OrderByType.Desc)
+ var modTask = _db.Queryable<WcsTask>().OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime)
.First(s => s.Status == TaskStatusEnum.Wait && (s.TaskType == TaskTypeEnum.Out || s.TaskType == TaskTypeEnum.Move)
&& s.StartRoadway == modDevice.StationNum);
if (modTask == null)
{
break;
}
+ //鍒ゆ柇鍑哄簱閿佸畾鏄惁鎵撳紑
+ if (PLCTaskAction.boOutLock)
+ {
+ break;//鍑哄簱閿佸畾鎵撳紑鍒欎笉鎵ц鍑哄簱浠诲姟
+ }
PlcTaskInfo taskInfo = new PlcTaskInfo();
if (modTask.TaskType == TaskTypeEnum.Move)
{
- taskInfo = PLCCommon.GetEndPai(modTask.EndLocate.Substring(1, 2), modTask.EndLocate.Substring(2, 2),
+ taskInfo = PLCCommon.GetEndPai(modTask.EndRoadway.Substring(1, 2), modTask.EndLocate.Substring(2, 2),
modTask.EndLocate.Substring(0, 2), modTask.EndLocate.Substring(4, 2),
modTask.EndLocate.Substring(6, 2));
@@ -198,8 +208,15 @@
_db.Insertable(modInsertTaskMonitor).ExecuteCommand();
//涓嬪彂浠诲姟鏃ュ織
HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+
//淇敼led灞忎俊鎭�
- //LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.EndLocate, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿modTask.StartLocate}", "鎵樼洏鍙�:" + modTask.PalletNo);
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == taskInfo.EndStation && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
+ ledText += $"浠诲姟绫诲瀷:{modTask.TaskType.GetDescription()}\n\n";
+ ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+ ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
+ ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
+ ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+ LedDisplay(ledDevice.LedIP, ledText);
}
}
break;
@@ -351,8 +368,6 @@
HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
}
- //淇敼led灞忎俊鎭�
- //LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.EndLocate, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿modTask.StartLocate}", "鎵樼洏鍙�:" + modTask.PalletNo);
}
}
break;
@@ -366,7 +381,7 @@
{
string tasknoVal = val.ToString();
var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false);
- if (modTask == null)
+ if (modTask == null)
{
Log.Error(string.Format("璺烘満鎺у埗瀛�860:鏈壘鍒板搴旂殑浠诲姟銆�"));
break;
@@ -417,7 +432,7 @@
}
else
{
- Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg));
+ Log.Error(string.Format("c锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg));
}
}
// 鏍规嵁浠诲姟鍙疯幏鍙栬捣濮嬪伐浣嶅湴鍧�锛屾牴鎹捣濮嬪伐浣嶅湴鍧�鑾峰彇LEDIP 鎺ㄩ�佸埌LED灞忓箷銆�
@@ -429,8 +444,16 @@
HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
// led鏄剧ず鍐呭
- LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.StartLocate, "鍏ュ簱瀹屾垚 " + $"浠诲姟瀹屾垚:{modTask.TaskNo}", "鎵樼洏鍙�:" + modTask.PalletNo);
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modTask.StartLocate && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
+ ledText += $"鍏ュ簱瀹屾垚\n\n";
+ ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+ ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
+
+ ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
+ ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+
+ LedDisplay(ledDevice.LedIP, ledText);
// 姝ゅ娣诲姞涓嶇┖璺戜笟鍔�
}
break;
@@ -496,13 +519,6 @@
//涓嬪彂浠诲姟鏃ュ織
HubUtil.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>());
- // 鏍规嵁浠诲姟鍙疯幏鍙栬捣濮嬪伐浣嶅湴鍧�锛屾牴鎹捣濮嬪伐浣嶅湴鍧�鑾峰彇LEDIP 鎺ㄩ�佸埌LED灞忓箷銆�
- var taskModel = _db.Queryable<WcsTask>().First(w => w.TaskNo == modTask.TaskNo);
- modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == taskModel.EndLocate).Select(s => s.LedIP).First();
-
- // led鏄剧ず鍐呭
- LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modDevice.StationNum, "鍑哄簱涓� ", "鎵樼洏鍙�:" + modTask.PalletNo);
-
break;
}
}
@@ -529,6 +545,7 @@
// 鏀瑰彉浠诲姟鐘舵��
modTask.Status = TaskStatusEnum.Complete;
modTask.FinishDate = DateTime.Now;
+ modTask.Levels = 999;
_db.Updateable(modTask).ExecuteCommand();
//涓嬪彂浠诲姟鏃ュ織
HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
@@ -884,6 +901,7 @@
{
return;
}
+ var ledText = "";
switch (modDevice.Value.ToString())
{
case "320":
@@ -891,11 +909,7 @@
// 鐢宠宸烽亾
string strMsg = "";
string taskModel = "";
- // 鍒ゆ柇鏄惁婕旂ず妯″紡
- //if (PLCTaskAction.boDemo)
- //{
- // taskModel = "1";// 婕旂ず妯″紡
- //}
+
// 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭�
var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�");
var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
@@ -903,6 +917,52 @@
{
break;
}
+ var modPosEndLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
+
+
+ //鍒ゆ柇鍏ュ簱閿佸畾鏄惁鎵撳紑
+ if (PLCTaskAction.boEnterLock)
+ {
+ var (res350, palletVal350) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
+ if (res350.IsSucceed && palletVal350 != "350")
+ {
+ ledText += $"鐢宠鍏ュ簱澶辫触\n\n";
+ ledText += $"鎵樼洏鍙�:{palletVal}\n";
+ ledText += $"鍏ュ簱浠诲姟宸查攣瀹氾紝璇疯В閿佸悗閲嶈瘯!\n";
+ LedDisplay(modDevice.LedIP, ledText);
+ }
+
+ // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+ if (ret.IsSucceed)
+ {
+ plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
+ }
+
+ break;
+ }
+
+ if (palletVal == null)
+ {
+ var (res350, palletVal350) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
+ if (res350.IsSucceed && palletVal350 != "350")
+ {
+ ledText += $"鐢宠鍏ュ簱澶辫触\n\n";
+ ledText += $"鎵樼洏鍙�:{palletVal}\n";
+ ledText += $"鎵弿鎵樼洏鍙峰け璐�!\n";
+ LedDisplay(modDevice.LedIP, ledText);
+ }
+
+ // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+ if (ret.IsSucceed)
+ {
+ plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
+ }
+
+ break;
+ }
+
var http = new HttpService();
string TaskNo = "", EndLocate = "";
strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo);
@@ -937,20 +997,48 @@
// 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
// led鏄剧ず鍐呭
- LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modDevice.StationNum, "鐢宠鍏ュ簱 " + $"鐩爣宸烽亾锛歿EndLocate}", "鎵樼洏鍙�:" + palletVal);
+ try
+ {
+ ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n";
+
+ ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+ ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+
+ ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+ ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+ LedDisplay(modDevice.LedIP, ledText);
+
+ }
+ catch (Exception ex)
+ {
+ Log.Error(ex.Message);
+ }
+
}
}
else
{
- // 鐢宠宸烽亾澶辫触锛丩ED鏄剧ず
- Log.Error(string.Format($"鐢宠宸烽亾澶辫触:{strMsg},璇诲啓plc閿欒"));
+ var (res350, palletVal350) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
+ if (res350.IsSucceed && palletVal350 != "350")
+ {
+ ledText += $"鐢宠鍏ュ簱澶辫触\n\n";
+ ledText += $"鎵樼洏鍙�:{palletVal}\n";
+ ledText += $"{strMsg}\n";
+ LedDisplay(modDevice.LedIP, ledText);
+ }
+
+ // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+ if (ret.IsSucceed)
+ {
+ plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
+ }
}
}
break;
case "330":
{
-
// 鍐欏叆浠诲姟 鎵樼洏绉诲姩 340
// 鑾峰彇宸ヤ綅鎵樼洏鐮佷俊鎭�
@@ -967,6 +1055,11 @@
{
// 姝ゆ墭鐩樻病鏈夊搴旂殑杞Щ浠诲姟 led鏄剧ず
break;
+ }
+ //鍒ゆ柇鍏ュ簱閿佸畾鏄惁鎵撳紑
+ if (PLCTaskAction.boEnterLock)
+ {
+ break;//鍏ュ簱閿佸畾鎵撳紑鍒欎笉鎵ц鍏ュ簱浠诲姟
}
// 鑾峰彇宸烽亾鍙e叆搴撳伐浣�
@@ -1023,8 +1116,6 @@
// 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
- // led鏄剧ず鍐呭
- LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modDevice.StationNum, "鍏ュ簱涓� " + $"鐩爣宸烽亾锛歿endLocatVlue}", "鎵樼洏鍙�:" + palletVal);
}
}
@@ -1089,14 +1180,25 @@
// 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
- // led鏄剧ず鍐呭
- LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modDevice.StationNum, "鍏ュ簱涓� " + $"鐢宠鍌ㄤ綅鍦板潃:{strMsg}", "鎵樼洏鍙�:" + palletVal);
+
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
+ ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n";
+ ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+ ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+ ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+ ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+ LedDisplay(modDevice.LedIP, ledText);
}
}
else
{
// 鐢宠鍌ㄤ綅澶辫触锛丩ED鏄剧ず
Log.Error(string.Format($"鐢宠鍌ㄤ綅澶辫触:{strMsg},璇诲啓plc閿欒"));
+ // led鏄剧ず鍐呭
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
+ ledText += $"鐢宠鍏ュ簱澶辫触\n\n";
+ ledText += $"{strMsg}\n";
+ LedDisplay(modDevice.LedIP, ledText);
}
}
@@ -1144,6 +1246,7 @@
break;
}
+ // 杞崲鐩爣宸ヤ綅鎺掑垪灞� 03010301
var paiVal = PLCCommon.GetDjAdress(modTask.EndRoadway.Substring(1, 2), endLocate.Substring(0, 2), endLocate.Substring(6, 2));
string pai = paiVal.ToString();
string lie = int.Parse(endLocate.Substring(2, 2)).ToString();
@@ -1282,7 +1385,15 @@
modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == taskInfo.EndLocate).Select(s => s.LedIP).First();
// led鏄剧ず鍐呭
- LedDisplay(modDevice.LedIP, "鍒拌揪宸ヤ綅:" + modDevice.StationNum, "鍑哄簱瀹屾垚 " + $"鍌ㄤ綅鍦板潃锛歿modInsertTaskMonitor.StartLocat}", "鎵樼洏鍙�:" + palletVal);
+ // 鏍规嵁鐩爣宸ヤ綅鍙疯幏鍙栧搴旂殑LEDIP鍦板潃
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId);
+
+ ledText += $"鍑哄簱瀹屾垚\n\n";
+ ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+ ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+ ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+ ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+ LedDisplay(ledDevice.LedIP, ledText);
}
// 鍙嶉WMS鍑哄簱瀹屾垚
//TaskReques taskReques = new TaskReques();
@@ -1317,6 +1428,7 @@
// 鏀瑰彉浠诲姟鐘舵��
modTask.Status = TaskStatusEnum.Complete;
modTask.FinishDate = DateTime.Now;
+ modTask.Levels = 999;
_db.Updateable(modTask).ExecuteCommand();
HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
// 鎻掑叆浠诲姟鏄庣粏
@@ -1325,7 +1437,7 @@
TaskNo = modTask.TaskNo,
PlcId = modDevice.Id,
PlcName = modDevice.Text,
- InteractiveMsg = $"鍐欏叆鎸囦护450锛歿modDevice.StationNum}鎷i�夊畬鎴�,鎵樼洏绂诲紑宸ヤ綅",
+ InteractiveMsg = $"鍐欏叆鎸囦护450锛歿modDevice.StationNum}鍑哄簱瀹屾垚",
PalletNo = palletVal,
Status = TaskStatusEnum.Complete,
StartLocat = starVal.ToString(),
@@ -1359,8 +1471,14 @@
// 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
// led鏄剧ず鍐呭
- modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == modTask.EndLocate).Select(s => s.LedIP).First();
- LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.StartLocate, $"鎷i�夊畬鎴愶紝鎵樼洏绂诲紑宸ヤ綅", "鎵樼洏鍙�:" + modTask.PalletNo);
+ var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId);
+
+ ledText += $"鍑哄簱瀹屾垚\n\n";
+ ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+ ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
+ ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
+ ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+ LedDisplay(ledDevice.LedIP, ledText);
}
#endregion
}
@@ -1409,7 +1527,7 @@
var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false);
if (modTask == null)
{
- Log.Error(string.Format($"宸ヤ綅鍙凤細{modDevice.StationNum}绌烘墭鐩樺埌杈撅紝鏈壘鍒板搴旂殑浠诲姟!浠诲姟鍙穥tasknoVal};"));
+ //Log.Error(string.Format($"宸ヤ綅鍙凤細{modDevice.StationNum}绌烘墭鐩樺埌杈撅紝鏈壘鍒板搴旂殑浠诲姟!浠诲姟鍙穥tasknoVal};"));
break;
}
// 鍐欏叆plc娴佺▼瀛�90
@@ -1419,6 +1537,7 @@
// 鏀瑰彉浠诲姟鐘舵��
modTask.Status = TaskStatusEnum.Complete;
modTask.FinishDate = DateTime.Now;
+ modTask.Levels = 999;
_db.Updateable(modTask).ExecuteCommand();
HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
@@ -1604,7 +1723,7 @@
else
{
// 涓巔lc浜や簰鍐欏叆鍒嗛亾鍙峰拰娴佺▼鎺у埗瀛�
- var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, checkTaskInfo.RoboatNo);
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, checkTaskInfo.LineNo);
if (ret.IsSucceed)
{
// 鍐欏叆娴佺▼鎺у埗瀛� 2
@@ -1683,16 +1802,17 @@
string boxNo = boxVal.ToString();
if (string.IsNullOrEmpty(boxNo))
{
- Log.Error(string.Format("鐮佸灈宸ヤ綅{0}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��"), modDevice.StationNum);
+ Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��" );
// 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐�
var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
+
break;
}
// 楠岃瘉绠辩爜琛ㄦ槸鍚﹀瓨鍦ㄦ绠辩爜
- var boxInfo = _db.Queryable<WcsBoxInfo>().First(w => w.IsDelete == false && w.BoxNo == boxNo);
- if (boxInfo == null)
+ var boxInfo = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.BoxNo == boxNo).ToList();
+ if (boxInfo.Count == 0)
{
- Log.Error(string.Format("鐮佸灈宸ヤ綅{0}锛岀鐮亄1}涓嶅瓨鍦�!璇蜂汉宸ュ己鍒剁粨鎵广��"), modDevice.StationNum,boxNo);
+ Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮亄boxNo}涓嶅瓨鍦�!璇蜂汉宸ュ己鍒剁粨鎵广��");
// 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐�
var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
break;
@@ -1711,26 +1831,42 @@
break;
}
// 淇敼鎻掔爜琛�
- boxInfo.PalletNo = palletNo;
- boxInfo.UpdateTime = DateTime.Now;
+ foreach (WcsBoxInfo item in boxInfo)
+ {
+ item.PalletNo = palletNo;
+ item.UpdateTime = DateTime.Now;
+ }
+
var rowCount = _db.Updateable(boxInfo).ExecuteCommand();
if (rowCount > 0)
{
// 鎻掔爜鎴愬姛
var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1");
+
+ //鏄惁缁撴壒绠�
+ if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed)
+ {
+ // 瑙﹀彂缁撴壒 瑙g粦鍒嗛亾
+ AutoEndLot(boxInfo[0].LotNo, plcConn, "0");
+ }
}
else
{
// 鎻掔爜澶辫触
- Log.Error(string.Format("绠辩爜{0};鐮佸灈宸ヤ綅{1}锛屾彃鐮佸け璐ワ紝璇峰己鍒剁粨鎵�"),boxNo,modDevice.StationNum);
+ Log.Error($"绠辩爜{boxNo};鐮佸灈宸ヤ綅{modDevice.StationNum}锛屾彃鐮佸け璐ワ紝璇峰己鍒剁粨鎵�");
var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
+ if (retVal.IsSucceed)
+ {
+ // 瑙﹀彂缁撴壒 涓嶈В缁戝垎閬�
+ AutoEndLot(boxInfo[0].LotNo, plcConn, "1");
+ }
}
}
}
break;
case "40":
// 璇锋眰缁勬墭锛岀敵璇峰叆搴�
- {
+ {
// 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙�
var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
// 鏍规嵁宸ヤ綅鍙疯幏鍙� 鎵樼洏绾胯宸ヤ綅鍙风殑閰嶇疆淇℃伅
@@ -1848,7 +1984,8 @@
int insertCount = _db.Ado.ExecuteCommand(sqlStr);
if (insertCount > 0)
{
- string sqlStr2 = $"delete from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'";
+ // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛�
+ string sqlStr2 = $"delete from WCSBoxInfoLog where IsDelete=0 and PalletNo='{palletNo}'";
_db.Ado.ExecuteCommand(sqlStr2);
}
// 鍚慦MS鐢宠宸烽亾
@@ -1856,7 +1993,7 @@
string TaskNo = "", EndLocate = "";
string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo,palletNo, checkTaskMedel.BoxCount.ToDecimal(),"0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "","", boxInfoList,
modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo);
- if (!strMsg.Contains("-1"))
+ if (strMsg.Contains("-1"))
{
Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg));
break;
@@ -1950,7 +2087,78 @@
LedDll Led = new LedDll();
Led.LEDstr(ip, top, content, foot);
}
- catch { }
+ catch (Exception ex)
+ {
+ Log.Error(ex.Message);
+ }
+ }
+ /// <summary>
+ /// LED淇℃伅灞曠ず
+ /// </summary>
+ /// <param name="ip"></param>
+ /// <param name="text"></param>
+ private static void LedDisplay(string ip,string text)
+ {
+ try
+ {
+ LedDll Led = new LedDll();
+ Led.ConsoleLeds(ip, text);
+ // 璁剧疆瀹炰緥
+ //Led.ConsoleLeds("10.18.51.238", $"浠诲姟绫诲瀷:{TaskTypeEnum.Move.GetDescription()}\n\n浠诲姟鍙�:TK2024102100001\n鎵樼洏鍙�:LN000145\n\n璧峰浣�:033\n鐩爣浣�:R01-02010102");
+ }
+ catch (Exception ex)
+ {
+ Log.Error(ex.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鑷姩缁撴壒
+ /// </summary>
+ /// <param name="lotNo">鎵规鍙�</param>
+ /// <param name="plcConn">Plc杩炴帴</param>
+ /// <param name="status">鏄惁瑙g粦鍒嗛亾 0锛氳В缁� 1锛氱粦瀹�</param>
+ private static void AutoEndLot(string lotNo,PLCUtil plcConn,string status)
+ {
+ try
+ {
+ if (string.IsNullOrWhiteSpace(lotNo))
+ {
+ Console.WriteLine("鎵规鍙蜂负nul");
+ }
+ var checkTaskList = _db.Queryable<WcsCheckTask>().Where(w => w.LotNo == lotNo && w.Status == "1").ToList();
+ if (checkTaskList.Count <= 0)
+ {
+ Console.WriteLine("鏈壘鍒板垎閬撶粦瀹氫俊鎭�");
+ }
+ foreach (var item in checkTaskList)
+ {
+ #region#缁橮LC鍐欏叆缁撴壒鎵规鍙�
+ var ret = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, "1");
+ if (ret.IsSucceed)
+ {
+ //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌�
+ //item.OrderNo = "";
+ //item.TaskNo = "";
+ //item.LotNo = "";
+ //item.SkuNo = "";
+ //item.SkuName = "";
+ //item.BoxType = "";
+ //item.Qty = 0;
+ //item.PZNo = "";
+ item.Status = status; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹�
+
+ //鏇存柊鍒嗘嫞浠诲姟
+ _db.Updateable(item).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+ }
+ #endregion
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.Error(ex.Message);
+ throw;
+ }
}
private static void Test(WcsDeviceDto modDevice)
--
Gitblit v1.8.0