调用bug修改

This commit is contained in:
guoshengxiong 2024-06-06 21:13:17 +08:00
parent 183665b000
commit 2e220a9fcb
16 changed files with 212 additions and 113 deletions

View File

@ -3,12 +3,19 @@ package com.zhgd.config;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;
import com.zhgd.xmgl.util.LogMdcUtil;
import static com.zhgd.xmgl.util.LogMdcUtil.isAddTraceTrail;
public class LogPrintFilter extends Filter<ILoggingEvent> {
@Override
public FilterReply decide(ILoggingEvent event) {
if (StdOutImplCustom.isPrint()) {
if (LogMdcUtil.isPrint()) {
boolean addTraceTrail = isAddTraceTrail();
if (addTraceTrail) {
LogMdcUtil.setStackInfo();
}
return FilterReply.ACCEPT;
} else {
return FilterReply.DENY;

View File

@ -1,15 +1,7 @@
package com.zhgd.config;
import com.WisdomSiteApplication;
import com.zhgd.xmgl.config.TaskAspect;
import com.zhgd.xmgl.constant.Cts;
import com.zhgd.xmgl.util.ThreadLocalUtil;
import lombok.extern.slf4j.Slf4j;
import com.zhgd.xmgl.util.LogMdcUtil;
import org.apache.ibatis.logging.Log;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.util.Objects;
public class StdOutImplCustom implements Log {
@ -17,21 +9,14 @@ public class StdOutImplCustom implements Log {
// Do Nothing
}
public static Boolean isPrint() {
if (!Objects.equals(TaskAspect.onlyPrintInterface, 1)) {
return true;
}
return WisdomSiteApplication.runSucess && Objects.equals(ThreadLocalUtil.getByKey(Cts.TL_IS_FROM_WEB, Boolean.class), true);
}
@Override
public boolean isDebugEnabled() {
return isPrint();
return LogMdcUtil.isPrint();
}
@Override
public boolean isTraceEnabled() {
return isPrint();
return LogMdcUtil.isPrint();
}
@Override
@ -47,14 +32,14 @@ public class StdOutImplCustom implements Log {
@Override
public void debug(String s) {
if (isPrint()) {
if (LogMdcUtil.isPrint()) {
System.out.println(s);
}
}
@Override
public void trace(String s) {
if (isPrint()) {
if (LogMdcUtil.isPrint()) {
System.out.println(s);
}
}

View File

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
import com.zhgd.annotation.DataScope;
import com.zhgd.xmgl.security.util.SecurityUtils;
import com.zhgd.xmgl.util.EnvironmentUtil;
import com.zhgd.xmgl.util.LogMdcUtil;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.schema.Table;
@ -69,8 +70,8 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte
StringBuilder sb = new StringBuilder();
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
for (StackTraceElement e : stackTrace) {
if (e.getClassName().startsWith("com.zhgd") && notInPackage(e.getClassName()) && !e.getClassName().contains("$$")) {
sb.append(StrUtil.subAfter(e.getClassName(),".",true));
if (e.getClassName().startsWith("com.zhgd") && LogMdcUtil.notInPackage(e.getClassName()) && !e.getClassName().contains("$$")) {
sb.append(StrUtil.subAfter(e.getClassName(), ".", true));
sb.append(".");
sb.append(e.getMethodName());
sb.append("(");
@ -85,10 +86,6 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte
return sb.toString();
}
private static boolean notInPackage(String className) {
return !className.startsWith("com.zhgd.mybatis") && !className.startsWith("com.zhgd.xmgl.config") && !className.startsWith("com.zhgd.xmgl.security");
}
private static String getCallPosition() {
StringBuilder sb = new StringBuilder();
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();

View File

@ -160,12 +160,14 @@ public class AsyncHikvision {
}
@Async("carInfoExecutor")
public void addCarInfoForHikvisionAsyc(CarInfo carInfo) {
public void addCarInfoForHikvisionAsyc(CarInfo carInfo, Boolean existIsc) {
try {
hikvisionCall.saveCarInfoFromHikvision(carInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForCar(carInfo, e, "添加");
} finally {
xzHikvisionCompareDataService.compareRetrySuccess(existIsc, carInfo);
}
}
@ -196,22 +198,26 @@ public class AsyncHikvision {
}
@Async("carInfoExecutor")
public void editCarInfoForHikvisionAsync(CarInfo carInfo, CarInfo old) {
public void editCarInfoForHikvisionAsync(CarInfo carInfo, CarInfo old, Boolean existIsc) {
try {
hikvisionCall.editCarInfoForHikvision(carInfo, old);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForCar(carInfo, e, "编辑");
} finally {
xzHikvisionCompareDataService.compareRetrySuccess(existIsc, carInfo);
}
}
@Async("carInfoExecutor")
public void deleteCarInfoForHikvisionAsync(CarInfo carInfo, boolean isSetBlack) {
public void deleteCarInfoForHikvisionAsync(CarInfo carInfo, boolean isSetBlack, Boolean existIsc) {
try {
hikvisionCall.deleteCarInfoForHikvision(carInfo, isSetBlack);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForCar(carInfo, e, "删除");
} finally {
xzHikvisionCompareDataService.compareRetrySuccess(existIsc, carInfo);
}
}

View File

@ -1127,6 +1127,9 @@ public class HikvisionCall {
success = true;
msg = "同步成功,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard();
title += "成功";
} else if (Objects.equals(msg1, "Person Not Exists")) {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:人员不存在";
title += "失败";
} else {
msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:下发异常";
title += "失败";
@ -1421,7 +1424,7 @@ public class HikvisionCall {
jo.put("searchKey", carInfo.getCarNumber());
jo.put("pageNo", 1);
jo.put("pageSize", 1);
JSONObject joRs = queryAlarmCarPage(project, jo);
JSONObject joRs = HikvisionUtil.getBlackCarList(project, jo);
if (HikvisionUtil.isSuccess(joRs)) {
JSONObject dataJo = HikvisionUtil.getJSONObjectData(joRs);
JSONArray listJa = dataJo.getJSONArray("list");
@ -1497,22 +1500,6 @@ public class HikvisionCall {
return JSON.parseObject(HikvisionUtil.doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
* 查询布防车辆
*
* @param project
* @return
*/
public JSONObject queryAlarmCarPage(Project project, JSONObject param) throws Exception {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/page";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(HikvisionUtil.doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
* 保存固定车
*
@ -1872,7 +1859,7 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
Pair<Boolean, String> existAndIndexCode = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, enterpriseInfo.getId());
Pair<Boolean, String> existAndIndexCode = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(enterpriseInfo.getId()));
HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(enterpriseInfo, existAndIndexCode.getRight());
if (existAndIndexCode.getLeft()) {
editOrgFromHttp(project, hikvisionOrganization);
@ -1881,10 +1868,10 @@ public class HikvisionCall {
}
}
private Pair<Boolean, String> existAndGetEnterpriseOrgIndexCodeByEnterpriseId(Project project, Long enterpriseId) throws Exception {
private Pair<Boolean, String> existAndGetEnterpriseOrgIndexCodeByEnterpriseId(Project project, String enterpriseId) throws Exception {
EnterpriseInfo enterpriseInfo = BeanUtil.toBean(enterpriseInfoService.getEnterpriseInfoById(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build()), EnterpriseInfo.class);
JSONArray orgList = getOrgList(project, StrUtil.join(",", enterpriseInfo.getId(), enterpriseInfo.getProjectEnterprise().getId()), project.getProjectSn());
JSONArray orgList = getOrgList(project, StrUtil.join(",", enterpriseId, enterpriseInfo != null ? enterpriseInfo.getProjectEnterprise().getId() : ""), project.getProjectSn());
String index = null;
if (CollUtil.isEmpty(orgList)) {
index = String.valueOf(enterpriseInfo.getProjectEnterprise().getId());
@ -1906,7 +1893,7 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
Pair<Boolean, String> pair = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, Long.valueOf(enterpriseId));
Pair<Boolean, String> pair = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(enterpriseId));
String rs = HikvisionUtil.deleteOrgByIndexCodes(project, Arrays.asList(pair.getRight()));
sendNoticeForOrg("删除组织到海康isc", rs, enterpriseName);
}
@ -1930,7 +1917,7 @@ public class HikvisionCall {
hikvisionOrganization.setClientId(null);
hikvisionOrganization.setOrgIndexCode(String.valueOf(teamInfo.getId()));
hikvisionOrganization.setOrgName(teamInfo.getTeamName());
hikvisionOrganization.setParentIndexCode(existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, teamInfo.getEnterpriseId()).getRight());
hikvisionOrganization.setParentIndexCode(existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(teamInfo.getEnterpriseId())).getRight());
return hikvisionOrganization;
}
@ -2003,7 +1990,7 @@ public class HikvisionCall {
hikvisionOrganization.setClientId(null);
hikvisionOrganization.setOrgIndexCode(String.valueOf(departmentInfo.getId()));
hikvisionOrganization.setOrgName(departmentInfo.getDepartmentName());
hikvisionOrganization.setParentIndexCode(existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, departmentInfo.getEnterpriseId()).getRight());
hikvisionOrganization.setParentIndexCode(existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(departmentInfo.getEnterpriseId())).getRight());
return hikvisionOrganization;
}
@ -2193,7 +2180,11 @@ public class HikvisionCall {
public void bindOrNotCarCategory(Project project, Integer operation, String categoryCode, CarInfo carInfo) throws Exception {
String carId = this.getRemoteCarIdByCarNumber(carInfo.getCarNumber(), project);
JSONObject param = new JSONObject();
param.put("vehicleIds", carId == null ? carInfo.getId() : carId);
Object vehicleIds = carId == null ? carInfo.getId() : carId;
if (vehicleIds == null) {
return;
}
param.put("vehicleIds", vehicleIds);
param.put("operation", operation);
param.put("categoryCode", categoryCode);
JSONObject jo = HikvisionUtil.bindCarCategory(project, param);

View File

@ -1,7 +1,7 @@
package com.zhgd.xmgl.config;
import com.alibaba.fastjson.JSONObject;
import com.zhgd.xmgl.util.RequestIdUtil;
import com.zhgd.xmgl.util.LogMdcUtil;
import com.zhgd.xmgl.util.ThreadLocalUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
@ -26,14 +26,14 @@ public class MdcThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {
if (null != context) {
MDC.setContextMap(context); //主线程MDC赋予子线程
} else {
RequestIdUtil.setRequestId(); //主线程没有MDC就自己生成一个
LogMdcUtil.setRequestId(); //主线程没有MDC就自己生成一个
}
ThreadLocalUtil.set(tlJo);
try {
task.run();
} finally {
try {
RequestIdUtil.clear();
LogMdcUtil.clear();
ThreadLocalUtil.remove();
} catch (Exception e) {
log.warn("MDC clear exception{}", e.getMessage());
@ -54,14 +54,14 @@ public class MdcThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {
if (null != context) {
MDC.setContextMap(context); //主线程MDC赋予子线程
} else {
RequestIdUtil.setRequestId(); //主线程没有MDC就自己生成一个
LogMdcUtil.setRequestId(); //主线程没有MDC就自己生成一个
}
ThreadLocalUtil.set(tlJo);
try {
return task.call();
} finally {
try {
RequestIdUtil.clear();
LogMdcUtil.clear();
ThreadLocalUtil.remove();
} catch (Exception e) {
log.warn("MDC clear exception{}", e.getMessage());

View File

@ -1,8 +1,7 @@
package com.zhgd.xmgl.config;
import com.zhgd.config.StdOutImplCustom;
import com.zhgd.xmgl.constant.Cts;
import com.zhgd.xmgl.util.RequestIdUtil;
import com.zhgd.xmgl.util.LogMdcUtil;
import com.zhgd.xmgl.util.ThreadLocalUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
@ -45,7 +44,7 @@ public class TaskAspect {
try {
if (null == context) {
RequestIdUtil.setRequestId("-t"); //主线程没有MDC就自己生成一个
LogMdcUtil.setRequestId("-t"); //主线程没有MDC就自己生成一个
ThreadLocalUtil.addInKey(Cts.TL_IS_FROM_TASK, true);
log.info("task方法开始:{}", methodName);
}
@ -68,7 +67,7 @@ public class TaskAspect {
Object proceed = jointPoint.proceed();
}
} catch (Exception e) {
if (StdOutImplCustom.isPrint()) {
if (LogMdcUtil.isPrint()) {
throw e;
} else {
log.error("", e);
@ -76,7 +75,7 @@ public class TaskAspect {
} finally {
if (null == context) {
log.info("task方法结束{}", methodName);
RequestIdUtil.clear();
LogMdcUtil.clear();
ThreadLocalUtil.remove();
}
}

View File

@ -6,7 +6,6 @@ import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.modules.car.entity.CarInfo;
import com.zhgd.xmgl.modules.car.entity.vo.CountCarModuleTypeVo;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import java.util.List;
import java.util.Map;

View File

@ -25,10 +25,12 @@ import com.zhgd.xmgl.modules.car.mapper.*;
import com.zhgd.xmgl.modules.car.service.ICarInfoService;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import com.zhgd.xmgl.modules.project.service.impl.ProjectServiceImpl;
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
import com.zhgd.xmgl.modules.xz.service.impl.XzHikvisionCompareDataServiceImpl;
import com.zhgd.xmgl.util.MessageUtil;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.PathUtil;
@ -63,6 +65,12 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
ProjectCarCameraConfigServiceImpl projectCarCameraConfigService;
@Lazy
@Autowired
XzHikvisionCompareDataServiceImpl xzHikvisionCompareDataService;
@Lazy
@Autowired
ProjectServiceImpl projectService;
@Lazy
@Autowired
private XzHikvisionSyncMapper xzHikvisionSyncMapper;
@Autowired
private EnterpriseInfoServiceImpl enterpriseInfoService;
@ -367,7 +375,7 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
} else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(1).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent(2, carInfo.getId())));
}
asyncHikvision.addCarInfoForHikvisionAsyc(carInfo);
asyncHikvision.addCarInfoForHikvisionAsyc(carInfo, null);
}
}
@ -385,7 +393,7 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(3).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent(2, carInfo.getId())));
}
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(isSetBlack ? 1 : 3).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent(2, carInfo.getId())));
asyncHikvision.deleteCarInfoForHikvisionAsync(carInfo, isSetBlack);
asyncHikvision.deleteCarInfoForHikvisionAsync(carInfo, isSetBlack, null);
}
@Override
@ -407,7 +415,7 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
if (old.getIsBlack() == 1) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(3).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent(2, carInfo.getId())));
}
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, old);
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, old, null);
}
}

View File

@ -330,26 +330,28 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
private void syncCar(XzHikvisionCompareData data) throws Exception {
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(data.getProjectSn());
CarInfo carInfo = carInfoService.queryById(data.getUniqueId());
Boolean existIsc = null;
if (data.getExistIsc() == 1 && data.getExistMyPlatform() == 0) {
//查询id是否存在平台存在就更新不存在就删除
if (carInfo != null) {
//同步海康
carInfoService.editCarInfoForHikvision(carInfo, carInfo);
existIsc = true;
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, carInfo, true);
} else {
carInfo = new CarInfo();
carInfo.setCarNumber(data.getCarNumber());
carInfo.setProjectSn(data.getProjectSn());
carInfoService.deleteCarInfoForHikvision(carInfo, false);
existIsc = false;
asyncHikvision.deleteCarInfoForHikvisionAsync(carInfo, false, false);
}
compareRetrySuccess(projectInfoBySn, carInfo, existIsc);
} else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) {
//查询id是否存在isc存在就更新不存在就新增
JSONObject rtJo;
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
rtJo = HikvisionUtil.getFixCarListByCarNumber(data.getCarNumber(), projectInfoBySn, 1);
} else if (Objects.equals(carInfo.getIsBlack(), 1)) {
JSONObject jo = new JSONObject();
jo.put("searchKey", carInfo.getCarNumber());
jo.put("pageNo", 1);
jo.put("pageSize", 1);
rtJo = HikvisionUtil.getBlackCarList(projectInfoBySn, jo);
} else {
rtJo = HikvisionUtil.getReservationCarInfoList(carInfo.getCarNumber(), projectInfoBySn);
}
@ -357,17 +359,15 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
if (CollUtil.isEmpty(list)) {
//新增
carInfoService.addCarInfoForHikvision(carInfo, asyncHikvision);
asyncHikvision.addCarInfoForHikvisionAsyc(carInfo, true);
} else {
//更新
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, carInfo);
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, carInfo, true);
}
existIsc = true;
} else {
log.error("校验数据同步海康失败,失败原因:{}", rtJo.toJSONString());
existIsc = false;
compareRetrySuccess(projectInfoBySn, carInfo, false);
}
compareRetrySuccess(projectInfoBySn, carInfo, existIsc);
}
}
@ -377,7 +377,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
* @param existSuc isc存在车辆就成功反之
* @throws Exception
*/
private void compareRetrySuccess(ProjectInfoExtVo projectInfoBySn, CarInfo carInfo, boolean existSuc) throws Exception {
public void compareRetrySuccess(ProjectInfoExtVo projectInfoBySn, CarInfo carInfo, boolean existSuc) throws Exception {
//验证执行是否成功
JSONArray listJa;
if (carInfo.getCarModuleType() == null) {
@ -438,6 +438,22 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
}
}
/**
* 是否从数据校验这里来
*
* @return
*/
public void compareRetrySuccess(Boolean existIsc, CarInfo carInfo) {
try {
if (existIsc != null) {
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(carInfo.getProjectSn());
xzHikvisionCompareDataService.compareRetrySuccess(projectInfoBySn, carInfo, existIsc);
}
} catch (Exception e) {
log.error("", e);
}
}
@Override
public void addCompareDataForEnterprise(Project project, String orgName, int existIsc, int existMyPlatform, String uniqueId) {
XzHikvisionCompareData data = new XzHikvisionCompareData();

View File

@ -2,7 +2,7 @@ package com.zhgd.xmgl.security;
import com.zhgd.xmgl.constant.Cts;
import com.zhgd.xmgl.security.util.SecurityUtils;
import com.zhgd.xmgl.util.RequestIdUtil;
import com.zhgd.xmgl.util.LogMdcUtil;
import com.zhgd.xmgl.util.ThreadLocalUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -16,14 +16,14 @@ public class RequestIdFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
RequestIdUtil.setRequestId("-i");
LogMdcUtil.setRequestId("-i");
ThreadLocalUtil.addInKey(Cts.TL_IS_FROM_WEB, true);
ThreadLocalUtil.addInKey(Cts.TL_AUTH_USER, SecurityUtils.getUser());
try {
filterChain.doFilter(servletRequest, servletResponse);
} finally {
log.info("接口结束...");
RequestIdUtil.clear();
LogMdcUtil.clear();
ThreadLocalUtil.remove();
}
}

View File

@ -177,6 +177,7 @@ public class HikvisionTask {
public void compareHikvisionForCar(Project project) throws Exception {
compareHikvisionForFixCar(project);
compareHikvisionForReservationCar(project);
compareHikvisionForBlackCar(project);
xzHikvisionCompareDataService.addSuccessShow(project.getProjectSn(), "4");
}
@ -358,6 +359,22 @@ public class HikvisionTask {
compareAndAddData(project, listJa, carInfoList);
}
public void compareHikvisionForBlackCar(Project project) throws Exception {
JSONObject param = new JSONObject();
HikvisionUtil.addPageParamIfAbsent(param);
JSONObject jo = new JSONObject();
jo.put("pageNo", 1);
jo.put("pageSize", 1000);
JSONObject joRs = HikvisionUtil.getBlackCarList(project, jo);
JSONObject dataJo = HikvisionUtil.getJSONObjectData(joRs);
JSONArray listJa = dataJo.getJSONArray("list");
List<CarInfo> carInfoList = carInfoService.selectCarList(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn())
.put("isBlack", 1)
.build());
compareAndAddData(project, listJa, carInfoList);
}
private void compareAndAddData(Project project, JSONArray listJa, List<CarInfo> carInfoList) {
if (CollUtil.isEmpty(listJa)) {
for (CarInfo carInfo : carInfoList) {

View File

@ -399,4 +399,20 @@ public class HikvisionUtil {
String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
return rs;
}
/**
* 查询黑名单布防车辆
*
* @param project
* @return
*/
public static JSONObject getBlackCarList(Project project, JSONObject param) throws Exception {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/page";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
}

View File

@ -0,0 +1,85 @@
package com.zhgd.xmgl.util;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.WisdomSiteApplication;
import com.zhgd.xmgl.config.TaskAspect;
import com.zhgd.xmgl.constant.Cts;
import org.slf4j.MDC;
import java.util.Objects;
public class LogMdcUtil {
public static final String REQUEST_ID = "requestId";
public static final String STACK_INFO = "stackInfo";
public static void setRequestId() {
MDC.put(REQUEST_ID, getRandomStr());
}
public static void setRequestId(String s) {
MDC.put(REQUEST_ID, getRandomStr() + s);
}
public static String getRequestId() {
return MDC.get(REQUEST_ID);
}
private static String getRandomStr() {
return IdUtil.fastSimpleUUID().substring(0, 5);
}
public static void setStackInfo() {
MDC.put(STACK_INFO, getCallPositionForDev());
}
public static void clear() {
MDC.clear();
}
/**
* 是否打印日志
*
* @return
*/
public static Boolean isPrint() {
if (!Objects.equals(TaskAspect.onlyPrintInterface, 1)) {
return true;
}
return WisdomSiteApplication.runSucess && Objects.equals(ThreadLocalUtil.getByKey(Cts.TL_IS_FROM_WEB, Boolean.class), true);
}
/**
* 是否添加堆栈到日志尾巴
*
* @return
*/
public static boolean isAddTraceTrail() {
return Objects.equals(TaskAspect.onlyPrintInterface, 1);
}
private static String getCallPositionForDev() {
StringBuilder sb = new StringBuilder();
sb.append("^^^********^^^");
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
for (StackTraceElement e : stackTrace) {
if (e.getClassName().startsWith("com.zhgd") && notInPackage(e.getClassName()) && !e.getClassName().contains("$$")) {
sb.append(StrUtil.subAfter(e.getClassName(), ".", true));
sb.append(".");
sb.append(e.getMethodName());
sb.append("(");
sb.append(StrUtil.subAfter(e.getClassName(), ".", true));
sb.append(".java:");
sb.append(e.getLineNumber());
sb.append(")");
sb.append(" > ");
}
}
return sb.toString();
}
public static boolean notInPackage(String className) {
return !className.startsWith("com.zhgd.mybatis") && !className.startsWith("com.zhgd.xmgl.config") && !className.startsWith("com.zhgd.xmgl.security")
&& !className.contains("LogMdcUtil") && !className.contains("LogPrintFilter");
}
}

View File

@ -1,29 +0,0 @@
package com.zhgd.xmgl.util;
import cn.hutool.core.util.IdUtil;
import org.slf4j.MDC;
public class RequestIdUtil {
public static final String REQUEST_ID = "requestId";
public static void setRequestId() {
MDC.put(REQUEST_ID, getRandomStr());
}
public static String getRequestId() {
return MDC.get(REQUEST_ID);
}
public static void setRequestId(String s) {
MDC.put(REQUEST_ID, getRandomStr() + s);
}
private static String getRandomStr() {
return IdUtil.fastSimpleUUID().substring(0, 5);
}
public static void clear() {
MDC.clear();
}
}

View File

@ -6,7 +6,9 @@
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%highlight(%X{requestId})][%thread] %highlight(%-5level) %cyan(%logger{50}).%method:%L - %highlight(%msg) %n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%highlight(%X{requestId})][%thread] %highlight(%-5level)
%cyan(%logger{50}).%method:%L - %highlight(%msg) %X{stackInfo} %n
</pattern>
</encoder>
<filter class="com.zhgd.config.LogPrintFilter">
</filter>