高章伟
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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
public with sharing class DateModifyController {
    public String coId {get; set;}
    public String submitResult {get; set;}
    public Campaign cam {get; set;}
    public DateModifyController() {
        coId = System.currentPageReference().getParameters().get('id');
    }
    //初始化
    public void init() {
        cam =
            [select id, is_pass_or_fail__c, CeremonyLeaders__c, CeremonyDate__c, CeremonyDate_copy__c,
             Lesson1Date_copy__c, Lesson2Date_copy__c, Lesson3Date_copy__c,
             Lesson4Date_copy__c, Lesson5Date_copy__c, Lesson6Date_copy__c, Lesson7Date_copy__c,
             Lesson8Date_copy__c, FinalExamDate_copy__c, is_true_or_false__c,
             Lesson1Date__c, Lesson2Date__c, Lesson3Date__c, Lesson4Date__c,
             Lesson5Date__c, Lesson6Date__c, Lesson7Date__c, Lesson8Date__c, FinalExamDate__c,
             IsOpenCeremony__c, Open_day__c, Status_Service__c
             from Campaign
             where id = : coId];
        if (cam == null) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '找不到对应的内镜临床工程师培养。'));
            return;
 
        }
        setUpDate();
        //System.debug(cam.CeremonyLeaders__c);
    }
    public boolean getIsblock() {
        boolean Isblock = true;
        if (cam.Status_Service__c.equals('开班筹备中') || cam.Status_Service__c.equals('开班中') ) {
            Isblock = false;
 
        }
        return Isblock;
    }
    // 初始化日期赋值
    private void setUpDate() {
        if (cam != null) {
            if (cam.CeremonyDate_copy__c == null) {
                cam.CeremonyDate_copy__c = cam.CeremonyDate__c;
            }
            if (cam.Lesson1Date_copy__c == null) {
                cam.Lesson1Date_copy__c = cam.Lesson1Date__c;
            }
            if (cam.Lesson2Date_copy__c == null) {
                cam.Lesson2Date_copy__c = cam.Lesson2Date__c;
            }
            if (cam.Lesson3Date_copy__c == null) {
                cam.Lesson3Date_copy__c = cam.Lesson3Date__c;
            }
            if (cam.Lesson4Date_copy__c == null) {
                cam.Lesson4Date_copy__c = cam.Lesson4Date__c;
            }
            if (cam.Lesson5Date_copy__c == null) {
                cam.Lesson5Date_copy__c = cam.Lesson5Date__c;
            }
            if (cam.Lesson6Date_copy__c == null) {
                cam.Lesson6Date_copy__c = cam.Lesson6Date__c;
            }
            if (cam.Lesson7Date_copy__c == null) {
                cam.Lesson7Date_copy__c = cam.Lesson7Date__c;
            }
            if (cam.Lesson8Date_copy__c == null) {
                cam.Lesson8Date_copy__c = cam.Lesson8Date__c;
            }
            if (cam.FinalExamDate_copy__c == null) {
                cam.FinalExamDate_copy__c = cam.FinalExamDate__c;
            }
        }
    }
    //保存按钮
    public void saveBtn() {
        Savepoint  sp = Database.setSavepoint();
        try {
            upsert cam;
            //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.CONFIRM, '保存成功!'));
        } catch (Exception ex) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber()));
            Database.rollback(sp);
        }
 
    }
 
    // 设置 时间修改邮件显示内容
    @TestVisible
    private string setUpEmailStr() {
        string EmailStr = '';
        if (cam.CeremonyDate__c != cam.CeremonyDate_copy__c) {
            string tempOrigin =  cam.CeremonyDate__c == null ? '无' : cam.CeremonyDate__c.format();
            string tempNew =  cam.CeremonyDate_copy__c == null ? '无' : cam.CeremonyDate_copy__c.format();
            EmailStr += '申请更改时间的事项:开班仪式时间 原定日期:' + tempOrigin
                        + ' 希望修改日期:' + tempNew +  '\n\n';
        }
        if (cam.Lesson1Date__c != cam.Lesson1Date_copy__c) {
            string tempOrigin =   cam.Lesson1Date__c == null ? '无' : cam.Lesson1Date__c.format();
            string tempNew =  cam.Lesson1Date_copy__c == null ? '无' : cam.Lesson1Date_copy__c.format();
            EmailStr += '申请更改时间的事项: 第一次授课 原定日期:' + tempOrigin + ' 希望修改日期:'
                        + tempNew +  '\n\n';
 
        }
        if (cam.Lesson2Date__c != cam.Lesson2Date_copy__c) {
            string tempOrigin =   cam.Lesson2Date__c == null ? '无' : cam.Lesson2Date__c.format();
            string tempNew =  cam.Lesson2Date_copy__c == null ? '无' : cam.Lesson2Date_copy__c.format();
            EmailStr += '申请更改时间的事项: 第二次授课 原定日期:' + tempOrigin + ' 希望修改日期:'
                        + tempNew +  '\n\n';
 
        }
        if (cam.Lesson3Date__c != cam.Lesson3Date_copy__c) {
            string tempOrigin =   cam.Lesson3Date__c == null ? '无' : cam.Lesson3Date__c.format();
            string tempNew =  cam.Lesson3Date_copy__c == null ? '无' : cam.Lesson3Date_copy__c.format();
            EmailStr += '申请更改时间的事项: 第三次授课 原定日期:' + tempOrigin + ' 希望修改日期:'
                        + tempNew +  '\n\n';
 
        }
        if (cam.Lesson4Date__c != cam.Lesson4Date_copy__c) {
            string tempOrigin =   cam.Lesson4Date__c == null ? '无' : cam.Lesson4Date__c.format();
            string tempNew =  cam.Lesson4Date_copy__c == null ? '无' : cam.Lesson4Date_copy__c.format();
            EmailStr += '申请更改时间的事项: 第四次授课 原定日期:' + tempOrigin + ' 希望修改日期:'
                        + tempNew +  '\n\n';
 
        }
        if (cam.Lesson5Date__c != cam.Lesson5Date_copy__c) {
            string tempOrigin =   cam.Lesson5Date__c == null ? '无' : cam.Lesson5Date__c.format();
            string tempNew =  cam.Lesson5Date_copy__c == null ? '无' : cam.Lesson5Date_copy__c.format();
            EmailStr += '申请更改时间的事项: 第五次授课 原定日期:' + tempOrigin + ' 希望修改日期:'
                        + tempNew +  '\n\n';
 
        }
        if (cam.Lesson6Date__c != cam.Lesson6Date_copy__c) {
            string tempOrigin =   cam.Lesson6Date__c == null ? '无' : cam.Lesson6Date__c.format();
            string tempNew =  cam.Lesson6Date_copy__c == null ? '无' : cam.Lesson6Date_copy__c.format();
            EmailStr += '申请更改时间的事项: 第六次授课 原定日期:' + tempOrigin + ' 希望修改日期:'
                        + tempNew +  '\n\n';
 
        }
        if (cam.Lesson7Date__c != cam.Lesson7Date_copy__c) {
            string tempOrigin =   cam.Lesson7Date__c == null ? '无' : cam.Lesson7Date__c.format();
            string tempNew =  cam.Lesson7Date_copy__c == null ? '无' : cam.Lesson7Date_copy__c.format();
            EmailStr += '申请更改时间的事项: 第七次授课 原定日期:' + tempOrigin + ' 希望修改日期:'
                        + tempNew +  '\n\n';
        }
        if (cam.Lesson8Date__c != cam.Lesson8Date_copy__c) {
            string tempOrigin =   cam.Lesson8Date__c == null ? '无' : cam.Lesson8Date__c.format();
            string tempNew =  cam.Lesson8Date_copy__c == null ? '无' : cam.Lesson8Date_copy__c.format();
            EmailStr += '申请更改时间的事项: 第八次授课 原定日期:' + tempOrigin + ' 希望修改日期:'
                        + tempNew +  '\n\n';
 
        }
        if (cam.FinalExamDate__c != cam.FinalExamDate_copy__c) {
            string tempOrigin =   cam.FinalExamDate__c == null ? '无' : cam.FinalExamDate__c.format();
            string tempNew =  cam.FinalExamDate_copy__c == null ? '无' : cam.FinalExamDate_copy__c.format();
            EmailStr += '申请更改时间的事项: 最终考核 原定日期:' + tempOrigin
                        + ' 希望修改日期:' + tempNew +  '\n\n';
 
        }
        return EmailStr;
    }
 
    private void dateCopy() {
        cam.CeremonyDate_original__c = cam.CeremonyDate__c;
        cam.Lesson1Date_original__c = cam.Lesson1Date__c;
        cam.Lesson2Date_original__c = cam.Lesson2Date__c;
        cam.Lesson3Date_original__c = cam.Lesson3Date__c;
        cam.Lesson4Date_original__c = cam.Lesson4Date__c;
        cam.Lesson5Date_original__c = cam.Lesson5Date__c;
        cam.Lesson6Date_original__c = cam.Lesson6Date__c;
        cam.Lesson7Date_original__c = cam.Lesson7Date__c;
        cam.Lesson8Date_original__c = cam.Lesson8Date__c;
        cam.FinalExamDate_original__c = cam.FinalExamDate__c;
 
 
        cam.CeremonyDate__c = cam.CeremonyDate_copy__c;
        cam.Lesson1Date__c = cam.Lesson1Date_copy__c;
        cam.Lesson2Date__c = cam.Lesson2Date_copy__c;
        cam.Lesson3Date__c = cam.Lesson3Date_copy__c;
        cam.Lesson4Date__c = cam.Lesson4Date_copy__c;
        cam.Lesson5Date__c = cam.Lesson5Date_copy__c;
        cam.Lesson6Date__c = cam.Lesson6Date_copy__c;
        cam.Lesson7Date__c = cam.Lesson7Date_copy__c;
        cam.Lesson8Date__c = cam.Lesson8Date_copy__c;
        cam.FinalExamDate__c = cam.FinalExamDate_copy__c;
 
        cam.is_true_or_false__c = true;
        cam.Status = '时间修改申请中';
        cam.is_pass_or_fail__c = 4;
 
    }
    //提交审批按钮
    public void submitBtn() {
 
 
        Date startDate = cam.CeremonyDate_copy__c == null ?
                         cam.Lesson1Date_copy__c : cam.CeremonyDate_copy__c;
        if (startDate == null ) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,
                                 Schema.SObjectType.Campaign.fields.StartDate__c.label
                                 + '不能为空。'));
            return;
        }
         Date startDate_original = cam.CeremonyDate__c == null ?
                         cam.Lesson1Date__c : cam.CeremonyDate__c;
        if (startDate < cam.Open_day__c && startDate != startDate_original) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,
                                 Schema.SObjectType.Campaign.fields.StartDate__c.label
                                 + '不能早于审核通过日。'));
            return;
        }
        if (startDate > cam.Lesson1Date_copy__c ||
                startDate > cam.Lesson2Date_copy__c ||
                startDate > cam.Lesson3Date_copy__c ||
                startDate > cam.Lesson4Date_copy__c ||
                startDate > cam.Lesson5Date_copy__c ||
                startDate > cam.Lesson6Date_copy__c ||
                startDate > cam.Lesson7Date_copy__c ||
                startDate > cam.Lesson8Date_copy__c ||
                startDate > cam.FinalExamDate_copy__c) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,
                                 '其他日期不能早于开班日期。'));
            return;
        }
        Date endDate = cam.Lesson8Date_copy__c;
        if (endDate == null) {
            endDate = cam.Lesson7Date_copy__c;
        }
        if (endDate == null) {
            endDate = cam.Lesson6Date_copy__c;
        }
        if (endDate == null) {
            endDate = cam.Lesson5Date_copy__c;
        }
        if (endDate == null) {
            endDate = cam.Lesson4Date_copy__c;
        }
        if (endDate == null) {
            endDate = cam.Lesson3Date_copy__c;
        }
        if (endDate == null) {
            endDate = cam.Lesson2Date_copy__c;
        }
        if (endDate == null) {
            endDate = cam.Lesson1Date_copy__c;
        }
        if (endDate != null && endDate > cam.FinalExamDate_copy__c) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,
                                 '最后考核日期不能早于最后一次授课日期'));
            return;
 
        }
 
        Savepoint  sp1 = Database.setSavepoint();
        try {
            cam.DateModifiedEmailContext__c = setUpEmailStr();
            if (cam.IsOpenCeremony__c != null && cam.IsOpenCeremony__c.equals('否')) {
 
                dateCopy();
                upsert cam;
            } else if (cam.IsOpenCeremony__c != null  && cam.IsOpenCeremony__c.equals('是')
                       &&  cam.CeremonyDate_copy__c != null) {
                dateCopy();
                upsert cam;
            } else {
                ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,
                                     '选择有开班仪式时请填写开班仪式时间!'));
                return;
            }
 
            Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest();
            psr.setObjectId(this.cam.id);
            Approval.ProcessResult apo = Approval.process(psr);
            //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.CONFIRM, '审批已提交'));
            submitResult = 'success';
        } catch (Exception ex2) {
            System.debug('异常:' + ex2.getMessage() + ' | Line:' + ex2.getLineNumber());
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex2.getMessage()));
            Database.rollback(sp1);
            return;
        }
        ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '审批已提交'));
 
 
    }
 
 
}