|  | @@ -25,6 +25,7 @@ using FurnaceRT.Equipments.Schedulers;
 | 
	
		
			
				|  |  |  using FurnaceRT.Equipments.Stockers;
 | 
	
		
			
				|  |  |  using MECF.Framework.Common.DataCenter;
 | 
	
		
			
				|  |  |  using MECF.Framework.Common.Equipment;
 | 
	
		
			
				|  |  | +using MECF.Framework.Common.FAServices;
 | 
	
		
			
				|  |  |  using MECF.Framework.Common.FAServices.E40s;
 | 
	
		
			
				|  |  |  using MECF.Framework.Common.SubstrateTrackings;
 | 
	
		
			
				|  |  |  using MECF.Framework.FA.Core.CommonTypes;
 | 
	
	
		
			
				|  | @@ -249,7 +250,7 @@ namespace FurnaceRT.Equipments.Systems
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          public void EndPj(string endStatus = "Normal")
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -           
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              _auto?.EndPj(endStatus);
 | 
	
		
			
				|  |  |              //_auto.UpdataPJAlarmStatus(endStatus);
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -613,25 +614,25 @@ namespace FurnaceRT.Equipments.Systems
 | 
	
		
			
				|  |  |                      break;
 | 
	
		
			
				|  |  |                  case "HOLD ON":
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    //if (pm1.Hold())
 | 
	
		
			
				|  |  | -                    //{
 | 
	
		
			
				|  |  | -                    //    return true;
 | 
	
		
			
				|  |  | -                    //}
 | 
	
		
			
				|  |  | -                    //else
 | 
	
		
			
				|  |  | -                    //{
 | 
	
		
			
				|  |  | -                    //    status.ack = RcmdAcknowledge.Cannot_perform_now;
 | 
	
		
			
				|  |  | -                    //    return false;
 | 
	
		
			
				|  |  | -                    //}
 | 
	
		
			
				|  |  | +                //if (pm1.Hold())
 | 
	
		
			
				|  |  | +                //{
 | 
	
		
			
				|  |  | +                //    return true;
 | 
	
		
			
				|  |  | +                //}
 | 
	
		
			
				|  |  | +                //else
 | 
	
		
			
				|  |  | +                //{
 | 
	
		
			
				|  |  | +                //    status.ack = RcmdAcknowledge.Cannot_perform_now;
 | 
	
		
			
				|  |  | +                //    return false;
 | 
	
		
			
				|  |  | +                //}
 | 
	
		
			
				|  |  |                  case "HOLD OFF":
 | 
	
		
			
				|  |  | -                    //if (pm1.RecipeContinue())
 | 
	
		
			
				|  |  | -                    //{
 | 
	
		
			
				|  |  | -                    //    return true;
 | 
	
		
			
				|  |  | -                    //}
 | 
	
		
			
				|  |  | -                    //else
 | 
	
		
			
				|  |  | -                    //{
 | 
	
		
			
				|  |  | -                    //    status.ack = RcmdAcknowledge.Cannot_perform_now;
 | 
	
		
			
				|  |  | -                    //    return false;
 | 
	
		
			
				|  |  | -                    //}
 | 
	
		
			
				|  |  | +                //if (pm1.RecipeContinue())
 | 
	
		
			
				|  |  | +                //{
 | 
	
		
			
				|  |  | +                //    return true;
 | 
	
		
			
				|  |  | +                //}
 | 
	
		
			
				|  |  | +                //else
 | 
	
		
			
				|  |  | +                //{
 | 
	
		
			
				|  |  | +                //    status.ack = RcmdAcknowledge.Cannot_perform_now;
 | 
	
		
			
				|  |  | +                //    return false;
 | 
	
		
			
				|  |  | +                //}
 | 
	
		
			
				|  |  |                  default:
 | 
	
		
			
				|  |  |                      status.ack = RcmdAcknowledge.Invalid_command;
 | 
	
		
			
				|  |  |                      return false;
 | 
	
	
		
			
				|  | @@ -892,7 +893,13 @@ namespace FurnaceRT.Equipments.Systems
 | 
	
		
			
				|  |  |                  para.Add("WaferType", currrentStocker.CurrentCarrier.CarrierType.ToString());
 | 
	
		
			
				|  |  |                  para.Add("CarrierPara", $"{currrentStocker.Name},{_lp.Name.ToString()}");
 | 
	
		
			
				|  |  |                  para.Add("TransferType", "Unloading");
 | 
	
		
			
				|  |  | -                return CheckToPostJobMessage((int)MSG.CreateTransferJob, para);
 | 
	
		
			
				|  |  | +                bool result = CheckToPostJobMessage((int)MSG.CreateTransferJob, para);
 | 
	
		
			
				|  |  | +                if (result)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).CarrierOutStart(currrentStocker.CurrentCarrier);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                return result;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              else
 | 
	
		
			
				|  |  |              {
 |