trigger OpponentBidInformation2Asset on Opponent_Bid_Information__c (after delete, after insert, after update) { // 2018年7月12日 为'对手中标信息'添加trigger by 张玉山 List targetInsertObis = new List(); List targetUpdateObis = new List(); List delAstIds = new List(); List OppoList = new List(); if (Trigger.isInsert) { for (Opponent_Bid_Information__c obi : Trigger.new) { if (obi.RecordType_DevName__c == 'OpponentBidInformation' && obi.HP_RecordType_DevName__c == 'HP') { targetInsertObis.add(obi); } OppoList.add(obi.Opportunity__c); } system.debug('1234' + targetInsertObis); //ControllerUtil.updateSIodcList(OppoList);//询价失单,SI需求表无效化 } else if (Trigger.isUpdate) { for (Opponent_Bid_Information__c obi : Trigger.new) { if (obi.RecordType_DevName__c == 'OpponentBidInformation' && obi.HP_RecordType_DevName__c == 'HP' && (obi.CompetitorProduct1__c != Trigger.oldMap.get(obi.Id).get('CompetitorProduct1__c') || obi.CompetitorProduct2__c != Trigger.oldMap.get(obi.Id).get('CompetitorProduct2__c') || obi.CompetitorProduct3__c != Trigger.oldMap.get(obi.Id).get('CompetitorProduct3__c') || obi.CompetitorProduct4__c != Trigger.oldMap.get(obi.Id).get('CompetitorProduct4__c') ) ) { targetUpdateObis.add(obi); } } } else if (Trigger.isDelete) { for (Opponent_Bid_Information__c obi : Trigger.old) { if (obi.CompetitorAsset1__c != null) { delAstIds.add(obi.CompetitorAsset1__c); } if (obi.CompetitorAsset2__c != null) { delAstIds.add(obi.CompetitorAsset2__c); } if (obi.CompetitorAsset3__c != null) { delAstIds.add(obi.CompetitorAsset3__c); } if (obi.CompetitorAsset4__c != null) { delAstIds.add(obi.CompetitorAsset4__c); } } } if (targetInsertObis.size() > 0 || targetUpdateObis.size() > 0) { Map upsertAstMap = new Map(); // obi.id + 枝番 ==> Asset for (Opponent_Bid_Information__c obi : [ Select CompetitorAsset1__c, CompetitorProduct1__c, CompetitorAsset2__c, CompetitorProduct2__c, CompetitorAsset3__c, CompetitorProduct3__c, CompetitorAsset4__c, CompetitorProduct4__c, Opportunity__c, Submit_Day__c, Lost_By_Product__c, Lost_By_Brand__c, Opportunity__r.Hospital__c, Opportunity__r.Department_Class__c, Opportunity__r.AccountId From Opponent_Bid_Information__c Where (id IN :targetInsertObis or id IN :targetUpdateObis) ] ) { if (obi.CompetitorProduct1__c != null) { Asset upsertAssert = new Asset( Id = obi.CompetitorAsset1__c, Name = '*', Product2Id = obi.CompetitorProduct1__c, Opportunity__c = obi.Opportunity__c, InstallDate = obi.Submit_Day__c, Hospital__c = obi.Opportunity__r.Hospital__c, Department_Class__c = obi.Opportunity__r.Department_Class__c, AccountId = obi.Opportunity__r.AccountId, Status = '使用中', Asset_Owner__c = '病院資産', IsCompetitorProduct = True ); if(obi.Lost_By_Product__c != null){ upsertAssert.Manual_competitor_product_code__c = obi.Lost_By_Product__c; } if(obi.Lost_By_Brand__c != null){ upsertAssert.Manual_competitor_product_company__c = obi.Lost_By_Brand__c; } upsertAstMap.put(obi.Id + '_1', upsertAssert); } if (obi.CompetitorProduct2__c != null) { Asset upsertAssert = new Asset( Id = obi.CompetitorAsset2__c, Name = '*', Product2Id = obi.CompetitorProduct2__c, Opportunity__c = obi.Opportunity__c, InstallDate = obi.Submit_Day__c, Hospital__c = obi.Opportunity__r.Hospital__c, Department_Class__c = obi.Opportunity__r.Department_Class__c, AccountId = obi.Opportunity__r.AccountId, Status = '使用中', Asset_Owner__c = '病院資産', IsCompetitorProduct = True ); upsertAstMap.put(obi.Id + '_2', upsertAssert); } if (obi.CompetitorProduct3__c != null) { Asset upsertAssert = new Asset( Id = obi.CompetitorAsset3__c, Name = '*', Product2Id = obi.CompetitorProduct3__c, Opportunity__c = obi.Opportunity__c, InstallDate = obi.Submit_Day__c, Hospital__c = obi.Opportunity__r.Hospital__c, Department_Class__c = obi.Opportunity__r.Department_Class__c, AccountId = obi.Opportunity__r.AccountId, Status = '使用中', Asset_Owner__c = '病院資産', IsCompetitorProduct = True ); upsertAstMap.put(obi.Id + '_3', upsertAssert); } if (obi.CompetitorProduct4__c != null) { Asset upsertAssert = new Asset( Id = obi.CompetitorAsset4__c, Name = '*', Product2Id = obi.CompetitorProduct4__c, Opportunity__c = obi.Opportunity__c, InstallDate = obi.Submit_Day__c, Hospital__c = obi.Opportunity__r.Hospital__c, Department_Class__c = obi.Opportunity__r.Department_Class__c, AccountId = obi.Opportunity__r.AccountId, Status = '使用中', Asset_Owner__c = '病院資産', IsCompetitorProduct = True ); upsertAstMap.put(obi.Id + '_4', upsertAssert); } } system.debug('233332'+upsertAstMap.values()); ControllerUtil.upsertAsset(upsertAstMap.values()); List updateObis = new List(); for (Opponent_Bid_Information__c obi : targetInsertObis) { if (upsertAstMap.containsKey(obi.Id + '_1') || upsertAstMap.containsKey(obi.Id + '_2') || upsertAstMap.containsKey(obi.Id + '_3') || upsertAstMap.containsKey(obi.Id + '_4') ) { Opponent_Bid_Information__c updObi = new Opponent_Bid_Information__c(Id = obi.Id); updateObis.add(updObi); if (upsertAstMap.containsKey(obi.Id + '_1')) { updObi.CompetitorAsset1__c = upsertAstMap.get(obi.Id + '_1').Id; } if (upsertAstMap.containsKey(obi.Id + '_2')) { updObi.CompetitorAsset2__c = upsertAstMap.get(obi.Id + '_2').Id; } if (upsertAstMap.containsKey(obi.Id + '_3')) { updObi.CompetitorAsset3__c = upsertAstMap.get(obi.Id + '_3').Id; } if (upsertAstMap.containsKey(obi.Id + '_4')) { updObi.CompetitorAsset4__c = upsertAstMap.get(obi.Id + '_4').Id; } } } for (Opponent_Bid_Information__c obi : targetUpdateObis) { if (upsertAstMap.containsKey(obi.Id + '_1') || upsertAstMap.containsKey(obi.Id + '_2') || upsertAstMap.containsKey(obi.Id + '_3') || upsertAstMap.containsKey(obi.Id + '_4') ) { Opponent_Bid_Information__c updObi = new Opponent_Bid_Information__c(Id = obi.Id); updateObis.add(updObi); if (upsertAstMap.containsKey(obi.Id + '_1')) { updObi.CompetitorAsset1__c = upsertAstMap.get(obi.Id + '_1').Id; } if (upsertAstMap.containsKey(obi.Id + '_2')) { updObi.CompetitorAsset2__c = upsertAstMap.get(obi.Id + '_2').Id; } if (upsertAstMap.containsKey(obi.Id + '_3')) { updObi.CompetitorAsset3__c = upsertAstMap.get(obi.Id + '_3').Id; } if (upsertAstMap.containsKey(obi.Id + '_4')) { updObi.CompetitorAsset4__c = upsertAstMap.get(obi.Id + '_4').Id; } } } update updateObis; } if (delAstIds.size() > 0) { ControllerUtil.deleteAsset(delAstIds); }/* 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++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++;*/ }