/** @description 收货清单明细生成PDF */ public without sharing class ReceivingNotePDFController { private final static Integer LINE_COUNT_PER_PAGE = 13; //每页13条明细 private String receivingNoteId; public List pages { get; set; } // 所有PDF页的内容 public Integer pageCnt { get; set; } public ReceivingNote__c receivingNoteHeadShow { get; set; } public String errorMessage{get;set;} public ReceivingNotePDFController() { receivingNoteId = ApexPages.currentPage().getParameters().get('rnid'); receivingNoteHeadShow = new ReceivingNote__c(); pages = new List(); } /** @description 收货单PDF画面初始化 */ public void init() { List receivingNoteList = new List(); if(receivingNoteId!=null){ receivingNoteList = [ SELECT Sales_order_number__c //合同编码字段 , OrderCode__c //订单编码 , ApprovalNumber__c //采购申请决裁号 , DateOfDelivery__c //发货日 , Internal_asset_location__c //备品存放地 //20210312 you WLIG-BV8CHF start //, ReceivingNoteNo__c //清单编号 , ReceivingNoteNo_New__c //20210312 you WLIG-BV8CHF end , QRId__c //二维码 FROM ReceivingNote__c WHERE Id = :receivingNoteId ]; } if(receivingNoteList.size()>0){ receivingNoteHeadShow = receivingNoteList[0]; } else{ errorMessage = '收货清单Id不存在'; return; } List rndList = new List(); rndList = [ SELECT ReceivingNoteDetailNo__c , OT_CODE__c , Fixture_Model_No_F__c , Fixture_Model_Name_F__c , Internal_Asset_number_key__c , SerialNumber_F__c , PeriodOfUse__c , Packing_list_Fixture_F__c , EquipmentSet_Managment_Code__c , Salesdepartment__c , SalesProvince__c , Product_category__c , Equipment_Type__c , Manage_type__c , unknow_serial_NO_product__c , Asset_loaner_category_F__c , Loaner_accsessary__c , RND_Status__c FROM ReceivingNoteDetail__c WHERE ReceivingNoteSummary__r.ReceivingNote__c = :receivingNoteId AND Delete_Flag__c = false AND Change_Point__c != '删除' ORDER BY ReceivingNoteSummary__c, Name ASC NULLS LAST ]; // 用行数算出页数 Integer pageCount = rndList.size() / LINE_COUNT_PER_PAGE; if (Math.mod(rndList.size(), LINE_COUNT_PER_PAGE) > 0) { pageCount += 1; } //新建一页 PDFPage pdfPage = new PDFPage(); for (Integer i = 0; i < pageCount * LINE_COUNT_PER_PAGE; i++) { // 有明细则用明细,没明细则用空行填满页面 if ( i < rndList.size()) { pdfPage.lineList.add(rndList[i]); } else { pdfPage.lineList.add(new ReceivingNoteDetail__c()); } // 装满一页 ,则新造一页 if (pdfPage.lineList.size() >= LINE_COUNT_PER_PAGE) { pages.add(pdfPage); pdfPage = new PDFPage(); } } pageCnt = pages.size(); } /** @description 一页pdf上的内容 */ public class PDFPage { public List lineList { get; private set; } /** @description */ public PDFPage() { lineList = new List(); } } }