优化是否能生成判断逻辑
This commit is contained in:
parent
ad9e91cd7a
commit
0d2c92e8e1
42
src/main/java/com/ycwl/basic/biz/TemplateBiz.java
Normal file
42
src/main/java/com/ycwl/basic/biz/TemplateBiz.java
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
package com.ycwl.basic.biz;
|
||||||
|
|
||||||
|
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
|
||||||
|
import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
|
||||||
|
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
||||||
|
import com.ycwl.basic.model.pc.template.entity.TemplateConfigEntity;
|
||||||
|
import com.ycwl.basic.repository.FaceRepository;
|
||||||
|
import com.ycwl.basic.repository.TemplateRepository;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class TemplateBiz {
|
||||||
|
@Autowired
|
||||||
|
private TemplateRepository templateRepository;
|
||||||
|
@Autowired
|
||||||
|
private FaceRepository faceRepository;
|
||||||
|
|
||||||
|
|
||||||
|
public boolean determineTemplateCanGenerate(Long templateId, Long faceId) {
|
||||||
|
List<String> placeholderList = templateRepository.getTemplatePlaceholder(templateId);
|
||||||
|
TemplateConfigEntity templateConfig = templateRepository.getTemplateConfig(templateId);
|
||||||
|
int minimalPlaceholderFill = 1;
|
||||||
|
if (null != templateConfig) {
|
||||||
|
if (null != templateConfig.getMinimalPlaceholderFill()) {
|
||||||
|
minimalPlaceholderFill = templateConfig.getMinimalPlaceholderFill();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (minimalPlaceholderFill <= 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
List<FaceSampleEntity> faceSampleList = faceRepository.getFaceSampleList(faceId);
|
||||||
|
long count = faceSampleList.stream().map(FaceSampleEntity::getDeviceId).filter(deviceId -> placeholderList.contains(deviceId.toString())).count();
|
||||||
|
return count >= minimalPlaceholderFill;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.ycwl.basic.controller.wvp;
|
||||||
|
|
||||||
|
import com.ycwl.basic.annotation.IgnoreLogReq;
|
||||||
|
import com.ycwl.basic.annotation.IgnoreToken;
|
||||||
|
import com.ycwl.basic.utils.ApiResponse;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@IgnoreToken
|
||||||
|
@RestController
|
||||||
|
@Api(tags = "WVP对接接口")
|
||||||
|
@RequestMapping("/wvp/v1/")
|
||||||
|
public class WvpController {
|
||||||
|
@IgnoreLogReq
|
||||||
|
@PostMapping("/sync")
|
||||||
|
public ApiResponse sync() {
|
||||||
|
return ApiResponse.success("success");
|
||||||
|
}
|
||||||
|
}
|
@ -74,8 +74,7 @@ public class AuthInterceptor extends HandlerInterceptorAdapter {
|
|||||||
// 解析 token & 验证 token 有效期
|
// 解析 token & 验证 token 有效期
|
||||||
JwtInfo jwtInfo;
|
JwtInfo jwtInfo;
|
||||||
try {
|
try {
|
||||||
jwtInfo = jwtTokenUtil.parsingToken(token);
|
jwtInfo = JwtTokenUtil.parsingToken(token);
|
||||||
log.info("用户信息:" + jwtInfo.toString());
|
|
||||||
LocalDateTime expireTime = jwtInfo.getExpireTime();
|
LocalDateTime expireTime = jwtInfo.getExpireTime();
|
||||||
if (LocalDateTime.now(ZoneId.systemDefault()).isAfter(expireTime)) {
|
if (LocalDateTime.now(ZoneId.systemDefault()).isAfter(expireTime)) {
|
||||||
throw new TokenExpireException("token过期");
|
throw new TokenExpireException("token过期");
|
||||||
|
@ -18,6 +18,7 @@ public interface FaceMapper {
|
|||||||
List<FaceRespVO> list(FaceReqQuery faceReqQuery);
|
List<FaceRespVO> list(FaceReqQuery faceReqQuery);
|
||||||
List<FaceRespVO> listByScenicIdAndNotFinished(Long scenicId);
|
List<FaceRespVO> listByScenicIdAndNotFinished(Long scenicId);
|
||||||
FaceRespVO getById(Long id);
|
FaceRespVO getById(Long id);
|
||||||
|
FaceEntity get(Long id);
|
||||||
int add(FaceEntity face);
|
int add(FaceEntity face);
|
||||||
int deleteById(Long id);
|
int deleteById(Long id);
|
||||||
int deleteByIds(@Param("list") List<Long> ids);
|
int deleteByIds(@Param("list") List<Long> ids);
|
||||||
|
@ -22,5 +22,5 @@ public interface FaceSampleMapper {
|
|||||||
int deleteByIds(@Param("list") List<Long> ids);
|
int deleteByIds(@Param("list") List<Long> ids);
|
||||||
int update(FaceSampleEntity faceSample);
|
int update(FaceSampleEntity faceSample);
|
||||||
|
|
||||||
List<FaceSampleRespVO> listByIds(List<Long> list);
|
List<FaceSampleEntity> listByIds(List<Long> list);
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,19 @@ package com.ycwl.basic.repository;
|
|||||||
|
|
||||||
import com.ycwl.basic.mapper.FaceMapper;
|
import com.ycwl.basic.mapper.FaceMapper;
|
||||||
import com.ycwl.basic.mapper.FaceSampleMapper;
|
import com.ycwl.basic.mapper.FaceSampleMapper;
|
||||||
|
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
|
||||||
|
import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
|
||||||
|
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class FaceRepository {
|
public class FaceRepository {
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -14,4 +23,15 @@ public class FaceRepository {
|
|||||||
private FaceMapper faceMapper;
|
private FaceMapper faceMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private FaceSampleMapper faceSampleMapper;
|
private FaceSampleMapper faceSampleMapper;
|
||||||
|
|
||||||
|
public List<FaceSampleEntity> getFaceSampleList(Long faceId) {
|
||||||
|
FaceEntity face = faceMapper.get(faceId);
|
||||||
|
if (face == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
if (StringUtils.isBlank(face.getMatchSampleIds())) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return faceSampleMapper.listByIds(Arrays.stream(face.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,6 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import com.ycwl.basic.mapper.FaceMapper;
|
import com.ycwl.basic.mapper.FaceMapper;
|
||||||
import com.ycwl.basic.mapper.FaceSampleMapper;
|
import com.ycwl.basic.mapper.FaceSampleMapper;
|
||||||
import com.ycwl.basic.mapper.TemplateMapper;
|
import com.ycwl.basic.mapper.TemplateMapper;
|
||||||
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
|
|
||||||
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
|
||||||
import com.ycwl.basic.model.pc.template.entity.TemplateConfigEntity;
|
import com.ycwl.basic.model.pc.template.entity.TemplateConfigEntity;
|
||||||
import com.ycwl.basic.model.pc.template.resp.TemplateRespVO;
|
import com.ycwl.basic.model.pc.template.resp.TemplateRespVO;
|
||||||
import com.ycwl.basic.utils.SnowFlakeUtil;
|
import com.ycwl.basic.utils.SnowFlakeUtil;
|
||||||
@ -13,11 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service // 临时这么用
|
@Service // 临时这么用
|
||||||
@ -35,29 +30,13 @@ public class TemplateRepository {
|
|||||||
public static final String TEMPLATE_CONFIG_CACHE_KEY = "template:%s:config";
|
public static final String TEMPLATE_CONFIG_CACHE_KEY = "template:%s:config";
|
||||||
|
|
||||||
|
|
||||||
public boolean determineTemplateCanGenerate(Long templateId, Long faceId) {
|
public List<String> getTemplatePlaceholder(Long templateId) {
|
||||||
TemplateRespVO template = getTemplate(templateId);
|
TemplateRespVO template = getTemplate(templateId);
|
||||||
Map<String, Boolean> map = new HashMap<>();
|
return template.getChildren().stream()
|
||||||
for (TemplateRespVO child : template.getChildren()) {
|
.filter(item -> item.getIsPlaceholder() == 1)
|
||||||
if (child.getIsPlaceholder() == 1) {
|
.map(TemplateRespVO::getSourceUrl)
|
||||||
map.put(child.getSourceUrl(), false);
|
.distinct()
|
||||||
}
|
.collect(Collectors.toList());
|
||||||
}
|
|
||||||
TemplateConfigEntity templateConfig = templateMapper.getConfig(templateId);
|
|
||||||
if (0 == templateConfig.getMinimalPlaceholderFill()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
FaceRespVO face = faceMapper.getById(faceId);
|
|
||||||
if (face.getMatchSampleIds() == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
List<FaceSampleRespVO> faceSample = faceSampleMapper.listByIds(Arrays.stream(face.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList()));
|
|
||||||
faceSample.stream().collect(Collectors.groupingBy(FaceSampleRespVO::getDeviceId)).forEach((deviceId, value) -> {
|
|
||||||
if (map.containsKey(deviceId.toString())) {
|
|
||||||
map.put(deviceId.toString(), true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return map.values().stream().filter(item -> item).count() >= templateConfig.getMinimalPlaceholderFill();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TemplateRespVO> getTemplateListByScenicId(Long scenicId) {
|
public List<TemplateRespVO> getTemplateListByScenicId(Long scenicId) {
|
||||||
|
@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.ycwl.basic.biz.OrderBiz;
|
import com.ycwl.basic.biz.OrderBiz;
|
||||||
|
import com.ycwl.basic.biz.TemplateBiz;
|
||||||
import com.ycwl.basic.constant.BaseContextHandler;
|
import com.ycwl.basic.constant.BaseContextHandler;
|
||||||
import com.ycwl.basic.mapper.*;
|
import com.ycwl.basic.mapper.*;
|
||||||
import com.ycwl.basic.model.jwt.JwtInfo;
|
import com.ycwl.basic.model.jwt.JwtInfo;
|
||||||
@ -75,6 +76,8 @@ public class AppScenicServiceImpl implements AppScenicService {
|
|||||||
private OrderBiz orderBiz;
|
private OrderBiz orderBiz;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ScenicRepository scenicRepository;
|
private ScenicRepository scenicRepository;
|
||||||
|
@Autowired
|
||||||
|
private TemplateBiz templateBiz;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApiResponse<PageInfo<ScenicAppVO>> pageQuery(ScenicReqQuery scenicReqQuery) {
|
public ApiResponse<PageInfo<ScenicAppVO>> pageQuery(ScenicReqQuery scenicReqQuery) {
|
||||||
@ -126,7 +129,7 @@ public class AppScenicServiceImpl implements AppScenicService {
|
|||||||
contentPageVO.setLockType(-1);
|
contentPageVO.setLockType(-1);
|
||||||
} else {
|
} else {
|
||||||
contentPageVO.setContentType(0);
|
contentPageVO.setContentType(0);
|
||||||
boolean canGenerate = templateRepository.determineTemplateCanGenerate(contentPageVO.getTemplateId(), faceId);
|
boolean canGenerate = templateBiz.determineTemplateCanGenerate(contentPageVO.getTemplateId(), faceId);
|
||||||
if (canGenerate) {
|
if (canGenerate) {
|
||||||
contentPageVO.setLockType(0);
|
contentPageVO.setLockType(0);
|
||||||
} else {
|
} else {
|
||||||
|
@ -232,7 +232,11 @@ public class GoodsServiceImpl implements GoodsService {
|
|||||||
if (paramJson == null) {
|
if (paramJson == null) {
|
||||||
deviceCount = 1;
|
deviceCount = 1;
|
||||||
} else {
|
} else {
|
||||||
deviceCount = paramJson.keySet().stream().filter(StringUtils::isNumeric).count();
|
List<String> templatePlaceholder = templateRepository.getTemplatePlaceholder(task.getTemplateId());
|
||||||
|
deviceCount = paramJson.keySet().stream()
|
||||||
|
.filter(StringUtils::isNumeric)
|
||||||
|
.filter(templatePlaceholder::contains)
|
||||||
|
.count();
|
||||||
}
|
}
|
||||||
goodsDetailVO.setLensNum((int) deviceCount);
|
goodsDetailVO.setLensNum((int) deviceCount);
|
||||||
return ApiResponse.success(goodsDetailVO);
|
return ApiResponse.success(goodsDetailVO);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.ycwl.basic.service.impl.task;
|
package com.ycwl.basic.service.task.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
@ -1,10 +1,11 @@
|
|||||||
package com.ycwl.basic.service.impl.task;
|
package com.ycwl.basic.service.task.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.ycwl.basic.biz.OrderBiz;
|
import com.ycwl.basic.biz.OrderBiz;
|
||||||
|
import com.ycwl.basic.biz.TemplateBiz;
|
||||||
import com.ycwl.basic.constant.TaskConstant;
|
import com.ycwl.basic.constant.TaskConstant;
|
||||||
import com.ycwl.basic.mapper.FaceMapper;
|
import com.ycwl.basic.mapper.FaceMapper;
|
||||||
import com.ycwl.basic.mapper.FaceSampleMapper;
|
import com.ycwl.basic.mapper.FaceSampleMapper;
|
||||||
@ -16,6 +17,7 @@ import com.ycwl.basic.mapper.TemplateMapper;
|
|||||||
import com.ycwl.basic.mapper.VideoMapper;
|
import com.ycwl.basic.mapper.VideoMapper;
|
||||||
import com.ycwl.basic.model.mobile.order.PriceObj;
|
import com.ycwl.basic.model.mobile.order.PriceObj;
|
||||||
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
|
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
|
||||||
|
import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
|
||||||
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
||||||
import com.ycwl.basic.model.pc.member.resp.MemberRespVO;
|
import com.ycwl.basic.model.pc.member.resp.MemberRespVO;
|
||||||
import com.ycwl.basic.model.pc.mp.MpConfigEntity;
|
import com.ycwl.basic.model.pc.mp.MpConfigEntity;
|
||||||
@ -96,6 +98,8 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
private MemberMapper memberMapper;
|
private MemberMapper memberMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ScenicRepository scenicRepository;
|
private ScenicRepository scenicRepository;
|
||||||
|
@Autowired
|
||||||
|
private TemplateBiz templateBiz;
|
||||||
|
|
||||||
private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) {
|
private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) {
|
||||||
String accessKey = req.getAccessKey();
|
String accessKey = req.getAccessKey();
|
||||||
@ -152,7 +156,7 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
if (faceId == null) {
|
if (faceId == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
boolean canGenerate = templateRepository.determineTemplateCanGenerate(templateId, faceId);
|
boolean canGenerate = templateBiz.determineTemplateCanGenerate(templateId, faceId);
|
||||||
if (!canGenerate) {
|
if (!canGenerate) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -221,7 +225,7 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
if (!StringUtils.isNotBlank(faceRespVO.getMatchSampleIds())) {
|
if (!StringUtils.isNotBlank(faceRespVO.getMatchSampleIds())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<FaceSampleRespVO> faceSampleList = faceSampleMapper.listByIds(Arrays.stream(faceRespVO.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList()));
|
List<FaceSampleEntity> faceSampleList = faceSampleMapper.listByIds(Arrays.stream(faceRespVO.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList()));
|
||||||
if (faceSampleList.isEmpty()) {
|
if (faceSampleList.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -247,11 +251,11 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
public void createTaskByFaceIdAndTempalteId(Long faceId, Long templateId, int automatic) {
|
public void createTaskByFaceIdAndTempalteId(Long faceId, Long templateId, int automatic) {
|
||||||
FaceRespVO faceRespVO = faceMapper.getById(faceId);
|
FaceRespVO faceRespVO = faceMapper.getById(faceId);
|
||||||
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(faceRespVO.getScenicId());
|
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(faceRespVO.getScenicId());
|
||||||
List<FaceSampleRespVO> faceSampleList = faceSampleMapper.listByIds(Arrays.stream(faceRespVO.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList()));
|
List<FaceSampleEntity> faceSampleList = faceSampleMapper.listByIds(Arrays.stream(faceRespVO.getMatchSampleIds().split(",")).map(Long::valueOf).collect(Collectors.toList()));
|
||||||
if (faceSampleList.isEmpty()) {
|
if (faceSampleList.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<Long> faceSampleIds = faceSampleList.stream().map(FaceSampleRespVO::getId).collect(Collectors.toList());
|
List<Long> faceSampleIds = faceSampleList.stream().map(FaceSampleEntity::getId).collect(Collectors.toList());
|
||||||
List<SourceEntity> sourceList = sourceMapper.listBySampleIds(faceSampleIds);
|
List<SourceEntity> sourceList = sourceMapper.listBySampleIds(faceSampleIds);
|
||||||
if (sourceList.isEmpty()) {
|
if (sourceList.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
@ -294,7 +298,7 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
task.faceSampleIds = faceSampleIds;
|
task.faceSampleIds = faceSampleIds;
|
||||||
task.memberId = faceRespVO.getMemberId();
|
task.memberId = faceRespVO.getMemberId();
|
||||||
task.callback = () -> {
|
task.callback = () -> {
|
||||||
boolean canGenerate = templateRepository.determineTemplateCanGenerate(templateId, faceId);
|
boolean canGenerate = templateBiz.determineTemplateCanGenerate(templateId, faceId);
|
||||||
if (!canGenerate) {
|
if (!canGenerate) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package com.ycwl.basic.service.impl.task;
|
package com.ycwl.basic.service.task.impl;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.ycwl.basic.mapper.TemplateMapper;
|
import com.ycwl.basic.mapper.TemplateMapper;
|
4
src/main/java/com/ycwl/basic/service/wvp/WvpService.java
Normal file
4
src/main/java/com/ycwl/basic/service/wvp/WvpService.java
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
package com.ycwl.basic.service.wvp;
|
||||||
|
|
||||||
|
public interface WvpService {
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.ycwl.basic.service.wvp.impl;
|
||||||
|
|
||||||
|
import com.ycwl.basic.device.repository.DeviceRepository;
|
||||||
|
import com.ycwl.basic.repository.ScenicRepository;
|
||||||
|
import com.ycwl.basic.service.wvp.WvpService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class WvpServiceImpl implements WvpService {
|
||||||
|
@Autowired
|
||||||
|
private RedisTemplate<String, String> redisTemplate;
|
||||||
|
@Autowired
|
||||||
|
private DeviceRepository deviceRepository;
|
||||||
|
@Autowired
|
||||||
|
private ScenicRepository scenicRepository;
|
||||||
|
}
|
@ -1,11 +1,13 @@
|
|||||||
package com.ycwl.basic.task;
|
package com.ycwl.basic.task;
|
||||||
|
|
||||||
|
import com.ycwl.basic.biz.TemplateBiz;
|
||||||
import com.ycwl.basic.mapper.DeviceMapper;
|
import com.ycwl.basic.mapper.DeviceMapper;
|
||||||
import com.ycwl.basic.mapper.FaceMapper;
|
import com.ycwl.basic.mapper.FaceMapper;
|
||||||
import com.ycwl.basic.mapper.FaceSampleMapper;
|
import com.ycwl.basic.mapper.FaceSampleMapper;
|
||||||
import com.ycwl.basic.mapper.ScenicMapper;
|
import com.ycwl.basic.mapper.ScenicMapper;
|
||||||
import com.ycwl.basic.mapper.TemplateMapper;
|
import com.ycwl.basic.mapper.TemplateMapper;
|
||||||
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
|
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
|
||||||
|
import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
|
||||||
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.pc.scenic.req.ScenicReqQuery;
|
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
|
||||||
@ -45,6 +47,8 @@ public class DynamicTaskGenerator {
|
|||||||
private TaskService taskService;
|
private TaskService taskService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private DeviceMapper deviceMapper;
|
private DeviceMapper deviceMapper;
|
||||||
|
@Autowired
|
||||||
|
private TemplateBiz templateBiz;
|
||||||
|
|
||||||
@Scheduled(cron = "0 0 * * * ?")
|
@Scheduled(cron = "0 0 * * * ?")
|
||||||
public void dynamicTask() {
|
public void dynamicTask() {
|
||||||
@ -77,27 +81,6 @@ public class DynamicTaskGenerator {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Integer minimalPlaceholderFill = templateConfig.getMinimalPlaceholderFill();
|
|
||||||
int maxPlaceholder = 0;
|
|
||||||
List<String> placeholderList = new ArrayList<>();
|
|
||||||
if (minimalPlaceholderFill == null) {
|
|
||||||
minimalPlaceholderFill = 0;
|
|
||||||
}
|
|
||||||
List<TemplateRespVO> subTemplateList = templateMapper.getByPid(template.getId());
|
|
||||||
for (TemplateRespVO subTemplate : subTemplateList) {
|
|
||||||
if (subTemplate.getIsPlaceholder() == 1) {
|
|
||||||
placeholderList.add(subTemplate.getSourceUrl());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (minimalPlaceholderFill == 0) {
|
|
||||||
for (TemplateRespVO subTemplate : subTemplateList) {
|
|
||||||
maxPlaceholder += 1;
|
|
||||||
if (subTemplate.getIsPlaceholder() == 1) {
|
|
||||||
minimalPlaceholderFill += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.info("当前模板{}启用默认,最小占位素材:{}", template.getName(), minimalPlaceholderFill);
|
|
||||||
// 查找人脸样本
|
// 查找人脸样本
|
||||||
List<FaceRespVO> list = faceMapper.listByScenicIdAndNotFinished(scenic.getId());
|
List<FaceRespVO> list = faceMapper.listByScenicIdAndNotFinished(scenic.getId());
|
||||||
for (FaceRespVO face : list) {
|
for (FaceRespVO face : list) {
|
||||||
@ -122,23 +105,12 @@ public class DynamicTaskGenerator {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List<FaceSampleRespVO> faceSampleList = faceSampleMapper.listByIds(searchFace.getSampleListIds());
|
if (templateBiz.determineTemplateCanGenerate(template.getId(), face.getId())) {
|
||||||
int matchedPlaceholder = 0;
|
log.info("当前人脸样本{}已超过最小占位素材,自动创建任务", face.getFaceUrl());
|
||||||
for (FaceSampleRespVO faceSample : faceSampleList) {
|
|
||||||
if (placeholderList.contains(faceSample.getDeviceId().toString())) {
|
|
||||||
matchedPlaceholder += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (matchedPlaceholder >= maxPlaceholder) {
|
|
||||||
log.info("当前人脸样本{}已超过最大占位素材{},自动创建任务", face.getFaceUrl(), maxPlaceholder);
|
|
||||||
taskService.createRenderTask(scenic.getId(), template.getId(), face.getId());
|
|
||||||
faceMapper.finishedJourney(face.getId());
|
|
||||||
} else if (matchedPlaceholder >= minimalPlaceholderFill) {
|
|
||||||
log.info("当前人脸样本{}已超过最小占位素材{},自动创建任务", face.getFaceUrl(), minimalPlaceholderFill);
|
|
||||||
taskService.createRenderTask(scenic.getId(), template.getId(), face.getId());
|
taskService.createRenderTask(scenic.getId(), template.getId(), face.getId());
|
||||||
faceMapper.finishedJourney(face.getId());
|
faceMapper.finishedJourney(face.getId());
|
||||||
} else {
|
} else {
|
||||||
log.info("当前人脸样本{}未超过最小占位素材{},未达到自动生成条件", face.getFaceUrl(), minimalPlaceholderFill);
|
log.info("当前人脸样本{}未超过最小占位素材,未达到自动生成条件", face.getFaceUrl());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,4 +89,9 @@
|
|||||||
order by update_at desc
|
order by update_at desc
|
||||||
limit 1
|
limit 1
|
||||||
</select>
|
</select>
|
||||||
|
<select id="get" resultType="com.ycwl.basic.model.pc.face.entity.FaceEntity">
|
||||||
|
select *
|
||||||
|
from face
|
||||||
|
where id = #{id}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@ -86,8 +86,8 @@
|
|||||||
from face_sample
|
from face_sample
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</select>
|
</select>
|
||||||
<select id="listByIds" resultType="com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO">
|
<select id="listByIds" resultType="com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity">
|
||||||
select id, scenic_id, device_id, face_url, match_sample_ids, first_match_rate, source_id, match_result,`status`, create_at
|
select *
|
||||||
from face_sample
|
from face_sample
|
||||||
where id in (
|
where id in (
|
||||||
<foreach collection="list" item="id" separator=",">
|
<foreach collection="list" item="id" separator=",">
|
||||||
|
@ -93,6 +93,7 @@
|
|||||||
<foreach collection="list" item="item" open="(" separator="," close=")">
|
<foreach collection="list" item="item" open="(" separator="," close=")">
|
||||||
#{item}
|
#{item}
|
||||||
</foreach>
|
</foreach>
|
||||||
|
order by create_time desc
|
||||||
</select>
|
</select>
|
||||||
<select id="listVideoBySampleIds" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
|
<select id="listVideoBySampleIds" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
|
||||||
select *
|
select *
|
||||||
|
Loading…
x
Reference in New Issue
Block a user