北京需求优化
This commit is contained in:
@@ -118,6 +118,7 @@ public class LargeScreenCountController extends BaseController {
|
|||||||
@OperateInfo
|
@OperateInfo
|
||||||
@PostMapping("/noDealEventList")
|
@PostMapping("/noDealEventList")
|
||||||
@ApiOperation("未处理暂降事件列表")
|
@ApiOperation("未处理暂降事件列表")
|
||||||
|
@Deprecated
|
||||||
@ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true)
|
@ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true)
|
||||||
public HttpResult<List<EventDetailVO>> noDealEventList(@RequestBody LargeScreenCountParam largeScreenCountParam) {
|
public HttpResult<List<EventDetailVO>> noDealEventList(@RequestBody LargeScreenCountParam largeScreenCountParam) {
|
||||||
String methodDescribe = getMethodDescribe("noDealEventList");
|
String methodDescribe = getMethodDescribe("noDealEventList");
|
||||||
@@ -125,6 +126,15 @@ public class LargeScreenCountController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
}
|
}
|
||||||
@OperateInfo
|
@OperateInfo
|
||||||
|
@PostMapping("/noDealEventListMessage")
|
||||||
|
@ApiOperation("未处理暂降事件列表(短信)")
|
||||||
|
@ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true)
|
||||||
|
public HttpResult<List<MessageEventVO>> noDealEventListMessage(@RequestBody LargeScreenCountParam largeScreenCountParam) {
|
||||||
|
String methodDescribe = getMethodDescribe("noDealEventListMessage");
|
||||||
|
List<MessageEventVO> result = largeScreenCountService.noDealEventListMessage(largeScreenCountParam);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
|
}
|
||||||
|
@OperateInfo
|
||||||
@PostMapping("/mapCount")
|
@PostMapping("/mapCount")
|
||||||
@ApiOperation("地图统计")
|
@ApiOperation("地图统计")
|
||||||
@ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true)
|
@ApiImplicitParam(name = "largeScreenCountParam", value = "查询参数", required = true)
|
||||||
@@ -138,6 +148,7 @@ public class LargeScreenCountController extends BaseController {
|
|||||||
@OperateInfo(operateType= OperateType.UPDATE)
|
@OperateInfo(operateType= OperateType.UPDATE)
|
||||||
@PostMapping("/lookEvent")
|
@PostMapping("/lookEvent")
|
||||||
@ApiOperation("处理暂降事件")
|
@ApiOperation("处理暂降事件")
|
||||||
|
@Deprecated
|
||||||
@ApiImplicitParam(name = "eventIds", value = "暂降事件id", required = true)
|
@ApiImplicitParam(name = "eventIds", value = "暂降事件id", required = true)
|
||||||
public HttpResult<Boolean> lookEvent(@RequestBody List<String> eventIds) {
|
public HttpResult<Boolean> lookEvent(@RequestBody List<String> eventIds) {
|
||||||
String methodDescribe = getMethodDescribe("lookEvent");
|
String methodDescribe = getMethodDescribe("lookEvent");
|
||||||
@@ -145,6 +156,16 @@ public class LargeScreenCountController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo(operateType= OperateType.UPDATE)
|
||||||
|
@PostMapping("/lookMessage")
|
||||||
|
@ApiOperation("处理推送消息")
|
||||||
|
@ApiImplicitParam(name = "eventIds", value = "暂降事件id", required = true)
|
||||||
|
public HttpResult<Boolean> lookMessage(@RequestBody List<String> messageIds) {
|
||||||
|
String methodDescribe = getMethodDescribe("lookMessage");
|
||||||
|
boolean result = largeScreenCountService.lookMessage(messageIds);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
@OperateInfo
|
@OperateInfo
|
||||||
@GetMapping("/eventMsgDetail")
|
@GetMapping("/eventMsgDetail")
|
||||||
@ApiOperation("暂降事件列表详情按钮")
|
@ApiOperation("暂降事件列表详情按钮")
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package com.njcn.product.event.transientes.pojo.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description:
|
||||||
|
* Date: 2025/06/20 下午 2:50【需求编号】
|
||||||
|
*
|
||||||
|
* @author clam
|
||||||
|
* @version V1.0.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class MessageEventVO {
|
||||||
|
private List<String> messageIds;
|
||||||
|
|
||||||
|
private List<String> eventIds;
|
||||||
|
|
||||||
|
|
||||||
|
private String messageContent;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private Integer needDealFlag;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -66,4 +66,8 @@ public interface LargeScreenCountService {
|
|||||||
Page<EventDetailVO> userEventList(LargeScreenCountParam largeScreenCountParam);
|
Page<EventDetailVO> userEventList(LargeScreenCountParam largeScreenCountParam);
|
||||||
|
|
||||||
void exportLineData();
|
void exportLineData();
|
||||||
|
|
||||||
|
List<MessageEventVO> noDealEventListMessage(LargeScreenCountParam largeScreenCountParam);
|
||||||
|
|
||||||
|
boolean lookMessage(List<String> eventIds);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -551,6 +551,60 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
result = result.stream().sorted(Comparator.comparing(EventDetailVO::getTimeid)).collect(Collectors.toList());
|
result = result.stream().sorted(Comparator.comparing(EventDetailVO::getTimeid)).collect(Collectors.toList());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public Set<String> getAllParentDeptIds(Set<String> deptIds) {
|
||||||
|
// 首次获取直接父级
|
||||||
|
List<PqsDepts> allDeptList = pqsDeptsService.lambdaQuery().list();
|
||||||
|
// 递归获取所有父级
|
||||||
|
Set<String> result = recursivelyGetParentIds(deptIds, allDeptList);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
private Set<String> recursivelyGetParentIds(Set<String> currentParentIds, List<PqsDepts> allDeptList) {
|
||||||
|
Set<String> result = new HashSet<>(currentParentIds);
|
||||||
|
Set<String> nextLevelParentIds = new HashSet<>();
|
||||||
|
List<PqsDepts> parentDeptList = allDeptList.stream().filter(it -> currentParentIds.contains(it.getDeptsIndex())).collect(Collectors.toList());
|
||||||
|
for (PqsDepts pqsDepts : parentDeptList) {
|
||||||
|
if (!pqsDepts.getParentnodeid().equals("0")) {
|
||||||
|
nextLevelParentIds.add(pqsDepts.getParentnodeid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 如果有更高层级的父级,继续递归
|
||||||
|
if (!nextLevelParentIds.isEmpty()) {
|
||||||
|
Set<String> deeperParentIds = recursivelyGetParentIds(nextLevelParentIds, allDeptList);
|
||||||
|
result.addAll(deeperParentIds);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public List<MessageEventVO> noDealEventListMessage(LargeScreenCountParam largeScreenCountParam) {
|
||||||
|
List<MessageEventVO> result = new ArrayList<>();
|
||||||
|
DateTime startTime = DateUtil.beginOfDay(DateUtil.parse(largeScreenCountParam.getSearchBeginTime()));
|
||||||
|
DateTime endTime = DateUtil.endOfDay(DateUtil.parse(largeScreenCountParam.getSearchEndTime()));
|
||||||
|
Set<String> resultIds = getAllParentDeptIds(Collections.singleton(largeScreenCountParam.getDeptId()));
|
||||||
|
|
||||||
|
List<PqsUserSet> list = pqsUsersetService.lambdaQuery().in(PqsUserSet::getDeptsIndex, resultIds).list();
|
||||||
|
if(CollectionUtils.isEmpty(list)){
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
List<String> userIds = list.stream().map(PqsUserSet::getUserIndex).collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<MsgEventInfo> msgEventInfos = msgEventInfoService.lambdaQuery().in(MsgEventInfo::getUserId, userIds).between(MsgEventInfo::getSendTime, startTime, endTime).ne(MsgEventInfo::getIsHandle,1).list();
|
||||||
|
Map<String, List<MsgEventInfo>> collect = msgEventInfos.stream().collect(Collectors.groupingBy(MsgEventInfo::getMsgContent));
|
||||||
|
collect.forEach((k,v)->{
|
||||||
|
MessageEventVO mesageEventVO = new MessageEventVO();
|
||||||
|
List<String> eventIds = v.stream().map(MsgEventInfo::getEventIndex).distinct().collect(Collectors.toList());
|
||||||
|
List<String> messageIds = v.stream().map(MsgEventInfo::getMsgIndex).distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
|
mesageEventVO.setMessageIds(messageIds);
|
||||||
|
mesageEventVO.setEventIds(eventIds);
|
||||||
|
mesageEventVO.setMessageContent(k);
|
||||||
|
result.add(mesageEventVO);
|
||||||
|
});
|
||||||
|
|
||||||
|
// result = result.stream().sorted(Comparator.comparing(EventDetailVO::getTimeid)).collect(Collectors.toList());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean lookEvent(List<String> ids) {
|
public boolean lookEvent(List<String> ids) {
|
||||||
@@ -568,6 +622,22 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public boolean lookMessage(List<String> ids) {
|
||||||
|
if (ids.size() > 1000) {
|
||||||
|
List<List<String>> eventIds = CollUtil.split(ids, 1000);
|
||||||
|
for (List<String> needIds : eventIds) {
|
||||||
|
LambdaUpdateWrapper<MsgEventInfo> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper.in(MsgEventInfo::getMsgIndex, needIds).set(MsgEventInfo::getIsHandle, DataStateEnum.ENABLE.getCode());
|
||||||
|
msgEventInfoService.update(updateWrapper);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
LambdaUpdateWrapper<MsgEventInfo> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper.in(MsgEventInfo::getMsgIndex, ids).set(MsgEventInfo::getIsHandle, DataStateEnum.ENABLE.getCode());
|
||||||
|
msgEventInfoService.update(updateWrapper);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<MapCountVO> mapCount(LargeScreenCountParam largeScreenCountParam) {
|
public List<MapCountVO> mapCount(LargeScreenCountParam largeScreenCountParam) {
|
||||||
@@ -1695,4 +1765,6 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import cn.hutool.core.date.DatePattern;
|
|||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.njcn.product.event.config.RedisUtil;
|
import com.njcn.product.event.config.RedisUtil;
|
||||||
import com.njcn.product.event.devcie.pojo.dto.LedgerBaseInfoDTO;
|
import com.njcn.product.event.devcie.pojo.dto.LedgerBaseInfoDTO;
|
||||||
@@ -18,6 +19,7 @@ import com.njcn.product.event.transientes.pojo.dto.SmsSendDTO;
|
|||||||
import com.njcn.product.event.transientes.pojo.po.*;
|
import com.njcn.product.event.transientes.pojo.po.*;
|
||||||
import com.njcn.product.event.transientes.service.*;
|
import com.njcn.product.event.transientes.service.*;
|
||||||
import com.njcn.product.event.transientes.utils.SmsUtils;
|
import com.njcn.product.event.transientes.utils.SmsUtils;
|
||||||
|
import com.njcn.product.event.transientes.websocket.WebSocketServer;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@@ -27,7 +29,6 @@ import org.springframework.util.CollectionUtils;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.Duration;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@@ -54,6 +55,7 @@ public class SendMessageServiceImpl implements SendMessageService {
|
|||||||
private final ThreadPoolTaskExecutor smsTaskExecutor;
|
private final ThreadPoolTaskExecutor smsTaskExecutor;
|
||||||
private final PqsUsersetService pqsUsersetService;
|
private final PqsUsersetService pqsUsersetService;
|
||||||
private final SmsUtils smsUtils;
|
private final SmsUtils smsUtils;
|
||||||
|
private final WebSocketServer webSocketServer;
|
||||||
|
|
||||||
private final PqsDeptslineService pqsDeptslineService;
|
private final PqsDeptslineService pqsDeptslineService;
|
||||||
@Value("${SYS_TYPE_ZT}")
|
@Value("${SYS_TYPE_ZT}")
|
||||||
@@ -65,6 +67,7 @@ public class SendMessageServiceImpl implements SendMessageService {
|
|||||||
@Override
|
@Override
|
||||||
public void sendMessage(LocalDateTime threeHourAgo, LocalDateTime now) {
|
public void sendMessage(LocalDateTime threeHourAgo, LocalDateTime now) {
|
||||||
log.info("开始扫描暂态事件时间段:"+threeHourAgo+"-"+now);
|
log.info("开始扫描暂态事件时间段:"+threeHourAgo+"-"+now);
|
||||||
|
|
||||||
//查询重要敏感客户
|
//查询重要敏感客户
|
||||||
List<PqUserLedgerPO> poList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper<PqUserLedgerPO>().select(PqUserLedgerPO::getId, PqUserLedgerPO::getCustomerName,PqUserLedgerPO::getIsShow).eq(PqUserLedgerPO::getIsShow, 1));
|
List<PqUserLedgerPO> poList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper<PqUserLedgerPO>().select(PqUserLedgerPO::getId, PqUserLedgerPO::getCustomerName,PqUserLedgerPO::getIsShow).eq(PqUserLedgerPO::getIsShow, 1));
|
||||||
List<String> userIds = poList.stream().map(PqUserLedgerPO::getId).collect(Collectors.toList());
|
List<String> userIds = poList.stream().map(PqUserLedgerPO::getId).collect(Collectors.toList());
|
||||||
@@ -234,10 +237,15 @@ public class SendMessageServiceImpl implements SendMessageService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<PqsUser> pqsUserList = pqsUserService.lambdaQuery().select(PqsUser::getUserIndex, PqsUser::getPhone, PqsUser::getName).in(PqsUser::getUserIndex, pqsUserSetList.stream().map(PqsUserSet::getUserIndex).collect(Collectors.toList())).list();
|
List<PqsUser> pqsUserList = pqsUserService.lambdaQuery().select(PqsUser::getUserIndex, PqsUser::getPhone, PqsUser::getName).in(PqsUser::getUserIndex, pqsUserSetList.stream().map(PqsUserSet::getUserIndex).collect(Collectors.toList())).list();
|
||||||
|
// JSONObject jsonObject = new JSONObject();
|
||||||
|
// jsonObject.putOpt("messageContent", stringBuilder);
|
||||||
|
// jsonObject.putOpt("eventIds",result.stream().map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList()) );
|
||||||
|
// webSocketServer.sendMessageToAll(jsonObject.toString());
|
||||||
|
|
||||||
if(!CollectionUtils.isEmpty(pqsUserList)){
|
if(!CollectionUtils.isEmpty(pqsUserList)){
|
||||||
//开始发送短信
|
//开始发送短信
|
||||||
smsTaskExecutor.execute(() -> {
|
smsTaskExecutor.execute(() -> {
|
||||||
sendMessageforUser(stringBuilder.toString(), pqsUserList,eventdetailIndexs);
|
sendMessageforUser(stringBuilder.toString(), pqsUserList,eventdetailIndexs,resultIds);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,7 +260,7 @@ public class SendMessageServiceImpl implements SendMessageService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendMessageforUser(String content, List<PqsUser> pqsUserList, List<String> eventdetailIndexs) {
|
private void sendMessageforUser(String content, List<PqsUser> pqsUserList, List<String> eventdetailIndexs, Set<String> deptIds) {
|
||||||
|
|
||||||
//发送短信
|
//发送短信
|
||||||
List<MsgEventInfo> resultList = new ArrayList<>();
|
List<MsgEventInfo> resultList = new ArrayList<>();
|
||||||
@@ -296,6 +304,12 @@ public class SendMessageServiceImpl implements SendMessageService {
|
|||||||
item.setSendResult(Objects.equals(smsItem.getCode(), "0") ? 1 : 0);
|
item.setSendResult(Objects.equals(smsItem.getCode(), "0") ? 1 : 0);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.putOpt("messageContent", content);
|
||||||
|
jsonObject.putOpt("dept", String.join(StrUtil.COMMA, deptIds));
|
||||||
|
|
||||||
|
jsonObject.putOpt("messageIds",resultList.stream().map(MsgEventInfo::getMsgIndex).collect(Collectors.toList()) );
|
||||||
|
webSocketServer.sendMessageToAll(jsonObject.toString());
|
||||||
msgEventInfoService.saveBatch(resultList);
|
msgEventInfoService.saveBatch(resultList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user