xinyb
3 天以前 3b74e3df72726e188d36393ecfd7964d095ef7e8
提交 | 用户 | age
385e2d 1 package com.yc.crm.mail.service;
X 2
3 import com.yc.action.grid.GridUtils;
b7ef4b 4 import com.yc.crm.base.entity.T482115Entity;
658898 5 import com.yc.crm.mail.action.MailFolder;
b7ef4b 6 import com.yc.crm.mail.action.MailTag;
7caeae 7 import com.yc.crm.mail.entity.*;
385e2d 8 import com.yc.entity.AttachmentConfig;
X 9 import com.yc.sdk.shopping.service.imagedata.ShoppingImageDataIfc;
7caeae 10 import com.yc.sdk.weixincp.util.UploadFiles;
385e2d 11 import com.yc.service.BaseService;
X 12 import org.apache.commons.lang3.StringUtils;
13 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.jdbc.core.BeanPropertyRowMapper;
15 import org.springframework.stereotype.Service;
048b74 16 import org.springframework.transaction.annotation.Transactional;
385e2d 17
7caeae 18 import java.util.ArrayList;
X 19 import java.util.List;
f5cc47 20 import java.util.stream.Collectors;
385e2d 21
X 22 /**
23  * @BelongsProject: eCoWorksV3
24  * @BelongsPackage: com.yc.crm.mail.service
25  * @author: xinyb
26  * @CreateTime: 2024-08-06  09:57
27  * @Description:
28  */
29 @Service
30 public class MailImpl extends BaseService implements MailIfc {
31     @Autowired
32     MailAccountIfc emailAccountIfc;
33     @Autowired
34     ShoppingImageDataIfc imgData;
658898 35     @Autowired
X 36     MailTagIfc mailTagIfc;
37     @Autowired
38     MailFolderIfc mailFolderIfc;
385e2d 39
X 40     final static String shoppingImageServer = AttachmentConfig.get("attachment.server");
ad7c8d 41
048b74 42     @Transactional(rollbackFor = Exception.class)
385e2d 43     @Override
X 44     public t482101HEntity saveReceivingMail(t482101HEntity m) {
45         String sql = "set nocount on\n";
46         try {
3c2c1b 47             if (StringUtils.isBlank(m.getDocCode())) {
7cf738 48                 sql += "declare @docCode varchar(50) ,@unid varchar(50),@fieldId varchar(100),@originalFileName varchar(100)," +
X 49                         "@physicalFile varchar(50),@OriginalPicture varbinary(max) \n";
385e2d 50                 sql += "exec sp_newdoccode 482101," + GridUtils.prossSqlParm(m.getUserCode()) + ",@docCode output \n";
53241c 51                 sql += "insert into t482101H(companyId,companyName,formId,docCode,docdate,PeriodID,postCode,postname,mailType,senderName,sender,sender_time,receiver,receiving_time," +
57c8bf 52                         "cc,bcc,subject,userCode,userName,content,plain_text,messageId,read_flag,delete_flag,create_time,update_time," +//receive_time
d8f4b9 53                         "attach_flag,attachment_list) values ";
385e2d 54                 sql += "(" + GridUtils.prossSqlParm(m.getCompanyId()) + "," + GridUtils.prossSqlParm(m.getCompanyName()) + ",482101," +
X 55                         "@docCode,convert(varchar(10),getdate(),120),convert(varchar(7),getdate(),120),"
56                         + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," +
53241c 57                         +m.getMailType() + "," + GridUtils.prossSqlParm(m.getSenderName()) + "," + GridUtils.prossSqlParm(m.getSender()) + "," + GridUtils.prossSqlParm(m.getSenderTime()) + "," +
X 58                         GridUtils.prossSqlParm(StringUtils.join(m.getReceiver(), ",")) + "," + GridUtils.prossSqlParm(m.getReceivingTime()) + "," + GridUtils.prossSqlParm(StringUtils.join(m.getCc(), ",")) + "," +
f4c162 59                         GridUtils.prossSqlParm(StringUtils.join(m.getBcc(), ",")) + "," +
385e2d 60                         GridUtils.prossSqlParm(m.getSubject()) + "," + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," +
7caeae 61                         GridUtils.prossSqlParm(m.getContent()) + "," + GridUtils.prossSqlParm(m.getPlainText()) + "," + GridUtils.prossSqlParm(m.getMessageId()) + "," +
57c8bf 62                         m.getReadFlag() + "," + m.getDeleteFlag() + ",getdate(),getdate()," + m.getAttachFlag() + "," + GridUtils.prossSqlParm(m.getAttachmentList()) + ") \n" +
7caeae 63                         mailFileSql(m.getMailFile());
385e2d 64                 sql += "select @docCode as docCode";
X 65                 String docCode = jdbcTemplate.queryForObject(sql, String.class);
66                 if (StringUtils.isNotBlank(docCode)) {
67                     m.setDocCode(docCode);
68                 }
3c2c1b 69             } else {
385e2d 70                 updateReceivingMail(m);//修改
X 71             }
72             return m;
73         } catch (Exception e) {
74             throw e;
75         }
76     }
ad7c8d 77
048b74 78     @Transactional(rollbackFor = Exception.class)
385e2d 79     @Override
18553a 80     public String saveReceivingMailList(List<t482101HEntity> mail) {
385e2d 81         String sql = "set nocount on\n";
X 82         try {
18553a 83             sql += "declare @docCode varchar(50) ,@unid varchar(50),@fieldId varchar(100),@originalFileName varchar(100),@docCodeList varchar(3000)=''," +
7cf738 84                     "@physicalFile varchar(50),@OriginalPicture varbinary(max) \n";
385e2d 85             for (t482101HEntity m : mail) {//遍历内容
X 86                 sql += "exec sp_newdoccode 482101," + GridUtils.prossSqlParm(m.getUserCode()) + ",@docCode output \n";
18553a 87                 sql += " select @docCodeList=@docCodeList+@docCode+';'\n" +//返回单号
F 88                         "insert into t482101H(companyId,companyName,formId,docCode,docdate,PeriodID,postCode,postname,mailType,senderName,sender,sender_time,receiver,receiving_time," +
57c8bf 89                         "cc,bcc,subject,userCode,userName,content,plain_text,messageId,read_flag,delete_flag,create_time,update_time," +
d8f4b9 90                         "attach_flag,attachment_list) values ";
385e2d 91                 sql += "(" + GridUtils.prossSqlParm(m.getCompanyId()) + "," + GridUtils.prossSqlParm(m.getCompanyName()) + ",482101," +
X 92                         "@docCode,convert(varchar(10),getdate(),120),convert(varchar(7),getdate(),120),"
93                         + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," +
53241c 94                         +m.getMailType() + "," + GridUtils.prossSqlParm(m.getSenderName()) + "," + GridUtils.prossSqlParm(m.getSender()) + "," + GridUtils.prossSqlParm(m.getSenderTime()) + "," +
X 95                         GridUtils.prossSqlParm(StringUtils.join(m.getReceiver(), ",")) + "," + GridUtils.prossSqlParm(m.getReceivingTime()) + "," + GridUtils.prossSqlParm(StringUtils.join(m.getCc(), ",")) + "," +
f4c162 96                         GridUtils.prossSqlParm(StringUtils.join(m.getBcc(), ",")) + "," +
385e2d 97                         GridUtils.prossSqlParm(m.getSubject()) + "," + GridUtils.prossSqlParm(m.getUserCode()) + "," + GridUtils.prossSqlParm(m.getUserName()) + "," +
7caeae 98                         GridUtils.prossSqlParm(m.getContent()) + "," + GridUtils.prossSqlParm(m.getPlainText()) + "," + GridUtils.prossSqlParm(m.getMessageId()) + "," +
57c8bf 99                         m.getReadFlag() + "," + m.getDeleteFlag() + ",getdate(),getdate()," + m.getAttachFlag() + "," + GridUtils.prossSqlParm(m.getAttachmentList()) + ") \n" +
7caeae 100                         mailFileSql(m.getMailFile());
385e2d 101             }
b7ef4b 102             return jdbcTemplate.queryForObject(sql + "\n select @docCodeList", String.class);
385e2d 103         } catch (Exception e) {
X 104             throw e;
7caeae 105         }
X 106     }
107
108     /**
109      * 邮件附件的处理
110      *
111      * @param mailFile
112      * @return
113      */
114     private String mailFileSql(MailFileEntity mailFile) {
115         if (mailFile == null) {//附件保存
116             return "";
117         }
118         String sql = "";
119         String originalFileName = "";
120         String fileType = "";
121         try {
122             for (MailFileEntity.MailBodyPart file : mailFile.getPart()) {
123                 originalFileName = file.getFileName();
124                 fileType = file.getFileType();
125                 sql += "select @unid=" + GridUtils.prossSqlParm(mailFile.getUnId()) + "\n" +
7cf738 126                         ",@fieldId=" + GridUtils.prossSqlParm(file.getFieldId()) + "\n" +
7caeae 127                         ",@originalFileName=" + GridUtils.prossSqlParm(originalFileName) + "\n" +
7cf738 128                         ",@physicalFile=" + GridUtils.prossSqlParm(file.getPhysicalFile()) + "\n" +
7caeae 129                         ",@OriginalPicture=" + UploadFiles.byteToHexString(file.getByteFile()) + "\n";
X 130                 sql += "insert into _sys_Attachment(unId,formId,docCode,fieldId,physicalFile,originalFileName,FileSize,fileType,UploadTime,LastUpdateTime,OriginalPicture) values ";
7cf738 131                 sql += " (@unid,482101,@docCode,@fieldId,@physicalFile,@originalFileName," + file.getFileSize() + "," + GridUtils.prossSqlParm(fileType) + ",getdate(),getdate(),@OriginalPicture) \n";
7caeae 132             }
X 133             return sql;
134         } catch (Exception e) {
135             return "";
385e2d 136         }
X 137     }
ad7c8d 138
048b74 139     @Transactional(rollbackFor = Exception.class)
385e2d 140     @Override
X 141     public Integer updateReceivingMail(t482101HEntity mail) {
142         String sql = "set nocount on\n";
143         try {
f4c162 144             sql += "update t482101H set sender=" + GridUtils.prossSqlParm(mail.getSender()) + ",receiver=" + GridUtils.prossSqlParm(StringUtils.join(mail.getReceiver(), ",")) + "," +
X 145                     "cc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getCc(), ",")) + ",bcc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getBcc(), ",")) + ",subject=" + GridUtils.prossSqlParm(mail.getSubject()) + "," +
7caeae 146                     "content=" + GridUtils.prossSqlParm(mail.getContent()) + ",attachment_list=" + GridUtils.prossSqlParm(mail.getAttachmentList()) + ",mailType=" + mail.getMailType() + "," +
f4c162 147                     "update_time=getdate() \n";
5b1a4a 148             sql += " where docCode=" + GridUtils.prossSqlParm(mail.getDocCode()) + "\n";
428443 149             sql += "select @@ROWCOUNT";
X 150             return jdbcTemplate.queryForObject(sql, Integer.class);
f4c162 151         } catch (Exception e) {
X 152             throw e;
153         }
154     }
ad7c8d 155
048b74 156     @Transactional(rollbackFor = Exception.class)
f4c162 157     @Override
X 158     public Integer updateDeleteFlag(String userCode, String docCode) {
159         String sql = "set nocount on\n";
160         try {
161             sql += "declare @docCode varchar(200) ='" + docCode + "' \n";
73c845 162             sql += "update t482101H set delete_flag=1 where userCode =" + GridUtils.prossSqlParm(userCode) +
f4c162 163                     " and docCode in (select list from GetInStr(@docCode))\n";//标记删除
5b1a4a 164             sql += " select @@ROWCOUNT";
428443 165             return jdbcTemplate.queryForObject(sql, Integer.class);
385e2d 166         } catch (Exception e) {
X 167             throw e;
168         }
169     }
ad7c8d 170
048b74 171     @Transactional(rollbackFor = Exception.class)
385e2d 172     @Override
5b1a4a 173     public Integer deleteEmail(String userCode, String docCode) {
385e2d 174         String sql = "set nocount on\n";
X 175         try {
f4c162 176             sql += "declare @docCode varchar(200) ='" + docCode + "' \n";
73c845 177             sql += "update t482101H set delete_flag=1 where userCode =" + GridUtils.prossSqlParm(userCode) +
f4c162 178                     " and docCode in (select list from GetInStr(@docCode))\n";//标记删除
5b1a4a 179             sql += " select @@ROWCOUNT";
428443 180             return jdbcTemplate.queryForObject(sql, Integer.class);
f5cc47 181         } catch (Exception e) {
X 182             throw e;
183         }
184     }
185
186     @Override
5b1a4a 187     public Integer deleteEmail(String messageId) {
f5cc47 188         String sql = "set nocount on\n";
X 189         try {
f4c162 190             sql += "declare @messageId varchar(200) ='" + messageId + "' \n";
b7ef4b 191             sql += " delete t482101H where messageId in (select list from GetInStr(@messageId))\n";//删除
5b1a4a 192             sql += " select @@ROWCOUNT";
428443 193             return jdbcTemplate.queryForObject(sql, Integer.class);
385e2d 194         } catch (Exception e) {
X 195             throw e;
196         }
197     }
198
199     @Override
f4c162 200     public t482101HEntity getReceivingMailInfo(String docCode) {
385e2d 201         String sql = "set nocount on\n";
X 202         try {
ad7c8d 203             sql += "select top 1 DocCode,companyId,companyName,senderName,senderName,sender,receiver,mailType,subject,content,plain_text,file_unid as fileUNID,messageId," +
5b1a4a 204                     "read_flag,delete_flag,attach_flag,urgent_flag,receipt_flag,track_flag,userCode,userName,create_time,update_time," +
658898 205                     "send_status,receive_time,sign_id,attachment_list,remark,remark,sender_time,receiving_time," +
ad7c8d 206                     "(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle,handle_time," +
X 207                     "DocVersion from t482101H " +
f4c162 208                     "where docCode=" + GridUtils.prossSqlParm(docCode);
385e2d 209             return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HEntity.class)).get(0);
X 210         } catch (Exception e) {
211             throw e;
212         }
213     }
214
215     @Override
195685 216     public List<t482101HList> getReceivingMailList(String email, Integer mailType, boolean isNoRead, String userCode, Integer page, Integer limit) {
385e2d 217         String sql = "set nocount on\n";
X 218         try {
ad7c8d 219             sql += "select companyId,companyName,mailType,DocCode,senderName,sender,receiver,subject,plain_text," +
658898 220                     "receive_time,update_time,create_time,senderName,sender,userCode,userName,folder_id,delete_Flag,attachment_list," +
7cf738 221                     "read_Flag,(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle," +
658898 222                     "handle_time,sender_time,receiving_time from t482101H ";
5b1a4a 223             sql += " where userCode=" + GridUtils.prossSqlParm(userCode);
73c845 224             sql += " and isnull(delete_Flag,0) = 0 ";//未删除的
5b1a4a 225             sql += " and mailType=" + mailType;//0:草稿箱 1:收件箱 2:发件箱
X 226             if (StringUtils.isNotBlank(email)) {
227                 if (mailType == 1) {
228                     sql += " and receiver like '%" + email + "%'";
229                 } else if (mailType == 2) {
230                     sql += " and sender =" + GridUtils.prossSqlParm(email);
231                 }
7cf738 232             }
X 233             if (isNoRead) {//0表示未读,1表示已读
234                 sql += " and isnull(read_flag,0) = 0";
385e2d 235             }
195685 236             sql += " order by docCode asc \n";
X 237             sql += " OFFSET (" + page + " - 1) * " + limit + " ROWS FETCH NEXT " + limit + " ROWS ONLY";
d8f4b9 238             return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HList.class));
X 239         } catch (Exception e) {
240             throw e;
241         }
242     }
243
244     @Override
195685 245     public List<t482101HList> getHandleMailList(String email, String userCode, Integer page, Integer limit) {
57c8bf 246         String sql = "set nocount on\n";
X 247         try {
248             sql += "select companyId,companyName,mailType,DocCode,senderName,sender,receiver,subject,plain_text," +
249                     "receive_time,update_time,create_time,senderName,sender,userCode,userName,folder_id,delete_Flag, " +
250                     "read_Flag,(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle," +
658898 251                     "handle_time,sender_time,receiving_time from t482101H ";
57c8bf 252             sql += " where isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()";
3b74e3 253             sql += " and userCode=" + GridUtils.prossSqlParm(userCode) ;//+ " and receiver like '%" + email + "%'";//不需要带邮箱地址
195685 254             sql += " order by docCode asc \n";
X 255             sql += " OFFSET (" + page + " - 1) * " + limit + " ROWS FETCH NEXT " + limit + " ROWS ONLY";
57c8bf 256             return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HList.class));
X 257         } catch (Exception e) {
258             throw e;
259         }
260     }
261
262     @Override
aad276 263     public List<t482101HList> getFolderMailList(String type, String userCode, Integer page, Integer limit) throws Exception {
X 264         String sql = "set nocount on\n";
265         try {
266             String[] id = type.split("_");
267             if (id.length != 2) {
268                 throw new Exception("邮件类型Id格式不正确");
269             }
270             sql += "select companyId,companyName,mailType,DocCode,senderName,sender,receiver,subject,plain_text," +
271                     "receive_time,update_time,create_time,senderName,sender,userCode,userName,folder_id,delete_Flag, " +
272                     "read_Flag,(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle," +
273                     "handle_time,sender_time,receiving_time from t482101H ";
274             sql += " where userCode=" + GridUtils.prossSqlParm(userCode) + " \n";
275             if (id[0].equals("folder")) {//是文件夹
276                 sql += " and folder_id=" + id[1] + " \n";
277             } else if (id[0].equals("tag")) {//是标签
278                 sql += " and tag_list like '%," + id[1] + ",%'";
279             }
280             sql += " order by docCode asc \n";
281             sql += " OFFSET (" + page + " - 1) * " + limit + " ROWS FETCH NEXT " + limit + " ROWS ONLY";
282             return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HList.class));
283         } catch (Exception e) {
284             throw e;
285         }
286     }
287
288     @Override
d8f4b9 289     public List<t482101HList> getUserMailList(String userCode) {
X 290         String sql = " set nocount on \n";
291         try {
7cf738 292             sql = "select a.DocCode,isnull(a.mailType,0) as mailType,isnull(a.read_flag,0) as read_flag,a.sender,a.receiver, " +
X 293                     "(case when (isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate()) then 1 else 0 end) as handle " +
294                     " from t482101H a where  a.userCode=" + GridUtils.prossSqlParm(userCode) + " order by a.mailType";
428443 295             return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HList.class));
385e2d 296         } catch (Exception e) {
X 297             throw e;
298         }
299     }
300
048b74 301     @Transactional(rollbackFor = Exception.class)
385e2d 302     @Override
X 303     public Integer updateMailDrafts(t482101HEntity mail) {
304         String sql = "set nocount on\n";
305         try {
f4c162 306             sql += "update t482101H set sender=" + GridUtils.prossSqlParm(mail.getSender()) + ",receiver=" + GridUtils.prossSqlParm(StringUtils.join(mail.getReceiver(), ",")) + "," +
f6ae0b 307                     "cc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getCc(), ",")) + ",bcc=" + GridUtils.prossSqlParm(StringUtils.join(mail.getBcc(), ",")) + "," +
X 308                     "subject=" + GridUtils.prossSqlParm(mail.getSubject()) + ",messageId=" + GridUtils.prossSqlParm(mail.getMessageId()) + "," +
7caeae 309                     "content=" + GridUtils.prossSqlParm(mail.getContent()) + ",attachment_list=" + GridUtils.prossSqlParm(mail.getAttachmentList()) + ",mailType=" + mail.getMailType() + "," +
6a63e2 310                     "update_time=getdate() \n";
385e2d 311             sql += " where docCode=" + GridUtils.prossSqlParm(mail.getDocCode());
5b1a4a 312             sql += " select @@ROWCOUNT";
7caeae 313             return jdbcTemplate.queryForObject(sql, Integer.class);
X 314         } catch (Exception e) {
315             throw e;
316         }
3c2c1b 317     }
f5cc47 318
X 319     @Override
320     public List<String> getMessageIdList(String receiver) {
321         List<String> messageId = null;
322         String sql = " set nocount on \n";
323         try {
324             sql += "select messageId from t482101H where receiver='" + receiver + "'";
325             List<t482101HEntity> message = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(t482101HEntity.class));
326             if (message != null && message.size() > 0) {
327                 messageId = new ArrayList<>();
328                 messageId = message.stream().map(t482101HEntity::getMessageId).distinct().collect(Collectors.toList());//去重
329             }
330             return messageId;
331         } catch (Exception e) {
332             throw e;
333         }
334     }
57c8bf 335
048b74 336     @Transactional(rollbackFor = Exception.class)
f4c162 337     @Override
7cf738 338     public void updateRead(String docCode, boolean status) {
f4c162 339         String sql = " set nocount on \n";
X 340         try {
3b74e3 341             sql += "declare @docCode varchar(1000) ='" + docCode + "' \n";
7cf738 342             sql += "update t482101H set read_flag=" + (status ? 1 : 0) + " where docCode in (select list from GetInStr(@docCode))\n";
aad276 343             sql += "select @@ROWCOUNT";
X 344             jdbcTemplate.queryForObject(sql, Integer.class);
345         } catch (Exception e) {
346             throw e;
347         }
348     }
349
350     @Override
351     public void updateMailType(String docCode, Integer folderId, String tagId) {
352         String sql = " set nocount on \n";
353         try {
354             boolean bol = false;
355             sql += "declare @docCode varchar(200) ='" + docCode + "' \n";
356             sql += "update t482101H set \n";
357             if (!folderId.equals(0)) {
358                 sql += " folder_id=" + folderId + "\n";
359                 bol = true;
360             }
361             if (StringUtils.isNotBlank(tagId)) {
362                 sql += (bol ? "," : "") + " tag_list='," + tagId + ",' \n";
363             }
364             sql += " where docCode in (select list from GetInStr(@docCode))\n";
f4c162 365             sql += "select @@ROWCOUNT";
X 366             jdbcTemplate.queryForObject(sql, Integer.class);
367         } catch (Exception e) {
368             throw e;
369         }
370     }
d8f4b9 371
X 372     @Override
373     public List<MailModuleEntity> getMailModuleList(String userCode) {
374         List<MailModuleEntity> module = MailModuleEntity.setMailInitial();
375         try {
877259 376             List<T482102Entity> account = emailAccountIfc.getAccount(userCode);//获取这个账号绑定的邮箱
d8f4b9 377             List<t482101HList> userMail = getUserMailList(userCode);
X 378             for (MailModuleEntity m : module) {
379                 List<t482101HList> mailTypeList = null;
380                 int mailType = m.getMailType();//类型
381                 switch (mailType) {
382                     case 0://草稿箱
383                     case 1://收件箱
384                     case 2://发件箱
385                         if (mailType == 0) {
877259 386                             m.setChildren(new ArrayList<>());
d8f4b9 387                             if (userMail.size() > 0) {
X 388                                 m.setTotal((int) userMail.stream().filter(s -> s.getMailType().equals(mailType)).count());
389                             }
390                         } else {
391                             List<MailModuleEntity.MailCode> codeList = new ArrayList<>();
392                             MailModuleEntity.MailCode code = new MailModuleEntity.MailCode();
877259 393                             code.setKey(mailType == 1 ? "InboxPage1" : "IndexPage1");
d8f4b9 394                             code.setMailType(mailType);
X 395                             code.setMailName(mailType == 1 ? "全部收件" : "全部发件");
396                             codeList.add(code);
397                             if (account.size() == 0) {//没有直接跳过
877259 398                                 m.setChildren(codeList);
d8f4b9 399                                 continue;
X 400                             }
401                             int allCount = 0;
402                             int count = 0;
7caeae 403                             for (T482102Entity a : account) {
d8f4b9 404                                 MailModuleEntity.MailCode nextCode = new MailModuleEntity.MailCode();
6a63e2 405                                 String eMail = (mailType == 1 ? a.getReceiveEmail() : a.getSmtpEmail());//获取邮箱账号
7caeae 406                                 nextCode.setKey(mailType == 1 ? "receiver" : "sender");
6a63e2 407                                 nextCode.setMailName(eMail);
d8f4b9 408                                 nextCode.setMailType(m.getMailType());
7cf738 409 //                                if (userMail.size() > 0) {
X 410 //                                    count = (mailType == 1 ? (int) userMail.stream().filter(s -> s.getMailType().equals(mailType) && s.getReceiver().contains(eMail)).count() :
411 //                                            (int) userMail.stream().filter(s -> s.getMailType().equals(mailType) && s.getSender().contains(eMail)).count());
412 //                                    nextCode.setTotal(count);
413 //                                }
414                                 if (mailType == 1) {//是收件箱,统计未读数量
415                                     count = (int) userMail.stream().filter(s -> s.getMailType().equals(mailType) && s.getReceiver().contains(eMail) && s.getReadFlag().equals(0)).count();
d8f4b9 416                                     nextCode.setTotal(count);
X 417                                 }
418                                 codeList.add(nextCode);
419                                 allCount = (allCount + count);
420                             }
421                             codeList.get(0).setTotal(allCount);
422                             m.setTotal(allCount);
877259 423                             m.setChildren(codeList);
d8f4b9 424                         }
X 425                         break;
426                     case 3://待处理邮件
877259 427                         m.setChildren(new ArrayList<>());
d8f4b9 428                         if (userMail.size() > 0) {
7cf738 429                             m.setTotal((int) userMail.stream().filter(s -> s.getHandle().equals(1)).count());
d8f4b9 430                         }
X 431                         break;
432                     case 4://未读邮件
877259 433                         m.setChildren(new ArrayList<>());
d8f4b9 434                         if (userMail.size() > 0) {
7cf738 435                             m.setTotal((int) userMail.stream().filter(s -> s.getReadFlag().equals(0)).count());
d8f4b9 436                         }
X 437                         break;
438                     case 5://群邮箱
877259 439                         m.setChildren(new ArrayList<>());
d8f4b9 440                         break;
X 441                     default:
442                         break;
443                 }
444             }
445             return module;
446         } catch (Exception e) {
447             throw e;
448         }
449     }
57c8bf 450
658898 451     @Override
X 452     public List<MailModuleBelowEntity> getMailModuleBelowList(String userCode) {
453         List<MailModuleBelowEntity> below = MailModuleBelowEntity.setMailInitial();
454         try {
455             for (MailModuleBelowEntity b : below) {
456                 String key = b.getKey();
457                 if (key.equals("moduleBelowA")) {//文件夹
b7ef4b 458                     List<T482107Entity> t482107 = mailFolderIfc.getMailFolder(userCode);
X 459                     b.setList(MailFolder.getFolderModule(t482107, ""));
658898 460                 }
X 461                 if (key.equals("moduleBelowB")) {//标签邮件
b7ef4b 462                     List<T482115Entity> tag = mailTagIfc.getTagList(userCode, "", -1);
X 463                     b.setList(MailTag.getTagModule(tag));
658898 464                 }
X 465                 if (key.equals("moduleBelowC")) {//显示更多
466                     List<MailModuleBelowEntity> CList = new ArrayList<>();
b7ef4b 467                     MailModuleBelowEntity delete = new MailModuleBelowEntity();
X 468                     delete.setKey("deleteMail");
469                     delete.setName("已删除邮件");
470                     CList.add(delete);
471                     MailModuleBelowEntity waste = new MailModuleBelowEntity();
472                     waste.setKey("wasteMail");
473                     waste.setName("垃圾邮件");
474                     CList.add(waste);
475                     MailModuleBelowEntity track = new MailModuleBelowEntity();
476                     track.setKey("trackMail");
477                     track.setName("追踪信息");
478                     CList.add(track);
479                     b.setList(CList);
658898 480                 }
X 481             }
482             return below;
483         } catch (Exception e) {
484             throw e;
485         }
486     }
487
048b74 488     @Transactional(rollbackFor = Exception.class)
7cf738 489     @Override
X 490     public void updateMailHandle(String handleTime, String docCode) {
491         String sql = " set nocount on \n";
492         try {
493             sql += "declare @docCode varchar(200) ='" + docCode + "' \n";
494             sql += "update t482101H set handle_time=" + (StringUtils.isBlank(handleTime) ? "null" : GridUtils.prossSqlParm(handleTime)) +
562e20 495                     " where docCode in (select list from GetInStr(@docCode))\n";
7cf738 496             sql += "select @@ROWCOUNT";
X 497             jdbcTemplate.queryForObject(sql, Integer.class);
498         } catch (Exception e) {
499             throw e;
500         }
501     }
0c7568 502
X 503     @Override
aad276 504     public Integer getMailTotal(String email, Integer mailType, boolean isNoRead, String id, String userCode) {
0c7568 505         String sql = "set nocount on\n";
X 506         try {
507             sql += "select count(*) from t482101H ";
508             sql += " where userCode=" + GridUtils.prossSqlParm(userCode);
3b74e3 509             sql += " and isnull(delete_Flag,0) = 0 ";//未删除的
0c7568 510             if (mailType < 3) {
X 511                 sql += " and mailType=" + mailType;//0:草稿箱 1:收件箱 2:发件箱
3b74e3 512             }
X 513             if (mailType == 3) {//待处理邮件
514                 sql += " and isnull(handle_time,'') <> '' and isnull(handle_time,'') < getdate() ";
0c7568 515             }
X 516             if (StringUtils.isNotBlank(email)) {
aad276 517                 if (mailType == 1) {
X 518                     sql += " and receiver like '%" + email + "%'";
0c7568 519                 } else if (mailType == 2) {
X 520                     sql += " and sender =" + GridUtils.prossSqlParm(email);
521                 }
522             }
523             if (isNoRead) {//0表示未读,1表示已读
524                 sql += " and isnull(read_flag,0) = 0";
525             }
aad276 526             if (StringUtils.isNotBlank(id)) {//文件夹
X 527                 String[] type = id.split("_");
528                 if (type.length == 2) {
529                     if (type[0].equals("folder")) {
530                         sql += " and folder_id=" + type[1];
531                     } else if (type[0].equals("tag")) {
532                         sql += " and tag_list like '%," + type[1] + ",%'";
533                     }
534                 }
535             }
0c7568 536             return jdbcTemplate.queryForObject(sql, Integer.class);
X 537         } catch (Exception e) {
538             return 0;
539         }
540     }
385e2d 541 }