From 41ca2b65f055b9c7b8f3ce68418423bac15c8e46 Mon Sep 17 00:00:00 2001 From: hwh <332078369@qq.com> Date: 星期二, 27 八月 2024 17:00:45 +0800 Subject: [PATCH] plc基础信息优化;堆垛机出库逻辑 --- Admin.NET/WCS.Application/Entity/WcsPosition.cs | 19 Admin.NET/WCS.Application/Service/WcsPosition/WcsPositionService.cs | 150 +++++ Admin.NET/WCS.Application/Util/HttpService.cs | 26 + Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceOutput.cs | 50 Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs | 330 +++++++----- Web/src/api/wcs/wcsPosition.ts | 56 ++ Admin.NET/WCS.Application/PLC/PLCService.cs | 500 ++++++++++++++---- Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionInput.cs | 171 ++++++ /dev/null | 56 -- Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs | 2 Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionOutput.cs | 2 Web/src/views/wcs/wcsPosition/component/editDialog.vue | 19 Admin.NET/WCS.Application/Entity/WcsDevice.cs | 30 Admin.NET/WCS.Application/PLC/PLCTaskAction.cs | 15 Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceDto.cs | 2 Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionDto.cs | 2 Admin.NET/WCS.Application/Model/TaskRequest.cs | 18 Web/src/views/wcs/wcsPosition/index.vue | 63 +- 18 files changed, 1,099 insertions(+), 412 deletions(-) diff --git a/Admin.NET/WCS.Application/Entity/WcsDevice.cs b/Admin.NET/WCS.Application/Entity/WcsDevice.cs index beca712..4f521c7 100644 --- a/Admin.NET/WCS.Application/Entity/WcsDevice.cs +++ b/Admin.NET/WCS.Application/Entity/WcsDevice.cs @@ -13,42 +13,48 @@ [Required] [SugarColumn(ColumnName = "PlcId", ColumnDescription = "PlcId")] public long PlcId { get; set; } - + /// <summary> /// 璁惧绾у埆 /// </summary> + [Required] [SugarColumn(ColumnName = "Level", ColumnDescription = "璁惧绾у埆")] - public DeviceLevelEnum? Level { get; set; } - + public DeviceLevelEnum Level { get; set; } + /// <summary> /// DB鍖哄煙 /// </summary> + [Required] [SugarColumn(ColumnName = "DbNumber", ColumnDescription = "DB鍖哄煙", Length = 10)] - public string? DbNumber { get; set; } - + public string DbNumber { get; set; } + /// <summary> /// 宸ヤ綅鍙� /// </summary> + [Required] [SugarColumn(ColumnName = "StationNum", ColumnDescription = "宸ヤ綅鍙�", Length = 4)] - public string? StationNum { get; set; } - + public string StationNum { get; set; } + /// <summary> /// PLC鍋忕Щ閲� /// </summary> + [Required] [SugarColumn(ColumnName = "PlcPos", ColumnDescription = "PLC鍋忕Щ閲�", Length = 10)] - public string? PlcPos { get; set; } - + public string PlcPos { get; set; } + /// <summary> /// WCS鍋忕Щ閲� /// </summary> + [Required] [SugarColumn(ColumnName = "WcsPos", ColumnDescription = "WCS鍋忕Щ閲�", Length = 10)] - public string? WcsPos { get; set; } - + public string WcsPos { get; set; } + /// <summary> /// 娴佺▼瀛楃被鍨� /// </summary> + [Required] [SugarColumn(ColumnName = "PosType", ColumnDescription = "娴佺▼瀛楃被鍨�")] - public PLCDataTypeEnum? PosType { get; set; } + public PLCDataTypeEnum PosType { get; set; } /// <summary> /// 鏄剧ず灞廼p鍦板潃 diff --git a/Admin.NET/WCS.Application/Entity/WcsStation.cs b/Admin.NET/WCS.Application/Entity/WcsPosition.cs similarity index 79% rename from Admin.NET/WCS.Application/Entity/WcsStation.cs rename to Admin.NET/WCS.Application/Entity/WcsPosition.cs index 565ef8b..e481678 100644 --- a/Admin.NET/WCS.Application/Entity/WcsStation.cs +++ b/Admin.NET/WCS.Application/Entity/WcsPosition.cs @@ -4,8 +4,8 @@ /// <summary> /// 宸ヤ綅瀵瑰簲鐨勬祦绋嬪瓧琛� /// </summary> -[SugarTable("WCSPLCStation","宸ヤ綅瀵瑰簲鐨勬祦绋嬪瓧琛�")] -public class WcsStation : EntityBaseData +[SugarTable("WCSPLCPosition", "宸ヤ綅瀵瑰簲鐨勬祦绋嬪瓧琛�")] +public class WcsPosition : EntityBaseData { /// <summary> /// 璁惧ID @@ -13,24 +13,27 @@ [Required] [SugarColumn(ColumnName = "DeviceId", ColumnDescription = "璁惧ID")] public long DeviceId { get; set; } - + /// <summary> /// 宸ヤ綅鍙� /// </summary> + [Required] [SugarColumn(ColumnName = "StationNum", ColumnDescription = "宸ヤ綅鍙�", Length = 4)] - public string? StationNum { get; set; } - + public string StationNum { get; set; } + /// <summary> /// 鍋忕Щ閲� /// </summary> + [Required] [SugarColumn(ColumnName = "PlcPos", ColumnDescription = "鍋忕Щ閲�", Length = 32)] - public string? PlcPos { get; set; } - + public string PlcPos { get; set; } + /// <summary> /// 娴佺▼瀛楃被鍨� /// </summary> + [Required] [SugarColumn(ColumnName = "PosType", ColumnDescription = "娴佺▼瀛楃被鍨�")] - public PLCDataTypeEnum? PosType { get; set; } + public PLCDataTypeEnum PosType { get; set; } /// <summary> /// 鏄剧ず灞廼p鍦板潃 diff --git a/Admin.NET/WCS.Application/Model/TaskRequest.cs b/Admin.NET/WCS.Application/Model/TaskRequest.cs new file mode 100644 index 0000000..04fcceb --- /dev/null +++ b/Admin.NET/WCS.Application/Model/TaskRequest.cs @@ -0,0 +1,18 @@ +锘� +namespace WCS.Application; +public class TaskRequest +{ + public string TaskNo { get; set; } // 浠诲姟鍙� + public string PalletNo { get; set; } // 鎵樼洏鍙� + public string TaskType { get; set; } // 浠诲姟绫诲瀷 + public TaskStatusEnum TaskStatus { get; set; } // 浠诲姟鐘舵�� 0 绛夊緟鎵ц 1 姝e湪鎵ц 2 鎵ц瀹屾垚 3 寮傚父缁撴潫 4 浠诲姟鍙栨秷 +} +public class ResponseTasks +{ + public string StatusCode { get; set; } + public string Success { get; set; } + + public string Message { get; set; } + + public WcsTask TaskList { get; set; } +} diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index b8210fa..cf5a94c 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -1,8 +1,6 @@ -锘縰sing Flurl.Util; -using Furion.DatabaseAccessor; +锘� using Furion.Logging; using IoTClient; -using StackExchange.Redis; using System.Data; namespace WCS.Application; @@ -49,64 +47,384 @@ switch (modDevice.ToString()) { case "820": - var modTask = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Wait && s.TaskType == TaskTypeEnum.Out && s.StartRoadway == modDevice.StationNum); - if (modTask == null) { - break; - } - var modTaskMonitor = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - StartLocat = modTask.StartLocate, - EndLocat = modTask.EndLocate, - PalletNo = modTask.PalletNo, - }; - // 鏍规嵁璺烘満鍙风‘璁ゆ斁璐у伐浣� - string outStationNum = "0"; - string endRow = "", endColumn = "", endStorey = ""; - switch (modDevice.StationNum) - { - case "R01": - outStationNum = "11"; - endRow = "1"; - endColumn = "100"; - endStorey = "1"; - break; - case "R02": - outStationNum = "7"; - endRow = "1"; - endColumn = "100"; - endStorey = "1"; - break; - default: break; - } - var modD = modDevice.listDevice.FirstOrDefault(); - if (modD == null) - { - Log.Error($"IP{modDevice.PlcId}.璁惧id锛歿modDevice.Id}缂哄皯宸ヤ綅绾у埆璁惧淇℃伅"); - break; - } - var (result, value) = plcConn.GetPlcDBValue(modD.PosType.Value, modD.DbNumber, modD.PlcPos); - if (result.IsSucceed) - { - if (value == 120)// 鏀捐揣宸ヤ綅绌洪棽 鍙斁璐� + var modTask = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Wait && s.TaskType == TaskTypeEnum.Out && s.StartRoadway == modDevice.StationNum); + if (modTask == null) { - if (int.Parse(outStationNum) > 0) + break; + } + var modTaskMonitor = new WcsTaskMonitor() + { + TaskNo = modTask.TaskNo, + StartLocat = modTask.StartLocate, + EndLocat = modTask.EndLocate, + PalletNo = modTask.PalletNo, + }; + // 鏍规嵁璺烘満鍙风‘璁ゆ斁璐у伐浣� + string outStationNum = "0"; + string endRow = "", endColumn = "", endStorey = ""; + switch (modDevice.StationNum) + { + case "R01": + outStationNum = "11"; + endRow = "1"; + endColumn = "100"; + endStorey = "1"; + break; + case "R02": + outStationNum = "7"; + endRow = "1"; + endColumn = "100"; + endStorey = "1"; + break; + default: break; + } + var modD = modDevice.listDevice.FirstOrDefault(); + if (modD == null) + { + Log.Error($"IP{modDevice.PlcId}.璁惧id锛歿modDevice.Id}缂哄皯宸ヤ綅绾у埆璁惧淇℃伅"); + break; + } + var (result, value) = plcConn.GetPlcDBValue(modD.PosType, modD.DbNumber, modD.PlcPos); + if (result.IsSucceed) + { + if (value == 120)// 鏀捐揣宸ヤ綅绌洪棽 鍙斁璐� { - var row = int.Parse(modTaskMonitor.StartLocat.Substring(0, 2)).ToString(); - var column = int.Parse(modTaskMonitor.StartLocat.Substring(2, 2)).ToString(); - var layer = int.Parse(modTaskMonitor.StartLocat.Substring(4, 2)).ToString(); - var deep = int.Parse(modTaskMonitor.StartLocat.Substring(6, 2)).ToString(); - if (int.Parse(row) > 2) //澶т簬4 + if (int.Parse(outStationNum) > 0) { - row = (int.Parse(row) - 2).ToString(); - } - else - { - // 璧峰鍌ㄤ綅鍦板潃涓虹┖锛岃烦杩� 鍐欏叆浠诲姟鏄庣粏琛� - modTaskMonitor.StartLocat = ""; - modTaskMonitor.InteractiveMsg = "璧峰鍌ㄤ綅涓虹┖!"; + var row = int.Parse(modTaskMonitor.StartLocat.Substring(0, 2)).ToString(); + var column = int.Parse(modTaskMonitor.StartLocat.Substring(2, 2)).ToString(); + var layer = int.Parse(modTaskMonitor.StartLocat.Substring(4, 2)).ToString(); + var deep = int.Parse(modTaskMonitor.StartLocat.Substring(6, 2)).ToString(); + if (int.Parse(row) > 2) //澶т簬4 + { + row = (int.Parse(row) - 2).ToString(); + } + else + { + // 璧峰鍌ㄤ綅鍦板潃涓虹┖锛岃烦杩� 鍐欏叆浠诲姟鏄庣粏琛� + modTaskMonitor.StartLocat = ""; + modTaskMonitor.InteractiveMsg = "璧峰鍌ㄤ綅涓虹┖!"; + _db.Insertable(modTaskMonitor).ExecuteCommand(); + + // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� + //if (TaskAction.refresh) + //{ + // wSChat.AlarmInformation("1"); + //} + break; + } + //缁橮LC鍐欏叆浠诲姟鏁版嵁 + var listResult = new List<Result>(); + //浠诲姟鍙� + var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "TaskNo"); + listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTaskMonitor.TaskNo)); + //鎵樼洏鍙� + var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "PalletNo"); + listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTaskMonitor.PalletNo)); + //璧峰鎺� + var modPosRow = modDevice.listStation.FirstOrDefault(s => s.Text == "StartRow"); + listResult.Add(plcConn.SetPlcDBValue(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, row)); + // 璧峰鍒� + var modPosColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "StartColumn"); + listResult.Add(plcConn.SetPlcDBValue(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, column)); + // 璧峰灞� + var modPosStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "StartLayer"); + listResult.Add(plcConn.SetPlcDBValue(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, layer)); + + // 鐩爣鏀捐揣宸ヤ綅 + var modPosEndRow = modDevice.listStation.FirstOrDefault(s => s.Text == "EndRow"); + listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, endRow)); + var modPosEndColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "EndColumn"); + listResult.Add(plcConn.SetPlcDBValue(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, endColumn)); + var modPosEndStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "EndLayer"); + listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, endColumn)); + //鍏ㄩ儴鍐欏叆鎴愬姛 + if (listResult.All(s => s.IsSucceed)) + { + // 鍐欏叆璺烘満浠诲姟涓嬪彂瀹屾垚 + plcConn.SetPlcDBValue(modDevice.PosType.Value, modDevice.DbNumber, modDevice.WcsPos, "10"); + + // 灏嗗嚭搴撲换鍔″緟鎵ц鏀逛负姝e湪鎵ц + _db.Updateable<WcsTask>() + .SetColumns(s => s.FinishDate == DateTime.Now) + .SetColumns(s => s.Status == TaskStatusEnum.Doing) + .SetColumns(s => s.Levels == 2) + .Where(s => s.Id == modTask.Id) + .ExecuteCommand(); + var modInsertTaskMonitor = new WcsTaskMonitor() + { + TaskNo = modTask.TaskNo, + PlcId = modDevice.Id, + PlcName = modDevice.Text, + InteractiveMsg = $"鍐欏叆鎸囦护锛歿modTask.StartLocate}鍌ㄤ綅====銆媨outStationNum}宸ヤ綅", + PalletNo = modTask.PalletNo, + Status = TaskStatusEnum.Complete, + StartLocat = modTask.StartLocate, + EndLocat = outStationNum, + }; + _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); + // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� + //if (TaskAction.refresh) + //{ + // wSChat.AlarmInformation("1"); + //} + //淇敼led灞忎俊鎭� + //LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.EndLocate, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿modTask.StartLocate}", "鎵樼洏鍙�:" + modTask.PalletNo); + } + } + } + } + else + { + Log.Error(string.Join(',', result.ErrList)); + } + } + break; + case "20": + { + var modPosPlcTask = modDevice.listStation.FirstOrDefault(s => s.Text == "PlcTaskNo"); + var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "TaskNo"); + var (result, TaskNo) = plcConn.GetPlcDBValue(modPosPlcTask.PosType, modDevice.DbNumber, modPosPlcTask.PlcPos); + if (!result.IsSucceed) + break; + string taskNo = Convert.ToString(TaskNo); + var modTask = _db.Queryable<WcsTask>().First(s => s.TaskNo == taskNo && s.Status == TaskStatusEnum.Doing); + if (modTask == null) + { + Log.Error("銆愯泛鏈恒�戝綋鍓嶆墭鐩樺彿涓嶅瓨鍦ㄥ搴旂殑浠诲姟"); + break; + } + if (modTask.TaskType.Value == TaskTypeEnum.In) + { + //鍏ュ簱浠诲姟 + var res = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, taskNo); + if (!res.IsSucceed) + break; + // 鏍规嵁璺烘満鍙风‘璁ゅ彇璐у伐浣� + string outStationNum = "0"; + switch (modDevice.StationNum) + { + case "R01": + outStationNum = "10"; + break; + case "R02": + outStationNum = "6"; + break; + default: break; + } + var modDevice2 = modDevice.listDevice.Where(s => s.StationNum == outStationNum).FirstOrDefault(); + var modStation = _db.Queryable<WcsPosition>().First(s => s.DeviceId == modDevice2.Id && s.Text == "TaskNo"); + // 鍚戝彇璐у伐浣嶅啓鍏ヤ换鍔″彿 + res = plcConn.SetPlcDBValue(modStation.PosType, modDevice2.DbNumber, modStation.PlcPos, taskNo); + if (!res.IsSucceed) + break; + // 鍚戝彇璐у伐浣嶅啓鍏ユ祦绋嬫帶鍒跺瓧 + res = plcConn.SetPlcDBValue(modDevice2.PosType, modDevice2.DbNumber, modDevice2.WcsPos, "100"); + if (!res.IsSucceed) + break; + var modTaskMonitor = new WcsTaskMonitor() + { + TaskNo = modTask.TaskNo, + PlcId = modDevice2.PlcId, + PlcName = modDevice2.Text, + InteractiveMsg = "璺烘満鍙栬揣瀹屾垚", + StartLocat = outStationNum, + EndLocat = modTask.EndLocate, + PalletNo = modTask.PalletNo, + Status = TaskStatusEnum.Complete + }; + _db.Insertable(modTaskMonitor).ExecuteCommand(); + //閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� + //if (TaskAction.refresh) + //{ + // wSChat.AlarmInformation("1"); + //} + + } + else if (modTask.TaskType.Value == TaskTypeEnum.Out) + { + //鍏ュ簱浠诲姟 + var res = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, taskNo); + if (!res.IsSucceed) + break; + res = plcConn.SetPlcDBValue(modDevice.PosType.Value, modDevice.DbNumber, modDevice.WcsPos, "20"); + if (!res.IsSucceed) + break; + // 鏍规嵁璺烘満鍙风‘璁ゅ彇璐у伐浣� + string outStationNum = "0"; + switch (modDevice.StationNum) + { + case "R01": + outStationNum = "11"; + break; + case "R02": + outStationNum = "7"; + break; + default: break; + } + var modStation = modDevice.listStation.FirstOrDefault(s => s.Text == "TaskNo"); + var modTaskMonitor = new WcsTaskMonitor() + { + TaskNo = modTask.TaskNo, + PlcId = modDevice.PlcId, + PlcName = modDevice.Text, + InteractiveMsg = "璺烘満鍙栬揣瀹屾垚", + StartLocat = outStationNum, + EndLocat = modTask.EndLocate, + PalletNo = modTask.PalletNo, + Status = TaskStatusEnum.Complete + }; + _db.Insertable(modTaskMonitor).ExecuteCommand(); + //閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� + //if (TaskAction.refresh) + //{ + // wSChat.AlarmInformation("1"); + //} + } + } + break; + case "30": + { + //鎿嶄綔瀹屾垚锛堟斁璐у畬鎴愶級 + var modPosPlcTask = modDevice.listStation.FirstOrDefault(s => s.Text == "PlcTaskNo"); + var (result, TaskNo) = plcConn.GetPlcDBValue(modPosPlcTask.PosType, modDevice.DbNumber, modPosPlcTask.PlcPos); + if (!result.IsSucceed) + break; + string taskNo = Convert.ToString(TaskNo); + var modTask = _db.Queryable<WcsTask>().First(s => s.TaskNo == taskNo && s.Status == TaskStatusEnum.Doing); + if (modTask == null) + { + Log.Error("銆愯泛鏈恒�戝綋鍓嶆墭鐩樺彿涓嶅瓨鍦ㄥ搴旂殑浠诲姟"); + break; + } + switch (modTask.TaskType) + { + case TaskTypeEnum.In: + case TaskTypeEnum.PLC: + { + //鍏ュ簱浠诲姟 + var modStation = modDevice.listStation.FirstOrDefault(s => s.Text == "TaskNo"); + // 鍐欏叆plc浠诲姟鍙� + var res = plcConn.SetPlcDBValue(modStation.PosType, modDevice.DbNumber, modStation.PlcPos, taskNo); + if (!res.IsSucceed) + break; + res = plcConn.SetPlcDBValue(modDevice.PosType.Value, modDevice.DbNumber, modDevice.WcsPos, "30"); + if (!res.IsSucceed) + break; + //淇敼浠诲姟鐘舵�� + modTask.Status = TaskStatusEnum.Complete; + _db.Updateable<WcsTask>() + .SetColumns(s => s.Status == TaskStatusEnum.Complete) + .Where(s => s.Id == modTask.Id) + .ExecuteCommand(); + //鍙嶉缁橶MS + var modTaskRequest = modTask.Adapt<TaskRequest>(); + HttpService httpService = new HttpService(); + var modResponseTask = httpService.RequestTask(modTaskRequest).Result; + if (modResponseTask.StatusCode == "0") + { + //璇锋眰鎴愬姛 + modTask.IsSuccess = TaskSuccessEnum.Success; + _db.Updateable(modTask).UpdateColumns(s => s.IsSuccess).ExecuteCommand(); + //todo:淇敼鍌ㄤ綅淇℃伅 浠诲姟绫诲瀷 鎵ц鐘舵�� 璧峰浣嶇疆 鐩爣浣嶇疆 + // + + //璁板綍浠诲姟鏄庣粏 + var modTaskMonitor = new WcsTaskMonitor() + { + TaskNo = modTask.TaskNo, + PlcId = modDevice.PlcId, + PlcName = modDevice.Text, + InteractiveMsg = "浠诲姟瀹屾垚锛岃繑鍥炵粰WMS浠诲姟瀹屾垚", + StartLocat = modTask.StartLocate, + EndLocat = modTask.EndLocate, + PalletNo = modTask.PalletNo, + Status = TaskStatusEnum.Complete + }; + _db.Insertable(modTaskMonitor).ExecuteCommand(); + // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� + //if (TaskAction.refresh) + //{ + // wSChat.AlarmInformation("1"); + //} + } + else + { + //璇锋眰澶辫触 + modTask.IsSuccess = TaskSuccessEnum.Fail; + modTask.Information = modResponseTask.Message; + _db.Updateable(modTask).UpdateColumns(s => new { s.IsSuccess, s.Information }).ExecuteCommand(); + } + //todo:鍨涙満鍏ュ簱涓嶇┖璺� + + //todo:LED + } + break; + case TaskTypeEnum.Out://鍑哄簱 + // 浠庡嚭搴撲换鍔¤幏鍙栧贩閬撳彿 + string num = ""; // 鏀捐揣宸ヤ綅鍙� + if (modTask.StartRoadway == "R01") + { + num = "11"; //浜や簰宸ヤ綅 + } + else if (modTask.StartRoadway == "R02") + { + num = "7"; //浜や簰宸ヤ綅 + } + var modDevice2 = modDevice.listDevice.FirstOrDefault(s => s.StationNum == num); + if (modDevice2 == null) + { + Log.Error($"銆愯泛鏈恒�戞壘涓嶅埌宸ヤ綅{num}璁惧淇℃伅"); + break; + } + // 鏍规嵁鐩爣鍙h幏鍙栫洰鏍囧伐浣� + string outCode = modTask.EndLocate.IsNullOrEmpty() ? "-1" : modTask.EndLocate; + + var listStation = _db.Queryable<WcsPosition>().Where(s => s.DeviceId == modDevice2.Id).ToList(); + //缁橮LC鍐欏叆浠诲姟鏁版嵁 + var listResult = new List<Result>(); + //浠诲姟鍙� + var modPosTask = listStation.FirstOrDefault(s => s.Text == "TaskNo"); + listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); + //鎵樼洏鍙� + var modPosPalletNo = listStation.FirstOrDefault(s => s.Text == "PalletNo"); + listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); + //璧峰宸ヤ綅 + var modPosLocatNo = listStation.FirstOrDefault(s => s.Text == "StartLocatNo"); + listResult.Add(plcConn.SetPlcDBValue(modPosLocatNo.PosType, modDevice.DbNumber, modPosLocatNo.PlcPos, num)); + // 鐩爣宸ヤ綅 + var modPosEndLocatNo = listStation.FirstOrDefault(s => s.Text == "EndLocatNo"); + listResult.Add(plcConn.SetPlcDBValue(modPosEndLocatNo.PosType, modDevice.DbNumber, modPosEndLocatNo.PlcPos, outCode)); + //鍏ㄩ儴鍐欏叆鎴愬姛 + if (listResult.All(s => s.IsSucceed)) + { + // 鍐欏叆宸ヤ綅wcs鎺у埗瀛� + var res = plcConn.SetPlcDBValue(modDevice2.PosType, modDevice2.DbNumber, modDevice2.WcsPos, "120"); + if (!res.IsSucceed) + break; + //鍐欏叆plc浠诲姟鍙� + var modStation = modDevice.listStation.FirstOrDefault(s => s.Text == "TaskNo"); + res = plcConn.SetPlcDBValue(modStation.PosType, modDevice.DbNumber, modStation.PlcPos, modTask.TaskNo); + if (!res.IsSucceed) + break; + //鍐欏叆璺烘満wcs鎺у埗瀛楁祦绋�30 杩斿洖鍨涙満鎵ц瀹屾垚 + res = plcConn.SetPlcDBValue(modDevice.PosType.Value, modDevice.DbNumber, modDevice.WcsPos, "30"); + if (!res.IsSucceed) + break; + //璁板綍浠诲姟鏄庣粏 + var modTaskMonitor = new WcsTaskMonitor() + { + TaskNo = modTask.TaskNo, + PlcId = modDevice2.PlcId, + PlcName = modDevice2.Text, + InteractiveMsg = $"鍐欏叆鎸囦护锛氭敹鍒拌泛鏈烘斁璐у畬鎴愶紱鏀捐揣{num}宸ヤ綅===銆媨outCode}鍑哄簱鍙�", + PalletNo = modTask.PalletNo, + Status = TaskStatusEnum.Complete, + StartLocat = num, //璧峰浣嶇疆 + EndLocat = outCode, //鐩爣宸ヤ綅 + }; _db.Insertable(modTaskMonitor).ExecuteCommand(); // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� @@ -114,72 +432,16 @@ //{ // wSChat.AlarmInformation("1"); //} - break; + //todo:鍨涙満鍑哄簱涓嶇┖璺� } - //缁橮LC鍐欏叆浠诲姟鏁版嵁 - var listResult = new List<Result>(); - //浠诲姟鍙� - var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "TaskNo"); - listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType.Value, modDevice.DbNumber, modPosTask.PlcPos, modTaskMonitor.TaskNo)); - //鎵樼洏鍙� - var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "PalletNo"); - listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType.Value, modDevice.DbNumber, modPosPalletNo.PlcPos, modTaskMonitor.PalletNo)); - //璧峰鎺� - var modPosRow = modDevice.listStation.FirstOrDefault(s => s.Text == "StartRow"); - listResult.Add(plcConn.SetPlcDBValue(modPosRow.PosType.Value, modDevice.DbNumber, modPosRow.PlcPos, row)); - // 璧峰鍒� - var modPosColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "StartColumn"); - listResult.Add(plcConn.SetPlcDBValue(modPosColumn.PosType.Value, modDevice.DbNumber, modPosColumn.PlcPos, column)); - // 璧峰灞� - var modPosStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "StartLayer"); - listResult.Add(plcConn.SetPlcDBValue(modPosStorey.PosType.Value, modDevice.DbNumber, modPosStorey.PlcPos, layer)); - // 鐩爣鏀捐揣宸ヤ綅 - var modPosEndRow = modDevice.listStation.FirstOrDefault(s => s.Text == "EndRow"); - listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType.Value, modDevice.DbNumber, modPosEndRow.PlcPos, endRow)); - var modPosEndColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "EndColumn"); - listResult.Add(plcConn.SetPlcDBValue(modPosEndColumn.PosType.Value, modDevice.DbNumber, modPosEndColumn.PlcPos, endColumn)); - var modPosEndStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "EndLayer"); - listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType.Value, modDevice.DbNumber, modPosEndStorey.PlcPos, endColumn)); - //鍏ㄩ儴鍐欏叆鎴愬姛 - if (listResult.All(s => s.IsSucceed)) - { - // 鍐欏叆璺烘満浠诲姟涓嬪彂瀹屾垚 - plcConn.SetPlcDBValue(modDevice.PosType.Value, modDevice.DbNumber, modDevice.WcsPos, "10"); + break; + case TaskTypeEnum.Move: - // 灏嗗嚭搴撲换鍔″緟鎵ц鏀逛负姝e湪鎵ц - _db.Updateable<WcsTask>() - .SetColumns(s => s.FinishDate == DateTime.Now) - .SetColumns(s => s.Status == TaskStatusEnum.Doing) - .SetColumns(s => s.Levels == 2) - .Where(s => s.Id == modTask.Id) - .ExecuteCommand(); - var modInsertTaskMonitor = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.Id, - PlcName = modDevice.Text, - InteractiveMsg = $"鍐欏叆鎸囦护锛歿modTask.StartLocate}鍌ㄤ綅====銆媨outStationNum}宸ヤ綅", - PalletNo = modTask.PalletNo, - Status = TaskStatusEnum.Complete, - StartLocat = modTask.StartLocate, - EndLocat = outStationNum, - }; - _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); - // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈� - //if (TaskAction.refresh) - //{ - // wSChat.AlarmInformation("1"); - //} - //淇敼led灞忎俊鎭� - //LedDisplay(modDevice.LedIP, "宸ヤ綅:" + modTask.EndLocate, "鍑哄簱涓� " + $"鍌ㄤ綅鍦板潃锛歿modTask.StartLocate}", "鎵樼洏鍙�:" + modTask.PalletNo); - } - } + break; + default: + break; } - } - else - { - Log.Error(string.Join(',', result.ErrList)); } break; default: @@ -220,7 +482,7 @@ Dictionary<string, PLCDataTypeEnum> listaddress = new Dictionary<string, PLCDataTypeEnum>(); foreach (var modStation in modDevice.listStation) { - listaddress.Add(modStation.PlcPos, modStation.PosType.Value); + listaddress.Add(modStation.PlcPos, modStation.PosType); } var result = modDevice.PLCUtil.GetPlcBatchDBValue(listaddress); if (result.Value.Count > 0) diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs index a6d6fb2..0eaf3a5 100644 --- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs +++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs @@ -1,4 +1,5 @@ 锘縰sing Admin.NET.Core.Service; +using Furion.Logging; namespace WCS.Application; public static class PLCTaskAction @@ -7,7 +8,7 @@ private static List<WcsPlc> listPlc; private static List<WcsDevice> listPlcDevice; - private static List<WcsStation> listPlcStation; + private static List<WcsPosition> listPlcStation; private static List<PLCUtil> listPlcUtil = new List<PLCUtil>(); private static CancellationTokenSource cts;//鍙栨秷绾跨▼鏍囪瘑 @@ -20,7 +21,7 @@ listPlc = _db.Queryable<WcsPlc>().ToList(); listPlcDevice = _db.Queryable<WcsDevice>().ToList(); - listPlcStation = _db.Queryable<WcsStation>().ToList(); + listPlcStation = _db.Queryable<WcsPosition>().ToList(); } /// <summary> /// 鍒濆鍖朠LC杩炴帴 @@ -32,7 +33,7 @@ cts.Cancel(); listPlc = _db.Queryable<WcsPlc>().ToList(); listPlcDevice = _db.Queryable<WcsDevice>().ToList(); - listPlcStation = _db.Queryable<WcsStation>().ToList(); + listPlcStation = _db.Queryable<WcsPosition>().ToList(); //绛夊緟鍑犵閽燂紝鎶婂凡鏈夌嚎绋嬪彇娑堟帀鍐嶈繛鎺� Thread.Sleep(5000); foreach (var modPlcUtil in listPlcUtil) @@ -82,7 +83,7 @@ //寰幆璇昏澶� foreach (var modDevice in listDevice.Where(s => s.Level == DeviceLevelEnum.DB)) { - var (result, value) = modPlcUtil.GetPlcDBValue(modDevice.PosType.Value, modDevice.DbNumber, modDevice.PlcPos); + var (result, value) = modPlcUtil.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos); if (result.IsSucceed) { //鏃犳祦绋嬭烦鍑� @@ -108,9 +109,13 @@ Thread.Sleep(3000); } + catch (OperationCanceledException) + { + Console.WriteLine("涓绾跨▼"); + } catch (Exception ex) { - + Log.Error(ex.Message, ex); } } }, cts.Token); diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceDto.cs b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceDto.cs index 62b371f..96cd826 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceDto.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceDto.cs @@ -116,5 +116,5 @@ public PLCUtil PLCUtil { get; set; } public List<WcsDevice> listDevice { get; set; } - public List<WcsStation> listStation { get; set; } + public List<WcsPosition> listStation { get; set; } } diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs index 4ce65df..b0c07e3 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs @@ -9,168 +9,204 @@ namespace WCS.Application; +/// <summary> +/// 璁惧淇℃伅鍩虹杈撳叆鍙傛暟 +/// </summary> +public class WcsDeviceBaseInput +{ /// <summary> - /// 璁惧淇℃伅鍩虹杈撳叆鍙傛暟 + /// PlcId /// </summary> - public class WcsDeviceBaseInput - { - /// <summary> - /// PlcId - /// </summary> - public virtual long PlcId { get; set; } - - /// <summary> - /// 璁惧绾у埆 - /// </summary> - public virtual DeviceLevelEnum Level { get; set; } - - /// <summary> - /// DB鍖哄煙 - /// </summary> - public virtual string? DbNumber { get; set; } - - /// <summary> - /// 宸ヤ綅鍙� - /// </summary> - public virtual string? StationNum { get; set; } - - /// <summary> - /// PLC鍋忕Щ閲� - /// </summary> - public virtual string? PlcPos { get; set; } - - /// <summary> - /// WCS鍋忕Щ閲� - /// </summary> - public virtual string? WcsPos { get; set; } - - /// <summary> - /// 娴佺▼瀛楃被鍨� - /// </summary> - public virtual PLCDataTypeEnum? PosType { get; set; } - - /// <summary> - /// 鏄剧ず灞廼p鍦板潃 - /// </summary> - public virtual string? LedIP { get; set; } - - /// <summary> - /// 鎻忚堪 - /// </summary> - public virtual string? Text { get; set; } - - /// <summary> - /// 鍒涘缓鏃堕棿 - /// </summary> - public virtual DateTime? CreateTime { get; set; } - - /// <summary> - /// 鏇存柊鏃堕棿 - /// </summary> - public virtual DateTime? UpdateTime { get; set; } - - /// <summary> - /// 鍒涘缓鑰匢d - /// </summary> - public virtual long? CreateUserId { get; set; } - - /// <summary> - /// 鍒涘缓鑰呭鍚� - /// </summary> - public virtual string? CreateUserName { get; set; } - - /// <summary> - /// 淇敼鑰匢d - /// </summary> - public virtual long? UpdateUserId { get; set; } - - /// <summary> - /// 淇敼鑰呭鍚� - /// </summary> - public virtual string? UpdateUserName { get; set; } - - /// <summary> - /// 鍒涘缓鑰呴儴闂↖d - /// </summary> - public virtual long? CreateOrgId { get; set; } - - /// <summary> - /// 鍒涘缓鑰呴儴闂ㄥ悕绉� - /// </summary> - public virtual string? CreateOrgName { get; set; } - - /// <summary> - /// 杞垹闄� - /// </summary> - public virtual bool IsDelete { get; set; } - - } + public virtual long PlcId { get; set; } /// <summary> - /// 璁惧淇℃伅鍒嗛〉鏌ヨ杈撳叆鍙傛暟 + /// 璁惧绾у埆 /// </summary> - public class PageWcsDeviceInput : BasePageInput - { - /// <summary> - /// 鍏抽敭瀛楁煡璇� - /// </summary> - public string? SearchKey { get; set; } - - /// <summary> - /// PlcId - /// </summary> - public long? PlcId { get; set; } - - /// <summary> - /// 鎻忚堪 - /// </summary> - public string? Text { get; set; } - - } + public virtual DeviceLevelEnum Level { get; set; } /// <summary> - /// 璁惧淇℃伅澧炲姞杈撳叆鍙傛暟 + /// DB鍖哄煙 /// </summary> - public class AddWcsDeviceInput : WcsDeviceBaseInput - { - /// <summary> - /// PlcId - /// </summary> - [Required(ErrorMessage = "PlcId涓嶈兘涓虹┖")] - public override long PlcId { get; set; } - - /// <summary> - /// 杞垹闄� - /// </summary> - [Required(ErrorMessage = "杞垹闄や笉鑳戒负绌�")] - public override bool IsDelete { get; set; } - - } + public virtual string DbNumber { get; set; } /// <summary> - /// 璁惧淇℃伅鍒犻櫎杈撳叆鍙傛暟 + /// 宸ヤ綅鍙� /// </summary> - public class DeleteWcsDeviceInput : BaseIdInput - { - } + public virtual string StationNum { get; set; } /// <summary> - /// 璁惧淇℃伅鏇存柊杈撳叆鍙傛暟 + /// PLC鍋忕Щ閲� /// </summary> - public class UpdateWcsDeviceInput : WcsDeviceBaseInput - { - /// <summary> - /// 涓婚敭Id - /// </summary> - [Required(ErrorMessage = "涓婚敭Id涓嶈兘涓虹┖")] - public long Id { get; set; } - - } + public virtual string PlcPos { get; set; } /// <summary> - /// 璁惧淇℃伅涓婚敭鏌ヨ杈撳叆鍙傛暟 + /// WCS鍋忕Щ閲� /// </summary> - public class QueryByIdWcsDeviceInput : DeleteWcsDeviceInput - { + public virtual string WcsPos { get; set; } - } + /// <summary> + /// 娴佺▼瀛楃被鍨� + /// </summary> + public virtual PLCDataTypeEnum PosType { get; set; } + + /// <summary> + /// 鏄剧ず灞廼p鍦板潃 + /// </summary> + public virtual string? LedIP { get; set; } + + /// <summary> + /// 鎻忚堪 + /// </summary> + public virtual string? Text { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public virtual DateTime? CreateTime { get; set; } + + /// <summary> + /// 鏇存柊鏃堕棿 + /// </summary> + public virtual DateTime? UpdateTime { get; set; } + + /// <summary> + /// 鍒涘缓鑰匢d + /// </summary> + public virtual long? CreateUserId { get; set; } + + /// <summary> + /// 鍒涘缓鑰呭鍚� + /// </summary> + public virtual string? CreateUserName { get; set; } + + /// <summary> + /// 淇敼鑰匢d + /// </summary> + public virtual long? UpdateUserId { get; set; } + + /// <summary> + /// 淇敼鑰呭鍚� + /// </summary> + public virtual string? UpdateUserName { get; set; } + + /// <summary> + /// 鍒涘缓鑰呴儴闂↖d + /// </summary> + public virtual long? CreateOrgId { get; set; } + + /// <summary> + /// 鍒涘缓鑰呴儴闂ㄥ悕绉� + /// </summary> + public virtual string? CreateOrgName { get; set; } + + /// <summary> + /// 杞垹闄� + /// </summary> + public virtual bool IsDelete { get; set; } + +} + +/// <summary> +/// 璁惧淇℃伅鍒嗛〉鏌ヨ杈撳叆鍙傛暟 +/// </summary> +public class PageWcsDeviceInput : BasePageInput +{ + /// <summary> + /// 鍏抽敭瀛楁煡璇� + /// </summary> + public string? SearchKey { get; set; } + + /// <summary> + /// PlcId + /// </summary> + public long? PlcId { get; set; } + + /// <summary> + /// 鎻忚堪 + /// </summary> + public string? Text { get; set; } + +} + +/// <summary> +/// 璁惧淇℃伅澧炲姞杈撳叆鍙傛暟 +/// </summary> +public class AddWcsDeviceInput : WcsDeviceBaseInput +{ + /// <summary> + /// PlcId + /// </summary> + [Required(ErrorMessage = "PlcId涓嶈兘涓虹┖")] + public override long PlcId { get; set; } + + /// <summary> + /// 璁惧绾у埆 + /// </summary> + [Required(ErrorMessage = "璁惧绾у埆涓嶈兘涓虹┖")] + public override DeviceLevelEnum Level { get; set; } + + /// <summary> + /// DB鍖哄煙 + /// </summary> + [Required(ErrorMessage = "DB鍖哄煙涓嶈兘涓虹┖")] + public override string? DbNumber { get; set; } + + /// <summary> + /// 宸ヤ綅鍙� + /// </summary> + [Required(ErrorMessage = "宸ヤ綅鍙蜂笉鑳戒负绌�")] + public override string? StationNum { get; set; } + + /// <summary> + /// PLC鍋忕Щ閲� + /// </summary> + [Required(ErrorMessage = "PLC鍋忕Щ閲忎笉鑳戒负绌�")] + public override string? PlcPos { get; set; } + + /// <summary> + /// WCS鍋忕Щ閲� + /// </summary> + [Required(ErrorMessage = "WCS鍋忕Щ閲忎笉鑳戒负绌�")] + public override string? WcsPos { get; set; } + + /// <summary> + /// 娴佺▼瀛楃被鍨� + /// </summary> + [Required(ErrorMessage = "娴佺▼瀛楃被鍨嬩笉鑳戒负绌�")] + public override PLCDataTypeEnum PosType { get; set; } + + /// <summary> + /// 杞垹闄� + /// </summary> + [Required(ErrorMessage = "杞垹闄や笉鑳戒负绌�")] + public override bool IsDelete { get; set; } + +} + +/// <summary> +/// 璁惧淇℃伅鍒犻櫎杈撳叆鍙傛暟 +/// </summary> +public class DeleteWcsDeviceInput : BaseIdInput +{ +} + +/// <summary> +/// 璁惧淇℃伅鏇存柊杈撳叆鍙傛暟 +/// </summary> +public class UpdateWcsDeviceInput : WcsDeviceBaseInput +{ + /// <summary> + /// 涓婚敭Id + /// </summary> + [Required(ErrorMessage = "涓婚敭Id涓嶈兘涓虹┖")] + public long Id { get; set; } + +} + +/// <summary> +/// 璁惧淇℃伅涓婚敭鏌ヨ杈撳叆鍙傛暟 +/// </summary> +public class QueryByIdWcsDeviceInput : DeleteWcsDeviceInput +{ + +} diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceOutput.cs b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceOutput.cs index 1cfabf2..e66ea48 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceOutput.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceOutput.cs @@ -10,102 +10,102 @@ /// 涓婚敭Id /// </summary> public long Id { get; set; } - + /// <summary> /// PlcId /// </summary> - public long PlcId { get; set; } - + public long PlcId { get; set; } + /// <summary> /// PlcId 鎻忚堪 /// </summary> - public string PlcIdIP { get; set; } - + public string PlcIdIP { get; set; } + /// <summary> /// 璁惧绾у埆 /// </summary> public DeviceLevelEnum Level { get; set; } - + /// <summary> /// DB鍖哄煙 /// </summary> public string? DbNumber { get; set; } - + /// <summary> /// 宸ヤ綅鍙� /// </summary> public string? StationNum { get; set; } - + /// <summary> /// PLC鍋忕Щ閲� /// </summary> public string? PlcPos { get; set; } - + /// <summary> /// WCS鍋忕Щ閲� /// </summary> public string? WcsPos { get; set; } - + /// <summary> /// 娴佺▼瀛楃被鍨� /// </summary> - public PLCDataTypeEnum? PosType { get; set; } - + public PLCDataTypeEnum PosType { get; set; } + /// <summary> /// 鏄剧ず灞廼p鍦板潃 /// </summary> public string? LedIP { get; set; } - + /// <summary> /// 鎻忚堪 /// </summary> public string? Text { get; set; } - + /// <summary> /// 鍒涘缓鏃堕棿 /// </summary> public DateTime? CreateTime { get; set; } - + /// <summary> /// 鏇存柊鏃堕棿 /// </summary> public DateTime? UpdateTime { get; set; } - + /// <summary> /// 鍒涘缓鑰匢d /// </summary> public long? CreateUserId { get; set; } - + /// <summary> /// 鍒涘缓鑰呭鍚� /// </summary> public string? CreateUserName { get; set; } - + /// <summary> /// 淇敼鑰匢d /// </summary> public long? UpdateUserId { get; set; } - + /// <summary> /// 淇敼鑰呭鍚� /// </summary> public string? UpdateUserName { get; set; } - + /// <summary> /// 鍒涘缓鑰呴儴闂↖d /// </summary> public long? CreateOrgId { get; set; } - + /// <summary> /// 鍒涘缓鑰呴儴闂ㄥ悕绉� /// </summary> public string? CreateOrgName { get; set; } - + /// <summary> /// 杞垹闄� /// </summary> public bool IsDelete { get; set; } - - } - + +} + diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs index 5d2c9ca..9c8e36d 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs @@ -144,7 +144,7 @@ return await _wcsDeviceRep.Context.Queryable<WcsPlc>() .Select(u => new { - Label = u.IP, + Label = u.Text, Value = u.Id } ).ToListAsync(); diff --git a/Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationDto.cs b/Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionDto.cs similarity index 96% rename from Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationDto.cs rename to Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionDto.cs index b04b356..f32161c 100644 --- a/Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationDto.cs +++ b/Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionDto.cs @@ -4,7 +4,7 @@ /// <summary> /// 璁惧宸ヤ綅杈撳嚭鍙傛暟 /// </summary> - public class WcsStationDto + public class WcsPositionDto { /// <summary> /// 璁惧ID diff --git a/Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionInput.cs b/Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionInput.cs new file mode 100644 index 0000000..03bcb70 --- /dev/null +++ b/Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionInput.cs @@ -0,0 +1,171 @@ +锘� +namespace WCS.Application; + +/// <summary> +/// 璁惧鐐逛綅绠$悊鍩虹杈撳叆鍙傛暟 +/// </summary> +public class WcsPositionBaseInput +{ + /// <summary> + /// 璁惧ID + /// </summary> + public virtual long DeviceId { get; set; } + + /// <summary> + /// 宸ヤ綅鍙� + /// </summary> + public virtual string StationNum { get; set; } + + /// <summary> + /// 鍋忕Щ閲� + /// </summary> + public virtual string PlcPos { get; set; } + + /// <summary> + /// 娴佺▼瀛楃被鍨� + /// </summary> + public virtual PLCDataTypeEnum PosType { get; set; } + + /// <summary> + /// 鏄剧ず灞廼p鍦板潃 + /// </summary> + public virtual string? LedIP { get; set; } + + /// <summary> + /// 鎻忚堪 + /// </summary> + public virtual string? Text { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public virtual DateTime? CreateTime { get; set; } + + /// <summary> + /// 鏇存柊鏃堕棿 + /// </summary> + public virtual DateTime? UpdateTime { get; set; } + + /// <summary> + /// 鍒涘缓鑰匢d + /// </summary> + public virtual long? CreateUserId { get; set; } + + /// <summary> + /// 鍒涘缓鑰呭鍚� + /// </summary> + public virtual string? CreateUserName { get; set; } + + /// <summary> + /// 淇敼鑰匢d + /// </summary> + public virtual long? UpdateUserId { get; set; } + + /// <summary> + /// 淇敼鑰呭鍚� + /// </summary> + public virtual string? UpdateUserName { get; set; } + + /// <summary> + /// 鍒涘缓鑰呴儴闂↖d + /// </summary> + public virtual long? CreateOrgId { get; set; } + + /// <summary> + /// 鍒涘缓鑰呴儴闂ㄥ悕绉� + /// </summary> + public virtual string? CreateOrgName { get; set; } + + /// <summary> + /// 杞垹闄� + /// </summary> + public virtual bool IsDelete { get; set; } + +} + +/// <summary> +/// 璁惧鐐逛綅绠$悊鍒嗛〉鏌ヨ杈撳叆鍙傛暟 +/// </summary> +public class PageWcsPositionInput : BasePageInput +{ + /// <summary> + /// 鍏抽敭瀛楁煡璇� + /// </summary> + public string? SearchKey { get; set; } + + /// <summary> + /// 璁惧ID + /// </summary> + public long? DeviceId { get; set; } + + /// <summary> + /// 鎻忚堪 + /// </summary> + public string? Text { get; set; } + +} + +/// <summary> +/// 璁惧鐐逛綅绠$悊澧炲姞杈撳叆鍙傛暟 +/// </summary> +public class AddWcsPositionInput : WcsPositionBaseInput +{ + /// <summary> + /// 璁惧ID + /// </summary> + [Required(ErrorMessage = "璁惧ID涓嶈兘涓虹┖")] + public override long DeviceId { get; set; } + + /// <summary> + /// 宸ヤ綅鍙� + /// </summary> + [Required(ErrorMessage = "宸ヤ綅鍙蜂笉鑳戒负绌�")] + public override string StationNum { get; set; } + + /// <summary> + /// 鍋忕Щ閲� + /// </summary> + [Required(ErrorMessage = "鍋忕Щ閲忎笉鑳戒负绌�")] + public override string PlcPos { get; set; } + + /// <summary> + /// 娴佺▼瀛楃被鍨� + /// </summary> + [Required(ErrorMessage = "娴佺▼瀛楃被鍨嬩笉鑳戒负绌�")] + public override PLCDataTypeEnum PosType { get; set; } + + /// <summary> + /// 杞垹闄� + /// </summary> + [Required(ErrorMessage = "杞垹闄や笉鑳戒负绌�")] + public override bool IsDelete { get; set; } + +} + +/// <summary> +/// 璁惧鐐逛綅绠$悊鍒犻櫎杈撳叆鍙傛暟 +/// </summary> +public class DeleteWcsPositionInput : BaseIdInput +{ +} + +/// <summary> +/// 璁惧鐐逛綅绠$悊鏇存柊杈撳叆鍙傛暟 +/// </summary> +public class UpdateWcsPositionInput : WcsPositionBaseInput +{ + /// <summary> + /// 涓婚敭Id + /// </summary> + [Required(ErrorMessage = "涓婚敭Id涓嶈兘涓虹┖")] + public long Id { get; set; } + +} + +/// <summary> +/// 璁惧鐐逛綅绠$悊涓婚敭鏌ヨ杈撳叆鍙傛暟 +/// </summary> +public class QueryByIdWcsPositionInput : DeleteWcsPositionInput +{ + +} diff --git a/Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationOutput.cs b/Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionOutput.cs similarity index 97% rename from Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationOutput.cs rename to Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionOutput.cs index c9f6cbf..9144a43 100644 --- a/Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationOutput.cs +++ b/Admin.NET/WCS.Application/Service/WcsPosition/Dto/WcsPositionOutput.cs @@ -4,7 +4,7 @@ /// <summary> /// 璁惧宸ヤ綅杈撳嚭鍙傛暟 /// </summary> -public class WcsStationOutput +public class WcsPositionOutput { /// <summary> /// 涓婚敭Id diff --git a/Admin.NET/WCS.Application/Service/WcsPosition/WcsPositionService.cs b/Admin.NET/WCS.Application/Service/WcsPosition/WcsPositionService.cs new file mode 100644 index 0000000..bd4ff21 --- /dev/null +++ b/Admin.NET/WCS.Application/Service/WcsPosition/WcsPositionService.cs @@ -0,0 +1,150 @@ +锘� +namespace WCS.Application; + +/// <summary> +/// 璁惧宸ヤ綅鏈嶅姟 +/// </summary> +[ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)] +public class WcsPositionService : IDynamicApiController, ITransient +{ + private readonly SqlSugarRepository<WcsPosition> _WcsPositionRep; + public WcsPositionService(SqlSugarRepository<WcsPosition> WcsPositionRep) + { + _WcsPositionRep = WcsPositionRep; + } + + /// <summary> + /// 鍒嗛〉鏌ヨ璁惧宸ヤ綅 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpPost] + [ApiDescriptionSettings(Name = "Page")] + [DisplayName("鍒嗛〉鏌ヨ璁惧宸ヤ綅")] + public async Task<SqlSugarPagedList<WcsPositionOutput>> Page(PageWcsPositionInput input) + { + if (input.Field.IsNullOrEmpty()) + { + input.Field = "u.Id"; + input.Order = "desc"; + } + input.SearchKey = input.SearchKey?.Trim(); + var query = _WcsPositionRep.AsQueryable() + .WhereIF(!string.IsNullOrEmpty(input.SearchKey), u => + u.Text.Contains(input.SearchKey) + ) + .WhereIF(input.DeviceId > 0, u => u.DeviceId == input.DeviceId) + .WhereIF(!string.IsNullOrWhiteSpace(input.Text), u => u.Text.Contains(input.Text.Trim())) + //澶勭悊澶栭敭鍜孴reeSelector鐩稿叧瀛楁鐨勮繛鎺� + .LeftJoin<WcsDevice>((u, deviceid) => u.DeviceId == deviceid.Id) + .Select((u, deviceid) => new WcsPositionOutput + { + Id = u.Id, + DeviceId = u.DeviceId, + DeviceIdText = deviceid.Text, + StationNum = u.StationNum, + PlcPos = u.PlcPos, + PosType = u.PosType, + LedIP = u.LedIP, + Text = u.Text, + CreateUserId = u.CreateUserId, + CreateUserName = u.CreateUserName, + CreateTime = u.CreateTime, + UpdateUserId = u.UpdateUserId, + UpdateUserName = u.UpdateUserName, + UpdateTime = u.UpdateTime, + }); + return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); + } + + /// <summary> + /// 澧炲姞璁惧宸ヤ綅 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpPost] + [ApiDescriptionSettings(Name = "Add")] + [DisplayName("澧炲姞璁惧宸ヤ綅")] + public async Task<long> Add(AddWcsPositionInput input) + { + var entity = input.Adapt<WcsPosition>(); + await _WcsPositionRep.InsertAsync(entity); + return entity.Id; + } + + /// <summary> + /// 鍒犻櫎璁惧宸ヤ綅 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpPost] + [ApiDescriptionSettings(Name = "Delete")] + [DisplayName("鍒犻櫎璁惧宸ヤ綅")] + public async Task Delete(DeleteWcsPositionInput input) + { + var entity = await _WcsPositionRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); + await _WcsPositionRep.FakeDeleteAsync(entity); //鍋囧垹闄� + //await _WcsPositionRep.DeleteAsync(entity); //鐪熷垹闄� + } + + /// <summary> + /// 鏇存柊璁惧宸ヤ綅 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpPost] + [ApiDescriptionSettings(Name = "Update")] + [DisplayName("鏇存柊璁惧宸ヤ綅")] + public async Task Update(UpdateWcsPositionInput input) + { + var entity = input.Adapt<WcsPosition>(); + await _WcsPositionRep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + } + + /// <summary> + /// 鑾峰彇璁惧宸ヤ綅 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpGet] + [ApiDescriptionSettings(Name = "Detail")] + [DisplayName("鑾峰彇璁惧宸ヤ綅")] + public async Task<WcsPosition> Detail([FromQuery] QueryByIdWcsPositionInput input) + { + return await _WcsPositionRep.GetFirstAsync(u => u.Id == input.Id); + } + + /// <summary> + /// 鑾峰彇璁惧宸ヤ綅鍒楄〃 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpGet] + [ApiDescriptionSettings(Name = "List")] + [DisplayName("鑾峰彇璁惧宸ヤ綅鍒楄〃")] + public async Task<List<WcsPositionOutput>> List([FromQuery] PageWcsPositionInput input) + { + return await _WcsPositionRep.AsQueryable().Select<WcsPositionOutput>().ToListAsync(); + } + + /// <summary> + /// 鑾峰彇璁惧ID鍒楄〃 + /// </summary> + /// <returns></returns> + [ApiDescriptionSettings(Name = "WcsDeviceDeviceIdDropdown"), HttpGet] + [DisplayName("鑾峰彇璁惧ID鍒楄〃")] + public async Task<dynamic> WcsDeviceDeviceIdDropdown() + { + return await _WcsPositionRep.Context.Queryable<WcsDevice>() + .Select(u => new + { + Label = u.Text, + Value = u.Id + } + ).ToListAsync(); + } + + + + +} diff --git a/Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationInput.cs b/Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationInput.cs deleted file mode 100644 index f6afe50..0000000 --- a/Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationInput.cs +++ /dev/null @@ -1,104 +0,0 @@ -锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆� -// -// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆� -// -// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛� - -using Admin.NET.Core; -using System.ComponentModel.DataAnnotations; - -namespace WCS.Application; - - /// <summary> - /// 璁惧宸ヤ綅鍩虹杈撳叆鍙傛暟 - /// </summary> - public class WcsStationBaseInput - { - /// <summary> - /// 璁惧ID - /// </summary> - public virtual long DeviceId { get; set; } - - /// <summary> - /// 宸ヤ綅鍙� - /// </summary> - public virtual string? StationNum { get; set; } - - /// <summary> - /// 鍋忕Щ閲� - /// </summary> - public virtual string? PlcPos { get; set; } - - /// <summary> - /// 娴佺▼瀛楃被鍨� - /// </summary> - public virtual PLCDataTypeEnum? PosType { get; set; } - - /// <summary> - /// 鏄剧ず灞廼p鍦板潃 - /// </summary> - public virtual string? LedIP { get; set; } - - /// <summary> - /// 鎻忚堪 - /// </summary> - public virtual string? Text { get; set; } - - } - - /// <summary> - /// 璁惧宸ヤ綅鍒嗛〉鏌ヨ杈撳叆鍙傛暟 - /// </summary> - public class PageWcsStationInput : BasePageInput - { - /// <summary> - /// 鍏抽敭瀛楁煡璇� - /// </summary> - public string? SearchKey { get; set; } - - /// <summary> - /// 璁惧ID - /// </summary> - public long DeviceId { get; set; } - - /// <summary> - /// 鎻忚堪 - /// </summary> - public string? Text { get; set; } - - } - - /// <summary> - /// 璁惧宸ヤ綅澧炲姞杈撳叆鍙傛暟 - /// </summary> - public class AddWcsStationInput : WcsStationBaseInput - { - } - - /// <summary> - /// 璁惧宸ヤ綅鍒犻櫎杈撳叆鍙傛暟 - /// </summary> - public class DeleteWcsStationInput : BaseIdInput - { - } - - /// <summary> - /// 璁惧宸ヤ綅鏇存柊杈撳叆鍙傛暟 - /// </summary> - public class UpdateWcsStationInput : WcsStationBaseInput - { - /// <summary> - /// 涓婚敭Id - /// </summary> - [Required(ErrorMessage = "涓婚敭Id涓嶈兘涓虹┖")] - public long Id { get; set; } - - } - - /// <summary> - /// 璁惧宸ヤ綅涓婚敭鏌ヨ杈撳叆鍙傛暟 - /// </summary> - public class QueryByIdWcsStationInput : DeleteWcsStationInput - { - - } diff --git a/Admin.NET/WCS.Application/Service/WcsStation/WcsStationService.cs b/Admin.NET/WCS.Application/Service/WcsStation/WcsStationService.cs deleted file mode 100644 index 8df0741..0000000 --- a/Admin.NET/WCS.Application/Service/WcsStation/WcsStationService.cs +++ /dev/null @@ -1,144 +0,0 @@ -锘� -namespace WCS.Application; - -/// <summary> -/// 璁惧宸ヤ綅鏈嶅姟 -/// </summary> -[ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)] -public class WcsStationService : IDynamicApiController, ITransient -{ - private readonly SqlSugarRepository<WcsStation> _wcsStationRep; - public WcsStationService(SqlSugarRepository<WcsStation> wcsStationRep) - { - _wcsStationRep = wcsStationRep; - } - - /// <summary> - /// 鍒嗛〉鏌ヨ璁惧宸ヤ綅 - /// </summary> - /// <param name="input"></param> - /// <returns></returns> - [HttpPost] - [ApiDescriptionSettings(Name = "Page")] - [DisplayName("鍒嗛〉鏌ヨ璁惧宸ヤ綅")] - public async Task<SqlSugarPagedList<WcsStationOutput>> Page(PageWcsStationInput input) - { - if (input.Field.IsNullOrEmpty()) - { - input.Field = "u.Id"; - input.Order = "desc"; - } - input.SearchKey = input.SearchKey?.Trim(); - var query = _wcsStationRep.AsQueryable() - .WhereIF(!string.IsNullOrEmpty(input.SearchKey), u => - u.Text.Contains(input.SearchKey) - ) - .WhereIF(input.DeviceId>0, u => u.DeviceId == input.DeviceId) - .WhereIF(!string.IsNullOrWhiteSpace(input.Text), u => u.Text.Contains(input.Text.Trim())) - //澶勭悊澶栭敭鍜孴reeSelector鐩稿叧瀛楁鐨勮繛鎺� - .LeftJoin<WcsDevice>((u, deviceid) => u.DeviceId == deviceid.Id ) - .Select((u, deviceid) => new WcsStationOutput - { - Id = u.Id, - DeviceId = u.DeviceId, - DeviceIdText = deviceid.Text, - StationNum = u.StationNum, - PlcPos = u.PlcPos, - PosType = u.PosType, - LedIP = u.LedIP, - Text = u.Text, - }); - return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); - } - - /// <summary> - /// 澧炲姞璁惧宸ヤ綅 - /// </summary> - /// <param name="input"></param> - /// <returns></returns> - [HttpPost] - [ApiDescriptionSettings(Name = "Add")] - [DisplayName("澧炲姞璁惧宸ヤ綅")] - public async Task<long> Add(AddWcsStationInput input) - { - var entity = input.Adapt<WcsStation>(); - await _wcsStationRep.InsertAsync(entity); - return entity.Id; - } - - /// <summary> - /// 鍒犻櫎璁惧宸ヤ綅 - /// </summary> - /// <param name="input"></param> - /// <returns></returns> - [HttpPost] - [ApiDescriptionSettings(Name = "Delete")] - [DisplayName("鍒犻櫎璁惧宸ヤ綅")] - public async Task Delete(DeleteWcsStationInput input) - { - var entity = await _wcsStationRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); - await _wcsStationRep.FakeDeleteAsync(entity); //鍋囧垹闄� - //await _wcsStationRep.DeleteAsync(entity); //鐪熷垹闄� - } - - /// <summary> - /// 鏇存柊璁惧宸ヤ綅 - /// </summary> - /// <param name="input"></param> - /// <returns></returns> - [HttpPost] - [ApiDescriptionSettings(Name = "Update")] - [DisplayName("鏇存柊璁惧宸ヤ綅")] - public async Task Update(UpdateWcsStationInput input) - { - var entity = input.Adapt<WcsStation>(); - await _wcsStationRep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); - } - - /// <summary> - /// 鑾峰彇璁惧宸ヤ綅 - /// </summary> - /// <param name="input"></param> - /// <returns></returns> - [HttpGet] - [ApiDescriptionSettings(Name = "Detail")] - [DisplayName("鑾峰彇璁惧宸ヤ綅")] - public async Task<WcsStation> Detail([FromQuery] QueryByIdWcsStationInput input) - { - return await _wcsStationRep.GetFirstAsync(u => u.Id == input.Id); - } - - /// <summary> - /// 鑾峰彇璁惧宸ヤ綅鍒楄〃 - /// </summary> - /// <param name="input"></param> - /// <returns></returns> - [HttpGet] - [ApiDescriptionSettings(Name = "List")] - [DisplayName("鑾峰彇璁惧宸ヤ綅鍒楄〃")] - public async Task<List<WcsStationOutput>> List([FromQuery] PageWcsStationInput input) - { - return await _wcsStationRep.AsQueryable().Select<WcsStationOutput>().ToListAsync(); - } - - /// <summary> - /// 鑾峰彇璁惧ID鍒楄〃 - /// </summary> - /// <returns></returns> - [ApiDescriptionSettings(Name = "WcsDeviceDeviceIdDropdown"), HttpGet] - [DisplayName("鑾峰彇璁惧ID鍒楄〃")] - public async Task<dynamic> WcsDeviceDeviceIdDropdown() - { - return await _wcsStationRep.Context.Queryable<WcsDevice>() - .Select(u => new - { - Label = u.Text, - Value = u.Id - } - ).ToListAsync(); - } - - - - -} diff --git a/Admin.NET/WCS.Application/Util/HttpService.cs b/Admin.NET/WCS.Application/Util/HttpService.cs new file mode 100644 index 0000000..cbb5172 --- /dev/null +++ b/Admin.NET/WCS.Application/Util/HttpService.cs @@ -0,0 +1,26 @@ +锘縰sing Furion.Logging; +using Furion.RemoteRequest.Extensions; +using System.Text; + +namespace WCS.Application; +public class HttpService +{ + private dynamic Urls; + public HttpService() + { + var _sysConfigService = App.GetService<SysConfigService>();//todo 杩欓噷闇�瑕佹祴璇曚笅鐢熷懡鍛ㄦ湡闂 + Urls = _sysConfigService.GetSystemInfo().Result; + } + /// <summary> + /// 璋冪敤WMS鎺ュ彛鍙嶉浠诲姟鎺ュ彛 + /// </summary> + /// <param name="model">浠诲姟瀹屾垚鐘舵��</param> + /// <returns></returns> + public async Task<ResponseTasks> RequestTask(TaskRequest model) + { + string url = Urls.WMSAddress + ":" + Urls.WMSPort; + var result = await (url + "/api/DownAPi/ReceiveWcsSignal").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>(); + Log.Debug("璋冪敤WMS鎺ュ彛鍙嶉浠诲姟鎺ュ彛" + result.ToJson()); + return result; + } +} diff --git a/Web/src/api/wcs/wcsPosition.ts b/Web/src/api/wcs/wcsPosition.ts new file mode 100644 index 0000000..4dda87d --- /dev/null +++ b/Web/src/api/wcs/wcsPosition.ts @@ -0,0 +1,56 @@ +锘縤mport request from '/@/utils/request'; +enum Api { + AddWcsPosition = '/api/wcsPosition/add', + DeleteWcsPosition = '/api/wcsPosition/delete', + UpdateWcsPosition = '/api/wcsPosition/update', + PageWcsPosition = '/api/wcsPosition/page', + DetailWcsPosition = '/api/wcsPosition/detail', + GetWcsDeviceDeviceIdDropdown = '/api/wcsPosition/WcsDeviceDeviceIdDropdown', +} + +// 澧炲姞璁惧宸ヤ綅 +export const addWcsPosition = (params?: any) => + request({ + url: Api.AddWcsPosition, + method: 'post', + data: params, + }); + +// 鍒犻櫎璁惧宸ヤ綅 +export const deleteWcsPosition = (params?: any) => + request({ + url: Api.DeleteWcsPosition, + method: 'post', + data: params, + }); + +// 缂栬緫璁惧宸ヤ綅 +export const updateWcsPosition = (params?: any) => + request({ + url: Api.UpdateWcsPosition, + method: 'post', + data: params, + }); + +// 鍒嗛〉鏌ヨ璁惧宸ヤ綅 +export const pageWcsPosition = (params?: any) => + request({ + url: Api.PageWcsPosition, + method: 'post', + data: params, + }); + +// 璇︽儏璁惧宸ヤ綅 +export const detailWcsPosition = (id: any) => + request({ + url: Api.DetailWcsPosition, + method: 'get', + data: { id }, + }); + +export const getWcsDeviceDeviceIdDropdown = () => + request({ + url: Api.GetWcsDeviceDeviceIdDropdown, + method: 'get' + }); + diff --git a/Web/src/api/wcs/wcsStation.ts b/Web/src/api/wcs/wcsStation.ts deleted file mode 100644 index 71712ca..0000000 --- a/Web/src/api/wcs/wcsStation.ts +++ /dev/null @@ -1,56 +0,0 @@ -锘縤mport request from '/@/utils/request'; -enum Api { - AddWcsStation = '/api/wcsStation/add', - DeleteWcsStation = '/api/wcsStation/delete', - UpdateWcsStation = '/api/wcsStation/update', - PageWcsStation = '/api/wcsStation/page', - DetailWcsStation = '/api/wcsStation/detail', - GetWcsDeviceDeviceIdDropdown = '/api/wcsStation/WcsDeviceDeviceIdDropdown', -} - -// 澧炲姞璁惧宸ヤ綅 -export const addWcsStation = (params?: any) => - request({ - url: Api.AddWcsStation, - method: 'post', - data: params, - }); - -// 鍒犻櫎璁惧宸ヤ綅 -export const deleteWcsStation = (params?: any) => - request({ - url: Api.DeleteWcsStation, - method: 'post', - data: params, - }); - -// 缂栬緫璁惧宸ヤ綅 -export const updateWcsStation = (params?: any) => - request({ - url: Api.UpdateWcsStation, - method: 'post', - data: params, - }); - -// 鍒嗛〉鏌ヨ璁惧宸ヤ綅 -export const pageWcsStation = (params?: any) => - request({ - url: Api.PageWcsStation, - method: 'post', - data: params, - }); - -// 璇︽儏璁惧宸ヤ綅 -export const detailWcsStation = (id: any) => - request({ - url: Api.DetailWcsStation, - method: 'get', - data: { id }, - }); - -export const getWcsDeviceDeviceIdDropdown = () => - request({ - url: Api.GetWcsDeviceDeviceIdDropdown, - method: 'get' - }); - diff --git a/Web/src/views/wcs/wcsStation/component/editDialog.vue b/Web/src/views/wcs/wcsPosition/component/editDialog.vue similarity index 86% rename from Web/src/views/wcs/wcsStation/component/editDialog.vue rename to Web/src/views/wcs/wcsPosition/component/editDialog.vue index d82c3cc..c9f7574 100644 --- a/Web/src/views/wcs/wcsStation/component/editDialog.vue +++ b/Web/src/views/wcs/wcsPosition/component/editDialog.vue @@ -1,5 +1,5 @@ 锘�<template> - <div class="wcsStation-container"> + <div class="wcsPosition-container"> <el-dialog v-model="isShowDialog" :width="800" draggable="" :close-on-click-modal="false"> <template #header> <div style="color: #fff"> @@ -81,9 +81,14 @@ import { ref,onMounted } from "vue"; import { ElMessage } from "element-plus"; import type { FormRules } from "element-plus"; - import { addWcsStation, updateWcsStation, detailWcsStation } from "/@/api/wcs/wcsStation"; - import { getWcsDeviceDeviceIdDropdown } from '/@/api/wcs/wcsStation'; import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils'; + import { getDictLabelByVal as dv } from '/@/utils/dict-utils'; + import { formatDate } from '/@/utils/formatTime'; + import { addWcsPosition, updateWcsPosition, detailWcsPosition } from "/@/api/wcs/wcsPosition"; + import { getWcsDeviceDeviceIdDropdown } from '/@/api/wcs/wcsPosition'; + import { getAPI } from '/@/utils/axios-utils'; + import { SysEnumApi } from '/@/api-services/api'; + //鐖剁骇浼犻�掓潵鐨勫弬鏁� var props = defineProps({ title: { @@ -98,6 +103,8 @@ const ruleForm = ref<any>({}); //鑷娣诲姞鍏朵粬瑙勫垯 const rules = ref<FormRules>({ + stationNum: [{required: true, message: '璇疯緭鍏ュ伐浣嶅彿锛�', trigger: 'blur',},], + plcPos: [{required: true, message: '璇疯緭鍏ュ亸绉婚噺锛�', trigger: 'blur',},], }); // 椤甸潰鍔犺浇鏃� @@ -111,7 +118,7 @@ // 鏀圭敤detail鑾峰彇鏈�鏂版暟鎹潵缂栬緫 let rowData = JSON.parse(JSON.stringify(row)); if (rowData.id) - ruleForm.value = (await detailWcsStation(rowData.id)).data.result; + ruleForm.value = (await detailWcsPosition(rowData.id)).data.result; else ruleForm.value = rowData; isShowDialog.value = true; @@ -134,9 +141,9 @@ if (isValid) { let values = ruleForm.value; if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) { - await addWcsStation(values); + await addWcsPosition(values); } else { - await updateWcsStation(values); + await updateWcsPosition(values); } closeDialog(); } else { diff --git a/Web/src/views/wcs/wcsStation/index.vue b/Web/src/views/wcs/wcsPosition/index.vue similarity index 78% rename from Web/src/views/wcs/wcsStation/index.vue rename to Web/src/views/wcs/wcsPosition/index.vue index a2e056e..343d80a 100644 --- a/Web/src/views/wcs/wcsStation/index.vue +++ b/Web/src/views/wcs/wcsPosition/index.vue @@ -1,5 +1,5 @@ 锘�<template> - <div class="wcsStation-container"> + <div class="wcsPosition-container"> <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> <el-form :model="queryParams" ref="queryForm" labelWidth="90"> <el-row> @@ -28,15 +28,15 @@ <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10"> <el-form-item> <el-button-group style="display: flex; align-items: center;"> - <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'wcsStation:page'"> 鏌ヨ + <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'wcsPosition:page'"> 鏌ヨ </el-button> <el-button icon="ele-Refresh" @click="() => queryParams = {}"> 閲嶇疆 </el-button> <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUI" v-if="!showAdvanceQueryUI" style="margin-left:5px;"> 楂樼骇鏌ヨ </el-button> <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUI" v-if="showAdvanceQueryUI" style="margin-left:5px;"> 闅愯棌 </el-button> - <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddWcsStation" - v-auth="'wcsStation:add'"> 鏂板 </el-button> + <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddWcsPosition" + v-auth="'wcsPosition:add'"> 鏂板 </el-button> </el-button-group> </el-form-item> @@ -57,8 +57,8 @@ </el-table-column> <el-table-column prop="stationNum" label="宸ヤ綅鍙�" show-overflow-tooltip="" /> - <el-table-column prop="plcPos" label="鍋忕Щ閲�" show-overflow-tooltip="" /> <el-table-column prop="posType" - label="娴佺▼瀛楃被鍨�" show-overflow-tooltip=""> + <el-table-column prop="plcPos" label="鍋忕Щ閲�" show-overflow-tooltip="" /> + <el-table-column prop="posType" label="娴佺▼瀛楃被鍨�" show-overflow-tooltip=""> <template #default="scope"> <el-tag :type="dv('PLCDataTypeEnum', scope.row.posType)?.tagType"> {{ dv('PLCDataTypeEnum', scope.row.posType)?.name}}</el-tag> @@ -72,12 +72,12 @@ </template> </el-table-column> <el-table-column label="鎿嶄綔" width="140" align="center" fixed="right" show-overflow-tooltip="" - v-if="auth('wcsStation:update') || auth('wcsStation:delete')"> + v-if="auth('wcsPosition:update') || auth('wcsPosition:delete')"> <template #default="scope"> - <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditWcsStation(scope.row)" - v-auth="'wcsStation:update'"> 缂栬緫 </el-button> - <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delWcsStation(scope.row)" - v-auth="'wcsStation:delete'"> 鍒犻櫎 </el-button> + <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditWcsPosition(scope.row)" + v-auth="'wcsPosition:update'"> 缂栬緫 </el-button> + <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delWcsPosition(scope.row)" + v-auth="'wcsPosition:delete'"> 鍒犻櫎 </el-button> </template> </el-table-column> </el-table> @@ -85,23 +85,26 @@ :total="tableParams.total" :page-sizes="[10, 20, 50, 100, 200, 500]" size="small" background="" @size-change="handleSizeChange" @current-change="handleCurrentChange" layout="total, sizes, prev, pager, next, jumper" /> - <printDialog ref="printDialogRef" :title="printWcsStationTitle" @reloadTable="handleQuery" /> - <editDialog ref="editDialogRef" :title="editWcsStationTitle" @reloadTable="handleQuery" /> + <printDialog ref="printDialogRef" :title="printWcsPositionTitle" @reloadTable="handleQuery" /> + <editDialog ref="editDialogRef" :title="editWcsPositionTitle" @reloadTable="handleQuery" /> </el-card> </div> </template> -<script lang="ts" setup="" name="wcsStation"> +<script lang="ts" setup="" name="wcsPosition"> import { ref } from "vue"; import { ElMessageBox, ElMessage } from "element-plus"; import { auth } from '/@/utils/authFunction'; -import { getDictLabelByVal as dv } from '/@/utils/dict-utils'; -import ModifyRecord from '/@/components/table/modifyRecord.vue'; +import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils'; +import { getDictLabelByVal as dv } from '/@/utils/dict-utils'; +import { formatDate } from '/@/utils/formatTime'; + +import ModifyRecord from '/@/components/table/modifyRecord.vue'; import printDialog from '/@/views/system/print/component/hiprint/preview.vue' -import editDialog from '/@/views/wcs/wcsStation/component/editDialog.vue' -import { pageWcsStation, deleteWcsStation } from '/@/api/wcs/wcsStation'; -import { getWcsDeviceDeviceIdDropdown } from '/@/api/wcs/wcsStation'; +import editDialog from '/@/views/wcs/wcsPosition/component/editDialog.vue' +import { pageWcsPosition, deleteWcsPosition } from '/@/api/wcs/wcsPosition'; +import { getWcsDeviceDeviceIdDropdown } from '/@/api/wcs/wcsPosition'; const showAdvanceQueryUI = ref(false); const printDialogRef = ref(); @@ -115,8 +118,8 @@ total: 0, }); -const printWcsStationTitle = ref(""); -const editWcsStationTitle = ref(""); +const printWcsPositionTitle = ref(""); +const editWcsPositionTitle = ref(""); // 鏀瑰彉楂樼骇鏌ヨ鐨勬帶浠舵樉绀虹姸鎬� const changeAdvanceQueryUI = () => { @@ -126,7 +129,7 @@ // 鏌ヨ鎿嶄綔 const handleQuery = async () => { loading.value = true; - var res = await pageWcsStation(Object.assign(queryParams.value, tableParams.value)); + var res = await pageWcsPosition(Object.assign(queryParams.value, tableParams.value)); tableData.value = res.data.result?.items ?? []; tableParams.value.total = res.data.result?.total; loading.value = false; @@ -140,31 +143,31 @@ }; // 鎵撳紑鏂板椤甸潰 -const openAddWcsStation = () => { - editWcsStationTitle.value = '娣诲姞璁惧宸ヤ綅'; +const openAddWcsPosition = () => { + editWcsPositionTitle.value = '娣诲姞璁惧鐐逛綅绠$悊'; editDialogRef.value.openDialog({}); }; // 鎵撳紑鎵撳嵃椤甸潰 -const openPrintWcsStation = async (row: any) => { - printWcsStationTitle.value = '鎵撳嵃璁惧宸ヤ綅'; +const openPrintWcsPosition = async (row: any) => { + printWcsPositionTitle.value = '鎵撳嵃璁惧鐐逛綅绠$悊'; } // 鎵撳紑缂栬緫椤甸潰 -const openEditWcsStation = (row: any) => { - editWcsStationTitle.value = '缂栬緫璁惧宸ヤ綅'; +const openEditWcsPosition = (row: any) => { + editWcsPositionTitle.value = '缂栬緫璁惧鐐逛綅绠$悊'; editDialogRef.value.openDialog(row); }; // 鍒犻櫎 -const delWcsStation = (row: any) => { +const delWcsPosition = (row: any) => { ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", { confirmButtonText: "纭畾", cancelButtonText: "鍙栨秷", type: "warning", }) .then(async () => { - await deleteWcsStation(row); + await deleteWcsPosition(row); handleQuery(); ElMessage.success("鍒犻櫎鎴愬姛"); }) -- Gitblit v1.8.0