job增加异常处理

segment2.0
beeajax 2 years ago
parent 72d8db7d26
commit 13bbe0e203

@ -3,7 +3,7 @@ package com.docus.server.collect.basic.http;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.log.context.TrackContext;
import com.docus.server.collect.IHttpResult;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import org.springframework.stereotype.Component;
import java.util.Map;

@ -3,7 +3,7 @@ package com.docus.server.collect.basic.http;
import com.docus.core.util.DateUtil;
import com.docus.log.context.TrackContext;
import com.docus.server.collect.basic.ws.impl.BasicServerImpl;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.record.pojo.dto.TBasicDTO;
import com.docus.server.collect.IConverter;
import org.springframework.stereotype.Component;

@ -5,7 +5,7 @@ import com.docus.core.util.Func;
import com.docus.log.context.TrackContext;
import com.docus.server.collect.basic.ws.impl.BasicServerImpl;
import com.docus.server.collect.IWsResult;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import org.springframework.stereotype.Component;
import java.util.Date;

@ -3,7 +3,7 @@ package com.docus.server.collect.basic.ws;
import com.docus.core.util.DateUtil;
import com.docus.log.context.TrackContext;
import com.docus.server.collect.basic.ws.impl.BasicServerImpl;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.record.pojo.dto.TBasicDTO;
import com.docus.server.collect.IConverter;
import org.springframework.stereotype.Component;

@ -3,7 +3,7 @@ package com.docus.server.collect.user.mq.test;
import com.docus.server.collect.IConverter;
import com.docus.server.collect.IHttpResult;
import com.docus.server.collect.web.enums.CollectTypeEnum;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;

@ -7,7 +7,7 @@ import com.docus.log.context.TrackHelper;
import com.docus.server.collect.IConverter;
import com.docus.server.collect.IHttpResult;
import com.docus.server.collect.web.enums.CollectTypeEnum;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.record.pojo.dto.TBasicDTO;
import io.swagger.annotations.Api;

@ -4,7 +4,7 @@ import com.docus.core.util.json.JSON;
import com.docus.log.annotation.TrackGroup;
import com.docus.log.context.TrackHelper;
import com.docus.server.collect.basic.mq.IBasicMqCollectService;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.record.pojo.dto.TBasicDTO;
import lombok.extern.slf4j.Slf4j;

@ -4,7 +4,7 @@ import com.docus.core.util.json.JSON;
import com.docus.log.annotation.TrackGroup;
import com.docus.log.context.TrackHelper;
import com.docus.server.collect.basic.mq.IBasicMqCollectService;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.record.pojo.dto.TBasicDTO;
import lombok.extern.slf4j.Slf4j;

@ -4,7 +4,7 @@ import com.docus.core.util.json.JSON;
import com.docus.log.annotation.TrackGroup;
import com.docus.log.context.TrackHelper;
import com.docus.server.collect.basic.mq.IBasicMqCollectService;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.record.pojo.dto.TBasicDTO;
import lombok.extern.slf4j.Slf4j;

@ -7,7 +7,7 @@ import com.docus.server.collect.IConverter;
import com.docus.server.collect.IWsResult;
import com.docus.server.collect.basic.ws.IBasicServer;
import com.docus.server.collect.web.enums.CollectTypeEnum;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.record.pojo.dto.TBasicDTO;
import lombok.extern.slf4j.Slf4j;

@ -9,7 +9,7 @@ import com.docus.server.collect.IHttpResult;
import com.docus.server.collect.web.enums.CollectTypeEnum;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.sys.common.pojo.dto.DeptDTO;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;

@ -4,7 +4,7 @@ import com.docus.core.util.json.JSON;
import com.docus.log.annotation.TrackGroup;
import com.docus.log.context.TrackHelper;
import com.docus.server.collect.dept.mq.IDeptMqCollectService;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.sys.common.pojo.dto.DeptDTO;
import lombok.extern.slf4j.Slf4j;

@ -4,7 +4,7 @@ import com.docus.core.util.json.JSON;
import com.docus.log.annotation.TrackGroup;
import com.docus.log.context.TrackHelper;
import com.docus.server.collect.dept.mq.IDeptMqCollectService;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.sys.common.pojo.dto.DeptDTO;
import lombok.extern.slf4j.Slf4j;

@ -4,7 +4,7 @@ import com.docus.core.util.json.JSON;
import com.docus.log.annotation.TrackGroup;
import com.docus.log.context.TrackHelper;
import com.docus.server.collect.dept.mq.IDeptMqCollectService;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.sys.common.pojo.dto.DeptDTO;
import lombok.extern.slf4j.Slf4j;

@ -2,6 +2,7 @@ package com.docus.server.collect.dept.view;
import com.docus.server.collect.ICollector;
import com.docus.server.collect.web.job.AbstractCollectJob;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.his.service.IHisService;
import com.docus.server.sys.common.pojo.dto.DeptDTO;
import com.xxl.job.core.handler.annotation.XxlJob;
@ -22,6 +23,8 @@ import java.util.List;
public class DeptViewCollectJob extends AbstractCollectJob<DeptDTO> {
@Resource
private IHisService hisService;
@Resource
private CollectService collectService;
/**
* xxl jobhandler
@ -34,6 +37,7 @@ public class DeptViewCollectJob extends AbstractCollectJob<DeptDTO> {
/**
* xxl jobhandler
*/
@XxlJob("startIncDeptViewCollect")
public void startIncDeptViewCollect() {
super.startCollectIncrement(getJobParam());

@ -8,7 +8,7 @@ import com.docus.server.collect.IWsResult;
import com.docus.server.collect.web.enums.CollectTypeEnum;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.sys.common.pojo.dto.DeptDTO;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.dept.ws.IDeptServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@ -7,7 +7,7 @@ import com.docus.server.collect.IConverter;
import com.docus.server.collect.IWsResult;
import com.docus.server.archivefile.pojo.dto.ReportDTO;
import com.docus.server.collect.web.enums.CollectTypeEnum;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.report.ws.IReportServer;
import com.docus.server.collect.report.service.IReportService;
import lombok.extern.slf4j.Slf4j;

@ -7,7 +7,7 @@ import com.docus.log.context.TrackHelper;
import com.docus.server.collect.IConverter;
import com.docus.server.collect.IHttpResult;
import com.docus.server.collect.web.enums.CollectTypeEnum;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.sys.common.pojo.dto.UserDTO;
import io.swagger.annotations.Api;

@ -4,7 +4,7 @@ import com.docus.core.util.json.JSON;
import com.docus.log.annotation.TrackGroup;
import com.docus.log.context.TrackHelper;
import com.docus.server.collect.user.mq.IUserMqCollectService;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.sys.common.pojo.dto.UserDTO;
import lombok.extern.slf4j.Slf4j;

@ -4,7 +4,7 @@ import com.docus.core.util.json.JSON;
import com.docus.log.annotation.TrackGroup;
import com.docus.log.context.TrackHelper;
import com.docus.server.collect.user.mq.IUserMqCollectService;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.sys.common.pojo.dto.UserDTO;
import lombok.extern.slf4j.Slf4j;

@ -4,7 +4,7 @@ import com.docus.core.util.json.JSON;
import com.docus.log.annotation.TrackGroup;
import com.docus.log.context.TrackHelper;
import com.docus.server.collect.user.mq.IUserMqCollectService;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.sys.common.pojo.dto.UserDTO;
import lombok.extern.slf4j.Slf4j;

@ -7,7 +7,7 @@ import com.docus.server.collect.IConverter;
import com.docus.server.collect.IWsResult;
import com.docus.server.collect.user.ws.IUserServer;
import com.docus.server.collect.web.enums.CollectTypeEnum;
import com.docus.server.collect.web.processor.VisitorProcessor;
import com.docus.server.collect.web.process.VisitorProcessor;
import com.docus.server.collect.web.service.CollectService;
import com.docus.server.sys.common.pojo.dto.UserDTO;
import lombok.extern.slf4j.Slf4j;

@ -14,7 +14,7 @@ public class TaskOriginalMessageConverter {
@Resource
private IdService idService;
public TaskOriginalMessage toConvertTaskOriginalMessageDO(Object json, String xml, CollectTypeEnum collectType) {
public TaskOriginalMessage toConvertTaskOriginalMessageDO(String json, String xml, CollectTypeEnum collectType) {
TaskOriginalMessage taskOriginalMessage = new TaskOriginalMessage();
taskOriginalMessage.setId(idService.getDateSeq());
taskOriginalMessage.setName(collectType.name());

@ -1,5 +1,6 @@
package com.docus.server.collect.web.domain;
import com.docus.server.collect.web.enums.StateEnum;
import com.docus.server.collect.web.utils.DateSpiltUtil;
import com.docus.server.collect.web.utils.PeriodTime;
import lombok.Data;
@ -58,6 +59,15 @@ public class TaskConfig {
*/
private Date incPointerTime;
/**
*
*/
private StateEnum state = StateEnum.OK;
/**
*
*/
private String errorMsg;
public List<PeriodTime> getAllPeriodTimes() {
List<PeriodTime> periodTimes = DateSpiltUtil.spiltDate(this.getStartTime(), this.endTime, 1000 * spiltPeriod);

@ -45,6 +45,19 @@ public enum CollectTypeEnum implements IIntegerEnum {
RABBIT_MQ_PASSIVE_UPDATE_DEPT(26, "RABBIT_MQ_PASSIVE_UPDATE_DEPT", "修改-科室信息"),
RABBIT_MQ_PASSIVE_INSERT_BASIC(27, "RABBIT_MQ_PASSIVE_INSERT_BASIC", "新增-基础数据"),
RABBIT_MQ_PASSIVE_UPDATE_BASIC(28, "RABBIT_MQ_PASSIVE_UPDATE_BASIC", "修改-基础数据"),
/**
* JOB
*/
JOB_VIEW_DEPT(29, "JOB_VIEW_DEPT", "新增/修改-科室信息"),
JOB_USER(30, "JOB_USER", "新增/修改-用户信息"),
JOB_INSERT_BASIC(31, "JOB_INSERT_BASIC", "新增/修改-基础数据"),
JOB_UPDATE_BASIC(32, "JOB_UPDATE_BASIC", "新增/修改-基础数据"),
JOB_SA_REPORT(33, "JOB_SA_REPORT", "新增-手麻报告信息"),
JOB_ICU_REPORT(34, "JOB_ICU_REPORT", "新增-重症报告信息"),
JOB_REPORT(35, "JOB_REPORT", "新增-检验报告信息"),
JOB_INSERT_REPORT(36, "JOB_INSERT_REPORT", "新增-检查报告的信息"),
JOB_UPDATE_REPORT(37, "JOB_UPDATE_REPORT", "更新-检查报告的信息"),
;
private Integer value;

@ -45,7 +45,7 @@ public class TaskOriginalMessage implements Serializable {
@ApiModelProperty(value = "原始报文转对象json")
@TableField("json_str")
private Object jsonStr;
private String jsonStr;
@ApiModelProperty(value = "原始报文")
@TableField("source")
@ -55,6 +55,10 @@ public class TaskOriginalMessage implements Serializable {
@TableField("state")
private StateEnum state;
@ApiModelProperty(value = "本批次异常信息")
@TableField("error_msg")
private String errorMsg;
@ApiModelProperty(value = "入库时间")
@TableField("create_time")
private Date createTime;

@ -3,6 +3,7 @@ package com.docus.server.collect.web.job;
import com.docus.core.util.Func;
import com.docus.server.collect.IJob;
import com.docus.server.collect.web.domain.TaskConfig;
import com.docus.server.collect.web.enums.StateEnum;
import com.docus.server.collect.web.service.ITaskConfigService;
import com.docus.server.collect.web.utils.PeriodTime;
import com.docus.server.record.service.ITBasicService;
@ -27,18 +28,24 @@ public abstract class AbstractCollectJob<T> implements IJob<T> {
@Override
public void startCollectAll(String taskConfigId) {
TaskConfig taskConfig = taskConfigService.getTaskConfig(taskConfigId);
TaskConfig taskConfig = getTaskConfig(taskConfigId);
try {
List<PeriodTime> periodTimes = taskConfig.getAllPeriodTimes();
for (PeriodTime periodTime : periodTimes) {
get(periodTime, taskConfig);
taskConfigService.updateAllPointerDate(taskConfigId, periodTime.getPeriodEndDate());
}
} catch (Exception ex) {
updateTaskState(ex, taskConfig);
}
}
@Override
public void startCollectIncrement(String taskConfigId) {
TaskConfig taskConfig = taskConfigService.getTaskConfig(taskConfigId);
try {
List<PeriodTime> periodTimes = taskConfig.getIncPeriodTimes();
periodTimes.forEach(periodTime -> {
@ -46,6 +53,9 @@ public abstract class AbstractCollectJob<T> implements IJob<T> {
taskConfigService.updateIncPointerDate(taskConfigId, periodTime.getPeriodEndDate());
});
} catch (Exception ex) {
updateTaskState(ex, taskConfig);
}
}
@Override
@ -68,6 +78,17 @@ public abstract class AbstractCollectJob<T> implements IJob<T> {
}
}
private void updateTaskState(Exception ex, TaskConfig taskConfig) {
taskConfig.setState(StateEnum.FAIL);
String message = ex.getMessage();
taskConfig.setErrorMsg(message.length() > 500 ? message.substring(0, 500) : message);
taskConfigService.updateByTaskId(taskConfig);
}
private TaskConfig getTaskConfig(String taskConfigId) {
return taskConfigService.getTaskConfig(taskConfigId);
}
protected String getJobParam() {
return XxlJobHelper.getJobParam();
}

@ -0,0 +1,91 @@
package com.docus.server.collect.web.process;
import com.docus.core.util.Func;
import com.docus.core.util.json.JSON;
import com.docus.log.context.TrackContext;
import com.docus.log.processor.AbstractProcessor;
import com.docus.server.collect.IConverter;
import com.docus.server.collect.IResult;
import com.docus.server.collect.web.enums.CollectTypeEnum;
import com.docus.server.collect.web.enums.IIntegerEnum;
import com.docus.server.collect.web.enums.StateEnum;
import com.docus.server.collect.web.service.ITaskOriginalMessageService;
import com.docus.server.collect.web.utils.SpringUtils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.xxl.job.core.context.XxlJobHelper;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
/**
* @author linruifeng
*/
@Slf4j
public class JobProcessor extends AbstractProcessor {
private ITaskOriginalMessageService messageService;
private IConverter converter;
private IResult result;
/**
*
*/
@Override
public Object beforeProcess(TrackContext context) {
super.beforeProcess(context);
initBeans(context.getBeanNames());
String message = XxlJobHelper.getJobParam();
context.setArgs(new Object[]{message});
if (Func.isEmpty(message)) {
throw new RuntimeException("参数为空");
}
// String jsonStr = JSON.toJSON(converter.convert(message, context.getGroup()));
Long taskId = messageService.insertTaskOriginalMessage("", message, IIntegerEnum.fromDisplay(CollectTypeEnum.class, context.getGroup()));
Map<String, Object> params = context.getParams();
params.put("taskId", taskId);
// params.put("jsonStr", jsonStr);
params.put("group", context.getGroup());
return null;
}
/**
*
*/
@Override
public Object doProcess(TrackContext context) {
Map<String, Object> params = context.getParams();
try {
Long taskId = (Long) params.get("taskId");
String afterReturnResult = (String) params.get("jsonStr");
params.put("msg", context.getExMessageResult());
if (Func.isNotEmpty(afterReturnResult)) {
params.putAll(JSON.fromJSONWithGeneric(afterReturnResult, new TypeReference<Map<? extends String, ?>>() {
}));
}
if (!context.isError()) {
log.info("=== AOP 后置通知 ===");
params.put("msg", "操作成功!");
messageService.updateTaskOriginalMessage(taskId, afterReturnResult, context.getExMessageResult(), StateEnum.OK);
return result.ok(params);
} else {
log.info("=== AOP 异常通知 ===");
log.error((String) params.get(context.getExMessageResult()));
messageService.updateTaskOriginalMessage(taskId, afterReturnResult, context.getExMessageResult(), StateEnum.FAIL);
return result.fail(params);
}
} catch (Exception e) {
log.error(e.getMessage(), e);
return result.fail(params);
}
}
/**
* bean
*/
private void initBeans(String[] beanNames) {
// this.converter = (IConverter) SpringUtils.getBean(beanNames[0]);
// this.result = (IResult) SpringUtils.getBean(beanNames[1]);
this.messageService = SpringUtils.getBean(ITaskOriginalMessageService.class);
}
}

@ -1,4 +1,4 @@
package com.docus.server.collect.web.processor;
package com.docus.server.collect.web.process;
import com.docus.core.util.Func;
import com.docus.core.util.json.JSON;
@ -36,8 +36,9 @@ public class VisitorProcessor extends AbstractProcessor {
if (Func.isEmpty(message)) {
throw new RuntimeException("参数为空");
}
Long taskId = messageService.insertTaskOriginalMessage("", message, IIntegerEnum.fromDisplay(CollectTypeEnum.class, context.getGroup()));
String jsonStr = JSON.toJSON(converter.convert(message, context.getGroup()));
Long taskId = messageService.insertTaskOriginalMessage(jsonStr, message, IIntegerEnum.fromDisplay(CollectTypeEnum.class, context.getGroup()));
messageService.updateTaskOriginalMessage(taskId, jsonStr, context.getExMessageResult(), StateEnum.OK);
Map<String, Object> params = context.getParams();
params.put("taskId", taskId);
params.put("jsonStr", jsonStr);
@ -68,7 +69,7 @@ public class VisitorProcessor extends AbstractProcessor {
} else {
log.info("=== AOP 异常通知 ===");
log.error((String) params.get(context.getExMessageResult()));
messageService.updateTaskOriginalMessage(taskId, afterReturnResult, StateEnum.FAIL);
messageService.updateTaskOriginalMessage(taskId, afterReturnResult, context.getExMessageResult(), StateEnum.FAIL);
return result.fail(params);
}
} catch (Exception e) {

@ -10,4 +10,6 @@ public interface ITaskConfigService {
void updateIncPointerDate(String id, Date date);
TaskConfig getTaskConfig(String id);
void updateByTaskId(TaskConfig taskConfig);
}

@ -5,7 +5,7 @@ import com.docus.server.collect.web.enums.StateEnum;
public interface ITaskOriginalMessageService {
Long insertTaskOriginalMessage(Object json, String xml, CollectTypeEnum collectType);
Long insertTaskOriginalMessage(String json, String xml, CollectTypeEnum collectType);
void updateTaskOriginalMessage(Long id, Object json, StateEnum stateEnum);
void updateTaskOriginalMessage(Long id, String json, String exMessageResult, StateEnum stateEnum);
}

@ -33,4 +33,10 @@ public class TaskConfigServiceImpl extends ServiceImpl<TaskConfigMapper, TaskCon
return super.getById(id);
}
@Transactional
@Override
public void updateByTaskId(TaskConfig taskConfig) {
super.updateById(taskConfig);
}
}

@ -24,7 +24,7 @@ public class TaskOriginalMessageServiceImpl extends ServiceImpl<TaskOriginalMess
*/
@Transactional(rollbackFor = Exception.class)
@Override
public Long insertTaskOriginalMessage(Object json, String xml, CollectTypeEnum collectType) {
public Long insertTaskOriginalMessage(String json, String xml, CollectTypeEnum collectType) {
TaskOriginalMessage taskOriginalMessage = converter.toConvertTaskOriginalMessageDO(json, xml, collectType);
super.save(taskOriginalMessage);
return taskOriginalMessage.getId();
@ -32,7 +32,7 @@ public class TaskOriginalMessageServiceImpl extends ServiceImpl<TaskOriginalMess
@Transactional(rollbackFor = Exception.class)
@Override
public void updateTaskOriginalMessage(Long id, Object json, StateEnum stateEnum) {
public void updateTaskOriginalMessage(Long id, String json, String exMessageResult, StateEnum stateEnum) {
if (null == id) {
return;
}
@ -41,6 +41,7 @@ public class TaskOriginalMessageServiceImpl extends ServiceImpl<TaskOriginalMess
taskOriginalMessage.setJsonStr(json);
taskOriginalMessage.setUpdateTime(DateUtil.now());
taskOriginalMessage.setState(stateEnum);
taskOriginalMessage.setErrorMsg(exMessageResult.length() > 500 ? exMessageResult.substring(0, 500) : exMessageResult);
super.updateById(taskOriginalMessage);
}
}

Loading…
Cancel
Save