public without sharing class CampaignMemberController { public String campaignId { get; set; } public String campaignName { get; set; } public boolean hasError { get; set; } public Campaign cam { get; set; } public List lineInfoList { get; set; } public User localuser { get; set; } public Integer lineNo { get; set; } public String saveflg { get; set; } public String errorStr { get; set; } // 20220216 PI改造 by 徐亮 public String staticResource {get; set;} public CampaignMemberController() { campaignId = ApexPages.currentPage().getParameters().get('id'); staticResource = JSON.serialize(PIHelper.getPIIntegrationInfo('Contact')); // 20220216 PI改造 by 徐亮 } public Integer getLineInfoListSize() { return lineInfoList == null ? 0 : lineInfoList.size(); } public void init() { hasError = false; // SWAG-B9J9YR 2-19-02-19 start 额外加入检索 recordType.developerName List camList = [select id, Name, recordType.developerName from Campaign where id = :campaignId]; // SWAG-B9J9YR 2-19-02-19 end if (camList.size() == 0) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '学会不存在。')); hasError = true; return; } cam = camList[0]; campaignName = cam.Name; localuser = [select id, State_Hospital__c from User where id = :UserInfo.getUserId()]; // 20220216 PI改造 by 徐亮 List cmList = [ select id, Name, Campaign__c, Department__c, Department_ID__c, Opportunity__c, Opportunity_ID__c, Contact__c, Contact_ID__c, Type__c, Contact_ID__r.Strategic_dept_Class__r.Name, Contact_ID__r.AWS_Data_Id__c from CampaignMember__c where Campaign__c = :campaignId]; lineInfoList = new List(); Integer line = 0; for (CampaignMember__c cm : cmList) { line += 1; LineInfo info = new LineInfo(line, cm); lineInfoList.add(info); } if (cmList.size() < 5) { for (Integer i = cmList.size(); i < 5; i++) { line += 1; LineInfo temp = new LineInfo(line); temp.cm.Campaign__c = cam.Id; lineInfoList.add(temp); } } line += 1; LineInfo temp = new LineInfo(line); temp.cm.Campaign__c = cam.Id; lineInfoList.add(temp); } public PageReference addLine() { Integer nowLine = getLineInfoListSize(); system.debug('=====before addline:' + lineInfoList.size()); LineInfo newopi = new LineInfo(nowLine + 1); newopi.cm.Campaign__c = cam.Id; List temp = new List(); for (LineInfo li : lineInfoList) { temp.add(li); } temp.add(newopi); lineInfoList = temp.clone(); system.debug('=====after addline:' + lineInfoList.size()); return null; } public PageReference checkLine() { List temp = new List(); for (LineInfo li : lineInfoList) { temp.add(li); } lineInfoList = temp.clone(); system.debug('=====after checkLine:' + lineInfoList.size()); if (saveflg == '1') { if (errorStr != '') { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, errorStr)); } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Info, '保存完了。')); } hasError = true; } return null; } public PageReference deleteLine() { Integer rownum = 0; List temp = new List(); for (LineInfo li : lineInfoList) { if (li.line != lineNo) { rownum += 1; LineInfo tmp = new LineInfo(rownum, li.cm); temp.add(tmp); } } lineInfoList = temp.clone(); return null; } public PageReference saveLine() { List cmList = [ select id from CampaignMember__c where Campaign__c = :campaignId]; List insertList = new List(); for (LineInfo li : lineInfoList) { system.debug('=====department:' + li.cm.Department__c + '|DepartmentID:' + li.cm.Department_ID__c + '|Contact:' + li.cm.Contact__c + '|ContactID:' + li.cm.Contact_ID__c); if (li.cm.Department__c != null && li.cm.Department_ID__c != null && li.cm.Contact__c != null && li.cm.Contact_ID__c != null) { li.cm.Id = null; insertList.add(li.cm); } } errorStr = ''; Savepoint sp = Database.setSavepoint(); try { delete cmList; system.debug('=====insertList.size:' + insertList.size()); if (insertList.size() > 0) { insert insertList; } } catch (System.Exception e) { Database.rollback(sp); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, e.getMessage())); errorStr = e.getMessage(); hasError = true; return null; } ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Info, '保存完了。')); hasError = true; return null; } class LineInfo { public Integer line { get; set; } public CampaignMember__c cm { get; set; } public LineInfo(Integer in_line) { line = in_line; cm = new CampaignMember__c(); } public LineInfo(Integer in_line, CampaignMember__c in_cm) { line = in_line; cm = in_cm; } } }