瀏覽代碼

修改生成Uid方法

suntianwu 3 年之前
父節點
當前提交
2d9ed64cc0

+ 4 - 1
src/main/java/com/iden/bms/service/FaceIdenService.java

@@ -53,6 +53,9 @@ public class FaceIdenService {
     private IdenPersonService idenPersonService;
     private IdenPersonService idenPersonService;
     @Resource
     @Resource
     private IdenPersonStrangerService idenPersonStrangerService;
     private IdenPersonStrangerService idenPersonStrangerService;
+    @Resource
+    private IdenAutoincrKeyService idenAutoincrKeyService;
+
 
 
     @Resource
     @Resource
     private RedisUtil redisUtil;
     private RedisUtil redisUtil;
@@ -280,7 +283,7 @@ public class FaceIdenService {
                                         }
                                         }
                                     }  else { //没有命中,肯定是新增陌生人
                                     }  else { //没有命中,肯定是新增陌生人
                                         idenFaceImage.setType(PersonTypeEnum.STRANGER.getValue());
                                         idenFaceImage.setType(PersonTypeEnum.STRANGER.getValue());
-                                        idenFaceImage.setUid(redisUtil.generate(RedisKeyConstant.UID_KEY));
+                                        idenFaceImage.setUid(idenAutoincrKeyService.updateMaxValue("uid"));
                                         //添加陌生人员表数据
                                         //添加陌生人员表数据
                                         IdenPersonStranger idenPersonStranger = new IdenPersonStranger();
                                         IdenPersonStranger idenPersonStranger = new IdenPersonStranger();
                                         BeanUtil.copyProperties(idenFaceImage,idenPersonStranger);
                                         BeanUtil.copyProperties(idenFaceImage,idenPersonStranger);

+ 4 - 2
src/main/java/com/iden/bms/service/PersonService.java

@@ -69,6 +69,8 @@ public class PersonService {
     private IdenCommunityService idenCommunityService;
     private IdenCommunityService idenCommunityService;
     @Resource
     @Resource
     private IdenWarningPersonService idenWarningPersonService;
     private IdenWarningPersonService idenWarningPersonService;
+    @Resource
+    private IdenAutoincrKeyService idenAutoincrKeyService;
 
 
 
 
     @Resource
     @Resource
@@ -535,7 +537,7 @@ public class PersonService {
                     personVOList.forEach(item->{
                     personVOList.forEach(item->{
                         IdenPerson idenPerson = new IdenPerson();
                         IdenPerson idenPerson = new IdenPerson();
                         BeanUtil.copyProperties(item,idenPerson);
                         BeanUtil.copyProperties(item,idenPerson);
-                        idenPerson.setUid(redisUtil.generate(RedisKeyConstant.UID_KEY));
+                        idenPerson.setUid(idenAutoincrKeyService.updateMaxValue("uid"));
 
 
                         idenPerson.setCreateTime(new Date());
                         idenPerson.setCreateTime(new Date());
                         idenPersonService.save(idenPerson);
                         idenPersonService.save(idenPerson);
@@ -751,7 +753,7 @@ public class PersonService {
         //保存人员
         //保存人员
         IdenPerson idenPerson = new IdenPerson();
         IdenPerson idenPerson = new IdenPerson();
         BeanUtil.copyProperties(vo,idenPerson);
         BeanUtil.copyProperties(vo,idenPerson);
-        idenPerson.setUid(redisUtil.generate(RedisKeyConstant.UID_KEY));
+        idenPerson.setUid(idenAutoincrKeyService.updateMaxValue("uid"));
         idenPerson.setCreateTime(new Date());
         idenPerson.setCreateTime(new Date());
         //识别
         //识别
         String image = idenPerson.getImage();
         String image = idenPerson.getImage();

+ 3 - 2
src/main/java/com/iden/bms/service/VideoService.java

@@ -33,7 +33,8 @@ public class VideoService {
 
 
     @Resource
     @Resource
     private IdenCameraVideoService idenCameraVideoService;
     private IdenCameraVideoService idenCameraVideoService;
-
+    @Resource
+    private IdenAutoincrKeyService idenAutoincrKeyService;
 
 
     @Value("${iden.root:#{null}}")
     @Value("${iden.root:#{null}}")
     private String idenRoot;
     private String idenRoot;
@@ -93,7 +94,7 @@ public class VideoService {
                                 }
                                 }
                                 logger.info("FaceIdenService.handleCameraVideo ...originImageDir == " + originImageDir.getAbsolutePath());
                                 logger.info("FaceIdenService.handleCameraVideo ...originImageDir == " + originImageDir.getAbsolutePath());
 
 
-                                Long vuid = redisUtil.generate(RedisKeyConstant.VUID_KEY);
+                                Long vuid = idenAutoincrKeyService.updateMaxValue("vuid");
 
 
                                 //先把分解图片放入临时目录,临时目录下的文件重命名后移到原始目录等待图像识别
                                 //先把分解图片放入临时目录,临时目录下的文件重命名后移到原始目录等待图像识别
                                 Long duration = VideoTool.fetchAllPic(vuid,ffmpegPath, videoFile.getAbsolutePath(),finalDirTmp.getAbsolutePath(),originImageDir.getAbsolutePath(), shootEndTime);
                                 Long duration = VideoTool.fetchAllPic(vuid,ffmpegPath, videoFile.getAbsolutePath(),finalDirTmp.getAbsolutePath(),originImageDir.getAbsolutePath(), shootEndTime);

+ 42 - 0
src/main/java/com/iden/common/entity/IdenAutoincKey.java

@@ -0,0 +1,42 @@
+package com.iden.common.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 市表(IdenCity)实体类
+ *
+ * @author makejava
+ * @since 2021-12-30 19:06:40
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("iden_autoincr_key")
+@ApiModel(value = "存放自增key表", description = "")
+public class IdenAutoincKey implements Serializable {
+    private static final long serialVersionUID = 661706295847431306L;
+
+
+    @ApiModelProperty("key")
+    @TableField("KEY")
+    private String key;
+
+
+    @ApiModelProperty("最大值")
+    @TableField("MAX_VALUE")
+    private String maxValue;
+
+    @ApiModelProperty("备注")
+    @TableField("REMARK")
+    private String remark;
+
+}

+ 15 - 0
src/main/java/com/iden/common/mapper/IdenAutoincrKeyMapper.java

@@ -0,0 +1,15 @@
+package com.iden.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iden.common.entity.IdenAutoincKey;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ *
+ * @author makejava
+ * @since 2021-12-30 19:06:40
+ */
+public interface IdenAutoincrKeyMapper extends BaseMapper<IdenAutoincKey> {
+   Long updateMaxValue(@Param("key") String key);
+}

+ 15 - 0
src/main/java/com/iden/common/service/IdenAutoincrKeyService.java

@@ -0,0 +1,15 @@
+package com.iden.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.iden.common.entity.IdenAutoincKey;
+
+
+/**
+ * 市表(IdenCity)表服务接口
+ *
+ * @author makejava
+ * @since 2021-12-30 19:06:40
+ */
+public interface IdenAutoincrKeyService extends IService<IdenAutoincKey> {
+    Long updateMaxValue(String key);
+}

+ 46 - 0
src/main/java/com/iden/common/service/impl/IdenAutoincrKeyServiceImpl.java

@@ -0,0 +1,46 @@
+package com.iden.common.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iden.common.cache.RedisKeyConstant;
+import com.iden.common.cache.RedisUtil;
+import com.iden.common.entity.IdenAutoincKey;
+import com.iden.common.mapper.IdenAutoincrKeyMapper;
+import com.iden.common.service.IdenAutoincrKeyService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.UUID;
+
+/**
+ * 市表(IdenCity)表服务实现类
+ *
+ * @author makejava
+ * @since 2021-12-30 19:06:40
+ */
+@Service
+public class IdenAutoincrKeyServiceImpl extends ServiceImpl<IdenAutoincrKeyMapper, IdenAutoincKey> implements IdenAutoincrKeyService {
+    @Resource
+    private RedisUtil redisUtil;
+    public Long updateMaxValue(String key){
+        String localKey = RedisKeyConstant.UID_KEY;
+        if("vuid".equals(key)){
+            localKey = RedisKeyConstant.VUID_KEY;
+        }
+        String requestId = UUID.randomUUID().toString();
+        boolean result = redisUtil.tryLock(localKey,requestId, 3);
+        Long maxValue = null;
+        try {
+            if (result) {
+                maxValue = this.baseMapper.updateMaxValue(key);
+            } else {
+                Thread.sleep(1000);
+                return updateMaxValue(key);
+            }
+        } catch (Exception e) {
+            e.getMessage();
+        }  finally {
+            redisUtil.releaseLock(localKey,requestId);
+        }
+       return maxValue;
+    }
+}

+ 11 - 0
src/main/resources/mybatis/IdenAutoincrKeyMapper.xml

@@ -0,0 +1,11 @@
+<?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">
+<mapper namespace="com.iden.common.mapper.IdenAutoincrKeyMapper">
+    <update id="updateMaxValue">
+        <!-- AFTER:更新语句执行后执行selectKey -->
+        <selectKey resultType="java.lang.Long" keyProperty="maxValue" order="AFTER">
+            select max_value FROM iden_autoincr_key where key = #{key}
+        </selectKey>
+        update iden_autoincr_key set max_value = #{maxValue} where key = #{key}
+    </update>
+</mapper>