IPC-610
2024-09-24 2fa5c9b94f81fca759daee763bdf8189ec728a33
Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
@@ -1,6 +1,7 @@

using Admin.NET.Core.Service;
using Elastic.Clients.Elasticsearch;
using StackExchange.Profiling.Internal;
using WCS.Application.Entity;
using WCS.Application.Service.WcsDevice.Dto;
@@ -266,8 +267,8 @@
                            (result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos, modPositionPalletNo.StringLength);
                            modDevice.PalletNo = Convert.ToString(palletNo);
                            Console.WriteLine(modDevice.DbNumber + "." + modPositionPalletNo.PlcPos + "----------");
                        }
                        if (cachePlc.Type == PLCTypeEnum.ConveyorLine)
                        }
                        if (cachePlc.Type == PLCTypeEnum.ConveyorLine || cachePlc.Type == PLCTypeEnum.StackingMachine)
                        {
                            //放货排
                            var modPositionReleaseRow = listPosition.FirstOrDefault(s => s.Text == "放货排");
@@ -311,7 +312,14 @@
                                (result, var pickStorey) = modConn.GetPlcDBValue(modPositionPickStorey.PosType, modDevice.DbNumber, modPositionPickStorey.PlcPos);
                                modDevice.PickStorey = Convert.ToInt32(pickStorey);
                            }
                            if (cachePlc.Type == PLCTypeEnum.StackingMachine)
                            {
                                //跺机的起始工位用取货排列层
                                modDevice.StartLocatNo = $"{modDevice.PickRow.ToString().PadLeft(2,'0')}{modDevice.PickCol.ToString().PadLeft(2, '0')}{modDevice.PickStorey.ToString().PadLeft(2, '0')}";
                                //跺机的目的工位用放货排列层
                                modDevice.EndLocatNo = $"{modDevice.ReleaseRow.ToString().PadLeft(2, '0')}{modDevice.ReleaseCol.ToString().PadLeft(2, '0')}{modDevice.ReleaseStorey.ToString().PadLeft(2, '0')}";
                            }
                        }
                    }
                    catch (Exception ex)
@@ -367,16 +375,86 @@
        //起始工位
        if (modDevice.StartLocatNo != null)
        {
            var modPositionStartLocatNo = listPosition.FirstOrDefault(s => s.Text == "起始工位");
            if (modPositionStartLocatNo != null)
                result = modUtil.SetPlcDBValue(modPositionStartLocatNo.PosType, modDbDevice.DbNumber, modPositionStartLocatNo.PlcPos, modDevice.StartLocatNo.ToString());
            if (modPlc.Type == PLCTypeEnum.StackingMachine)
            {
                if (modDevice.StartLocatNo.Length != 6)
                {
                    throw Oops.Bah("起始工位格式输入错误,请输入排列层,例:010203!");
                }
                modDevice.PickRow = Convert.ToInt32(modDevice.StartLocatNo.Substring(0, 2));
                modDevice.PickCol = Convert.ToInt32(modDevice.StartLocatNo.Substring(2, 2));
                modDevice.PickStorey = Convert.ToInt32(modDevice.StartLocatNo.Substring(4, 2));
                //取货排
                if (modDevice.PickRow != null)
                {
                    var modPositionPickRow = listPosition.FirstOrDefault(s => s.Text == "取货排");
                    if (modPositionPickRow != null)
                        modUtil.SetPlcDBValue(modPositionPickRow.PosType, modDbDevice.DbNumber, modPositionPickRow.PlcPos, modDevice.PickRow.ToString());
                }
                //取货列
                if (modDevice.PickCol != null)
                {
                    var modPositionPickCol = listPosition.FirstOrDefault(s => s.Text == "取货列");
                    if (modPositionPickCol != null)
                        modUtil.SetPlcDBValue(modPositionPickCol.PosType, modDbDevice.DbNumber, modPositionPickCol.PlcPos, modDevice.PickCol.ToString());
                }
                //取货层
                if (modDevice.PickStorey != null)
                {
                    var modPositionPickStorey = listPosition.FirstOrDefault(s => s.Text == "取货层");
                    if (modPositionPickStorey != null)
                        modUtil.SetPlcDBValue(modPositionPickStorey.PosType, modDbDevice.DbNumber, modPositionPickStorey.PlcPos, modDevice.PickStorey.ToString());
                }
            }
            else
            {
                var modPositionStartLocatNo = listPosition.FirstOrDefault(s => s.Text == "起始工位");
                if (modPositionStartLocatNo != null)
                    result = modUtil.SetPlcDBValue(modPositionStartLocatNo.PosType, modDbDevice.DbNumber, modPositionStartLocatNo.PlcPos, modDevice.StartLocatNo.ToString());
            }
        }
        //目的工位
        if (modDevice.EndLocatNo != null)
        {
            var modPositionEndLocatNo = listPosition.FirstOrDefault(s => s.Text == "目的工位");
            if (modPositionEndLocatNo != null)
                result = modUtil.SetPlcDBValue(modPositionEndLocatNo.PosType, modDbDevice.DbNumber, modPositionEndLocatNo.PlcPos, modDevice.EndLocatNo.ToString());
            if (modPlc.Type == PLCTypeEnum.StackingMachine)
            {
                if (modDevice.EndLocatNo.Length != 6)
                {
                    throw Oops.Bah("目的工位格式输入错误,请输入排列层,例:010203!");
                }
                modDevice.ReleaseRow = Convert.ToInt32(modDevice.EndLocatNo.Substring(0, 2));
                modDevice.ReleaseCol = Convert.ToInt32(modDevice.EndLocatNo.Substring(2, 2));
                modDevice.ReleaseStorey = Convert.ToInt32(modDevice.EndLocatNo.Substring(4, 2));
                //放货排
                if (modDevice.ReleaseRow != null)
                {
                    var modPositionReleaseRow = listPosition.FirstOrDefault(s => s.Text == "放货排");
                    if (modPositionReleaseRow != null)
                        modUtil.SetPlcDBValue(modPositionReleaseRow.PosType, modDbDevice.DbNumber, modPositionReleaseRow.PlcPos, modDevice.ReleaseRow.ToString());
                }
                //放货列
                if (modDevice.ReleaseCol != null)
                {
                    var modPositionReleaseCol = listPosition.FirstOrDefault(s => s.Text == "放货列");
                    if (modPositionReleaseCol != null)
                        modUtil.SetPlcDBValue(modPositionReleaseCol.PosType, modDbDevice.DbNumber, modPositionReleaseCol.PlcPos, modDevice.ReleaseCol.ToString());
                }
                //放货层
                if (modDevice.ReleaseStorey != null)
                {
                    var modPositionReleaseStorey = listPosition.FirstOrDefault(s => s.Text == "放货层");
                    if (modPositionReleaseStorey != null)
                        modUtil.SetPlcDBValue(modPositionReleaseStorey.PosType, modDbDevice.DbNumber, modPositionReleaseStorey.PlcPos, modDevice.ReleaseStorey.ToString());
                }
            }
            else
            {
                var modPositionEndLocatNo = listPosition.FirstOrDefault(s => s.Text == "目的工位");
                if (modPositionEndLocatNo != null)
                    result = modUtil.SetPlcDBValue(modPositionEndLocatNo.PosType, modDbDevice.DbNumber, modPositionEndLocatNo.PlcPos, modDevice.EndLocatNo.ToString());
            }
        }
        //托盘码
        if (modDevice.PalletNo != null)