public with sharing class lexPCLLostReportLwcController {
	public Product2 pro2 { get; set; }
	public string oppId { get; set; }
	public string lostReportId { get; set; }
	// 当前页面状态 Create,View and Edit, MarketEdit
	public string pageStatus { get; set; }
	// 失单，部分失单
	public string lostType {get; set;}
	public Set<ID> deleteBrandIDSet = new Set<ID>();
	public string submitFlag {get; set;}
	public LostReport LostReport {get; set;}
	public integer brandNo {get; set;}
	public integer RemoveBrandNo {get; set;}
	public integer setBrandNo {get; set;}
	public integer brandCount {get; set;}
	// add tcm 20211122 start
	public integer topNum {get; set;}
	public integer secondNum {get; set;}
	// add tcm 20211122 end
	// 初始化
	public void initForApex(string oppId1,string lostReportId1,string pageStatus1,string lostType1,string submitFlag1){
		oppId = oppId1;
		lostReportId = lostReportId;
		pageStatus = pageStatus1;
		lostType = lostType1;
		submitFlag = submitFlag1;
	}
	public String init(){
		if(string.isblank(pageStatus)) {
			// 这里需要报错没有传参数
			return '页面出错，请刷新后重试！';
		}
		else if(pageStatus.equals('Create')) {
			if(string.isBlank(oppId)) {
				// 这里报错创建时候必须有询价
				return '创建失单报告时，请重询价页面创建';
			}
			list<opportunity> opplist =
			[select id,Name,
			 Sales_assistant_ID__c,
			 Sales_manager_departmentID__c,Sales_owner_buchangID__c
			 from opportunity
			 where id =: oppId
			            limit 1];
			if( opplist.size() == 0) {
				pageStatus = null;
				return '您没有询价的查看权限，无法创建失单报告！';
			}
			Schema.DescribeSObjectResult s = Lost_cancel_report__c.sObjectType.getDescribe();
			if( !s.isCreateable()) {
				return '您不能创建失单/部分失单报告！';
			}
			Lost_cancel_report__c tempLostReport =
				new Lost_cancel_report__c(LostType__c= lostType,
				                          Opportunity__c = oppId,
				                          Sales_assistant__c = opplist[0].Sales_assistant_ID__c,
				                          Manager_sales__c = opplist[0].Sales_manager_departmentID__c,
				                          Buchang_sales__c = opplist[0].Sales_owner_buchangID__c,
				                          Submit_Day__c = date.today(),
				                          Report_Status__c = '草案');
			LostReport = new LostReport(tempLostReport);
			brandCount = 1;
		}
		else if(pageStatus.equals('View') ||  pageStatus.equals('Edit')) {
			system.debug('edit1');
			if(string.isBlank(lostReportId)) {
				pageStatus = null;
				return '您没有查看这个失单/部分失单报告的权限！';
			}
			system.debug('edit2');
			list<Lost_cancel_report__c> lostReportList =
			[select id,of_lost_system_processor__c,
			 Lost_reason_main__c,
			 Lost_Reason_Sub__c,Lost_By_Company__c,
			 LostTotalAmount__c,LostType__c,
			 Report_Status__c,Sales_assistant__c,
			 Opportunity__c, Opportunity__r.Sales_assistant_ID__c,
			 Opportunity__r.Sales_manager_departmentID__c,
			 Manager_sales__c,recordtypeid,recordtype.DeveloperName
			 from Lost_cancel_report__c
			 where id =: lostReportId limit 1];

			if(lostReportList.size() == 0) {
				pageStatus = null;
				return '您没有查看这个失单/部分失单报告的权限！';
			}
			lostReportList[0].Sales_assistant__c =
				lostReportList[0].Opportunity__r.Sales_assistant_ID__c;
			lostReportList[0].Manager_sales__c =
				lostReportList[0].Opportunity__r.Sales_manager_departmentID__c;
			if(lostReportList[0].recordtype.DeveloperName.equals('PCL_Lost_report')) {
				lostReportList[0].LostType__c ='失单';

			}else if(lostReportList[0].recordtype.DeveloperName.equals('PCL_PartLost_report')) {
				lostReportList[0].LostType__c ='部分失单';
			}
			// 权限，如果当前状态不是草案中，那么需要跳转到只读页面
			if(!'草案'.equals(lostReportList[0].Report_Status__c) && userinfo.getProfileId() != (ID) '00e10000000Y3o5AAC') {
				pageStatus = 'View';
			}
			oppId = lostReportList[0].Opportunity__c;
			system.debug('edit3');
			list<PCLLostBrand__c> selectlostBrandList =
			[
				select id, LostPrice__c, Lost_By_Company__c,
				Lost_reason_main__c,Lost_Reason_Sub__c,Name,Agency__c, AgencyMannual__c,
				// ProductCategory__c,ProductClass__c,
				Lost_cancel_report__c,Lost_By_Company_Mannual__c,
				( select id,PCLLostBrand__c,LostProduct__c,
				  LostProductMannual__c,            //SWAG-C6P9PX lt 20210913 add
				  ProductCategory__c,ProductClass__c, //add tcm 20211123
				  Quantity__c,Name, LostBrandName__c 
				  from PCLLostBrand__c.PCLLostBrandProduct__r)
				from PCLLostBrand__c
				where Lost_cancel_report__c =: lostReportId
			];
			if(selectlostBrandList.size() == 0 ) {
				LostReport = new LostReport(lostReportList[0]);
				brandCount = 1;
			}else{
				system.debug('edit4:'+selectlostBrandList[0]);
				brandCount = 0;
				list<LostBrand> LostBrandList = new list<LostBrand>();
				for(PCLLostBrand__c templostBrand : selectlostBrandList) {
					list<PCLLostProducts> tempProductList = new list<PCLLostProducts>();
					integer productCount = 0;
					system.debug('check products:'+ (templostBrand.PCLLostBrandProduct__r != null) + '|' + (templostBrand.PCLLostBrandProduct__r.size() > 0));
					if (templostBrand.PCLLostBrandProduct__r != null && templostBrand.PCLLostBrandProduct__r.size() > 0) {
						for( PCLLostProduct__c tempProduct: templostBrand.PCLLostBrandProduct__r) {

							tempProductList.add(new PCLLostProducts(productCount,tempProduct));
							productCount++;
						}
					} else {
						PCLLostProducts newProduct = new PCLLostProducts();
						if ('其他'.equals(templostBrand.Lost_By_Company__c) && 
							templostBrand.Lost_By_Company_Mannual__c != null && 
							!''.equals(templostBrand.Lost_By_Company_Mannual__c)) {
								newProduct.LostProductss.LostBrandName__c = templostBrand.Lost_By_Company_Mannual__c;
							} else {
								newProduct.LostProductss.LostBrandName__c = templostBrand.Lost_By_Company__c;
							}
							system.debug('aaa4+++'+templostBrand.Lost_By_Company_Mannual__c);
						tempProductList.add(newProduct);
						productCount++;
					}
					LostBrandList.add( new LostBrand(brandCount,tempProductList, templostBrand));
					brandCount++;
				}

				LostReport = new LostReport(lostReportList[0],LostBrandList);
				system.debug('LostReport.LostBrands:'+LostReport.LostBrands);
			}
		}
		brandNo = 0;
		// 读取竞争对手品牌
		// BrandmapSet();
		if(string.isNotEmpty(submitFlag)) {
			return '提交成功！';

		}
		return null;
	}
	// 编辑 只有系统管理员或者草案中可以编辑
	public String edit2(){
		if( userinfo.getProfileId() == (ID) '00e10000000Y3o5AAC' ||
		    '草案'.equals(LostReport.LostReport.Report_Status__c)
		    ) {
			pageStatus = 'Edit';
			init();
		}
		else{
			return '只有在草案中才能进行编辑！';
		}
		return null;
	}
	// 设置品牌
	public void setBrand(){
		list<LostBrand> LostBrandlist =  LostReport.LostBrands;
		LostBrand tempBrand = LostBrandlist.get(setBrandNo);
		string brandName = tempBrand.lostBrand.Lost_By_Company__c;
		// fy SWAG-CCC6F6 start
		if(!'其他'.equals(tempBrand.lostBrand.Lost_By_Company_Mannual__c)){
			tempBrand.lostBrand.Lost_By_Company_Mannual__c = null;
		}
		system.debug('aaa5+++'+tempBrand.lostBrand.Lost_By_Company_Mannual__c);
		// fy SWAG-CCC6F6 end
		// ID compID = CompetitionMap.get(brandName);
		for(PCLLostProducts tempLostProduct : tempBrand.LostProducts ) {
			// test
			// tempLostProduct.LostProductss.Competitor__c = compID;
			tempLostProduct.LostProductss.LostBrandName__c = brandName;
			tempLostProduct.LostProductss.LostProduct__c = null;
			tempLostProduct.LostProductss.LostProductMannual__c = null;
			tempLostProduct.LostProductss.Quantity__c = null;
			tempLostProduct.LostProductss.ProductClass__c = null;
			tempLostProduct.LostProductss.ProductCategory__c = null;
			tempLostProduct.bool=false;
		}
	}
	// 设置品牌
	public void setbrandmannual(){
		list<LostBrand> LostBrandlist =  LostReport.LostBrands;
		LostBrand tempBrand = LostBrandlist.get(setBrandNo);
		string brandName = tempBrand.lostBrand.Lost_By_Company__c;
		String brandNameMannual = tempBrand.lostBrand.Lost_By_Company_Mannual__c;
		// ID compID = CompetitionMap.get(brandName);
		for(PCLLostProducts tempLostProduct : tempBrand.LostProducts ) {
			// test
			// tempLostProduct.LostProductss.Competitor__c = compID;
			system.debug('aaaa3++'+brandNameMannual);
			if ('其他'.equals(brandName) && brandNameMannual != null && !''.equals(brandNameMannual)) {
				tempLostProduct.LostProductss.LostBrandName__c = brandNameMannual;
				// tempLostProduct.LostProductss.LostProduct__c = null;
				// tempLostProduct.LostProductss.LostProductMannual__c = null;
				// tempLostProduct.LostProductss.Quantity__c = null;
				// tempLostProduct.LostProductss.ProductClass__c = null;
				// tempLostProduct.LostProductss.ProductCategory__c = null;
				// tempLostProduct.bool=false;
			}
		}
	}
	// 保存
	public String save(){

		if(!DataCheck()) {
			return null;
		}
		if(!dataEntry()) {
			return null;
		}

		brandCount = LostReport.LostBrands.size();
		pageStatus = 'View';
		return '保存成功！';
	}
	//读取并构建竞争对手品牌
	// public void BrandmapSet(){
	// 	CompetitionMap = new map<string, id>();
	// 	list <Competition_Company__c> competitionList
	// 	    =  [select id,name from Competition_Company__c];
	// 	for(Competition_Company__c tempComp : competitionList ) {
	// 		CompetitionMap.put(tempComp.name, tempComp.id);
	// 	}

	// }
	// 数据检查
	public boolean DataCheck(){
		boolean dataCheck = true;
		if(string.isBlank(LostReport.LostReport.LostType__c))
		{
			LostReport.LostReport.LostType__c.addError('必须填写失单类型！');
			dataCheck = false;
		}
		for(LostBrand tempLostBrand : LostReport.LostBrands ) {
			system.debug('aaaa1++'+tempLostBrand.lostBrand.Lost_By_Company_Mannual__c);
			if(string.isblank(tempLostBrand.lostBrand.Lost_By_Company__c)) {
				tempLostBrand.lostBrand.Lost_By_Company__c.addError('请填写失单品牌！');
				dataCheck = false;
			}// fy SWAG-CCC6F6 start
			else if('其他'.equals(tempLostBrand.lostBrand.Lost_By_Company__c)&&string.isblank(tempLostBrand.lostBrand.Lost_By_Company_Mannual__c)){
				tempLostBrand.lostBrand.Lost_By_Company_Mannual__c.addError('请填写失单品牌（手动）！');
				dataCheck = false;
			}// fy SWAG-CCC6F6 end
			system.debug('aaaa2++'+tempLostBrand.lostBrand.Lost_By_Company_Mannual__c);
			if(tempLostBrand.lostBrand.LostPrice__c == null) {
				tempLostBrand.lostBrand.LostPrice__c.addError('失单金额必填！');
				dataCheck = false;
			}
			if(string.isblank(tempLostBrand.lostBrand.Lost_reason_main__c )) {
				tempLostBrand.lostBrand.Lost_reason_main__c.addError('失单理由(主)必填！');
				dataCheck = false;
			}
			if(string.isblank(tempLostBrand.lostBrand.Agency__c )) {
				tempLostBrand.lostBrand.Agency__c.addError('中标经销商必填！');
				dataCheck = false;
			}
			// 检查是否有超过1个有数的产品
			integer productCount = 0;
			for( PCLLostProducts temlostProduct : tempLostBrand.LostProducts) {
				if (temlostProduct.LostProductss.LostProduct__c != null || temlostProduct.LostProductss.LostProductMannual__c != null) {
					System.debug('失单型号' + temlostProduct.LostProductss.LostProduct__c);
					System.debug('失单型号手动' + temlostProduct.LostProductss.LostProductMannual__c);
					productCount ++;
				}
				// update tcm 20211123 start
				if((temlostProduct.LostProductss.LostProduct__c!=null || temlostProduct.LostProductss.LostProductMannual__c!=null)&&(temlostProduct.LostProductss.Quantity__c==null || temlostProduct.LostProductss.Quantity__c ==0)) {
					temlostProduct.LostProductss.Quantity__c.addError('请填写失单数量！');
					dataCheck = false;
				}
				if((temlostProduct.LostProductss.LostProduct__c!=null || temlostProduct.LostProductss.LostProductMannual__c!=null)&&temlostProduct.LostProductss.ProductCategory__c==null) {
					if (temlostProduct.LostProductss.ProductClass__c==null) {
						temlostProduct.LostProductss.ProductClass__c.addError('失单产品类别必填！');
						temlostProduct.LostProductss.ProductCategory__c.addError('失单产品必填！');
					}else {
						temlostProduct.LostProductss.ProductCategory__c.addError('失单产品必填！');
					}
					dataCheck = false;
				}
				// 当失单品牌名为其他时,报错字段为失单对手型号（手动） thh 2022-01-17 start
				if ((temlostProduct.LostProductss.LostProduct__c==null && temlostProduct.LostProductss.LostProductMannual__c==null)&&(temlostProduct.LostProductss.ProductCategory__c!=null||temlostProduct.LostProductss.Quantity__c!=null)) {
					if(tempLostBrand.lostBrand.Lost_By_Company__c != '其他'){
						temlostProduct.LostProductss.LostProduct__c.addError('失单对手型号或失单对手型号（手动）必填！');
					} else{
						temlostProduct.LostProductss.LostProductMannual__c.addError('失单对手型号或失单对手型号（手动）必填！');
					}
					dataCheck = false;
				}
				// 当失单品牌名为其他时,报错字段为失单对手型号（手动） thh 2022-01-17 end
				// update tcm 20211123 end
			}
			// 当失单品牌名为其他时,报错字段为失单对手型号（手动） thh 2022-01-17 start
			if (productCount == 0 && tempLostBrand.LostProducts != null && tempLostBrand.LostProducts.size() > 0) {
				if(tempLostBrand.lostBrand.Lost_By_Company__c != '其他'){
					tempLostBrand.LostProducts[0].LostProductss.LostProduct__c.addError('至少录入1条失单对手型号信息！');
				}else{
					tempLostBrand.LostProducts[0].LostProductss.LostProductMannual__c.addError('至少录入1条失单对手型号信息！');
				}
				dataCheck = false;
			}
			// 当失单品牌名为其他时,报错字段为失单对手型号（手动） thh 2022-01-17 end
		}

		return dataCheck;
	}
	public list<LostBrand> brandcopy(){
		list<LostBrand> tempbrands = new list<LostBrand>();
		for(LostBrand tempbrand: LostReport.LostBrands) {
			LostBrand LostBrand =
				new LostBrand(tempbrand.lineNo,tempbrand.LostProducts );
			LostBrand.lostBrand = tempbrand.lostBrand.clone();
			LostBrand.lostBrand.id = tempbrand.lostBrand.id;
			tempbrands.add(LostBrand);
		}
		return tempbrands;
	}
	// 数据录入
	public boolean dataEntry(){
		system.debug('save---start:');
		Savepoint sp = Database.setSavepoint();
		Lost_cancel_report__c templostReport = LostReport.lostReport.clone();
		templostReport.id = LostReport.lostReport.id;
		list<LostBrand> tempBrands = brandcopy();
		try{
			// 待完成，这里需要把第一个品牌的信息赋值到这个失单报告上去，还有需要把各个品牌金额汇总加起来；
			//system.debug('LostReport.LostBrands:'+LostReport.LostBrands);
			// 设置记录类型
			LostReport.lostReport.recordTypeID  =  LostReport.lostReport.LostType__c== '失单'?Schema.SObjectType.Lost_cancel_report__c.getRecordTypeInfosByDeveloperName().get('PCL_Lost_report').getRecordTypeId() : Schema.SObjectType.Lost_cancel_report__c.getRecordTypeInfosByDeveloperName().get('PCL_PartLost_report').getRecordTypeId();
			LostReport.lostReport.LostTotalAmount__c    = 0;
			LostReport.lostReport.of_lost_system_processor__c   = 0;
			LostReport.lostReport.Lost_reason_main__c = null;
			LostReport.lostReport.Lost_Reason_Sub__c  = null;
			LostReport.lostReport.Lost_By_Company__c = null;
			for(LostBrand tempLostBrand : LostReport.LostBrands) {
				if(string.isNotBlank(tempLostBrand.lostBrand.Lost_By_Company__c)) {
					LostReport.lostReport.LostTotalAmount__c += tempLostBrand.lostBrand.LostPrice__c;
					LostReport.lostReport.Lost_reason_main__c =
						LostReport.lostReport.Lost_reason_main__c == null
						? tempLostBrand.lostBrand.Lost_reason_main__c
						: LostReport.lostReport.Lost_reason_main__c;
					LostReport.lostReport.Lost_Reason_Sub__c  =
						LostReport.lostReport.Lost_Reason_Sub__c == null
						? tempLostBrand.lostBrand.Lost_Reason_Sub__c
						: LostReport.lostReport.Lost_Reason_Sub__c;
					LostReport.lostReport.Lost_By_Company__c =
						LostReport.lostReport.Lost_By_Company__c == null
						? tempLostBrand.lostBrand.Lost_By_Company__c
						: LostReport.lostReport.Lost_By_Company__c;

					for( PCLLostProducts tempLostProduct : tempLostBrand.LostProducts) {
						if(tempLostProduct.LostProductss.Quantity__c !=null && tempLostProduct.LostProductss.Quantity__c >0) {
							LostReport.lostReport.of_lost_system_processor__c   += tempLostProduct.LostProductss.Quantity__c;
						}
					}
				}
			}
			upsert LostReport.lostReport;
			// 需要插入更新的失单品牌
			map<integer,PCLLostBrand__c> upsertLostBrandMap = new map<integer,PCLLostBrand__c>();
			// 需要删掉的失单品牌
			map<integer,PCLLostBrand__c> deleteLostBrandMap = new map<integer,PCLLostBrand__c>();
			// 需要插入更新的失单型号，key是品牌编号+型号编号，value是需要更新的失单型号
			map<string,PCLLostProduct__c> upsertLostProductMap = new map<string,PCLLostProduct__c>();
			// 需要删掉的失单品牌
			list<PCLLostProduct__c> deleteLostProductList = new list<PCLLostProduct__c>();
			for(LostBrand tempLostBrand : LostReport.LostBrands ) {
				// 如果有失单品牌，那么就要插入更新；
				system.debug('tempLostBrand.lostBrand.Lost_By_Company__c:'+tempLostBrand.lostBrand.Lost_By_Company__c);
				if(string.isNotBlank(tempLostBrand.lostBrand.Lost_By_Company__c)) {
					upsertLostBrandMap.put(tempLostBrand.lineNo,tempLostBrand.lostBrand);
					tempLostBrand.lostBrand.Lost_cancel_report__c = LostReport.lostReport.id;
					tempLostBrand.lostBrand.Name = tempLostBrand.lostBrand.Lost_By_Company__c;
					integer tempNo = 0;
					for( PCLLostProducts tempLostProduct : tempLostBrand.LostProducts) {
						system.debug('Name:'+ tempLostProduct.LostProductss.Name );
						if(tempLostProduct.LostProductss.Quantity__c !=null && tempLostProduct.LostProductss.Quantity__c >0) {
							tempLostProduct.LostProductss.Name = tempLostBrand.lostBrand.Name + tempLostProduct.LostProductss.Quantity__c;
							upsertLostProductMap.put(tempLostBrand.lineNo +':'+ tempNo,tempLostProduct.LostProductss);
						}else if(string.isNotBlank(tempLostProduct.LostProductss.id)) {
							deleteLostProductList.add(tempLostProduct.LostProductss);
						}
						tempNo++;
					}
				}
				// 如果没有品牌，但是有id， 这样数据需要删除
				else if(string.isNotBlank(tempLostBrand.lostBrand.id)) {
					deleteLostBrandMap.put(tempLostBrand.lineNo,tempLostBrand.lostBrand);
					// 这里可能需要也判断一下失单型号有没有需要删掉
				}
			}
			if(upsertLostBrandMap.size()>0) {
				upsert upsertLostBrandMap.values();
			}
			for( string productNo :upsertLostProductMap.keyset()) {
				PCLLostProduct__c tempLostProduct = upsertLostProductMap.get(productNo);
				integer brandNo = integer.valueof(productNo.split(':')[0]);
				tempLostProduct.PCLLostBrand__c = upsertLostBrandMap.get(brandNo).id;
			}
			if(upsertLostProductMap.size()>0) {
				upsert upsertLostProductMap.values();
			}
			if(deleteLostBrandMap.size()>0) {
				delete deleteLostBrandMap.values();
				for(PCLLostBrand__c pcl: deleteLostBrandMap.values()) {
					pcl.id = null;
				}
			}
			if(deleteLostProductList.size()>0) {
				delete deleteLostProductList;
				for(PCLLostProduct__c pclp: deleteLostProductList) {
					pclp.id = null;
				}
			}
			if(deleteBrandIDSet.size() > 0) {
				list<id> tempdeleteIDlist = new list<id>();
				tempdeleteIDlist.addall(deleteBrandIDSet);
				database.delete(tempdeleteIDlist);

			}

			for(integer brandNumber =0; brandNumber< LostReport.LostBrands.size(); brandNumber++) {

				LostBrand tempLostBrand = LostReport.LostBrands.get(brandNumber);
				if(tempLostBrand.lostBrand.Id == null) {
					LostReport.LostBrands.remove(brandNumber);
					brandNumber--;
					continue;
				}
				for(integer productNumber = 0; productNumber< tempLostBrand.LostProducts.size(); productNumber++) {
					PCLLostProducts tempLostProduct = tempLostBrand.LostProducts.get(productNumber);
					if(tempLostProduct.LostProductss.Id == null) {
						tempLostBrand.LostProducts.remove(productNumber);
						productNumber--;
						continue;
					}
				}
			}
			lostReportId = LostReport.lostReport.id;
			system.debug('save---end:');
		}catch (Exception ex) {
			Database.rollback(sp);
			LostReport.lostReport = templostReport;
			LostReport.LostBrands = tempBrands;
			// 这里需要写一些报错信息
			ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,ex.getMessage()));
			return false;
		}
		return true;
	}

	
	// 提交
	public Map<string,Object> submit(){
		Map<string,string> messages = new Map<string,string>();
		if(!'草案'.equals(LostReport.LostReport.Report_Status__c) ) {
			messages.put('error', '只有在草案中才能提交申请！');
			return messages;
		}
		Map<string,Object> objs = new Map<string,Object>();
		Savepoint sp = Database.setSavepoint();
		try{
			LostReport.lostReport.Report_Status__c = '提交';
			update LostReport.lostReport;
			Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest();
			psr.setObjectId(lostReportId);
			Approval.ProcessResult submitResult = Approval.process(psr);
			objs.put('uri', '/apex/PCLLostReportPage');
			objs.put('Id', lostReportId);
			objs.put('pageStatus', 'View');
			objs.put('submitFlag', '1');
			return objs;
		}catch(exception ex) {
			Database.rollback(sp);
			messages.put('error', ex.getMessage());
			return messages;
		}
	}
	// 添加品牌
	public String addBrand(){
		LostReport.LostBrands.add(new LostBrand(LostReport.LostBrands.size()));
		brandCount = LostReport.LostBrands.size();
		return null;
	}
	// 删除品牌 这个有参数brandNo，才知道是删除那个品牌
	public String Remove(){
		system.debug('RemoveBrandNo:'+RemoveBrandNo);
		list<LostBrand> tempLostBrands = new List<lostBrand>();
		Integer i = 0;
		for(integer j = 0; j< LostReport.LostBrands.size(); j++ ) {
			LostBrand templostBrand  = LostReport.LostBrands.get(j);
			if(j != RemoveBrandNo) {
				templostBrand.lineNo = i;
				tempLostBrands.add(templostBrand);
				i++;
			}else if(!string.isBlank(templostBrand.lostBrand.id)) {
				deleteBrandIDSet.add(templostBrand.lostBrand.id);
			}
		}

		LostReport.LostBrands =  tempLostBrands;

		brandCount = LostReport.LostBrands.size();
		return null;
	}
	// 添加型号， 这个有参数brandNo，才知道是添加到那个品牌
	// update tcm 20211125 添加型号时自动带出品牌 start
	public String addProduct(){
		system.debug('brandNo:'+brandNo);
		LostBrand tempLostBrand = LostReport.LostBrands.get(brandNo);
		// PCLLostProduct__c plp = new PCLLostProduct__c(Competitor__c=CompetitionMap.get(LostReport.LostBrands[brandNo].lostBrand.Lost_By_Company__c));
		string brandName = tempLostBrand.lostBrand.Lost_By_Company__c;
		PCLLostProduct__c plp = new PCLLostProduct__c();
		plp.LostBrandName__c = brandName;
		tempLostBrand.LostProducts.add(new PCLLostProducts(tempLostBrand.LostProducts.size(),plp));
		tempLostBrand.ProductSize = tempLostBrand.LostProducts.size();
		return null;
	}
	// update tcm 20211125 添加型号时自动带出品牌 end
	// 页面的数据结构
	public class LostReport {
		public Lost_cancel_report__c lostReport { get; set; }
		public list<LostBrand> LostBrands { get; set; }
		public LostReport(){
			lostReport = new Lost_cancel_report__c();
			LostBrands = new list<LostBrand> {new LostBrand(0)};
		}
		public LostReport(Lost_cancel_report__c lostReport){
			this.lostReport = lostReport;
			LostBrands = new list<LostBrand> {new LostBrand(0)};
		}
		public LostReport(Lost_cancel_report__c lostReport,  list<LostBrand> LostBrands){
			this.lostReport = lostReport;
			this.LostBrands = LostBrands;
		}
	}

	public class LostBrand {
		public PCLLostBrand__c lostBrand { get; set; }
		public Integer lineNo { get; set; }
		public list<PCLLostProducts> LostProducts { get; set; }
		public Integer ProductSize {get; set;}
		public LostBrand( integer lineNo ){
			lostBrand = new PCLLostBrand__c();
			this.lineNo = lineNo;
			LostProducts = new list<PCLLostProducts> {new PCLLostProducts()};
			ProductSize = 1;
			lostBrand = new PCLLostBrand__c();
		}
		public LostBrand( integer lineNo, list<PCLLostProducts> LostProducts ){
			lostBrand = new PCLLostBrand__c();
			this.lineNo = lineNo;
			this.LostProducts = LostProducts;
			ProductSize = LostProducts.size();
		}
		public LostBrand( integer lineNo, list<PCLLostProducts> LostProducts,  PCLLostBrand__c lostBrand){
			this.lostBrand = lostBrand;
			this.lineNo = lineNo;
			this.LostProducts = LostProducts;
			ProductSize = LostProducts.size();
		}
	}
	// add tcm 20211119 start
	public class PCLLostProducts {
		public Integer lineNo2 { get; set; }
		public PCLLostProduct__c LostProductss { get; set; }
		public Boolean bool { get; set; }

		public PCLLostProducts() {
			this.lineNo2 = 0;
			this.LostProductss=new PCLLostProduct__c();
		}

		public PCLLostProducts(Integer lineNo2) {
			this.lineNo2 = lineNo2;
			this.LostProductss=new PCLLostProduct__c();
		}

		public PCLLostProducts(Integer lineNo2,PCLLostProduct__c LostProductss) {
			this.lineNo2 = lineNo2;
			this.LostProductss=LostProductss;
			if (LostProductss.LostProduct__c != null) {
				this.bool = true;
			}
		}
	}
	// add tcm 20211119 end

	// add tcm 20211118 start
	public void search() {
		if (LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.LostProduct__c==null) {
			LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductClass__c=null;
			LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductCategory__c=null;
			LostReport.LostBrands[topNum].LostProducts[secondNum].bool=false;

		}else {
			Product2 prd = [select Id,ProductClass__c, ProductCategory__c from Product2 where Id =:LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.LostProduct__c];
			if (prd.ProductCategory__c!=null) {
				LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductClass__c=prd.ProductClass__c;
				LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductCategory__c=prd.ProductCategory__c;
				LostReport.LostBrands[topNum].LostProducts[secondNum].bool=true;
			}else {
				LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductClass__c=null;
				LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductCategory__c=null;
				LostReport.LostBrands[topNum].LostProducts[secondNum].bool=false;

			}
		}
	}
	// add tcm 20211118 end
}