BoxInJobType.cs 3.2 KB


using Common;
using System.Collections.Generic;

namespace DeviceLibrary
{
    /// <summary>
    /// 云仓进料任务
    /// </summary>
    public class BoxInJobType : JobType
    {
        static string[] mixString = AppConfigHelper.GetValue(SettingString.MixingString).Split(',');

        /// <summary>
        ///  料仓料串任务
        /// </summary>
        /// <param name="currentAgv"></param>
        /// <returns></returns>
        public override Job GetNewJob(Agv_Info currentAgv)
        {
            if (!Context.CheckCanExecuteMission(currentAgv))
                return null;
            if (!Context.CheckAGVStatusNone(currentAgv))
                return null;
            string rfid = "";
            //检查设备1入口需要空料串用作出库
            if (FindNeedEnterMission(currentAgv, SettingString.D1, true))
            {
                if (FindNeedLeaveMission(currentAgv, SettingString.A1, out rfid, true))
                {
                    LogUtil.info(string.Format("{0} [{1}]需要空料串,去[{2}]取料串[{3}]", currentAgv.Name, SettingString.D1, SettingString.A1, rfid));
                    return new GetShelfJob(currentAgv.Place, SettingString.A1, rfid, false);
                }
            }
            //检查设备2入口需要空料串用作出库
            if (FindNeedEnterMission(currentAgv, SettingString.D3, true))
            {
                if (FindNeedLeaveMission(currentAgv, SettingString.A1, out rfid, true))
                {
                    LogUtil.info(string.Format("{0} [{1}]需要空料串,去[{2}]取料串[{3}]", currentAgv.Name, SettingString.D3, SettingString.A1, rfid));
                    return new GetShelfJob(currentAgv.Place, SettingString.A1, rfid, false);
                }

            }


            //混合仓入口需要满料
            if (FindNeedEnterMission(currentAgv, SettingString.D3, false))
            {
                if (FindNeedLeaveMission(currentAgv, SettingString.A3, out rfid, false))
                {
                    LogUtil.info(string.Format("{0} [{1}]需要满料串,去[{2}]取料串[{3}]", currentAgv.Name, SettingString.D3, SettingString.A3, rfid));
                    return new GetShelfJob(currentAgv.Place, SettingString.A3, rfid, true);
                }

            }

            //7寸盘入口需要满料
            if (FindNeedEnterMission(currentAgv, SettingString.D1, false))
            {
                if (FindNeedLeaveMission(currentAgv, SettingString.A3, out rfid, false))
                {
                    if (IsMixString(rfid))
                        return null;
                    LogUtil.info(string.Format("{0} [{1}]需要满料串,去[{2}]取料串[{3}]", currentAgv.Name, SettingString.D1, SettingString.A3, rfid));
                    return new GetShelfJob(currentAgv.Place, SettingString.A3, rfid, true);
                }
            }

            return null;
        }

        public static bool IsMixString(string rfid)
        {
            if (mixString != null && mixString.Length > 0)
                foreach (string item in mixString)
                {
                    if (item.Equals(rfid))
                        return true;
                }
            return false;
        }
    }
}