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