global class AssetUseInfoBatch implements Database.Batchable<sObject> {
  
  private Integer dt;

  global AssetUseInfoBatch() {
    
  }
  // 测试用
  global AssetUseInfoBatch(Integer intDate) {
    dt = intDate;
  }

  global Database.QueryLocator start(Database.BatchableContext BC) {
    return Database.getQueryLocator([
      SELECT Id, Use_Info__c FROM Asset WHERE Category2__c ='本体' OR Product2.Can_Repair__c = '是'
      ]);
  }

 global void execute(Database.BatchableContext BC, List<sObject> sList) {
     Oly_TriggerHandler.bypass('NFM010UpsertStatuAchievements');
    List<Asset> updateList = new List<Asset>();
    Integer year = 0;
    if (dt == null) {
      year = Date.today().year();
    } else {
      year = dt;
    }

    for (sObject sobj : sList) {
      Asset ast = (Asset) sobj;
      if (year == 2018) {
        ast.Use_Info_2018__c = ast.Use_Info__c;
      } else if (year == 2019) {
        ast.Use_Info_2019__c = ast.Use_Info__c;
      } else if (year == 2020) {
        ast.Use_Info_2020__c = ast.Use_Info__c;
      } else if (year == 2021) {
        ast.Use_Info_2021__c = ast.Use_Info__c;
      } else if (year == 2022) {
        ast.Use_Info_2022__c = ast.Use_Info__c;
      } else if (year == 2023) {
        ast.Use_Info_2023__c = ast.Use_Info__c;
      } else if (year == 2024) {
        ast.Use_Info_2024__c = ast.Use_Info__c;
      } else if (year == 2025) {
        ast.Use_Info_2025__c = ast.Use_Info__c;
      } else {
        break;
      }
      updateList.add(ast);
    }

    if (updateList.size() > 0) {
      update updateList;
    }
  }
  
  global void finish(Database.BatchableContext BC) {
    
  }
  
}