被动消息 根据id重试和根据搜索条件重试

segment2.0
linrf 2 years ago
parent ec5bf55d30
commit 14bb1b5d7e

@ -5,9 +5,6 @@ spring:
active: dev active: dev
application: application:
name: @artifactId@ name: @artifactId@
jackson:
date-format: yyyy-MM-dd hh:mm:ss
time-zone: GMT+8
datasource: datasource:
dynamic: dynamic:
primary: master #设置默认的数据源默认值为master primary: master #设置默认的数据源默认值为master
@ -16,92 +13,92 @@ spring:
#公司病案的文件服务数据库 #公司病案的文件服务数据库
master: master:
url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_archivefile?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_archivefile?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: docus
password: root password: docus702
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#公司病案的系统服务数据库 #公司病案的系统服务数据库
system: system:
url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_system?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_system?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: docus
password: root password: docus702
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#公司病案的基础服务数据库 #公司病案的基础服务数据库
record: record:
url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_medicalrecord?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_medicalrecord?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: docus
password: root password: docus702
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#医院的用户/科室/基础数据的数据库 #医院的用户/科室/基础数据的数据库
his: his:
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root@123456
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#病理数据 #病理数据
bl: bl:
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root@123456
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#电生理系统数据 #电生理系统数据
ecg: ecg:
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root@123456
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#电子病历系统数据 #电子病历系统数据
emr: emr:
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root@123456
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#护理文书系统数据 #护理文书系统数据
hl: hl:
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root@123456
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#手麻系统数据 #手麻系统数据
issubmit: issubmit:
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root@123456
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#lis系统数据 #lis系统数据
lis: lis:
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/lis?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://127.0.0.1:3306/lis?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root@123456
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#Pacs系统数据视图 #Pacs系统数据视图
pacs: pacs:
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root@123456
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#vte静脉血栓栓塞症 #vte静脉血栓栓塞症
vte: vte:
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root@123456
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
#重症系统数据 #重症系统数据
zz: zz:
url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root@123456
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
# rabbitmq: # rabbitmq:
@ -111,7 +108,7 @@ spring:
# password: guest # password: guest
redis: redis:
host: redis.docus.cn host: redis.docus.cn
# password: JSdocus@702 password: JSdocus@702
cloud: cloud:
nacos: nacos:
discovery: discovery:

@ -1,8 +1,8 @@
package com.docus.server.collect.web.job; package com.docus.server.collect.web.job;
import com.docus.server.entity.TaskMessage;
import com.docus.server.archivefile.service.ITaskMessageService; import com.docus.server.archivefile.service.ITaskMessageService;
import com.docus.server.collect.web.service.TrackRetryService; import com.docus.server.archivefile.service.impl.TrackRetryService;
import com.docus.server.entity.TaskMessage;
import com.docus.server.enums.StateEnum; import com.docus.server.enums.StateEnum;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

@ -4,14 +4,13 @@ import com.docus.infrastructure.web.request.SearchRequest;
import com.docus.infrastructure.web.response.PageResult; import com.docus.infrastructure.web.response.PageResult;
import com.docus.server.api.archivefile.TaskMessageApi; import com.docus.server.api.archivefile.TaskMessageApi;
import com.docus.server.archivefile.convert.TaskMessageConvert; import com.docus.server.archivefile.convert.TaskMessageConvert;
import com.docus.server.archivefile.convert.TaskMessageConverter;
import com.docus.server.archivefile.service.ITaskMessageRetryLogService;
import com.docus.server.archivefile.service.ITaskMessageService; import com.docus.server.archivefile.service.ITaskMessageService;
import com.docus.server.entity.TaskMessage; import com.docus.server.entity.TaskMessage;
import com.docus.server.vo.TaskMessageVO; import com.docus.server.vo.TaskMessageVO;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
/** /**
* Controller * Controller
@ -21,10 +20,6 @@ import javax.annotation.Resource;
public class TaskMessageController implements TaskMessageApi { public class TaskMessageController implements TaskMessageApi {
@Resource @Resource
private ITaskMessageService taskMessageService; private ITaskMessageService taskMessageService;
@Resource
private ITaskMessageRetryLogService taskMessageRetryLogService;
@Resource
private TaskMessageConverter taskMessageConverter;
/** /**
* *
@ -48,4 +43,22 @@ public class TaskMessageController implements TaskMessageApi {
public PageResult<TaskMessageVO> search(SearchRequest searchRequest) { public PageResult<TaskMessageVO> search(SearchRequest searchRequest) {
return taskMessageService.search(searchRequest); return taskMessageService.search(searchRequest);
} }
/**
*
*
* @param searchRequest
*/
@Override
public void searchRetry(SearchRequest searchRequest) {
taskMessageService.searchRetry(searchRequest);
}
/**
*
*/
@Override
public void findRetry(List<Long> ids) {
taskMessageService.findRetry(ids);
}
} }

@ -1,6 +1,5 @@
package com.docus.server.archivefile.convert; package com.docus.server.archivefile.convert;
import com.docus.core.util.DateUtil;
import com.docus.infrastructure.web.response.PageResult; import com.docus.infrastructure.web.response.PageResult;
import com.docus.server.entity.TaskMessage; import com.docus.server.entity.TaskMessage;
import com.docus.server.enums.CollectTypeEnum; import com.docus.server.enums.CollectTypeEnum;
@ -36,8 +35,6 @@ public interface TaskMessageConvert {
taskOriginalMessage.setJsonStr(json); taskOriginalMessage.setJsonStr(json);
taskOriginalMessage.setSource(xml); taskOriginalMessage.setSource(xml);
taskOriginalMessage.setState(StateEnum.OK); taskOriginalMessage.setState(StateEnum.OK);
taskOriginalMessage.setCreateTime(DateUtil.now());
taskOriginalMessage.setUpdateTime(DateUtil.now());
return taskOriginalMessage; return taskOriginalMessage;
} }
} }

@ -1,31 +0,0 @@
package com.docus.server.archivefile.convert;
import com.docus.core.util.DateUtil;
import com.docus.infrastructure.redis.service.IdService;
import com.docus.server.entity.TaskMessage;
import com.docus.server.enums.CollectTypeEnum;
import com.docus.server.enums.StateEnum;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component
public class TaskMessageConverter {
@Resource
private IdService idService;
public TaskMessage toConvertTaskOriginalMessageDO(String json, String xml, CollectTypeEnum collectType, String retryKey) {
TaskMessage taskOriginalMessage = new TaskMessage();
taskOriginalMessage.setId(idService.getDateSeq());
taskOriginalMessage.setName(collectType.name());
taskOriginalMessage.setMemo(collectType.getDesc());
taskOriginalMessage.setCollectType(collectType);
taskOriginalMessage.setRetryKey(retryKey);
taskOriginalMessage.setJsonStr(json);
taskOriginalMessage.setSource(xml);
taskOriginalMessage.setState(StateEnum.OK);
taskOriginalMessage.setCreateTime(DateUtil.now());
taskOriginalMessage.setUpdateTime(DateUtil.now());
return taskOriginalMessage;
}
}

@ -0,0 +1,29 @@
package com.docus.server.archivefile.convert;
import com.docus.server.entity.TaskMessage;
import com.docus.server.entity.TaskMessageRetryLog;
import com.docus.server.enums.StateEnum;
import org.mapstruct.Mapper;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
@Mapper
public interface TaskMessageRetryLogConvert {
TaskMessageRetryLogConvert INSTANCE = Mappers.getMapper(TaskMessageRetryLogConvert.class);
@Mappings({})
TaskMessageRetryLog convert(TaskMessage taskMessage);
default TaskMessageRetryLog toConvertRetryLog(TaskMessage message, Long id) {
TaskMessageRetryLog taskMessageRetryLog = convert(message);
taskMessageRetryLog.setId(id);
taskMessageRetryLog.setMessageId(message.getId());
return taskMessageRetryLog;
}
default void afterThrowingProcess(String errorMsg, TaskMessageRetryLog taskMessageRetryLog) {
taskMessageRetryLog.setErrorMsg(errorMsg);
taskMessageRetryLog.setState(StateEnum.FAIL);
}
}

@ -1,8 +0,0 @@
package com.docus.server.archivefile.convert;
import org.springframework.stereotype.Component;
@Component
public class TaskMessageRetryLogConverter {
}

@ -33,7 +33,7 @@ public class TaskMessageDaoImpl extends BaseDaoImpl<TaskMessageMapper, TaskMessa
query.eq(TaskMessage::getState, searchRequest.getParams("state")); query.eq(TaskMessage::getState, searchRequest.getParams("state"));
} }
if (Func.isNotBlank(searchRequest.getKeyword())) { if (Func.isNotBlank(searchRequest.getKeyword())) {
query.like(TaskMessage::getName, String.format("%s%s%s", "%", searchRequest.getKeyword(), "%")); query.like(TaskMessage::getMemo, String.format("%s%s%s", "%", searchRequest.getKeyword(), "%"));
} }
if (searchRequest.getParams("collectType") != null) { if (searchRequest.getParams("collectType") != null) {
query.eq(TaskMessage::getCollectType, searchRequest.getParams("collectType")); query.eq(TaskMessage::getCollectType, searchRequest.getParams("collectType"));

@ -12,4 +12,6 @@ public interface ITaskMessageRetryLogService {
TaskMessageRetryLog findById(String id); TaskMessageRetryLog findById(String id);
PageResult<TaskMessageRetryLog> search(SearchRequest searchRequest); PageResult<TaskMessageRetryLog> search(SearchRequest searchRequest);
void saveTaskMessageRetryLog(TaskMessageRetryLog taskMessageRetryLog);
} }

@ -20,4 +20,8 @@ public interface ITaskMessageService {
TaskMessage findById(String id); TaskMessage findById(String id);
PageResult<TaskMessageVO> search(SearchRequest searchRequest); PageResult<TaskMessageVO> search(SearchRequest searchRequest);
void searchRetry(SearchRequest searchRequest);
void findRetry(List<Long> ids);
} }

@ -2,19 +2,17 @@ package com.docus.server.archivefile.service.impl;
import com.docus.infrastructure.web.request.SearchRequest; import com.docus.infrastructure.web.request.SearchRequest;
import com.docus.infrastructure.web.response.PageResult; import com.docus.infrastructure.web.response.PageResult;
import com.docus.server.archivefile.convert.TaskMessageRetryLogConverter;
import com.docus.server.archivefile.infrastructure.dao.ITaskMessageRetryLogDao; import com.docus.server.archivefile.infrastructure.dao.ITaskMessageRetryLogDao;
import com.docus.server.archivefile.service.ITaskMessageRetryLogService; import com.docus.server.archivefile.service.ITaskMessageRetryLogService;
import com.docus.server.entity.TaskMessageRetryLog; import com.docus.server.entity.TaskMessageRetryLog;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
@Service @Service
public class TaskMessageRetryLogServiceImpl implements ITaskMessageRetryLogService { public class TaskMessageRetryLogServiceImpl implements ITaskMessageRetryLogService {
@Resource
private TaskMessageRetryLogConverter taskMessageRetryLogConverter;
@Resource @Resource
private ITaskMessageRetryLogDao taskMessageRetryLogDao; private ITaskMessageRetryLogDao taskMessageRetryLogDao;
@ -32,4 +30,10 @@ public class TaskMessageRetryLogServiceImpl implements ITaskMessageRetryLogServi
public PageResult<TaskMessageRetryLog> search(SearchRequest searchRequest) { public PageResult<TaskMessageRetryLog> search(SearchRequest searchRequest) {
return taskMessageRetryLogDao.search(searchRequest); return taskMessageRetryLogDao.search(searchRequest);
} }
@Transactional(rollbackFor = Exception.class)
@Override
public void saveTaskMessageRetryLog(TaskMessageRetryLog taskMessageRetryLog) {
taskMessageRetryLogDao.save(taskMessageRetryLog);
}
} }

@ -8,7 +8,6 @@ import com.docus.infrastructure.redis.service.IdService;
import com.docus.infrastructure.web.request.SearchRequest; import com.docus.infrastructure.web.request.SearchRequest;
import com.docus.infrastructure.web.response.PageResult; import com.docus.infrastructure.web.response.PageResult;
import com.docus.server.archivefile.convert.TaskMessageConvert; import com.docus.server.archivefile.convert.TaskMessageConvert;
import com.docus.server.archivefile.convert.TaskMessageConverter;
import com.docus.server.archivefile.infrastructure.dao.ITaskMessageDao; import com.docus.server.archivefile.infrastructure.dao.ITaskMessageDao;
import com.docus.server.archivefile.infrastructure.dao.ITaskMessageRetryLogDao; import com.docus.server.archivefile.infrastructure.dao.ITaskMessageRetryLogDao;
import com.docus.server.archivefile.service.ITaskMessageService; import com.docus.server.archivefile.service.ITaskMessageService;
@ -17,6 +16,7 @@ import com.docus.server.entity.TaskMessageRetryLog;
import com.docus.server.enums.CollectTypeEnum; import com.docus.server.enums.CollectTypeEnum;
import com.docus.server.enums.StateEnum; import com.docus.server.enums.StateEnum;
import com.docus.server.vo.TaskMessageVO; import com.docus.server.vo.TaskMessageVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -25,16 +25,17 @@ import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Slf4j
@Service @Service
public class TaskMessageServiceImpl implements ITaskMessageService { public class TaskMessageServiceImpl implements ITaskMessageService {
@Resource
private TaskMessageConverter converter;
@Resource @Resource
private ITaskMessageDao taskMessageDao; private ITaskMessageDao taskMessageDao;
@Resource @Resource
private ITaskMessageRetryLogDao taskMessageRetryLogDao; private ITaskMessageRetryLogDao taskMessageRetryLogDao;
@Resource @Resource
private IdService idService; private IdService idService;
@Resource
private TrackRetryService trackRetryService;
/** /**
* ws xml * ws xml
@ -43,7 +44,6 @@ public class TaskMessageServiceImpl implements ITaskMessageService {
@Override @Override
public Long insertTaskMessage(String json, String xml, CollectTypeEnum collectType, String retryKey) { public Long insertTaskMessage(String json, String xml, CollectTypeEnum collectType, String retryKey) {
TaskMessage taskOriginalMessage = TaskMessageConvert.INSTANCE.convert(json, xml, collectType, retryKey, idService.getDateSeq()); TaskMessage taskOriginalMessage = TaskMessageConvert.INSTANCE.convert(json, xml, collectType, retryKey, idService.getDateSeq());
// TaskMessage taskOriginalMessage = converter.toConvertTaskOriginalMessageDO(json, xml, collectType, retryKey);
taskMessageDao.save(taskOriginalMessage); taskMessageDao.save(taskOriginalMessage);
return taskOriginalMessage.getId(); return taskOriginalMessage.getId();
} }
@ -76,7 +76,7 @@ public class TaskMessageServiceImpl implements ITaskMessageService {
@Override @Override
public PageResult<TaskMessageVO> search(SearchRequest request) { public PageResult<TaskMessageVO> search(SearchRequest request) {
PageResult<TaskMessageVO> result = TaskMessageConvert.INSTANCE.convert(taskMessageDao.searchTaskMessage(request)); PageResult<TaskMessageVO> result = TaskMessageConvert.INSTANCE.convert(searchTaskMessage(request));
if (CollectionUtils.isEmpty(result.getList())) { if (CollectionUtils.isEmpty(result.getList())) {
return new PageResult<>(); return new PageResult<>();
@ -93,4 +93,34 @@ public class TaskMessageServiceImpl implements ITaskMessageService {
return result; return result;
} }
public PageResult<TaskMessage> searchTaskMessage(SearchRequest request) {
return taskMessageDao.searchTaskMessage(request);
}
@Override
public void searchRetry(SearchRequest searchRequest) {
PageResult<TaskMessage> result = searchTaskMessage(searchRequest);
actionRetry(result.getList());
}
@Override
public void findRetry(List<Long> ids) {
List<TaskMessage> taskMessages = taskMessageDao.findBy("id", ids);
actionRetry(taskMessages);
}
private void actionRetry(List<TaskMessage> taskMessages) {
if (CollectionUtils.isEmpty(taskMessages)) {
return;
}
for (TaskMessage message : taskMessages) {
trackRetryService.doRetry(message);
}
}
} }

@ -1,18 +1,16 @@
package com.docus.server.collect.web.service; package com.docus.server.archivefile.service.impl;
import com.docus.core.util.DateUtil;
import com.docus.core.util.json.JSON; import com.docus.core.util.json.JSON;
import com.docus.infrastructure.redis.service.IdService; import com.docus.infrastructure.redis.service.IdService;
import com.docus.log.executor.TrackRetrySpringExecutor; import com.docus.log.executor.TrackRetrySpringExecutor;
import com.docus.log.handler.IJobHandler; import com.docus.log.handler.IJobHandler;
import com.docus.log.handler.impl.MethodJobHandler; import com.docus.log.handler.impl.MethodJobHandler;
import com.docus.server.archivefile.convert.TaskMessageRetryLogConvert;
import com.docus.server.archivefile.infrastructure.dao.ITaskMessageRetryLogDao; import com.docus.server.archivefile.infrastructure.dao.ITaskMessageRetryLogDao;
import com.docus.server.entity.TaskMessage; import com.docus.server.entity.TaskMessage;
import com.docus.server.entity.TaskMessageRetryLog; import com.docus.server.entity.TaskMessageRetryLog;
import com.docus.server.enums.StateEnum;
import com.docus.server.util.ExceptionUtils; import com.docus.server.util.ExceptionUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.retry.annotation.Backoff; import org.springframework.retry.annotation.Backoff;
import org.springframework.retry.annotation.Retryable; import org.springframework.retry.annotation.Retryable;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
@ -33,36 +31,24 @@ public class TrackRetryService {
@Async("recordMessage") @Async("recordMessage")
@Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000L, multiplier = 1.5)) @Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000L, multiplier = 1.5))
public void doRetry(TaskMessage message) throws Exception { public void doRetry(TaskMessage message) {
TaskMessageRetryLogConvert retryLogConvert = TaskMessageRetryLogConvert.INSTANCE;
TaskMessageRetryLog taskMessageRetryLog = beforeProcess(message); TaskMessageRetryLog taskMessageRetryLog = retryLogConvert.toConvertRetryLog(message, idService.getDateSeq());
try { try {
IJobHandler jobHandler = TrackRetrySpringExecutor.loadJobHandler(message.getRetryKey()); IJobHandler jobHandler = TrackRetrySpringExecutor.loadJobHandler(message.getRetryKey());
String name = ((MethodJobHandler) jobHandler).getMethod().getParameterTypes()[0].getName(); String name = ((MethodJobHandler) jobHandler).getMethod().getParameterTypes()[0].getName();
Object o = JSON.fromJSON(message.getJsonStr(), Class.forName(name)); Object o = JSON.fromJSON(message.getJsonStr(), Class.forName(name));
jobHandler.execute(o); jobHandler.execute(o);
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
afterThrowingProcess(ExceptionUtils.getExceptionMessage(e), taskMessageRetryLog); retryLogConvert.afterThrowingProcess(ExceptionUtils.getExceptionMessage(e), taskMessageRetryLog);
} }
taskMessageRetryLogDao.save(taskMessageRetryLog); taskMessageRetryLogDao.save(taskMessageRetryLog);
} }
private void afterThrowingProcess(String errorMsg, TaskMessageRetryLog taskMessageRetryLog) {
taskMessageRetryLog.setErrorMsg(errorMsg);
taskMessageRetryLog.setState(StateEnum.FAIL);
}
private TaskMessageRetryLog beforeProcess(TaskMessage message) {
TaskMessageRetryLog taskMessageRetryLog = new TaskMessageRetryLog();
BeanUtils.copyProperties(message, taskMessageRetryLog);
taskMessageRetryLog.setMessageId(message.getId());
taskMessageRetryLog.setId(idService.getDateSeq());
taskMessageRetryLog.setCreateTime(DateUtil.now());
taskMessageRetryLog.setUpdateTime(DateUtil.now());
return taskMessageRetryLog;
}
} }

@ -6,7 +6,13 @@ import com.docus.server.vo.TaskMessageVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
/** /**
@ -38,4 +44,19 @@ public interface TaskMessageApi {
@PostMapping("/search") @PostMapping("/search")
PageResult<TaskMessageVO> search(@RequestBody SearchRequest searchRequest); PageResult<TaskMessageVO> search(@RequestBody SearchRequest searchRequest);
/**
*
*
* @param searchRequest
*/
@ApiOperation("查询范围批量重试")
@PostMapping("/search/retry")
void searchRetry(@RequestBody SearchRequest searchRequest);
/**
*
*/
@ApiOperation("根据主键批量重试")
@PostMapping("/find/retry")
void findRetry(@RequestBody List<Long> ids);
} }

@ -223,21 +223,21 @@
</dependency> </dependency>
<!-- 实体映射转换 start --> <!-- 实体映射转换 start -->
<dependency> <!-- <dependency>-->
<groupId>org.mapstruct</groupId> <!-- <groupId>org.mapstruct</groupId>-->
<artifactId>mapstruct</artifactId> <!-- <artifactId>mapstruct</artifactId>-->
<version>${org.mapstruct.version}</version> <!-- <version>${org.mapstruct.version}</version>-->
</dependency> <!-- </dependency>-->
<dependency> <!-- <dependency>-->
<groupId>org.mapstruct</groupId> <!-- <groupId>org.mapstruct</groupId>-->
<artifactId>mapstruct-jdk8</artifactId> <!-- <artifactId>mapstruct-jdk8</artifactId>-->
<version>${org.mapstruct.version}</version> <!-- <version>${org.mapstruct.version}</version>-->
</dependency> <!-- </dependency>-->
<dependency> <!-- <dependency>-->
<groupId>org.mapstruct</groupId> <!-- <groupId>org.mapstruct</groupId>-->
<artifactId>mapstruct-processor</artifactId> <!-- <artifactId>mapstruct-processor</artifactId>-->
<version>${org.mapstruct.version}</version> <!-- <version>${org.mapstruct.version}</version>-->
</dependency> <!-- </dependency>-->
<!-- 实体映射转换 end --> <!-- 实体映射转换 end -->
</dependencies> </dependencies>
@ -254,27 +254,27 @@
</profiles> </profiles>
<build> <!-- <build>-->
<plugins> <!-- <plugins>-->
<plugin> <!-- <plugin>-->
<groupId>org.apache.maven.plugins</groupId> <!-- <groupId>org.apache.maven.plugins</groupId>-->
<artifactId>maven-compiler-plugin</artifactId> <!-- <artifactId>maven-compiler-plugin</artifactId>-->
<configuration> <!-- <configuration>-->
<annotationProcessorPaths> <!-- <annotationProcessorPaths>-->
<path> <!-- <path>-->
<groupId>org.projectlombok</groupId> <!-- <groupId>org.projectlombok</groupId>-->
<artifactId>lombok</artifactId> <!-- <artifactId>lombok</artifactId>-->
<version>${lombok.version}</version> <!-- <version>${lombok.version}</version>-->
</path> <!-- </path>-->
<path> <!-- <path>-->
<groupId>org.mapstruct</groupId> <!-- <groupId>org.mapstruct</groupId>-->
<artifactId>mapstruct-processor</artifactId> <!-- <artifactId>mapstruct-processor</artifactId>-->
<version>${org.mapstruct.version}</version> <!-- <version>${org.mapstruct.version}</version>-->
</path> <!-- </path>-->
</annotationProcessorPaths> <!-- </annotationProcessorPaths>-->
</configuration> <!-- </configuration>-->
</plugin> <!-- </plugin>-->
</plugins> <!-- </plugins>-->
</build> <!-- </build>-->
</project> </project>

Loading…
Cancel
Save