liuyn
2024-03-11 a87f1c3df03078814ee97ad0c8ac200a232419e9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
global class AssetUseInfoBatch implements Database.Batchable<sObject> {
  
  private Integer dt;
  private Integer mt;
  private List < String > assIDList;
 
  global AssetUseInfoBatch() {
    
  }
  // 测试用
  global AssetUseInfoBatch(Integer intDate) {
    dt = intDate;
  }
  // 测试用
  global AssetUseInfoBatch(Integer intDate, List < String > assetIDList) {
    mt = intDate;
    assIDList = assetIDList;
  }
 
  global Database.QueryLocator start(Database.BatchableContext BC) {
    if (assIDList == null || assIDList.size() <= 0) {
      return Database.getQueryLocator([
        SELECT Id, Use_Info__c,CurrentTarget_Asset__c,CurrentAge_Asset__c,CurrentSOM_Status_2H__c,CurrentSOM_Status_1H__c
        FROM Asset WHERE Category2__c ='本体' OR Product2.Can_Repair__c = '可'
        ]);
    }else {
      return Database.getQueryLocator([
        SELECT Id, Use_Info__c,CurrentTarget_Asset__c,CurrentAge_Asset__c,CurrentSOM_Status_2H__c,CurrentSOM_Status_1H__c
        FROM Asset WHERE id =: assIDList
        ]);
    }
    
  }
 
  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;
    }
    //DB202305350020 LY 20230707 start
    Integer month = 0;
    if (mt == null) {
      month = Date.today().month();
    } else {
      month = mt;
    }
    System.debug('输入的月份是'+month);
    //DB202305350020 LY 20230707 end
    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;
      }
      //DB202305350020 LY 20230707 start
      if (month == 4){
        ast.LastPeriodTarget_Asset__c = ast.CurrentTarget_Asset__c;//在每一财年首日,复制【当期覆盖设备的可选对象】给【上期覆盖设备的可选对象】
        ast.LastPeriodAge_Asset__c = ast.CurrentAge_Asset__c;//在每一财年首日,复制【当期设备年龄】给【上期设备年龄】;
        ast.LastPeriodSOM_Status_2H__c = ast.CurrentSOM_Status_2H__c;//每半期财年的首日(即:4月1日),根据新财年的日期逻辑运行,并保存上一个半期财年的记录。【上期2H期末SOM状态】
        if ((ast.Status =='使用中' || ast.Status =='不明' || ast.Status =='未使用') && ast.HP_Name__c !='Olympus社内') {
          ast.Existing_Asset__c = '1.既有设备';
        }else{
          ast.Existing_Asset__c = '';
        }
 
      }
      if (month == 10 && ast.HP_Name__c !='Olympus社内'){
        ast.LastPeriodSOM_Status_1H__c = ast.CurrentSOM_Status_1H__c;//每半期财年的首日(即:10月1日),根据新财年的日期逻辑运行,并保存上一个半期财年的记录。【上期1H期末SOM状态】
      }
      System.debug('更新前的保有设备是'+ast);
      //DB202305350020 LY 20230707 start
      updateList.add(ast);
    }
 
    if (updateList.size() > 0) {
      update updateList;
    }
  }
  global void finish(Database.BatchableContext BC) {
    
  }
  
}