李金换
2022-11-30 e7a284af780e1b09deb599215cbe0735b119a5f3
opd备品取消逻辑
1个文件已修改
38 ■■■■ 已修改文件
force-app/main/default/classes/OPDPlanCancelPostponePlanLogicBatch.cls 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/OPDPlanCancelPostponePlanLogicBatch.cls
@@ -1,6 +1,7 @@
//当前日期大于OPD计划实施日期 and 状态不等于取消或完毕 and (opd计划下没有任何得备品借出申请 or 或者对应备品借出状态是草案中,申请中,取消时)
//需要创建OPD计划取消延期,更新opd计划
//1.OPD计划取消延期.取消理由是取消成功,2.需要考虑opd计划所有人是否已离职,若离职,取消/延期理由为担当离职,否则为没完成备品申请
// OPD计划延期一次后,在第二个月仍没有分配备品的,OPD计划自动取消,原因为备品不足,同时备品申请自动取消。 ljh 20220929
global class OPDPlanCancelPostponePlanLogicBatch implements Database.Batchable<sObject>, Database.Stateful {
    //加日志 为了更新历史数据 做一下日志查看 20201124 you start
    private final Id TEST_ID = null;
@@ -65,9 +66,8 @@
        List<CancelPostponePlan__c> cppList =  new List<CancelPostponePlan__c>();
        List<OPDPlan__c> OpdRtlList = new List<OPDPlan__c>();
        List<OPDPlan__c>OpdUpList = new List<OPDPlan__c>();
        system.debug('OPDPlanList' + OPDPlanList.size());
        Set<Id> raIdSet = new Set<Id>();// 有保有设备 的一申请书  20221107 ljh update SWAG-CHM5E4
        for (OPDPlan__c op : OPDPlanList) {
            if (op.Rental_Apply2__c != null) {
                // 所有有备品的OPD计划
@@ -79,25 +79,51 @@
        }
        //opdID与OPD计划取消延期Map
        Map<id, Rental_Apply__c> rtlMap  = new Map<id, Rental_Apply__c>();
        Set<Id> rtl3Set  = new Set<Id>();//20221108  ljh update SWAG-CHM5E4
        if (OpdRtlList.size() > 0) {
            //获取OPD计划下的取消延期数据
            //20220920  ljh update SWAG-CHM5E4  start
            List<Rental_Apply_Equipment_Set_Detail__c> raesList =
                [select Rental_Apply__c from Rental_Apply_Equipment_Set_Detail__c where Asset__c != null and Rental_Apply__r.OPDPlan__c in :OpdRtlList];
            for(Rental_Apply_Equipment_Set_Detail__c raes:raesList){
                raIdSet.add(raes.Rental_Apply__c);
            }
            //20220920  ljh update SWAG-CHM5E4 end
            List<Rental_Apply__c> rtlList =
                [select id, RA_Status__c, OPDPlan__c from Rental_Apply__c where OPDPlan__c in :OpdRtlList];
            //取出备品借出状态不是草案中,申请中,取消的取消延期数据放入map
            for (Rental_Apply__c rtl : rtlList) {
                if (rtl.RA_Status__c != '草案中' && rtl.RA_Status__c != '申请中' && rtl.RA_Status__c != '取消') {
                //20221007  ljh update SWAG-CHM5E4 start
                // if (rtl.RA_Status__c != '草案中' && rtl.RA_Status__c != '申请中' && rtl.RA_Status__c != '取消') {
                //     // OPD计划-所有备品Map
                //     rtlMap.put(rtl.OPDPlan__c, rtl);
                // }
                if (rtl.RA_Status__c == '草案中' || rtl.RA_Status__c == '申请中' || rtl.RA_Status__c == '取消') {
                    // OPD计划-所有备品Map
                    rtlMap.put(rtl.OPDPlan__c, rtl);
                    rtl3Set.add(rtl.OPDPlan__c);
                }
                if(raIdSet.contains(rtl.Id)){
                    rtlMap.put(rtl.OPDPlan__c, rtl);
                }
                //20221007  ljh update SWAG-CHM5E4 end
            }
        }
        Date dateToday1 = Date.today();//20221108  ljh update SWAG-CHM5E4
        //取出可以变更的备品借出申请
        for (OPDPlan__c OpdRt : OpdRtlList) {
            if (!rtlMap.containskey(OpdRt.Id)) {
            //20221108  ljh update SWAG-CHM5E4 start
            // if (!rtlMap.containskey(OpdRt.Id)) {
            //     OpdUpList.add(OpdRt);
            // }
            if (!rtlMap.containskey(OpdRt.Id) && rtl3Set.contains(OpdRt.Id)) {
                OpdUpList.add(OpdRt);
            }else if(!rtlMap.containskey(OpdRt.Id) && !rtl3Set.contains(OpdRt.Id) && OpdRt.OPDPlan_ImplementDate__c < dateToday1 && OpdRt.SystemDelayMark__c){
                OpdUpList.add(OpdRt);
            }
            //20221108  ljh update SWAG-CHM5E4 end
        }
        Date dateToday1 = Date.today();
        // Date dateToday1 = Date.today();
        System.debug('OpdUpList个数:'+OpdUpList.size());
        //赋值需要考虑担当者是否在职
        for (OPDPlan__c op : OpdUpList) {
            CancelPostponePlan__c cpp = new CancelPostponePlan__c();