fix: 修复一些问题
This commit is contained in:
parent
27018d0787
commit
13bfc612bf
|
|
@ -26,9 +26,7 @@ import java.time.LocalDateTime;
|
|||
import java.time.ZoneId;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
|
|
@ -76,27 +74,30 @@ public class TicketScheduledTasks {
|
|||
*/
|
||||
@Scheduled(cron = "0 0 0 * * ?")
|
||||
public void sendInviteCommentEmail() {
|
||||
List<Ticket> tickets=ticketService.getNonComment(7);
|
||||
log.info("【工单评论邀请】开始执行");
|
||||
List<Ticket> tickets = ticketService.getNonComment(3);
|
||||
log.info("【工单评论邀请】共{}条数据", tickets.size());
|
||||
tickets.forEach(ticket -> {
|
||||
AdminUser createUser = adminUserService.getById(ticket.getUserId());
|
||||
AppUser createUser = appUserService.getById(ticket.getUserId());
|
||||
if (Objects.equals(createUser.getState(), UserState.Activated.getState())) {
|
||||
List<Integer> adminUserIds = Arrays.stream(ticket.getHandle().split(","))
|
||||
.map(Integer::parseInt)
|
||||
.collect(Collectors.toList());
|
||||
List<AdminUser> adminUsers = adminUserService.listByIds(adminUserIds);
|
||||
// List<Integer> adminUserIds = Arrays.stream(ticket.getHandle().split(","))
|
||||
// .map(Integer::parseInt)
|
||||
// .collect(Collectors.toList());
|
||||
// List<AdminUser> adminUsers = adminUserService.listByIds(adminUserIds);
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_TICKET_INVITE_COMMENT, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_TICKET_INVITE_COMMENT, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.replace("${websiteUrl}", websiteUrl)
|
||||
.replace("${title}", ticket.getTitle())
|
||||
.replace("${createUser}", createUser.getUserName())
|
||||
.replace("${createUser}", createUser.getName())
|
||||
.replace("${url}", websiteUrl + "/#/workOrder/workOrderDetail?id=" + ticket.getId());
|
||||
try {
|
||||
sendEamilForAdminUser(adminUsers, subject, content);
|
||||
sendEamilForAppUser(Collections.singletonList(createUser), subject, content);
|
||||
} catch (Exception e) {
|
||||
log.error("邮件发送失败", e);
|
||||
log.error("【工单评论邀请】邮件发送失败", e);
|
||||
}
|
||||
}
|
||||
});
|
||||
log.info("【工单评论邀请】执行完成");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -105,7 +106,9 @@ public class TicketScheduledTasks {
|
|||
*/
|
||||
@Scheduled(cron = "0 0 0 * * ?")
|
||||
public void autoComment() {
|
||||
log.info("【工单自动评论】开始执行");
|
||||
List<Ticket> tickets = ticketService.getNonComment(10);
|
||||
log.info("【工单自动评论】共{}条数据", tickets.size());
|
||||
TicketEvaluateAddVO vo = dictionaryItemTranslateService.getTicketEvaluateSelect(Constant.DEFAULT_LANGUAGE_CODE);
|
||||
TicketEvaluateAddRequest request = new TicketEvaluateAddRequest();
|
||||
request.setType(1);
|
||||
|
|
@ -124,6 +127,7 @@ public class TicketScheduledTasks {
|
|||
request.setTicketId(ticket.getId());
|
||||
ticketEvaluateService.add(request);
|
||||
});
|
||||
log.info("【工单自动评论】执行完成");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -132,13 +136,13 @@ public class TicketScheduledTasks {
|
|||
*/
|
||||
@Scheduled(cron = "0 0 0 * * ?")
|
||||
public void timeoutRemind() {
|
||||
log.info("开始执行工单超时提醒");
|
||||
log.info("【工单超时提醒】开始执行");
|
||||
ParamConfig config = paramConfigService.lambdaQuery().eq(ParamConfig::getCode, "TiketTimeout").one();
|
||||
TiketTimeoutDTO cfgTimeout= JSONUtil.toBean(config.getValue(), TiketTimeoutDTO.class);
|
||||
emergencyRemind(cfgTimeout);
|
||||
generalRemind(cfgTimeout);
|
||||
nonemergencyRemind(cfgTimeout);
|
||||
log.info("执行工单超时提醒完成");
|
||||
log.info("【工单超时提醒】执行完成");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -155,32 +159,32 @@ public class TicketScheduledTasks {
|
|||
}
|
||||
|
||||
private void emergencyRemind(TiketTimeoutDTO cfgTimeout) {
|
||||
log.info("获取状态为紧急且{}天未解决的工单", cfgTimeout.getEmergency());
|
||||
log.info("【工单超时提醒】获取状态为紧急且{}天未解决的工单", cfgTimeout.getEmergency());
|
||||
List<Ticket> tickets = ticketService.getEmergencys(cfgTimeout.getEmergency());
|
||||
log.info("共{}条数据", tickets.size());
|
||||
log.info("【工单超时提醒】共{}条数据", tickets.size());
|
||||
tickets.forEach(this::ticketHande);
|
||||
}
|
||||
|
||||
private void generalRemind(TiketTimeoutDTO cfgTimeout) {
|
||||
log.info("获取状态为普通且{}天未解决的工单", cfgTimeout.getGeneral());
|
||||
log.info("【工单超时提醒】获取状态为普通且{}天未解决的工单", cfgTimeout.getGeneral());
|
||||
List<Ticket> tickets = ticketService.getGenerals(cfgTimeout.getGeneral());
|
||||
log.info("共{}条数据", tickets.size());
|
||||
log.info("【工单超时提醒】共{}条数据", tickets.size());
|
||||
tickets.forEach(this::ticketHande);
|
||||
}
|
||||
|
||||
private void nonemergencyRemind(TiketTimeoutDTO cfgTimeout) {
|
||||
log.info("获取状态为非紧急且{}天未解决的工单", cfgTimeout.getNonemergency());
|
||||
log.info("【工单超时提醒】获取状态为非紧急且{}天未解决的工单", cfgTimeout.getNonemergency());
|
||||
List<Ticket> tickets = ticketService.getNonemergency(cfgTimeout.getNonemergency());
|
||||
log.info("共{}条数据", tickets.size());
|
||||
log.info("【工单超时提醒】共{}条数据", tickets.size());
|
||||
tickets.forEach(this::ticketHande);
|
||||
}
|
||||
|
||||
private void ticketHande(Ticket ticket) {
|
||||
AppUser createUser=appUserService.getById(ticket.getUserId());
|
||||
//处理人
|
||||
List<Integer> adminUserIds = Arrays.stream(ticket.getHandle().split(","))
|
||||
Set<Integer> adminUserIds = Arrays.stream(ticket.getHandle().split(","))
|
||||
.map(Integer::parseInt)
|
||||
.collect(Collectors.toList());
|
||||
.collect(Collectors.toSet());
|
||||
//CQM
|
||||
adminUserIds.add(ticket.getCqm());
|
||||
//管理端关注人
|
||||
|
|
@ -194,6 +198,7 @@ public class TicketScheduledTasks {
|
|||
if (CollectionUtil.isNotEmpty(followUserIds)){
|
||||
adminUserIds.addAll(followUserIds);
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(adminUserIds)) {
|
||||
List<AdminUser> adminUsers = adminUserService.listByIds(adminUserIds);
|
||||
String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_TICKET_TIMEOUT, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_TICKET_NOTIFY, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
|
|
@ -206,19 +211,19 @@ public class TicketScheduledTasks {
|
|||
try {
|
||||
sendEamilForAdminUser(adminUsers, subject, content);
|
||||
} catch (Exception e) {
|
||||
log.error("邮件发送失败", e);
|
||||
log.error("【工单超时提醒】邮件发送失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
//客户端关注人
|
||||
List<Integer> appUserIds=ticketFollowService.lambdaQuery()
|
||||
Set<Integer> appUserIds=ticketFollowService.lambdaQuery()
|
||||
.eq(TicketFollow::getTicketId, ticket.getId())
|
||||
.eq(TicketFollow::getFrom, (byte) 0)
|
||||
.list()
|
||||
.stream()
|
||||
.map(TicketFollow::getUserId)
|
||||
.collect(Collectors.toList());
|
||||
.collect(Collectors.toSet());
|
||||
appUserIds.add(ticket.getUserId());
|
||||
List<AppUser> appUsers = appUserService.listByIds(appUserIds);
|
||||
appUsers.add(createUser);
|
||||
sendAppMessage(appUsers, ticket);
|
||||
}
|
||||
|
||||
|
|
@ -231,6 +236,7 @@ public class TicketScheduledTasks {
|
|||
|
||||
private void sendAppMessage(List<AppUser> appUsers, Ticket ticket){
|
||||
for (AppUser appUser : appUsers){
|
||||
log.info("【工单超时提醒】添加消息给{}({})",appUser.getName(),appUser.getId());
|
||||
appMessageService.add(new AppMessage()
|
||||
.setUserId(appUser.getId())
|
||||
.setTicketId(ticket.getId())
|
||||
|
|
@ -243,8 +249,18 @@ public class TicketScheduledTasks {
|
|||
private void sendEamilForAdminUser(List<AdminUser> adminUsers,String subject,String content) throws MessagingException {
|
||||
if (CollectionUtil.isNotEmpty(adminUsers)){
|
||||
for (AdminUser adminUser:adminUsers) {
|
||||
log.info("【工单超时提醒】发送邮件到{}",adminUser.getEmail());
|
||||
emailService.sendEmail(adminUser.getEmail(),subject,content);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void sendEamilForAppUser(List<AppUser> users,String subject,String content) throws MessagingException {
|
||||
if (CollectionUtil.isNotEmpty(users)){
|
||||
for (AppUser user:users) {
|
||||
log.info("【工单超时提醒】发送邮件到{}",user.getEmail());
|
||||
emailService.sendEmail(user.getEmail(),subject,content);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -22,7 +22,7 @@ public class TicketAddRequest {
|
|||
|
||||
//标题
|
||||
@NotBlank
|
||||
@Size(max = 20, message = "标题长度不能超过20")
|
||||
@Size(max = 150, message = "标题长度不能超过150")
|
||||
private String title;
|
||||
|
||||
//描述
|
||||
|
|
|
|||
|
|
@ -122,12 +122,12 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
if (Objects.nonNull(request.getEndTime())) {
|
||||
request.setEndTime(request.getEndTime().plusDays(1));
|
||||
}
|
||||
if (request.getType() == 2) {
|
||||
return baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize()));
|
||||
} else if (request.getType() == 4) {
|
||||
Integer userId = AdminUserUtil.getUserId();
|
||||
List<Integer> tickerMangagers = adminUserService.getTickerMangagers();
|
||||
request.setTicketManager(tickerMangagers.stream().anyMatch(uid -> Objects.equals(uid, userId)));
|
||||
if (request.getType() == 2) {
|
||||
return baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize()));
|
||||
} else if (request.getType() == 4) {
|
||||
return baseMapper.searchFromAdmin(request, userId, new Page<>(request.getPage(), request.getPageSize()));
|
||||
}
|
||||
return new Page<>(request.getPage(), request.getPageSize(), 0);
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
AND d.agent_code=#{request.agentCode}
|
||||
</if>
|
||||
<if test="request.areaCode!=null and request.areaCode!=''">
|
||||
AND FIND_IN_SET(#{request.areaCode},c.area_code)>0
|
||||
AND u.is_primary AND FIND_IN_SET(#{request.areaCode},fun_getPrimaryUserAreaCode(u.company_id))>0
|
||||
</if>
|
||||
<if test="request.question!=null and request.question!=''">
|
||||
AND t.question=#{request.question}
|
||||
|
|
@ -219,7 +219,10 @@
|
|||
FROM ticket t
|
||||
LEFT JOIN app_user u ON t.user_id=u.id
|
||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
||||
INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1 AND tf.favorites_id=#{favouritesId}
|
||||
INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
|
||||
<if test="favouritesId>0">
|
||||
AND tf.favorites_id=#{favouritesId}
|
||||
</if>
|
||||
LEFT JOIN device d ON t.device_no=d.device_no
|
||||
LEFT JOIN t_base_device_type dt ON d.device_type=dt.device_type
|
||||
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
|
||||
|
|
|
|||
Loading…
Reference in New Issue