binxie
2024-01-16 1b08402678deb31bba4a347bfd388eba8360cbc1
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
public without sharing class MaintenanceNewUpdateHandler extends Oly_TriggerHandler {
    private Map<Id, Maintenance_New_Update__c> newMap;
    private Map<Id, Maintenance_New_Update__c> oldMap;
    private List<Maintenance_New_Update__c> newList;
    private List<Maintenance_New_Update__c> oldList;
    public MaintenanceNewUpdateHandler() {
        this.newMap = (Map<Id, Maintenance_New_Update__c>) Trigger.newMap;
        this.oldMap = (Map<Id, Maintenance_New_Update__c>) Trigger.oldMap;
        this.newList = (List<Maintenance_New_Update__c>) Trigger.new;
        this.oldList = (List<Maintenance_New_Update__c>) Trigger.old;
    }
    protected override void afterInsert() {
        //insertMaintenance();
    }
    protected override void afterUpdate() {
        updateMaintenance();
    }
    protected override void beforeInsert() {
        insertMaintenance();
    }
    public void insertMaintenance(){
         system.debug('zheli:kaishi');
        // List<Maintenance_New_Update__c> upObj = new List<Maintenance_New_Update__c>();
        // List<Maintenance_New_Update__c> inObj = new List<Maintenance_New_Update__c>();
        Map<String,Date> startMap = new Map<String,Date>(); // 用于存放合同开始日
        Map<String,Date> endMap = new Map<String,Date>(); // 用于存放合同结束日
        Set<String> mcId = new Set<String>(); // 用于存放维修合同Id
 
        // 存放维修合同Id
        for (Maintenance_New_Update__c nObj : newList) {
            mcId.add(nObj.Maintenance_Contract__c);
        }
 
        // 查询当前维修合同
        List<Maintenance_Contract__c> mcList = [SELECT Id,Contract_End_Date__c,Contract_Start_Date__c From Maintenance_Contract__c WHERE Id IN:mcId];
        system.debug('zheli:'+ mcList.size());
 
        // 给原合同日期赋值
        if (mcList.size() > 0) {
            // 存放维修合同当前日期
            for (Maintenance_Contract__c mcnObj : mcList) {
                startMap.put(mcnObj.Id, mcnObj.Contract_Start_Date__c);
                endMap.put(mcnObj.Id, mcnObj.Contract_End_Date__c);
            }
            // 赋值
            for (Maintenance_New_Update__c nObj : newList) {
                nObj.Old_Contract_Start_Date__c = startMap.get(nObj.Maintenance_Contract__c);
                nObj.Old_Contract_End_Date__c = endMap.get(nObj.Maintenance_Contract__c);
            }
        }
    }
    public void updateMaintenance(){
        Set<String> mcId = new Set<String>();
        Map<String,Date> startMap = new Map<String,Date>();
        Map<String,Date> endMap = new Map<String,Date>();
        System.debug('jinlai====================================updateMaintenance');
        // Maintenance_New_Update__c nObj = new Maintenance_New_Update__c();
 
        for (Maintenance_New_Update__c nObj : newList) {
            System.debug('jinlaifor====================================for');
            Maintenance_New_Update__c oObj = oldMap.get(nObj.Id);
            // 合同开始日/合同结束日不为空且与原来的不同、审批状态从【审批中】变成【已审批】、维修合同不为空
            // if (((nObj.Contract_Start_Date__c != null && nObj.Contract_Start_Date__c != nObj.Old_Contract_Start_Date__c) || 
            if ((nObj.Contract_Start_Date__c != null && nObj.Contract_Start_Date__c != nObj.Old_Contract_Start_Date__c) &&
                // (nObj.Contract_End_Date__c != null && nObj.Contract_End_Date__c != nObj.Old_Contract_End_Date__c)) && 
                nObj.Status__c == '已审批' && nObj.Maintenance_Contract__c != null && oObj.Status__c == '审批中') {
                // 存放维修合同Id
                mcId.add(nObj.Maintenance_Contract__c);
                // 存放合同开始日、合同结束日
                startMap.put(nObj.Maintenance_Contract__c, nObj.Contract_Start_Date__c);
                endMap.put(nObj.Maintenance_Contract__c, nObj.Contract_End_Date__c);
            }
        }
 
        // 维修合同Id有值,查询并更新
        if (mcId.size() > 0) {
            // 查询当前维修合同
            List<Maintenance_Contract__c> mcList = [SELECT Id,Contract_End_Date__c,Contract_Start_Date__c From Maintenance_Contract__c WHERE Id IN:mcId];
            
            // 赋值并更新
            if (mcList.size() > 0) {
                List<Maintenance_Contract__c> upList = new List<Maintenance_Contract__c>();
                // 赋值合同开始日、合同结束日
                for (Maintenance_Contract__c nObj : mcList) {
                    nObj.Contract_Start_Date__c = startMap.get(nObj.Id);
                    nObj.Contract_End_Date__c = endMap.get(nObj.Id);
                    upList.add(nObj);
                    System.debug('zheli===================================='+upList);
                }
                // 更新维修合同数据
                update upList;
            }
        }
 
    }
}