高章伟
2022-02-18 8b5f4c6c281cfa548f92de52c8021e37aa81901e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
public with sharing class TransferApplyPDFController {
 
    private static Integer MAXLINEHRIGHT = 25;//maxLineHight 25
    private static Integer MAXPAGECOUNT = 26; //32 maxPageCount 22
 
    private String transferApplyId;
 
    public List<PDFInfo> records { get; set; }
    public Integer pageCnt { get; set; }
    //public Integer pageNum { get; set; }
    public Integer AllSum {get;set;}
    public TransferApply__c ApplyHeadShow { get; set; }
    public List<lineInfo> DetailsAllList { get; set;}
    //public List<List<String>> PageCutList { get; set; }
    public TransferApplyPDFController() {
        //pageNum = Integer.valueOf(ApexPages.currentPage().getParameters().get('page'));
        //Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8');
        TransferApplyId = ApexPages.currentPage().getParameters().get('raid');
        ApplyHeadShow = new TransferApply__c();
    }
    public Integer getWordCount(String s)
    {
        s = s.replaceAll('[^\\x00-\\xff]', '**');
        Integer length = s.length();
        return length;
    }
    // 画面初始化
    public void init() {
        records = new List<PDFInfo>();
        //PageCutList = new List<List<String>>();
        List<TransferApply__c> ApplyList = new List<TransferApply__c>();
        if(transferApplyId!=null){
            ApplyList = [SELECT Id,
                                Name,
                                RecordTypeName__c,
                                From_Location__c,
                                Destination_location__c,
                                Contact_Person__r.Name,
                                QRImg__c,
                                QRId__c
                        FROM  TransferApply__c
                        WHERE Id = :transferApplyId];
        }
        if(ApplyList.size()>0){
            ApplyHeadShow = ApplyList[0];
        }
        DetailsAllList = new List<lineInfo>();
        //计算行高总数,用于分页
        integer LineNum = 0;
        List<TransferApplyDetail__c> LineOrderList = [SELECT Id,Name,Fixture_Model_No__c,
                                                TransferApplySummary__r.Fixture_Set__r.Name,
                                                Internal_Asset_number_key__c,
                                                SerialNumber__c,
                                                EquipmentSet_Managment_Code_After__c,
                                                Salesdepartment_After__c,
                                                SalesProvince_After__c,
                                                Equipment_Type_After__c,
                                                Manage_type__c,
                                                Loaner_accsessary__c,
                                                TAESD_Status__c
                                                FROM TransferApplyDetail__c 
                                                WHERE TransferApply__c =:TransferApplyId 
                                                AND Cancel_Select__c = false  
                                                AND Approved_F__c = true // 20210723 ljh add SFDC-C56D3K
                                                ORDER BY Name 
                                                ];    
        //取消的、出库前检测NG(即不是最终发货明细的)的不显示                                            
        Map<String,integer> DLSM = new Map<String,integer>();
        Map<String,String> LoanerCodeSM = new Map<String,String>();
        Map<String,String> DetailsLineMap = new Map<String,String>();
        String DetailsLine = '';
        if (LineOrderList!=null) {
            Integer i = 0;
            for (TransferApplyDetail__c LineOrder : LineOrderList) {
                    DetailsLine  = LineOrder.Name;
                    lineInfo Li = new lineInfo(LineOrder);
                    //载入行高 每行44
                    if (getWordCount(DetailsLine) != 0) {
                        Li.LineHeight = (getWordCount(DetailsLine)/56) + (Math.mod(getWordCount(DetailsLine), 56) > 0 ? 1 : 0);
                    } else {
                        Li.LineHeight = 1;
                    }
 
                    Li.height = Li.LineHeight * MAXLINEHRIGHT;
 
                    LineNum = LineNum + Li.LineHeight;
                    DetailsAllList.add(Li);
            }
        }
        //明细总页数
        integer PageAllNum = integer.valueOf(Math.ceil( LineNum / (MAXPAGECOUNT+1))+1+'');
 
        pageCnt = integer.valueOf(Math.ceil( DetailsAllList.size() / 27 ) +1+'');//17
        System.debug('pageCnt:'+pageCnt+':PageAllNum:'+PageAllNum);
        //新建一页
        PDFInfo info = new PDFInfo(new TransferApply__c());       
        integer PageCut = 0;
        if (PageAllNum>=7) {
           PageAllNum=7;
        }
        Integer tadCount = DetailsAllList.size();
        for (Integer K = 0; K < tadCount; K++) {
            PageCut = PageCut +DetailsAllList[K].LineHeight;
            if (PageCut > MAXPAGECOUNT) {
               records.add(info);
               system.debug('records内容::::::::'+records);
               info = new PDFInfo(new TransferApply__c());
               // List<String> G = new List<String>();
               // G.add('ANY element');
               // PageCutList.add(G);
               PageCut=0;
            }
            info.lineList.add(DetailsAllList[K]);
            System.debug('PageCut:'+PageCut);
            if(K==tadCount-1){
                for(Integer t = PageCut; t < MAXPAGECOUNT; t++){
                    info.lineList.add(new lineInfo());
                       PageCut = PageCut+1;        
                }
                if (PageCut >= MAXPAGECOUNT) {
                    records.add(info);
                    system.debug('records内容::::::::'+records);
                    info = new PDFInfo(new TransferApply__c());
                    // List<String> G = new List<String>();
                    // G.add('ANY element');
                    // PageCutList.add(G);
                    PageCut=0;
                } 
            } 
        }
        pageCnt = records.size();
        AllSum = DetailsAllList.size();
    }
    // Data Bean
    class PDFInfo {
        public String name { get; private set; } //调拨明细单号
        public String RecordTypeName { get; private set; }//调拨类型
        public String FromLocation { get; private set; }//存放地
        public String DestinationLocation { get; private set; }//调拨至地
        public String ContactPerson { get; private set; }//联系人
        public List<lineInfo> lineList { get; private set; }
        public PDFInfo(TransferApply__c ta) {
            name = ta.name;
            RecordTypeName = ta.RecordTypeName__c;
            FromLocation = ta.From_Location__c;
            DestinationLocation = ta.Destination_location__c;
            ContactPerson = ta.Contact_Person__r.Name;
            lineList = new List<lineInfo>();
        }
    }
 
    class lineInfo {
        public String Name { get; private set; }  //  调拨一览明细No
        public String Fixture_Model_No { get; private set; }  //  备品配套型号
        public String Fixture_Model_No_F { get; private set; }  //  备品配套明细型号
        public String Internal_Asset_number_key { get; private set; }  //  固定资产编号(key)
        public String SerialNumber { get; private set; }  //  机身编号
        public String EquipmentSet_Managment_Code { get; private set; }  //  备品管理编码
        public String Salesdepartment { get; private set; }  //  所在地区(本部)
        public String SalesProvince { get; private set; }  //  所在地区(省)
        public String Equipment_Type { get; private set; }  //  备品分类
        public String Manage_type { get; private set; }  //  管理种类
        public String Loaner_accsessary { get; private set; }  //  备品用途附属品
        public String TAESD_Status { get; private set; }  //  备品状态
        
        public integer LineHeight {get;private set;} //记录行高
        public integer height {get;private set;}
        public lineInfo() {
            Loaner_accsessary = null;
               height = height ==null ? MAXLINEHRIGHT: height;
        }
        public lineInfo(TransferApplyDetail__c tad) {
            Name = tad.Name;
            Fixture_Model_No = tad.Fixture_Model_No__c;
            Fixture_Model_No_F = tad.TransferApplySummary__r.Fixture_Set__r.Name;
            Internal_Asset_number_key = tad.Internal_Asset_number_key__c;
            SerialNumber = tad.SerialNumber__c;
            EquipmentSet_Managment_Code = tad.EquipmentSet_Managment_Code_After__c;
            Salesdepartment = tad.Salesdepartment_After__c;
            SalesProvince = tad.SalesProvince_After__c;
            Equipment_Type = tad.Equipment_Type_After__c;
            Manage_type = tad.Manage_type__c;
            Loaner_accsessary = String.valueOf(tad.Loaner_accsessary__c);
            TAESD_Status = tad.TAESD_Status__c;
               height = height ==null ? MAXLINEHRIGHT: height;
        }
    }
}