高章伟
2023-03-03 d8dc84a3d56df839895f1c417a4d9cbee763d262
force-app/main/default/classes/AssetUpdateContractBatch.cls
@@ -86,6 +86,7 @@
            ' , RecordType_DeveloperName__c  ' +
            '  from Maintenance_Contract__c '
            + ' where Status__c in (\'契約\',\'契約満了\') ';
        if (string.isNotBlank(TestID) ) {
            query += ' and id =: TestID';
        } else if (TestIDList != null && TestIDList.size() > 0) {
@@ -98,7 +99,7 @@
           query += ' and Contract_End_Date__c = ' + 
                    testDate.addDays(-1).format().replace('/', '-'); 
        }
        system.debug('query:'+query);
        //system.debug('query:'+query);
        testDate = Datecheck(testDate);
        return Database.getQueryLocator(query);
@@ -106,6 +107,7 @@
    global void execute(Database.BatchableContext BC,
                        list<Maintenance_Contract__c> MCList) {
        map<string, asset> updateAssetMap = new map<string, asset>();
        map<string, Maintenance_Contract__c> UpdateMCMap =
@@ -152,6 +154,7 @@
             Maintenance_Contract__r.Estimation_Id__r.Submit_quotation_day__c,
             Maintenance_Contract__r.RecordType.DeveloperName
             , ifHaveleftInPrevious__c
             ,Maintenance_Contract__r.URF_Contract__c
             from Maintenance_Contract_Asset__c
             where Maintenance_Contract__c in: mcIDmap.keyset()
            ];
@@ -233,13 +236,15 @@
            allAssetIDSet.add(mca.Asset__c);
            newToOldMCA.put(mca.id, null);
        }
        //system.debug('allAssetIDSet:' + allAssetIDSet);
        system.debug('allAssetIDSet:' + allAssetIDSet);
        //system.debug('newToOldMCA:' + newToOldMCA);
        allAssetList =
            [select id, CurrentContract_F__c,
             CurrentContract_F__r.Contract_End_Date__c,
             CurrentContract_F_asset__c,
             CurrentContract_F_asset__r.endDate_sum__c
             ,URF_Maintenance_Contract__c
             ,URF_Maintenance_Contract__r.Contract_End_Date__c
             from asset
             where id in: allAssetIDSet];
        // 更新保有设备上的上一期维修合同和维修合同保有设备
@@ -247,20 +252,30 @@
        for (asset ass : allAssetList) {
            Maintenance_Contract_Asset__c tempMCA =
                assetIDtoMCA.get(ass.Id);
            if (tempMCA != null &&
            if (tempMCA != null) {
                if (tempMCA.Maintenance_Contract__r.URF_Contract__c==true &&
                    (ass.URF_Maintenance_Contract__c == null ||
                       ass.URF_Maintenance_Contract__r.Contract_End_Date__c <= tempMCA.endDate_sum__c
                        )) {
                    ass.URF_Maintenance_Contract__c = tempMCA.Maintenance_Contract__c;
                }
                if (tempMCA.Maintenance_Contract__r.URF_Contract__c==false &&
                    (
                        ass.CurrentContract_F__c == null  ||
                        ass.CurrentContract_F_asset__c == null ||
                        ass.CurrentContract_F_asset__r.endDate_sum__c <=
                        tempMCA.endDate_sum__c
                    ) ) {
                    )
                    ){
                ass.CurrentContract_F__c = tempMCA.Maintenance_Contract__c;
                ass.CurrentContract_F_asset__c = tempMCA.id;
                }
                updateAssetMap.put(ass.id, ass);
            }
        }
        //检索出历届保有设备
        list<Maintenance_Contract_Asset__c> allMCAList =
            [select Id, Asset__c, Maintenance_Contract__c,
@@ -469,6 +484,7 @@
                failedCount ++;
            }
        }
        system.debug('11111111111111111111111updateAssetMap'+updateAssetMap.values());
        updateAsset (updateAssetMap.values());
    }
    global void finish(Database.BatchableContext BC) {