部分修改
This commit is contained in:
parent
ad87d4396b
commit
64504fdf3b
@ -45,6 +45,7 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@IgnoreToken
|
@IgnoreToken
|
||||||
@RestController
|
@RestController
|
||||||
@ -233,7 +234,7 @@ public class ViidController {
|
|||||||
faceSample.setCreateAt(new Date());
|
faceSample.setCreateAt(new Date());
|
||||||
String url;
|
String url;
|
||||||
try {
|
try {
|
||||||
url = ossUtil.uploadFile(file.getInputStream(), AliFaceUtil.generateEntityId(faceSample) + "." + ext);
|
url = ossUtil.uploadFile(file.getInputStream(), UUID.randomUUID().toString() + "." + ext);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("文件上传失败!", e);
|
log.error("文件上传失败!", e);
|
||||||
continue;
|
continue;
|
||||||
|
@ -3,6 +3,6 @@ package com.ycwl.basic.model.task.resp;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class AddFaceRespVo {
|
public class AddFaceSampleRespVo {
|
||||||
private float score;
|
private float score;
|
||||||
}
|
}
|
@ -27,10 +27,9 @@ import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
|
|||||||
import com.ycwl.basic.model.pc.faceSample.req.FaceSampleReqQuery;
|
import com.ycwl.basic.model.pc.faceSample.req.FaceSampleReqQuery;
|
||||||
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
||||||
import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
|
import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
|
||||||
import com.ycwl.basic.model.task.resp.AddFaceRespVo;
|
import com.ycwl.basic.model.task.resp.AddFaceSampleRespVo;
|
||||||
import com.ycwl.basic.model.task.resp.SearchFaceRespVo;
|
import com.ycwl.basic.model.task.resp.SearchFaceRespVo;
|
||||||
import com.ycwl.basic.service.task.TaskFaceService;
|
import com.ycwl.basic.service.task.TaskFaceService;
|
||||||
import com.ycwl.basic.utils.AliFaceUtil;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
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;
|
||||||
@ -41,6 +40,7 @@ import com.aliyuncs.IAcsClient;
|
|||||||
import com.aliyuncs.profile.DefaultProfile;
|
import com.aliyuncs.profile.DefaultProfile;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -67,9 +67,9 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SearchFaceRespVo searchFace(Long scenicId, Long faceId) {
|
public SearchFaceRespVo searchFace(Long faceId) {
|
||||||
FaceRespVO faceRespVO = faceMapper.getById(faceId);
|
FaceRespVO faceRespVO = faceMapper.getById(faceId);
|
||||||
SearchFaceRespVo respVo = searchFace(scenicId, faceRespVO.getFaceUrl());
|
SearchFaceRespVo respVo = searchFace(faceRespVO.getScenicId(), faceRespVO.getFaceUrl());
|
||||||
if (respVo != null) {
|
if (respVo != null) {
|
||||||
FaceEntity faceEntity = new FaceEntity();
|
FaceEntity faceEntity = new FaceEntity();
|
||||||
faceEntity.setId(faceId);
|
faceEntity.setId(faceId);
|
||||||
@ -84,9 +84,15 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SearchFaceRespVo searchFace(Long scenicId, String faceUrl) {
|
public SearchFaceRespVo searchFace(Long scenicId, String faceUrl) {
|
||||||
|
return searchFace(scenicId.toString(), faceUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SearchFaceRespVo searchFace(String dbName, String faceUrl) {
|
||||||
|
assureFaceDB(dbName);
|
||||||
IAcsClient client = getClient();
|
IAcsClient client = getClient();
|
||||||
SearchFaceRequest request = new SearchFaceRequest();
|
SearchFaceRequest request = new SearchFaceRequest();
|
||||||
request.setDbName(scenicId.toString());
|
request.setDbName(dbName);
|
||||||
request.setImageUrl(faceUrl);
|
request.setImageUrl(faceUrl);
|
||||||
request.setLimit(100);
|
request.setLimit(100);
|
||||||
request.setQualityScoreThreshold(80F);
|
request.setQualityScoreThreshold(80F);
|
||||||
@ -118,11 +124,22 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AddFaceRespVo addFaceSample(Long faceSampleId) {
|
public AddFaceSampleRespVo addFaceSample(Long faceSampleId) {
|
||||||
FaceSampleRespVO faceSampleRespVO = faceSampleMapper.getById(faceSampleId);
|
FaceSampleRespVO faceSampleRespVO = faceSampleMapper.getById(faceSampleId);
|
||||||
|
String entityId = generateEntityId(faceSampleRespVO);
|
||||||
|
AddFaceSampleRespVo respVo = addFaceSample(faceSampleRespVO.getScenicId().toString(), entityId, faceSampleRespVO.getFaceUrl(), faceSampleId.toString());
|
||||||
|
FaceSampleEntity faceSampleEntity = new FaceSampleEntity();
|
||||||
|
faceSampleEntity.setId(faceSampleId);
|
||||||
|
faceSampleEntity.setScore(respVo.getScore());
|
||||||
|
faceSampleEntity.setUpdateAt(new Date());
|
||||||
|
faceSampleMapper.update(faceSampleEntity);
|
||||||
|
return respVo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AddFaceSampleRespVo addFaceSample(String dbName, String entityId, String faceUrl, String extData) {
|
||||||
AddFaceEntityRequest request = new AddFaceEntityRequest();
|
AddFaceEntityRequest request = new AddFaceEntityRequest();
|
||||||
request.setDbName(faceSampleRespVO.getScenicId().toString());
|
request.setDbName(dbName);
|
||||||
String entityId = AliFaceUtil.generateEntityId(faceSampleRespVO);
|
|
||||||
request.setEntityId(entityId);
|
request.setEntityId(entityId);
|
||||||
IAcsClient client = getClient();
|
IAcsClient client = getClient();
|
||||||
try {
|
try {
|
||||||
@ -131,27 +148,22 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
AddFaceRequest addFaceRequest = new AddFaceRequest();
|
AddFaceRequest addFaceRequest = new AddFaceRequest();
|
||||||
addFaceRequest.setDbName(faceSampleRespVO.getScenicId().toString());
|
addFaceRequest.setDbName(dbName);
|
||||||
addFaceRequest.setEntityId(entityId);
|
addFaceRequest.setEntityId(entityId);
|
||||||
addFaceRequest.setImageUrl(faceSampleRespVO.getFaceUrl());
|
addFaceRequest.setImageUrl(faceUrl);
|
||||||
addFaceRequest.setExtraData(faceSampleId.toString());
|
addFaceRequest.setExtraData(extData);
|
||||||
AddFaceRespVo respVo = new AddFaceRespVo();
|
AddFaceSampleRespVo respVo = new AddFaceSampleRespVo();
|
||||||
try {
|
try {
|
||||||
AddFaceResponse acsResponse = client.getAcsResponse(addFaceRequest);
|
AddFaceResponse acsResponse = client.getAcsResponse(addFaceRequest);
|
||||||
FaceSampleEntity faceSampleEntity = new FaceSampleEntity();
|
|
||||||
faceSampleEntity.setId(faceSampleId);
|
|
||||||
faceSampleEntity.setScore(acsResponse.getData().getQualitieScore());
|
|
||||||
faceSampleEntity.setUpdateAt(new Date());
|
|
||||||
faceSampleMapper.update(faceSampleEntity);
|
|
||||||
respVo.setScore(acsResponse.getData().getQualitieScore());
|
respVo.setScore(acsResponse.getData().getQualitieScore());
|
||||||
|
return respVo;
|
||||||
} catch (ClientException e) {
|
} catch (ClientException e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return respVo;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void batchDeleteFace(Long scenicId) {
|
public void batchDeleteExpiredFace(Long scenicId) {
|
||||||
FaceSampleReqQuery query = new FaceSampleReqQuery();
|
FaceSampleReqQuery query = new FaceSampleReqQuery();
|
||||||
query.setDeviceId(scenicId);
|
query.setDeviceId(scenicId);
|
||||||
faceSampleMapper.list(query);
|
faceSampleMapper.list(query);
|
||||||
@ -170,7 +182,7 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
|||||||
query.setEndTime(dayEnd);
|
query.setEndTime(dayEnd);
|
||||||
IAcsClient client = getClient();
|
IAcsClient client = getClient();
|
||||||
faceSampleMapper.list(query).forEach(faceSampleEntity -> {
|
faceSampleMapper.list(query).forEach(faceSampleEntity -> {
|
||||||
String entityId = AliFaceUtil.generateEntityId(faceSampleEntity);
|
String entityId = generateEntityId(faceSampleEntity);
|
||||||
DeleteFaceEntityRequest request = new DeleteFaceEntityRequest();
|
DeleteFaceEntityRequest request = new DeleteFaceEntityRequest();
|
||||||
request.setDbName(scenicId.toString());
|
request.setDbName(scenicId.toString());
|
||||||
request.setEntityId(entityId);
|
request.setEntityId(entityId);
|
||||||
@ -232,18 +244,6 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addFaceDBCache(String dbName) {
|
|
||||||
redisTemplate.opsForValue().set(FaceConstant.FACE_DB_NAME_PFX + dbName, "1");
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean removeFaceDBCache(String dbName) {
|
|
||||||
return redisTemplate.delete(FaceConstant.FACE_DB_NAME_PFX + dbName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean clearFaceDBCache() {
|
|
||||||
return redisTemplate.delete(FaceConstant.FACE_DB_NAME_PFX + "*");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void assureFaceDB(String dbName) {
|
public void assureFaceDB(String dbName) {
|
||||||
if (redisTemplate.hasKey(FaceConstant.FACE_DB_NAME_PFX + dbName)) {
|
if (redisTemplate.hasKey(FaceConstant.FACE_DB_NAME_PFX + dbName)) {
|
||||||
@ -267,4 +267,30 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
|||||||
log.error("阿里云确保人脸数据库失败!", e);
|
log.error("阿里云确保人脸数据库失败!", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addFaceDBCache(String dbName) {
|
||||||
|
redisTemplate.opsForValue().set(FaceConstant.FACE_DB_NAME_PFX + dbName, "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean removeFaceDBCache(String dbName) {
|
||||||
|
return redisTemplate.delete(FaceConstant.FACE_DB_NAME_PFX + dbName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean clearFaceDBCache() {
|
||||||
|
return redisTemplate.delete(FaceConstant.FACE_DB_NAME_PFX + "*");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final String DATE_FORMAT="yyyyMMddHHmmssSSS";
|
||||||
|
|
||||||
|
public static String generateEntityId(FaceSampleEntity entity) {
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
|
||||||
|
String entityId = entity.getDeviceId().toString() + "_" + sdf.format(entity.getCreateAt());
|
||||||
|
return entityId;
|
||||||
|
}
|
||||||
|
public static String generateEntityId(FaceSampleRespVO entity) {
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
|
||||||
|
String entityId = entity.getDeviceId().toString() + "_" + sdf.format(entity.getCreateAt());
|
||||||
|
return entityId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,20 @@
|
|||||||
package com.ycwl.basic.service.task;
|
package com.ycwl.basic.service.task;
|
||||||
|
|
||||||
import com.ycwl.basic.model.task.resp.AddFaceRespVo;
|
import com.ycwl.basic.model.task.resp.AddFaceSampleRespVo;
|
||||||
import com.ycwl.basic.model.task.resp.SearchFaceRespVo;
|
import com.ycwl.basic.model.task.resp.SearchFaceRespVo;
|
||||||
|
|
||||||
public interface TaskFaceService {
|
public interface TaskFaceService {
|
||||||
|
|
||||||
SearchFaceRespVo searchFace(Long scenicId, Long faceId);
|
SearchFaceRespVo searchFace(Long faceId);
|
||||||
|
|
||||||
SearchFaceRespVo searchFace(Long scenicId, String faceUrl);
|
SearchFaceRespVo searchFace(Long scenicId, String faceUrl);
|
||||||
|
SearchFaceRespVo searchFace(String dbName, String faceUrl);
|
||||||
|
|
||||||
AddFaceRespVo addFaceSample(Long faceSampleId);
|
AddFaceSampleRespVo addFaceSample(Long faceSampleId);
|
||||||
|
|
||||||
void batchDeleteFace(Long scenicId);
|
AddFaceSampleRespVo addFaceSample(String dbName, String entityId, String faceUrl, String extData);
|
||||||
|
|
||||||
|
void batchDeleteExpiredFace(Long scenicId);
|
||||||
|
|
||||||
void deleteFaceDB(String scenicId);
|
void deleteFaceDB(String scenicId);
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ public class DynamicTaskGenerator {
|
|||||||
if (face.getMatchSampleIds() != null) {
|
if (face.getMatchSampleIds() != null) {
|
||||||
oldMatchedSampleListIds = Arrays.asList(face.getMatchSampleIds().split(","));
|
oldMatchedSampleListIds = Arrays.asList(face.getMatchSampleIds().split(","));
|
||||||
}
|
}
|
||||||
SearchFaceRespVo searchFace = faceService.searchFace(scenic.getId(), face.getId());
|
SearchFaceRespVo searchFace = faceService.searchFace(face.getId());
|
||||||
if (oldMatchedSampleListIds.size() == searchFace.getSampleListIds().size()) {
|
if (oldMatchedSampleListIds.size() == searchFace.getSampleListIds().size()) {
|
||||||
boolean isEqual = true;
|
boolean isEqual = true;
|
||||||
for (Long sampleId : searchFace.getSampleListIds()) {
|
for (Long sampleId : searchFace.getSampleListIds()) {
|
||||||
|
@ -28,7 +28,7 @@ public class FaceCleaner {
|
|||||||
List<ScenicRespVO> scenicList = scenicMapper.list(scenicQuery);
|
List<ScenicRespVO> scenicList = scenicMapper.list(scenicQuery);
|
||||||
scenicList.forEach(scenic -> {
|
scenicList.forEach(scenic -> {
|
||||||
log.info("当前景区{},开始删除人脸样本", scenic.getName());
|
log.info("当前景区{},开始删除人脸样本", scenic.getName());
|
||||||
faceService.batchDeleteFace(scenic.getId());
|
faceService.batchDeleteExpiredFace(scenic.getId());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,16 +6,4 @@ import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
|||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
|
||||||
public class AliFaceUtil {
|
public class AliFaceUtil {
|
||||||
private static final String DATE_FORMAT="yyyyMMddHHmmssSSS";
|
|
||||||
|
|
||||||
public static String generateEntityId(FaceSampleEntity entity) {
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
|
|
||||||
String entityId = entity.getDeviceId().toString() + "_" + sdf.format(entity.getCreateAt());
|
|
||||||
return entityId;
|
|
||||||
}
|
|
||||||
public static String generateEntityId(FaceSampleRespVO entity) {
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
|
|
||||||
String entityId = entity.getDeviceId().toString() + "_" + sdf.format(entity.getCreateAt());
|
|
||||||
return entityId;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user