bug修改

This commit is contained in:
guoshengxiong 2024-04-28 01:03:35 +08:00
parent f8191ed40a
commit 62a107d1df
10 changed files with 297 additions and 66 deletions

View File

@ -8,9 +8,6 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
/**
* 日志拦截器
*/
@Slf4j @Slf4j
public class ThreadLocalInterceptor implements HandlerInterceptor { public class ThreadLocalInterceptor implements HandlerInterceptor {

View File

@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.redis.lock.RedisRepository; import com.zhgd.redis.lock.RedisRepository;
@ -40,11 +41,14 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.javacrumbs.shedlock.core.SchedulerLock;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
@ -283,6 +287,7 @@ public class HikvisionCall {
@ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "body", required = true, dataType = "String"), @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "body", required = true, dataType = "String"),
}) })
@PostMapping(value = "/getDoorEvents") @PostMapping(value = "/getDoorEvents")
@Async
public Result getDoorEvents(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) { public Result getDoorEvents(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
String startTime = MapUtils.getString(paramMap, "startTime"); String startTime = MapUtils.getString(paramMap, "startTime");
String endTime = MapUtils.getString(paramMap, "endTime"); String endTime = MapUtils.getString(paramMap, "endTime");
@ -296,9 +301,6 @@ public class HikvisionCall {
.eq(Project::getSyncHikvision, 1); .eq(Project::getSyncHikvision, 1);
if (StringUtils.isNotBlank(projectSn)) { if (StringUtils.isNotBlank(projectSn)) {
queryWrapper.eq(Project::getProjectSn, projectSn); queryWrapper.eq(Project::getProjectSn, projectSn);
if (!redisRepository.setNx("getDoorEvents:projectSn" + projectSn, 1000 * 30L)) {
return Result.ok("正在同步中请耐心等待通知!");
}
} }
List<Project> projects = projectMapper.selectList(queryWrapper); List<Project> projects = projectMapper.selectList(queryWrapper);
if (CollUtil.isEmpty(projects)) { if (CollUtil.isEmpty(projects)) {
@ -411,6 +413,7 @@ public class HikvisionCall {
@ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "body", required = true, dataType = "String"), @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "body", required = true, dataType = "String"),
}) })
@PostMapping(value = "/getCrossRecords") @PostMapping(value = "/getCrossRecords")
@Async
public Result getCrossRecords(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) { public Result getCrossRecords(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
String startTime = MapUtils.getString(paramMap, "startTime"); String startTime = MapUtils.getString(paramMap, "startTime");
String endTime = MapUtils.getString(paramMap, "endTime"); String endTime = MapUtils.getString(paramMap, "endTime");
@ -424,9 +427,6 @@ public class HikvisionCall {
.eq(Project::getSyncHikvision, 1); .eq(Project::getSyncHikvision, 1);
if (StringUtils.isNotBlank(projectSn)) { if (StringUtils.isNotBlank(projectSn)) {
queryWrapper.eq(Project::getProjectSn, projectSn); queryWrapper.eq(Project::getProjectSn, projectSn);
if (!redisRepository.setNx("getCrossRecords:projectSn" + projectSn, 1000 * 30L)) {
return Result.ok("正在同步中请耐心等待通知!");
}
} }
List<Project> projects = projectMapper.selectList(queryWrapper); List<Project> projects = projectMapper.selectList(queryWrapper);
if (CollUtil.isEmpty(projects)) { if (CollUtil.isEmpty(projects)) {
@ -540,6 +540,28 @@ public class HikvisionCall {
return Result.ok("已在后台同步车辆通行数据,请耐心等待!"); return Result.ok("已在后台同步车辆通行数据,请耐心等待!");
} }
/**
* 定时一分钟获取海康数据
*/
@SchedulerLock(name = "getRecordForHikvision", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
@Scheduled(cron = "0 0/1 * * * ?")
@RequestMapping("getRecordForHikvision")
public void getRecordForHikvision() {
String startTime = DateUtil.formatDateTime(DateUtil.offsetMinute(new Date(), -2));
String endTime = DateUtil.formatDateTime(new Date());
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>()
.eq(Project::getSyncHikvision, 1));
for (Project project : projects) {
log.info("定时获取海康记录,{}", project.getProjectName());
HashMap<String, Object> map = new HashMap<>();
map.put("projectSn", project.getProjectSn());
map.put("startTime", startTime);
map.put("endTime", endTime);
getDoorEvents(map);
getCrossRecords(map);
}
}
/** /**
* 测试查询组织 * 测试查询组织
* *
@ -724,13 +746,18 @@ public class HikvisionCall {
addWorkerFace(workerInfo, project); addWorkerFace(workerInfo, project);
} }
private void addWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { public void addWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
String rs = doAddWorkerFromHttp(workerInfo, project);
sendNoticeForWorker("添加人员到海康isc", rs, workerInfo, 1, 1);
}
public String doAddWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis"; final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/person/single/add"; final String path = ARTEMIS_PATH + "/api/resource/v2/person/single/add";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
String body = getWorkerJson(workerInfo); String body = getWorkerJson(workerInfo);
String rs = HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); String rs = HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
sendNoticeForWorker("添加人员到海康isc", rs, workerInfo, 1, 1); return rs;
} }
@ -783,13 +810,18 @@ public class HikvisionCall {
} }
} }
private void editWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { public void editWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
String rs = doEditWorkerFromHttp(workerInfo, project);
sendNoticeForWorker("更新人员到海康isc", rs, workerInfo, 1, 2);
}
public String doEditWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis"; final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update"; final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
String body = getWorkerJson(workerInfo); String body = getWorkerJson(workerInfo);
String rs = HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); String rs = HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
sendNoticeForWorker("更新人员到海康isc", rs, workerInfo, 1, 2); return rs;
} }
/** /**
@ -798,20 +830,25 @@ public class HikvisionCall {
* @param workerInfo * @param workerInfo
* @param project * @param project
*/ */
private void addWorkerFace(WorkerInfo workerInfo, Project project) throws Exception { public void addWorkerFace(WorkerInfo workerInfo, Project project) throws Exception {
String fieldAcquisitionUrl = workerInfo.getFieldAcquisitionUrl(); String fieldAcquisitionUrl = workerInfo.getFieldAcquisitionUrl();
if (StringUtils.isNotBlank(fieldAcquisitionUrl)) { if (StringUtils.isNotBlank(fieldAcquisitionUrl)) {
final String ARTEMIS_PATH = "/artemis"; String rs = doAddWorkerFace(workerInfo, project);
final String path = ARTEMIS_PATH + "/api/resource/v1/face/single/add";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("personId", String.valueOf(workerInfo.getId()));
jo.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(basePath + "/" + fieldAcquisitionUrl)));
String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
sendNoticeForWorker("添加人员照片到海康isc", rs, workerInfo, 2, 1); sendNoticeForWorker("添加人员照片到海康isc", rs, workerInfo, 2, 1);
} }
} }
public String doAddWorkerFace(WorkerInfo workerInfo, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/face/single/add";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("personId", String.valueOf(workerInfo.getId()));
jo.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(basePath + "/" + workerInfo.getFieldAcquisitionUrl())));
String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
return rs;
}
private void sendNoticeForCarInfo(String title, String rs, CarInfo carInfo) { private void sendNoticeForCarInfo(String title, String rs, CarInfo carInfo) {
if (StringUtils.isBlank(rs)) { if (StringUtils.isBlank(rs)) {
return; return;
@ -909,6 +946,37 @@ public class HikvisionCall {
} }
xzHikvisionSync.setIsSuccess(1); xzHikvisionSync.setIsSuccess(1);
xzHikvisionSyncMapper.updateById(xzHikvisionSync); xzHikvisionSyncMapper.updateById(xzHikvisionSync);
Integer fail = xzHikvisionSyncMapper.selectCount(new LambdaQueryWrapper<XzHikvisionSync>()
.eq(XzHikvisionSync::getProjectSn, projectSn)
.eq(XzHikvisionSync::getWhoId, whoId)
.eq(XzHikvisionSync::getCreateDate, now)
.eq(XzHikvisionSync::getIsSuccess, 0)
);
if (fail == 0) {
workerInfoMapper.update(null, new LambdaUpdateWrapper<WorkerInfo>()
.eq(WorkerInfo::getId, whoId)
.set(WorkerInfo::getSendSuccessStatus, 1)
);
} else {
Integer sc = xzHikvisionSyncMapper.selectCount(new LambdaQueryWrapper<XzHikvisionSync>()
.eq(XzHikvisionSync::getProjectSn, projectSn)
.eq(XzHikvisionSync::getWhoId, whoId)
.eq(XzHikvisionSync::getCreateDate, now)
.eq(XzHikvisionSync::getIsSuccess, 1)
);
if (sc == 0) {
workerInfoMapper.update(null, new LambdaUpdateWrapper<WorkerInfo>()
.eq(WorkerInfo::getId, whoId)
.set(WorkerInfo::getSendSuccessStatus, 2)
);
} else {
workerInfoMapper.update(null, new LambdaUpdateWrapper<WorkerInfo>()
.eq(WorkerInfo::getId, whoId)
.set(WorkerInfo::getSendSuccessStatus, 3)
);
}
}
} }
/** /**
@ -949,7 +1017,12 @@ public class HikvisionCall {
deleteWorkerFromHttp(workerInfo, project); deleteWorkerFromHttp(workerInfo, project);
} }
private void deleteWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { public void deleteWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
String rs = doDeleteWorkerFromHttp(workerInfo, project);
sendNoticeForWorker("删除人员到海康isc", rs, workerInfo, 1, 3);
}
public String doDeleteWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis"; final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/batch/delete"; final String path = ARTEMIS_PATH + "/api/resource/v1/person/batch/delete";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
@ -957,7 +1030,7 @@ public class HikvisionCall {
jsonBody.put("personIds", Arrays.asList(workerInfo.getId())); jsonBody.put("personIds", Arrays.asList(workerInfo.getId()));
String body = jsonBody.toJSONString(); String body = jsonBody.toJSONString();
String rs = HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); String rs = HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
sendNoticeForWorker("删除人员到海康isc", rs, workerInfo, 1, 3); return rs;
} }
private void deleteWorkerFace(WorkerInfo workerInfo, Project project) throws Exception { private void deleteWorkerFace(WorkerInfo workerInfo, Project project) throws Exception {
@ -1024,9 +1097,6 @@ public class HikvisionCall {
jo.put("paramName", "personId"); jo.put("paramName", "personId");
jo.put("paramValue", Arrays.asList(String.valueOf(workerInfo.getId()))); jo.put("paramValue", Arrays.asList(String.valueOf(workerInfo.getId())));
String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
if (rs == null) {
throw new OpenAlertException("海康查询人员网络异常,名称:" + workerInfo.getWorkerName());
}
JSONObject joData = HikvisionUtil.getJSONObjectData(rs); JSONObject joData = HikvisionUtil.getJSONObjectData(rs);
if (joData != null) { if (joData != null) {
Integer total = joData.getInteger("total"); Integer total = joData.getInteger("total");

View File

@ -198,7 +198,7 @@ public class HiddenDangerInspectRecordServiceImpl extends ServiceImpl<HiddenDang
return; return;
} }
Double ds = item.getDeductScore(); Double ds = item.getDeductScore();
if (ds == null) { if (ds == null || ds == 0) {
return; return;
} }
Long changeUser = hiddenDangerInspectRecord.getChangeUser(); Long changeUser = hiddenDangerInspectRecord.getChangeUser();

View File

@ -472,7 +472,7 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl<AiAnaly
workerInfoToAiAnalyseHardWareAlarmRecordMapper.insert(entity); workerInfoToAiAnalyseHardWareAlarmRecordMapper.insert(entity);
//扣分 //扣分
Double deductScore = taskProgressMaterialRel.getDeductScore(); Double deductScore = taskProgressMaterialRel.getDeductScore();
if (deductScore == null) { if (deductScore == null || deductScore == 0) {
return; return;
} }
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();

View File

@ -1,27 +1,23 @@
package com.zhgd.xmgl.modules.xz.controller; package com.zhgd.xmgl.modules.xz.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync; import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
import com.zhgd.xmgl.modules.xz.service.IXzHikvisionSyncService; import com.zhgd.xmgl.modules.xz.service.IXzHikvisionSyncService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.HashMap;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import com.zhgd.jeecg.common.api.vo.Result;
import org.apache.commons.collections.MapUtils;
import org.simpleframework.xml.core.Validate;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.simpleframework.xml.core.Validate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
@ -65,6 +61,12 @@ public class XzHikvisionSyncController {
return Result.success(xzHikvisionSyncService.queryList(paramMap)); return Result.success(xzHikvisionSyncService.queryList(paramMap));
} }
@ApiOperation(value = "查询最新一波星纵-海康同步数据信息", notes = "查询最新一波星纵-海康同步数据信息", httpMethod = "POST")
@PostMapping(value = "/getNewestList")
public Result<List<XzHikvisionSync>> getNewestList(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
return Result.success(xzHikvisionSyncService.getNewestList(paramMap));
}
/** /**
* 添加 * 添加
* *
@ -125,4 +127,11 @@ public class XzHikvisionSyncController {
return result; return result;
} }
@ApiOperation(value = "重试", notes = "重试", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "星纵-海康同步数据ID", paramType = "query", required = true, dataType = "Long")
@PostMapping(value = "/retry")
public Result retry(@ApiIgnore @RequestBody Map<String, Object> paramMap) throws Exception {
xzHikvisionSyncService.retry(paramMap);
return Result.ok();
}
} }

View File

@ -1,18 +1,18 @@
package com.zhgd.xmgl.modules.xz.entity; package com.zhgd.xmgl.modules.xz.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/** /**
* @Description: 星纵-海康同步数据 * @Description: 星纵-海康同步数据
@ -72,17 +72,24 @@ public class XzHikvisionSync implements Serializable {
/** /**
* 创建时间 * 创建时间
*/ */
@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss.SSS")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss.SSS")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "创建时间")
private java.util.Date createDate; private java.util.Date createDate;
/** /**
* 更新时间 * 更新时间
*/ */
@Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") @Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss.SSS")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss.SSS")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
@ApiModelProperty(value = "更新时间") @ApiModelProperty(value = "更新时间")
private java.util.Date updateDate; private java.util.Date updateDate;
@TableField(exist = false)
@ApiModelProperty(value = "详情")
private java.lang.String detail;
@TableField(exist = false)
@ApiModelProperty(value = "设备名称")
private java.lang.String devName;
} }

View File

@ -4,6 +4,9 @@ import org.apache.ibatis.annotations.Mapper;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync; import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.HashMap;
import java.util.List;
/** /**
* @Description: 星纵-海康同步数据 * @Description: 星纵-海康同步数据
* @author pds * @author pds
@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper @Mapper
public interface XzHikvisionSyncMapper extends BaseMapper<XzHikvisionSync> { public interface XzHikvisionSyncMapper extends BaseMapper<XzHikvisionSync> {
List<XzHikvisionSync> getNewestList(HashMap<String, Object> paramMap);
} }

View File

@ -1,4 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper"> <mapper namespace="com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper">
<select id="getNewestList" resultType="com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync">
select t1.*,dev_name from xz_hikvision_sync t1
join (select max( create_date ) create_date,who_id from xz_hikvision_sync where who_id = #{whoId}) t2 on
t1.create_date=t2.create_date and t1.who_id=t2.who_id
left join uface_dev ud on t1.device_sn = ud.dev_sn
where t1.who_id = #{whoId}
</select>
</mapper> </mapper>

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @Description: 星纵-海康同步数据 * @Description: 星纵-海康同步数据
@ -24,4 +25,8 @@ public interface IXzHikvisionSyncService extends IService<XzHikvisionSync> {
void edit(XzHikvisionSync xzHikvisionSync); void edit(XzHikvisionSync xzHikvisionSync);
void delete(String id); void delete(String id);
List<XzHikvisionSync> getNewestList(HashMap<String, Object> paramMap);
void retry(Map<String, Object> paramMap) throws Exception;
} }

View File

@ -1,23 +1,34 @@
package com.zhgd.xmgl.modules.xz.service.impl; package com.zhgd.xmgl.modules.xz.service.impl;
import com.zhgd.jeecg.common.execption.OpenAlertException; import cn.hutool.core.util.StrUtil;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
import com.zhgd.xmgl.modules.xz.service.IXzHikvisionSyncService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.util.PageUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
import com.zhgd.xmgl.modules.xz.service.IXzHikvisionSyncService;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import com.zhgd.xmgl.util.ThreadLocalUtil;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import com.zhgd.xmgl.util.RefUtil;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
/** /**
* @Description: 星纵-海康同步数据 * @Description: 星纵-海康同步数据
@ -28,8 +39,14 @@ import org.springframework.beans.factory.annotation.Autowired;
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMapper, XzHikvisionSync> implements IXzHikvisionSyncService { public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMapper, XzHikvisionSync> implements IXzHikvisionSyncService {
@Autowired
private HikvisionCall hikvisionCall;
@Autowired @Autowired
private XzHikvisionSyncMapper xzHikvisionSyncMapper; private XzHikvisionSyncMapper xzHikvisionSyncMapper;
@Autowired
private WorkerInfoMapper workerInfoMapper;
@Autowired
private ProjectMapper projectMapper;
@Override @Override
public IPage<XzHikvisionSync> queryPageList(HashMap<String, Object> paramMap) { public IPage<XzHikvisionSync> queryPageList(HashMap<String, Object> paramMap) {
@ -81,5 +98,120 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMappe
baseMapper.deleteById(id); baseMapper.deleteById(id);
} }
@Override
public List<XzHikvisionSync> getNewestList(HashMap<String, Object> paramMap) {
List<XzHikvisionSync> newestList = baseMapper.getNewestList(paramMap);
for (XzHikvisionSync xzHikvisionSync : newestList) {
Integer operate = xzHikvisionSync.getOperate();
Integer type = xzHikvisionSync.getType();
Integer isSuccess = xzHikvisionSync.getIsSuccess();
String devName = xzHikvisionSync.getDevName();
String deviceSn = xzHikvisionSync.getDeviceSn();
if (StrUtil.isBlank(deviceSn)) {
xzHikvisionSync.setDetail(StrUtil.format("{}{}到ISC{}", getOperateName(operate), getTypeName(type), getIsSuccessName(isSuccess)));
} else {
xzHikvisionSync.setDetail(StrUtil.format("{}{}到{}{}", getOperateNameForDev(operate), getTypeName(type), devName, getIsSuccessName(isSuccess)));
}
}
return newestList;
}
private String getIsSuccessName(Integer isSuccess) {
return isSuccess == 1 ? "成功" : "失败";
}
private String getTypeName(Integer type) {
switch (type) {
case 1:
return "人员";
case 2:
return "人员照片";
case 3:
return "人员权限";
}
return null;
}
private String getOperateNameForDev(Integer operate) {
switch (operate) {
case 1:
return "下发";
case 3:
return "取消下发";
}
return null;
}
private String getOperateName(Integer operate) {
switch (operate) {
case 1:
return "新增";
case 2:
return "修改";
case 3:
return "删除";
}
return null;
}
@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void retry(Map<String, Object> paramMap) throws Exception {
Long id = MapUtils.getLong(paramMap, "id");
XzHikvisionSync xzHikvisionSync = baseMapper.selectById(id);
if (xzHikvisionSync == null) {
throw new OpenAlertException("未找到对应实体");
}
Long whoId = xzHikvisionSync.getWhoId();
WorkerInfo workerInfo = workerInfoMapper.selectById(whoId);
Project p = projectMapper.selectOne(new LambdaQueryWrapper<Project>()
.eq(Project::getProjectSn, workerInfo.getProjectSn())
.eq(Project::getSyncHikvision, 1)
);
if (workerInfo == null) {
return;
}
if (p == null) {
return;
}
if (xzHikvisionSync.getType() == 1) {
if (xzHikvisionSync.getOperate() == 1) {
hikvisionCall.addWorkerFromHttp(workerInfo, p);
} else if (xzHikvisionSync.getOperate() == 2) {
hikvisionCall.editWorkerFromHttp(workerInfo, p);
} else if (xzHikvisionSync.getOperate() == 3) {
hikvisionCall.deleteWorkerFromHttp(workerInfo, p);
}
} else if (xzHikvisionSync.getType() == 2) {
if (xzHikvisionSync.getOperate() == 1) {
hikvisionCall.addWorkerFace(workerInfo, p);
} else if (xzHikvisionSync.getOperate() == 2) {
hikvisionCall.editWorkerFromHttp(workerInfo, p);
} else if (xzHikvisionSync.getOperate() == 3) {
hikvisionCall.deleteWorkerFromHttp(workerInfo, p);
}
} else if (xzHikvisionSync.getType() == 3) {
StringBuilder sucSb = new StringBuilder();
StringBuilder failSb = new StringBuilder();
if (xzHikvisionSync.getOperate() == 1) {
hikvisionCall.updatePersonAuth(workerInfo, xzHikvisionSync.getDeviceSn(), sucSb, failSb, 0);
} else if (xzHikvisionSync.getOperate() == 3) {
hikvisionCall.updatePersonAuth(workerInfo, xzHikvisionSync.getDeviceSn(), sucSb, failSb, 2);
}
}
XzHikvisionSync xzHikvisionSync1 = baseMapper.selectById(id);
if (xzHikvisionSync1.getIsSuccess() == 0) {
throw new OpenAlertException("重试失败");
}
}
public static void main(String[] args) {
Date val = new Date();
ThreadLocalUtil.addInKey("now", val);
Date now = ThreadLocalUtil.getNotNull().getDate("now");
System.out.println(val == now);
}
} }