public with sharing class RepairAgainAnHandler extends Oly_TriggerHandler{ private Map newMap; private Map oldMap; private List newList; private List oldList; public RepairAgainAnHandler() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } protected override void beforeInsert() { setPhotoImgText(); setRepairAgainName(); } protected override void beforeUpdate() { setPhotoImgText(); setStatusChange(); } protected override void afterUpdate(){ submitRepair(); } public static Set RA_Ids = new Set(); //再注册分析 需求 新增字段 20220811 sx start public static List openRepairAgainRepairIds = new List(); public static List finalRepairAgainRepairIds = new List(); //再注册分析 需求 新增字段 20220811 sx end private void setRepairAgainName() { Set repairSet = new Set(); for(RepairAgainAn__c ra : newList){ repairSet.add(ra.Repair__c); } Map repairMap = new Map([SELECT Id,Name, (select Id from reparirAgain01__r) from Repair__c where id in :repairSet]); for(RepairAgainAn__c ra : newList){ if(repairMap.containsKey(ra.Repair__c)){ Integer repairSize = repairMap.get(ra.Repair__c).reparirAgain01__r.size(); String repairSizeString = '000' + repairMap.get(ra.Repair__c).reparirAgain01__r.size(); String cutString = repairSizeString.substring(repairSizeString.length()-3, repairSizeString.length()); if(repairSize == 0) { ra.Name = repairMap.get(ra.Repair__c).Name + '_001'; }else{ ra.Name = repairMap.get(ra.Repair__c).Name + '_' + cutString; } } } } private void setPhotoImgText() { for (RepairAgainAn__c ra : newList) { System.debug('ra.Dectect_Picture1__c2:' + ra.Dectect_Picture1__c); // 禁止重复执行 if (RA_Ids.contains(ra.Id)) continue; // 本次报价检测图片1 if (Trigger.isAfter && Trigger.isInsert && String.isBlank(ra.Dectect_Picture1__c) == false || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).Dectect_Picture1__c != ra.Dectect_Picture1__c) || (Trigger.isUpdate && String.isBlank(ra.Dectect_Picture1__c) == false && String.isBlank(ra.Dectect_Picture1_URL__c)) ) { String phtTxt = ''; if (String.isBlank(ra.Dectect_Picture1__c) == false) { Integer pStt = ra.Dectect_Picture1__c.indexOf('= 0) { pStt = ra.Dectect_Picture1__c.indexOf('src="'); if (pStt >= 0) { Integer pEnd = ra.Dectect_Picture1__c.indexOf('"', pStt + 5); if (pEnd >= 0) { phtTxt = ra.Dectect_Picture1__c.substring(pStt + 5, pEnd); System.debug('ra.Dectect_Picture1__c1:' + ra.Dectect_Picture1__c); System.debug('phtTxt1:' + phtTxt); //富文本反转义 phtTxt = phtTxt.unescapeHtml4(); System.debug('phtTxt2:' + phtTxt); } } } } ra.Dectect_Picture1_URL__c = phtTxt; RA_Ids.add(ra.Id); } // 本次报价检测图片2 if (Trigger.isAfter && Trigger.isInsert && String.isBlank(ra.Dectect_Picture2__c) == false || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).Dectect_Picture2__c != ra.Dectect_Picture2__c) || (Trigger.isUpdate && String.isBlank(ra.Dectect_Picture2__c) == false && String.isBlank(ra.Dectect_Picture2_URL__c)) ) { String phtTxt = ''; if (String.isBlank(ra.Dectect_Picture2__c) == false) { Integer pStt = ra.Dectect_Picture2__c.indexOf('= 0) { pStt = ra.Dectect_Picture2__c.indexOf('src="'); if (pStt >= 0) { Integer pEnd = ra.Dectect_Picture2__c.indexOf('"', pStt + 5); if (pEnd >= 0) { phtTxt = ra.Dectect_Picture2__c.substring(pStt + 5, pEnd); //富文本反转义 phtTxt = phtTxt.unescapeHtml4(); } } } } ra.Dectect_Picture2_URL__c = phtTxt; RA_Ids.add(ra.Id); } // OSH技术检测图片1 if (Trigger.isInsert && String.isBlank(ra.OSH_Dectect_Picture1__c) == false || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).OSH_Dectect_Picture1__c != ra.OSH_Dectect_Picture1__c) || (Trigger.isUpdate && String.isBlank(ra.OSH_Dectect_Picture1__c) == false && String.isBlank(ra.OSH_Dectect_Picture1_URL__c)) ) { String phtTxt = ''; if (String.isBlank(ra.OSH_Dectect_Picture1__c) == false) { Integer pStt = ra.OSH_Dectect_Picture1__c.indexOf('= 0) { pStt = ra.OSH_Dectect_Picture1__c.indexOf('src="'); if (pStt >= 0) { Integer pEnd = ra.OSH_Dectect_Picture1__c.indexOf('"', pStt + 5); if (pEnd >= 0) { phtTxt = ra.OSH_Dectect_Picture1__c.substring(pStt + 5, pEnd); System.debug('ra.OSH_Dectect_Picture1__c1:' + ra.OSH_Dectect_Picture1__c); System.debug('phtTxt3:' + phtTxt); //富文本反转义 phtTxt = phtTxt.unescapeHtml4(); System.debug('phtTxt4:' + phtTxt); } } } } ra.OSH_Dectect_Picture1_URL__c = phtTxt; RA_Ids.add(ra.Id); } // OSH技术检测图片2 if (Trigger.isInsert && String.isBlank(ra.OSH_Dectect_Picture2__c) == false || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).OSH_Dectect_Picture2__c != ra.OSH_Dectect_Picture2__c) || (Trigger.isUpdate && String.isBlank(ra.OSH_Dectect_Picture2__c) == false && String.isBlank(ra.OSH_Dectect_Picture2_URL__c)) ) { String phtTxt = ''; if (String.isBlank(ra.OSH_Dectect_Picture2__c) == false) { Integer pStt = ra.OSH_Dectect_Picture2__c.indexOf('= 0) { pStt = ra.OSH_Dectect_Picture2__c.indexOf('src="'); if (pStt >= 0) { Integer pEnd = ra.OSH_Dectect_Picture2__c.indexOf('"', pStt + 5); if (pEnd >= 0) { phtTxt = ra.OSH_Dectect_Picture2__c.substring(pStt + 5, pEnd); //富文本反转义 phtTxt = phtTxt.unescapeHtml4(); } } } } ra.OSH_Dectect_Picture2_URL__c = phtTxt; RA_Ids.add(ra.Id); } // OSH技术检测图片3 if (Trigger.isInsert && String.isBlank(ra.OSH_Dectect_Picture3__c) == false || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).OSH_Dectect_Picture3__c != ra.OSH_Dectect_Picture3__c) || (Trigger.isUpdate && String.isBlank(ra.OSH_Dectect_Picture3__c) == false && String.isBlank(ra.OSH_Dectect_Picture3_URL__c)) ) { String phtTxt = ''; if (String.isBlank(ra.OSH_Dectect_Picture3__c) == false) { Integer pStt = ra.OSH_Dectect_Picture3__c.indexOf('= 0) { pStt = ra.OSH_Dectect_Picture3__c.indexOf('src="'); if (pStt >= 0) { Integer pEnd = ra.OSH_Dectect_Picture3__c.indexOf('"', pStt + 5); if (pEnd >= 0) { phtTxt = ra.OSH_Dectect_Picture3__c.substring(pStt + 5, pEnd); //富文本反转义 phtTxt = phtTxt.unescapeHtml4(); } } } } ra.OSH_Dectect_Picture3_URL__c = phtTxt; RA_Ids.add(ra.Id); } // OSH技术检测图片4 if (Trigger.isInsert && String.isBlank(ra.OSH_Dectect_Picture4__c) == false || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).OSH_Dectect_Picture4__c != ra.OSH_Dectect_Picture4__c) || (Trigger.isUpdate && String.isBlank(ra.OSH_Dectect_Picture4__c) == false && String.isBlank(ra.OSH_Dectect_Picture4_URL__c)) ) { String phtTxt = ''; if (String.isBlank(ra.OSH_Dectect_Picture4__c) == false) { Integer pStt = ra.OSH_Dectect_Picture4__c.indexOf('= 0) { pStt = ra.OSH_Dectect_Picture4__c.indexOf('src="'); if (pStt >= 0) { Integer pEnd = ra.OSH_Dectect_Picture4__c.indexOf('"', pStt + 5); if (pEnd >= 0) { phtTxt = ra.OSH_Dectect_Picture4__c.substring(pStt + 5, pEnd); //富文本反转义 phtTxt = phtTxt.unescapeHtml4(); } } } } ra.OSH_Dectect_Picture4_URL__c = phtTxt; RA_Ids.add(ra.Id); } } } public void setStatusChange() { Map rtmaps = new Map(); List rtIds = [SELECT Id,Name FROM RecordType where SobjectType='RepairAgainAn__c']; Date todayTemp = Date.today(); for (RecordType rt : rtIds) { rtmaps.put(rt.Name, rt.Id); } for (RepairAgainAn__c raa : newList) { RepairAgainAn__c raaOld = oldMap.get(raa.id); //状态变更为草案中 if (String.isBlank(raa.RepairAgain_Status__c)) { raa.RepairAgain_Status__c = '草案中'; } //当RC的内容填写完毕 if(raa.RepairAgain_Status__c == 'RC填写完毕' && raaOld.RepairAgain_Status__c != 'RC填写完毕') { raa.RecordTypeId = rtmaps.get('2.OSH'); // 发起再注册分析时间 raa.Start_RepairAgainAn_Day__c = todayTemp; // TODO 和SAP交互 OPEN openRepairAgainRepairIds.add(raa.Repair__c); } //当OSH受理 if(raa.RepairAgain_Status__c == 'OSH受理' && raaOld.RepairAgain_Status__c != 'OSH受理') { // OSH受理日 raa.OSH_Accept_Day__c = todayTemp; } //当OSH内容填写完毕 if(raa.RepairAgain_Status__c == 'OSH填写完毕' && raaOld.RepairAgain_Status__c != 'OSH填写完毕') { raa.RecordTypeId = rtmaps.get('3.OCSM'); // OSH判定结论确认日 raa.OSH_End_Day__c = todayTemp; } //当OCSM跟进完毕 if(raa.RepairAgain_Status__c == '完毕' && raaOld.RepairAgain_Status__c != '完毕') { raa.RecordTypeId = rtmaps.get('4.Final完毕'); // OCSM判定结论确认日 raa.OCSM_End_Day__c = todayTemp; // TODO 和SAP交互 finalRepairAgainRepairIds.add(raa.Repair__c); } } } public void submitRepair(){ if(openRepairAgainRepairIds.size() > 0 || finalRepairAgainRepairIds.size() > 0){ BatchIF_Log__c iflog = new BatchIF_Log__c(); iflog.Type__c = 'NFM103'; iflog.Log__c = 'callout start\n'; insert iflog; if(openRepairAgainRepairIds.size() > 0) { //关联一个open的再修理分析,传X NFM103Controller.callout(iflog.Id, openRepairAgainRepairIds,'X'); } if(finalRepairAgainRepairIds.size() > 0) { //关联再修理分析完毕,传F NFM103Controller.callout(iflog.Id, finalRepairAgainRepairIds,'F'); } } } }