| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | using ServiceCenter.Extensions;using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;using WCS.Core;using WCS.Entity.Protocol.Station;using WCS.WorkEngineering.Extensions;using WCS.WorkEngineering.Worlds;namespace WCS.WorkEngineering.Systems.重绕区{    /// <summary>    ///  扫码位分配    /// </summary>    [BelongTo(typeof(RewindWorld))]    [Description("扫码位分配")]    public class 扫码位分配 : DeviceSystem<Device<IStation520, IStation521, IStation523>>    {        protected override bool ParallelDo => true;        public override void Do(Device<IStation520, IStation521, IStation523> obj)        {            if (obj.Data.VoucherNo != obj.Data2.VoucherNo)            {                World.Log($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}");                return;            }            if (obj.Data3.Status.HasFlag(StationStatus.Run))            {                World.Log("设备运行中");                return;            }            ;            if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status))            {                World.Log("站台货物信息与实际占用不一致");                return;            }            if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status))            {                World.Log("无光电");                return;            }            ;            if (obj.Data2.Request != 1)            {                World.Log("无请求");                return;            }            List<string> stations = new List<string> {"9119","9120","9121","9122","9123","9124","9125","9130", "9131", "9132", "9133", "9134", "9135", "9136", "9141",                "9142", "9143", "9144", "9145", "9146", "9147"};            List<string> targetStations = new List<string> { "9125", "9136", "9147" };            var devs = Device.All.Where(x => stations.Contains(x.Code)).Select(x =>                                                    new Device<IStation520, IStation521, IStation523>(x, World));            devs = devs.Where(x => targetStations.Contains(x.Data2.GoodsEnd.ToString())).ToList();            short next = 9125;//9147;            var num_9125 = devs.Count(x => x.Data2.GoodsEnd.ToString() == "9125");            var num_9136 = devs.Count(x => x.Data2.GoodsEnd.ToString() == "9136");            var num_9147 = devs.Count(x => x.Data2.GoodsEnd.ToString() == "9147");            //if (devs.Count() == 0)            //{            //    next = 9136;            //}            //else            //{            //    next = num_9136 <= num_9125 ? num_9136.ToShort() : num_9125.ToShort();//ComputeAddto(num_9125, num_9136, num_9147);            //}            obj.Data.TaskNumber = obj.Entity.Code.ToShort();            obj.Data.TaskNumber = obj.Entity.Code.ToShort();            obj.Data.GoodsStart = obj.Entity.Code.ToShort();            obj.Data.GoodsStart = obj.Entity.Code.ToShort();            obj.Data.GoodsEnd = next;            obj.Data.GoodsEnd = next;            obj.Data.SetVoucherNo();        }        public short ComputeAddto(int num_9125, int num_9136, int num_9147)        {            if (num_9125 < num_9136 && num_9125 < num_9147)            {                return num_9125.ToShort();            }            else if (num_9136 < num_9125 && num_9136 < num_9147)            {                return num_9136.ToShort();            }            else            {                return num_9147.ToShort();            }        }        public override bool Select(Device dev)        {            return dev.Code is "9115" or "9021";        }    }}
 |