部分修改
This commit is contained in:
parent
ad87d4396b
commit
64504fdf3b
@ -45,6 +45,7 @@ import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
import java.util.UUID;
|
||||
|
||||
@IgnoreToken
|
||||
@RestController
|
||||
@ -233,7 +234,7 @@ public class ViidController {
|
||||
faceSample.setCreateAt(new Date());
|
||||
String url;
|
||||
try {
|
||||
url = ossUtil.uploadFile(file.getInputStream(), AliFaceUtil.generateEntityId(faceSample) + "." + ext);
|
||||
url = ossUtil.uploadFile(file.getInputStream(), UUID.randomUUID().toString() + "." + ext);
|
||||
} catch (IOException e) {
|
||||
log.error("文件上传失败!", e);
|
||||
continue;
|
||||
|
@ -3,6 +3,6 @@ package com.ycwl.basic.model.task.resp;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AddFaceRespVo {
|
||||
public class AddFaceSampleRespVo {
|
||||
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.resp.FaceSampleRespVO;
|
||||
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.service.task.TaskFaceService;
|
||||
import com.ycwl.basic.utils.AliFaceUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -41,6 +40,7 @@ import com.aliyuncs.IAcsClient;
|
||||
import com.aliyuncs.profile.DefaultProfile;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
@ -67,9 +67,9 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public SearchFaceRespVo searchFace(Long scenicId, Long faceId) {
|
||||
public SearchFaceRespVo searchFace(Long faceId) {
|
||||
FaceRespVO faceRespVO = faceMapper.getById(faceId);
|
||||
SearchFaceRespVo respVo = searchFace(scenicId, faceRespVO.getFaceUrl());
|
||||
SearchFaceRespVo respVo = searchFace(faceRespVO.getScenicId(), faceRespVO.getFaceUrl());
|
||||
if (respVo != null) {
|
||||
FaceEntity faceEntity = new FaceEntity();
|
||||
faceEntity.setId(faceId);
|
||||
@ -84,9 +84,15 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
|
||||
@Override
|
||||
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();
|
||||
SearchFaceRequest request = new SearchFaceRequest();
|
||||
request.setDbName(scenicId.toString());
|
||||
request.setDbName(dbName);
|
||||
request.setImageUrl(faceUrl);
|
||||
request.setLimit(100);
|
||||
request.setQualityScoreThreshold(80F);
|
||||
@ -118,11 +124,22 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AddFaceRespVo addFaceSample(Long faceSampleId) {
|
||||
public AddFaceSampleRespVo addFaceSample(Long 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();
|
||||
request.setDbName(faceSampleRespVO.getScenicId().toString());
|
||||
String entityId = AliFaceUtil.generateEntityId(faceSampleRespVO);
|
||||
request.setDbName(dbName);
|
||||
request.setEntityId(entityId);
|
||||
IAcsClient client = getClient();
|
||||
try {
|
||||
@ -131,27 +148,22 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
return null;
|
||||
}
|
||||
AddFaceRequest addFaceRequest = new AddFaceRequest();
|
||||
addFaceRequest.setDbName(faceSampleRespVO.getScenicId().toString());
|
||||
addFaceRequest.setDbName(dbName);
|
||||
addFaceRequest.setEntityId(entityId);
|
||||
addFaceRequest.setImageUrl(faceSampleRespVO.getFaceUrl());
|
||||
addFaceRequest.setExtraData(faceSampleId.toString());
|
||||
AddFaceRespVo respVo = new AddFaceRespVo();
|
||||
addFaceRequest.setImageUrl(faceUrl);
|
||||
addFaceRequest.setExtraData(extData);
|
||||
AddFaceSampleRespVo respVo = new AddFaceSampleRespVo();
|
||||
try {
|
||||
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());
|
||||
return respVo;
|
||||
} catch (ClientException e) {
|
||||
return null;
|
||||
}
|
||||
return respVo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchDeleteFace(Long scenicId) {
|
||||
public void batchDeleteExpiredFace(Long scenicId) {
|
||||
FaceSampleReqQuery query = new FaceSampleReqQuery();
|
||||
query.setDeviceId(scenicId);
|
||||
faceSampleMapper.list(query);
|
||||
@ -170,7 +182,7 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
query.setEndTime(dayEnd);
|
||||
IAcsClient client = getClient();
|
||||
faceSampleMapper.list(query).forEach(faceSampleEntity -> {
|
||||
String entityId = AliFaceUtil.generateEntityId(faceSampleEntity);
|
||||
String entityId = generateEntityId(faceSampleEntity);
|
||||
DeleteFaceEntityRequest request = new DeleteFaceEntityRequest();
|
||||
request.setDbName(scenicId.toString());
|
||||
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
|
||||
public void assureFaceDB(String dbName) {
|
||||
if (redisTemplate.hasKey(FaceConstant.FACE_DB_NAME_PFX + dbName)) {
|
||||
@ -267,4 +267,30 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
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;
|
||||
|
||||
import com.ycwl.basic.model.task.resp.AddFaceRespVo;
|
||||
import com.ycwl.basic.model.task.resp.AddFaceSampleRespVo;
|
||||
import com.ycwl.basic.model.task.resp.SearchFaceRespVo;
|
||||
|
||||
public interface TaskFaceService {
|
||||
|
||||
SearchFaceRespVo searchFace(Long scenicId, Long faceId);
|
||||
SearchFaceRespVo searchFace(Long faceId);
|
||||
|
||||
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);
|
||||
|
||||
|
@ -106,7 +106,7 @@ public class DynamicTaskGenerator {
|
||||
if (face.getMatchSampleIds() != null) {
|
||||
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()) {
|
||||
boolean isEqual = true;
|
||||
for (Long sampleId : searchFace.getSampleListIds()) {
|
||||
|
@ -28,7 +28,7 @@ public class FaceCleaner {
|
||||
List<ScenicRespVO> scenicList = scenicMapper.list(scenicQuery);
|
||||
scenicList.forEach(scenic -> {
|
||||
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;
|
||||
|
||||
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