配置文件路径调整: 10.59.235.137 六厂现在的固定ip

更新人脸特征码功能: 根据本地图片重新获取人脸特征码 更新数据
This commit is contained in:
hejiayang
2025-10-16 16:33:03 +08:00
parent 081cc168eb
commit 590e17bbe2
4 changed files with 89 additions and 14 deletions
@@ -322,6 +322,16 @@ public class SwUserFaceimgController extends JeecgController<SwUserFaceimg, ISwU
return Result.OK().success("添加成功!");
}
/**
* 更新人脸特征数据
* @param type 0 子表 1 主表
* @return
*/
@GetMapping(value = "/updateAllUserFaceImg")
public Result<String> updateAllUserFaceImg(@RequestParam(name = "type", required = false,defaultValue = "0") Integer type){
return Result.OK(swUserFaceimgService.updateAllUserFaceImg(type));
}
public Result<?> saveFaceImgSubLocalUpload(@RequestBody Map map) {
String userId = map.get("userId").toString();
String img = map.get("imgSrc").toString();
@@ -45,4 +45,6 @@ public interface ISwUserFaceimgService extends IService<SwUserFaceimg> {
* @param userId isConfirm= true需要确认 ,根据userId确认
*/
void sendPaymentGateUserInfo(UserFaceInfo userFaceInfo, Integer type, Boolean isConfirm, String userId) ;
String updateAllUserFaceImg(Integer type);
}
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.arcsoft.face.FaceInfo;
import com.arcsoft.face.toolkit.ImageFactory;
import com.arcsoft.face.toolkit.ImageInfo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
@@ -19,11 +20,9 @@ import org.jeecg.face.service.FaceEngineService;
import org.jeecg.system.mapper.SwUserFaceimgMapper;
import org.jeecg.system.service.IStUserFaceimgSubIncremInfoService;
import org.jeecg.system.service.ISwUserFaceimgService;
import org.jeecg.system.service.ISwUserFaceimgSubService;
import org.jeecg.system.service.UserFaceCacheService;
import org.jeecg.user.entity.StUserFaceimgSubIncremInfo;
import org.jeecg.user.entity.SwUserFaceimg;
import org.jeecg.user.entity.SysUser;
import org.jeecg.user.entity.SysUserSub;
import org.jeecg.user.entity.*;
import org.jeecg.user.vo.UserCompareInfo;
import org.jeecg.user.vo.UserFaceInfo;
import org.springframework.beans.factory.annotation.Autowired;
@@ -66,6 +65,8 @@ public class SwUserFaceimgServiceImpl extends ServiceImpl<SwUserFaceimgMapper, S
private FaceEngineService faceEngineService;
@Resource
private IStUserFaceimgSubIncremInfoService iStUserFaceimgSubIncremInfoService;
@Resource
private ISwUserFaceimgSubService swUserFaceimgSubService;
@Override
public void reputUserFaceDataToRedis() {
log.info("重新获取人脸数据,注册到内存---开始");
@@ -408,4 +409,66 @@ public class SwUserFaceimgServiceImpl extends ServiceImpl<SwUserFaceimgMapper, S
});
}
//此方法是为了更新人脸特征数据 , 因为初始化数据 进去的人脸特征识别有问题, 现通过程序重新识别生成特征码并更新
@Override
public String updateAllUserFaceImg(Integer type){
if(type == 1){
//正式员工人脸表
QueryWrapper<SwUserFaceimg> queryWrapper = new QueryWrapper<>();
queryWrapper.isNotNull("face_img");
queryWrapper.ne("face_img","");
queryWrapper.isNotNull("face_feature_data");
queryWrapper.eq("face_status","1");
List<SwUserFaceimg> list = this.list(queryWrapper);
if(CollectionUtils.isNotEmpty(list)){
for (SwUserFaceimg swUserFaceimg : list) {
String img = FileShowUtil.getShowUrl(swUserFaceimg.getFaceImg());
log.error(img);
String imgSrc = "data:image/png;base64," + Base64Util.netImageToBase64(img);
//图片转base64
ImageInfo rgbData = ImageFactory.getRGBData(Base64Util.base64ToBytes(imgSrc));
//生成人脸特征码
List<FaceInfo> faceInfoList = faceEngineService.detectFaces(rgbData);
if (CollectionUtils.isNotEmpty(faceInfoList)) {
for (FaceInfo faceInfo : faceInfoList) {
byte[] feature = faceEngineService.extractFaceFeature(rgbData, faceInfo);
swUserFaceimg.setFaceFeatureData(feature);
}
}
}
this.updateBatchById(list);
}
return "此次操作更新人脸主表数据"+ list.size()+"条数据";
}else {
//子用户
//正式员工人脸表
QueryWrapper<SwUserFaceimgSub> subQueryWrapper = new QueryWrapper<>();
subQueryWrapper.isNotNull("face_img");
subQueryWrapper.ne("face_img","");
subQueryWrapper.isNotNull("face_feature_data");
subQueryWrapper.eq("face_status","1");
List<SwUserFaceimgSub> subList = swUserFaceimgSubService.list(subQueryWrapper);
if(CollectionUtils.isNotEmpty(subList)){
for (SwUserFaceimgSub faceimgSub : subList) {
String img = FileShowUtil.getShowUrl(faceimgSub.getFaceImg());
log.error(img);
String imgSrc = "data:image/png;base64," + Base64Util.netImageToBase64(img);
//图片转base64
ImageInfo rgbData = ImageFactory.getRGBData(Base64Util.base64ToBytes(imgSrc));
//生成人脸特征码
List<FaceInfo> faceInfoList = faceEngineService.detectFaces(rgbData);
if (CollectionUtils.isNotEmpty(faceInfoList)) {
for (FaceInfo faceInfo : faceInfoList) {
byte[] feature = faceEngineService.extractFaceFeature(rgbData, faceInfo);
faceimgSub.setFaceFeatureData(feature);
}
}
}
swUserFaceimgSubService.updateBatchById(subList);
}
return "此次操作更新人脸子表数据"+subList.size()+"条数据";
}
}
}