From d7ccef3c601438d5a3726cc10b4c663b52a8fbf1 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期二, 10 九月 2024 16:44:33 +0800
Subject: [PATCH] 增加物料品种信息维护表,增加物料品种管理菜单,分拣码垛绑定任务时维护品种信息

---
 Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs |  124 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 119 insertions(+), 5 deletions(-)

diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
index 9c32c01..761c8f9 100644
--- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
@@ -1,4 +1,9 @@
 锘�
+using Admin.NET.Core.Service;
+using Elastic.Clients.Elasticsearch;
+using WCS.Application.Entity;
+using WCS.Application.Service.WcsDevice.Dto;
+
 namespace WCS.Application;
 
 /// <summary>
@@ -8,9 +13,11 @@
 public class WcsDeviceService : IDynamicApiController, ITransient
 {
     private readonly SqlSugarRepository<WcsDevice> _wcsDeviceRep;
-    public WcsDeviceService(SqlSugarRepository<WcsDevice> wcsDeviceRep)
+    private readonly SysCacheService _sysCacheService;
+    public WcsDeviceService(SqlSugarRepository<WcsDevice> wcsDeviceRep, SysCacheService sysCacheService)
     {
         _wcsDeviceRep = wcsDeviceRep;
+        _sysCacheService = sysCacheService;
     }
 
     /// <summary>
@@ -199,17 +206,124 @@
     {
         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 listConn = PLCTaskAction.listPlcConn;
         foreach (var modDevice in list)
         {
-            var modUtil = listConn.FirstOrDefault(s => s != null && s.PlcId == modDevice.PlcId);
-            modDevice.Status = modUtil == null ? false : modUtil.Connected;
-        }
+            if (_sysCacheService.ExistKey("PLCCONN" + modDevice.PlcId))
+            {
+                var cachePlc = _sysCacheService.Get<WcsPlc>("PLCCONN" + modDevice.PlcId);
+                modDevice.Status = cachePlc.IsConn;
+                if (modDevice.Status)
+                {
+                    //璇诲彇plc鐨勫��
+                    var modConn = PLCTaskAction.listPlcConn.FirstOrDefault(s => s != null && s.PlcId == modDevice.PlcId);
+                    if (modConn == null)
+                    {
+                        continue;
+                    }
+                    try
+                    {
+                        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);
+                        (result, var wcs) = modConn.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos);
+                        modDevice.Wcs = Convert.ToString(wcs);
+                        //浠诲姟鍙�
+                        var modPositionTask = listPosition.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+                        (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 == "浠诲姟绫诲瀷");
+                        (result, var taskType) = modConn.GetPlcDBValue(modPositionTaskType.PosType, modDevice.DbNumber, modPositionTaskType.PlcPos);
+                        modDevice.TaskType = (TaskTypeEnum)Convert.ToInt32(taskType);
+                        //璧峰宸ヤ綅
+                        var modPositionStartLocatNo = listPosition.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅");
+                        (result, var startLocatNo) = modConn.GetPlcDBValue(modPositionStartLocatNo.PosType, modDevice.DbNumber, modPositionStartLocatNo.PlcPos);
+                        modDevice.StartLocatNo = Convert.ToString(startLocatNo);
+                        //鐩殑宸ヤ綅
+                        var modPositionEndLocatNo = listPosition.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
+                        (result, var endLocatNo) = modConn.GetPlcDBValue(modPositionEndLocatNo.PosType, modDevice.DbNumber, modPositionEndLocatNo.PlcPos);
+                        modDevice.EndLocatNo = Convert.ToString(endLocatNo);
+                        //鎵樼洏鐮�
+                        var modPositionPalletNo = listPosition.FirstOrDefault(s => s.Text == "鎵樼洏鐮�");
+                        (result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos, modPositionPalletNo.StringLength);
+                        modDevice.PalletNo = Convert.ToString(palletNo);
+                    }
+                    catch (Exception)
+                    {
 
+                    }
+                }
+            }
+            else
+            {
+                modDevice.Status = false;
+            }
+
+            //modDevice.TaskNo = "TK00001";
+            //modDevice.TaskType = TaskTypeEnum.In;
+            //modDevice.PalletNo = "2024209032";
+            //modDevice.StartLocatNo = "010101";
+            //modDevice.EndLocatNo = "020202";
+            //modDevice.Wcs = new Random().Next(100).ToString();
+            //modDevice.Plc = new Random().Next(100).ToString();
+            //modDevice.Status = true;
+        }
 
         return list;
     }
+
+    #region 鍒嗘嫞鐮佸灈
+    /// <summary>
+    /// 鑾峰彇鐮佸灈鏈哄櫒浜哄拰鎷嗗灈鏈哄櫒浜哄垪琛�
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet]
+    [ApiDescriptionSettings(Name = "WcsPackPlcList")]
+    [DisplayName("鑾峰彇鐮佸灈鏈哄櫒浜哄拰鎷嗗灈鏈哄櫒浜哄垪琛�")]
+    public async Task<dynamic> WcsPackPlcList()
+    {
+        return await _wcsDeviceRep.Context.Queryable<WcsPlc>()
+                .Where(w => w.Type == PLCTypeEnum.RobotPalletizer || w.Type == PLCTypeEnum.StackingRobot)
+                .OrderByDescending(o => o.Type)
+                .Select(u => new
+                {
+                    id = u.Id,
+                    name = u.Text
+                }
+                ).ToListAsync();
+    }
+    /// <summary>
+    /// 鑾峰彇璁惧瀵瑰簲宸ヤ綅鍒楄〃
+    /// </summary>
+    /// <param name="entry"></param>
+    /// <returns></returns>
+    [HttpGet]
+    [ApiDescriptionSettings(Name = "WcsPackStationPlcList")]
+    [DisplayName("鑾峰彇璁惧瀵瑰簲宸ヤ綅鍒楄〃")]
+    public async Task<List<WcsDeviceTaskOrderDto>> WcsPackStationPlcList([FromQuery]WcsDeviceBaseInput entry)
+    {       
+        return await _wcsDeviceRep.Context.Queryable<WcsDevice>()
+                .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,
+                    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