高章伟
2022-02-18 8b5f4c6c281cfa548f92de52c8021e37aa81901e
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
global class updateContectBatch implements Database.Batchable<sObject>,Database.AllowsCallouts, Database.Stateful {
    // 如果批量执行失败,用于手动执行失败的数据
    public String ConID;
    global updateContectBatch(String ConID) {
        this.ConID = ConID;
    }
    global updateContectBatch() {
 
    }
 
    global Database.QueryLocator start(Database.BatchableContext bc) {
        // 检索点检计划(将数据库中的数据检索出来)
        String query = ' select Id, TOOREND__c,TOOREND_txt__c,Maintenance_Contract__c, ' +
                       ' Planned_End_Date__c, Planned_Start_Date__c,Need_copy__c,Implementation_Rates__c, ' +
                       ' Timeliness_Rate__c, Implementation_Rate__c From Inspectup_Plan__c';
        if (String.isNotBlank(ConID)) {
            query += ' where Maintenance_Contract__c =: ConID';
        }else{
            // query += ' where Need_copy__c = true or Implementation_Rates__c = 100 ';
            query += ' where Need_copy__c = true ';
        }
        return Database.getQueryLocator(query);
    }
    // Date nowDay = Date.today();
    global void execute(Database.BatchableContext BC, list<Inspectup_Plan__c> IPlanList) {
        // 维修合同下对应的多个点检计划
        // Map<String, List<Inspectup_Plan__c>> ConToIPlanMap = new Map<String, List<Inspectup_Plan__c>>();
        // System.debug('IPlanList:12345' + IPlanList);
        // List<Inspectup_Plan__c> ConToIPlanList = new List<Inspectup_Plan__c>();
        // Set<Id> conudList = new Set<Id>();
        // List<Maintenance_Contract__c> ConList = new List<Maintenance_Contract__c>();
        for (Inspectup_Plan__c IPInfo : IPlanList) {
            // if (IPinfo.Need_copy__c == true) {
                IPInfo.TOOREND_txt__c = IPInfo.TOOREND__c;
                // ConToIPlanList.add(IPinfo);
            // }
            // if (IPinfo.Implementation_Rates__c == 100) {
            //     conudList.add(IPInfo.Maintenance_Contract__c);
            // }
            // String ConID = String.valueOf(IPInfo.Maintenance_Contract__c);
            // List<Inspectup_Plan__c> IPInfoList = new List<Inspectup_Plan__c>();
            // if (ConToIPlanMap.containsKey(ConID)) {
            //     IPInfoList = ConToIPlanMap.get(ConID);
            // }
            // if (nowDay >= IPInfo.Planned_Start_Date__c) {
            //     IPInfoList.add(IPInfo);
            //     ConToIPlanMap.put(ConID, IPInfoList);
            // }
        }
        // List<AggregateResult> SecConList = [
        //     select Maintenance_Contract__c,sum(Ben_Actual_Times__c) Ben_Actual_Times,
        //     AVG(Maintenance_Contract__r.Actual_Times_txt__c) Actual_Times
        //     from Inspectup_Plan__c where Maintenance_Contract__c in :conudList
        //     group by Maintenance_Contract__c
        // ];
        // if (SecConList != null && SecConList.size() > 0) {
        //     for (AggregateResult Rpc : SecConList) {
        //         if (String.valueOf(Rpc.get('Ben_Actual_Times')) != String.valueOf(Rpc.get('Actual_Times')) ) {
        //             Maintenance_Contract__c con = new Maintenance_Contract__c();
        //             con.Id = String.valueOf(Rpc.get('Maintenance_Contract__c'));
        //             con.Actual_Times_txt__c = Integer.valueOf(Rpc.get('Ben_Actual_Times'));
        //             ConList.add(con);
        //         }
        //     }
        // }
        // System.debug('ConToIPlanMap:12345' + ConToIPlanMap);
        // // 及时率 = 计划期内实际执行数/计划点检对象数*计划点检次数
        // // 计划期内实际执行数 = 点检报告书日期在点检计划期间内(点检对象数)
        // // 计划点检对象数 = 合同点检的总对象数
        // // 计划点检次数 = 第几次点检计划(如何确定在第几次点检计划?)
        // // 实施率 = 实际执行数/计划点检对象数*计划点检次数
        // // 实际执行数 = 点检报告书日期在点检计划期间内和外(点检对象数)
        // List<Maintenance_Contract__c> MCInfoList = new List<Maintenance_Contract__c>();
        // for (String ConID : ConToIPlanMap.keySet()) {
        //     Maintenance_Contract__c MC = new Maintenance_Contract__c();
        //     MC.Id = ConID;
        //     // 到期点检次数
        //     MC.Due_Inspection_Times__c = ConToIPlanMap.get(ConID).size();
        //     MCInfoList.add(MC);
        // }
        // System.debug('MCInfoList:' + MCInfoList);
        if (IPlanList.size() > 0) {
            update IPlanList;
        }
        // if (ConList.size() > 0) {
        //     update ConList;
        // }
    }
 
    global void finish(Database.BatchableContext BC) {
        // 服务合同报告书任务ToAWS XHL Start
        Id execBTId = Database.executebatch(new NFM605Batch (),1);
        // 服务合同报告书任务ToAWS XHL End
    }
}