public with sharing class InsReportPDFController { public Inspection_Report__c ir { get; private set; } public User usr { get; private set; } public List itemList { get; private set; } public List detailList { get; private set; } public List workList { get; private set; } public String sign { get; private set; } //add by rentx 20210707 start public String startfen {get;set;} public String endfen {get;set;} //add by rentx 20210707 end // 20220222 PI改造 by Bright---start // deloitte-zhj 20231115 PIPL还原 start // public string staticResource { get; private set; } // public string staticResourceFile { get; private set; } // 20220222 PI改造 by Bright---end //2023 08 30 张赫阳 PIPL页面改造 start //public string staticResourceContact { get; private set; } //2023 08 30 张赫阳 PIPL页面改造 end // deloitte-zhj 20231115 PIPL还原 end public Integer getItemCount() { return itemList.size(); } // 最初ページ行数 private static Integer firstRowSize = 18; // 途中ページ行数 private static Integer rowSize = 27; // 最後ページ行数 private static Integer lastRowSize = 21; private static Integer codeMax = 6; private static Integer nameMax = 20; private static Integer commentMax = 15; public InsReportPDFController(){ //deloitte-zhj 20231115 PIPL还原 // // 20220222 PI改造 by Bright---start // staticResource = JSON.serialize(PIHelper.getPIIntegrationInfo('Inspection_Report__c')); // staticResourceFile = JSON.serialize(PIHelper.getPIIntegrationInfo('Document')); // // 20220222 PI改造 by Bright---end // //2023 08 30 张赫阳 PIPL页面改造 start // staticResourcecontact = JSON.serialize(PIHelper.getPIIntegrationInfo('Contact')); // //2023 08 30 张赫阳 PIPL页面改造 end } public void init() { //add by rentx 20210707 start startfen = ''; endfen = ''; //add by rentx 20210707 end String id = ApexPages.currentPage().getParameters().get('id'); ir = this.getReportData(id); //add by rentx 20210707 start if (ir.StartMinute_Page__c != null) { startfen = ir.StartMinute_Page__c.length() == 1 ? '0' + ir.StartMinute_Page__c : ir.StartMinute_Page__c; } if (ir.EndMinute_Page__c != null) { endfen = ir.EndMinute_Page__c.length() == 1 ? '0' + ir.EndMinute_Page__c : ir.EndMinute_Page__c; } //add by rentx 20210707 end sign = ApexPages.currentPage().getParameters().get('sign'); usr = [select name from User where Id = :ir.Reporter__c]; //hql 20231027 itemList = new List(); detailList = new List(); Integer cnt = 1; DetailBean work = null; workList = new List(); //add byr entx 20210831 start // Set assIdset = new Set(); //add byr entx 20210831 end for (Inspection_Item__c record : this.getItemData(id)) { //add byr entx 20210831 start // assIdset.add(record.AssetId__c); //add byr entx 20210831 end String productName = ''; String productNo = ''; String NewproductName = ''; // 2023-10-16 WYL 新增 String diagnosis = record.Diagnosis__c == null ? '' : record.Diagnosis__c; String Newdiagnosis =record.Diagnosis__c == null ? '' : record.Diagnosis__c; // 2023-10-16 WYL 新增 if (record.AssetId__c != null) { productName = record.AssetId__r.Name; NewproductName = record.AssetId__r.Name;// 2023-10-16 WYL 新增 } else if (record.Product_Manual__c != null) { productName = record.Product_Manual__r.Name; NewproductName = record.Product_Manual__r.Name;// 2023-10-16 WYL 新增 } if (productName.indexOf(':') >= 0) { productNo = productName.subString(0, productName.indexOf(':')); productName = productName.subString(productName.indexOf(':') + 1); } else if (productName.indexOf(':') >= 0) { productNo = productName.subString(0, productName.indexOf(':')); productName = productName.subString(productName.indexOf(':') + 1); } // 2023-10-16 WYL 新增 start if (NewproductName.contains(':')) { NewproductName = NewproductName.replaceAll(':', ':'); } // 2023-10-16 WYL 新增 end Integer icode = (productNo.length() / codeMax) + (Math.mod(productNo.length(), codeMax) > 0 ? 1 : 0); Integer iname = (productName.length() / nameMax) + (Math.mod(productName.length(), nameMax) > 0 ? 1 : 0); Integer icomment = (diagnosis.length() / commentMax) + (Math.mod(diagnosis.length(), commentMax) > 0 ? 1 : 0); // 1レコードに対し、最大何行になるのを計算 // productNo、productName、diagnosis、それぞれ長さを計算、最大の行を取得 // ここのロジックは、QuotePdfExtensionControllerを参照する(そっちのロジックは一番いい) // TODO xud 但し、等幅文字ではない限り、改行計算に限界あります List codeArray = new List(); List nameArray = new List(); List nameArray2 = new List(); List commentArray = new List();// 2023-10-16 WYL 新增 List commentArray2 = new List();// 2023-10-16 WYL 新增 for ( Integer j = 0; j < icode; j++) { if (( j + 1) == icode) { codeArray.add( productNo.substring( j * codeMax)); } else { codeArray.add( productNo.substring( j * codeMax, (j+1) * codeMax)); } } for ( Integer j = 0; j < iname; j++) { if (( j + 1) == iname) { nameArray.add( productName.substring( j * nameMax)); nameArray2.add(NewproductName);// 2023-10-16 WYL 新增 commentArray2.add(Newdiagnosis);// 2023-10-16 WYL 新增 } else { nameArray.add( productName.substring( j * nameMax, (j+1) * nameMax)); nameArray2.add(NewproductName);// 2023-10-16 WYL 新增 commentArray2.add(Newdiagnosis);// 2023-10-16 WYL 新增 } } for ( Integer j = 0; j < icomment; j++) { if (( j + 1) == icomment) { commentArray.add( diagnosis.substring( j * commentMax)); } else { commentArray.add( diagnosis.substring( j * commentMax, (j+1) * commentMax)); } } Integer icnt = codeArray.size(); if (icnt < nameArray.size()) { icnt = nameArray.size(); } // 2023-10-16 WYL 新增 start if (icnt < nameArray2.size()) { icnt = nameArray2.size(); } // 2023-10-16 WYL 新增 end if (icnt < commentArray.size()) { icnt = commentArray.size(); } // 2023-10-16 WYL 新增 start if (icnt < commentArray2.size()) { icnt = commentArray2.size(); } // 2023-10-16 WYL 新增 end for ( Integer k = 0; k < icnt; k++) { if (k == 0) { work = new DetailBean(record); work.lineNo = cnt; work.delimiter = ':'; } else { work = new DetailBean( ); work.delimiter = ''; } work.productNo = k < codeArray.size() ? codeArray[k] : ''; work.productName = k < nameArray.size() ? nameArray[k] : ''; work.diagnosis = k < commentArray.size() ? commentArray[k] : ''; work.Newdiagnosis = k < commentArray2.size() ? commentArray2[k] : ''; // 2023-10-16 WYL 新增 work.NewproductName = k < nameArray2.size() ? nameArray2[K] : ''; // 2023-10-16 WYL 新增 if (work.lineNo != null) work.isRecord = true; workList.add(work); } cnt++; } cnt = 1; for (Integer i = 0; i < workList.size(); i++) { detailList.add(workList[i]); if (cnt == firstRowSize) { itemList.add(new ItemBean(detailList)); detailList = new List(); } if (cnt == firstRowSize + rowSize) { itemList.add(new ItemBean(detailList)); detailList = new List(); cnt = firstRowSize; } cnt++; } if (detailList.size() > 0) { if (detailList.size() > lastRowSize) { List tmpBean1 = new List(); List tmpBean2 = new List(); for (Integer i = 0; i < lastRowSize; i++) { tmpBean1.add(detailList[i]); } itemList.add(new ItemBean(tmpBean1)); for (Integer i = lastRowSize; i < detailList.size(); i++) { tmpBean2.add(detailList[i]); } itemList.add(new ItemBean(tmpBean2)); } else { itemList.add(new ItemBean(detailList)); } } //add by rentx 20210831 start 查询修理 // Map assRemap = new Map(); // List replist = [select id,Delivered_Product__c from Repair__c where InsReport__c = :id AND Delivered_Product__c in :assIdset]; // if (replist != null && replist.size() > 0) { // for (Repair__c rep : replist) { // assRemap.put(rep.Delivered_Product__c, ''); // } // } // for (ItemBean item : itemList) { // for (DetailBean deb : item.detailList) { // if (assRemap.containsKey(deb.rec.AssetId__c)) { // //送修 // deb.isSongxiu = '是'; // }else{ // deb.isSongxiu = '否'; // } // } // } //add by rentx 20210831 end 查询修理 } private Inspection_Report__c getReportData(String id) { Schema.DescribeSobjectResult d = Inspection_Report__c.sObjectType.getDescribe(); Map fieldMap = d.fields.getMap(); String soql = 'select '; String fields = ''; for (String field : fieldMap.keySet()) { if (fields.length() > 0) { fields += ', '; } fields += field; } soql += fields; //2023 08 30 张赫阳 PIPL页面改造 start--添加字段Responsible_Person_F__r.AWS_Data_Id__c //deloitte-zhj 20231115 PIPL还原 去除Responsible_Person_F__r.AWS_Data_Id__c soql += ', Hospital__r.Name, Department__r.Department_Name__c,Responsible_Person_F__r.AWS_Data_Id__c,Responsible_Person_F__r.name '; //2023 08 30 张赫阳 PIPL页面改造 end soql += ',Contract__r.Maintenance_Contract_No__c,Contract__r.Service_contract_target_number__c,Contract__r.dianjiansum__c'; // soql += ''; soql += ' from Inspection_Report__c where Id = \'' + id + '\''; return Database.query(soql); } private List getItemData(String id) { Schema.DescribeSobjectResult d = Inspection_Item__c.sObjectType.getDescribe(); Map fieldMap = d.fields.getMap(); String soql = 'select '; String fields = ''; for (String field : fieldMap.keySet()) { if (fields.length() > 0) { fields += ', '; } fields += field; } soql += fields; soql += ', AssetId__r.Service_Agreement_formula__c, AssetId__r.Name, Product_Manual__r.Name,Inspection_ReportId__r.Contract__c'; soql += ' from Inspection_Item__c where Inspection_ReportId__c = \'' + id + '\' order by Name'; return Database.query(soql); } public class ItemBean { public Integer pageCnt { get; set; } public List detailList { get; set; } public ItemBean(List detailList) { this.detailList = new List(); this.detailList.addAll(detailList); } } public class DetailBean { public Integer lineNo { get; set; } public String productNo { get; set; } public String delimiter { get; set; } public String productName { get; set; } public String NewproductName { get; set; } // 2023-10-16 WYl public String serialNo { get; set; } public String diagnosis { get; set; } public String Newdiagnosis { get; set; } // 2023-10-17 WYL 新增 public String isNormal { get; set; } public Date lastRepair { get; set; } public Inspection_Item__c rec { get; set; } public Boolean isRecord { get; set; } //add by rentx 20210831 start public String isSongxiu{get ; set;} public String isHTsb{get ; set;} //add by rentx 20210831 end public DetailBean(Inspection_Item__c record) { this.rec = record; this.serialNo = ''; if (record.Product_Manual__c != null) { this.serialNo = record.SerialNo_Manual__c; } else { this.serialNo = record.SerialNumber__c; } isNormal = record.ItemStatus__c; lastRepair = record.LastSFDCRepairReturn_day__c; //add by rentx 20210831 start List rclist = [select id from Repair__c where InsReport__c = :record.Inspection_ReportId__c AND Delivered_Product__c = :record.AssetId__c limit 1]; if (rclist != null && rclist.size() > 0) { isSongxiu = '是'; }else{ isSongxiu = '否'; } if (record.Inspection_ReportId__r.Contract__c == null) { isHTsb = '否'; }else { isHTsb = '是'; } //add by rentx 20210831 end isRecord = false; } public DetailBean() { isRecord = false; } } }