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);
|
|
}
|
}
|