public without sharing class OPDNoReportApplicationController { //定义OPD计划 public OPDPlan__c opdPlan { get; set; } //是否上传附件 public Boolean IsUpload { get; set; } //跳过上传附件判断 public Boolean IsHavFile { get; set; } //附件 // 20231103 chenjingwu Lightning文件修改 Start public List attachmentinfo { get; set; } // 20231103 chenjingwu Lightning文件修改 End // //执行审批流成功标识 public Boolean approvalFlag { get; set; } //选择演示有无附件标识 public Boolean noAttachment { get; set; } // //执行保存成功 public Boolean saveFlag { get; set; } //因为用户权限不足 不能在页面上直接使用该字段。 //文本 型号 public String ModelLendingProductCode { get; set; } //id 型号 public String ModelLendingProductId { get; set; } //配套 id public String ModelLendingCodeId { get; set; } public OPDNoReportApplicationController(ApexPages.StandardController controller) { } public OPDNoReportApplicationController() { } public void init(){ //获取页面参数 String paramId = ApexPages.currentPage().getParameters().get('id'); //检索opd计划的状态、出借目的、出借目的(工作流用)、模型出借产品型号、对应修理维修NO,无报告状态,追加配套,opd来源,推广经理 //kk 增加几个字段的查询Account_Laboratory__c,OPDPlan_ImplementDate__c 20231027 start // List OPDPlanList = [select Id,Status__c,RentalReson__c,RentalResonTemp__c,ModelLendingProduct__c,ModelLendingProduct__r.Name,CorrespondingRepairNo__c,noReportStatus__c,AdditionalSupport__c,ModelLending__c,OPDType__c,SalesManager__c,ownerId,AdditionalSupport__r.Account_Laboratory__c,AdditionalSupport__r.OPDPlan_ImplementDate__c from OPDPlan__c where Id = :paramId]; List OPDPlanList = [select Id,Status__c,RentalReson__c,RentalResonTemp__c,ModelLendingProduct__c,ModelLendingProduct__r.Name,CorrespondingRepairNo__c,noReportStatus__c,AdditionalSupport__c,ModelLending__c,OPDType__c,SalesManager__c,ownerId,AdditionalSupport__r.Account_Laboratory__c,AdditionalSupport__r.OPDPlan_ImplementDate__c ,Account_Laboratory__c,OPDPlan_ImplementDate__c from OPDPlan__c where Id = :paramId]; //kk 增加几个字段的查询 20231027 end if( OPDPlanList.size() == 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '找不到对应的OPD计划!')); return; }else{ opdPlan = OPDPlanList[0]; this.ModelLendingProductCode = opdPlan.ModelLendingProduct__r.Name; this.ModelLendingProductId = opdPlan.ModelLendingProduct__c; this.ModelLendingCodeId = opdPlan.ModelLending__c; } //附件(lightning) // 20231103 chenjingwu Lightning文件修改 Start List cdlList = [SELECT ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId = :paramId]; List fileIDs = new List(); for (ContentDocumentLink docLink : cdlList) { fileIDs.add(docLink.ContentDocumentId); } attachmentinfo=[SELECT Id,Title,OwnerId from ContentDocument WHERE Id IN :fileIDs]; // 20231103 chenjingwu Lightning文件修改 End // attachmentinfo = [SELECT Id, Name,OwnerId FROM Attachment WHERE parentid = :paramId]; if(attachmentinfo.size()>0){ IsHavFile =true; } else { IsHavFile = false; } //审批标识 approvalFlag =false; //保存标识 saveFlag = false; } //上传附件 @RemoteAction public static String testAddAttachment(String attachmentName,String attachmentType, String attachmentBody,String parentId) { String operateResult; // 20231103 chenjingwu Lightning文件修改 Start // Attachment tmpAttachment = new Attachment(); // tmpAttachment.Name = attachmentName; // tmpAttachment.Body = EncodingUtil.base64Decode(attachmentBody); // tmpAttachment.ParentId = parentId; // tmpAttachment.ContentType = attachmentType; ContentVersion version = new ContentVersion(); version.Title = attachmentName; version.VersionData = EncodingUtil.base64Decode(attachmentBody); version.ContentLocation = 's'; version.PathOnClient = attachmentName + '.' + attachmentType; try { insert version; version = [select Id,ContentDocumentId from ContentVersion where Id =: version.Id]; ContentDocumentLink link = new ContentDocumentLink(); link.ContentDocumentId = version.ContentDocumentId; link.LinkedEntityId = parentId; link.ShareType = 'I'; link.Visibility = 'AllUsers'; insert link; // 20231103 chenjingwu Lightning文件修改 End operateResult = '您已上传文件成功!'; } catch (Exception e){ operateResult = '上传文件失败,请重试!'; } return operateResult; } //保存 public PageReference Save() { //后台验证 System.debug('opdPlan3:'+opdPlan); Boolean checkFlag = checkList(IsUpload,IsHavFile); if(checkFlag){ return null; } if(opdPlan.AdditionalSupport__c !=null){ //拷贝原OPD计划补充申请 opdPlan.OriginalOpdPlanApplication__c = opdPlan.AdditionalSupport__c; } System.debug('opdPlan1:'+opdPlan); try{ //后台赋值 if(String.isNotBlank(this.ModelLendingProductId)){ opdPlan.ModelLendingProduct__c = this.ModelLendingProductId; } else{ opdPlan.ModelLendingProduct__c=null; } if(String.isNotBlank(this.ModelLendingProductId)){ opdPlan.ModelLending__c = this.ModelLendingCodeId; } else{ opdPlan.ModelLending__c=null; } opdPlan.noReportStatus__c = '已保存'; System.debug('opdPlan2:'+opdPlan); update opdPlan; ApexPages.addmessage(new ApexPages.message(ApexPages.severity.CONFIRM, '保存完毕!')); saveFlag = true; }catch(exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, e.getMessage())); saveFlag =false; } return null; } //提交待审批 public PageReference CommitNeedApproval(){ System.debug('提交待审批11'); Savepoint sp = Database.setSavepoint(); //后台验证 Boolean checkFlag = checkList(IsUpload,IsHavFile); if(checkFlag){ return null; } //2021-01-27 mzy 模型出借号,不保存直接审批没有值 start //在提交审批之前再次保存一下 Save(); //2021-01-27 mzy 模型出借号,不保存直接审批没有值 end if(opdPlan.AdditionalSupport__c !=null){ //拷贝原OPD计划补充申请 opdPlan.OriginalOpdPlanApplication__c = opdPlan.AdditionalSupport__c; } //判断来源是否是学会 if(opdPlan.OPDType__c == '学会' && opdPlan.SalesManager__c == null){ String id = opdPlan.ownerId; List userList = [select id,SalesManager__c from user where id =:id ]; if(userList.size()>0){ opdPlan.SalesManager__c = userList[0].SalesManager__c; } } //更新状态为计划中 opdPlan.noReportStatus__c = '提交'; List opdList = new List(); try{ if(opdPlan!=null){ opdList.add(opdPlan); } update opdPlan; Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest(); psr.setObjectId(this.opdPlan.id); Approval.ProcessResult submitResult = Approval.process(psr); if(opdList.size()>0){ Approval.UnLockResult[] results = Approval.unlock(opdList, false); } ApexPages.addmessage(new ApexPages.message(ApexPages.severity.CONFIRM, '审批已提交')); approvalFlag = true; }catch(exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, e.getMessage())); approvalFlag = false; Database.rollback(sp); return null; } return null; } //check验证 public Boolean checkList( Boolean IsUpload,Boolean IsHavFile){ System.debug('IsUpload:'+IsUpload); System.debug('opdPlan.RentalResonTemp__c:'+opdPlan.RentalResonTemp__c); System.debug('IsHavFile:'+IsHavFile); //①出借目的选择模型出借时,模型出借产品型号必填 if(opdPlan.RentalResonTemp__c.equals('模型出借')&&string.isBlank(this.ModelLendingProductId)){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '请您填写1.模型出借产品型号!')); return true; } //出借目的选择对应修理时,对应修理维修NO必填 else if(opdPlan.RentalResonTemp__c.equals('对应修理')&&string.isBlank(opdPlan.CorrespondingRepairNo__c)){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '请您填写2.对应修理维修NO!')); return true; } //出借目的选择演示或疫情时,必须上传文件说明 else if((opdPlan.RentalResonTemp__c.equals('演示')||opdPlan.RentalResonTemp__c.equals('无法进入手术室'))&&!IsUpload&&!IsHavFile){ noAttachment = true; ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '请您上传文件证明!')); return true; } //出借目的选择演示或疫情时,必须上传文件说明 else if(opdPlan.RentalResonTemp__c.equals('追加配套')&&string.isBlank(opdPlan.AdditionalSupport__c)){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '请填写4.追加配套!')); return true; } if(opdPlan.RentalResonTemp__c.equals('--无--')){ opdPlan.RentalResonTemp__c = null; } return false; } //获取选项列表的值 public List getRentalReson() { map> pickerFields = new map>(); // OPD计划 出借目的(工作流用)copy 选项值动态获取 list taskStatusOptions = new list(); Schema.DescribeFieldResult taskStatusfieldResult = OPDPlan__c.RentalResonTemp__c.getDescribe(); List taskStatusple = taskStatusfieldResult.getPicklistValues(); for ( Schema.PicklistEntry pickListVal : taskStatusple) { pickerWrapper temppickerWrapper = new pickerWrapper(pickListVal.getLabel(), pickListVal.getValue()); taskStatusOptions.add(temppickerWrapper); } pickerFields.put('taskStatusOptions', taskStatusOptions); List pickerWrapperList = pickerFields.get('taskStatusOptions'); List options = new List(); options.add(new SelectOption('--无--', '--无--')); for(pickerWrapper pw : pickerWrapperList){ //无报告申请 页面上去掉 OPD 选项 if(!pw.value.equals('OPD')){ options.add(new SelectOption(pw.value, pw.value)); } } return options; } //定义动态获取选项值的构造类 public class pickerWrapper { @AuraEnabled public string label; @AuraEnabled public string value; public pickerWrapper(string label, string value) { this.label = label; this.value = value; } } }