| trigger LostCancelReport2Asset on Lost_cancel_report__c (after delete, after insert, after update) { | 
| /* | 
|     List<Lost_cancel_report__c> targetInsertLcrs = new List<Lost_cancel_report__c>(); | 
|     List<Lost_cancel_report__c> targetUpdateLcrs = new List<Lost_cancel_report__c>(); | 
|     List<Id> delAstIds = new List<Id>(); | 
|     List<String> OppoList = new List<String>(); | 
|     if (Trigger.isInsert) { | 
|         for (Lost_cancel_report__c lcr : Trigger.new) { | 
|             if (lcr.RecordType_DevName__c == 'PCL_Lost_report' && lcr.HP_RecordType_DevName__c == 'HP') { | 
|                 targetInsertLcrs.add(lcr); | 
|             } | 
|             OppoList.add(lcr.Opportunity__c); | 
|         } | 
|         //ControllerUtil.updateSIodcList(OppoList);//询价失单,SI需求表无效化 | 
|     } | 
|     else if (Trigger.isUpdate) { | 
|         for (Lost_cancel_report__c lcr : Trigger.new) { | 
|             if (lcr.RecordType_DevName__c == 'PCL_Lost_report' && lcr.HP_RecordType_DevName__c == 'HP' | 
|                 && (lcr.CompetitorProduct1__c != Trigger.oldMap.get(lcr.Id).get('CompetitorProduct1__c') | 
|                     || lcr.CompetitorProduct2__c != Trigger.oldMap.get(lcr.Id).get('CompetitorProduct2__c') | 
|                     || lcr.CompetitorProduct3__c != Trigger.oldMap.get(lcr.Id).get('CompetitorProduct3__c') | 
|                     || lcr.CompetitorProduct4__c != Trigger.oldMap.get(lcr.Id).get('CompetitorProduct4__c') | 
|                 ) | 
|             ) { | 
|                 targetUpdateLcrs.add(lcr); | 
|             } | 
|         } | 
|     } | 
|     else if (Trigger.isDelete) { | 
|         for (Lost_cancel_report__c lcr : Trigger.old) { | 
|             if (lcr.CompetitorAsset1__c != null) { | 
|                 delAstIds.add(lcr.CompetitorAsset1__c); | 
|             } | 
|             if (lcr.CompetitorAsset2__c != null) { | 
|                 delAstIds.add(lcr.CompetitorAsset2__c); | 
|             } | 
|             if (lcr.CompetitorAsset3__c != null) { | 
|                 delAstIds.add(lcr.CompetitorAsset3__c); | 
|             } | 
|             if (lcr.CompetitorAsset4__c != null) { | 
|                 delAstIds.add(lcr.CompetitorAsset4__c); | 
|             } | 
|         } | 
|     } | 
|     if (targetInsertLcrs.size() > 0 || targetUpdateLcrs.size() > 0) { | 
|         Map<String, Asset> upsertAstMap = new Map<String, Asset>();   // lcr.id + 枝番 ==> Asset  | 
|         for (Lost_cancel_report__c lcr : [ | 
|                  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 Lost_cancel_report__c | 
|                   Where (id IN :targetInsertLcrs or id IN :targetUpdateLcrs) | 
|                 ] | 
|         ) { | 
|             if (lcr.CompetitorProduct1__c != null) { | 
|                 Asset upsertAssert = new Asset( | 
|                     Id = lcr.CompetitorAsset1__c, | 
|                     Name = '*', | 
|                     Product2Id = lcr.CompetitorProduct1__c, | 
|                     Opportunity__c = lcr.Opportunity__c, | 
|                     InstallDate = lcr.Submit_Day__c, | 
|                     Hospital__c = lcr.Opportunity__r.Hospital__c, | 
|                     Department_Class__c = lcr.Opportunity__r.Department_Class__c, | 
|                     AccountId = lcr.Opportunity__r.AccountId, | 
|                     Status = '使用中', | 
|                     Asset_Owner__c = '病院資産', | 
|                     IsCompetitorProduct = True | 
|                 ); | 
|                 if(lcr.Lost_By_Product__c != null){ | 
|                     upsertAssert.Manual_competitor_product_code__c = lcr.Lost_By_Product__c; | 
|                 } | 
|                 if(lcr.Lost_By_Brand__c != null){ | 
|                     upsertAssert.Manual_competitor_product_company__c = lcr.Lost_By_Brand__c; | 
|                 } | 
|   | 
|                 upsertAstMap.put(lcr.Id + '_1', upsertAssert); | 
|             } | 
|             if (lcr.CompetitorProduct2__c != null) { | 
|                 Asset upsertAssert = new Asset( | 
|                     Id = lcr.CompetitorAsset2__c, | 
|                     Name = '*', | 
|                     Product2Id = lcr.CompetitorProduct2__c, | 
|                     Opportunity__c = lcr.Opportunity__c, | 
|                     InstallDate = lcr.Submit_Day__c, | 
|                     Hospital__c = lcr.Opportunity__r.Hospital__c, | 
|                     Department_Class__c = lcr.Opportunity__r.Department_Class__c, | 
|                     AccountId = lcr.Opportunity__r.AccountId, | 
|                     Status = '使用中', | 
|                     Asset_Owner__c = '病院資産', | 
|                     IsCompetitorProduct = True | 
|                 ); | 
|                 upsertAstMap.put(lcr.Id + '_2', upsertAssert); | 
|             } | 
|             if (lcr.CompetitorProduct3__c != null) { | 
|                 Asset upsertAssert = new Asset( | 
|                     Id = lcr.CompetitorAsset3__c, | 
|                     Name = '*', | 
|                     Product2Id = lcr.CompetitorProduct3__c, | 
|                     Opportunity__c = lcr.Opportunity__c, | 
|                     InstallDate = lcr.Submit_Day__c, | 
|                     Hospital__c = lcr.Opportunity__r.Hospital__c, | 
|                     Department_Class__c = lcr.Opportunity__r.Department_Class__c, | 
|                     AccountId = lcr.Opportunity__r.AccountId, | 
|                     Status = '使用中', | 
|                     Asset_Owner__c = '病院資産', | 
|                     IsCompetitorProduct = True | 
|                 ); | 
|                 upsertAstMap.put(lcr.Id + '_3', upsertAssert); | 
|             } | 
|             if (lcr.CompetitorProduct4__c != null) { | 
|                 Asset upsertAssert = new Asset( | 
|                     Id = lcr.CompetitorAsset4__c, | 
|                     Name = '*', | 
|                     Product2Id = lcr.CompetitorProduct4__c, | 
|                     Opportunity__c = lcr.Opportunity__c, | 
|                     InstallDate = lcr.Submit_Day__c, | 
|                     Hospital__c = lcr.Opportunity__r.Hospital__c, | 
|                     Department_Class__c = lcr.Opportunity__r.Department_Class__c, | 
|                     AccountId = lcr.Opportunity__r.AccountId, | 
|                     Status = '使用中', | 
|                     Asset_Owner__c = '病院資産', | 
|                     IsCompetitorProduct = True | 
|                 ); | 
|                 upsertAstMap.put(lcr.Id + '_4', upsertAssert); | 
|             } | 
|         } | 
|         system.debug('233332'+upsertAstMap.values()); | 
|         ControllerUtil.upsertAsset(upsertAstMap.values()); | 
|         List<Lost_cancel_report__c> updateLcrs = new List<Lost_cancel_report__c>(); | 
|         for (Lost_cancel_report__c lcr : targetInsertLcrs) { | 
|             if (upsertAstMap.containsKey(lcr.Id + '_1') || upsertAstMap.containsKey(lcr.Id + '_2') | 
|                     || upsertAstMap.containsKey(lcr.Id + '_3') || upsertAstMap.containsKey(lcr.Id + '_4') | 
|             ) { | 
|                 Lost_cancel_report__c updLcr = new Lost_cancel_report__c(Id = lcr.Id); | 
|                 updateLcrs.add(updLcr); | 
|                 if (upsertAstMap.containsKey(lcr.Id + '_1')) { | 
|                     updLcr.CompetitorAsset1__c = upsertAstMap.get(lcr.Id + '_1').Id; | 
|                 } | 
|                 if (upsertAstMap.containsKey(lcr.Id + '_2')) { | 
|                     updLcr.CompetitorAsset2__c = upsertAstMap.get(lcr.Id + '_2').Id; | 
|                 } | 
|                 if (upsertAstMap.containsKey(lcr.Id + '_3')) { | 
|                     updLcr.CompetitorAsset3__c = upsertAstMap.get(lcr.Id + '_3').Id; | 
|                 } | 
|                 if (upsertAstMap.containsKey(lcr.Id + '_4')) { | 
|                     updLcr.CompetitorAsset4__c = upsertAstMap.get(lcr.Id + '_4').Id; | 
|                 } | 
|             } | 
|         } | 
|         for (Lost_cancel_report__c lcr : targetUpdateLcrs) { | 
|             if (upsertAstMap.containsKey(lcr.Id + '_1') || upsertAstMap.containsKey(lcr.Id + '_2') | 
|                     || upsertAstMap.containsKey(lcr.Id + '_3') || upsertAstMap.containsKey(lcr.Id + '_4') | 
|             ) { | 
|                 Lost_cancel_report__c updLcr = new Lost_cancel_report__c(Id = lcr.Id); | 
|                 updateLcrs.add(updLcr); | 
|                 if (upsertAstMap.containsKey(lcr.Id + '_1')) { | 
|                     updLcr.CompetitorAsset1__c = upsertAstMap.get(lcr.Id + '_1').Id; | 
|                 } | 
|                 if (upsertAstMap.containsKey(lcr.Id + '_2')) { | 
|                     updLcr.CompetitorAsset2__c = upsertAstMap.get(lcr.Id + '_2').Id; | 
|                 } | 
|                 if (upsertAstMap.containsKey(lcr.Id + '_3')) { | 
|                     updLcr.CompetitorAsset3__c = upsertAstMap.get(lcr.Id + '_3').Id; | 
|                 } | 
|                 if (upsertAstMap.containsKey(lcr.Id + '_4')) { | 
|                     updLcr.CompetitorAsset4__c = upsertAstMap.get(lcr.Id + '_4').Id; | 
|                 } | 
|             } | 
|         } | 
|         update updateLcrs; | 
|     } | 
|     if (delAstIds.size() > 0) { | 
|         ControllerUtil.deleteAsset(delAstIds); | 
|     }*/ | 
| } |