高章伟
2022-03-10 1312ba82d4c880bdb5357d28e0d4af5b285f610f
force-app/main/default/classes/CreateNewMaintenanceTaskBatch.cls
@@ -122,27 +122,40 @@
        if(NeedCreateNMC.size()>0){
            //遍历需要创建报告书的合同
            for(Maintenance_Contract__c tempNMC : NeedCreateNMC){
                //定义变量,判断是否需要顺延
                // //定义变量,判断是否需要顺延
                Boolean isDelay = false;
                //第一版:当合同生效日晚于【合同开始日+3个月】,第一次发放计划顺延为4/1~6/30 (下一季度)。
                //第二版:合同盖章完毕日晚于【合同开始日+3个月】,不生成第一个区间(即 顺延为下一季度)。
                //第三版:盖章完毕日晚于合同开始日1个月以上,自动从第二季度开始
                if(tempNMC.Contract_print_completed__c > tempNMC.Contract_Start_Date__c.addMonths(1)){
                    isDelay = true;
                }
                // //第一版:当合同生效日晚于【合同开始日+3个月】,第一次发放计划顺延为4/1~6/30 (下一季度)。
                // //第二版:合同盖章完毕日晚于【合同开始日+3个月】,不生成第一个区间(即 顺延为下一季度)。
                // //第三版:盖章完毕日晚于合同开始日1个月以上,自动从第二季度开始
                 if(tempNMC.Contract_print_completed__c > tempNMC.Contract_Start_Date__c.addMonths(1)){
                     isDelay = true;
                 }
                //获取当前遍历的合同的季度数 并遍历 生成报告书
                for(Integer qnum = 1;qnum <= QuarterNumMap.get(tempNMC.Id);qnum++){
                    //如果 当合同生效日晚于【合同开始日+3个月】, 顺延为第二季度
                    // //如果 当合同生效日晚于【合同开始日+3个月】, 顺延为第二季度
                    if(isDelay){
                        isDelay = false;
                        continue;
                         isDelay = false;
                         continue;
                    }
                    //2022-03-01  mzy SLA报告书上线后问题  start
                    //合同日
                    Date ContractConclusionDate = tempNMC.Contract_Conclusion_Date__c;
                    //2022-03-01  mzy SLA报告书上线后问题  end
                    //计算开始日期
                    Date DistributionStartDate= tempNMC.Contract_Start_Date__c.addMonths((qnum-1) * 3);
                    //计算结束日期
                    Date DistributionEndDate = tempNMC.Contract_Start_Date__c.addMonths((qnum) * 3).addDays(-1);
                    //2022-03-01  mzy  SLA报告书上线后问题  start
                    //合同日到满一个季度的期间大于2个月则需要生成发放计划,小于2个月则不需要生成计划
                    //为了防止出现 55485 的那种情况(合同日所在区间之前的季度不再生成)
                    if ((ContractConclusionDate.addMonths(2)>DistributionEndDate) || (ContractConclusionDate > DistributionEndDate)) {
                        continue;
                    }
                    //2022-03-01  mzy  SLA报告书上线后问题  end
                    //开始生成服务合同报告书
                    NewMaintenanceReport_Task__c tempNMCT = new NewMaintenanceReport_Task__c();