From dbde3162fd361dcba4316b58754ccecf39a81a9f Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期一, 09 六月 2025 08:52:18 +0800
Subject: [PATCH] 修改问题
---
Admin.NET/WCS.Application/PLC/PLCService.cs | 703 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 604 insertions(+), 99 deletions(-)
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index c0953f1..c44363d 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -16,6 +16,7 @@
using System.Data;
using System.Reflection.Emit;
using WCS.Application.Entity;
+using WCS.Application.Service.WcsDevice.Dto;
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;
@@ -26,6 +27,8 @@
private static readonly object OLock = new object();
private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
+
+ private static int fendao = 1;
public static void OnChangeEvent(object sender, EventArgs e)
{
@@ -215,11 +218,16 @@
//淇敼led灞忎俊鎭�
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.TaskType.GetDescription()}\n\n";
+ //ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+ //ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
+ //ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
+ //ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+ ledText += $"鍚嶇О:{modTask.SkuName}\n";
+ ledText += $"鎵瑰彿:{modTask.LotNo}\n";
+ ledText += $"鍏ュ簱鏁伴噺:{modTask.Qty}\n";
ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
- ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
- ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+
LedDisplay(ledDevice.LedIP, ledText);
}
}
@@ -450,13 +458,18 @@
// led鏄剧ず鍐呭
var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modTask.StartLocate && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
- ledText += $"鍏ュ簱瀹屾垚\n\n";
+ //ledText += $"鍏ュ簱瀹屾垚\n\n";
- ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+ //ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+ //ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
+
+ //ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
+ //ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+
+ ledText += $"鍚嶇О:{modTask.SkuName}\n";
+ ledText += $"鎵瑰彿:{modTask.LotNo}\n";
+ ledText += $"鍏ュ簱鏁伴噺:{modTask.Qty}\n";
ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
-
- ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
- ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
LedDisplay(ledDevice.LedIP, ledText);
// 姝ゅ娣诲姞涓嶇┖璺戜笟鍔�
@@ -996,10 +1009,11 @@
string groupMsg = "";
if (modDevice.StationNum == "27")
{
- var Qty = plcConn.GetPlcDBValue(PLCDataTypeEnum.Int,"DB135.0").ToString();//鑾峰彇鍙犳墭鏈哄彔鎵樻暟閲�
- groupMsg = http.BindPlnInHouseWcs(Qty, palletVal);
+ var (res2,Qty) = plcConn.GetPlcDBValue(PLCDataTypeEnum.Short,"DB135","0");//鑾峰彇鍙犳墭鏈哄彔鎵樻暟閲�
+
+ groupMsg = http.BindPlnInHouseWcs(Qty.ToString(), palletVal);
- if (!groupMsg.Contains("-1"))
+ if (groupMsg.Contains("-1"))
{
var (res350, palletVal350) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
if (res350.IsSucceed && palletVal350 != "350")
@@ -1016,8 +1030,8 @@
{
plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
}
+ break;
}
- break;
}
string IsBale = "0";
strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo);
@@ -1065,13 +1079,18 @@
// led鏄剧ず鍐呭
try
{
- ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n";
+ //ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n";
- ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+ //ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+ //ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+
+ //ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+ //ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+ ledText += $"鍚嶇О:{taskInfo.SkuName}\n";
+ ledText += $"鎵瑰彿:{taskInfo.LotNo}\n";
+ ledText += $"鍏ュ簱鏁伴噺:{taskInfo.Qty}\n";
ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
- ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
- ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
LedDisplay(modDevice.LedIP, ledText);
}
@@ -1247,11 +1266,15 @@
HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
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.TaskType.GetDescription()}\n\n";
+ //ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+ //ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+ //ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+ //ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+ ledText += $"鍚嶇О:{taskInfo.SkuName}\n\n";
+ ledText += $"鎵瑰彿:{taskInfo.LotNo}\n";
+ ledText += $"鍏ュ簱鏁伴噺:{taskInfo.Qty}\n";
ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
- ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
- ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
LedDisplay(modDevice.LedIP, ledText);
}
}
@@ -1426,6 +1449,9 @@
var (res2, palletVal) = plcConn.GetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos);
var modPosStarStationNum = modDevice.listStation.FirstOrDefault(m => m.Text == "璧峰宸ヤ綅");
var (res3, starVal) = plcConn.GetPlcDBValue(modPosStarStationNum.PosType, modDevice.DbNumber, modPosStarStationNum.PlcPos);
+ string tasknoVal = taskVal.ToString();
+ ////string b = taskVal.GetValue();
+ //string a = palletVal.ToString();
// 鎻掑叆浠诲姟鏄庣粏
var modInsertTaskMonitor = new WcsTaskMonitor()
{
@@ -1435,10 +1461,10 @@
InteractiveMsg = $"鍐欏叆鎸囦护430锛氭墭鐩樺埌杈緖modDevice.StationNum}宸ヤ綅",
PalletNo = palletVal,
Status = TaskStatusEnum.Complete,
- StartLocat = starVal,
+ StartLocat = starVal.ToString(),
EndLocat = modDevice.StationNum,
};
-
+
// 鎻掑叆浜や簰鏃ュ織
_db.Insertable(modInsertTaskMonitor).ExecuteCommand();
@@ -1454,10 +1480,15 @@
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.TaskNo}\n";
+ //ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+ //ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+ //ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+ ledText += $"鍚嶇О:{taskInfo.SkuName}\n";
+ ledText += $"鎵瑰彿:{taskInfo.LotNo}\n";
+ ledText += $"鍑哄簱鏁伴噺:{taskInfo.Qty}\n";
+ ledText += $"鍒嗛厤鏁伴噺:{taskInfo.CompleteQty}\n";
ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
- ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
- ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
LedDisplay(ledDevice.LedIP, ledText);
}
// 鍙嶉WMS鍑哄簱瀹屾垚
@@ -1482,7 +1513,7 @@
var (res2, palletVal) = plcConn.GetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos);
var modPosStarStationNum = modDevice.listStation.FirstOrDefault(m => m.Text == "璧峰宸ヤ綅");
var (res3, starVal) = plcConn.GetPlcDBValue(modPosStarStationNum.PosType, modDevice.DbNumber, modPosStarStationNum.PlcPos);
-
+
string tasknoVal = taskVal.ToString();
var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false);
if (modTask == null)
@@ -1539,10 +1570,16 @@
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.TaskNo}\n";
+ //ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
+ //ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
+ //ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+ ledText += $"鍚嶇О:{modTask.SkuName}\n";
+ ledText += $"鎵瑰彿:{modTask.LotNo}\n";
+ ledText += $"鍑哄簱鏁伴噺:{modTask.Qty}\n";
+ ledText += $"鍒嗛厤鏁伴噺:{modTask.CompleteQty}\n";
ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
- ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
- ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+
LedDisplay(ledDevice.LedIP, ledText);
}
#endregion
@@ -1748,8 +1785,53 @@
#endregion
+
}
break;
+ #region 灏忚溅鍙斁淇″彿
+ case "150":
+ { // 鑾峰彇宸ヤ綅浠诲姟鍙蜂俊鎭�
+ var strMsg = "";
+ var http = new HttpService();
+ // 鑾峰彇鎵樼洏浠诲姟鍙�
+ var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�");
+ var (res1, val) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos);
+ if (res1.IsSucceed)
+ {
+ string tasknoVal = val.ToString();
+ var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false);
+ if (modTask == null)
+ {
+ //璇诲彇鎴愬姛鍚庡啓鍏�151
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "151");//鏀跺埌鍙斁淇″彿鍚庡啓鍏�151
+ if (ret.IsSucceed)
+ {
+ //鍥炰紶WMS鍙斁淇″彿
+ strMsg = http.RequesContinueAgv(val.ToString(), modDevice.StationNum);
+ if (!strMsg.Contains("-1"))
+ {
+ // 鎻掑叆浠诲姟鏄庣粏
+ var modInsertTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = tasknoVal,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"鍐欏叆鎸囦护151锛歿modDevice.StationNum}宸ヤ綅鍙帴鍙桝GV鏀捐揣鍏ュ簱",
+ Status = TaskStatusEnum.Complete,
+ StartLocat = modDevice.StationNum
+ };
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+ }
+ }
+ break;
+ }
+ }
+ //
+
+ }
+ break;
+ #endregion
default: break;
}
@@ -1800,7 +1882,7 @@
private static async void BoxConveyorLine(WcsDeviceDto modDevice)
{
var plcConn = modDevice.PLCUtil;
-
+ //浜屾ゼ涓绘壂鍒嗛亾
if (modDevice.DbNumber == "DB101")//&& modDevice.DbNumber == "DB102"&& (modDevice.DbNumber == "DB102"||modDevice.PlcIdIP == "10.18.51.110")
{
// 涓绘壂浜や簰娴佺▼
@@ -1810,15 +1892,26 @@
// 涓绘壂鐢宠鍒嗛亾 wcs鍐欏叆2
{
// 鍒ゆ柇鏄惁婕旂ず妯″紡 true锛氭紨绀烘ā寮� false:鐢熶骇妯″紡
- if (PLCTaskAction.boDemo)
+ if (PLCTaskAction.boDemo)
{
// 閫氶亾鍙�
var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "閫氶亾鍙�");
- // 婕旂ず妯″紡鐩存帴鍐欏叆1鍒嗛亾
- var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "1");
+ // 婕旂ず妯″紡鐩存帴鍐欏叆鍒嗛亾鍙�
+ //Random random = new Random();
+ //int ranNumber = random.Next(2) == 0 ? 1 : 5;
+ if (fendao == 1)
+ {
+ fendao = 5;
+ }
+ else
+ {
+ fendao = 1;
+ }
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, fendao.ToString()); //
if (ret.IsSucceed)
{
+ Log.Information(string.Format("鍒嗛亾鎴愬姛锛岄亾鍙锋槸锛�" + fendao));
// 鍐欏叆娴佺▼鎺у埗瀛� 2
var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
if (!retVal.IsSucceed)
@@ -1871,11 +1964,12 @@
}
}
}
- // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿
- var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo && w.Status == "1");
- if (checkTaskInfo == null)
+
+
+ // 楠岃瘉鏄惁闆剁
+ if (boxInfo.BitBoxMark == "1")
{
- // 缁戝畾淇℃伅涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙�
+ // 鏄浂绠辩洿鎺ュ墧闄わ紝杩涜浜哄伐缁勬墭
var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
if (ret.IsSucceed)
{
@@ -1883,8 +1977,227 @@
var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
if (retVal.IsSucceed)
{
- Log.Error("绠辩爜鏈粦瀹氬垎鎷d换鍔★紝杩涜鍓旈櫎銆�");
+ Log.Error("闆剁锛岃繘琛屽墧闄ゃ��");
break;
+ }
+ }
+ break;
+ }
+
+
+ // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿
+ var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo && w.Status == "1");
+ if (checkTaskInfo == null)
+ {
+ // 鍒ゆ柇鏄惁鍏宠仈鍗曟嵁 wcsordertask
+ var orderModel = _db.Queryable<WcsOderTask>()
+ .First(m => m.SkuNo == boxInfo.SkuNo && m.Status == TaskStatusEnum.Wait && m.LotNo == boxInfo.LotNo && m.IsDelete == false);
+ if (orderModel != null)
+ {
+ // 鏍规嵁boxinfo琛ㄤ骇绾垮瓧娈佃嚜鍔ㄧ粦瀹氬垎閬�(1绾夸骇鍝佸彧鑳界粦瀹氬埌8閬�)
+ if (boxInfo.LineNo != "涓�绾�")
+ {// 缁戝畾鍒伴櫎8閬撳鍏朵粬閬�
+
+ // 鑾峰彇鏈粦瀹氶亾
+ var lineNoModels = _db.Queryable<WcsCheckTask>()
+ .Where(m => m.Status == "0" && m.LineNo != "8" && m.RoboatType == PLCTypeEnum.RobotPalletizer).ToList();
+ if (lineNoModels.Count > 0)
+ {
+ // 鑾峰彇褰撳墠鐗╂枡鍝佺鍙�
+ var skuInfo = await _db.Queryable<WcsMateialPzInfo>().Where(w => w.SkuNo == boxInfo.SkuNo).FirstAsync();
+ if (skuInfo == null)
+ {
+ // 姝や骇鍝佽嫢娌¤瀹氬搧瑙勶紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+ break;
+ }
+ }
+ break;
+ }
+
+ foreach (var lineNoModel in lineNoModels)
+ {
+ // 璇诲彇璁惧楠岃瘉鏄惁缁戝畾鍒嗛亾
+ var (respg, pzNo) = plcConn.GetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos);
+ if (respg.IsSucceed)
+ {
+ if (pzNo != 0)
+ {
+ // plc姝ゅ垎閬撴湭瑙g粦
+ break;
+ }
+ else
+ {
+ // 鑷姩缁戝畾鍒嗛亾
+ lineNoModel.OrderNo = orderModel.OrderNo;
+ lineNoModel.LotNo = boxInfo.LotNo;
+ lineNoModel.SkuNo = boxInfo.SkuNo;
+ lineNoModel.SkuName = boxInfo.SkuName;
+ lineNoModel.Qty = 0;
+ lineNoModel.Status = "1";//宸茬粦瀹�
+ lineNoModel.PZNo = skuInfo.PZNo;
+ lineNoModel.FinishQty = 0;
+
+ // 缁橮LC鍐欏叆鍝佽
+ var ret = plcConn.SetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos, skuInfo.PZNo);
+ if (ret.IsSucceed)
+ {
+ //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟
+ _db.Updateable(lineNoModel).ExecuteCommand();
+ //鏇存柊WcsOderTask琛�
+ orderModel.Status = TaskStatusEnum.Doing;
+ _db.Updateable(orderModel).ExecuteCommand();
+ // Liudl 閫氱煡鍓嶇鏇存柊鍒嗘嫞浠诲姟
+ //涓嬪彂鍒嗘嫞浠诲姟
+ HubUtil.PublicCheckTask(lineNoModel.Adapt<WcsDeviceTaskOrderDto>());
+ break;
+ }
+ else
+ {
+ throw Oops.Bah("涓嶱CL浜や簰澶辫触锛岀粦瀹氬け璐ワ紒");
+ }
+ }
+ }
+ else
+ {
+ // 璇诲彇plc澶辫触
+ break;
+ }
+ }
+
+ }
+ else
+ {
+ // 鑻ユ病鏈夌┖闂查亾锛岃繘琛屽墧闄ゅ鐞嗐�傞槻姝㈠牭濉炰欢绠辩嚎
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+ break;
+ }
+ }
+ break;
+ }
+ }
+ else
+ {// 缁戝畾鍒�8閬�
+ // 鑾峰彇鏈粦瀹氶亾
+ var lineNo8Model = _db.Queryable<WcsCheckTask>()
+ .First(m => m.Status == "0" && m.LineNo == "8" && m.RoboatType == PLCTypeEnum.RobotPalletizer);
+ if (lineNo8Model != null)
+ {
+ // 鑾峰彇褰撳墠鐗╂枡鍝佺鍙�
+ var skuInfo = await _db.Queryable<WcsMateialPzInfo>().Where(w => w.SkuNo == boxInfo.SkuNo).FirstAsync();
+ if (skuInfo == null)
+ {
+ // 姝や骇鍝佽嫢娌¤瀹氬搧瑙勶紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+ break;
+ }
+ }
+ break;
+ }
+
+
+ // 璇诲彇璁惧楠岃瘉鏄惁缁戝畾鍒嗛亾
+ var (respg, pzNo) = plcConn.GetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos);
+ if (respg.IsSucceed)
+ {
+ if (pzNo != 0)
+ {
+ // plc姝ゅ垎閬撴湭瑙g粦
+ break;
+ }
+ else
+ {
+ // 鑷姩缁戝畾鍒嗛亾
+ lineNo8Model.OrderNo = orderModel.OrderNo;
+ lineNo8Model.LotNo = boxInfo.LotNo;
+ lineNo8Model.SkuNo = boxInfo.SkuNo;
+ lineNo8Model.SkuName = boxInfo.SkuName;
+ lineNo8Model.Qty = 0;
+ lineNo8Model.Status = "1";//宸茬粦瀹�
+ lineNo8Model.PZNo = skuInfo.PZNo;
+ lineNo8Model.FinishQty = 0;
+
+ // 缁橮LC鍐欏叆鍝佽
+ var ret = plcConn.SetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos, skuInfo.PZNo);
+ if (ret.IsSucceed)
+ {
+ //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟
+ _db.Updateable(lineNo8Model).ExecuteCommand();
+ //鏇存柊WcsOderTask琛�
+ orderModel.Status = TaskStatusEnum.Doing;
+ _db.Updateable(orderModel).ExecuteCommand();
+
+ // Liudl 閫氱煡鍓嶇鏇存柊鍒嗘嫞浠诲姟
+ //涓嬪彂鍒嗘嫞浠诲姟
+ HubUtil.PublicCheckTask(lineNo8Model.Adapt<WcsDeviceTaskOrderDto>());
+ break;
+ }
+ else
+ {
+ throw Oops.Bah("涓嶱CL浜や簰澶辫触锛岀粦瀹氬け璐ワ紒");
+ }
+ }
+ }
+ else
+ {
+ // 璇诲彇plc澶辫触
+ break;
+ }
+
+
+ }
+ else
+ {
+ // 娌℃湁绌洪棽閬擄紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+ break;
+ }
+ }
+ break;
+ }
+ }
+ }
+ else
+ {
+ // 涓嶅叧鑱斿崟鎹洿鎺ヨ繘琛屽墧闄ゅ鐞�
+ var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("绠辩爜鏈粦瀹氬垎鎷d换鍔★紝杩涜鍓旈櫎銆�");
+ break;
+ }
}
}
}
@@ -1898,14 +2211,16 @@
var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
if (retVal.IsSucceed)
{
- if (modDevice.DbNumber == "DB102")//1L鎷嗚泛鍒嗘嫞鍚庨渶瑕佸洖浼犵鐮�
- {
- var http = new HttpService();
- IsBaleModel2 ret1 = http.RequestBoxno(boxNoVal);
- if (ret1.Success == -1)
+ { // liudl 姝ゆ绋嬪簭涓嶄細鎵ц 纭鍚庣洿鎺ュ垹闄�
+ if (modDevice.DbNumber == "DB102")//1L鎷嗚泛鍒嗘嫞鍚庨渶瑕佸洖浼犵鐮�
{
- Log.Error("绠辩爜鍒嗘嫞鍥炰紶澶辫触锛岄渶瑕佹墜鍔ㄦ嫞璐с�傚け璐ョ鐮侊細"+boxNoVal);
- break;
+ var http = new HttpService();
+ IsBaleModel2 ret1 = http.RequestBoxno(boxNoVal);
+ if (ret1.Success == -1)
+ {
+ Log.Error("绠辩爜鍒嗘嫞鍥炰紶澶辫触锛岄渶瑕佹墜鍔ㄦ嫞璐с�傚け璐ョ鐮侊細" + boxNoVal);
+ break;
+ }
}
}
break;
@@ -1919,10 +2234,88 @@
default: break;
}
}
- else
+ //涓�妤间富鎵垎閬�
+ else if (modDevice.DbNumber == "DB102")
+ {
+ switch (modDevice.Value.ToString())
+ {
+ case "1":
+ // 1妤间欢绠盤LC璇锋眰WCS璇荤爜
+ {
+ // 璇诲彇plc绠辩爜
+ var modBoxNo = modDevice.listStation.FirstOrDefault(m => m.Text == "涓绘壂鏉$爜");
+ var (res, boxNo) = plcConn.GetPlcDBValue(modBoxNo.PosType, modDevice.DbNumber, modBoxNo.PlcPos);
+ if (string.IsNullOrWhiteSpace(boxNo.ToString()))
+ {
+
+ // 绠变俊鎭负null鍐欏叆鍓旈櫎閫氶亾鍙�:0
+ var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("绠辩爜涓簄ull鎴栧凡缁戝畾鎵樼洏锛岃繘琛屽墧闄ゃ��");
+ break;
+ }
+ }
+ }
+ else
+ {
+ // 绠辩爜
+ string boxNoVal = boxNo.ToString();
+ // 閫氶亾鍙�
+ var modLineNo = modDevice.listStation.FirstOrDefault(m => m.Text == "閫氶亾鍙�");
+
+ // 璋冪敤wms鎺ュ彛楠岃瘉绠辩爜鏄惁鍙嫞璐у苟杩斿洖瑁呰溅鍙�
+ var http = new HttpService();
+ RequestloadingAddre requesModel = http.ResultBoxInfoExportWcs(boxNoVal);
+ if (requesModel.Success != "1")
+ {
+ // 绠变俊鎭负null鍐欏叆鍓旈櫎閫氶亾鍙�:0
+ var ret = plcConn.SetPlcDBValue(modLineNo.PosType, modDevice.DbNumber, modLineNo.PlcPos, "0");
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ Log.Error("鍑哄簱鍒嗘嫞鏍规嵁绠辩爜鑾峰彇瑁呰溅鍙eけ璐ワ紝杩涜鍓旈櫎銆�" + requesModel.Message);
+ break;
+ }
+ }
+ }
+ else
+ {
+ // 鍐欏叆鍑哄簱鍒嗛亾鍙�
+ // var ret = plcConn.SetPlcDBValue(modLineNo.PosType, modDevice.DbNumber, modLineNo.PlcPos, requesModel.loadingAddre);
+ var ret = plcConn.SetPlcDBValue(modLineNo.PosType, modDevice.DbNumber, modLineNo.PlcPos, requesModel.loadingAddre);
+ if (ret.IsSucceed)
+ {
+ // 鍐欏叆娴佺▼鎺у埗瀛� 2
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+ if (retVal.IsSucceed)
+ {
+ break;
+ }
+ }
+ }
+ }
+ }; break;
+ case "10":
+ // 1妤间欢绠盤LC璇荤爜澶辫触锛學CS涓嶅仛澶勭悊鐩存帴鍓旈櫎鎵嬫寔鎷h揣銆�
+ {
+
+ }; break;
+ default:
+ break;
+ }
+ }
+ else
{
// 鎻掔爜浜や簰
- switch (modDevice.Value.ToString())
+ switch (modDevice.Value.ToString())
{
case "1":
// 鎵樼洏鏉$爜鍙
@@ -1932,7 +2325,7 @@
// 璇诲彇PLC鎵樼洏鏉$爜鍙�
var (res, palletVal) = plcConn.GetPlcDBValue(modPalletNo.PosType, modDevice.DbNumber, modPalletNo.PlcPos);
string palletNo = palletVal.ToString();
- if (string.IsNullOrEmpty(palletNo))
+ if (string.IsNullOrEmpty(palletNo))
{
Log.Error(string.Format("{0}锛岃鍙栫殑鎵樼洏鍙蜂负null", modDevice.Text));
break;
@@ -1940,18 +2333,18 @@
// 鏍规嵁宸ヤ綅鍙峰皢鎵樼洏鍙蜂繚瀛樺湪鍒嗛亾琛�
var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
- if (checkTaskMedel == null)
+ if (checkTaskMedel == null)
{
Log.Error(string.Format("鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栧垎閬撳け璐�!", modDevice.StationNum));
break;
}
checkTaskMedel.PalletNo = palletNo;
var rowCount = _db.Updateable(checkTaskMedel).ExecuteCommand();
- if (rowCount > 0 )
+ if (rowCount > 0)
{
// plc鍐欏叆璇诲彇鎴愬姛琛ㄧず 2
var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
- if (retVal.IsSucceed)
+ if (retVal.IsSucceed)
{
// liudl 姝ゅ闇�娣诲姞
// 閫氱煡鍒嗘嫞鐮佸灈椤垫洿鏂�
@@ -1971,24 +2364,24 @@
var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1");
break;
}
- else
+ else
{
// 鑾峰彇绠辨潯鐮�
// 鑾峰彇绠辨潯鐮侀厤缃�
var modBoxNo = modDevice.listStation.FirstOrDefault(m => m.Text == "绠辨潯鐮�");
var (res, boxVal) = plcConn.GetPlcDBValue(modBoxNo.PosType, modDevice.DbNumber, modBoxNo.PlcPos);
string boxNo = boxVal.ToString();
- if (string.IsNullOrEmpty(boxNo))
+ if (string.IsNullOrEmpty(boxNo))
{
- Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��" );
+ Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��");
// 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐�
var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
-
+
break;
}
// 楠岃瘉绠辩爜琛ㄦ槸鍚﹀瓨鍦ㄦ绠辩爜
var boxInfo = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.BoxNo == boxNo).ToList();
- if (boxInfo.Count == 0)
+ if (boxInfo.Count == 0)
{
Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮亄boxNo}涓嶅瓨鍦�!璇蜂汉宸ュ己鍒剁粨鎵广��");
// 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐�
@@ -1996,44 +2389,123 @@
break;
}
// 鑾峰彇褰撳墠鍒嗛亾鎵樼洏鍙�
- var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
+ string port = modDevice.StationNum.ToString();
+ var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == port && m.Status == "1");
if (checkTaskMedel == null)
{
Log.Error(string.Format("鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栧垎閬撳け璐�!", modDevice.StationNum));
break;
}
string palletNo = checkTaskMedel.PalletNo;
- if (string.IsNullOrEmpty(palletNo))
+ if (string.IsNullOrEmpty(palletNo))
{
- Log.Error(string.Format("鑾峰彇鐮佸灈宸ヤ綅{0}涓婄殑鎵樼洏鍙峰け璐ワ紒",modDevice.StationNum));
+ Log.Error(string.Format("鑾峰彇鐮佸灈宸ヤ綅{0}涓婄殑鎵樼洏鍙峰け璐ワ紒", modDevice.StationNum));
break;
}
// 淇敼鎻掔爜琛�
- foreach (WcsBoxInfo item in boxInfo)
+ foreach (WcsBoxInfo item in boxInfo)
{
item.PalletNo = palletNo;
item.UpdateTime = DateTime.Now;
+ item.OrderCode = checkTaskMedel.OrderNo;
}
-
+
+ checkTaskMedel.Qty += boxInfo.First().QtyCount;//璁板綍褰撳墠鎵樼洏涓婄墿鏂欐暟閲�
+ _db.Updateable(checkTaskMedel).ExecuteCommand();
var rowCount = _db.Updateable(boxInfo).ExecuteCommand();
+ Log.Information(string.Format("鎻掔爜鎴愬姛锛岀鐮佹槸锛�" + boxNo, modDevice.StationNum));
if (rowCount > 0)
{
// 鎻掔爜鎴愬姛
var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1");
-
+
//鏄惁缁撴壒绠�
- if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed)
+ //if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed)
+ //{
+ // // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓�
+ // AutoEndLot(boxInfo[0].LotNo, plcConn, "2");
+ //}
+ if (retVal.IsSucceed)
{
- // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓�
- AutoEndLot(boxInfo[0].LotNo, plcConn, "2");
+ //鍒よ鏄惁鎺ユ敹瀹屽伐鏁伴噺
+ var models = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.First().SkuNo && w.LotNo == boxInfo.First().LotNo);
+ if (models.FinishQty>0)
+ {
+ //妫�鏌ュ凡鐮佸灈绠辨暟(涓嶅惈闆剁)锛岀爜鍨涙暟閲忎笌瀹屽伐鏁伴噺鐩哥瓑鍚庤嚜鍔ㄧ粨鎵�:鍐欏叆PLC淇″彿鈥斺�旂粨鎵逛腑
+ int Fqty = (int)models.FinishQty;//瀹屽伐鏁伴噺
+ int Jpqty = 0;//宸茬爜鍨涙暟閲�
+
+ //鑾峰彇宸茬粍鐩樻暟閲�
+ var checkNum = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.OrderCode == checkTaskMedel.OrderNo).ToList();//缁勭洏琛ㄧ鐮佷俊鎭�
+ if (checkNum.Count > 0)
+ {
+ if (!string.IsNullOrEmpty(checkNum.First().BoxNo2) || !string.IsNullOrEmpty(checkNum.First().BoxNo3))//鏈夋敮鐮�
+ {
+ foreach (var item in checkNum)
+ {
+ Jpqty = (int)(Jpqty + item.Qty);
+ }
+ }
+ else//鏃犳敮鐮�
+ {
+ foreach (var item in checkNum)
+ {
+ Jpqty = (int)(Jpqty + item.QtyCount);
+ }
+ }
+ }
+ //鑾峰彇宸叉彃鐮佹暟閲�
+ var checkNum2 = _db.Queryable<WcsBoxInfo>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo &&(m.PalletNo != null || m.PalletNo != "") && m.OrderCode == checkTaskMedel.OrderNo).ToList();//绠辩爜琛ㄥ凡鐮佸灈绠辩爜淇℃伅
+ if (checkNum2.Count > 0)
+ {
+ if (!string.IsNullOrEmpty(checkNum2.First().BoxNo2) || !string.IsNullOrEmpty(checkNum2.First().BoxNo3))//鏈夋敮鐮�
+ {
+ foreach (var item2 in checkNum2)
+ {
+ Jpqty = (int)(Jpqty + item2.Qty);
+ }
+ }
+ else//鏃犳敮鐮�
+ {
+ foreach (var item2 in checkNum2)
+ {
+ Jpqty = (int)(Jpqty + item2.QtyCount);
+ }
+ }
+ }
+ //鑾峰彇闆剁鏁伴噺
+ var checkNum3 = _db.Queryable<WcsBoxInfo>().Where(m => m.BitBoxMark == "1" && m.SkuNo == models.SkuNo && m.LotNo == models.LotNo).ToList();
+ if (checkNum3.Count > 0)
+ {
+ if (!string.IsNullOrEmpty(checkNum3.First().BoxNo2) || !string.IsNullOrEmpty(checkNum3.First().BoxNo3))//鏈夋敮鐮�
+ {
+ foreach (var item3 in checkNum3)
+ {
+ Jpqty = (int)(Jpqty + item3.Qty);
+ }
+ }
+ else//鏃犳敮鐮�
+ {
+ foreach (var item3 in checkNum3)
+ {
+ Jpqty = (int)(Jpqty + item3.QtyCount);
+ }
+ }
+ }
+ if (Jpqty == Fqty)
+ {
+ // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓�
+ AutoEndLot(boxInfo[0].LotNo, plcConn, "2");
+ }
+ }
}
}
- else
+ else
{
// 鎻掔爜澶辫触
Log.Error($"绠辩爜{boxNo};鐮佸灈宸ヤ綅{modDevice.StationNum}锛屾彃鐮佸け璐ワ紝璇峰己鍒剁粨鎵�");
var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
- if (retVal.IsSucceed)
+ if (retVal.IsSucceed)
{
// 瑙﹀彂缁撴壒 涓嶈В缁戝垎閬�
AutoEndLot(boxInfo[0].LotNo, plcConn, "1");
@@ -2044,8 +2516,8 @@
break;
case "40":
// 璇锋眰缁勬墭锛岀敵璇峰叆搴�
- {
- lock (OLock)
+ {
+ lock (OLock)
{
// 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙�
var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
@@ -2058,7 +2530,7 @@
// 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃
var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234");
- if (retVal.IsSucceed)
+ if (retVal.IsSucceed)
{
// 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
@@ -2081,11 +2553,11 @@
Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg));
break;
}
- else
+ else
{
// 鑾峰彇鍏ュ簱浠诲姟淇℃伅
var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing));
- if (taskModel != null)
+ if (taskModel != null)
{
// 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅
string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");
@@ -2140,10 +2612,10 @@
// taskModel.Status = TaskStatusEnum.Doing;
// _db.Updateable(taskModel).ExecuteCommand();
//}
- }
+ }
}
}
- else
+ else
{
// 鏍规嵁鎵樼洏鍙凤紝灏嗙粍鎵樹俊鎭彃鍏oxinfolog琛� 骞跺垹闄oxinfo琛ㄦ暟鎹�
var boxInfoList = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.PalletNo == palletNo).ToList();
@@ -2160,19 +2632,40 @@
}
break;
}
+ //鍒ゆ柇鎵樼洏涓婄殑绠辩爜鏄惁宸茬粍鐩�
+ foreach (var item in boxInfoList)
+ {
+ var groupBoxno = _db.Queryable<WcsBoxInfoLog>().Where(w => w.BoxNo == item.BoxNo).ToList();
+ if (groupBoxno.Count>0)
+ {
+ Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0}锛岀鐮佷俊鎭笉瀛樺湪", modDevice.StationNum));
+ // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃
+ var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234");
+ if (retVal.IsSucceed)
+ {
+ // 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
+ retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
+ }
+ break;
+ }
+ }
+
+ // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛�
string sqlStr = $"insert into WCSBoxInfoLog select * from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'";
int insertCount = _db.Ado.ExecuteCommand(sqlStr);
if (insertCount > 0)
{
- // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛�
- string sqlStr2 = $"delete from WCSBoxInfoLog where IsDelete=0 and PalletNo='{palletNo}'";
+ string sqlStr2 = $"delete from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'";
_db.Ado.ExecuteCommand(sqlStr2);
}
-
+ //缁勭洏鎴愬姛鍚庢竻绌哄垎鎷h〃褰撳墠鎵樼洏涓婄墿鏂欐暟閲�
+ checkTaskMedel.Qty = 0;
+ _db.Updateable(checkTaskMedel).ExecuteCommand();
+
// 鍚慦MS鐢宠宸烽亾
var http = new HttpService();
string TaskNo = "", EndLocate = "";
- string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo,palletNo, checkTaskMedel.BoxCount.ToDecimal(),"0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "","", boxInfoList,
+ string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo, palletNo, checkTaskMedel.Qty.ToDecimal(), "0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "", "", boxInfoList,
modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo);
if (strMsg.Contains("-1"))
{
@@ -2189,6 +2682,17 @@
var ret1 = plcConn.SetPlcDBValue(checkTaskMedel.PosTypeLot, modDevice.DbNumber, checkTaskMedel.PlcPos, "0");
if (ret1.IsSucceed)
{
+ //鏇存柊鍏ュ簱璁㈠崟
+ var orderTask = _db.Queryable<WcsOderTask>().Where(w => w.SkuNo == checkTaskMedel.SkuNo && w.LotNo == checkTaskMedel.LotNo && w.IsDelete == false).ToList();
+ if (orderTask.Count >0)
+ {
+ foreach (var item in orderTask)
+ {
+ item.Status = TaskStatusEnum.Complete;
+ _db.Updateable(item).ExecuteCommand();
+ }
+ }
+
//鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌�
checkTaskMedel.OrderNo = "";
checkTaskMedel.TaskNo = "";
@@ -2199,9 +2703,12 @@
checkTaskMedel.Qty = 0;
checkTaskMedel.PZNo = "";
checkTaskMedel.Status = "0"; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹�
+ checkTaskMedel.FinishQty = 0;
//鏇存柊鍒嗘嫞浠诲姟
_db.Updateable(checkTaskMedel).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+
+
}
}
// 鑾峰彇鍏ュ簱浠诲姟淇℃伅
@@ -2224,7 +2731,7 @@
{
// 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
- if (retVal.IsSucceed)
+ if (retVal.IsSucceed)
{
// 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц
taskModel.Status = TaskStatusEnum.Doing;
@@ -2254,24 +2761,25 @@
}
}
break;
- default:break;
- }
+ default: break;
+ }
}
}
/// <summary>
- /// 鎷嗗灈鏈哄櫒浜轰笟鍔″鐞�
+ /// 鍑哄簱浠剁杈撻�佸拰鎷嗗灈鏈哄櫒浜轰笟鍔″鐞�
/// </summary>
/// <param name="modDevice"></param>
private static void StackingRobot(WcsDeviceDto modDevice)
{
var plcConn = modDevice.PLCUtil;
- if (modDevice.DbNumber == "DB131" && modDevice.DbNumber == "DB132" && modDevice.DbNumber == "DB133" && modDevice.DbNumber == "DB134")
+ if (modDevice.DbNumber == "DB131" || modDevice.DbNumber == "DB132" || modDevice.DbNumber == "DB133" || modDevice.DbNumber == "DB134")
{
switch (modDevice.Value.ToString())
{
case "10"://10 plc璇锋眰wcs璇绘墭鐩樼爜 20 wcs璇诲彇ok wcs 鍐欏叆鏁伴噺鍙婅鏍� 30
- var strMsg = "";
+
+ //wcs璇诲彇ok20
var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "20");
if (ret.IsSucceed)
{
@@ -2286,7 +2794,7 @@
// 鏍规嵁浠诲姟鍙疯幏鍙栦换鍔′俊鎭�
if (res1.IsSucceed)
{
- var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.EndLocate == "009" && m.IsDelete == false);
+ var modTask = _db.Queryable<WcsTask>().First(m => m.TaskNo == tasknoVal && m.EndLocate == "009" && m.IsDelete == false);
if (modTask == null)
{
Log.Error(string.Format($"鍑哄簱浠诲姟鏈笅鍙戯紝璇蜂汉宸ュ鐞嗭紝鏃犳硶鎷嗗灈锛�"));
@@ -2296,45 +2804,42 @@
//閫氳繃浠诲姟鍙峰拰鎵樼洏鍙峰悜WMS鐢宠姝ゆ墭鐩樼殑鎷嗗灈淇℃伅
var http = new HttpService();
RequestBoxInfoCheckAll tasklist = http.RequestBoxCheckinfo(palletVal, tasknoVal);
- if (!tasklist.Success.Contains("-1"))
+ if (tasklist.Success != -1)
{
//鑾峰彇鎷嗗灈鐗╂枡鍝佺(闇�瑕佸鍔犵墿鏂欏垽鏂紝鍚屼竴涓墿鏂欏彿鍙兘浼氬嚭鐜颁笉鍚岀殑鐮佸灈瑙勫垯)
- var pz = _db.Queryable<WcsMateialPzInfo>().First(m => m.SkuNo == tasklist.list[0].SkuNo);
+ var pz = _db.Queryable<WcsMateialPzInfo>().First(m => m.SkuNo == tasklist.data.SkuNo);
//涓嬪彂鎷嗘墭瑙勬牸锛屾媶绠辨暟鍜屾墭鐩樹笂鎬荤鏁帮紙涓嶇粦瀹氭満鍣ㄤ汉锛屾媶鍨涗换鍔′俊鎭彧涓嬪彂涓�娆★級
// 缁橮LC鍐欏叆浠诲姟鏁版嵁
var listResult = new List<Result>();
// 鑾峰彇鎵樼洏瑙勫垯
var Standard = modDevice.listStation.FirstOrDefault(m => m.Text == "瑙勬牸");
- listResult.Add(plcConn.SetPlcDBValue(Standard.PosType, modDevice.DbNumber, Standard.PlcPos, tasklist.list[0].Standard));
+ listResult.Add(plcConn.SetPlcDBValue(Standard.PosType, modDevice.DbNumber, Standard.PlcPos, pz.PZNo));
//鎶撶鏁�
var qty = modDevice.listStation.FirstOrDefault(m => m.Text == "鎷嗙鏁伴噺");
- listResult.Add(plcConn.SetPlcDBValue(qty.PosType, modDevice.DbNumber, qty.PlcPos, tasklist.list[0].Qty.ToString()));
+ listResult.Add(plcConn.SetPlcDBValue(qty.PosType, modDevice.DbNumber, qty.PlcPos, tasklist.data.Qty.ToString()));
//鎬荤鏁�
var qtycount = modDevice.listStation.FirstOrDefault(m => m.Text == "鎬荤鏁�");
- listResult.Add(plcConn.SetPlcDBValue(qtycount.PosType, modDevice.DbNumber, qtycount.PlcPos, tasklist.list[0].QtyCount.ToString()));
+ listResult.Add(plcConn.SetPlcDBValue(qtycount.PosType, modDevice.DbNumber, qtycount.PlcPos, tasklist.data.QtyCount.ToString()));
// 鏄惁鍐欏叆鎴愬姛
if (listResult.All(s => s.IsSucceed))
{
- var ret1 = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "20");
+ //wcs 鍐欏叆鏁伴噺鍙婅鏍� 30
+ var ret1 = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "30");
}
else
{
- Log.Error(string.Format($"鐮佸灈淇℃伅鏈啓鍏ワ紒鎵樼洏鍙凤細"+palletVal+"锛岀爜鍨涗綅锛�"+modDevice.StationNum));
+ Log.Error(string.Format($"鐮佸灈淇℃伅鏈啓鍏ワ紒鎵樼洏鍙凤細" + palletVal + "锛岀爜鍨涗綅锛�" + modDevice.StationNum));
break;
}
}
}
}
-
- break;
- default:
- break;
+ break;
}
- }
-
+ }
}
/// <summary>
--
Gitblit v1.8.0