bklLiudl
2025-04-28 9b3567a5a2f1a81bec684e8aecda3a1146906cca
Admin.NET/WCS.Application/PLC/PLCCommon.cs
@@ -1,12 +1,15 @@
using Elastic.Clients.Elasticsearch.Tasks;
using Furion.Logging;
using Microsoft.AspNetCore.SignalR;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
using RazorEngine.Compilation.ImpromptuInterface.Dynamic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCS.Application.Entity;
using WCS.Application.Util;
namespace WCS.Application;
public static class PLCCommon
@@ -442,156 +445,96 @@
    }
    
    /// <summary>
    /// 根据巷道和层数确定巷道口入库工位
    /// 根据目标组获取位置最优的四项车取货工位
    /// </summary>
    /// <param name="endRoadway"></param>
    /// <param name="ceng"></param>
    /// <param name="endRoadway">目标组</param>
    /// <param name="ceng">申请工位</param>
    /// <returns></returns>
    public static string RoadwayToStationNum(string endRoadway, string ceng)
    {
        string stationNum = "";
        switch (endRoadway)
        {
            case "R01":
                if (ceng == "1")
                {
                    stationNum = "145";
                }
                if (ceng == "2")
                {
                    stationNum = "252";
                }
                if (ceng == "3")
                {
                    stationNum = "401";
                }
                break;
            case "R02":
                if (ceng == "1")
                {
                    stationNum = "137";
                }
                if (ceng == "2")
                {
                    stationNum = "260";
                }
                if (ceng == "3")
                {
                    stationNum = "405";
                }
                break;
            case "R03":
                if (ceng == "1")
                {
                    stationNum = "127";
                }
                if (ceng == "2")
                {
                    stationNum = "270";
                }
                if (ceng == "3")
                {
                    stationNum = "409";
                }
                break;
            case "R04":
                if (ceng == "1")
                {
                    stationNum = "119";
                }
                if (ceng == "2")
                {
                    stationNum = "278";
                }
                if (ceng == "3")
                {
                    stationNum = "413";
                }
                break;
            case "R05":
                if (ceng == "1")
                {
                    stationNum = "109";
                }
                if (ceng == "2")
                {
                    stationNum = "288";
                }
                if (ceng == "3")
                {
                    stationNum = "417";
                }
                break;
            case "R06":
                if (ceng == "1")
                {
                    stationNum = "101";
                }
                if (ceng == "2")
                {
                    stationNum = "301";
                }
                if (ceng == "3")
                {
                    stationNum = "421";
                }
                break;
            case "R07":
                if (ceng == "1")
                {
                    stationNum = "091";
                }
                if (ceng == "2")
                {
                    stationNum = "307";
                }
                if (ceng == "3")
                {
                    stationNum = "425";
                }
                break;
            case "R08":
                if (ceng == "1")
                {
                    stationNum = "83";
                }
                if (ceng == "2")
                {
                    stationNum = "315";
                }
                if (ceng == "3")
                {
                    stationNum = "429";
                }
                break;
            case "R09":
                if (ceng == "1")
                {
                    stationNum = "73";
                }
                if (ceng == "2")
                {
                    stationNum = "325";
                }
                if (ceng == "3")
                {
                    stationNum = "433";
                }
                break;
            case "R10":
                if (ceng == "1")
                {
                    stationNum = "65";
                }
                if (ceng == "2")
                {
                    stationNum = "337";
                }
                if (ceng == "3")
                {
                    stationNum = "437";
                }
                break;
        string[] lists = endRoadway.Split("R");
        var model = _db.Queryable<WcsStorageLocat>().First(m => m.RoadwayNo == endRoadway && m.IsDelete == false);
        string stat = model.AisleOne;
        if (model.Layer == 1)
        {   // 一层
            switch (ceng)       // 申请的入库口
            {
                case "009":
                    var path13 = Math.Abs(19 - int.Parse(stat.Substring(0,2))) + Math.Abs(6 - int.Parse(stat.Substring(2,2)));
                    var path14 = Math.Abs(19 - int.Parse(stat.Substring(0,2))) + Math.Abs(12 - int.Parse(stat.Substring(2,2)));
                    if (path13 <= path14)
                    {
                        stationNum = "013";
                    }
                    else
                    {
                        stationNum = "014";
                    }
                    ; break;
                case "017":
                    stationNum = "002"
                    ; break;
                case "018":
                    var path03 = Math.Abs(03 - int.Parse(stat.Substring(0, 2))) + Math.Abs(06 - int.Parse(stat.Substring(2, 2)));
                    var path05 = Math.Abs(03 - int.Parse(stat.Substring(0, 2))) + Math.Abs(12 - int.Parse(stat.Substring(2, 2)));
                    if (path03 <= path05)
                    {
                        stationNum = "003";
                    }
                    else
                    {
                        stationNum = "005";
                    }
                    ; break;
                default: break;
            }
        }
        else
        {  // 二层
            switch (ceng)       // 申请的入库口
            {
                case "009":
                    var path15 = Math.Abs(19 - int.Parse(stat.Substring(0, 2))) + Math.Abs(6 - int.Parse(stat.Substring(2, 2)));
                    var path16 = Math.Abs(19 - int.Parse(stat.Substring(0, 2))) + Math.Abs(12 - int.Parse(stat.Substring(2, 2)));
                    if (path15 <= path16)
                    {
                        stationNum = "015";
                    }
                    else
                    {
                        stationNum = "016";
                    }
          ; break;
                case "017":
                    stationNum = "006"
                    ; break;
                case "018":
                    var path03 = Math.Abs(03 - int.Parse(stat.Substring(0, 2))) + Math.Abs(06 - int.Parse(stat.Substring(2, 2)));
                    var path05 = Math.Abs(03 - int.Parse(stat.Substring(0, 2))) + Math.Abs(12 - int.Parse(stat.Substring(2, 2)));
                    if (path03 <= path05)
                    {
                        stationNum = "007";
                    }
                    else
                    {
                        stationNum = "008";
                    }
          ; break;
                default: break;
            }
        }
        return stationNum;