global class OpdPlanWebService { //按钮调用 SWAG-BUF6J5 20201110 youchang WebService static String changeTrade(String opdplanId) { //取消opd 和取消备品得窗口调用 List raList = [select Yi_loaner_arranged__c, Shipment_request_Cnt__c from Rental_Apply__c where OPDPlan__c = :opdplanId]; String rtn = 'OK'; if (null != raList && raList.size() > 0) { Integer yla = 0; Integer srct = 0; for (Rental_Apply__c ra : raList) { yla += Integer.valueOf(ra.Yi_loaner_arranged__c); srct += Integer.valueOf(ra.Shipment_request_Cnt__c); } if (yla > 0) { rtn = '备品已经出库,不能取消或延期OPD计划.'; } else if (srct > 0) { rtn = '备品已做出库指示,请联络备品中心取消或延期计划.'; } } return rtn; } WebService static String changeCampaign(String campaignId) { //学会取消得窗口调用 List raList = [select Yi_loaner_arranged__c, Shipment_request_Cnt__c from Rental_Apply__c where Campaign__c = :campaignId]; String rtn = 'OK'; //因为报50001得错误。所以取消聚合函数得引用 // List opdList = [select sum(Yi_loaner_arranged__c) yla,sum(Shipment_request_Cnt__c) src from Rental_Apply__c where Campaign__c = :campaignId]; if (null != raList && raList.size() > 0) { Integer yla = 0; Integer srct = 0; for (Rental_Apply__c ra : raList) { yla += Integer.valueOf(ra.Yi_loaner_arranged__c); srct += Integer.valueOf(ra.Shipment_request_Cnt__c); } if (yla > 0) { rtn = '备品已经出库,不能取消或延期学会.'; } else if (srct > 0) { rtn = '备品已做出库指示,不能取消或延期学会.'; } } return rtn; } WebService static String dataCheck(String rentalApplyId) { string result = 'OK'; if (String.isBlank(rentalApplyId)) { result = 'opd计划无备品借出申请,无法进行OPD补充申请'; return result; } List RAStatusList = new List(); RAStatusList.add('申请中'); RAStatusList.add('已批准'); RAStatusList.add('已出库指示'); RAStatusList.add('已下架'); RAStatusList.add('出库前已检测'); List raList = new List(); raList = [SELECT Id, Name, RA_Status__c, Status__c FROM Rental_Apply__c WHERE Id = :rentalApplyId AND demo_purpose2__c != '试用(有询价)' AND demo_purpose2__c != '试用(无询价)' AND demo_purpose2__c != '新产品评价' AND Status__c != '申请中' AND RA_Status__c not In:RAStatusList limit 1]; //不满足要求 不能创建 opd计划 if (raList.size() > 0) { Rental_Apply__c ra = raList[0]; String status = ra.RA_Status__c; if (ra.Status__c != '申请中') { result = 'opd计划下备品借出申请 状态 不是 申请中,无法进行OPD补充申请'; } else if (!RAStatusList.contains(status)) { result = 'opd计划下备品借出申请 备品借出状态 不是 申请中、已批准、已出库指示、已下架、出库前已检测,无法进行OPD补充申请'; } else { result = 'opd计划下备品借出申请 使用目的2 不是 试用(有询价)、试用(无询价)、新产品评价,无法进行OPD补充申请'; } } return result; } WebService static String raesCountCheck(String rentalApplyId) { String result = 'OK'; List raLsit = [ SELECT Id, OPDPlan__r.OriginalOpdPlanApplication__r.Rental_Apply2__c from Rental_Apply__c where SupplementCreated__c = true AND OPDPlan__c != null AND Id = :rentalApplyId]; if (raLsit.size() > 0 ) { // 获取 补充申请OPD计划创建的 备品借出申请Id 以及 被克隆的备品借出申请Id Set raIdSet = new Set(); for (Rental_Apply__c ra : raLsit) { Id raId = ra.Id; Id cloneRaId = ra.OPDPlan__r.OriginalOpdPlanApplication__r.Rental_Apply2__c; raIdSet.add(raId); raIdSet.add(cloneRaId); } //查找 备品借出申请下 已有多少个借出备品配套一览 AggregateResult[] aggArr = [ SELECT Rental_Apply__c raId, count(Id) cnt FROM Rental_Apply_Equipment_Set__c WHERE Rental_Apply__c In :raIdSet //AND Cancel_Reason__c != null group by Rental_Apply__c ]; Map raIdCntMap = new Map(); for (AggregateResult ar : aggArr ) { String raId = String.valueOf(ar.get('raId')); Integer cnt = Integer.valueOf(ar.get('cnt')); raIdCntMap.put(raId, cnt); } Map raCheckMap = new Map(); for (Rental_Apply__c ra : raLsit) { String raId = ra.Id; Integer raCnt = 0; if (raIdCntMap.containskey(raId)) { raCnt = raIdCntMap.get(raId); } String cloneRaId = ra.OPDPlan__r.OriginalOpdPlanApplication__r.Rental_Apply2__c; Integer cloneRacnt = 0; if (raIdCntMap.containskey(cloneRaId)) { cloneRacnt = raIdCntMap.get(cloneRaId); } //system.debug('cloneRacnt------>' + cloneRacnt); if ( raCnt > cloneRacnt) { raCheckMap.put(raId, true); } } if (raCheckMap != null && raCheckMap.size() > 0) { result = '借出备品配套一览数量 超出 原备品借出申请借出备品配套一览数量'; } } return result; } @TestVisible public static void test() { Integer i = 0; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; } }