using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QMFrameWork.Data;
using QMAPP.FJC.DAL.QT;
using QMAPP.FJC.Entity.QT;
using QMAPP.FJC.Entity.Produce;
using QMAPP.FJC.TRACING.DAInterface;
using QMAPP.FJC.DAL.Produce;
using QMAPP.FJC.DAL.Basic;
using QMAPP.FJC.Entity.Basic;

namespace QMAPP.FJC.TRACING.StateActions
{
    /// <summary>
    /// 将提前输入的数据推送到当前加工
    /// </summary>
    public class PushData : IStateAction
    {
        /// <summary>
        /// 执行
        /// </summary>
        /// <param name="data"></param>
        public void Execute(DAObject data)
        {
            DAICacheDAL dal = new DAICacheDAL();
            var precachelist = dal.GetList(data.WorkLocState.WORKCELL_CODE, data.WorkLocState.WORKLOC_CODE).Where(p => string.Equals(p.PREINPUT, "1")).ToList();

            DAL.Basic.MachineInfoDAL machinedal = new DAL.Basic.MachineInfoDAL();
            var machine = machinedal.GetMachineInfo(new MachineInfo { MACHINECODDE = data.MachineCode });
            if (machine.ISSTATION == 2)
            {
                precachelist = precachelist.Where(p => p.MOULD_CODE == data.MouldCode).ToList();
            }

            foreach (var pre in precachelist)
            {
                var cache = data.WorkLocState.DataCache.FirstOrDefault(p => p.DA_CODE == pre.DA_CODE);
                if (cache != null)
                {

                    cache.MATERIAL_CODE = pre.MATERIAL_CODE;
                    cache.DA_VALUE = pre.DA_VALUE;
                    cache.OBJ_PID = pre.OBJ_PID;
                    cache.SAVED = cache.SAVED.Replace(data.MouldCode, "");

                    pre.MATERIAL_CODE = "";
                    pre.DA_VALUE = "";
                    pre.OBJ_PID = "";
                    //resetDai.Add(dai);
                    data.AddToPersistentList(pre, pre.PID);
                    data.AddToPersistentList(cache, cache.PID);
                }
                else
                {
                    throw new Exception("da lost!");
                }
            }
        }
    }
}