diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java index 84479260..feacde94 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java @@ -130,4 +130,16 @@ public class ProjectCommon { * 催款提醒 */ public final static String ALERT8 = "8"; + /** + * 1短信 2邮件 3系统 + */ + public final static String MESSAGE_TYPE1 = "1"; + /** + * 1短信 2邮件 3系统 + */ + public final static String MESSAGE_TYPE2 = "2"; + /** + * 1短信 2邮件 3系统 + */ + public final static String MESSAGE_TYPE3 = "3"; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/dto/SendMessageDTO.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/dto/SendMessageDTO.java index 64a6a7bb..413c0b1e 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/dto/SendMessageDTO.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/dto/SendMessageDTO.java @@ -12,18 +12,6 @@ import java.util.HashMap; */ @Data public class SendMessageDTO implements Serializable { - /** - * 发送短信设置true - */ - private boolean sendSMS; - /** - * 发送消息设置true - */ - private boolean sendMessage; - /** - * 发送email设置true - */ - private boolean sendEmail; /** * 发送人(用户登录账户) */ @@ -40,10 +28,6 @@ public class SendMessageDTO implements Serializable { * 邮箱地址(发送邮箱必传) */ private String email; - /** - * 消息主题 - */ - private String title; /** * 业务类型 */ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/ContractCreateProjectSendMessageService.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/ContractCreateProjectSendMessageService.java new file mode 100644 index 00000000..692c380e --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/ContractCreateProjectSendMessageService.java @@ -0,0 +1,13 @@ +package com.jero.common.service; + +public interface ContractCreateProjectSendMessageService { + /** + * @Description 合同创建项目发送消息,通知项目负责人 + * @Author lqt + * @Date 2021/9/24 + * @Param projectName 项目名称 + * @Return + * @Exception + */ + void ContractCreateProjectSendMessageService(String projectName); +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/ContractCreateProjectSendMessageServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/ContractCreateProjectSendMessageServiceImpl.java new file mode 100644 index 00000000..8ecfc01e --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/ContractCreateProjectSendMessageServiceImpl.java @@ -0,0 +1,55 @@ +package com.jero.common.service.impl; + +import com.jero.common.common.ProjectCommon; +import com.jero.common.common.RoleCommon; +import com.jero.common.dto.SendMessageDTO; +import com.jero.common.enums.CompanyMessageEnums; +import com.jero.common.service.ContractCreateProjectSendMessageService; +import com.jero.common.service.SendMessageService; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.PasswordUtil; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +@Service +public class ContractCreateProjectSendMessageServiceImpl implements ContractCreateProjectSendMessageService { + + @Autowired + private ISysUserService sysUserService; + @Autowired + private SendMessageService sendMessageService; + + @Override + public void ContractCreateProjectSendMessageService(String projectName) { + // 获取项目负责人,发送消息 + List list = sysUserService.getRolesUser(Arrays.asList(RoleCommon.XMFZR)); + if(!CollectionUtils.isEmpty(list)){ + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + list.forEach(p->{ + // 发送消息 + SendMessageDTO sendMessageDTO = new SendMessageDTO(); + if(!StringUtils.isBlank(p.getEmail())){ + sendMessageDTO.setEmail(PasswordUtil.decrypt(p.getEmail())); + } + HashMap map = new HashMap<>(); + map.put("projectName",projectName); + sendMessageDTO.setFromUser(sysUser.getId()); + sendMessageDTO.setToUser(p.getUsername()); + sendMessageDTO.setTemplateCode(CompanyMessageEnums.MSG11.getCode()); + sendMessageDTO.setTemplateParam(map); + sendMessageDTO.setBusType("email"); + sendMessageDTO.setBusId(p.getId()); + sendMessageService.SendMessageService(sendMessageDTO); + }); + } + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java index 1e4fadab..810cdc27 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java @@ -1,21 +1,47 @@ package com.jero.common.service.impl; -import com.jero.common.api.dto.message.BusTemplateMessageDTO; +import com.alibaba.fastjson.JSONObject; +import com.jero.common.common.ProjectCommon; +import com.jero.common.constant.CommonConstant; +import com.jero.common.constant.WebsocketConst; import com.jero.common.dto.SendMessageDTO; -import com.jero.common.enums.CompanyMessageEnums; +import com.jero.common.exception.JeroBootException; import com.jero.common.service.SendMessageService; import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.util.SysAnnmentTypeEnum; +import com.jero.common.util.oConvertUtils; +import com.jero.modules.message.entity.SysMessageTemplate; +import com.jero.modules.message.handle.impl.EmailSendMsgHandle; +import com.jero.modules.message.service.ISysMessageTemplateService; +import com.jero.modules.message.websocket.WebSocket; +import com.jero.modules.system.entity.SysAnnouncement; +import com.jero.modules.system.entity.SysAnnouncementSend; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysAnnouncementSendService; +import com.jero.modules.system.service.ISysAnnouncementService; +import com.jero.modules.system.service.ISysUserService; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; -import java.util.Objects; +import javax.annotation.Resource; +import java.util.*; + @Service public class SendMessageServiceImpl implements SendMessageService { @Autowired private ISysBaseAPI sysBaseAPI; @Autowired - private Environment env; + private ISysMessageTemplateService sysMessageTemplateService; + @Resource + private ISysAnnouncementService sysAnnouncementService; + @Resource + private ISysUserService sysUserService; + @Resource + private ISysAnnouncementSendService sysAnnouncementSendService; + @Resource + private WebSocket webSocket; /** * 超时时间 */ @@ -28,26 +54,87 @@ public class SendMessageServiceImpl implements SendMessageService { @Override public void SendMessageService(SendMessageDTO sendMessageDTO) { + if(StringUtils.isEmpty(sendMessageDTO.getTemplateCode())){ + throw new JeroBootException("模板编码不能为空!"); + } + List sysSmsTemplates = sysMessageTemplateService.selectByCode(sendMessageDTO.getTemplateCode()); + if(CollectionUtils.isEmpty(sysSmsTemplates)){ + throw new JeroBootException("消息模板不能为空!"); + } + SysMessageTemplate sysSmsTemplate = sysSmsTemplates.get(0); + // 没有选项,不发送消息 + String templateType = sysSmsTemplate.getTemplateType(); + if(StringUtils.isBlank(templateType)){ + return; + } + //模板标题 + String title = sysBaseAPI.translateDict("notice_type",sysSmsTemplate.getTemplateName()); + //模板内容 + String content = sysSmsTemplate.getTemplateContent(); + HashMap map = sendMessageDTO.getTemplateParam(); + if(!Objects.isNull(map)) { + for (Map.Entry entry : map.entrySet()) { + String str = "${" + entry.getKey() + "}"; + content = content.replace(str, entry.getValue()); + } + } + + // 1短信 2邮件 3系统 // 发送邮件 true - if(sendMessageDTO.isSendEmail()){ - sysBaseAPI.sendEmailTemplateMsg(sendMessageDTO.getEmail(), sendMessageDTO.getTitle(), sendMessageDTO.getTemplateCode(),sendMessageDTO.getTemplateParam()); + if(templateType.contains(ProjectCommon.MESSAGE_TYPE2) && !StringUtils.isEmpty(sendMessageDTO.getEmail())){ + EmailSendMsgHandle emailHandle = new EmailSendMsgHandle(); + emailHandle.SendMsg(sendMessageDTO.getEmail(), title, content); } // 发送消息 - if(sendMessageDTO.isSendMessage()){ - BusTemplateMessageDTO busTemplateMessageDTO = new BusTemplateMessageDTO(); - busTemplateMessageDTO.setTitle(sendMessageDTO.getTitle()); - busTemplateMessageDTO.setFromUser(sendMessageDTO.getFromUser()); - busTemplateMessageDTO.setToUser(sendMessageDTO.getToUser()); - busTemplateMessageDTO.setTemplateCode(sendMessageDTO.getTemplateCode()); - busTemplateMessageDTO.setTemplateParam(sendMessageDTO.getTemplateParam()); - busTemplateMessageDTO.setBusType(sendMessageDTO.getBusType()); - busTemplateMessageDTO.setBusId(sendMessageDTO.getBusId()); - // 发送消息 - sysBaseAPI.sendBusTemplateAnnouncement(busTemplateMessageDTO); + if(templateType.contains(ProjectCommon.MESSAGE_TYPE3) && !StringUtils.isEmpty(sendMessageDTO.getToUser())){ + String fromUser = sendMessageDTO.getFromUser(); + String toUser = sendMessageDTO.getToUser(); + String busId = sendMessageDTO.getBusId(); + String busType = sendMessageDTO.getBusType(); + + SysAnnouncement announcement = new SysAnnouncement(); + announcement.setTitile(title); + announcement.setMsgContent(content); + announcement.setSender(fromUser); + announcement.setPriority(CommonConstant.PRIORITY_M); + announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); + announcement.setSendStatus(CommonConstant.HAS_SEND); + announcement.setSendTime(new Date()); + announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2); + announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); + announcement.setBusId(busId); + announcement.setBusType(busType); + announcement.setOpenType(SysAnnmentTypeEnum.getByType(busType).getOpenType()); + announcement.setOpenPage(SysAnnmentTypeEnum.getByType(busType).getOpenPage()); + announcement.setTemplateCode(sendMessageDTO.getTemplateCode()); + sysAnnouncementService.save(announcement); + // 2.插入用户通告阅读标记表记录 + String userId = toUser; + String[] userIds = userId.split(","); + String anntId = announcement.getId(); + for(int i=0;i map = new HashMap<>(); map.put("projectName",payWorkingGroup.getWorkingGroupProject()); - // 发送消息 - SendMessageDTO sendMessageDTO = new SendMessageDTO(); - sendMessageDTO.setSendEmail(true); - sendMessageDTO.setSendMessage(true); - sendMessageDTO.setSendSMS(true); - sendMessageDTO.setTitle(ProjectCommon.ALERT8); sendMessageDTO.setFromUser(sysUser.getId()); - sendMessageDTO.setToUser(PasswordUtil.decrypt(listContactsInfo.get(0).getPhone())); - sendMessageDTO.setPhone(PasswordUtil.decrypt(listContactsInfo.get(0).getPhone())); - sendMessageDTO.setEmail(PasswordUtil.decrypt(listContactsInfo.get(0).getEmail())); sendMessageDTO.setTemplateCode(CompanyMessageEnums.MSG11.getCode()); sendMessageDTO.setTemplateParam(map); sendMessageDTO.setBusType("email"); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java index 471c7f38..979dc22f 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/entity/PayWorkingGroupSubItem.java @@ -201,4 +201,11 @@ public class PayWorkingGroupSubItem implements Serializable { /**会议id*/ @TableField(exist = false) private java.lang.String meetingId; + + /** + * 收入合同处新增标识 flag = 1 + */ + @TableField(exist = false) + @ApiModelProperty(value = "收入合同处新增标识 flag = 1") + private String flag; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java index 682617e8..bb1ec480 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java @@ -11,6 +11,7 @@ import com.jero.common.dto.SendMessageDTO; import com.jero.common.enums.CompanyMessageEnums; import com.jero.common.enums.ManagementMessageEnums; import com.jero.common.exception.JeroBootException; +import com.jero.common.service.ContractCreateProjectSendMessageService; import com.jero.common.service.ProjectDetailService; import com.jero.common.service.SendMessageService; import com.jero.common.system.vo.LoginUser; @@ -83,7 +84,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl list = sysUserService.getRolesUser(Arrays.asList(RoleCommon.XMFZR)); - if(!CollectionUtils.isEmpty(list)){ - list.forEach(p->{ - if(StringUtils.isBlank(p.getEmail())){ - return; - } - HashMap map = new HashMap<>(); - map.put("projectName",payCommonProject.getChargeProject()); - // 发送消息 - SendMessageDTO sendMessageDTO = new SendMessageDTO(); - sendMessageDTO.setSendEmail(true); - sendMessageDTO.setSendMessage(true); - sendMessageDTO.setSendSMS(true); - sendMessageDTO.setTitle(ProjectCommon.ALERT1); - sendMessageDTO.setFromUser(sysUser.getId()); - sendMessageDTO.setToUser(p.getUsername()); - sendMessageDTO.setPhone(PasswordUtil.decrypt(p.getPhone())); - sendMessageDTO.setEmail(PasswordUtil.decrypt(p.getEmail())); - sendMessageDTO.setTemplateCode(CompanyMessageEnums.MSG11.getCode()); - sendMessageDTO.setTemplateParam(map); - sendMessageDTO.setBusType("email"); - sendMessageDTO.setBusId(p.getId()); - sendMessageService.SendMessageService(sendMessageDTO); - }); - } + contractCreateProjectSendMessageService.ContractCreateProjectSendMessageService(payCommonProject.getChargeProject()); } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java index 8417b2bc..f32c2862 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java @@ -5,8 +5,15 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; +import com.jero.common.common.ProjectCommon; +import com.jero.common.common.RoleCommon; +import com.jero.common.dto.SendMessageDTO; +import com.jero.common.enums.CompanyMessageEnums; import com.jero.common.exception.JeroBootException; +import com.jero.common.service.ContractCreateProjectSendMessageService; import com.jero.common.service.ProjectDetailService; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.PasswordUtil; import com.jero.common.util.ValidUtil; import com.jero.common.vo.ProjectStatusVO; import com.jero.company.entity.PayCompanyManagement; @@ -19,6 +26,7 @@ import com.jero.contract.service.IPayIncomeContractAssociatedService; import com.jero.contract.service.IPayIncomeContractService; import com.jero.meeting.entity.PayMeetingRemindRecord; import com.jero.meeting.service.IPayMeetingRemindRecordService; +import com.jero.modules.system.entity.SysUser; import com.jero.pack.entity.PayPackCompanyProject; import com.jero.pack.service.IPayPackCompanyProjectService; import com.jero.project.common.PayProjectCommon; @@ -36,6 +44,7 @@ import com.jero.temporary.service.IPayContactsManagementTemporaryService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.jeecgframework.poi.excel.ExcelImportCheckUtil; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ImportParams; @@ -85,6 +94,8 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl