add 会议发布提醒

This commit is contained in:
lijiarao
2021-09-26 16:51:10 +08:00
parent 3f3e09b3ae
commit c905e0b4da
6 changed files with 132 additions and 56 deletions
@@ -4,6 +4,8 @@ import com.jero.meeting.entity.PayMeetingRemindRecord;
import com.jero.meeting.mapper.PayMeetingRemindRecordMapper;
import com.jero.meeting.service.IPayMeetingRemindRecordService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -66,13 +68,15 @@ public class PayMeetingRemindRecordServiceImpl extends ServiceImpl<PayMeetingRem
@Override
public void addList(List<String> meetingIdList, List<String> subitemIdList) {
List<PayMeetingRemindRecord> payMeetingRemindRecordList = new ArrayList<>();
for (String meetingId : meetingIdList) {
PayMeetingRemindRecord payMeetingRemindRecord = new PayMeetingRemindRecord();
payMeetingRemindRecord.setMeetingId(meetingId);
for (String subitemId : subitemIdList) {
PayMeetingRemindRecord payMeetingRemindRecord = new PayMeetingRemindRecord();
payMeetingRemindRecord.setMeetingId(meetingId);
payMeetingRemindRecord.setSubitemId(subitemId);
this.save(payMeetingRemindRecord);
payMeetingRemindRecordList.add(payMeetingRemindRecord);
}
}
this.saveBatch(payMeetingRemindRecordList);
}
}
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.SendMessageService;
import com.jero.common.system.api.ISysBaseAPI;
@@ -12,6 +13,7 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayCompanyManagementService;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.data.entity.PayCaseCommittee;
import com.jero.data.service.IPayCaseCommitteeService;
@@ -77,6 +79,8 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
@Resource
private IPayWorkingGroupSubItemService payWorkingGroupSubItemService;
@Resource
private IPayCompanyManagementService payCompanyManagementService;
@Resource
private IPayContactsManagementService payContactsManagementService;
@Resource
private IPayCaseCommitteeService payCaseCommitteeService;
@@ -364,46 +368,56 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
@Override
public void publishReminder(List<String> meetingIds, List<String> subitemIds) {
List<PayWorkingGroupSubItem> payWorkingGroupSubItems = payWorkingGroupSubItemService.listByIds(subitemIds);
List<String> userIds = new ArrayList<>();
List<String> companyIds = new ArrayList<>();
//用于新增关联关系
List<String> meetingIdList = new ArrayList<>();
List<String> subitemIdList = new ArrayList<>();
//把单位会员中所有的联系人和有机联系人取出
for (PayWorkingGroupSubItem payWorkingGroupSubItem : payWorkingGroupSubItems) {
subitemIdList.add(payWorkingGroupSubItem.getId());
String contactsTemporaryIdOne = payWorkingGroupSubItem.getContactsTemporaryIdOne();
if (StrUtil.isNotBlank(contactsTemporaryIdOne)){
userIds.add(contactsTemporaryIdOne);
}
String contactsTemporaryIdTwo = payWorkingGroupSubItem.getContactsTemporaryIdTwo();
if (StrUtil.isNotBlank(contactsTemporaryIdTwo)){
userIds.add(contactsTemporaryIdTwo);
}
String contactsTemporaryIdThree = payWorkingGroupSubItem.getContactsTemporaryIdThree();
if (StrUtil.isNotBlank(contactsTemporaryIdThree)){
userIds.add(contactsTemporaryIdThree);
}
String mailContactsTemporaryId = payWorkingGroupSubItem.getMailContactsTemporaryId();
if (StrUtil.isNotBlank(mailContactsTemporaryId)){
userIds.add(mailContactsTemporaryId);
}
String companyId = payWorkingGroupSubItem.getChargeCompanyId();
companyIds.add(companyId);
}
//去重
userIds = userIds.stream().distinct().collect(Collectors.toList());
LambdaQueryWrapper<PayContactsManagement> wrapper = new LambdaQueryWrapper<>();
wrapper.in(PayContactsManagement::getId,userIds);
wrapper.in(PayContactsManagement::getCompanyId,companyIds);
List<PayContactsManagement> list = payContactsManagementService.list(wrapper);
for (PayContactsManagement payContactsManagement : list) {
//TODO 发送消息
}
//标记会议为已提醒
List<PayMeeting> payMeetings = listByIds(meetingIds);
for (PayMeeting payMeeting : payMeetings) {
meetingIdList.add(payMeeting.getId());
String meetingId = payMeeting.getId();
meetingIdList.add(meetingId);
payMeeting.setRemind(MeetingCommon.REMIND_1);
saveOrUpdate(payMeeting);
//发送消息
for (PayContactsManagement payContactsManagement : list) {
String directorId = payMeeting.getDirectorId();
LoginUser director = sysBaseApi.getUserById(directorId);
// 给企业联系人发送消息
String email = payContactsManagement.getEmail();
String phone = payContactsManagement.getPhone();
SendMessageDTO sendMessageDTO = new SendMessageDTO();
if (!StringUtils.isBlank(email)) {
if (StringUtils.isNotBlank(payMeeting.getNotice())){
sysBaseApi.sendEmailMsg(PasswordUtil.decrypt(email),"会议通知",payMeeting.getNotice());
}else {
sendMessageDTO.setEmail(PasswordUtil.decrypt(email));
}
}
if (!StringUtils.isBlank(phone)) {
sendMessageDTO.setToUser(PasswordUtil.decrypt(phone));
sendMessageDTO.setPhone(PasswordUtil.decrypt(phone));
}
HashMap<String, String> map = new HashMap<>();
sendMessageDTO.setFromUser(director.getUsername());
sendMessageDTO.setTemplateCode(CompanyMessageEnums.MSG1.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("C_OPEN_TYPE1");
sendMessageDTO.setBusId(meetingId);
sendMessageService.SendMessageService(sendMessageDTO);
}
}
payMeetingRemindRecordService.addList(meetingIdList,subitemIdList);
}
@@ -48,6 +48,7 @@ import com.jero.standards.memberinfo.service.IMemberInfoService;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import com.jero.util.ObjRecordUtil;
import com.jero.util.module.ObjRecordUtilModule;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull;
@@ -105,6 +106,8 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
@Resource
private ContractCreateProjectSendMessageService contractCreateProjectSendMessageService;
private static final String[] CAN_MODIFY_LIST = new String[]{"arrivalTime","departureTime","checkInHotel"};
/**
* 保存
*/
@@ -122,7 +125,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
// 收入合同创建项目发送消息到项目负责人
if (Objects.equals(ProjectCommon.FLAG, payMeetingSituation.getFlag())) {
PayMeeting payMeeting = meetingService.getById(payMeetingSituation.getMeetingId());
contractCreateProjectSendMessageService.ContractCreateProjectSendMessageService(payMeeting.getMeetingName() + "的" + payMeetingSituation.getCompanyName(),payMeetingSituation.getId());
contractCreateProjectSendMessageService.ContractCreateProjectSendMessageService(payMeeting.getMeetingName() + "的" + payMeetingSituation.getCompanyName(), payMeetingSituation.getId());
}
}
@@ -217,27 +220,51 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
payMeetingSituation1.setRegisterCheckResult(MeetingSubitemCommon.SIGNUP_STATUS_0);
}
}
String paymentRecord = payMeetingSituation1.getPaymentRecord();
Integer checkResult = payMeetingSituation1.getCheckResult();
//上传付款凭证并且审批结果不为通过发送邮件提醒审批
if (StringUtils.isNotBlank(paymentRecord) && !Objects.equals(checkResult, MeetingSubitemCommon.SIGNUP_STATUS_1)) {
String directorId = payMeeting.getDirectorId();
LoginUser director = iSysBaseApi.getUserById(directorId);
// 给负责人发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
if (!StringUtils.isBlank(director.getEmail())) {
sendMessageDTO.setEmail(PasswordUtil.decrypt(director.getEmail()));
}
if (!StringUtils.isBlank(director.getPhone())) {
sendMessageDTO.setToUser(director.getUsername());
//sendMessageDTO.setPhone(PasswordUtil.decrypt(director.getPhone()));
}
HashMap<String, String> map = new HashMap<>();
sendMessageDTO.setFromUser(director.getUsername());
sendMessageDTO.setTemplateCode(ManagementMessageEnums.MSG5.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("M_OPEN_TYPE5");
sendMessageDTO.setBusId(payMeetingSituation1.getId());
sendMessageService.SendMessageService(sendMessageDTO);
}
}
/**
* 判断发送哪种类型的消息
*
* @param payMeeting
* @param payMeetingSituation
* @param isSubItem 是否是组成员
* @param isSubItem 是否是组成员
*/
private void judgeSend(PayMeeting payMeeting, PayMeetingSituation payMeetingSituation, boolean isSubItem) {
//工作组成员
if (isSubItem) {
//不是汇款和线上缴费
if (payMeetingSituation.getPayMode().equals(MeetingSubitemCommon.PAY_MODE_3)){
sendMessage(payMeeting, payMeetingSituation,CompanyMessageEnums.MSG4,"C_OPEN_TYPE4");
if (payMeetingSituation.getPayMode().equals(MeetingSubitemCommon.PAY_MODE_3)) {
sendMessage(payMeeting, payMeetingSituation, CompanyMessageEnums.MSG4, "C_OPEN_TYPE4");
}
}else {
} else {
//不是汇款和线上缴费
if (payMeetingSituation.getPayMode().equals(MeetingSubitemCommon.PAY_MODE_3)){
sendMessage(payMeeting, payMeetingSituation,CompanyMessageEnums.MSG2,"C_OPEN_TYPE2");
}else {
sendMessage(payMeeting, payMeetingSituation,CompanyMessageEnums.MSG3,"C_OPEN_TYPE3");
if (payMeetingSituation.getPayMode().equals(MeetingSubitemCommon.PAY_MODE_3)) {
sendMessage(payMeeting, payMeetingSituation, CompanyMessageEnums.MSG2, "C_OPEN_TYPE2");
} else {
sendMessage(payMeeting, payMeetingSituation, CompanyMessageEnums.MSG3, "C_OPEN_TYPE3");
}
}
}
@@ -248,6 +275,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
* 既不是非成员单位,也不需要上传缴费凭证的直接发送发送消息 CompanyMessageEnums.MSG4
* 汇款凭证审核不通过 CompanyMessageEnums.MSG5
* 非成员单位审核通过且上传的缴费凭证审核通过也发送。(即需要审核的都审核通过才发送)CompanyMessageEnums.MSG6
*
* @param payMeetingSituation
* @author lijiarao
* @date 2021/9/24 17:51
@@ -304,7 +332,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
Integer checkResult = checkVO.getCheckResult();
if (checkResult.equals(MeetingSubitemCommon.SIGNUP_STATUS_2)) {
//汇款凭证审核不通过
sendMessage(payMeeting, payMeetingSituation,CompanyMessageEnums.MSG5,"C_OPEN_TYPE5");
sendMessage(payMeeting, payMeetingSituation, CompanyMessageEnums.MSG5, "C_OPEN_TYPE5");
} else {
//设置到账
@@ -323,7 +351,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
//添加来款
payPaymentRecordService.addAmountReceived(payPaymentRecords);
//非成员单位审核通过且上传的缴费凭证审核通过也发送。(即需要审核的都审核通过才发送)
sendMessage(payMeeting, payMeetingSituation,CompanyMessageEnums.MSG6,"C_OPEN_TYPE6");
sendMessage(payMeeting, payMeetingSituation, CompanyMessageEnums.MSG6, "C_OPEN_TYPE6");
}
}
@@ -501,17 +529,20 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
PayMeetingSituation payMeetingSituation1 = getPayMeetingSituation(payMeetingSituation);
//判断是否修改付款凭证
Integer checkResult = oldObject.getCheckResult();
if (Objects.equals(checkResult,MeetingSubitemCommon.SIGNUP_STATUS_1)){
String paymentRecord = oldObject.getPaymentRecord();
String paymentRecord1 = payMeetingSituation1.getPaymentRecord();
if (!Objects.equals(paymentRecord,paymentRecord1)){
throw new JeroBootException("审核通过之后不允许修改付款凭证");
if (Objects.equals(checkResult, MeetingSubitemCommon.SIGNUP_STATUS_1)) {
ObjRecordUtilModule objRecordUtilModule = ObjRecordUtil.addRecord(oldObject, payMeetingSituation1);
List<String> fieldNames = objRecordUtilModule.getFieldNames();
List<String> canModifyList = Arrays.asList(CAN_MODIFY_LIST);
boolean containsAll = canModifyList.containsAll(fieldNames);
if (!containsAll){
throw new JeroBootException("审核通过之后只允许修改行程信息");
}
}
//如果是对接人修改的
if (sysUserId.equals(dockId)) {
//判断修改了那些字段
String record = ObjRecordUtil.addRecord(oldObject, payMeetingSituation1);
ObjRecordUtilModule objRecordUtilModule = ObjRecordUtil.addRecord(oldObject, payMeetingSituation1);
String record = objRecordUtilModule.getInfo();
if (StringUtils.isNotBlank(record)) {
// 给负责人发送消息
SendMessageDTO sendMessageDTO = new SendMessageDTO();
@@ -527,7 +558,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
map.put("userName1", sysUser.getUsername());
map.put("userName2", payMeetingSituation.getCompanyContactName());
map.put("record", record);
sendMessageDTO.setFromUser(sysUser.getId());
sendMessageDTO.setFromUser(sysUser.getUsername());
sendMessageDTO.setTemplateCode(ManagementMessageEnums.MSG8.getCode());
sendMessageDTO.setTemplateParam(map);
sendMessageDTO.setBusType("M_OPEN_TYPE8");
@@ -621,18 +652,18 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
Integer payMode = commonPeopleVO.getPayMode();
payMeetingSituation1.setPayMode(payMode);
//缴费方式为打包时,不处理邮寄联系人和地址
if (Objects.equals(payMode,MeetingSubitemCommon.PAY_MODE_3)) {
if (Objects.equals(payMode, MeetingSubitemCommon.PAY_MODE_3)) {
ValidUtil.validate(commonPeopleVO);
//存入打包字段
payMeetingSituation1.setPack(PayProjectCommon.PACKAGING1);
payMeetingSituation1.setAmountReceivable(new BigDecimal(0));
//缴费方式为汇款或线上缴费
} else if (Objects.equals(payMode,MeetingSubitemCommon.PAY_MODE_1)
||Objects.equals(payMode,MeetingSubitemCommon.PAY_MODE_2)){
//缴费方式为汇款或线上缴费
} else if (Objects.equals(payMode, MeetingSubitemCommon.PAY_MODE_1)
|| Objects.equals(payMode, MeetingSubitemCommon.PAY_MODE_2)) {
ValidUtil.validate(commonPeopleVO, NotPack.class);
//缴费方式为线上缴费时,判断是否为会议期间
String paymentRecord = payMeetingSituation.getPaymentRecord();
if (payMode.equals(MeetingSubitemCommon.PAY_MODE_2)) {
if (payMode.equals(MeetingSubitemCommon.PAY_MODE_2) && StringUtils.isNotBlank(paymentRecord)) {
Date startTime = payMeeting.getStartTime();
Date endTime = payMeeting.getEndTime();
//如果不在会议期间,不允许上传缴费凭证
@@ -643,8 +674,8 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
payMeetingSituation1.setOrderCode(payMeetingSituation.getOrderCode());
} else {
payMeetingSituation1.setPaymentRecord(paymentRecord);
}
payMeetingSituation1.setNeedInvoice(payMeetingSituation.getNeedInvoice());
//如果是标协会议判断会员类型
@@ -252,6 +252,9 @@ public class PayMeetingSituationVO {
@Excel(name = "邮寄联系人地址", width = 15)
@ApiModelProperty(value = "邮寄联系人地址")
private String postContactAddress;
/**邮编*/
@ApiModelProperty(value = "邮编")
private String postCode;
/**缴费方式*/
@Excel(name = "缴费方式", width = 15)
@@ -4,13 +4,15 @@ import cn.hutool.core.date.DateUtil;
import com.jero.common.aspect.annotation.Dict;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.util.SpringContextUtils;
import com.jero.util.module.ObjRecordUtilModule;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;
import org.springframework.format.annotation.DateTimeFormat;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
@@ -25,7 +27,8 @@ public class ObjRecordUtil {
* @param newObj 修改后数据对象
* @return
*/
public static String addRecord(Object oldObj, Object newObj) {
public static ObjRecordUtilModule addRecord(Object oldObj, Object newObj) {
ObjRecordUtilModule objRecordUtilModule = new ObjRecordUtilModule();
try {
// 得到类对象
Class<?> class1 = oldObj.getClass();
@@ -37,6 +40,7 @@ public class ObjRecordUtil {
Field[] fields1 = class1.getDeclaredFields();
Field[] fields2 = class2.getDeclaredFields();
StringBuilder info = new StringBuilder();
List<String> fieldNames = new ArrayList<>();
String id = null;
for (Field field1 : fields1) {
field1.setAccessible(true); // 设置属性是可以访问的(私有的也可以)
@@ -77,6 +81,7 @@ public class ObjRecordUtil {
} else {
info.append(pn.value()).append(":\"").append(old).append("\" 改成 \"").append(newo).append("\",");
}
fieldNames.add(field1.getName());
}
}
break; // 属性名称一样就退出二级循环
@@ -85,11 +90,15 @@ public class ObjRecordUtil {
}
if (info.length() != 0) {
// 设置日志信息
return info.substring(0, info.length() - 1);
objRecordUtilModule.setInfo(info.substring(0, info.length() - 1));
objRecordUtilModule.setFieldNames(fieldNames);
return objRecordUtilModule;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
objRecordUtilModule.setInfo(null);
objRecordUtilModule.setFieldNames(new ArrayList<>());
return objRecordUtilModule;
}
}
@@ -0,0 +1,15 @@
package com.jero.util.module;
import lombok.Data;
import java.util.List;
/**
* @author liJiaRao
* @date 2021-09-26 15:04
*/
@Data
public class ObjRecordUtilModule {
private List<String> fieldNames;
private String info;
}