From b9f5657fc9a083238a1a27ef35ef885f1e912b4f Mon Sep 17 00:00:00 2001
From: huanghongfeng <huanghongfeng@hnkhzn.com>
Date: 星期二, 25 六月 2024 15:24:24 +0800
Subject: [PATCH] 后端

---
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/ReadplcController.cs |  483 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 483 insertions(+), 0 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/ReadplcController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/ReadplcController.cs"
index d49784a..8bb61cc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/ReadplcController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/ReadplcController.cs"
@@ -1,5 +1,7 @@
 锘縰sing Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
 using System.Linq;
+using WIDESEA_Comm;
 using WIDESEA_Core.EFDbContext;
 using WIDESEA_Core.Extensions;
 using WIDESEA_WCS.IRepositories;
@@ -13,6 +15,487 @@
     [ApiController]
     public class ReadplcController : Controller
     {
+        #region PCS骞抽潰鍥�
+        public class SectionData    //姝诲弬鏁�
+        {
+            public int r_direction { get; set; }
+            public bool r_machine_nr { get; set; }
+            public int r_part_process { get; set; }
+            public int r_part_status { get; set; }
+            public string r_wheel_SN { get; set; }
+            public int r_wheel_type { get; set; }
+            public string stackerNo { get; set; }
+        }
+
+        #region 杈婇亾1
+        [HttpPost("One_unit_plc")]
+        public IActionResult One_unit_plc()
+        {
+            var DBIems = WheelDBItem.VK4WheelDBItem; //鑾峰彇杈婇亾锛岃緭閫佺嚎淇℃伅
+            var DBIems2 = VKDBItem.VK4DBItem;       //VK4鐘舵�佷俊鎭璞¢泦鍚�
+            var DBIems3 = GantryDBItem.VK4GantryDBItem.Where(x => x.Name == "Gantry1").FirstOrDefault();       // VK4妗佹灦鏈烘鎵嬪璞¢泦鍚�
+
+
+
+            var Section_one = DBIems.Where(x => IsInRange(x.StackerNo, 4, 13, 4, 24)).ToList();
+            var Section_two = DBIems.Where(x => IsInRange(x.StackerNo, 4, 11, 4, 12)).ToList();
+            var Section_three = DBIems.Where(x => IsInRange(x.StackerNo, 4, 9, 4, 10)).ToList();
+            var Section_four = DBIems.Where(x => IsInRange(x.StackerNo, 4, 1, 4, 8)).ToList();
+
+
+            var Section_six = DBIems.Where(x => IsInRange(x.StackerNo, 10, 1, 10, 2)).ToList();   //10.1-10.2
+            var Section_seven = DBIems.Where(x => IsInRange(x.StackerNo, 10, 3, 10, 4)).ToList(); //10.3-10.4
+            var Section_eight = DBIems.Where(x => IsInRange(x.StackerNo, 10, 7, 10, 8)).ToList();     //10.7-10.8
+            var Section_nine = DBIems.Where(x => IsInRange(x.StackerNo, 10, 9, 10, 10)).OrderByDescending(x => x.StackerNo).ToList();      //10.9-10.10
+
+
+
+            #region
+
+            //var Section_five = DBIems.Where(x => IsInRange(x.StackerNo, 10, 5, 10, 6) || IsInRange(x.StackerNo, 10, 11, 10, 12)).ToList();
+
+            var Section_five = DBIems
+                .Where(x => IsInRange(x.StackerNo, 10, 5, 10, 6) || IsInRange(x.StackerNo, 10, 11, 10, 12))
+                .Select(x => CreateSectionFiveItem(x))
+                .ToList();
+            #endregion
+
+
+
+
+
+            //鑰佹満姊版墜
+            var Section_ten = DBIems.Where(x => x.StackerNo == "鏈烘鎵�1")
+               .Select(x => new
+               {
+                   stackerNo = x.StackerNo,
+                   r_wheel_SN = x.R_wheel_SN,
+                   r_wheel_type = x.R_wheel_type,
+                   r_part_status = x.R_part_status,
+                   r_part_process = x.R_part_process,
+                   g_name = DBIems3.Name,
+                   g_communication_IO = DBIems3.communication_IO,
+                   g_drive_fault = DBIems3.drive_fault,
+                   g_emergency_stop_portal = DBIems3.emergency_stop_portal,
+                   g_gantry_state = DBIems3.gantry_state,
+                   g_portal_fault = DBIems3.portal_fault,
+                   g_power_on = DBIems3.power_on,
+                   g_programm_running = DBIems3.programm_running,
+                   g_ready_for_auto_start = DBIems3.ready_for_auto_start,
+                   g_ready_for_operate = DBIems3.ready_for_operate,
+                   g_state_AUTO = DBIems3.state_AUTO,
+                   g_state_JOG = DBIems3.state_JOG,
+                   g_state_MDA = DBIems3.state_MDA,
+
+               })
+                .ToList();
+
+
+
+            //鏂版満姊版墜锛堜笅鏂欏彛浣嶏級
+            var Section_twelve = DBIems.Where(x => x.StackerNo == "鏈烘鎵�1")
+                .Select(x => new
+                {
+                    stackerNo = x.StackerNo,
+                    r_wheel_SN = x.R_wheel_SN,
+                    r_wheel_type = x.R_wheel_type,
+                    r_part_status = x.R_part_status,
+                    r_part_process = x.R_part_process,
+
+
+
+                })
+                .ToList();
+
+
+            List<SectionData> sectDataList7 = new List<SectionData>();
+            var seDataList7 = new SectionData
+            {
+                r_direction = 0,
+                r_machine_nr = false,
+                r_part_process = 1,         //璇诲彇杞﹁疆闆朵欢宸ヨ壓
+                r_part_status = 0,          //璇诲彇杞﹁疆闆朵欢鐘舵��
+                r_wheel_SN = "2222",
+                r_wheel_type = 3,       //璇诲彇杞﹁疆绫诲瀷
+                stackerNo = "10.12",
+
+            };
+            sectDataList7.Add(seDataList7);
+
+            var Section_eleven = sectDataList7.ToList();
+
+            var Section_thirteen = DBIems.Where(x => x.StackerNo == "4.11").ToList();   //瑙嗚妫�娴嬪彴
+            var Section_fourteen = DBIems.Where(x => x.StackerNo == "4.12").ToList();   //瑙嗚妫�娴嬪彴
+
+            var Section_fifteen = DBIems2.ToList();
+
+            var data = new
+            {
+                Section_one,
+                Section_two,
+                Section_three,
+                Section_four,
+                Section_five,
+                Section_six,
+                Section_seven,
+                Section_eight,
+                Section_nine,
+                Section_ten,   //鑰佹満姊版墜
+                Section_eleven,   //娑傛补鏈�
+                Section_twelve,     //鏂版満姊版墜
+                Section_thirteen,  //鏈�宸﹁竟
+                Section_fourteen,  //绗簩涓潬娑傛补鏈�
+                Section_fifteen     //VK4淇℃伅
+
+            };
+
+            return Ok(data);
+        }
+
+        private object CreateSectionFiveItem(WheelDBItem x)
+        {
+            var stackerToMachineMap = new Dictionary<string, string>
+        {
+            { "10.5", "Machine1" },
+            { "10.6", "Machine2" },
+            { "10.11", "Machine3" },
+            { "10.12", "Machine4" }
+        };
+            var machineDataLookup = MachineDBItem.VK4MachineDBItem.Where(x => x.Name == "Machine1" || x.Name == "Machine2" || x.Name == "Machine3" || x.Name == "Machine4").ToDictionary(x => x.Name, x => x);       //VK4鏈哄簥瀵硅薄闆嗗悎
+            if (stackerToMachineMap.TryGetValue(x.StackerNo, out var machineName) && machineDataLookup.TryGetValue(machineName, out var machineData))
+            {
+                return new
+                {
+                    stackerNo = x.StackerNo,
+                    r_wheel_SN = x.R_wheel_SN,
+                    r_wheel_type = x.R_wheel_type,
+                    r_part_status = x.R_part_status,
+                    r_part_process = x.R_part_process,
+                    c_machine_state = machineData.machine_state,
+
+                };
+            }
+            else
+            {
+                return new
+                {
+                    StackerNo = (string)null,
+
+                };
+            }
+        }
+
+        [HttpGet("Four_unit_plc")]
+        public IActionResult Four_unit_plc(string staname)
+        {
+            var data = MachineDBItem.VK4MachineDBItem.Where(x => x.Name == staname).ToList();
+
+            return Ok(data);
+        }
+        #endregion
+
+        #region 杈婇亾2
+        [HttpPost("Two_unit_plc")]
+        public IActionResult Two_unit_plc()
+        {
+            var DBIems = WheelDBItem.VK4WheelDBItem;
+            var DBIems3 = GantryDBItem.VK4GantryDBItem.Where(x => x.Name == "Gantry2").FirstOrDefault();
+
+            List<SectionData> DataList2 = new List<SectionData>();
+            var Section_one = DBIems.Where(x => IsInRange(x.StackerNo, 5, 13, 5, 24)).ToList();
+            var Section_two = DBIems.Where(x => IsInRange(x.StackerNo, 5, 11, 5, 12)).ToList();
+            var Section_three = DBIems.Where(x => IsInRange(x.StackerNo, 5, 9, 5, 10)).ToList();
+            var Section_four = DBIems.Where(x => IsInRange(x.StackerNo, 5, 1, 5, 8)).ToList();
+
+
+            #region
+
+            //var Section_five = DBIems.Where(x => IsInRange(x.StackerNo, 20, 5, 20, 6) || IsInRange(x.StackerNo, 20, 11, 20, 12)).ToList();       //杞﹂棿
+
+            var Section_five = DBIems
+                .Where(x => IsInRange(x.StackerNo, 20, 5, 20, 6) || IsInRange(x.StackerNo, 20, 11, 20, 12))
+                .Select(x => CreateSectionFiveItem2(x))
+                .ToList();
+            #endregion
+
+
+            var Section_six = DBIems.Where(x => IsInRange(x.StackerNo, 20, 1, 20, 2)).ToList();   //10.1-10.2
+            var Section_seven = DBIems.Where(x => IsInRange(x.StackerNo, 20, 3, 20, 4)).ToList(); //10.3-10.4
+            var Section_eight = DBIems.Where(x => IsInRange(x.StackerNo, 20, 7, 20, 8)).ToList();     //10.7-10.8
+            var Section_nine = DBIems.Where(x => IsInRange(x.StackerNo, 20, 9, 20, 10)).OrderByDescending(x => x.StackerNo).ToList();      //10.9-10.10
+
+            //鑰佹満姊版墜锛堟満搴婁綅锛�
+            var Section_ten = DBIems.Where(x => x.StackerNo == "鏈烘鎵�2")
+               .Select(x => new
+               {
+                   stackerNo = x.StackerNo,
+                   r_wheel_SN = x.R_wheel_SN,
+                   r_wheel_type = x.R_wheel_type,
+                   r_part_status = x.R_part_status,
+                   r_part_process = x.R_part_process,
+                   g_name = DBIems3.Name,
+                   g_communication_IO = DBIems3.communication_IO,
+                   g_drive_fault = DBIems3.drive_fault,
+                   g_emergency_stop_portal = DBIems3.emergency_stop_portal,
+                   g_gantry_state = DBIems3.gantry_state,
+                   g_portal_fault = DBIems3.portal_fault,
+                   g_power_on = DBIems3.power_on,
+                   g_programm_running = DBIems3.programm_running,
+                   g_ready_for_auto_start = DBIems3.ready_for_auto_start,
+                   g_ready_for_operate = DBIems3.ready_for_operate,
+                   g_state_AUTO = DBIems3.state_AUTO,
+                   g_state_JOG = DBIems3.state_JOG,
+                   g_state_MDA = DBIems3.state_MDA,
+
+               })
+                .ToList();
+
+
+            var Section_twelve = DBIems.Where(x => x.StackerNo == "鏈烘鎵�2").ToList();      //鏂版満姊版墜锛堜笅鏂欏彛浣嶏級
+
+
+            List<SectionData> sectDataList7 = new List<SectionData>();
+            var seDataList7 = new SectionData
+            {
+                r_direction = 0,
+                r_machine_nr = false,
+                r_part_process = 1,         //璇诲彇杞﹁疆闆朵欢宸ヨ壓
+                r_part_status = 0,          //璇诲彇杞﹁疆闆朵欢鐘舵��
+                r_wheel_SN = "2222",
+                r_wheel_type = 3,       //璇诲彇杞﹁疆绫诲瀷
+                stackerNo = "20.12",
+
+            };
+            sectDataList7.Add(seDataList7);
+
+            var Section_eleven = sectDataList7.ToList();        //娑傛补鏈�
+
+            var Section_thirteen = DBIems.Where(x => x.StackerNo == "5.11").ToList();   //瑙嗚妫�娴嬪彴
+            var Section_fourteen = DBIems.Where(x => x.StackerNo == "5.12").ToList();   //瑙嗚妫�娴嬪彴
+
+            var data = new
+            {
+                Section_one,
+                Section_two,
+                Section_three,
+                Section_four,
+                Section_five,
+                Section_six,
+                Section_seven,
+                Section_eight,
+                Section_nine,
+                Section_ten,
+                Section_eleven,
+                Section_twelve,
+                Section_thirteen,
+                Section_fourteen
+
+            };
+
+            return Ok(data);
+        }
+
+        private object CreateSectionFiveItem2(WheelDBItem x)
+        {
+            var stackerToMachineMap = new Dictionary<string, string>
+        {
+            { "20.5", "Machine5" },
+            { "20.6", "Machine6" },
+            { "20.11", "Machine7" },
+            { "20.12", "Machine8" }
+        };
+            var machineDataLookup = MachineDBItem.VK4MachineDBItem.Where(x => x.Name == "Machine5" || x.Name == "Machine6" || x.Name == "Machine7" || x.Name == "Machine8").ToDictionary(x => x.Name, x => x);       //VK4鏈哄簥瀵硅薄闆嗗悎
+            if (stackerToMachineMap.TryGetValue(x.StackerNo, out var machineName) && machineDataLookup.TryGetValue(machineName, out var machineData))
+            {
+                return new
+                {
+                    stackerNo = x.StackerNo,
+                    r_wheel_SN = x.R_wheel_SN,
+                    r_wheel_type = x.R_wheel_type,
+                    r_part_status = x.R_part_status,
+                    r_part_process = x.R_part_process,
+                    c_machine_state = machineData.machine_state,
+
+                };
+            }
+            else
+            {
+                return new
+                {
+                    StackerNo = (string)null,
+
+                };
+            }
+        }
+
+        [HttpGet("Four_unit_plc2")]
+        public IActionResult Four_unit_plc2(string staname)
+        {
+            var data = MachineDBItem.VK4MachineDBItem.Where(x => x.Name == staname).ToList();
+
+            return Ok(data);
+        }
+        #endregion
+
+
+
+        #region 杈婇亾3
+        [HttpPost("Three_unit_plc")]
+        public IActionResult Three_unit_plc()
+        {
+
+            var DBIems = WheelDBItem.VK5WheelDBItem;
+            var DBIems2 = VKDBItem.VK5DBItem;       //VK4鐘舵�佷俊鎭璞¢泦鍚�
+            var DBIems3 = GantryDBItem.VK5GantryDBItem.Where(x => x.Name == "Gantry3").FirstOrDefault();
+            var Section_one = DBIems.Where(x => IsInRange(x.StackerNo, 6, 13, 6, 20) || x.StackerNo == "6.24" || x.StackerNo == "7.21").ToList();
+            var Section_two = DBIems.Where(x => IsInRange(x.StackerNo, 6, 11, 6, 12)).ToList();
+            var Section_three = DBIems.Where(x => IsInRange(x.StackerNo, 6, 9, 6, 10)).ToList();
+            var Section_four = DBIems.Where(x => IsInRange(x.StackerNo, 6, 1, 6, 8)).ToList();
+            var Section_thirteen = DBIems.Where(x => IsInRange(x.StackerNo, 6, 21, 6, 23)).ToList();
+
+            //杞﹂棿
+            #region
+
+            //var Section_five = DBIems.Where(x => IsInRange(x.StackerNo, 30, 4, 30, 5) || IsInRange(x.StackerNo, 30, 9, 30, 10)).ToList();       //杞﹂棿
+
+            var Section_five = DBIems
+                .Where(x => IsInRange(x.StackerNo, 30, 4, 30, 5) || IsInRange(x.StackerNo, 30, 9, 30, 10))
+                .Select(x => CreateSectionFiveItem3(x))
+                .ToList();
+            #endregion
+
+
+            var Section_six = DBIems.Where(x => x.StackerNo == "30.1").ToList();   //30.7
+            var Section_seven = DBIems.Where(x => IsInRange(x.StackerNo, 30, 2, 30, 3)).ToList(); //30.2-30.3
+            var Section_eight = DBIems.Where(x => x.StackerNo == "30.6").ToList();     //30.6
+            var Section_nine = DBIems.Where(x => IsInRange(x.StackerNo, 30, 7, 30, 8)).ToList();      //30.7-30.8
+
+            //鑰佹満姊版墜锛堟満搴婁綅锛�
+            var Section_ten = DBIems.Where(x => x.StackerNo == "鏈烘鎵�3")
+               .Select(x => new
+               {
+                   stackerNo = x.StackerNo,
+                   r_wheel_SN = x.R_wheel_SN,
+                   r_wheel_type = x.R_wheel_type,
+                   r_part_status = x.R_part_status,
+                   r_part_process = x.R_part_process,
+                   g_name = DBIems3.Name,
+                   g_communication_IO = DBIems3.communication_IO,
+                   g_drive_fault = DBIems3.drive_fault,
+                   g_emergency_stop_portal = DBIems3.emergency_stop_portal,
+                   g_gantry_state = DBIems3.gantry_state,
+                   g_portal_fault = DBIems3.portal_fault,
+                   g_power_on = DBIems3.power_on,
+                   g_programm_running = DBIems3.programm_running,
+                   g_ready_for_auto_start = DBIems3.ready_for_auto_start,
+                   g_ready_for_operate = DBIems3.ready_for_operate,
+                   g_state_AUTO = DBIems3.state_AUTO,
+                   g_state_JOG = DBIems3.state_JOG,
+                   g_state_MDA = DBIems3.state_MDA,
+
+               })
+                .ToList();
+            var Section_twelve = DBIems.Where(x => x.StackerNo == "鏈烘鎵�3").ToList();      //鏂版満姊版墜锛堜笅鏂欏彛浣嶏級
+
+
+            List<SectionData> sectDataList7 = new List<SectionData>();
+            var seDataList7 = new SectionData
+            {
+                r_direction = 0,
+                r_machine_nr = false,
+                r_part_process = 1,         //璇诲彇杞﹁疆闆朵欢宸ヨ壓
+                r_part_status = 0,          //璇诲彇杞﹁疆闆朵欢鐘舵��
+                r_wheel_SN = "",
+                r_wheel_type = 3,       //璇诲彇杞﹁疆绫诲瀷
+                stackerNo = "30.12",
+
+            };
+            sectDataList7.Add(seDataList7);
+
+            var Section_eleven = sectDataList7.ToList();  //娑傛补鏈�
+
+            var Section_fifteen = DBIems2.ToList();
+
+            var data = new
+            {
+                Section_one,
+                Section_two,
+                Section_three,
+                Section_four,
+                Section_five,
+                Section_six,
+                Section_seven,
+                Section_eight,
+                Section_nine,
+                Section_ten,
+                Section_eleven,
+                Section_twelve,
+                Section_thirteen,
+                Section_fifteen
+            };
+
+            return Ok(data);
+        }
+
+        private object CreateSectionFiveItem3(WheelDBItem x)
+        {
+            var stackerToMachineMap = new Dictionary<string, string>
+        {
+            { "30.4", "Machine9" },
+            { "30.5", "Machine10" },
+            { "30.9", "Machine11" },
+            { "30.10", "Machine12" }
+        };
+            var machineDataLookup = MachineDBItem.VK5MachineDBItem.Where(x => x.Name == "Machine9" || x.Name == "Machine10" || x.Name == "Machine11" || x.Name == "Machine12").ToDictionary(x => x.Name, x => x);       //VK4鏈哄簥瀵硅薄闆嗗悎
+            if (stackerToMachineMap.TryGetValue(x.StackerNo, out var machineName) && machineDataLookup.TryGetValue(machineName, out var machineData))
+            {
+                return new
+                {
+                    stackerNo = x.StackerNo,
+                    r_wheel_SN = x.R_wheel_SN,
+                    r_wheel_type = x.R_wheel_type,
+                    r_part_status = x.R_part_status,
+                    r_part_process = x.R_part_process,
+                    c_machine_state = machineData.machine_state,
+
+                };
+            }
+            else
+            {
+                return new
+                {
+                    StackerNo = (string)null,
+
+                };
+            }
+        }
+
+        [HttpGet("Four_unit_plc3")]
+        public IActionResult Four_unit_plc3(string staname)
+        {
+            var data = MachineDBItem.VK5MachineDBItem.Where(x => x.Name == staname).ToList();
+
+            return Ok(data);
+        }
+        #endregion
+
+
+
+        // 杈呭姪鏂规硶锛氭鏌ョ粰瀹氱殑 stackerNo 鏄惁鍦ㄦ寚瀹氱殑鑼冨洿鍐�
+        private bool IsInRange(string stackerNo, int startRow, int startColumn, int endRow, int endColumn)
+        {
+            string[] parts = stackerNo.Split('.');
+            if (parts.Length != 2)
+                return false;
+
+            if (!int.TryParse(parts[0], out int row) || !int.TryParse(parts[1], out int column))
+                return false;
+
+            return row == startRow && column >= startColumn && row == endRow && column <= endColumn;
+        }
+        #endregion
+
+
         #region  绗簲鏉垮潡锛堟柊澧炲唴瀹癸級
         /// <summary>
         /// 宸ュ崟淇℃伅VV_Workinfo

--
Gitblit v1.9.3