|  | @@ -664,7 +664,7 @@ namespace FurnaceRT.Equipments.Jobs
 | 
	
		
			
				|  |  |                      continue;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (tj.CarrierParas.Any(x => x.Stocker == carrier.InternalModuleName))
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | +                {                 
 | 
	
		
			
				|  |  |                      var carrierPara = tj.CarrierParas.FirstOrDefault(x => x.Stocker == carrier.InternalModuleName);
 | 
	
		
			
				|  |  |                      if (carrierPara != null && _waferRobot.Map(fims.Module, carrierPara.WaferCount, carrierPara.SlotMap, carrierPara.IsCompareWithSlotMap, true, Hand.Blade1))
 | 
	
		
			
				|  |  |                      {
 | 
	
	
		
			
				|  | @@ -847,8 +847,16 @@ namespace FurnaceRT.Equipments.Jobs
 | 
	
		
			
				|  |  |                                  _lstFIMSs.Any(x => x.IsAvailable && x.IsReadyForPlace(ModuleName.CarrierRobot, 0)) &&
 | 
	
		
			
				|  |  |                                  !SC.GetValue<bool>("WaferRobot.BypassFIMSMap"))
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  | +                                //有job执行且在charging和discharge状态,先不执行mapping
 | 
	
		
			
				|  |  | +                                if (DATA.Poll("Scheduler.CurrentProcessJob") is ProcessJobInfo job && job != null &&
 | 
	
		
			
				|  |  | +                          (job.ProcessingState == EnumProcessingState.CoolingBeforeDischarge || job.ProcessingState == EnumProcessingState.Charging || job.ProcessingState == EnumProcessingState.Discharging
 | 
	
		
			
				|  |  | +                         || (job.ProcessingState == EnumProcessingState.Processing && DATA.Poll("PM1.RemainTimeToEnterCooling") is double t && t <=SC.GetValue<double>("System.Scheduler.LoadMappingForecastTime"))))
 | 
	
		
			
				|  |  | +                                {
 | 
	
		
			
				|  |  | +                                    continue;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  |                                  if (tj.CarrierParas.Any(x => x.Stocker == carrier.InternalModuleName))
 | 
	
		
			
				|  |  |                                  {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                                      stocker = st;
 | 
	
		
			
				|  |  |                                      break;
 | 
	
		
			
				|  |  |                                  }
 | 
	
	
		
			
				|  | @@ -900,10 +908,7 @@ namespace FurnaceRT.Equipments.Jobs
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                //map正常完成或者FIMS不具备map条件
 | 
	
		
			
				|  |  | -                if (stocker != null && ((carrier.IsMapped && carrier.IsMapOK) ||
 | 
	
		
			
				|  |  | -                    SC.GetValue<bool>("WaferRobot.BypassFIMSMap") ||
 | 
	
		
			
				|  |  | -                    !_lstFIMSs.Any(x => x.IsOnline && CarrierManager.Instance.CheckNoCarrier(x.Module, 0))))
 | 
	
		
			
				|  |  | +                if (stocker != null)
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      if (_carrierRobot.Place(stocker.Module, 0, Hand.Blade1))
 | 
	
		
			
				|  |  |                      {
 | 
	
	
		
			
				|  | @@ -1030,6 +1035,13 @@ namespace FurnaceRT.Equipments.Jobs
 | 
	
		
			
				|  |  |                  SchedulerFIMS fims = null;
 | 
	
		
			
				|  |  |                  foreach (var st in _lstFIMSs)
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  | +                    //有job执行且在charging和discharge状态,先不执行mapping
 | 
	
		
			
				|  |  | +                    if (DATA.Poll("Scheduler.CurrentProcessJob") is ProcessJobInfo job && job!=null&&
 | 
	
		
			
				|  |  | +                        (job.ProcessingState == EnumProcessingState.CoolingBeforeDischarge || job.ProcessingState == EnumProcessingState.Charging || job.ProcessingState == EnumProcessingState.Discharging
 | 
	
		
			
				|  |  | +                       ||(job.ProcessingState == EnumProcessingState.Processing&&DATA.Poll("PM1.RemainTimeToEnterCooling") is double t && t <= SC.GetValue<double>("System.Scheduler.LoadMappingForecastTime"))))
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        continue;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                      if (!st.IsAvailable || !st.IsReadyForPlace(ModuleName.CarrierRobot, 0))
 | 
	
		
			
				|  |  |                          continue;
 | 
	
		
			
				|  |  |                      var fimsDevice = DEVICE.GetDevice<IoFIMS>($"PM1.{st.Module}");
 |