buli
2022-05-14 ead4df22dca33a867279471821ca675f91dec760
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
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
public without sharing class TradeCustomerManagerController {
 
    public String orderId{get;set;}
    public String id{get;set;}
    public String saveYes{get;set;}
    public TradeCustomerManager__c trade{get;set;}
    public Order order{get;set;}
    public List<Attachment> fileList{get;set;}
    public List<Attachment> fileListNew{get;set;}
    public List<Attachment> militaryFileList{get;set;}
    public List<Attachment> personalFileList{get;set;}
    public Integer personalListSize{get;set;}
    public Integer militaryListSize{get;set;}
    public String errorMessage{get;set;}
    public String fileIdDelete{get;set;}
    public String fileIdSee{get;set;}
    public String sendType{get;set;}
    public Boolean isOnClick{get;set;}
    public String oppLink{get;set;}
    public String oppCode{get;set;}
    public String baseUrl{get;set;}
    public String isdeleteFile{get;set;}
 
    public TradeCustomerManagerController() {
        //获取url中携带的参数
        orderId = System.currentPageReference().getParameters().get('orderId');
        id = System.currentPageReference().getParameters().get('id');
    }
    public TradeCustomerManagerController(ApexPages.StandardController stdController) {
        //获取url中携带的参数
        orderId = System.currentPageReference().getParameters().get('orderId');
        id = System.currentPageReference().getParameters().get('id');
    }
 
    public void init() {
        baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
        String path = URL.getCurrentRequestUrl().getPath();
        if (path.indexOf('/apex') > 0) {
            baseUrl += path.substring(0,path.indexOf('/apex'));
        } else if (path.indexOf('production/') > 0) {
            baseUrl += '/production';
        }
        saveYes = '';
        isOnClick = false;
        fileList = new List<Attachment>();
        personalFileList = new List<Attachment>();
        militaryFileList = new List<Attachment>();
        fileListNew = new List<Attachment>();
        trade = new TradeCustomerManager__c();
        if(id != null){
            //如果Id不为null 根据Id初始化TradeCustomerManager__c
            trade = [select Id,useNo__c,userNo__c,placeNo__c,productNo__c,useYes__c,userYes__c,placeYes__c,productYes__c,DealerId__c,
                        customerInfoIsUpdate__c,studyDirection__c,endUser__c,model__c,PCmodel__c,contractNum__c,PCcontractNum__c,oppId__c,
                        isAloneCustomer__c,isPC__c,isAlone__c,isHaveLink__c,peopleLink__c,opportunity__c,militaryLink__c,companyLink__c,oppCodeLink__c,
                        application__c,work__c,watchObject__c,order__c,buyTo__c,OrderIdSave__c,remark__c,isFuelNo__c,isFuelYes__c,productSegment__c from TradeCustomerManager__c 
                        where Id=:id];
            order = [select Id,EndUserD__c,applicationForm__c,ProductSegment__c,tradeCustomerApplay__c,ApproveStatus__c,DealerId__c from Order where Id =:trade.OrderIdSave__c];
            fileList = [select Id,Name,CreatedDate,BodyLength,Body,CreatedById,ParentId from Attachment where ParentId =:id];
            for(Attachment att :fileList){
                if(att.Name.startsWith('个人信息')){
                    personalFileList.add(att);
                }else if (att.Name.startsWith('军事')) {
                    militaryFileList.add(att);
                } else{
                    fileListNew.add(att);
                }
            }
        }
        if(orderId!=null){
            //点击新建申请表,查询TradeCustomerManager__c  判断此合同下是否有已经创建的申请表
            order = [select Id,EndUserD__c,applicationForm__c,ProductSegment__c,tradeCustomerApplay__c,ApproveStatus__c,DealerId__c from Order where Id =:orderId];
            List<TradeCustomerManager__c> tradeIsHaveList = [select Id,useNo__c,userNo__c,placeNo__c,productNo__c,useYes__c,userYes__c,placeYes__c,productYes__c,
                        customerInfoIsUpdate__c,studyDirection__c,endUser__c,model__c,PCmodel__c,contractNum__c,PCcontractNum__c,oppId__c,DealerId__c,
                        isAloneCustomer__c,isPC__c,isAlone__c,isHaveLink__c,peopleLink__c,opportunity__c,militaryLink__c,companyLink__c,
                        application__c,work__c,watchObject__c,order__c,buyTo__c,OrderIdSave__c,remark__c,isFuelNo__c,isFuelYes__c,productSegment__c,oppCodeLink__c from TradeCustomerManager__c 
                        where order__c=:orderId];
            System.debug(tradeIsHaveList.size());
            if(tradeIsHaveList != null && tradeIsHaveList.size()!=0){
                trade = tradeIsHaveList[0];
                fileList = [select Id,Name,CreatedDate,BodyLength,Body,CreatedById from Attachment where ParentId =:trade.Id];
                for(Attachment att :fileList){
                    if(att.Name.startsWith('个人信息')){
                        personalFileList.add(att);
                    }else if (att.Name.startsWith('军事')) {
                        militaryFileList.add(att);
                    }else{
                        fileListNew.add(att);
                    }
                }
            }
            trade.endUser__c = order.EndUserD__c;
            trade.productSegment__c = order.ProductSegment__c;
            trade.OrderIdSave__c = orderId;
            trade.DealerId__c = order.DealerId__c;
        }
 
        personalListSize = personalFileList.size();
        militaryListSize = militaryFileList.size();
        
        if(String.isNotBlank(trade.Id)){
            sendType = 'init';
            send();
        }
        System.debug('ApproveStatus__c:'+order.ApproveStatus__c);
        //检查合同  合同为提交状态 申请表不允许操作
        if(order.ApproveStatus__c == 'OrderPass' || order.ApproveStatus__c == 'OrderSubmit'){
            isOnClick = true;
        }
    }
    // 保存申请表,必填项验证,更新合同中的申请表是否有效的标记
    public void send(){
        //a 是否通过必填验证标志
        Boolean a = true;
        errorMessage = '1'; 
        List<String> strList = new List<String>();
        //必填项验证
        trade.Name = '贸易管理悬念客户(B类)申请表';
        if(trade.isAloneCustomer__c == '是' && (trade.customerInfoIsUpdate__c == null || String.isBlank(trade.oppCodeLink__c))){
            strList.add('重复客户选择是,客户是否有更新、已被审核通过的询价必填;');
            a = false;
        } else if(trade.isAloneCustomer__c == null){
            strList.add('是、否重复客户必须选择一个;');
            a = false;
        }
        if(trade.work__c == null){
            strList.add('职务必填;');
            a = false;
        }
        if(trade.watchObject__c == null){
            strList.add('观察对象必填;');
            a = false;
        }
        if((trade.productSegment__c == 'IE' || trade.productSegment__c == 'RVI') && trade.application__c == null){
            strList.add('工业部门提交,应用领域必填;');
            a = false;
        }
        if(trade.isHaveLink__c == '是' && trade.peopleLink__c==null){
            strList.add('用户是否有个人网址选择是,个人网址链接信息必填;');
            a = false;
        } else if(trade.isHaveLink__c == '否' && trade.companyLink__c == null){
            strList.add('用户是否有个人网址选择否,所在单位网址必填;');
            a = false;
        } else if(trade.isHaveLink__c == null){
            strList.add('用户是、否有个人网址必须选择一个;');
            a = false;
        }
        if(trade.isAlone__c == '是' && (trade.model__c == null || trade.contractNum__c == null)){
            strList.add('是否单独部品采购选择是,对应IF YES,主机型号、IF YES,主机合同号必填;');
            a = false;
        } else if(trade.isAlone__c == null){
            strList.add('是、否单独部品采购必须选择一个;');
            a = false;
        }
        /*if(trade.isPC__c == '是' && (trade.PCmodel__c == null || trade.PCcontractNum__c == null)){
            strList.add('是否PC/显示器采购选择是,对应IF YES,主机型号、IF YES,主机合同号必填;');
            a = false;
        }*/
        if(trade.militaryLink__c == null){
            strList.add('使用者的军用关联web检索链接必填;');
            a = false;
        }
        if ((trade.useYes__c || trade.userYes__c || trade.placeYes__c || trade.productYes__c || trade.isFuelYes__c) && (trade.remark__c == null || trade.remark__c == '确认项目有任何一项选yes,备注必填')) {
            strList.add('确认项目有任何一项选yes,备注必填;');
            trade.remark__c = '';
            a = false;
        }else{
            if(trade.remark__c == '确认项目有任何一项选yes,备注必填'){
                trade.remark__c = '';
            }
        }
        if(militaryFileList.size()!=0){
            Integer i = 0;
            for(Attachment att:militaryFileList){
                if(att.Name.startsWith('军事')){
                    i++;
                    break;
                }
            }
            if(i == 0){
                strList.add('附件命名规则:军事+询价号+使用者个人信息,必须上传军事关联web检索PDF文件;');
                a = false;
            }
        }else{
            strList.add('附件命名规则:军事+询价号+使用者个人信息,必须上传军事关联web检索PDF文件;');
            a = false;
        }
        if(trade.isHaveLink__c == '是'){
            if(personalFileList.size()!=null && personalFileList.size()!=0){
                Integer i = 0;
                for(Attachment att:personalFileList){
                    if(att.Name.startsWith('个人信息')){
                        i++;
                        break;
                    }
                }
                if(i == 0){
                    strList.add('附件命名规则:个人信息+询价号+使用者个人信息,用户是否有个人网址选择是,必须上传个人网址PDF文件;');
                    a = false;
                }
            }else{
                strList.add('附件命名规则:个人信息+询价号+使用者个人信息,用户是否有个人网址选择是,必须上传个人网址PDF文件;');
                a = false;
            }
        }
        trade.order__c = trade.OrderIdSave__c;
        System.debug(sendType);
        if(strList!=null && strList.size()!=0){
            errorMessage = '';
            for(String str:strList){
                errorMessage += str + '-';
            }
        }
        if(sendType != 'init'){
            upsert trade;
        }
        System.debug(a);
        System.debug(order.applicationForm__c);
        if(a != order.applicationForm__c || (errorMessage!= '1' && order.tradeCustomerApplay__c != errorMessage)){
            order.applicationForm__c = a;
            order.tradeCustomerApplay__c = errorMessage;
            update order;
        }
        if(a && sendType=='send'){
            saveYes = '保存成功!';
        }else{
            saveYes = '';
        }
        return;
    }
    public PageReference uploadFile(){
        sendType = 'uploadFile';
        send();
        String b = trade.Id;
        if(b != null && b != ''){
            PageReference ref = new Pagereference('/p/attach/NoteAttach?pid=' + trade.Id + '&retURL=%2Fapex/TradeCustomerManager?id='+trade.Id);
            ref.setRedirect(true);
            return ref;
        }
        return null;
    }
 
    public void deleteFile(){
        isdeleteFile = 'YES';
        if(fileIdDelete!=null && fileIdDelete !=''){
            for(Integer i=0 ; i<fileListNew.size() ; i++){
                if(fileListNew[i].Id == fileIdDelete){
                    TradeCustomerManager__c tra = [select Id,order__c,isHaveLink__c from TradeCustomerManager__c where Id =: fileListNew[i].ParentId];
                    if(tra!=null){
                        Order order = [select Id,applicationForm__c,ApproveStatus__c from Order where id=:tra.order__c];
                        if(order!=null){
                            if(order.ApproveStatus__c == 'OrderPass' || order.ApproveStatus__c == 'OrderSubmit'){
                                isdeleteFile = 'NO';
                                return;
                            }
                        }
                    }
                    delete fileListNew[i];
                    fileListNew.remove(i);
                    return;
                }
            }
        }
    }
    
    public PageReference deleteForm(){
        if(String.isNotBlank(trade.Id)){
            PageReference ref = new Pagereference('/'+trade.OrderIdSave__c);
            delete trade;
            order.applicationForm__c = false;
            update order;
            //ref.setRedirect(true);
            return ref;
        }else{
            errorMessage = '申请表没有保存!';
        }
        return null;
    }
 
    public PageReference seeFile(){
         System.debug('fileIdSee:'+fileIdSee);
        if(fileIdSee!=null && fileIdSee !=''){
            PageReference ref = new Pagereference('/'+fileIdSee);
            //ref.setRedirect(true);
            return ref;
        }
        return null;
    } 
 
    public PageReference returnOrder(){
        /*sendType = 'send';
        send();*/
        PageReference ref = new Pagereference('/'+trade.OrderIdSave__c);
        ref.setRedirect(true);
        return ref;
    } 
 
    public void getOppCode(){
        
    }
}