From 54728bfad5a2b222ff26e4f6be26bd239b3c5720 Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期三, 25 九月 2024 18:54:46 +0800 Subject: [PATCH] Merge branch 'master' into wxw --- Admin.NET/WCS.Application/PLC/PLCService.cs | 377 +++++++++++++++++++++++++++++++++-------- Admin.NET/WCS.Application/PLC/PLCTaskAction.cs | 2 Admin.NET/WCS.Application/Entity/WcsBoxInfoLog.cs | 125 +++++++++++++ 3 files changed, 429 insertions(+), 75 deletions(-) diff --git a/Admin.NET/WCS.Application/Entity/WcsBoxInfoLog.cs b/Admin.NET/WCS.Application/Entity/WcsBoxInfoLog.cs new file mode 100644 index 0000000..5d46e23 --- /dev/null +++ b/Admin.NET/WCS.Application/Entity/WcsBoxInfoLog.cs @@ -0,0 +1,125 @@ +锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆� +// +// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆� +// +// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛� + +using Admin.NET.Core; +namespace WCS.Application.Entity; + +/// <summary> +/// 鎻掔爜鏄庣粏琛� +/// </summary> +[SugarTable("WCSBoxInfoLog","鎻掔爜鏄庣粏琛�")] +[Tenant("1300000000001")] +public class WcsBoxInfoLog : EntityBaseData +{ + /// <summary> + /// 鎵樼洏鍙� + /// </summary> + [SugarColumn(ColumnName = "PalletNo", ColumnDescription = "鎵樼洏鍙�", Length = 20)] + public string? PalletNo { get; set; } + + /// <summary> + /// 鐗╂枡缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "SkuNo", ColumnDescription = "鐗╂枡缂栫爜", Length = 20)] + public string? SkuNo { get; set; } + + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + [SugarColumn(ColumnName = "SkuName", ColumnDescription = "鐗╂枡鍚嶇О", Length = 20)] + public string? SkuName { get; set; } + + /// <summary> + /// 鎵规鍙� + /// </summary> + [SugarColumn(ColumnName = "LotNo", ColumnDescription = "鎵规鍙�", Length = 20)] + public string? LotNo { get; set; } + + /// <summary> + /// 鎵规鎻忚堪 + /// </summary> + [SugarColumn(ColumnName = "LotText", ColumnDescription = "鎵规鎻忚堪", Length = 50)] + public string? LotText { get; set; } + + /// <summary> + /// 渚涘簲鍟嗕唬鐮� + /// </summary> + [SugarColumn(ColumnName = "Custom", ColumnDescription = "渚涘簲鍟嗕唬鐮�", Length = 20)] + public string? Custom { get; set; } + + /// <summary> + /// 渚涘簲鍟嗗悕绉� + /// </summary> + [SugarColumn(ColumnName = "CustomName", ColumnDescription = "渚涘簲鍟嗗悕绉�", Length = 50)] + public string? CustomName { get; set; } + + /// <summary> + /// 鐢熶骇鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "ProductionTime", ColumnDescription = "鐢熶骇鏃ユ湡")] + public DateTime? ProductionTime { get; set; } + + /// <summary> + /// 杩囨湡鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "ExpirationTime", ColumnDescription = "杩囨湡鏃ユ湡")] + public DateTime? ExpirationTime { get; set; } + + /// <summary> + /// 浜х嚎 + /// </summary> + [SugarColumn(ColumnName = "LineNo", ColumnDescription = "浜х嚎", Length = 20)] + public string? LineNo { get; set; } + + /// <summary> + /// 鐗╂枡瑙勬牸 + /// </summary> + [SugarColumn(ColumnName = "Standard", ColumnDescription = "鐗╂枡瑙勬牸", Length = 20)] + public string? Standard { get; set; } + + /// <summary> + /// 鍖呰瑙勬牸 + /// </summary> + [SugarColumn(ColumnName = "PackageStandard", ColumnDescription = "鍖呰瑙勬牸", Length = 20)] + public string? PackageStandard { get; set; } + + /// <summary> + /// 鍖呰鍗曚綅 + /// </summary> + [SugarColumn(ColumnName = "PackUnit", ColumnDescription = "鍖呰鍗曚綅", Length = 20)] + public string? PackUnit { get; set; } + + /// <summary> + /// 瀛樺偍鏈熻嚦 + /// </summary> + [SugarColumn(ColumnName = "StoreTime", ColumnDescription = "瀛樺偍鏈熻嚦")] + public DateTime? StoreTime { get; set; } + + /// <summary> + /// 闆剁鏍囪 + /// </summary> + [SugarColumn(ColumnName = "BitBoxMark", ColumnDescription = "闆剁鏍囪", Length = 3)] + public string? BitBoxMark { get; set; } + + /// <summary> + /// 绠辩爜 + /// </summary> + [SugarColumn(ColumnName = "BoxNo", ColumnDescription = "绠辩爜", Length = 30)] + public string? BoxNo { get; set; } + + /// <summary> + /// 鐩掔爜 + /// </summary> + [SugarColumn(ColumnName = "BoxNo2", ColumnDescription = "鐩掔爜", Length = 30)] + public string? BoxNo2 { get; set; } + + /// <summary> + /// 鍖呰绾у埆 + /// </summary> + [SugarColumn(ColumnName = "Level", ColumnDescription = "鍖呰绾у埆", Length = 3)] + public string? Level { get; set; } + +} diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index 74c5438..a9e5568 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -1,4 +1,5 @@ 锘� +using Dm.filter; using DocumentFormat.OpenXml.Bibliography; using Elastic.Clients.Elasticsearch.Tasks; using Furion.Logging; @@ -35,8 +36,8 @@ case PLCTypeEnum.AGV: AGV(mod); // AGV璋冨害 break; - case PLCTypeEnum.RobotPalletizer: - RobotPalletizer(mod); // 鐮佸灈鏈哄櫒浜� + case PLCTypeEnum.BoxConveyorLine: + BoxConveyorLine(mod); // 鐮佸灈鏈哄櫒浜� break; case PLCTypeEnum.StackingRobot: PalletMachine(mod); @@ -1387,58 +1388,51 @@ } /// <summary> - /// 鐮佸灈鏈哄櫒浜轰笟鍔″鐞� + /// 浠剁杈撻�佸拰鐮佸灈鏈哄櫒浜轰笟鍔″鐞� 閰嶇疆鐨勬槸浠剁杈撻�� /// </summary> /// <param name="modDevice"></param> - private static void RobotPalletizer(WcsDeviceDto modDevice) + private static async void BoxConveyorLine(WcsDeviceDto modDevice) { var plcConn = modDevice.PLCUtil; - switch (modDevice.Value.ToString()) + + if (modDevice.DbNumber == "DB101") { - case "1": - // 涓绘壂鐢宠鍒嗛亾 wcs鍐欏叆2 - { - - var taskModel = ""; - // 鍒ゆ柇鏄惁婕旂ず妯″紡 - if (PLCTaskAction.boDemo) + // 涓绘壂浜や簰娴佺▼ + switch (modDevice.Value.ToString()) + { + case "1": + // 涓绘壂鐢宠鍒嗛亾 wcs鍐欏叆2 { - // 婕旂ず妯″紡 - taskModel = "1"; - - // 鐩存帴 - } - else - { - // 閫氶亾鍙� - var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "閫氶亾鍙�"); - - // 璇诲彇plc绠辩爜 - var modBoxNo = modDevice.listStation.FirstOrDefault(m => m.Text == "绠辩爜"); - var (res, boxNo) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modBoxNo.PlcPos); - if (string.IsNullOrWhiteSpace(boxNo.ToString())) + // 鍒ゆ柇鏄惁婕旂ず妯″紡 true锛氭紨绀烘ā寮� false:鐢熶骇妯″紡 + if (PLCTaskAction.boDemo) { - // 绠辩爜涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙� - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); + // 閫氶亾鍙� + var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "閫氶亾鍙�"); + + // 婕旂ず妯″紡鐩存帴鍐欏叆1鍒嗛亾 + var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "1"); if (ret.IsSucceed) { // 鍐欏叆娴佺▼鎺у埗瀛� 2 var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); if (retVal.IsSucceed) { - Log.Error("绠辩爜涓簄ull杩涜鍓旈櫎"); + Log.Error("婕旂ず妯″紡鍐欏叆鍒嗛亾鍙峰け璐�!"); break; } } } - else + else { - // 鏍规嵁绠辩爜鑾峰彇绠卞唴淇℃伅 - string boxNoVal = boxNo.ToString(); - var boxInfo = _db.Queryable<WcsBoxInfo>().First(w => w.IsDelete == false && w.BoxNo == boxNoVal && string.IsNullOrEmpty(w.PalletNo)); - if (boxInfo == null) + // 閫氶亾鍙� + var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "閫氶亾鍙�"); + + // 璇诲彇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鍐欏叆鍓旈櫎閫氶亾鍙� + // 绠辩爜涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙� var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); if (ret.IsSucceed) { @@ -1446,59 +1440,294 @@ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); if (retVal.IsSucceed) { - Log.Error("绠辩爜涓簄ull鎴栧凡缁戝畾鎵樼洏锛岃繘琛屽墧闄ゃ��"); - break; - } - } - } - // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿 - var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo); - if (checkTaskInfo == null) - { - // 缁戝畾淇℃伅涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙� - 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换鍔★紝杩涜鍓旈櫎銆�"); + Log.Error("绠辩爜涓簄ull杩涜鍓旈櫎"); break; } } } else { - // 涓巔lc浜や簰鍐欏叆鍒嗛亾鍙峰拰娴佺▼鎺у埗瀛� - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, checkTaskInfo.RoboatNo); - if (ret.IsSucceed) + // 鏍规嵁绠辩爜鑾峰彇绠卞唴淇℃伅 + string boxNoVal = boxNo.ToString(); + var boxInfo = _db.Queryable<WcsBoxInfo>().First(w => w.IsDelete == false && w.BoxNo == boxNoVal && string.IsNullOrEmpty(w.PalletNo)); + if (boxInfo == null) { - // 鍐欏叆娴佺▼鎺у埗瀛� 2 - var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); - if (retVal.IsSucceed) + // 绠变俊鎭负null鍐欏叆鍓旈櫎閫氶亾鍙� + var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0"); + if (ret.IsSucceed) { - break; + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + Log.Error("绠辩爜涓簄ull鎴栧凡缁戝畾鎵樼洏锛岃繘琛屽墧闄ゃ��"); + break; + } } } - } + // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿 + var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo); + if (checkTaskInfo == null) + { + // 缁戝畾淇℃伅涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙� + 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; + } + } + } + else + { + // 涓巔lc浜や簰鍐欏叆鍒嗛亾鍙峰拰娴佺▼鎺у埗瀛� + var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, checkTaskInfo.RoboatNo); + if (ret.IsSucceed) + { + // 鍐欏叆娴佺▼鎺у埗瀛� 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + break; + } + } + } + } } } - } - break; - case "230": - // 娉ㄩ噴2 - { + break; + default: break; + } + } + else + { + // 鎻掔爜浜や簰 + switch (modDevice.Value.ToString()) + { + case "1": + // 鎵樼洏鏉$爜鍙 + { + // 鑾峰彇鎵樼洏鏉$爜閰嶇疆 + var modPalletNo = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鏉$爜"); + // 璇诲彇PLC鎵樼洏鏉$爜鍙� + var (res, palletVal) = plcConn.GetPlcDBValue(modPalletNo.PosType, modDevice.DbNumber, modPalletNo.PlcPos); + string palletNo = palletVal.ToString(); + if (string.IsNullOrEmpty(palletNo)) + { + Log.Error(string.Format("{0}锛岃鍙栫殑鎵樼洏鍙蜂负null", modDevice.Text)); + break; + } - } - break; - case "240": - { + // 鏍规嵁宸ヤ綅鍙峰皢鎵樼洏鍙蜂繚瀛樺湪鍒嗛亾琛� + var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); + if (checkTaskMedel == null) + { + Log.Error(string.Format("鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栧垎閬撳け璐�!", modDevice.StationNum)); + break; + } + checkTaskMedel.PalletNo = palletNo; + var rowCount = _db.Updateable(checkTaskMedel).ExecuteCommand(); + if (rowCount > 0 ) + { + // plc鍐欏叆璇诲彇鎴愬姛琛ㄧず 2 + var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2"); + if (retVal.IsSucceed) + { + // liudl 姝ゅ闇�娣诲姞 + // 閫氱煡鍒嗘嫞鐮佸灈椤垫洿鏂� + } + } + } + break; + case "20": + // 鐢宠鎻掔爜 + { + // 鑾峰彇鎵樼洏鏉$爜閰嶇疆 + var modAddCode = modDevice.listStation.FirstOrDefault(m => m.Text == "鎻掔爜缁撴灉"); + // 鍒ゆ柇鏄惁婕旂ず妯″紡 true锛氭紨绀烘ā寮� false:鐢熶骇妯″紡 + if (PLCTaskAction.boDemo) + { + // 婕旂ず妯″紡鐩存帴鍐欏叆鎻掔爜缁撴灉 1锛氭垚鍔� + var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1"); + break; + } + 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)) + { + Log.Error(string.Format("鐮佸灈宸ヤ綅{0}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��"), modDevice.StationNum); + // 鍐欏叆鎻掑叆缁撴灉 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) + { + Log.Error(string.Format("鐮佸灈宸ヤ綅{0}锛岀鐮亄1}涓嶅瓨鍦�!璇蜂汉宸ュ己鍒剁粨鎵广��"), modDevice.StationNum,boxNo); + // 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐� + var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2"); + break; + } + // 鑾峰彇褰撳墠鍒嗛亾鎵樼洏鍙� + var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); + if (checkTaskMedel == null) + { + Log.Error(string.Format("鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栧垎閬撳け璐�!", modDevice.StationNum)); + break; + } + string palletNo = checkTaskMedel.PalletNo; + if (string.IsNullOrEmpty(palletNo)) + { + Log.Error(string.Format("鑾峰彇鐮佸灈宸ヤ綅{0}涓婄殑鎵樼洏鍙峰け璐ワ紒",modDevice.StationNum)); + break; + } + // 淇敼鎻掔爜琛� + boxInfo.PalletNo = palletNo; + boxInfo.UpdateTime = DateTime.Now; + var rowCount = _db.Updateable(boxInfo).ExecuteCommand(); + if (rowCount > 0) + { + // 鎻掔爜鎴愬姛 + var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1"); + } + else + { + // 鎻掔爜澶辫触 + Log.Error(string.Format("绠辩爜{0};鐮佸灈宸ヤ綅{1}锛屾彃鐮佸け璐ワ紝璇峰己鍒剁粨鎵�"),boxNo,modDevice.StationNum); + var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2"); + } + } + } + break; + case "40": + // 璇锋眰缁勬墭锛岀敵璇峰叆搴� + { + // 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙� + var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); + // 鏍规嵁宸ヤ綅鍙疯幏鍙栨墭鐩樼嚎璇ュ伐浣嶅彿鐨勯厤缃俊鎭� + var numModel = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business); + var posModel = PLCTaskAction.plcPositions.First(m => m.DeviceId == numModel.Id && m.Text == "鐩爣宸ヤ綅" && m.IsDelete == false); + if (checkTaskMedel == null) + { + Log.Error(string.Format("缁勬墭澶辫触鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栨墭鐩樺彿澶辫触!", modDevice.StationNum)); - } - break; - default: break; - } + // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃 + 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; + } + + // 鐮佸灈宸ヤ綅鎵樼洏鍙� + string palletNo = checkTaskMedel.PalletNo; + + if (PLCTaskAction.boDemo) + { + // 鐩存帴绠眞ms鐢宠宸烽亾 + var http = new HttpService(); + string TaskNo = "", EndLocate = ""; + string strMsg = http.RequestRoadWay(palletNo, modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo); + if (!strMsg.Contains("-1")) + { + Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg)); + break; + } + else + { + // 鑾峰彇鍏ュ簱浠诲姟淇℃伅 + var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait); + if (taskModel != null) + { + // 鍐欏叆鐮佸灈宸ヤ綅鐩爣宸ヤ綅锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱 + string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2"); // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅 + + var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue); + if (retVal.IsSucceed) + { + // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� + retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); + + // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц + taskModel.Status = TaskStatusEnum.Doing; + _db.Updateable(taskModel).ExecuteCommand(); + } + } + } + } + else + { + // 鏍规嵁鎵樼洏鍙凤紝灏嗙粍鎵樹俊鎭彃鍏oxinfolog琛� 骞跺垹闄oxinfo琛ㄦ暟鎹� + var boxInfoList = await _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.PalletNo == palletNo).ToListAsync(); + if (boxInfoList.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; + } + string sqlStr = $"insert into WCSBoxInfoLog select * from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'"; + int insertCount = _db.Ado.ExecuteCommand(sqlStr); + if (insertCount > 0) + { + string sqlStr2 = $"delete from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'"; + _db.Ado.ExecuteCommand(sqlStr2); + } + // 鍚慦MS鐢宠宸烽亾 + var http = new HttpService(); + string TaskNo = "", EndLocate = ""; + string strMsg = http.RequestRoadWay(palletNo, modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo); + if (!strMsg.Contains("-1")) + { + Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg)); + break; + } + else + { + // 鑾峰彇鍏ュ簱浠诲姟淇℃伅 + var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait); + if (taskModel != null) + { + // 鍐欏叆鐮佸灈宸ヤ綅鐩爣宸ヤ綅锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱 + string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2"); // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅 + var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue); + if (retVal.IsSucceed) + { + // 鍐欏叆缁勬墭鍥炲娴佺▼瀛� + retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50"); + if (retVal.IsSucceed) + { + // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц + taskModel.Status = TaskStatusEnum.Doing; + _db.Updateable(taskModel).ExecuteCommand(); + } + } + } + } + } + } + break; + default:break; + } + } } /// <summary> diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs index 59066e6..709db5d 100644 --- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs +++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs @@ -153,7 +153,7 @@ { //Console.WriteLine($"{modPlc.IP}璇诲彇{modDevice.DbNumber}.{modDevice.PlcPos}鐨勫�间负锛歿value}"); //鏃犳祦绋嬭烦鍑� - if (value == 0) + if (value == 0 && modPlc.Type != PLCTypeEnum.BoxConveyorLine) continue; var dto = modDevice.Adapt<WcsDeviceDto>(); dto.Value = value; -- Gitblit v1.8.0