| | |
| | | //当前日期大于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; |
| | |
| | | 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计划 |
| | |
| | | } |
| | | //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(); |