From 78c49a591404ec32d7c2d2e9f4b9bf6010c51e07 Mon Sep 17 00:00:00 2001 From: hwh <332078369@qq.com> Date: 星期四, 12 九月 2024 16:39:28 +0800 Subject: [PATCH] Revert "读写代码测试,问题调整" --- Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs | 126 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 118 insertions(+), 8 deletions(-) diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs index 3949be6..032a946 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs @@ -1,6 +1,8 @@ 锘� using Admin.NET.Core.Service; using Elastic.Clients.Elasticsearch; +using WCS.Application.Entity; +using WCS.Application.Service.WcsDevice.Dto; namespace WCS.Application; @@ -219,7 +221,9 @@ //璇诲彇plc鐨勫�� var modConn = PLCTaskAction.listPlcConn.FirstOrDefault(s => s != null && s.PlcId == modDevice.PlcId); if (modConn == null) - break; + { + continue; + } try { var listPosition = await _wcsDeviceRep.Context.Queryable<WcsPosition>().Where(s => s.DeviceId == modDevice.Id).ToListAsync(); @@ -229,7 +233,7 @@ modDevice.Wcs = Convert.ToString(wcs); //浠诲姟鍙� var modPositionTask = listPosition.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); - (result, var taskNo) = modConn.GetPlcDBValue(modPositionTask.PosType, modDevice.DbNumber, modPositionTask.PlcPos); + (result, var taskNo) = modConn.GetPlcDBValue(modPositionTask.PosType, modDevice.DbNumber, modPositionTask.PlcPos, modPositionTask.StringLength); modDevice.TaskNo = Convert.ToString(taskNo); //浠诲姟绫诲瀷 var modPositionTaskType = listPosition.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷"); @@ -245,8 +249,36 @@ modDevice.EndLocatNo = Convert.ToString(endLocatNo); //鎵樼洏鐮� var modPositionPalletNo = listPosition.FirstOrDefault(s => s.Text == "鎵樼洏鐮�"); - (result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos); + (result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos, modPositionPalletNo.StringLength); modDevice.PalletNo = Convert.ToString(palletNo); + if (cachePlc.Type == PLCTypeEnum.ConveyorLine) + { + //鏀捐揣鎺� + var modPositionReleaseRow = listPosition.FirstOrDefault(s => s.Text == "鏀捐揣鎺�"); + (result, var releaseRow) = modConn.GetPlcDBValue(modPositionReleaseRow.PosType, modDevice.DbNumber, modPositionReleaseRow.PlcPos); + modDevice.ReleaseRow = Convert.ToInt32(releaseRow); + //鏀捐揣鍒� + var modPositionReleaseCol = listPosition.FirstOrDefault(s => s.Text == "鏀捐揣鍒�"); + (result, var releaseCol) = modConn.GetPlcDBValue(modPositionReleaseCol.PosType, modDevice.DbNumber, modPositionReleaseCol.PlcPos); + modDevice.ReleaseCol = Convert.ToInt32(releaseCol); + //鏀捐揣灞� + var modPositionReleaseStorey = listPosition.FirstOrDefault(s => s.Text == "鏀捐揣灞�"); + (result, var releaseStorey) = modConn.GetPlcDBValue(modPositionReleaseStorey.PosType, modDevice.DbNumber, modPositionReleaseStorey.PlcPos); + modDevice.ReleaseStorey = Convert.ToInt32(releaseStorey); + //鍙栬揣鎺� + var modPositionPickRow = listPosition.FirstOrDefault(s => s.Text == "鍙栬揣鎺�"); + (result, var pickRow) = modConn.GetPlcDBValue(modPositionPickRow.PosType, modDevice.DbNumber, modPositionPickRow.PlcPos); + modDevice.PickRow = Convert.ToInt32(pickRow); + //鍙栬揣鍒� + var modPositionPickCol = listPosition.FirstOrDefault(s => s.Text == "鍙栬揣鍒�"); + (result, var pickCol) = modConn.GetPlcDBValue(modPositionPickCol.PosType, modDevice.DbNumber, modPositionPickCol.PlcPos); + modDevice.PickCol = Convert.ToInt32(pickCol); + //鍙栬揣灞� + var modPositionPickStorey = listPosition.FirstOrDefault(s => s.Text == "鍙栬揣灞�"); + (result, var pickStorey) = modConn.GetPlcDBValue(modPositionPickStorey.PosType, modDevice.DbNumber, modPositionPickStorey.PlcPos); + modDevice.PickStorey = Convert.ToInt32(pickStorey); + + } } catch (Exception) { @@ -272,6 +304,69 @@ return list; } + [HttpPost] + [ApiDescriptionSettings(Name = "WriteValue")] + [DisplayName("鍐欏叆鍊�")] + public async Task WriteValue(WriteWcsDeviceInput modDevice) + { + var modPlc = await _wcsDeviceRep.Context.Queryable<WcsPlc>().FirstAsync(s => s.Id == modDevice.PlcId); + if (modPlc == null) + throw Oops.Bah("鎵句笉鍒癙LC淇℃伅"); + PLCUtil modUtil = new PLCUtil(modPlc); + var listPosition = await _wcsDeviceRep.Context.Queryable<WcsPosition>().Where(s => s.DeviceId == modDevice.Id).ToListAsync(); + //(var result, var plc) = modConn.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos); + //modDevice.Plc = Convert.ToString(plc); + //浠诲姟鍙� + var modPositionTask = listPosition.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); + if (modPositionTask != null) + modUtil.SetPlcDBValue(modPositionTask.PosType, modPositionTask.PlcPos, modDevice.TaskNo); + //浠诲姟绫诲瀷 + var modPositionTaskType = listPosition.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷"); + if (modPositionTaskType != null) + modUtil.SetPlcDBValue(modPositionTaskType.PosType, modPositionTaskType.PlcPos, modDevice.TaskType.ToString()); + //璧峰宸ヤ綅 + var modPositionStartLocatNo = listPosition.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅"); + if (modPositionStartLocatNo != null) + modUtil.SetPlcDBValue(modPositionStartLocatNo.PosType, modPositionStartLocatNo.PlcPos, modDevice.StartLocatNo.ToString()); + //鐩殑宸ヤ綅 + var modPositionEndLocatNo = listPosition.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅"); + if (modPositionEndLocatNo != null) + modUtil.SetPlcDBValue(modPositionEndLocatNo.PosType, modPositionEndLocatNo.PlcPos, modDevice.EndLocatNo.ToString()); + //鎵樼洏鐮� + var modPositionPalletNo = listPosition.FirstOrDefault(s => s.Text == "鎵樼洏鐮�"); + if (modPositionPalletNo != null) + modUtil.SetPlcDBValue(modPositionPalletNo.PosType, modPositionPalletNo.PlcPos, modDevice.PalletNo.ToString()); + if (modPlc.Type == PLCTypeEnum.ConveyorLine) + { + //鏀捐揣鎺� + var modPositionReleaseRow = listPosition.FirstOrDefault(s => s.Text == "鏀捐揣鎺�"); + if (modPositionReleaseRow != null) + modUtil.SetPlcDBValue(modPositionReleaseRow.PosType, modPositionReleaseRow.PlcPos, modDevice.ReleaseRow.ToString()); + //鏀捐揣鍒� + var modPositionReleaseCol = listPosition.FirstOrDefault(s => s.Text == "鏀捐揣鍒�"); + if (modPositionReleaseRow != null) + modUtil.SetPlcDBValue(modPositionReleaseCol.PosType, modPositionReleaseCol.PlcPos, modDevice.ReleaseCol.ToString()); + //鏀捐揣灞� + var modPositionReleaseStorey = listPosition.FirstOrDefault(s => s.Text == "鏀捐揣灞�"); + if (modPositionReleaseStorey != null) + modUtil.SetPlcDBValue(modPositionReleaseStorey.PosType, modPositionReleaseStorey.PlcPos, modDevice.ReleaseStorey.ToString()); + //鍙栬揣鎺� + var modPositionPickRow = listPosition.FirstOrDefault(s => s.Text == "鍙栬揣鎺�"); + if (modPositionPickRow != null) + modUtil.SetPlcDBValue(modPositionPickRow.PosType, modPositionPickRow.PlcPos, modDevice.PickRow.ToString()); + //鍙栬揣鍒� + var modPositionPickCol = listPosition.FirstOrDefault(s => s.Text == "鍙栬揣鍒�"); + if (modPositionPickCol != null) + modUtil.SetPlcDBValue(modPositionPickCol.PosType, modPositionPickCol.PlcPos, modDevice.PickCol.ToString()); + //鍙栬揣灞� + var modPositionPickStorey = listPosition.FirstOrDefault(s => s.Text == "鍙栬揣灞�"); + if (modPositionPickStorey != null) + modUtil.SetPlcDBValue(modPositionPickStorey.PosType, modPositionPickStorey.PlcPos, modDevice.PickStorey.ToString()); + + } + modUtil.Close(); + } + #region 鍒嗘嫞鐮佸灈 /// <summary> /// 鑾峰彇鐮佸灈鏈哄櫒浜哄拰鎷嗗灈鏈哄櫒浜哄垪琛� @@ -284,11 +379,11 @@ { return await _wcsDeviceRep.Context.Queryable<WcsPlc>() .Where(w => w.Type == PLCTypeEnum.RobotPalletizer || w.Type == PLCTypeEnum.StackingRobot) - .OrderBy(o => o.Type) + .OrderByDescending(o => o.Type) .Select(u => new { id = u.Id, - name = u.Text + name = u.Text } ).ToListAsync(); } @@ -300,11 +395,26 @@ [HttpGet] [ApiDescriptionSettings(Name = "WcsPackStationPlcList")] [DisplayName("鑾峰彇璁惧瀵瑰簲宸ヤ綅鍒楄〃")] - public async Task<List<WcsDevice>> WcsPackStationPlcList([FromQuery]WcsDeviceBaseInput entry) + public async Task<List<WcsDeviceTaskOrderDto>> WcsPackStationPlcList([FromQuery] WcsDeviceBaseInput entry) { return await _wcsDeviceRep.Context.Queryable<WcsDevice>() - .Where(w => w.PlcId == entry.PlcId) - .OrderBy(o => o.CreateTime) + .LeftJoin<WcsCheckTask>((device, task) => device.StationNum == task.Port) + .Where((device, task) => device.PlcId == entry.PlcId) + .OrderBy((device, task) => device.CreateTime) + .Select((device, task) => new WcsDeviceTaskOrderDto() + { + Id=device.Id, + Text=device.Text, + 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 + }) .ToListAsync(); } #endregion -- Gitblit v1.8.0