Commit 93112ff2 LN

接口异常代码

1 个父辈 cffc76ca
......@@ -274,7 +274,7 @@ public class DataInitManager {
Menu pMenuLog = Menu.CreatePMenu("日志管理", 30, "log", 2, "log");
Menu menuLog = new Menu(new ArrayList<Menu>(), 1, "taskLog", "物料日志", 1, "taskLog", "neolight/taskLog/index", "", 0, "education");
Menu msgLog = new Menu(new ArrayList<Menu>(), 1, "message", "消息查询", 1, "message", "neolight/message/index", "", 0, "messagefind");
Menu exceptionLog = new Menu(new ArrayList<Menu>(), 1, "interfaceException", "接口异常", 1, "interfaceException", "neolight/interfaceException/index", "", 0, "messagefind");
Menu exceptionLog = new Menu(new ArrayList<Menu>(), 1, "interfaceException", "接口异常", 1, "interfaceException", "neolight/interfaceException/index", "", 0, "interfaceException");
exceptionLog.setHidden(true);
menus.addAll(createMenus(pMenuLog, menuLog,msgLog,exceptionLog));
......
package com.neotel.smfcore.core.hik.rest;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.core.hik.rest.dto.InterfaceExDto;
import com.neotel.smfcore.core.hik.rest.query.InterfaceExCriteria;
import com.neotel.smfcore.hikvision.HikApiCache;
import com.neotel.smfcore.hikvision.bean.api.HikApiRequest;
import com.neotel.smfcore.hikvision.bean.api.ResponseParam;
import com.neotel.smfcore.hikvision.util.JsonUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
@RestController
@RequiredArgsConstructor
@Api(tags = "hik接口异常处理")
@RequestMapping("api/interfaceException")
public class InterfaceExceptionController {
@ApiOperation("获取异常列表")
@GetMapping("/list")
public List<InterfaceExDto> list( InterfaceExCriteria criteria) {
List<InterfaceExDto> results = new ArrayList<>();
List<HikApiRequest> requests = HikApiCache.getAllRequestList();
for (HikApiRequest request :
requests) {
InterfaceExDto dto = toDto(request);
dto.setApiType(2);
if (criteria.getCreateDate() != null) {
Date from = criteria.getCreateDate().getFrom();
Date to = criteria.getCreateDate().getTo();
if (ObjectUtil.isNotEmpty(from)) {
if (request.getUpdatetime().before(from)) {
break;
}
}
if (ObjectUtil.isNotEmpty(to)) {
if (request.getUpdatetime().after(to)) {
break;
}
}
}
boolean blurryOk = false;
if (ObjectUtil.isNotEmpty(criteria.getBlurry())) {
String blurry = criteria.getBlurry();
String[] blurrys = blurry.split(",");
String[] valueArray = new String[]{dto.getReqCode(), dto.getResponseMsg(), JsonUtil.toJsonStr(dto.getData()) , dto.getUserCode()};
for (String s : blurrys) {
if (ObjectUtil.isNotEmpty(s)) {
for (String v :
valueArray) {
if (ObjectUtil.isEmpty(v)) {
continue;
}
try {
Pattern pattern = Pattern.compile(QueryHelp.escapeExprSpecialWord(s), Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(v);
while (m.find()) {
blurryOk = true;
break;
}
if (blurryOk) break;
} catch (Exception ex) {
log.error(ex.toString());
}
}
if (blurryOk) break;
} else {
blurryOk = true;
}
}
} else {
blurryOk = true;
}
if (blurryOk) {
results.add(dto);
}
}
return results;
}
private InterfaceExDto toDto(HikApiRequest request) {
InterfaceExDto dto = new InterfaceExDto();
dto.setApiType(request.getApiType());
dto.setCreateTime(request.getCreateTime());
dto.setReqCode(request.getParam().getReqCode());
dto.setUpdatetime(request.getUpdatetime());
dto.setUserCode(request.getParam().getUserCode());
dto.setData(JsonUtil.toJsonStr(request.getParam().getData()) );
dto.setResponseCode(request.getResponseParam().getCode());
dto.setResponseMsg(request.getResponseParam().getMessage());
return dto;
}
@ApiOperation("接口重发")
@PostMapping("/reSend")
public ResultBean reSend(@RequestBody String reqCode) {
// String reqCode = mapValues.get("reqCode");
if (ObjectUtil.isEmpty(reqCode)) {
throw new ValidateException("smfcore.error.interfaceEx.invalid", "未找到异常接口{1}", new String[]{""});
}
HikApiRequest request = HikApiCache.getRequest(reqCode);
if (request == null) {
throw new ValidateException("smfcore.error.interfaceEx.invalid", "未找到异常接口{0}", new String[]{reqCode});
}
ResponseParam responseParam = HikApiCache.reSendRequest(request);
if (responseParam.getCode().equals(0)) {
return ResultBean.newOkResult("smfcore.apiOk", "发送成功", "");
} else {
return ResultBean.newErrorResult(1, "smfcore.apiError", "错误码{0}:{1}", new String[]{responseParam.getCode() + "", responseParam.getMessage()});
}
}
@ApiOperation("全部重发")
@PostMapping("/reSendAll")
public ResultBean reSend() {
HikApiCache.sendFailedRequest();
return ResultBean.newOkResult("smfcore.api.reSendAll", "已全部重发", "");
}
}
package com.neotel.smfcore.core.hik.rest.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class InterfaceExDto implements Serializable {
/**
* 消息类型
* 2=7.2转储单入库过账接口
* 3=7.3排程发料过账接口
* 5=7.5 入库上架过账接口
* 6=7.6 出库下架过账接口
* 11=7.11订单发料完成通知接口
*/
/**
* 消息类型
* 2=转储单入库
* 3=排程发料
* 5=入库上架
* 6=出库下架
* 11=订单发料完成
*/
@ApiModelProperty("消息类型")
private int apiType=0;
@ApiModelProperty("标志号")
private String reqCode;
@ApiModelProperty("操作人")
private String userCode;
@ApiModelProperty("参数内容")
private String data;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新时间")
private Date updatetime;
@ApiModelProperty("接口返回结果:0-成功,1~N-失败")
private Integer responseCode=-1;
@ApiModelProperty("接口返回提示")
private String responseMsg="";
}
package com.neotel.smfcore.core.hik.rest.query;
import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.bean.BetweenData;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.sql.Date;
@Data
public class InterfaceExCriteria {
@QueryCondition(blurry = "reqCode,userCode,date,responseMsg")
private String blurry;
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> createDate;
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!