public without sharing class LostCancelReportHandler extends Oly_TriggerHandler {
	private Map<Id, Lost_cancel_report__c> newMap;
	private Map<Id, Lost_cancel_report__c> oldMap;
	private List<Lost_cancel_report__c> newList;
	private List<Lost_cancel_report__c> oldList;

	public LostCancelReportHandler() {
		this.newMap = (Map<Id, Lost_cancel_report__c>) Trigger.newMap;
		this.oldMap = (Map<Id, Lost_cancel_report__c>) Trigger.oldMap;
		this.newList = (List<Lost_cancel_report__c>) Trigger.new;
		this.oldList = (List<Lost_cancel_report__c>) Trigger.old;
	}

	// 更新经理(销售) 20200302 Start
	protected override void beforeUpdate() {
		// 更新经理(销售)信息
		updateManager();
	}
	// 更新审批人 20200302 End

	protected override void afterUpdate() {

		// 更新询价的失单信息
		//updateLostInfo();
		updateopp();    // by tcm
	}
	/*
	   private void updateLostInfo() {
	    List<Opportunity> oppList = new List<Opportunity>();
	    //2018年7月16日  CHAN-B2HCB7 start 获取字段
	    List<Lost_cancel_report__c> temLCRList =
	        [select id,Opportunity__c,Report_Status__c,
	        Lost_By_Company__c,Lost_reason_main__c , of_lost_system_processor__c,
	        Lost_Reason_Sub__c, Lost_By_Product__c,
	        CompetitorProduct1__r.id, CompetitorProduct1__r.Name,
	        CompetitorProduct2__r.id, CompetitorProduct2__r.Name,
	        CompetitorProduct3__r.id, CompetitorProduct3__r.Name,
	        CompetitorProduct4__r.id, CompetitorProduct4__r.Name
	        from Lost_cancel_report__c
	        where id in: newList];
	    // 2018年7月16日  CHAN-B2HCB7 end 获取字段
	    for (Lost_cancel_report__c n : temLCRList) {
	        //Lost_cancel_report__c o = oldMap.get(n.id); && o.Report_Status__c != '批准'
	        if (n.Report_Status__c  == '批准' ) {
	            Opportunity opp = new Opportunity();
	            opp.id = n.Opportunity__c;
	            opp.Lost_Cancel_Report__c = n.id;
	            //2018年7月16日  CHAN-B2HCB7 start 为业务机会对象的竞争对手产品2、竞争对手产品3和竞争对手产品4赋值
	            if (n.CompetitorProduct2__r.id == '01t10000000Tqam') {
	                opp.CompetitorProduct2__c = n.Lost_By_Product__c;
	            } else {
	                opp.CompetitorProduct2__c = n.CompetitorProduct2__r.Name;
	            }
	            if (n.CompetitorProduct3__r.id == '01t10000000Tqam') {
	                opp.CompetitorProduct3__c = n.Lost_By_Product__c;
	            } else {
	                opp.CompetitorProduct3__c = n.CompetitorProduct3__r.Name;
	            }
	            if (n.CompetitorProduct4__r.id == '01t10000000Tqam') {
	                opp.CompetitorProduct4__c = n.Lost_By_Product__c;
	            } else {
	                opp.CompetitorProduct4__c = n.CompetitorProduct4__r.Name;
	            }
	            //2018年7月16日  CHAN-B2HCB7 end 为业务机会对象的竞争对手产品2、竞争对手产品3和竞争对手产品4赋值
	            //2018年7月16日  CHAN-B2X9SW  start 为业务机会对象的询价重复赋值
	            /*if (n.Cancel_Reason__c == '询价重复') {
	                //opp.Opportunity_repeated_text__c = n.Opportunity_repeated__c;
	            }
	            //2018年7月16日  CHAN-B2X9SW  end 为业务机会对象的询价重复赋值 by张玉山
	            oppList.add(opp);
	        }
	    }
	    if (oppList.size() > 0) update oppList;
	   }
	 */
	// 更新经理(销售) 20200302 Start
	private void  updateManager() {
		List<String> userIdList = new List<String>();
		for (Lost_cancel_report__c n: newList) {
			if (Trigger.isUpdate && (n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && (n.Report_Status__c == '申请中')) {
				userIdList.add(n.OwnerId__c);
			}
		}

		Map<String, User> userMap = new Map<String, User>();
		List<User> userList = [select Id, SalesManager__c from user where id =: userIdList];

		for (User u : userList) {
			String sid = u.Id;
			userMap.put(sid.substring(0,15), u);
		}

		for (Lost_cancel_report__c n : newList) {
			if (Trigger.isUpdate && (n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && (n.Report_Status__c == '申请中')) {
				if (userMap.get(n.OwnerId__c) != null) {
					n.Manager_sales__c = userMap.get(n.OwnerId__c).SalesManager__c;
				}
			}
		}
	}
	// 更新审批人 20200302 End

	// tcm 20211126 更新询价信息 start
	private void  updateopp() {
		// 清除不需要更新的
		Map<Id,Lost_cancel_report__c> arrMap=new Map<Id,Lost_cancel_report__c>();
		for (String newlcro : newMap.keyset()) {
			if (newMap.get(newlcro).Report_Status__c=='批准'&&oldMap.get(newlcro).Report_Status__c!='批准') {
				arrMap.put(newlcro,newMap.get(newlcro));
			}
		}
		List<PCLLostProduct__c> lcrList=[select id,PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c,PCLLostBrand__r.Lost_Reason_Sub__c,PCLLostBrand__r.Lost_cancel_report__r.LostTotalAmount__c,PCLLostBrand__r.Lost_cancel_report__r.LostType__c,PCLLostBrand__r.Lost_By_Company__c,PCLLostBrand__r.Lost_By_Company_Mannual__c,PCLLostBrand__r.LostPrice__c,LostProduct__r.Name, PCLLostBrand__r.Lost_reason_main__c,PCLLostBrand__r.Agency__r.Name,PCLLostBrand__r.AgencyMannual__c,PCLLostBrand__r.Lost_cancel_report__r.Opportunity__r.Name,Opportunity__c, LostProductMannual__c from PCLLostProduct__c where PCLLostBrand__r.Lost_cancel_report__c in : arrMap.keyset()];
		List<Opportunity> oppList=new List<Opportunity>();
		for (String lcro : arrMap.keyset()) {
			// 给产品赋值
			Integer i=0;
			//赋值询价去重
			List<String> jxsList=new List<String>();    //经销商
			List<String> ppList=new List<String>();     //失单品牌
			// List<String> yyList=new List<String>();     //失单原因
			//初始化
			Opportunity opp=new Opportunity();
			opp.Id=arrMap.get(lcro).Opportunity__c; opp.PCLLostBrands__c=''; opp.Agencies__c='';    //Id ,品牌,经销商
			// for产品
			for (PCLLostProduct__c lcr : lcrList) {
				if (opp.Id==lcr.Opportunity__c) {
					i++;
					//给询价不同字段赋值 失单
					if (lcr.PCLLostBrand__r.Lost_cancel_report__r.LostType__c=='失单') {
						if (i==1) {
							opp.CompetitorProduct1__c=lcr.LostProduct__r.Name != null ? lcr.LostProduct__r.Name : lcr.LostProductMannual__c;
						}else if (i==2) {
							opp.CompetitorProduct2__c=lcr.LostProduct__r.Name != null ? lcr.LostProduct__r.Name : lcr.LostProductMannual__c;
						}else if (i==3) {
							opp.CompetitorProduct3__c=lcr.LostProduct__r.Name != null ? lcr.LostProduct__r.Name : lcr.LostProductMannual__c;
						}
					}
					// 失单理由
					if (i==1) {
						opp.Lost_reason_main__c=lcr.PCLLostBrand__r.Lost_reason_main__c;
						opp.Lost_Reason_Sub__c=lcr.PCLLostBrand__r.Lost_Reason_Sub__c;

					}


					//经销商
					if (!jxsList.contains(lcr.PCLLostBrand__r.Agency__r.Name)) {
						jxsList.add(lcr.PCLLostBrand__r.Agency__r.Name);
						if (jxsList.size()==1) {
							if (lcr.PCLLostBrand__r.AgencyMannual__c==null) {
								opp.Agencies__c+=lcr.PCLLostBrand__r.Agency__r.Name;
							}else {
								opp.Agencies__c+=lcr.PCLLostBrand__r.AgencyMannual__c;
							}
						}else {
							if (lcr.PCLLostBrand__r.AgencyMannual__c==null) {
								opp.Agencies__c+='，'+lcr.PCLLostBrand__r.Agency__r.Name;
							}else {
								opp.Agencies__c+='，'+lcr.PCLLostBrand__r.AgencyMannual__c;
							}
						}
					}
					//失单品牌
					if (!ppList.contains(lcr.PCLLostBrand__r.Lost_By_Company__c)) {
						ppList.add(lcr.PCLLostBrand__r.Lost_By_Company__c);
						if (ppList.size()==1) {
							if (lcr.PCLLostBrand__r.Lost_By_Company__c=='其他') {
								opp.PCLLostBrands__c+=lcr.PCLLostBrand__r.Lost_By_Company_Mannual__c;
							}else {
								opp.PCLLostBrands__c+=lcr.PCLLostBrand__r.Lost_By_Company__c;
							}
						}else {
							if (lcr.PCLLostBrand__r.Lost_By_Company__c=='其他') {
								opp.PCLLostBrands__c+=','+lcr.PCLLostBrand__r.Lost_By_Company_Mannual__c;
							}else {
								opp.PCLLostBrands__c+=','+lcr.PCLLostBrand__r.Lost_By_Company__c;
							}
						}
					}
					// //失单原因
					// if (!yyList.contains(lcr.PCLLostBrand__r.Lost_reason_main__c)) {
					// 	yyList.add(lcr.PCLLostBrand__r.Lost_reason_main__c);
					// 	if (yyList.size()==1) {
					// 		opp.Lost_reason_mains__c+=lcr.PCLLostBrand__r.Lost_reason_main__c+'，';
					// 	}else {
					// 		opp.Lost_reason_mains__c+='，'+lcr.PCLLostBrand__r.Lost_reason_main__c;
					// 	}
					// }
					//失单总金额
					opp.LostPrices__c=lcr.PCLLostBrand__r.Lost_cancel_report__r.LostTotalAmount__c;
					opp.of_lost_system_processor__c=lcr.PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c;
				}
			}
			oppList.add(opp);
		}
		update oppList;
	}
	// tcm 20211126 更新询价信息 end

}