From b4083a6b047fc9e0964133c87227213c5154e37a Mon Sep 17 00:00:00 2001 From: IPC-610 <IPC-610@DESKTOP-6LEOOS3> Date: 星期三, 15 一月 2025 15:47:44 +0800 Subject: [PATCH] 11111111 --- Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs | 131 ++++++++++++++++++++++++++++++------------- 1 files changed, 91 insertions(+), 40 deletions(-) diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs index dd5008e..c0c19d2 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs @@ -18,7 +18,7 @@ private readonly SqlSugarRepository<WcsPlc> _wcsPlcRep; private readonly SqlSugarRepository<WcsDevice> _wcsDeviceRep; private readonly SysCacheService _sysCacheService; - public WcsDeviceService(SqlSugarRepository<WcsPlc> wcsPlcRep,SqlSugarRepository<WcsDevice> wcsDeviceRep, SysCacheService sysCacheService) + public WcsDeviceService(SqlSugarRepository<WcsPlc> wcsPlcRep, SqlSugarRepository<WcsDevice> wcsDeviceRep, SysCacheService sysCacheService) { _wcsPlcRep = wcsPlcRep; _wcsDeviceRep = wcsDeviceRep; @@ -82,7 +82,7 @@ case "suoding": // 閿佸畾 modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "48.0", input.LocatNo); break; - + default: break; } @@ -182,50 +182,46 @@ public async Task WriteInfo(WcsDeviceUpInfo input) { WcsPlc modPlc; - string DbNum = "";// DB鍧� - + string DbNum = "DB91";// DB鍧� + if (string.IsNullOrWhiteSpace(input.LocatNo))//濡傛灉宸ヤ綅涓虹┖ { throw Oops.Bah("宸ヤ綅涓嶈兘涓虹┖"); } - var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.IsDelete == false).ToListAsync(); + var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine).ToListAsync(); switch (input.Layer) { case "1": - modPlc = plcList.FirstOrDefault(m=>m.Text == "1灞傛墭鐩樿緭閫佺嚎"); - if (modPlc == null) - throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅"); - DbNum = ""; + modPlc = plcList.FirstOrDefault(m => m.Text == "1灞傛墭鐩樿緭閫佺嚎"); + //DbNum = ""; break; case "2": modPlc = plcList.FirstOrDefault(m => m.Text == "2灞傛墭鐩樿緭閫佺嚎"); - if (modPlc == null) - throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅"); - DbNum = "DB91"; + //DbNum = "DB91"; break; case "3": modPlc = plcList.FirstOrDefault(m => m.Text == "3灞傛墭鐩樿緭閫佺嚎"); - if (modPlc == null) - throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅"); - DbNum = ""; + //DbNum = ""; break; default: throw Oops.Bah("妤煎眰淇℃伅閿欒"); } - - var device = await _wcsDeviceRep.Context.Queryable<WcsDevice>().FirstAsync(s => s.PlcId == modPlc.Id && s.StationNum == input.LocatNo && s.IsDelete == false && s.DeviceType == DeviceTypeEnum.Show); - if (device == null) + if (modPlc == null) + throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅"); + + var device = await _wcsDeviceRep.Context.Queryable<WcsDevice>().FirstAsync(s => s.PlcId == modPlc.Id && s.StationNum == input.LocatNo && s.DeviceType == DeviceTypeEnum.Show); + if (device == null) { throw Oops.Bah("褰撳墠妤煎眰鏈煡璇㈠埌璇ュ伐浣嶄俊鎭�"); } PLCUtil modUtil = new PLCUtil(modPlc); - + // true 锛� 鎵嬪姩妯″紡 false:鑷姩妯″紡 var (result, value) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.4"); if (result.IsSucceed) { - if (input.TypeName != "shoudong" && value.ToString().ToLower() == "false" && input.TypeName != "huifu" && input.TypeName != "UpTask" ) + if (input.TypeName != "shoudong" && value.ToString().ToLower() == "false" && input.TypeName != "huifu" && input.TypeName != "UpTask") { throw Oops.Bah("褰撳墠涓鸿嚜鍔ㄦā寮忥紝璇峰厛鍒囨崲涓烘墜鍔ㄦā寮�"); } @@ -234,7 +230,7 @@ { throw Oops.Bah("璇诲彇PLC鎵嬭嚜鍔ㄥ�煎け璐�"); } - + switch (input.TypeName) { case "zidong": // 鑷姩 @@ -258,10 +254,10 @@ { throw Oops.Bah("浜嬩欢缁撴灉閿欒"); } - + break; case "1diandong": // 1鐐瑰姩 - if(input.FuncName == "true") + if (input.FuncName == "true") { modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.7", "true"); } @@ -403,11 +399,11 @@ case "fanzhuansheng": if (input.FuncName == "true") { - modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "51.7", "true"); + modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.0", "true"); } else if (input.FuncName == "false") { - modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "51.7", "false"); + modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.0", "false"); } else { @@ -417,11 +413,11 @@ case "fanzhuanjiang": if (input.FuncName == "true") { - modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "52.0", "true"); + modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.1", "true"); } else if (input.FuncName == "false") { - modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "52.0", "false"); + modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.1", "false"); } else { @@ -445,8 +441,8 @@ { throw Oops.Bah("璇诲彇PLC鍊煎け璐�"); } - - + + break; default: break; @@ -547,7 +543,7 @@ Thread.Sleep(1000); modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.2", "false"); break; - + default: break; } @@ -570,7 +566,7 @@ WcsPlc modPlc; string DbNum = "";// DB鍧� - + var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.IsDelete == false).ToListAsync(); if (input.Layer == "1") { @@ -685,7 +681,7 @@ { throw Oops.Bah("浜嬩欢缁撴灉閿欒"); } - break; + break; case "TwoBoxStop": if (input.FuncName == "true") @@ -717,7 +713,7 @@ { throw Oops.Bah("鎿嶄綔绫诲瀷淇℃伅閿欒"); } - + } #endregion @@ -970,7 +966,7 @@ (result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos, modPositionPalletNo.StringLength); modDevice.PalletNo = Convert.ToString(palletNo); Console.WriteLine(modDevice.DbNumber + "." + modPositionPalletNo.PlcPos + "----------"); - } + } if (cachePlc.Type == PLCTypeEnum.ConveyorLine || cachePlc.Type == PLCTypeEnum.StackingMachine) { //鏀捐揣鎺� @@ -1015,11 +1011,11 @@ (result, var pickStorey) = modConn.GetPlcDBValue(modPositionPickStorey.PosType, modDevice.DbNumber, modPositionPickStorey.PlcPos); modDevice.PickStorey = Convert.ToInt32(pickStorey); } - + if (cachePlc.Type == PLCTypeEnum.StackingMachine) { //璺烘満鐨勮捣濮嬪伐浣嶇敤鍙栬揣鎺掑垪灞� - modDevice.StartLocatNo = $"{modDevice.PickRow.ToString().PadLeft(2,'0')}{modDevice.PickCol.ToString().PadLeft(2, '0')}{modDevice.PickStorey.ToString().PadLeft(2, '0')}"; + modDevice.StartLocatNo = $"{modDevice.PickRow.ToString().PadLeft(2, '0')}{modDevice.PickCol.ToString().PadLeft(2, '0')}{modDevice.PickStorey.ToString().PadLeft(2, '0')}"; //璺烘満鐨勭洰鐨勫伐浣嶇敤鏀捐揣鎺掑垪灞� modDevice.EndLocatNo = $"{modDevice.ReleaseRow.ToString().PadLeft(2, '0')}{modDevice.ReleaseCol.ToString().PadLeft(2, '0')}{modDevice.ReleaseStorey.ToString().PadLeft(2, '0')}"; } @@ -1157,7 +1153,7 @@ var modPositionEndLocatNo = listPosition.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅"); if (modPositionEndLocatNo != null) result = modUtil.SetPlcDBValue(modPositionEndLocatNo.PosType, modDbDevice.DbNumber, modPositionEndLocatNo.PlcPos, modDevice.EndLocatNo.ToString()); - } + } } //鎵樼洏鐮� if (modDevice.PalletNo != null) @@ -1237,7 +1233,7 @@ public async Task<dynamic> WcsPackPlcList() { return await _wcsDeviceRep.Context.Queryable<WcsPlc>() - .Where(w => w.Type == PLCTypeEnum.RobotPalletizer || w.Type == PLCTypeEnum.StackingRobot) + .Where(w => w.Type == PLCTypeEnum.RobotPalletizer /*|| w.Type == PLCTypeEnum.StackingRobot*/) .OrderByDescending(o => o.Type) .Select(u => new { @@ -1282,7 +1278,7 @@ PZNo = task.PZNo, Qty = task.Qty, - PlcId=device.PlcId, + PlcId = device.PlcId, Type = plc.Type }) .ToListAsync(); @@ -1294,7 +1290,62 @@ if (modUtil.Connected) { connStatus = true; - } + } + foreach (var item in list) + { + item.PlcStatus = connStatus; + } + return list; + } + /// <summary> + /// 鑾峰彇璁惧瀵瑰簲宸ヤ綅鍒楄〃 + /// </summary> + /// <param name="entry"></param> + /// <returns></returns> + [HttpGet] + [ApiDescriptionSettings(Name = "WcsStackingRobotList")] + [DisplayName("鑾峰彇璁惧瀵瑰簲宸ヤ綅鍒楄〃")] + public async Task<List<WcsDeviceTaskOrderDto>> WcsStackingRobotList() + { + //var list = await _wcsDeviceRep.AsQueryable() + // .LeftJoin<WcsPlc>((a, b) => a.PlcId == b.Id) + // .Where((a, b) => a.DeviceType == DeviceTypeEnum.Business) + // .Select<WcsDeviceOutput>((a, b) => new WcsDeviceOutput() { Type = b.Type }, true) + // .ToListAsync(); + + + var list = await _wcsDeviceRep.Context.Queryable<WcsCheckTask>() + .LeftJoin<WcsDevice>((task, device) => device.StationNum == task.Port) + .InnerJoin<WcsPlc>((task, device, plc) => device.PlcId == plc.Id) + .Where((task, device, plc) => task.Id <= 3) + .OrderBy((task, device, plc) => device.CreateTime) + .Select((task, device, plc) => new WcsDeviceTaskOrderDto() + { + Id = device.Id, + TaskId = task.Id, + Text = task.Id.ToString() + "鍙峰嚭搴撳垎鎷g嚎", + TaskNo = task.TaskNo, + OrderNo = task.OrderNo, + LotNo = task.LotNo, + SkuNo = task.SkuNo, + SkuName = task.SkuName, + LineNo = task.LineNo, + Status = task.Status, + PZNo = task.PZNo, + Qty = task.Qty, + PlcId = device.PlcId, + Type = plc.Type + }) + .ToListAsync(); + + bool connStatus = false; + //鑾峰彇璁惧鐨勭姸鎬� + var modPlc = await _wcsDeviceRep.Context.Queryable<WcsPlc>().FirstAsync(s => s.Id == list[0].PlcId); + PLCUtil modUtil = new PLCUtil(modPlc); + if (modUtil.Connected) + { + connStatus = true; + } foreach (var item in list) { item.PlcStatus = connStatus; -- Gitblit v1.8.0