车车 8 tháng trước cách đây
mục cha
commit
23646771de

+ 18 - 3
ktg-admin/src/main/java/com/ktg/web/controller/system/SysUserCharacteristicController.java

@@ -7,6 +7,7 @@ import com.ktg.common.core.controller.BaseController;
 import com.ktg.common.enums.BusinessType;
 import com.ktg.common.pojo.CommonResult;
 import com.ktg.common.utils.poi.ExcelUtil;
+import com.ktg.common.vo.FaceCutVO;
 import com.ktg.framework.config.ServerConfig;
 import com.ktg.iscs.domain.IsSystemAttribute;
 import com.ktg.iscs.service.IIsSystemAttributeService;
@@ -19,7 +20,6 @@ import io.swagger.v3.oas.annotations.Parameters;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -85,7 +85,6 @@ public class SysUserCharacteristicController extends BaseController
         return CommonResult.success(sysUserCharacteristicService.getById(recordId));
     }
 
-    @Transactional
     @ApiOperation("新增指纹录入-指纹图片转成dat存储")
     // @PreAuthorize("@ss.hasPermi('iscs:characteristic:add')")
     @Log(title = "新增指纹录入-指纹图片转成dat存储", businessType = BusinessType.INSERT)
@@ -99,8 +98,8 @@ public class SysUserCharacteristicController extends BaseController
         }
         String url = serverConfig.getUrl();
         return CommonResult.success(sysUserCharacteristicService.insertUserFingerprintDat(file, userName, sysAttrValue, url));
+        // return CommonResult.success(sysUserCharacteristicService.insertUserCutFace(file, userName, sysAttrValue, url));
     }
-
     @ApiOperation("修改用户特征(指纹、面部)")
     @PreAuthorize("@ss.hasPermi('iscs:characteristic:edit')")
     @Log(title = "用户特征(指纹、面部)", businessType = BusinessType.UPDATE)
@@ -118,4 +117,20 @@ public class SysUserCharacteristicController extends BaseController
     {
         return CommonResult.success(sysUserCharacteristicService.deleteSysUserCharacteristicByRecordIds(recordIds));
     }
+
+    @ApiOperation("新增人脸录入-人脸识别后裁剪存储")
+    // @PreAuthorize("@ss.hasPermi('iscs:characteristic:add')")
+    @Log(title = "新增人脸录入-人脸识别后裁剪存储", businessType = BusinessType.INSERT)
+    @PostMapping("/insertUserCutFace")
+    public CommonResult<FaceCutVO> insertUserCutFace(MultipartFile file, String userName) throws IOException {
+        IsSystemAttribute one = isSystemAttributeService.getOne(Wrappers.<IsSystemAttribute>lambdaQuery()
+                .eq(IsSystemAttribute::getSysAttrKey, "sys.face.limit"));
+        String sysAttrValue = null;
+        if (one != null) {
+            sysAttrValue = one.getSysAttrValue();
+        }
+        String url = serverConfig.getUrl();
+        return CommonResult.success(sysUserCharacteristicService.insertUserCutFace(file, userName, sysAttrValue, url));
+    }
+
 }

+ 5 - 0
ktg-common/pom.xml

@@ -206,6 +206,11 @@
             <artifactId>sourceafis</artifactId>
             <version>3.13.0</version>
         </dependency>
+        <dependency>
+            <groupId>org.openpnp</groupId>
+            <artifactId>opencv</artifactId>
+            <version>4.6.0-0</version>
+        </dependency>
 
     </dependencies>
 

+ 19 - 1
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsIsolationPointServiceImpl.java

@@ -8,6 +8,7 @@ import com.ktg.common.core.text.Convert;
 import com.ktg.common.utils.DateUtils;
 import com.ktg.iscs.domain.IsIsolationPoint;
 import com.ktg.iscs.domain.IsLotoStation;
+import com.ktg.iscs.domain.IsMapPoint;
 import com.ktg.iscs.domain.IsSopPoints;
 import com.ktg.iscs.domain.dto.point.PagePointDTO;
 import com.ktg.iscs.domain.vo.points.PointDetailVO;
@@ -15,10 +16,12 @@ import com.ktg.iscs.domain.vo.points.PointPageVO;
 import com.ktg.iscs.mapper.IsIsolationPointMapper;
 import com.ktg.iscs.service.IIsIsolationPointService;
 import com.ktg.iscs.service.IIsLotoStationService;
+import com.ktg.iscs.service.IIsMapPointService;
 import com.ktg.iscs.service.IIsSopPointsService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -38,6 +41,8 @@ public class IsIsolationPointServiceImpl extends ServiceImpl<IsIsolationPointMap
     private IIsSopPointsService iIsSopPointsService;
     @Autowired
     private IIsLotoStationService iIsLotoStationService;
+    @Autowired
+    private IIsMapPointService iIsMapPointService;
 
     /**
      * 查询隔离点
@@ -69,6 +74,7 @@ public class IsIsolationPointServiceImpl extends ServiceImpl<IsIsolationPointMap
      * @param isIsolationPoint 隔离点
      * @return 结果
      */
+    @Transactional
     @Override
     public int insertIsIsolationPoint(IsIsolationPoint isIsolationPoint)
     {
@@ -84,7 +90,19 @@ public class IsIsolationPointServiceImpl extends ServiceImpl<IsIsolationPointMap
         List<IsIsolationPoint> list3 = list(Wrappers.<IsIsolationPoint>lambdaQuery()
                 .eq(IsIsolationPoint::getPointCode, isIsolationPoint.getPointCode()));
         Assert.isTrue(list3.isEmpty(), "该编号已被使用!");
-        return isIsolationPointMapper.insertIsIsolationPoint(isIsolationPoint);
+        int i = isIsolationPointMapper.insertIsIsolationPoint(isIsolationPoint);
+        // 如果绑定的loto站已经绑定了mapId,则需要往is_map_point插入数据
+        if (isIsolationPoint.getLotoId() != null) {
+            IsLotoStation lotoStation = iIsLotoStationService.getById(isIsolationPoint.getLotoId());
+            if (lotoStation.getMapId() != null) {
+                IsMapPoint point = new IsMapPoint();
+                point.setMapId(lotoStation.getMapId());
+                point.setMapType("2");
+                point.setEntityId(isIsolationPoint.getPointId());
+                iIsMapPointService.save(point);
+            }
+        }
+        return i;
     }
 
     /**

+ 4 - 0
ktg-system/src/main/java/com/ktg/system/service/ISysUserCharacteristicService.java

@@ -3,6 +3,7 @@ package com.ktg.system.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ktg.common.vo.FaceCutVO;
 import com.ktg.system.domain.SysUserCharacteristic;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -20,6 +21,9 @@ public interface ISysUserCharacteristicService extends IService<SysUserCharacter
 
     Boolean insertUserFingerprintDat(MultipartFile file, String userName, String sysAttrValue, String url) throws IOException;
 
+    FaceCutVO insertUserCutFace(MultipartFile file, String userName, String sysAttrValue, String url) throws IOException;
+
+
     Boolean deleteSysUserCharacteristicByRecordIds(String recordIds);
 
 }

+ 21 - 0
ktg-system/src/main/java/com/ktg/system/service/impl/SysUserCharacteristicServiceImpl.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ktg.common.config.RuoYiConfig;
 import com.ktg.common.core.domain.entity.SysUser;
 import com.ktg.common.utils.StringUtils;
+import com.ktg.common.utils.face.FaceCutUtil;
+import com.ktg.common.vo.FaceCutVO;
 import com.ktg.system.domain.SysUserCharacteristic;
 import com.ktg.system.mapper.SysUserCharacteristicMapper;
 import com.ktg.system.service.ISysUserCharacteristicService;
@@ -141,6 +143,25 @@ public class SysUserCharacteristicServiceImpl extends ServiceImpl<SysUserCharact
         return template.serialize().getBytes();
     }
 
+    @Override
+    public FaceCutVO insertUserCutFace(MultipartFile file, String userName, String sysAttrValue, String url) throws IOException {
+        Assert.notBlank(userName, "请告知我这是哪个用户的人脸!");
+        Assert.isTrue(file.getSize() > 0, "人脸信息不能为空!");
+        SysUser user = iSysUserService.getOne(Wrappers.<SysUser>lambdaQuery()
+                .eq(SysUser::getUserName, userName));
+        Assert.isFalse(user == null, "系统中无该用户!");
+        Long userId = user.getUserId();
+        if (StringUtils.isNotBlank(sysAttrValue)) {
+            // 检查人员指纹上限
+            long count = count(Wrappers.<SysUserCharacteristic>lambdaQuery()
+                    .eq(SysUserCharacteristic::getUserId, userId));
+            int i = Integer.parseInt(sysAttrValue);
+            Assert.isFalse(count >= i, "该人员的人脸录入已上限,最大"+ i + "条!");
+        }
+        FaceCutVO faceCutVO = FaceCutUtil.imageFaceDetection(file, userId, url);
+        return faceCutVO;
+    }
+
     @Override
     public Boolean deleteSysUserCharacteristicByRecordIds(String recordIds) {
         Assert.notBlank(recordIds, "请选择需要删除的数据!");