force-app/main/default/classes/QISToETQWebService.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
force-app/main/default/classes/QISToETQWebService.cls-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
force-app/main/default/classes/QISToETQWebServiceTest.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
force-app/main/default/classes/QISToETQWebServiceTest.cls-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
force-app/main/default/classes/RepairSendToETQBatch.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
force-app/main/default/classes/QISToETQWebService.cls
New file @@ -0,0 +1,169 @@ global without sharing class QISToETQWebService { public static List<ImgObj> ImgObjs = new List<ImgObj>(); webservice static String sendToETQ(String iflog_Id,BatchIF_Log__c rowDataSFDC, List<String> repairIds,String statu){ List<QIS_Report__c> temp = [select id,name,GeneratedPDFField__c,problem_detail_photo__c,Photo_1__c,Photo_2__c,Photo_3__c,Photo_4__c, Photo_OSH_1__c,Photo_OSH_2__c,Photo_OSH_3__c,Photo_OSH_4__c from QIS_Report__c where GeneratedPDFField__c = null and id in :repairIds ]; List<Repair__c> tempRe = [select id,name,GeneratedPDFField__c,ProblemDescription__c,ASReportedCodeAC__c,AE_DetermineResult__c,PAE_Determine__c,PAE_DetermineAC__c from Repair__c where GeneratedPDFField__c = null and id in :repairIds ]; if(temp != null && temp.size() > 0){ // try { // 需要生成pdf的字段 List<String> apiNames = new List<String>(); apiNames.add('problem_detail_photo__c'); apiNames.add('Photo_1__c'); apiNames.add('Photo_2__c'); apiNames.add('Photo_3__c'); apiNames.add('Photo_4__c'); apiNames.add('Photo_OSH_1__c'); apiNames.add('Photo_OSH_2__c'); apiNames.add('Photo_OSH_3__c'); apiNames.add('Photo_OSH_4__c'); List<QIS_Report__c> updateQis = new List<QIS_Report__c>(); List<Attachment> attachments = new List<Attachment>(); PageReference pdfPage ; for(QIS_Report__c qis : temp){ for (String apiName : apiNames) { String generatedFields = qis.GeneratedPDFField__c; if (checkFieldisGeneratedPDF(apiName,qis)) { continue; } if (qis.get(apiName) == null) { continue; } setImgSrcs(qis, apiName); pdfPage = new PageReference('/apex/repairandqistopdf?api=qis&id='+qis.Id+'&field='+apiName); Blob pdfBody; if(Test.isRunningTest()) { pdfBody = blob.valueOf('Unit.Test'); } else { pdfBody = pdfPage.getContentAsPDF(); } Attachment attach = new Attachment(); attach.Body = pdfBody; if ('problem_detail_photo__c'.equals(apiName)) { attach.Name = substringApiName(qis.name) + '_Problem_Discription.pdf'; }else { attach.Name = substringApiName(qis.name) + '_' + 'Problem_' + apiName.substring(0,apiName.length()-3) + '.pdf'; } attach.ParentId = qis.id; attachments.add(attach); if (generatedFields == null) { qis.GeneratedPDFField__c = apiName; }else { qis.GeneratedPDFField__c += ',' + apiName; } } updateQis.add(qis); } insert attachments; update updateQis; // RepairAndQISToPDFController.generateAttachment(temp); NFM401Controller.callout(null, null, repairIds, statu); // } // catch (Exception e) { // return '更新QIS报错:'+ e.getMessage(); // } // Database.executeBatch(new QISToPDFBatch(iflog_Id, rowDataSFDC,repairIds,statu),50); //生成PDF }else{ BatchIF_Log__c iflog = new BatchIF_Log__c(); iflog.Type__c = 'sendToETQ'; iflog.ErrorLog__c = ''; iflog.Log__c = 'NFM401WebService start--'; Repair__c updateRe = new Repair__c(); updateRe.Id = tempRe[0].id; updateRe.INTERFACE_RECORD_ID__c = null; updateRe.ETQ_UPLOAD_STATUS__c = null; updateRe.ETQ_UPLOAD_MESSAGE__c = null; updateRe.OSH_ConfirmationDate__c = Date.today(); updateRe.OSH_Affirmant__c = UserInfo.getUserId(); updateRe.AWS_Interface_Time__c = Datetime.now(); updateRe.AsyncData__c = true; //update by rentx 2021-03-23 start 需要先更新修理的信息再掉401接口 不然的话可能会出现 调用成功但是部分修理更新失败的情况 将更新修理的步骤提前 则当修理更新失败时 就不会往下执行401的接口了 // try{ update updateRe; // Database.executeBatch(new RepairToPDFBatch(iflog_Id, rowDataSFDC,repairIds,statu)); //生成PDF // RepairAndQISToPDFController.generateAttachment(reList); PageReference pdfPage ; List<Repair__c> updateRpr = new List<Repair__c>(); List<Attachment> attachments = new List<Attachment>(); for(Repair__c re : tempRe){ String generatedFields = re.GeneratedPDFField__c; if (checkFieldisGeneratedPDF('ProblemDescription__c',re)) { continue; } if (re.get('ProblemDescription__c') == null) { continue; } setImgSrcs(re, 'ProblemDescription__c'); pdfPage = new PageReference('/apex/repairandqistopdf?api=repair&id='+re.Id); Blob pdfBody; if(Test.isRunningTest()) { pdfBody = blob.valueOf('Unit.Test'); } else { pdfBody = pdfPage.getContentAsPDF(); } Attachment attach = new Attachment(); attach.Body = pdfBody; attach.Name = re.name + '_' + 'Problem_Discription.pdf'; attach.ParentId = re.id; attachments.add(attach); re.GeneratedPDFField__c = 'ProblemDescription__c'; updateRpr.add(re); } insert attachments; update updateRpr; Database.executeBatch(new RepairSendToETQBatch(null, null,repairIds,statu),1); iflog.Log__c += '\n修理:'+updateRe+' 更新成功'; iflog.Log__c = '\nNFM401WebService end--'; insert iflog; // }catch(Exception ex){ // iflog.ErrorLog__c += '修理:'+updateRe+' 更新失败,因为::'+ex.getMessage(); // iflog.Log__c = '\nNFM401WebService end--'; // // System.debug('更新修理报错::36'+updateRe); // insert iflog; // return '更新修理报错:'+ ex.getMessage(); // } } return '发送成功!'; } // 主要用于生成qis中问题描述对应的pdf文件名称(比较特殊) public static String substringApiName(String name){ for(Integer i = 0; i < 2; i++){ name = name.substring(name.indexOf('-')+1); } return name; } public static Boolean checkFieldisGeneratedPDF(String apiName,SObject obj){ String generatedFields = (String) obj.get('GeneratedPDFField__c'); if (generatedFields != null) { List<String> ele = generatedFields.split(','); return ele.contains(apiName); } return false; } public class ImgObj{ public String imgSrc {get; set;} public String height {get; set;} } // 设置页面展示的数据 public static void setImgSrcs(SObject obj,String apiName){ ImgObjs = new List<ImgObj>(); String content = (String) obj.get(apiName); ImgObj ImgObj = new ImgObj(); ImgObj.imgSrc = content; ImgObj.height = '900px'; ImgObjs.add(ImgObj); System.debug('ImgObjs++'+ImgObjs); } } force-app/main/default/classes/QISToETQWebService.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>54.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/classes/QISToETQWebServiceTest.cls
New file @@ -0,0 +1,171 @@ @isTest public with sharing class QISToETQWebServiceTest { @testSetup static void makeTestQIS() { StaticParameter.EscapeNFM001Trigger = true; StaticParameter.EscapeNFM001AgencyContractTrigger = true; StaticParameter.EscapeNFM001AgencyContractTrigger2 = true; StaticParameter.EscapeNFM007Trigger = true; StaticParameter.EscapeOpportunityBefUpdTrigger = true; StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true; // List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; // if (rectCo.size() == 0) { // throw new ControllerUtil.myException('not found 病院 recodetype'); // } List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 消化科']; if (rectSct.size() == 0) { throw new ControllerUtil.myException('not found 戦略科室分類 呼吸科 recodetype'); } // List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Department_GI']; // if (rectDpt.size() == 0) { // throw new ControllerUtil.myException('not found 診療科 消化科 recodetype'); // } // テストデータ Account company = new Account(); company.RecordTypeId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('HP').getRecordTypeId(); // company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM105TestCompany'; upsert company; Account section = [Select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where ParentId = :company.Id and RecordTypeId = :rectSct[0].Id]; Account depart = new Account(); depart.RecordTypeId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Department_GI').getRecordTypeId(); depart.Name = '*'; depart.Department_Name__c = 'NFM105TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; // 再取得 List<Account> accList = new List<Account>(); company = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id = :company.Id]; accList.add(company); accList.add(section); depart = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id = :depart.Id]; accList.add(depart); List<Product2> prdList = new List<Product2>(); Product2 prd1 = new Product2(); prd1.ProductCode_Ext__c = 'NFM105Prd1'; prd1.ProductCode = 'NFM105Prd1'; prd1.Repair_Product_Code__c = 'NFM105Prd1_RP'; prd1.Name = 'NFM105Prd1'; prd1.Manual_Entry__c = false; prdList.add(prd1); Product2 prd2 = new Product2(); prd2.ProductCode_Ext__c = 'NFM105Prd2'; prd2.ProductCode = 'NFM105Prd2'; prd2.Repair_Product_Code__c = 'NFM105Prd2_RP'; prd2.Name = 'NFM105Prd2'; prd2.Manual_Entry__c = false; prdList.add(prd2); insert prdList; Asset ast = new Asset(); ast.Name = 'NFM105Ast1'; ast.AccountId = depart.Id; ast.Department_Class__c = section.Id; ast.Hospital__c = company.Id; ast.Product2Id = prd1.Id; ast.SerialNumber = 'NFM105SerialNumber'; ast.Guarantee_period_for_products__c = Date.today(); ast.InstallDate = Date.today(); insert ast; ast = [select Id, Name, Product_Serial_No__c, AccountId, Department_Class__c, Department_Class__r.Management_Code_Auto__c, Hospital__c, Product2Id, Product2.ProductCode, Product2.Repair_Product_Code__c, SerialNumber from Asset where Id = :ast.Id]; // User testUser = new User(); // testUser.Job_Category__c = '销售服务'; Repair__c rpr = new Repair__c(); rpr.SAPRepairNo__c = 'NFM105Rpr1'; rpr.Account__c = depart.Id; rpr.Department_Class__c = section.Id; rpr.Hospital__c = company.Id; rpr.Delivered_Product__c = ast.Id; rpr.Status__c = '1.受理完毕'; rpr.Incharge_Staff__c = Userinfo.getUserId(); rpr.Repair_Detail__c = 'test'; // rpr.ProblemDescription__c = '<img alt="用户添加的图片" src="https://ocsm--stagefull--c.documentforce.com/servlet/rtaImage?eid=a0J10000008VbEm&feoid=00N10000008rsVu&refid=0EM1s0000005LCs" style="height: 666px; width: 500px;"></img><img alt="用户添加的图片" src="https://ocsm--stagefull--c.documentforce.com/servlet/rtaImage?eid=a0J10000008VbEm&feoid=00N10000008rsVu&refid=0EM1s0000005LD2" style="height: 666px; width: 500px;"></img><br>2020/06/24'; rpr.GeneratedPDFField__c = null; //update by rentx 2020-10-1 System.runAs(new User(Id = Userinfo.getUserId())){ upsert rpr; } QIS_Report__c qr = new QIS_Report__c( RC__c = UserInfo.getUserId(), // Photo_1__c = '<img alt="用户添加的图片" src="https://ocsm--stagefull--c.documentforce.com/servlet/rtaImage?eid=a0J10000008VbEm&feoid=00N10000008rsVu&refid=0EM1s0000005LCs" style="height: 666px; width: 500px;"></img>', Damage_For_Doc_Or_Pat__c = '有', Relation_With_The_Problem__c = '有可能', Report_For_Goz__c = '不知道', Name = 'QIS012345', GeneratedPDFField__c = null, QIS_Submit_day__c = Date.Today(), problem_detail_photo__c = '1231' ); insert qr; } // @IsTest // static void myTest(){ // QIS_Report__c qis = [select id,name,GeneratedPDFField__c,problem_detail_photo__c,Photo_1__c,Photo_2__c,Photo_3__c, // Photo_4__c,Photo_OSH_1__c,Photo_OSH_2__c,Photo_OSH_3__c,Photo_OSH_4__c from QIS_Report__c]; // Test.startTest(); // List<String> ids = new List<String>(); // ids.add(qis.Id); // Database.executeBatch(new QISToPDFBatch(ids)); // Test.stopTest(); // } @IsTest static void myTest1(){ QIS_Report__c qis = [select id,name,GeneratedPDFField__c,problem_detail_photo__c,Photo_1__c,Photo_2__c,Photo_3__c, Photo_4__c,Photo_OSH_1__c,Photo_OSH_2__c,Photo_OSH_3__c,Photo_OSH_4__c from QIS_Report__c]; Test.startTest(); List<String> ids = new List<String>(); ids.add(qis.Id); QISToETQWebService.sendToETQ(null, null,ids,null); // Database.executeBatch(new QISToPDFBatch(null,null,ids,null)); Test.stopTest(); } // 修理 @isTest static void myTest(){ StaticParameter.EscapeNFM001Trigger = true; StaticParameter.EscapeNFM001AgencyContractTrigger = true; StaticParameter.EscapeNFM001AgencyContractTrigger2 = true; StaticParameter.EscapeNFM007Trigger = true; StaticParameter.EscapeOpportunityBefUpdTrigger = true; StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true; Repair__c res = [select id,name,GeneratedPDFField__c,ProblemDescription__c from Repair__c]; List<String> ids = new List<String>(); ids.add(res.Id); Test.startTest(); QISToETQWebService.sendToETQ(null, null,ids,''); // Database.executeBatch(new RepairToPDFBatch(ids)); // //add by rentx 2020-10-21 start // Database.executeBatch(new RepairToPDFBatch(null,null,ids,'')); // Database.executeBatch(new RepairToPDFBatch()); //add by rentx 2020-10-21 end Test.stopTest(); } } force-app/main/default/classes/QISToETQWebServiceTest.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>54.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/classes/RepairSendToETQBatch.cls
@@ -201,6 +201,8 @@ public void finish(Database.BatchableContext BC) { // gzw PDF空白优化 跳过测试程序 if (!Test.isRunningTest()) { //HHOA-C3LJWQ 先更新修理再发送etq 20210616 start byrentx if (this.idss != null && this.idss.size() > 0) { NFM401Controller.callout(null,null,this.idss,statu); @@ -210,5 +212,7 @@ Database.executeBatch(new NFM402Batch(),100); } // gzw PDF空白优化 跳过测试程序 } }