提交 | 用户 | age
|
385e2d
|
1 |
package com.yc.crm.mail.service; |
X |
2 |
|
|
3 |
import com.yc.action.grid.GridUtils; |
7caeae
|
4 |
import com.yc.crm.mail.entity.*; |
385e2d
|
5 |
import com.yc.entity.AttachmentConfig; |
X |
6 |
import com.yc.entity.attachment.AttachmentEntity; |
|
7 |
import com.yc.sdk.shopping.service.imagedata.ShoppingImageDataIfc; |
7caeae
|
8 |
import com.yc.sdk.weixincp.util.UploadFiles; |
385e2d
|
9 |
import com.yc.service.BaseService; |
X |
10 |
import org.apache.commons.lang3.StringUtils; |
|
11 |
import org.springframework.beans.factory.annotation.Autowired; |
|
12 |
import org.springframework.jdbc.core.BeanPropertyRowMapper; |
|
13 |
import org.springframework.stereotype.Service; |
|
14 |
|
7caeae
|
15 |
import java.util.ArrayList; |
X |
16 |
import java.util.Arrays; |
|
17 |
import java.util.List; |
|
18 |
import java.util.Map; |
f5cc47
|
19 |
import java.util.stream.Collectors; |
385e2d
|
20 |
|
X |
21 |
/** |
|
22 |
* @BelongsProject: eCoWorksV3 |
|
23 |
* @BelongsPackage: com.yc.crm.mail.service |
|
24 |
* @author: xinyb |
|
25 |
* @CreateTime: 2024-08-06 09:57 |
|
26 |
* @Description: |
|
27 |
*/ |
|
28 |
@Service |
|
29 |
public class MailImpl extends BaseService implements MailIfc { |
|
30 |
@Autowired |
|
31 |
MailAccountIfc emailAccountIfc; |
|
32 |
@Autowired |
|
33 |
ShoppingImageDataIfc imgData; |
|
34 |
|
|
35 |
final static String shoppingImageServer = AttachmentConfig.get("attachment.server"); |
|
36 |
|
|
37 |
@Override |
|
38 |
public t482101HEntity saveReceivingMail(t482101HEntity m) { |
|
39 |
String sql = "set nocount on\n"; |
|
40 |
try { |
3c2c1b
|
41 |
if (StringUtils.isBlank(m.getDocCode())) { |
7cf738
|
42 |
sql += "declare @docCode varchar(50) ,@unid varchar(50),@fieldId varchar(100),@originalFileName varchar(100)," + |
X |
43 |
"@physicalFile varchar(50),@OriginalPicture varbinary(max) \n"; |
385e2d
|
44 |
sql += "exec sp_newdoccode 482101," + GridUtils.prossSqlParm(m.getUserCode()) + ",@docCode output \n"; |
f5cc47
|
45 |
sql += "insert into t482101H(companyId,companyName,formId,docCode,docdate,PeriodID,postCode,postname,mailType,sender,receiver," + |
7caeae
|
46 |
"cc,bcc,subject,userCode,userName,content,plain_text,messageId,read_flag,delete_flag,create_time,update_time,receive_time," + |
d8f4b9
|
47 |
"attach_flag,attachment_list) values "; |
385e2d
|
48 |
sql += "(" + GridUtils.prossSqlParm(m.getCompanyId()) + "," + GridUtils.prossSqlParm(m.getCompanyName()) + ",482101," + |
X |
49 |
"@docCode,convert(varchar(10),getdate(),120),convert(varchar(7),getdate(),120)," |
|
50 |
+ GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
|
51 |
+m.getMailType() + "," + GridUtils.prossSqlParm(m.getSender()) + "," + |
f4c162
|
52 |
GridUtils.prossSqlParm(StringUtils.join(m.getReceiver(), ",")) + "," + GridUtils.prossSqlParm(StringUtils.join(m.getCc(), ",")) + "," + |
X |
53 |
GridUtils.prossSqlParm(StringUtils.join(m.getBcc(), ",")) + "," + |
385e2d
|
54 |
GridUtils.prossSqlParm(m.getSubject()) + "," + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
7caeae
|
55 |
GridUtils.prossSqlParm(m.getContent()) + "," + GridUtils.prossSqlParm(m.getPlainText()) + "," + GridUtils.prossSqlParm(m.getMessageId()) + "," + |
d8f4b9
|
56 |
m.getReadFlag() + "," + m.getDeleteFlag() + ",getdate(),getdate()," + GridUtils.prossSqlParm(m.getReceiveTime()) + "," + m.getAttachFlag() + "," + |
7caeae
|
57 |
GridUtils.prossSqlParm(m.getAttachmentList()) + ") \n" + |
X |
58 |
mailFileSql(m.getMailFile()); |
385e2d
|
59 |
sql += "select @docCode as docCode"; |
X |
60 |
String docCode = jdbcTemplate.queryForObject(sql, String.class); |
|
61 |
if (StringUtils.isNotBlank(docCode)) { |
|
62 |
m.setDocCode(docCode); |
|
63 |
} |
3c2c1b
|
64 |
} else { |
385e2d
|
65 |
updateReceivingMail(m);//修改 |
X |
66 |
} |
|
67 |
return m; |
|
68 |
} catch (Exception e) { |
|
69 |
throw e; |
|
70 |
} |
|
71 |
} |
|
72 |
|
|
73 |
@Override |
|
74 |
public void saveReceivingMailList(List<t482101HEntity> mail) { |
|
75 |
String sql = "set nocount on\n"; |
|
76 |
try { |
7caeae
|
77 |
sql += "declare @docCode varchar(50) ,@unid varchar(50),@fieldId varchar(100),@originalFileName varchar(100)," + |
7cf738
|
78 |
"@physicalFile varchar(50),@OriginalPicture varbinary(max) \n"; |
385e2d
|
79 |
for (t482101HEntity m : mail) {//遍历内容 |
X |
80 |
sql += "exec sp_newdoccode 482101," + GridUtils.prossSqlParm(m.getUserCode()) + ",@docCode output \n"; |
f5cc47
|
81 |
sql += "insert into t482101H(companyId,companyName,formId,docCode,docdate,PeriodID,postCode,postname,mailType,sender,receiver," + |
7caeae
|
82 |
"cc,bcc,subject,userCode,userName,content,plain_text,messageId,read_flag,delete_flag,create_time,update_time,receive_time," + |
d8f4b9
|
83 |
"attach_flag,attachment_list) values "; |
385e2d
|
84 |
sql += "(" + GridUtils.prossSqlParm(m.getCompanyId()) + "," + GridUtils.prossSqlParm(m.getCompanyName()) + ",482101," + |
X |
85 |
"@docCode,convert(varchar(10),getdate(),120),convert(varchar(7),getdate(),120)," |
|
86 |
+ GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
|
87 |
+m.getMailType() + "," + GridUtils.prossSqlParm(m.getSender()) + "," + |
f4c162
|
88 |
GridUtils.prossSqlParm(StringUtils.join(m.getReceiver(), ",")) + "," + GridUtils.prossSqlParm(StringUtils.join(m.getCc(), ",")) + "," + |
X |
89 |
GridUtils.prossSqlParm(StringUtils.join(m.getBcc(), ",")) + "," + |
385e2d
|
90 |
GridUtils.prossSqlParm(m.getSubject()) + "," + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," + |
7caeae
|
91 |
GridUtils.prossSqlParm(m.getContent()) + "," + GridUtils.prossSqlParm(m.getPlainText()) + "," + GridUtils.prossSqlParm(m.getMessageId()) + "," + |
f4c162
|
92 |
m.getReadFlag() + "," + m.getDeleteFlag() + ",getdate(),getdate()," + GridUtils.prossSqlParm(m.getReceiveTime()) + "," + |
7caeae
|
93 |
m.getAttachFlag() + "," + GridUtils.prossSqlParm(m.getAttachmentList()) + ") \n" + |
X |
94 |
mailFileSql(m.getMailFile()); |
385e2d
|
95 |
} |
X |
96 |
jdbcTemplate.update(sql); |
|
97 |
} catch (Exception e) { |
|
98 |
throw e; |
7caeae
|
99 |
} |
X |
100 |
} |
|
101 |
|
|
102 |
/** |
|
103 |
* 邮件附件的处理 |
|
104 |
* |
|
105 |
* @param mailFile |
|
106 |
* @return |
|
107 |
*/ |
|
108 |
private String mailFileSql(MailFileEntity mailFile) { |
|
109 |
if (mailFile == null) {//附件保存 |
|
110 |
return ""; |
|
111 |
} |
|
112 |
String sql = ""; |
|
113 |
String originalFileName = ""; |
|
114 |
String fileType = ""; |
|
115 |
try { |
|
116 |
for (MailFileEntity.MailBodyPart file : mailFile.getPart()) { |
|
117 |
originalFileName = file.getFileName(); |
|
118 |
fileType = file.getFileType(); |
|
119 |
sql += "select @unid=" + GridUtils.prossSqlParm(mailFile.getUnId()) + "\n" + |
7cf738
|
120 |
",@fieldId=" + GridUtils.prossSqlParm(file.getFieldId()) + "\n" + |
7caeae
|
121 |
",@originalFileName=" + GridUtils.prossSqlParm(originalFileName) + "\n" + |
7cf738
|
122 |
",@physicalFile=" + GridUtils.prossSqlParm(file.getPhysicalFile()) + "\n" + |
7caeae
|
123 |
",@OriginalPicture=" + UploadFiles.byteToHexString(file.getByteFile()) + "\n"; |
X |
124 |
sql += "insert into _sys_Attachment(unId,formId,docCode,fieldId,physicalFile,originalFileName,FileSize,fileType,UploadTime,LastUpdateTime,OriginalPicture) values "; |
7cf738
|
125 |
sql += " (@unid,482101,@docCode,@fieldId,@physicalFile,@originalFileName," + file.getFileSize() + "," + GridUtils.prossSqlParm(fileType) + ",getdate(),getdate(),@OriginalPicture) \n"; |
7caeae
|
126 |
} |
X |
127 |
return sql; |
|
128 |
} catch (Exception e) { |
|
129 |
return ""; |
385e2d
|
130 |
} |
X |
131 |
} |
|
132 |
|
|
133 |
@Override |
|
134 |
public Integer updateReceivingMail(t482101HEntity mail) { |
|
135 |
String sql = "set nocount on\n"; |
|
136 |
try { |
f4c162
|
137 |
sql += "update t482101H set sender=" + GridUtils.prossSqlParm(mail.getSender()) + ",receiver=" + GridUtils.prossSqlParm(StringUtils.join(mail.getReceiver(), ",")) + "," + |
X |
138 |
"cc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getCc(), ",")) + ",bcc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getBcc(), ",")) + ",subject=" + GridUtils.prossSqlParm(mail.getSubject()) + "," + |
7caeae
|
139 |
"content=" + GridUtils.prossSqlParm(mail.getContent()) + ",attachment_list=" + GridUtils.prossSqlParm(mail.getAttachmentList()) + ",mailType=" + mail.getMailType() + "," + |
f4c162
|
140 |
"update_time=getdate() \n"; |
5b1a4a
|
141 |
sql += " where docCode=" + GridUtils.prossSqlParm(mail.getDocCode()) + "\n"; |
428443
|
142 |
sql += "select @@ROWCOUNT"; |
X |
143 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
f4c162
|
144 |
} catch (Exception e) { |
X |
145 |
throw e; |
|
146 |
} |
|
147 |
} |
|
148 |
|
|
149 |
@Override |
|
150 |
public Integer updateDeleteFlag(String userCode, String docCode) { |
|
151 |
String sql = "set nocount on\n"; |
|
152 |
try { |
|
153 |
sql += "declare @docCode varchar(200) ='" + docCode + "' \n"; |
|
154 |
sql += "update t482101H deleteFlag=1 where userCode =" + GridUtils.prossSqlParm(userCode) + |
|
155 |
" and docCode in (select list from GetInStr(@docCode))\n";//标记删除 |
5b1a4a
|
156 |
sql += " select @@ROWCOUNT"; |
428443
|
157 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
385e2d
|
158 |
} catch (Exception e) { |
X |
159 |
throw e; |
|
160 |
} |
|
161 |
} |
|
162 |
|
|
163 |
@Override |
5b1a4a
|
164 |
public Integer deleteEmail(String userCode, String docCode) { |
385e2d
|
165 |
String sql = "set nocount on\n"; |
X |
166 |
try { |
f4c162
|
167 |
sql += "declare @docCode varchar(200) ='" + docCode + "' \n"; |
X |
168 |
sql += "delete t482101H where userCode =" + GridUtils.prossSqlParm(userCode) + |
|
169 |
" and docCode in (select list from GetInStr(@docCode))\n";//标记删除 |
5b1a4a
|
170 |
sql += " select @@ROWCOUNT"; |
428443
|
171 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
f5cc47
|
172 |
} catch (Exception e) { |
X |
173 |
throw e; |
|
174 |
} |
|
175 |
} |
|
176 |
|
|
177 |
@Override |
5b1a4a
|
178 |
public Integer deleteEmail(String messageId) { |
f5cc47
|
179 |
String sql = "set nocount on\n"; |
X |
180 |
try { |
f4c162
|
181 |
sql += "declare @messageId varchar(200) ='" + messageId + "' \n"; |
X |
182 |
sql += "delete t482101H where messageId in (select list from GetInStr(@messageId))\n";//删除 |
5b1a4a
|
183 |
sql += " select @@ROWCOUNT"; |
428443
|
184 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
385e2d
|
185 |
} catch (Exception e) { |
X |
186 |
throw e; |
|
187 |
} |
|
188 |
} |
|
189 |
|
|
190 |
@Override |
f4c162
|
191 |
public t482101HEntity getReceivingMailInfo(String docCode) { |
385e2d
|
192 |
String sql = "set nocount on\n"; |
X |
193 |
try { |
5b1a4a
|
194 |
sql += "select top 1 DocCode,companyId,companyName,sender,receiver,mailType,subject,content,plain_text,file_unid as fileUNID,messageId," + |
X |
195 |
"read_flag,delete_flag,attach_flag,urgent_flag,receipt_flag,track_flag,userCode,userName,create_time,update_time," + |
|
196 |
"send_status,receive_time,sign_id,attachment_list,remark,remark,DocVersion from t482101H " + |
f4c162
|
197 |
"where docCode=" + GridUtils.prossSqlParm(docCode); |
385e2d
|
198 |
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HEntity.class)).get(0); |
X |
199 |
} catch (Exception e) { |
|
200 |
throw e; |
|
201 |
} |
|
202 |
} |
|
203 |
|
|
204 |
@Override |
5b1a4a
|
205 |
public List<t482101HList> getReceivingMailList(String email, Integer mailType, boolean isNoRead, String userCode) { |
385e2d
|
206 |
String sql = "set nocount on\n"; |
X |
207 |
try { |
428443
|
208 |
sql += "select companyId,companyName,mailType,DocCode,sender,receiver,subject,plain_text," + |
X |
209 |
"receive_time,update_time,create_time,sender,userCode,userName,folder_id,delete_Flag, " + |
7cf738
|
210 |
"read_Flag,(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle," + |
X |
211 |
"handle_time from t482101H "; |
5b1a4a
|
212 |
sql += " where userCode=" + GridUtils.prossSqlParm(userCode); |
X |
213 |
sql += " and mailType=" + mailType;//0:草稿箱 1:收件箱 2:发件箱 |
|
214 |
if (StringUtils.isNotBlank(email)) { |
|
215 |
if (mailType == 1) { |
|
216 |
sql += " and receiver like '%" + email + "%'"; |
|
217 |
} else if (mailType == 2) { |
|
218 |
sql += " and sender =" + GridUtils.prossSqlParm(email); |
|
219 |
} |
7cf738
|
220 |
} |
X |
221 |
if (isNoRead) {//0表示未读,1表示已读 |
|
222 |
sql += " and isnull(read_flag,0) = 0"; |
385e2d
|
223 |
} |
d8f4b9
|
224 |
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HList.class)); |
X |
225 |
} catch (Exception e) { |
|
226 |
throw e; |
|
227 |
} |
|
228 |
} |
|
229 |
|
|
230 |
@Override |
|
231 |
public List<t482101HList> getUserMailList(String userCode) { |
|
232 |
String sql = " set nocount on \n"; |
|
233 |
try { |
7cf738
|
234 |
sql = "select a.DocCode,isnull(a.mailType,0) as mailType,isnull(a.read_flag,0) as read_flag,a.sender,a.receiver, " + |
X |
235 |
"(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle " + |
|
236 |
" from t482101H a where a.userCode=" + GridUtils.prossSqlParm(userCode) + " order by a.mailType"; |
428443
|
237 |
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HList.class)); |
385e2d
|
238 |
} catch (Exception e) { |
X |
239 |
throw e; |
|
240 |
} |
|
241 |
} |
|
242 |
|
|
243 |
|
|
244 |
@Override |
|
245 |
public Integer updateMailDrafts(t482101HEntity mail) { |
|
246 |
String sql = "set nocount on\n"; |
|
247 |
try { |
f4c162
|
248 |
sql += "update t482101H set sender=" + GridUtils.prossSqlParm(mail.getSender()) + ",receiver=" + GridUtils.prossSqlParm(StringUtils.join(mail.getReceiver(), ",")) + "," + |
f6ae0b
|
249 |
"cc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getCc(), ",")) + ",bcc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getBcc(), ",")) + "," + |
X |
250 |
"subject=" + GridUtils.prossSqlParm(mail.getSubject()) + ",messageId=" + GridUtils.prossSqlParm(mail.getMessageId()) + "," + |
7caeae
|
251 |
"content=" + GridUtils.prossSqlParm(mail.getContent()) + ",attachment_list=" + GridUtils.prossSqlParm(mail.getAttachmentList()) + ",mailType=" + mail.getMailType() + "," + |
6a63e2
|
252 |
"update_time=getdate() \n"; |
385e2d
|
253 |
sql += " where docCode=" + GridUtils.prossSqlParm(mail.getDocCode()); |
5b1a4a
|
254 |
sql += " select @@ROWCOUNT"; |
428443
|
255 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
385e2d
|
256 |
} catch (Exception e) { |
X |
257 |
throw e; |
|
258 |
} |
|
259 |
} |
|
260 |
|
7caeae
|
261 |
@Override |
X |
262 |
public void saveAttachment(List<MailFileEntity> mailFile) { |
385e2d
|
263 |
try { |
f5cc47
|
264 |
|
385e2d
|
265 |
} catch (Exception e) { |
X |
266 |
throw e; |
|
267 |
} |
|
268 |
} |
|
269 |
|
3c2c1b
|
270 |
|
X |
271 |
@Override |
|
272 |
public List<AttachmentEntity> getAttachmentEntityList(String unIdSeq) { |
|
273 |
String unId = null; |
|
274 |
if (StringUtils.isBlank(unIdSeq)) { |
|
275 |
return null; |
|
276 |
} |
|
277 |
String[] array = unIdSeq.split(";"); |
|
278 |
unId = array[0];//在有值时候第一个必定是unId |
f6ae0b
|
279 |
ArrayList<String> fieldId = new ArrayList<>(Arrays.asList(array)); |
X |
280 |
fieldId.remove(0);//去掉第一个元素(UNID) |
3c2c1b
|
281 |
String sql = " set nocount on \n" |
f6ae0b
|
282 |
+ " declare @unid varchar(50) = " + GridUtils.prossSqlParm(unId) + |
X |
283 |
",@fieldid varchar(1000) = " + GridUtils.prossSqlParm(StringUtils.join(fieldId, ",")) + " \n"; |
|
284 |
|
3c2c1b
|
285 |
sql += " select UNID,seq,DocCode,RowId,FieldId,FormId, \n" |
X |
286 |
+ " PhysicalPath,PhysicalFile,OriginalFileName,FileSize,FileType, \n" |
|
287 |
+ " AuthorCode,AuthorName,SmallPicPath,UploadTime,OriginalPicture \n" |
|
288 |
+ " from _sys_Attachment \n" |
f5cc47
|
289 |
+ " where unid = @unid "; |
f6ae0b
|
290 |
if (fieldId.size() > 0) { |
X |
291 |
sql += " and (fieldid in(select list from GetInStr(@fieldid)) or seq in(select list from GetInStr(@fieldid)))\n"; |
3c2c1b
|
292 |
} |
X |
293 |
List<Map<String, Object>> list = this.jdbcTemplate.queryForList(sql); |
|
294 |
List<AttachmentEntity> attachmentList = new ArrayList<AttachmentEntity>(); |
|
295 |
for (int i = 0; list != null && i < list.size(); i++) { |
|
296 |
AttachmentEntity attachment = new AttachmentEntity(); |
|
297 |
attachment.setOriginalFileName(list.get(i).get("OriginalFileName") == null ? null : (String) list.get(i).get("OriginalFileName")); |
|
298 |
//附件处理 |
|
299 |
attachment.setOriginalPicture(list.get(i).get("OriginalPicture") == null ? null : (byte[]) list.get(i).get("OriginalPicture")); |
|
300 |
attachmentList.add(attachment); |
|
301 |
} |
|
302 |
return attachmentList; |
7caeae
|
303 |
} |
X |
304 |
|
|
305 |
@Override |
|
306 |
public Integer deleteAttachment(List<String> unId) { |
|
307 |
try { |
|
308 |
if (unId == null || unId.size() == 0) { |
|
309 |
return 0; |
|
310 |
} |
|
311 |
String sql = " set nocount on \n" |
|
312 |
+ " declare @unid varchar(4000) = '" + StringUtils.join(unId, ",") + "' \n"; |
|
313 |
sql += "delete _sys_Attachment where unid in (select list from GetInStr(@unid)) \n"; |
|
314 |
sql += "select @@ROWCOUNT"; |
|
315 |
return jdbcTemplate.queryForObject(sql, Integer.class); |
|
316 |
} catch (Exception e) { |
|
317 |
throw e; |
|
318 |
} |
3c2c1b
|
319 |
} |
f5cc47
|
320 |
|
X |
321 |
@Override |
|
322 |
public List<String> getMessageIdList(String receiver) { |
|
323 |
List<String> messageId = null; |
|
324 |
String sql = " set nocount on \n"; |
|
325 |
try { |
|
326 |
sql += "select messageId from t482101H where receiver='" + receiver + "'"; |
|
327 |
List<t482101HEntity> message = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HEntity.class)); |
|
328 |
if (message != null && message.size() > 0) { |
|
329 |
messageId = new ArrayList<>(); |
|
330 |
messageId = message.stream().map(t482101HEntity::getMessageId).distinct().collect(Collectors.toList());//去重 |
|
331 |
} |
|
332 |
return messageId; |
|
333 |
} catch (Exception e) { |
|
334 |
throw e; |
|
335 |
} |
|
336 |
} |
f4c162
|
337 |
|
X |
338 |
@Override |
7cf738
|
339 |
public void updateRead(String docCode, boolean status) { |
f4c162
|
340 |
String sql = " set nocount on \n"; |
X |
341 |
try { |
5b1a4a
|
342 |
sql += "declare @docCode varchar(200) ='" + docCode + "' \n"; |
7cf738
|
343 |
sql += "update t482101H set read_flag=" + (status ? 1 : 0) + " where docCode in (select list from GetInStr(@docCode))\n"; |
f4c162
|
344 |
sql += "select @@ROWCOUNT"; |
X |
345 |
jdbcTemplate.queryForObject(sql, Integer.class); |
|
346 |
} catch (Exception e) { |
|
347 |
throw e; |
|
348 |
} |
|
349 |
} |
d8f4b9
|
350 |
|
X |
351 |
@Override |
|
352 |
public List<MailModuleEntity> getMailModuleList(String userCode) { |
|
353 |
List<MailModuleEntity> module = MailModuleEntity.setMailInitial(); |
|
354 |
try { |
877259
|
355 |
List<T482102Entity> account = emailAccountIfc.getAccount(userCode);//获取这个账号绑定的邮箱 |
d8f4b9
|
356 |
List<t482101HList> userMail = getUserMailList(userCode); |
X |
357 |
for (MailModuleEntity m : module) { |
|
358 |
List<t482101HList> mailTypeList = null; |
|
359 |
int mailType = m.getMailType();//类型 |
|
360 |
switch (mailType) { |
|
361 |
case 0://草稿箱 |
|
362 |
case 1://收件箱 |
|
363 |
case 2://发件箱 |
|
364 |
if (mailType == 0) { |
877259
|
365 |
m.setChildren(new ArrayList<>()); |
d8f4b9
|
366 |
if (userMail.size() > 0) { |
X |
367 |
m.setTotal((int) userMail.stream().filter(s -> s.getMailType().equals(mailType)).count()); |
|
368 |
} |
|
369 |
} else { |
|
370 |
List<MailModuleEntity.MailCode> codeList = new ArrayList<>(); |
|
371 |
MailModuleEntity.MailCode code = new MailModuleEntity.MailCode(); |
877259
|
372 |
code.setKey(mailType == 1 ? "InboxPage1" : "IndexPage1"); |
d8f4b9
|
373 |
code.setMailType(mailType); |
X |
374 |
code.setMailName(mailType == 1 ? "全部收件" : "全部发件"); |
|
375 |
codeList.add(code); |
|
376 |
if (account.size() == 0) {//没有直接跳过 |
877259
|
377 |
m.setChildren(codeList); |
d8f4b9
|
378 |
continue; |
X |
379 |
} |
|
380 |
int allCount = 0; |
|
381 |
int count = 0; |
7caeae
|
382 |
for (T482102Entity a : account) { |
d8f4b9
|
383 |
MailModuleEntity.MailCode nextCode = new MailModuleEntity.MailCode(); |
6a63e2
|
384 |
String eMail = (mailType == 1 ? a.getReceiveEmail() : a.getSmtpEmail());//获取邮箱账号 |
7caeae
|
385 |
nextCode.setKey(mailType == 1 ? "receiver" : "sender"); |
6a63e2
|
386 |
nextCode.setMailName(eMail); |
d8f4b9
|
387 |
nextCode.setMailType(m.getMailType()); |
7cf738
|
388 |
// if (userMail.size() > 0) { |
X |
389 |
// count = (mailType == 1 ? (int) userMail.stream().filter(s -> s.getMailType().equals(mailType) && s.getReceiver().contains(eMail)).count() : |
|
390 |
// (int) userMail.stream().filter(s -> s.getMailType().equals(mailType) && s.getSender().contains(eMail)).count()); |
|
391 |
// nextCode.setTotal(count); |
|
392 |
// } |
|
393 |
if (mailType == 1) {//是收件箱,统计未读数量 |
|
394 |
count = (int) userMail.stream().filter(s -> s.getMailType().equals(mailType) && s.getReceiver().contains(eMail) && s.getReadFlag().equals(0)).count(); |
d8f4b9
|
395 |
nextCode.setTotal(count); |
X |
396 |
} |
|
397 |
codeList.add(nextCode); |
|
398 |
allCount = (allCount + count); |
|
399 |
} |
|
400 |
codeList.get(0).setTotal(allCount); |
|
401 |
m.setTotal(allCount); |
877259
|
402 |
m.setChildren(codeList); |
d8f4b9
|
403 |
} |
X |
404 |
break; |
|
405 |
case 3://待处理邮件 |
877259
|
406 |
m.setChildren(new ArrayList<>()); |
d8f4b9
|
407 |
if (userMail.size() > 0) { |
7cf738
|
408 |
m.setTotal((int) userMail.stream().filter(s -> s.getHandle().equals(1)).count()); |
d8f4b9
|
409 |
} |
X |
410 |
break; |
|
411 |
case 4://未读邮件 |
877259
|
412 |
m.setChildren(new ArrayList<>()); |
d8f4b9
|
413 |
if (userMail.size() > 0) { |
7cf738
|
414 |
m.setTotal((int) userMail.stream().filter(s -> s.getReadFlag().equals(0)).count()); |
d8f4b9
|
415 |
} |
X |
416 |
break; |
|
417 |
case 5://群邮箱 |
877259
|
418 |
m.setChildren(new ArrayList<>()); |
d8f4b9
|
419 |
break; |
X |
420 |
default: |
|
421 |
break; |
|
422 |
} |
|
423 |
} |
|
424 |
return module; |
|
425 |
} catch (Exception e) { |
|
426 |
throw e; |
|
427 |
} |
|
428 |
} |
7cf738
|
429 |
|
X |
430 |
@Override |
|
431 |
public void updateMailHandle(String handleTime, String docCode) { |
|
432 |
String sql = " set nocount on \n"; |
|
433 |
try { |
|
434 |
sql += "declare @docCode varchar(200) ='" + docCode + "' \n"; |
|
435 |
sql += "update t482101H set handle_time=" + (StringUtils.isBlank(handleTime) ? "null" : GridUtils.prossSqlParm(handleTime)) + |
|
436 |
" where docCode = @docCode\n"; |
|
437 |
sql += "select @@ROWCOUNT"; |
|
438 |
jdbcTemplate.queryForObject(sql, Integer.class); |
|
439 |
} catch (Exception e) { |
|
440 |
throw e; |
|
441 |
} |
|
442 |
} |
385e2d
|
443 |
} |