public with sharing class CreateTargetCmp { public CreateTargetCmp() { } /* @AuraEnabled public static List getHospitalList(String hospital_name) { hospital_name = '%' + hospital_name.trim() + '%'; return [select Hospital_Name_readonly__c, Id, Hospital__c from Agency_Hospital_Link__c where Hospital_Name_readonly__c like :hospital_name]; } @AuraEnabled public static Agency_Opportunity__c getEmptyOpp() { return [select Id, Agency_Hospital__c,Agency_Hospital__r.Name from Agency_Opportunity__c where Agency_Hospital__c <> null limit 1][0]; } */ @RemoteAction @AuraEnabled public static ProductTypes__c getProduct(String id){ return [select Department_Cateogy__c, OPD_Flg__c, Id, SIS_Flg__c from ProductTypes__c where Id =:id]; } @RemoteAction @AuraEnabled public static Map getProductList(){ List ptList = [select Id, Name, Department_Cateogy__c, OPD_Flg__c, SIS_Flg__c from ProductTypes__c where DeleteFlg__c = false]; Map resMap = new Map(); for (ProductTypes__c pt : ptList) { Map ptMap = new Map(); ptMap.put('label', pt.Name); ptMap.put('value', pt.Id); if (String.isBlank(pt.Department_Cateogy__c)) continue; String[] dcList = pt.Department_Cateogy__c.split(';'); for (String dc : dcList) { List> pts; if (resMap.containsKey(dc)) { pts = (List>)resMap.get(dc); } else { pts = new List>(); Map blank = new Map(); blank.put('label', ''); blank.put('value', ''); pts.add(blank); } pts.add(ptMap); resMap.put(dc, pts); } } return resMap; } @AuraEnabled public static Map getHospital(String recordId) { List aoList = [select Id, Agency_Hospital_Target__c, Agency_Hospital_Target__r.Name from Agency_Opportunity__c where Id = :recordId]; if (aoList.size() > 0) { Map res = new Map(); res.put('Id', aoList[0].Agency_Hospital_Target__c); res.put('Name', aoList[0].Agency_Hospital_Target__r.Name); return res; } else { throw new AuraHandledException('找不到经销商医院'); } } @AuraEnabled public static Map getDeptAmount(String hospitalId) { Id rtId = [select Id,DeveloperName from RecordType where IsActive = true and SobjectType = 'Agency_Opportunity__c' and DeveloperName = 'Target'].Id; //Schema.SobjectType.Agency_Opportunity__c.getRecordTypeInfosByName().get('目标').getRecordTypeId(); List accList2 = [select Id, Department_Cateogy__c, Product_Category__c, Product_Category__r.Name,Aim_Price__c from Agency_Opportunity__c where Agency_Hospital_Target__c = :hospitalId and RecordTypeId = :rtId and Is_OPDSIS_Target__c != true]; //Agency_Hospital_Link__c ahl = [select Id, Hospital__c, Name, TargetHospital__c from Agency_Hospital_Link__c where Id = :hospitalId]; //deptAmount.put('target', String.valueOf(ahl.TargetHospital__c)); Map deptAmount = new Map(); List aoppOTH = new List(); List aoppBF = new List(); List aoppGYN = new List(); List aoppGS = new List(); List aoppGI = new List(); List aoppURO = new List(); List aoppENT = new List(); List aoppET = new List(); for (Agency_Opportunity__c acc2 : accList2) { if (acc2.Department_Cateogy__c == 'OTH') { aoppOTH.add(acc2); } else if (acc2.Department_Cateogy__c == 'BF') { aoppBF.add(acc2); } else if (acc2.Department_Cateogy__c == 'GYN') { aoppGYN.add(acc2); } else if (acc2.Department_Cateogy__c == 'GS') { aoppGS.add(acc2); } else if (acc2.Department_Cateogy__c == 'URO') { aoppURO.add(acc2); } else if (acc2.Department_Cateogy__c == 'GI') { aoppGI.add(acc2); } else if (acc2.Department_Cateogy__c == 'ENT') { aoppENT.add(acc2); } else if (acc2.Department_Cateogy__c == 'ET') { aoppET.add(acc2); } } deptAmount.put('OTH', aoppOTH); deptAmount.put('BF', aoppBF); deptAmount.put('GYN', aoppGYN); deptAmount.put('GS', aoppGS); deptAmount.put('URO', aoppURO); deptAmount.put('GI', aoppGI); deptAmount.put('ENT', aoppENT); deptAmount.put('ET', aoppET); return deptAmount; } @AuraEnabled public static string createSFTarget(String hospitalId, Boolean targetHospital, String[] GIProduct, String[] ETProduct, String[] BFProduct, String[] OTHProduct, String[] GSProduct, String[] UROProduct, String[] GYNProduct, String[] ENTProduct, String OCMTerm) { System.debug('createSFTarget'); string returnContent = ''; if (String.isEmpty(hospitalId)) { throw new AuraHandledException('医院不存在'); } else { //if (!isNumericOrDecimal(GIAmount) ||!isNumericOrDecimal(ETAmount) ||!isNumericOrDecimal(BFAmount) ||!isNumericOrDecimal(OTHAmount) ||!isNumericOrDecimal(GSAmount) ||!isNumericOrDecimal(UROAmount) ||!isNumericOrDecimal(GYNAmount) ||!isNumericOrDecimal(ENTAmount)) { // throw new AuraHandledException('请输入正确数据'); //} String[] deptTypes = new String[] {'Department_Class_OTH', 'Department_Class_BF', 'Department_Class_GYN', 'Department_Class_GS', 'Department_Class_URO', 'Department_Class_GI', 'Department_Class_ENT', 'Department_Class_ET'}; List deptRects = LightningUtil.getAccRecordType(deptTypes); Map deptRectMap = new Map(); for (RecordType rect : deptRects) { deptRectMap.put(rect.Id, rect.DeveloperName); } Id rtId = [select Id,DeveloperName from RecordType where IsActive = true and SobjectType = 'Agency_Opportunity__c' and DeveloperName = 'Target'].Id; Set recordIds = deptRectMap.keySet(); Agency_Hospital_Link__c ahl = [select Id, Hospital__c, Name from Agency_Hospital_Link__c where Id = :hospitalId]; //if (targetHospital == null) targetHospital = false; // ahl.TargetHospital__c = targetHospital; //update ahl; List accList = LightningUtil.getDeptListByRecordType(ahl.Hospital__c, recordIds); List upsertList = new List(); List productList = [select Id, Name, OPD_Flg__c, SIS_Flg__c, Name2__c from ProductTypes__c where DeleteFlg__c = false]; Map productMap = new Map( productList ); //Map upsertMap = new Map(); //for (ProductTypes__c product : productList) { // if (product.OPD_Flg__c) { // Agency_Opportunity__c aopp = setAgencyOpp(ahl.Hospital__c, null, rtId, OCMTerm, hospitalId, ahl.Name+' OPD'); // aopp.Product_Category__c = product.Id; // aopp.TargetInputKey__c = hospitalId+':OPD:'+OCMTerm+':'+product.Name2__c; // upsertMap.put(aopp.TargetInputKey__c, aopp); // //upsertList.add(aopp); // } // if (product.SIS_Flg__c) { // Agency_Opportunity__c aopp = setAgencyOpp(ahl.Hospital__c, null, rtId, OCMTerm, hospitalId, ahl.Name+' SIS'); // aopp.Product_Category__c = product.Id; // aopp.TargetInputKey__c = hospitalId+':SIS:'+OCMTerm+':'+product.Name2__c; // upsertMap.put(aopp.TargetInputKey__c, aopp); // //upsertList.add(aopp); // } //} //upsertList.addAll(upsertMap.values()); for (Account acc : accList) { String recordType = deptRectMap.get(String.valueOf(acc.RecordTypeId)); // Agency_Opportunity__c aopp = new Agency_Opportunity__c(); // aopp.Hospital_Target__c = ahl.Hospital__c; // aopp.Department_Class__c = acc.Id; //aopp.RecordTypeId = rtId; //aopp.OCM_Term__c = OCMTerm; //aopp.TargetInputKey__c = hospitalId+':'+acc.Id+':'+aopp.OCM_Term__c; //aopp.Agency_Hospital_Target__c = hospitalId; String pc1 = ''; String pc2 = ''; String pc3 = ''; Integer pc4_1 = 0; Integer pc4_2 = 0; Integer pc4_3 = 0; String dc = ''; returnContent += ' = 0'; if (recordType == 'Department_Class_OTH') { //aopp.Department_Cateogy__c = 'OTH'; dc = 'OTH'; pc1 = OTHProduct[0]; pc2 = OTHProduct[1]; pc3 = OTHProduct[2]; pc4_1 = Integer.valueOf(OTHProduct[3]); pc4_2 = Integer.valueOf(OTHProduct[4]); pc4_3 = Integer.valueOf(OTHProduct[5]); //aopp.Amount__c = Decimal.valueOf(OTHAmount); } else if (recordType == 'Department_Class_BF') { dc = 'BF'; //aopp.Amount__c = Decimal.valueOf(BFAmount); pc1 = BFProduct[0]; pc2 = BFProduct[1]; pc3 = BFProduct[2]; pc4_1 = Integer.valueOf(BFProduct[3]); pc4_2 = Integer.valueOf(BFProduct[4]); pc4_3 = Integer.valueOf(BFProduct[5]); } else if (recordType == 'Department_Class_GYN') { dc = 'GYN'; pc1 = GYNProduct[0]; pc2 = GYNProduct[1]; pc3 = GYNProduct[2]; pc4_1 = Integer.valueOf(GYNProduct[3]); pc4_2 = Integer.valueOf(GYNProduct[4]); pc4_3 = Integer.valueOf(GYNProduct[5]); //aopp.Amount__c = Decimal.valueOf(GYNAmount); } else if (recordType == 'Department_Class_GS') { dc = 'GS'; pc1 = GSProduct[0]; pc2 = GSProduct[1]; pc3 = GSProduct[2]; pc4_1 = Integer.valueOf(GSProduct[3]); pc4_2 = Integer.valueOf(GSProduct[4]); pc4_3 = Integer.valueOf(GSProduct[5]); //aopp.Amount__c = Decimal.valueOf(GSAmount); } else if (recordType == 'Department_Class_URO') { dc = 'URO'; pc1 = UROProduct[0]; pc2 = UROProduct[1]; pc3 = UROProduct[2]; pc4_1 = Integer.valueOf(UROProduct[3]); pc4_2 = Integer.valueOf(UROProduct[4]); pc4_3 = Integer.valueOf(UROProduct[5]); //aopp.Amount__c = Decimal.valueOf(UROAmount); } else if (recordType == 'Department_Class_GI') { dc = 'GI'; pc1 = GIProduct[0]; pc2 = GIProduct[1]; pc3 = GIProduct[2]; pc4_1 = Integer.valueOf(GIProduct[3]); pc4_2 = Integer.valueOf(GIProduct[4]); pc4_3 = Integer.valueOf(GIProduct[5]); returnContent += ' pc4_2 ='+pc4_2 + ' pc4_3 ='+pc4_3; //aopp.Amount__c = Decimal.valueOf(GIAmount); } else if (recordType == 'Department_Class_ENT') { dc = 'ENT'; pc1 = ENTProduct[0]; pc2 = ENTProduct[1]; pc3 = ENTProduct[2]; pc4_1 = Integer.valueOf(ENTProduct[3]); pc4_2 = Integer.valueOf(ENTProduct[4]); pc4_3 = Integer.valueOf(ENTProduct[5]); //aopp.Amount__c = Decimal.valueOf(ENTAmount); } else if (recordType == 'Department_Class_ET') { dc = 'ET'; pc1 = ETProduct[0]; pc2 = ETProduct[1]; pc3 = ETProduct[2]; pc4_1 = Integer.valueOf(ETProduct[3]); pc4_2 = Integer.valueOf(ETProduct[4]); pc4_3 = Integer.valueOf(ETProduct[5]); //aopp.Amount__c = Decimal.valueOf(ETAmount); } //if (String.isBlank(aopp.Product_Category1__c)) { // if (String.isBlank(aopp.Product_Category2__c)) { // aopp.Product_Category1__c = aopp.Product_Category3__c; // } else { // aopp.Product_Category1__c = aopp.Product_Category2__c; // aopp.Product_Category2__c = aopp.Product_Category3__c; // } // aopp.Product_Category3__c = null; //} //aopp.Name = '目标::'+aopp.OCM_Term__c+':'+acc.Name; if (String.isNotBlank(pc1)) { ProductTypes__c pt = productMap.get(pc1); Agency_Opportunity__c aopp = setAgencyOpp(ahl.Hospital__c, acc.Id, rtId, OCMTerm, hospitalId, acc.Name); aopp.Department_Cateogy__c = dc; aopp.Product_Category__c = pc1; aopp.TargetInputKey__c = hospitalId+':'+dc+':'+OCMTerm+':'+pt.Name2__c; if (pc4_1 != 0) { aopp.Aim_Price__c = pc4_1; } upsertList.add(aopp); if (pt.OPD_Flg__c) { Agency_Opportunity__c aopp_opd = setAgencyOpp(ahl.Hospital__c, acc.Id, rtId, OCMTerm, hospitalId, acc.Name+' OPD'); aopp_opd.Department_Cateogy__c = dc; aopp_opd.Product_Category__c = pc1; aopp_opd.TargetInputKey__c = hospitalId+':'+dc+':OPD:'+OCMTerm+':'+pt.Name2__c; if (pc4_1 != 0) { aopp_opd.Aim_Price__c = pc4_1; } upsertList.add(aopp_opd); } if (pt.SIS_Flg__c) { Agency_Opportunity__c aopp_sis = setAgencyOpp(ahl.Hospital__c, acc.Id, rtId, OCMTerm, hospitalId, acc.Name+' SIS'); aopp_sis.Department_Cateogy__c = dc; aopp_sis.Product_Category__c = pc1; aopp_sis.TargetInputKey__c = hospitalId+':'+dc+':SIS:'+OCMTerm+':'+pt.Name2__c; if (pc4_1 != 0) { aopp_sis.Aim_Price__c = pc4_1; } upsertList.add(aopp_sis); } } if (String.isNotBlank(pc2)) { ProductTypes__c pt = productMap.get(pc2); Agency_Opportunity__c aopp = setAgencyOpp(ahl.Hospital__c, acc.Id, rtId, OCMTerm, hospitalId, acc.Name); aopp.Department_Cateogy__c = dc; aopp.Product_Category__c = pc2; aopp.TargetInputKey__c = hospitalId+':'+dc+':'+OCMTerm+':'+pt.Name2__c; if (pc4_2 != 0) { aopp.Aim_Price__c = pc4_2; } upsertList.add(aopp); if (pt.OPD_Flg__c) { Agency_Opportunity__c aopp_opd = setAgencyOpp(ahl.Hospital__c, acc.Id, rtId, OCMTerm, hospitalId, acc.Name+' OPD'); aopp_opd.Department_Cateogy__c = dc; aopp_opd.Product_Category__c = pc2; aopp_opd.TargetInputKey__c = hospitalId+':'+dc+':OPD:'+OCMTerm+':'+pt.Name2__c; if (pc4_2 != 0) { aopp_opd.Aim_Price__c = pc4_2; } upsertList.add(aopp_opd); } if (pt.SIS_Flg__c) { Agency_Opportunity__c aopp_sis = setAgencyOpp(ahl.Hospital__c, acc.Id, rtId, OCMTerm, hospitalId, acc.Name+' SIS'); aopp_sis.Department_Cateogy__c = dc; aopp_sis.Product_Category__c = pc2; aopp_sis.TargetInputKey__c = hospitalId+':'+dc+':SIS:'+OCMTerm+':'+pt.Name2__c; if (pc4_2 != 0) { aopp_sis.Aim_Price__c = pc4_2; } upsertList.add(aopp_sis); } } if (String.isNotBlank(pc3)) { ProductTypes__c pt = productMap.get(pc3); Agency_Opportunity__c aopp = setAgencyOpp(ahl.Hospital__c, acc.Id, rtId, OCMTerm, hospitalId, acc.Name); aopp.Department_Cateogy__c = dc; aopp.Product_Category__c = pc3; aopp.TargetInputKey__c = hospitalId+':'+dc+':'+OCMTerm+':'+pt.Name2__c; if (pc4_3 != 0) { aopp.Aim_Price__c = pc4_3; } upsertList.add(aopp); if (pt.OPD_Flg__c) { Agency_Opportunity__c aopp_opd = setAgencyOpp(ahl.Hospital__c, acc.Id, rtId, OCMTerm, hospitalId, acc.Name+' OPD'); aopp_opd.Department_Cateogy__c = dc; aopp_opd.Product_Category__c = pc3; aopp_opd.TargetInputKey__c = hospitalId+':'+dc+':OPD:'+OCMTerm+':'+pt.Name2__c; if (pc4_3 != 0) { aopp_opd.Aim_Price__c = pc4_3; } upsertList.add(aopp_opd); } if (pt.SIS_Flg__c) { Agency_Opportunity__c aopp_sis = setAgencyOpp(ahl.Hospital__c, acc.Id, rtId, OCMTerm, hospitalId, acc.Name+' SIS'); aopp_sis.Department_Cateogy__c = dc; aopp_sis.Product_Category__c = pc3; aopp_sis.TargetInputKey__c = hospitalId+':'+dc+':SIS:'+OCMTerm+':'+pt.Name2__c; if (pc4_3 != 0) { aopp_sis.Aim_Price__c = pc4_3; } upsertList.add(aopp_sis); } } //upsertList.add(aopp); } Datetime nowDate = Datetime.now(); if (upsertList.size() > 0) { LightningUtil.upsertAgencyOpportunity(upsertList); } List delList = [select Id from Agency_Opportunity__c where RecordTypeId = :rtId and Agency_Hospital_Target__c = :hospitalId and LastModifiedDate < :nowDate]; if (delList.size() > 0) { delete delList; } } return returnContent; } private static Agency_Opportunity__c setAgencyOpp(String hospitalTarget, String departmentClass, String rtId, String OCMTerm, String hospitalId, String accName){ Agency_Opportunity__c aopp = new Agency_Opportunity__c(); aopp.Hospital_Target__c = hospitalTarget; aopp.Department_Class__c = departmentClass; aopp.RecordTypeId = rtId; aopp.OCM_Term__c = OCMTerm; aopp.Agency_Hospital_Target__c = hospitalId; aopp.Name = '目标::'+OCMTerm+':'+accName; return aopp; } /* private static Boolean isNumericOrDecimal(String s){ Boolean ReturnValue; try{ Decimal.valueOf(s); ReturnValue = TRUE; } catch (Exception e) { ReturnValue = FALSE; } return ReturnValue; } */ }