Browse Source

Merge remote-tracking branch 'remotes/origin/dev'

dev_shibei_match
jianjun 4 years ago
parent
commit
a1d018532f
  1. 6
      epmet-commons/epmet-commons-rocketmq/pom.xml
  2. 4
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  3. 1
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java
  4. 17
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/ProjectChangedMQMsg.java
  5. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java
  6. 5
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/form/ScreenProjectDataInfoFormDTO.java
  7. 18
      epmet-module/data-statistical/data-statistical-server/pom.xml
  8. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java
  9. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java
  10. 118
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java
  11. 68
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java
  12. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginExtractService.java
  13. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java
  14. 16
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java
  15. 64
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java
  16. 11
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenExtractService.java
  17. 51
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java
  18. 8
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java
  19. 3
      epmet-module/data-statistical/data-statistical-server/src/main/resources/bootstrap.yml
  20. 32
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml
  21. 6
      epmet-module/epmet-message/epmet-message-client/pom.xml
  22. 5
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java
  23. 69
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java
  24. 3
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java
  25. 16
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
  26. 52
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  27. 1
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/ResiGroupApplication.java
  28. 101
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/TestPController.java

6
epmet-commons/epmet-commons-rocketmq/pom.xml

@ -17,5 +17,9 @@
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
</project>

4
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java

@ -21,5 +21,9 @@ public interface ConsomerGroupConstants {
* 客户初始化议题项目分类标签数据
*/
String ISSUE_PROJECT_CATEGORY_TAG = "issue_project_category_tag";
/**
* 项目变动通知消费者组
*/
String PROJECT_CHANGED_COMPONENTS_GROUP = "project_changed_components_group";
}

1
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java

@ -2,4 +2,5 @@ package com.epmet.commons.rocketmq.constants;
public interface TopicConstants {
String INIT_CUSTOMER = "init_customer";
String PROJECT_CHANGED = "project_changed";
}

17
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/ProjectChangedMQMsg.java

@ -0,0 +1,17 @@
package com.epmet.commons.rocketmq.messages;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
/**
* desc项目变动通知消息实体类
* @author liujianjun
*/
@Data
@AllArgsConstructor
public class ProjectChangedMQMsg implements Serializable {
private String customerId;
}

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java

@ -171,4 +171,6 @@ public class ScreenProjectDataDTO implements Serializable {
private String topicId;
private Integer responseCount;
}

5
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/form/ScreenProjectDataInfoFormDTO.java

@ -4,7 +4,6 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @description:
@ -67,6 +66,10 @@ public class ScreenProjectDataInfoFormDTO implements Serializable {
/**
* 事件级别 红色1级已超期黄色2级:即将超期绿色3级未超期
* 2021-04-28平阴定义
* 1红色为刚提交未做任何响应处理未结案的项目
* 2黄色: 至少做过一次响应处理答复但未结案的项目
* 3绿色已经结案的项目
*/
private Integer projectLevel;

18
epmet-module/data-statistical/data-statistical-server/pom.xml

@ -110,6 +110,12 @@
<version>4.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-rocketmq</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
@ -248,6 +254,9 @@
<!--钉钉 机器人地址-->
<dingTalk.robot.webHook>https://oapi.dingtalk.com/robot/send?access_token=90782b119f82a5b6bb8e0f819b6a77bbc2102b53aa2d7d2e24fa10b66d580b1c</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.1.130:9876;192.168.1.132:9876</rocketmq.nameserver>
</properties>
</profile>
<profile>
@ -364,6 +373,9 @@
<!--钉钉 机器人地址-->
<dingTalk.robot.webHook>https://oapi.dingtalk.com/robot/send?access_token=90782b119f82a5b6bb8e0f819b6a77bbc2102b53aa2d7d2e24fa10b66d580b1c</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.1.130:9876;192.168.1.132:9876</rocketmq.nameserver>
</properties>
</profile>
<profile>
@ -479,6 +491,9 @@
<!--测试钉钉 机器人地址-->
<dingTalk.robot.webHook>https://oapi.dingtalk.com/robot/send?access_token=90782b119f82a5b6bb8e0f819b6a77bbc2102b53aa2d7d2e24fa10b66d580b1c</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.10.161:9876</rocketmq.nameserver>
</properties>
</profile>
<profile>
@ -592,6 +607,9 @@
<!--生产钉钉 机器人地址-->
<dingTalk.robot.webHook>https://oapi.dingtalk.com/robot/send?access_token=a5f66c3374b1642fe2142dbf56d5997e280172d4e8f2b546c9423a68c82ece6c</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.11.187:9876;192.168.11.184:9876</rocketmq.nameserver>
</properties>
</profile>
</profiles>

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java

@ -14,6 +14,10 @@ public interface ProjectConstant {
* 状态-结案
*/
String CLOSED = "closed";
/**
* 状态-结案
*/
String CLOSED_CASE = "closed_case";
/**
* 结案状态-已解决
*/

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java

@ -368,4 +368,6 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
* @date 2021/4/12 1:35 下午
*/
List<FactOriginProjectOrgPeriodDailyEntity> getProjectPeriodForDiff(@Param("customerId") String customerId, @Param("dateId") String dateId);
List<ScreenProjectDataDTO> selectResponseCount(@Param("customerId") String customerId);
}

118
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java

@ -0,0 +1,118 @@
package com.epmet.mq;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import com.epmet.service.evaluationindex.extract.todata.FactOriginExtractService;
import com.epmet.service.evaluationindex.extract.toscreen.ScreenExtractService;
import com.epmet.util.DimIdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
import org.redisson.api.RLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.PreDestroy;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* @Description 项目变动-监听器
* @return
* @author wxz
* @date 2021.03.03 16:10
*/
@Slf4j
public class ProjectChangedCustomListener implements MessageListenerConcurrently {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
long start = System.currentTimeMillis();
try {
List<String> customerIds = msgs.stream().map(messageExt -> new String(messageExt.getBody())).distinct().collect(Collectors.toList());
customerIds.forEach(this::consumeMessage);
} catch (Exception e) {
//失败不重发
logger.error("consumeMessage fail,msg:{}",e.getMessage());
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
log.info("consumeMessage success, cost:{} ms",System.currentTimeMillis() - start);
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
private void consumeMessage(String msg) {
logger.info("receive customerId:{}", JSON.toJSONString(msg));
ProjectChangedMQMsg msgObj = JSON.parseObject(msg, ProjectChangedMQMsg.class);
DistributedLock distributedLock = null;
RLock lock = null;
try {
String customerId = msgObj.getCustomerId();
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:project_changed:%s", customerId)
,30L, 30L, TimeUnit.SECONDS);
if (StringUtils.isBlank(customerId)){
logger.error("consumer project_changed fail,msg:{}",customerId);
return;
}
//消息被消费太快 业务数据还没有完成 歇一会先
try {
Thread.sleep(60L);
} catch (InterruptedException e) {
logger.error("consumeMessage sleep exception",e);
}
ExtractOriginFormDTO extractOriginFormDTO = new ExtractOriginFormDTO();
extractOriginFormDTO.setCustomerId(customerId);
String dateId = DimIdGenerator.getDateDimId(new Date());
extractOriginFormDTO.setDateId(dateId);
Future<?> aBoolean = SpringContextUtils.getBean(FactOriginExtractService.class).submitProjectRelationData(extractOriginFormDTO,null);
try {
aBoolean.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
if (aBoolean.isDone()){
// 指标库,实时数据只更新:【screen_project_data】
// 【screen_project_process_attachment】
// 【screen_project_img_data】
// 【screen_project_process】这四个表
SpringContextUtils.getBean(ScreenExtractService.class).extractPartData(customerId,dateId);
}
logger.info("consumer projectChanged msg success,{}",aBoolean);
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【RocketMQ】消费项目变动消息失败:",e);
} catch (Exception e) {
// 不是我们自己抛出的异常,可以让MQ重试
logger.error("【RocketMQ】消费项目变动消息异常:",e);
throw e;
} finally {
if (distributedLock != null){
distributedLock.unLock(lock);
}
}
}
@PreDestroy
public void saveCalStatus() {
//todo
log.info("data-statical-server服务被关闭,执行未执行完的动作");
}
}

68
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java

@ -0,0 +1,68 @@
package com.epmet.mq;
import com.epmet.commons.rocketmq.constants.ConsomerGroupConstants;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Slf4j
@Component
@Order(value = 111)
public class RocketMQConsumerRegister {
@Value("${rocketmq.name-server}")
private String nameServer;
/**
* @return
* @Description 注册监听器
* @author wxz
* @date 2021.03.03 16:09
*/
@PostConstruct
public void registerAllListeners() {
try {
register(ConsomerGroupConstants.PROJECT_CHANGED_COMPONENTS_GROUP, MessageModel.CLUSTERING, TopicConstants.PROJECT_CHANGED, "*", new ProjectChangedCustomListener());
} catch (MQClientException e) {
log.error("registerAllListeners exception", e);
}
}
public void register(String group, MessageModel messageModel, String topic, String subException, MessageListenerConcurrently listener) throws MQClientException {
// 实例化消费者
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(group);
// 设置NameServer的地址
consumer.setNamesrvAddr(nameServer);
consumer.setMessageModel(messageModel);
consumer.setInstanceName(buildInstanceName());
// 订阅一个或者多个Topic,以及Tag来过滤需要消费的消息
consumer.subscribe(topic, subException);
// 注册回调实现类来处理从broker拉取回来的消息
consumer.registerMessageListener(listener);
//一次批量拉去10条消息
consumer.setConsumeMessageBatchMaxSize(NumConstant.TEN);
// 启动消费者实例
consumer.start();
}
private String buildInstanceName() {
String instanceName = "";
for (int i = 0; i < 4; i++) {
int t = (int) (Math.random() * 10);
instanceName = instanceName.concat(t + "");
}
return instanceName;
}
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginExtractService.java

@ -2,6 +2,9 @@ package com.epmet.service.evaluationindex.extract.todata;
import com.epmet.dto.extract.form.ExtractOriginFormDTO;
import java.util.List;
import java.util.concurrent.Future;
/**
* @author zhaoqifeng
* @dscription
@ -15,4 +18,11 @@ public interface FactOriginExtractService {
* @param extractOriginFormDTO
*/
void extractAll(ExtractOriginFormDTO extractOriginFormDTO);
/**
* desc:抽取项目相关业务数据到统计库
*
* @param param
*/
Future<?> submitProjectRelationData(ExtractOriginFormDTO param, List<String> finalDaysBetween);
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java

@ -357,4 +357,14 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<FactOriginProjectOrgPeriodDailyEntity> getProjectPeriod(ScreenCentralZoneDataFormDTO param);
/**
* 计算项目事件级别
* @author zhaoqifeng
* @date 2021/4/28 14:47
* @param list
* @param customerId
* @return void
*/
void setProjectLevel(List<ScreenProjectDataDTO> list, String customerId);
}

16
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java

@ -83,7 +83,7 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService {
}
private void submitJob(ExtractOriginFormDTO param) {
boolean isRange = StringUtils.isBlank(param.getDateId()) ? true : false;
boolean isRange = StringUtils.isBlank(param.getDateId());
List<String> daysBetween = null;
if (isRange) {
daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate());
@ -188,9 +188,15 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService {
}
}
});
threadPool.submit(() -> {
ExtractOriginFormDTO paramNew = ConvertUtils.sourceToTarget(param, ExtractOriginFormDTO.class);
if (!isRange) {
submitProjectRelationData(param, finalDaysBetween);
}
@Override
public Future<?> submitProjectRelationData(ExtractOriginFormDTO param, List<String> finalDaysBetween) {
Future<?> submit = threadPool.submit(() -> {
ExtractOriginFormDTO paramNew = null;
if (CollectionUtils.isEmpty(finalDaysBetween)) {
paramNew = ConvertUtils.sourceToTarget(param, ExtractOriginFormDTO.class);
try {
projectExtractService.saveOriginProjectDaily(paramNew);
} catch (Exception e) {
@ -236,6 +242,8 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService {
}
}
return true;
});
return submit;
}
}

64
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java

@ -23,6 +23,7 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.DataSourceConstant;
import com.epmet.constant.ProjectConstant;
import com.epmet.dao.evaluationindex.extract.FactOriginProjectMainDailyDao;
import com.epmet.dao.evaluationindex.extract.FactOriginProjectOrgPeriodDailyDao;
import com.epmet.dto.extract.FactOriginProjectMainDailyDTO;
@ -436,16 +437,33 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
ifBeforeYesterday = false;
}
List<ScreenProjectDataDTO> projects = baseDao.initNewScreenProjectData(customerId, rows <= NumConstant.ZERO ? "" : dateId, dateId);
//如果不是昨天立项
if(!CollectionUtils.isEmpty(projects) && !ifBeforeYesterday)
computerIfExceed(projects,exceedLimit,about2exceedLimit);
projects.forEach(project -> {
if (ProjectConstant.CLOSED_CASE.equals(project.getProjectStatusCode())) {
//绿灯事件-结案项目
project.setProjectLevel(NumConstant.THREE);
} else {
if (NumConstant.ZERO == project.getResponseCount()) {
//红灯事件-未做任何响应处理未结案的项目
project.setProjectLevel(NumConstant.ONE);
} else {
//黄灯事件-至少做过一次响应处理答复但未结案的项目
project.setProjectLevel(NumConstant.TWO);
}
}
});
// //如果不是昨天立项
// if(!CollectionUtils.isEmpty(projects) && !ifBeforeYesterday) {
// computerIfExceed(projects,exceedLimit,about2exceedLimit);
// }
return projects;
}
@Override
public void computerIfExceed(List<ScreenProjectDataDTO> list,Integer exceedLimit,Integer about2exceedLimit){
if(CollectionUtils.isEmpty(list)) return;
if(CollectionUtils.isEmpty(list)) {
return;
}
Result<List<CostDayResultDTO>> costDays = epmetCommonServiceOpenFeignClient.costWorkDays(periodDao.selectProjectNodeStartStopTime(list.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())));
if(null != costDays && !CollectionUtils.isEmpty(costDays.getData())){
//key : projectId
@ -456,10 +474,11 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
if(!CollectionUtils.isEmpty(days)){
Integer max = days.stream().max(Comparator.comparing(CostDayResultDTO::getDetentionDays)).get().getDetentionDays();
//事件级别 红色1级:已超期;黄色2级:即将超期;绿色3级:未超期
if(max > exceedLimit)
if(max > exceedLimit) {
o.setProjectLevel(NumConstant.ONE);
else if(max >= about2exceedLimit)
} else if(max >= about2exceedLimit) {
o.setProjectLevel(NumConstant.TWO);
}
}
return o;
}).collect(Collectors.toList());
@ -476,5 +495,38 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return baseDao.getProjectPeriodForDiff(param.getCustomerId(),param.getDateId());
}
/**
* 计算项目事件级别
*
* @param list
* @param customerId
* @return void
* @author zhaoqifeng
* @date 2021/4/28 14:47
*/
@Override
public void setProjectLevel(List<ScreenProjectDataDTO> list, String customerId) {
if(CollectionUtils.isEmpty(list)) {
return;
}
List<ScreenProjectDataDTO> projects = baseDao.selectResponseCount(customerId);
Map<String, ScreenProjectDataDTO> map = projects.stream().collect(Collectors.toMap(ScreenProjectDataDTO :: getProjectId, v -> v, (v1, v2) -> v1));
list.forEach(item -> {
ScreenProjectDataDTO dto = map.get(item.getProjectId());
if (ProjectConstant.CLOSED.equals(dto.getProjectStatusCode())) {
item.setProjectLevel(NumConstant.THREE);
} else {
if (NumConstant.ZERO == dto.getResponseCount()) {
//红灯事件-未做任何响应处理未结案的项目
item.setProjectLevel(NumConstant.ONE);
} else {
//黄灯事件-至少做过一次响应处理答复但未结案的项目
item.setProjectLevel(NumConstant.TWO);
}
}
});
}
}

11
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenExtractService.java

@ -25,4 +25,15 @@ public interface ScreenExtractService {
*/
void extractMonthlyAll(ExtractScreenFormDTO formDTO);
/**
* desc: 实时抽取相关的数据
*
* @param customerId
* @param dateId
* @return void
* @author LiuJanJun
* @date 2021/4/27 6:12 下午
*/
void extractPartData(String customerId, String dateId);
}

51
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java

@ -170,6 +170,20 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
log.error("公众参与排行抽取到大屏失败,customerId为:"+customerId+"dateId为:"+dateId, e);
}
//基层治理- 难点赌点 screen_difficulty_data | screen_difficulty_img_data
try {
ScreenCentralZoneDataFormDTO param2 = new ScreenCentralZoneDataFormDTO();
param2.setCustomerId(customerId);
param2.setDateId(null);
log.info("【难点赌点数据上报开始------】 当前客户Id{}",param2.getCustomerId());
//screenGrassrootsGovernDataAbsorptionService.difficultyDataHub(param);
screenGrassrootsGovernDataAbsorptionService.difficultyDataExtract(param2);
log.info("【难点赌点数据上报结束------】 当前客户Id{}",param2.getCustomerId());
}catch (Exception e){
log.error("基层治理-难点赌点抽取到大屏失败,customerId为:"+customerId+"dateId为:"+dateId, e);
}
ScreenCentralZoneDataFormDTO param = new ScreenCentralZoneDataFormDTO();
param.setCustomerId(customerId);
param.setDateId(dateId);
@ -179,19 +193,7 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
}catch (Exception e){
log.error("中央区抽取到大屏失败,customerId为:"+customerId+"dateId为:"+dateId, e);
}
//基层治理- 难点赌点 screen_difficulty_data | screen_difficulty_img_data
try {
log.info("【难点赌点数据上报开始------】 当前客户Id{}",param.getCustomerId());
//screenGrassrootsGovernDataAbsorptionService.difficultyDataHub(param);
ScreenCentralZoneDataFormDTO param2 = new ScreenCentralZoneDataFormDTO();
param2.setCustomerId(customerId);
param2.setDateId(null);
screenGrassrootsGovernDataAbsorptionService.difficultyDataExtract(param2);
log.info("【难点赌点数据上报结束------】 当前客户Id{}",param.getCustomerId());
}catch (Exception e){
log.error("基层治理-难点赌点抽取到大屏失败,customerId为:"+customerId+"dateId为:"+dateId, e);
}
try {
// 项目(事件)分析按网格_按天统计
screenProjectGridDailyService.extractionProjectGridDaily(customerId, dateId);
@ -204,28 +206,39 @@ public class ScreenExtractServiceImpl implements ScreenExtractService {
}catch (Exception e){
log.error("项目(事件)分析按组织_按天统计失败,customerId为:"+customerId+"dateId为:"+dateId, e);
}
//项目分类打标签未上线,暂时屏蔽
try{
//大屏项目数据抽取_按天抽取
screenProjectSettleService.extractScreenData(param);
}catch (Exception e){
log.error("大屏项目数据抽取_按天抽取_按天统计失败,customerId为:"+customerId+"dateId为:"+dateId, e);
}
//按天统计:网格内各个分类下的项目总数
try{
projectCategoryGridDailyService.extractProjectCategoryData(customerId,dateId);
}catch(Exception e){
log.error("按天统计:网格内各个分类下的项目总数,customerId为:"+customerId+"dateId为:"+dateId, e);
}
// 按天统计:组织内各个分类下的项目总数
try{
projectCategoryOrgDailyService.extractProjectCategoryOrgData(customerId,dateId);
}catch(Exception e){
log.error("按天统计:组织内各个分类下的项目总数,customerId为:"+customerId+"dateId为:"+dateId, e);
}
extractPartData(customerId, dateId);
log.info("===== extractDaily method end ======");
}
@Override
public void extractPartData(String customerId, String dateId) {
ScreenCentralZoneDataFormDTO param = new ScreenCentralZoneDataFormDTO();
param.setCustomerId(customerId);
param.setDateId(dateId);
try{
//大屏项目数据抽取_按天抽取
screenProjectSettleService.extractScreenData(param);
}catch (Exception e){
log.error("大屏项目数据抽取_按天抽取_按天统计失败,customerId为:"+customerId+"dateId为:"+dateId, e);
}
}
/**
* @Description 按月计算
* @author zxc

8
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java

@ -118,9 +118,10 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic
// 给metaData和orientData赋上分类信息
List<String> projectIds =
Optional.ofNullable(metaData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())).orElse(new ArrayList<>());
if(!CollectionUtils.isEmpty(orientData))
Optional.of(metaData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())).orElse(new ArrayList<>());
if(!CollectionUtils.isEmpty(orientData)) {
projectIds.addAll(orientData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList()));
}
Map<String, Set<String>> categoryMap = projectService.getProjectCategory(projectIds);
if(!CollectionUtils.isEmpty(categoryMap)){
Map<String, String> integratedProjectCategoryMap = issueService.getIntegratedProjectCategory(categoryMap, param.getCustomerId());
@ -135,7 +136,8 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic
}
//重新计算orientData的级别 有现成的方法 fact_origin_project_org_period_daily
originMainService.computerIfExceed(orientData, exceedLimit,about2ExceedLimit);
// originMainService.computerIfExceed(orientData, exceedLimit,about2ExceedLimit);
originMainService.setProjectLevel(orientData, param.getCustomerId());
processService.updateProjectCloseTime(metaData);
//更新结案时间和结案状态
processService.updateProjectStatus(orientData,param.getDateId(),param.getCustomerId());

3
epmet-module/data-statistical/data-statistical-server/src/main/resources/bootstrap.yml

@ -205,3 +205,6 @@ shutdown:
graceful:
enable: true #是否开启优雅停机
waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
rocketmq:
name-server: @rocketmq.nameserver@

32
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml

@ -571,10 +571,18 @@
3 as projectLevel,
IF(data.PIDS IS NULL || TRIM(data.PIDS) = '',data.AGENCY_ID,CONCAT(REPLACE(data.PIDS,':',','),',',data.AGENCY_ID)) as allParentIds,
data.TOPIC_ID,
IFNULL(log.response, 0) AS responseCount,
#{dataEndTime} as dataEndTime
FROM `fact_origin_project_main_daily` data
LEFT JOIN DIM_AGENCY agency on data.agency_id = agency.id
LEFT JOIN (
SELECT PROJECT_ID, COUNT(IS_ACTIVE) AS response FROM fact_origin_project_log_daily
WHERE (ACTION_CODE = 'close' OR ACTION_CODE = 'response' OR ACTION_CODE = 'transfer' OR ACTION_CODE = 'return')
AND IS_ACTIVE = 1
AND CUSTOMER_ID = #{customerId}
GROUP BY PROJECT_ID
) log ON data.ID = log.PROJECT_ID
WHERE
data.DEL_FLAG = '0'
AND
@ -729,5 +737,29 @@
AND GRID_ID = ''
GROUP BY AGENCY_ID
</select>
<select id="selectResponseCount" resultType="com.epmet.dto.screen.ScreenProjectDataDTO">
SELECT
main.ID AS projectId,
main.PROJECT_STATUS AS projectStatusCode,
IFNULL(log.responseCount, 0) AS responseCount
FROM
fact_origin_project_main_daily main
LEFT JOIN
(SELECT
PROJECT_ID,
COUNT( IS_ACTIVE ) AS responseCount
FROM
fact_origin_project_log_daily
WHERE
( ACTION_CODE = 'close' OR ACTION_CODE = 'response' OR ACTION_CODE = 'transfer' OR ACTION_CODE = 'return' )
AND IS_ACTIVE = 1
AND DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
GROUP BY
PROJECT_ID) log
ON main.ID = log.PROJECT_ID
WHERE CUSTOMER_ID = #{customerId}
AND DEL_FLAG = '0'
</select>
</mapper>

6
epmet-module/epmet-message/epmet-message-client/pom.xml

@ -26,6 +26,12 @@
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-rocketmq</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

5
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java

@ -10,4 +10,9 @@ public interface SystemMessageType {
*/
String INIT_CUSTOMER = "init_customer";
/**
* 项目变动
*/
String PROJECT_CHANGED = "project_changed";
}

69
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java

@ -0,0 +1,69 @@
package com.epmet.send;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.SystemMessageType;
import com.epmet.dto.form.SystemMsgFormDTO;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import lombok.extern.slf4j.Slf4j;
/**
* desc: 发送mq消息直接到rocketMq 系统
*
* @author: LiuJanJun
* @date: 2021/4/23 2:39 下午
* @versio: 1.0
*/
@Slf4j
public class SendMqMsgUtil {
private static final SendMqMsgUtil INSTANCE = new SendMqMsgUtil();
private SendMqMsgUtil() {
}
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
public static SendMqMsgUtil build() {
return INSTANCE;
}
public SendMqMsgUtil openFeignClient(EpmetMessageOpenFeignClient epmetMessageOpenFeignClient) {
this.epmetMessageOpenFeignClient = epmetMessageOpenFeignClient;
return this;
}
/**
* desc: 发送小组成就消息,计算小组成就
*
* @param msgContent
* @return boolean
* @author LiuJanJun
* @date 2021/4/23 3:01 下午
* @remark 失败重试1次,调用端自行判断如果失败是否要继续执行
*/
public boolean sendProjectChangedMqMsg(ProjectChangedMQMsg msgContent) {
try {
SystemMsgFormDTO systemMsgFormDTO = new SystemMsgFormDTO();
systemMsgFormDTO.setMessageType(SystemMessageType.PROJECT_CHANGED);
systemMsgFormDTO.setContent(msgContent);
Result sendMsgResult = null;
log.info("sendProjectChangedMqMsg param:{}",msgContent);
int retryTime = 0;
do {
sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(systemMsgFormDTO);
} while ((sendMsgResult == null || !sendMsgResult.success()) && retryTime++ < NumConstant.TWO);
if (sendMsgResult != null && sendMsgResult.success()) {
return true;
}
log.error("发送(项目变动)系统消息到message服务失败:{},msg:{}", JSON.toJSONString(sendMsgResult), JSON.toJSONString(systemMsgFormDTO));
} catch (Exception e) {
log.error("sendMqMsg exception", e);
}
return false;
}
}

3
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java

@ -64,6 +64,9 @@ public class SystemMessageServiceImpl implements SystemMessageService {
case SystemMessageType.INIT_CUSTOMER:
topic = TopicConstants.INIT_CUSTOMER;
break;
case SystemMessageType.PROJECT_CHANGED:
topic = TopicConstants.PROJECT_CHANGED;
break;
}
return topic;
}

16
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java

@ -21,6 +21,7 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
@ -57,6 +58,7 @@ import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgFeignClient;
import com.epmet.redis.ProjectProcessRedis;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.ProjectProcessService;
import com.epmet.service.ProjectService;
import com.epmet.service.ProjectStaffService;
@ -384,6 +386,13 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
logger.error("项目流转,发送手机短信失败" + JSON.toJSONString(result));
}
//项目实时统计消息
ProjectChangedMQMsg msg = new ProjectChangedMQMsg(staffEntity.getCustomerId());
boolean msgResult = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendProjectChangedMqMsg(msg);
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
}
/**
@ -730,6 +739,13 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
if (!result.success()) {
logger.error("项目流转,发送手机短信失败" + JSON.toJSONString(result));
}
//项目实时统计消息
ProjectChangedMQMsg msg = new ProjectChangedMQMsg(staffEntity.getCustomerId());
boolean msgResult = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendProjectChangedMqMsg(msg);
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
}
/**

52
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -21,6 +21,7 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.tools.constant.*;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
@ -48,6 +49,7 @@ import com.epmet.resi.group.dto.topic.result.TopicAttachmentResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicFileResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.*;
import com.github.pagehelper.PageHelper;
import com.google.common.base.Joiner;
@ -543,6 +545,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!result.success()) {
logger.error("项目结案成功,发送微信订阅消息失败" + JSON.toJSONString(result));
}
//项目实时统计消息
ProjectChangedMQMsg msg = new ProjectChangedMQMsg(projectEntity.getCustomerId());
boolean msgResult = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendProjectChangedMqMsg(msg);
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
}
/**
@ -696,6 +705,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!result.success()) {
logger.error("项目结案成功,发送微信订阅消息失败" + JSON.toJSONString(result));
}
//项目实时统计消息
ProjectChangedMQMsg msg = new ProjectChangedMQMsg(projectEntity.getCustomerId());
boolean msgResult = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendProjectChangedMqMsg(msg);
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
}
@Override
@ -842,6 +858,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!result.success()) {
logger.error("项目退回,发送手机短信失败" + JSON.toJSONString(result));
}
//项目实时统计消息
ProjectChangedMQMsg mqMsg = new ProjectChangedMQMsg(projectStaff.getCustomerId());
boolean msgResult = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendProjectChangedMqMsg(mqMsg);
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
}
@Override
@ -1119,6 +1142,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
logger.error("项目吹哨,发送手机短信失败" + JSON.toJSONString(result));
}
//项目实时统计消息
ProjectChangedMQMsg msg = new ProjectChangedMQMsg(issueDTO.getCustomerId());
boolean msgResult = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendProjectChangedMqMsg(msg);
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
return issueProjectResultDTO;
}
@ -1191,6 +1221,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
throw new RenException("没有找到相关的节点耗时记录");
}
//项目实时统计消息
ProjectChangedMQMsg msg = new ProjectChangedMQMsg(projectStaff.getCustomerId());
boolean msgResult = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendProjectChangedMqMsg(msg);
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
}
/**
@ -1950,6 +1988,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
if (!result.success()) {
logger.error("项目退回,发送手机短信失败" + JSON.toJSONString(result));
}
//项目实时统计消息
ProjectChangedMQMsg mqMsg = new ProjectChangedMQMsg(projectEntity.getCustomerId());
boolean msgResult = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendProjectChangedMqMsg(mqMsg);
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
}
/**
@ -2031,6 +2076,13 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
throw new RenException("没有找到相关的节点耗时记录");
}
//项目实时统计消息
ProjectChangedMQMsg msg = new ProjectChangedMQMsg(projectStaff.getCustomerId());
boolean msgResult = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendProjectChangedMqMsg(msg);
if (!msgResult) {
log.error("项目实时统计消息发送失败");
}
}
/**

1
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/ResiGroupApplication.java

@ -27,5 +27,4 @@ public class ResiGroupApplication {
public static void main(String[] args) {
SpringApplication.run(ResiGroupApplication.class, args);
}
}

101
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/TestPController.java

@ -0,0 +1,101 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.group.controller;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.dto.form.mq.MqBaseMsgDTO;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.commons.tools.utils.SendMqMsgUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* 群组信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-03-28
*/
@RestController
public class TestPController {
@RequestMapping("scan")
public Result setVisitSwitch(@RequestParam String content){
String url = "https://epmet-dev.elinkservice.cn/api/epmetscan/api/textSyncScan";
TextTaskDTO p = new TextTaskDTO();
p.setDataId("1");
String content1 = "开着房车去旅行,已经成了不少人出游的新方式。临近“五一”,房车租赁市场持续火爆,尽管价格比平时贵了不少,可仍一车难求。\n" +
"\n" +
"“临近‘五一’,想开一辆房车拉着一家人去草原旅游,没想到一周前就已经租不到车了。”读者刘先生说,最近一段时间,他总是在一些短视频平台上看到有人开着房车出门旅行的视频。眼下春暖花开,正是出游的好时节,开上一辆房车,不仅节省了住宿费,还能体验一种不同的出行方式。不过,这周起刘先生搜索相关的房车租赁信息时,却发现不少房车租赁公司已经是一车难求了。\n" +
"在某房车租车软件上记者发现,位于房山和顺义的两个取车还车点,五一期间的全部车型已经被租赁一空。而在另一家房车租赁公司的价格目录里,明确标注了租赁价格分为平时价和节假日价,后者是前者的1.2倍。\n" +
"\n" +
"“‘五一’期间,北京的房车租赁情况很紧张,目前只剩一台东风了,你可以考虑一下。”一家房车租赁公司的工作人员介绍,他们公司规定“五一”期间租赁时间为五天起租,仅剩的东风车型每天的租金在1278元。“‘五一’期间的价格会比平时高一些,我建议您在5月6日之后租,一方面没有租赁时长的限制,另一方面租金会便宜不少,每天也就900多元。";
if (StringUtils.isBlank(content)){
p.setContent(content1);
}else{
p.setContent(content);
}
List<TextTaskDTO> list = new ArrayList<>();
list.add(p);
TextScanParamDTO param = new TextScanParamDTO();
param.setTasks(list);
Result<SyncScanResult> imgSyncScanResult = ScanContentUtils.textSyncScan(url, param);
System.out.println("==================="+ JSON.toJSONString(imgSyncScanResult));
SyncScanResult result = new SyncScanResult();
if (imgSyncScanResult != null){
SyncScanResult imgSyncScanResultData = imgSyncScanResult.getData();
if (imgSyncScanResult.success()&&imgSyncScanResultData.isAllPass()) {
result.setAllPass(imgSyncScanResultData.isAllPass());
result.getSuccessDataIds().addAll(imgSyncScanResultData.getSuccessDataIds());
result.getFailDataIds().addAll(imgSyncScanResultData.getFailDataIds());
System.out.println("================"+JSON.toJSONString(result));
}
}
return new Result().ok(result);
}
@RequestMapping("test-mq")
public Result testMqMsg(@RequestParam String content){
MqBaseMsgDTO msg = null;
if (StringUtils.isBlank(content)){
content = "{\"appId\":\"202007161443499985fa2d397436d10356542134c8f008c48\",\"eventClass\":\"resi_group\",\"eventTag\":\"shift_topic_to_issue\",\"msg\":\"[{\\\"actionFlag\\\":\\\"plus\\\",\\\"agencyId\\\":\\\"e9b55911549fe7b0d0427b557f7c5efc\\\",\\\"customerId\\\":\\\"45687aa479955f9d06204d415238f7cc\\\",\\\"eventClass\\\":\\\"resi_group\\\",\\\"eventTag\\\":\\\"topic_to_issue\\\",\\\"gridId\\\":\\\"708a3567b54ced7219666489f9d838ab\\\",\\\"groupId\\\":\\\"6838a625e4ccc0dc036f9903af833ad9\\\",\\\"isCommon\\\":false,\\\"remark\\\":\\\"小组成就3小组中发布的话题\\\\\\\"还是不行这里在测试测试测试为什么发反反复复反反复复反反复复方法不够爽肤水的分身乏术分身乏术发烧反反复复方法分为玩儿玩儿玩儿啦啦啦啦\\\\\\\"被转为议题\\\",\\\"sourceId\\\":\\\"67a06a217ecf46cd92944040323e70e0\\\",\\\"sourceType\\\":\\\"issue\\\",\\\"userId\\\":\\\"74b5d6792d89fb2fb2d0363de3cbc1aa\\\"},{\\\"actionFlag\\\":\\\"plus\\\",\\\"agencyId\\\":\\\"e9b55911549fe7b0d0427b557f7c5efc\\\",\\\"customerId\\\":\\\"45687aa479955f9d06204d415238f7cc\\\",\\\"eventTag\\\":\\\"shift_topic_to_issue\\\",\\\"gridId\\\":\\\"708a3567b54ced7219666489f9d838ab\\\",\\\"groupId\\\":\\\"6838a625e4ccc0dc036f9903af833ad9\\\",\\\"isCommon\\\":false,\\\"remark\\\":\\\"将话题\\\\\\\"还是不行\\\\\\\"转为议题\\\",\\\"sourceId\\\":\\\"67a06a217ecf46cd92944040323e70e0\\\",\\\"sourceType\\\":\\\"issue\\\",\\\"userId\\\":\\\"74b5d6792d89fb2fb2d0363de3cbc1aa\\\"}]\",\"requestUrl\":\"https://epmet-dev.elinkservice.cn/estos/producerService/producer/sendMsg\",\"token\":\"52d9d9b0e7d0eb5b8b81c205b579e07c\"}";
msg = JSON.parseObject(content,MqBaseMsgDTO.class);
}else{
msg = new MqBaseMsgDTO();
msg.setMsg(content);
msg.setEventClass("resi_group");
msg.setEventTag("shift_topic_to_issue");
}
Result<String> stringResult = SendMqMsgUtils.sendMsg(msg);
System.out.println("=========="+JSON.toJSONString(stringResult));
return stringResult;
}
}
Loading…
Cancel
Save