public without sharing class RepairReceiptHandler{ // XHL 20200820 update public static Map updateMaps(Map updateMap , Repair_receipt__c rr , Repair__c rep) { rep.id = rr.Repair__c; Boolean updateFlag = false; //开票名称 if (String.isNotBlank(rr.BilltoPartyName__c)) { rep.BilltoPartyNoAccount__c = getValue(rr.BilltoPartyName__c,rr.Repair_NameOfInvoice__c); updateFlag = true; } // 经销商分类参考(发票) if (String.isNotBlank(rr.DealerType__c)) { rep.DealerClassification__c = getValue(rr.DealerType__c,rr.Repair_DealerClassificationReference__c); updateFlag = true; } // 经销商分类(发票) if (String.isNotBlank(rr.DealerTypeOrg__c)) { rep.DealerType__c = getValue(rr.DealerTypeOrg__c,rr.Repair_DealerClassification__c); updateFlag = true; } if (updateFlag) { updateMap.put(rep.id,rep); } return updateMap; } // XHL 20200820 update public static void UpdateMaintenanceInvoiceCollection(List newList, Map newMap, List oldList, Map oldMap){ Map updateMap = new Map(); for (Repair_receipt__c rr : newList) { Repair__c rep = new Repair__c(); if(updateMap != null && updateMap.size() > 0) { rep = updateMap.get(rr.Repair__c); if(rep != null) { Boolean updateFlag = false; //开票名称 if (String.isNotBlank(rr.BilltoPartyName__c)) { rep.BilltoPartyNoAccount__c = getValue(rr.BilltoPartyName__c,rep.BilltoPartyNoAccount__c); updateFlag = true; } // 经销商分类参考(发票) if (String.isNotBlank(rr.DealerType__c)) { rep.DealerClassification__c = getValue(rr.DealerType__c,rep.DealerClassification__c); updateFlag = true; } // 经销商分类(发票) if (String.isNotBlank(rr.DealerTypeOrg__c)) { rep.DealerType__c = getValue(rr.DealerTypeOrg__c,rep.DealerType__c); updateFlag = true; } if (updateFlag) { updateMap.put(rep.id,rep); } }else { rep = new Repair__c(); updateMap = updateMaps(updateMap,rr,rep); } }else { updateMap = updateMaps(updateMap,rr,rep); } } if(updateMap != null && updateMap.size() > 0){ update updateMap.values(); } } /** XHL 20200820 add * [getValue 数据拼接] * @param repairReceiptValue [维修发票/回款 的 值] * @param repairValue [修理 的值] * @return [description] */ public static String getValue(String repairReceiptValue,String repairValue) { String value = ''; if (String.isBlank(repairValue)) { value = repairReceiptValue; }else if ( String.isNotBlank(repairValue)) { if (repairValue.indexOf(repairReceiptValue) == -1) { String valueStr = repairReceiptValue + '/' + repairValue; if(valueStr != '' && valueStr.length() >= 255) { value = valueStr.subString(0,255); } else { value = valueStr; } } else { value = repairValue; } } return value; } // public static void DeleteMaintenanceInvoiceCollection(List newList, Map newMap, List oldList, Map oldMap){ // List rcs = new List(); // // 需要删除的维修,在拼接名称的时候跳过 // Map delRRMap = new Map(); // // 修理Id对应下的维修 // Map> rcMaps = new Map>(); // rcs = oldList; // for(Repair_receipt__c rr : rcs){ // delRRMap.put(rr.Id,rr); // } // // 拿到所有的修理id // Set ids = new Set(); // for (Repair_receipt__c re : rcs) { // ids.add(re.Repair__c); // } // // 拿到所有的修理 // Map resMap = new Map([SELECT id,name,BilltoPartyNoAccount__c,DealerClassification__c FROM Repair__c WHERE id IN : ids]); // // 拿到修理对应的所有维修发票/回款 // rcs = [SELECT id,BilltoPartyName__c,Repair_DealerClassificationReference__c,Repair_DealerClassification__c,Repair_NameOfInvoice__c,Repair__c,BilltoPartyNoAccount__c,AccNameF__c,DealerType__c,DealerTypeOrg__c FROM Repair_receipt__c WHERE Repair__c IN :ids]; // for (Repair_receipt__c rc : rcs) { // List res = rcMaps.get(rc.Repair__c); // if (res == null) { // res = new List(); // } // res.add(rc); // rcMaps.put(rc.Repair__c,res); // } // // 迭代集合,并对修理的新增字段开票名称赋值 // for (String repairId : rcMaps.keySet()) { // Repair__c re = resMap.get(repairId); // if (re != null) { // //开票名称 // Set names = new Set(); // //经销商分类参考(发票) // Set Dealers = new Set(); // //经销商分类(发票) // Set DealerTypes = new Set(); // List rrs = rcMaps.get(repairId); // if(rrs != null){ // for (Repair_receipt__c rr : rrs) { // if (delRRMap.get(rr.Id) != null) { // continue; // } // if (!String.isBlank(rr.BilltoPartyName__c) && String.isBlank(rr.Repair_NameOfInvoice__c)) { // names.add(rr.AccNameF__c); // }else if (!String.isBlank(rr.BilltoPartyName__c) && !String.isBlank(rr.Repair_NameOfInvoice__c)) { // if (rr.Repair_NameOfInvoice__c.indexOf(rr.BilltoPartyName__c) == -1) { // names.add(rr.AccNameF__c); // } // } // if (!String.isBlank(rr.DealerType__c) && String.isBlank(rr.Repair_DealerClassificationReference__c)){ // Dealers.add(rr.DealerType__c); // }else if (!String.isBlank(rr.DealerType__c) && !String.isBlank(rr.Repair_DealerClassificationReference__c)) { // if (rr.Repair_DealerClassificationReference__c.indexOf(rr.DealerType__c) == -1) { // Dealers.add(rr.DealerType__c); // } // } // if(!String.isBlank(rr.DealerTypeOrg__c) && String.isBlank(rr.Repair_DealerClassification__c)){ // DealerTypes.add(rr.DealerTypeOrg__c); // }else if (!String.isBlank(rr.DealerTypeOrg__c) && !String.isBlank(rr.Repair_DealerClassification__c)) { // if (rr.Repair_DealerClassification__c.indexOf(rr.DealerTypeOrg__c) == -1) { // DealerTypes.add(rr.DealerTypeOrg__c); // } // } // } // if(names != null && names.size() > 0) { // //开票名称 // String nameStr = String.join(new List(names), '/'); // if(nameStr != '' && nameStr.length() >= 255) { // re.BilltoPartyNoAccount__c = nameStr.subString(0,255); // } else { // re.BilltoPartyNoAccount__c = nameStr; // } // } // if (Dealers != null && Dealers.size() > 0) { // String dealersStr = String.join(new List(Dealers), '/'); // // 经销商分类参考(发票) // re.DealerClassification__c = dealersStr; // } // if (DealerTypes != null && DealerTypes.size() > 0) { // String DealerTypesStr = String.join(new List(DealerTypes), '/'); // // 经销商分类(发票) // re.DealerType__c = DealerTypesStr; // } // } // } // } // update resMap.values(); // } }