车车 před 8 měsíci
rodič
revize
b6e67a5651

+ 11 - 1
ktg-admin/src/main/java/com/ktg/web/controller/system/SysUserCharacteristicController.java

@@ -9,6 +9,8 @@ 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.iscs.domain.IsSystemAttribute;
+import com.ktg.iscs.service.IIsSystemAttributeService;
 import com.ktg.system.domain.SysUserCharacteristic;
 import com.ktg.system.service.ISysUserCharacteristicService;
 import io.swagger.annotations.Api;
@@ -41,6 +43,8 @@ public class SysUserCharacteristicController extends BaseController
 {
     @Autowired
     private ISysUserCharacteristicService sysUserCharacteristicService;
+    @Autowired
+    private IIsSystemAttributeService isSystemAttributeService;
 
     @ApiOperation("查询用户特征(指纹、面部)-分页")
     @Parameters({
@@ -86,7 +90,13 @@ public class SysUserCharacteristicController extends BaseController
     @Log(title = "新增指纹录入-指纹图片转成dat存储", businessType = BusinessType.INSERT)
     @PostMapping("/insertUserFingerprintDat")
     public CommonResult<Boolean> insertUserFingerprintDat(MultipartFile file, String userName) throws IOException {
-        return CommonResult.success(sysUserCharacteristicService.insertUserFingerprintDat(file, userName));
+        IsSystemAttribute one = isSystemAttributeService.getOne(Wrappers.<IsSystemAttribute>lambdaQuery()
+                .eq(IsSystemAttribute::getSysAttrKey, "sys.fingerprint.limit"));
+        String sysAttrValue = null;
+        if (one != null) {
+            sysAttrValue = one.getSysAttrValue();
+        }
+        return CommonResult.success(sysUserCharacteristicService.insertUserFingerprintDat(file, userName, sysAttrValue));
     }
 
     @ApiOperation("修改用户特征(指纹、面部)")

+ 11 - 0
ktg-iscs/src/main/java/com/ktg/iscs/controller/IsMapPointController.java

@@ -10,6 +10,7 @@ import com.ktg.common.enums.BusinessType;
 import com.ktg.common.pojo.CommonResult;
 import com.ktg.common.utils.poi.ExcelUtil;
 import com.ktg.iscs.domain.IsMapPoint;
+import com.ktg.iscs.domain.dto.mapPoint.MapPointParamDTO;
 import com.ktg.iscs.service.IIsMapPointService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -103,4 +104,14 @@ public class IsMapPointController extends BaseController
         Long[] longIds = Convert.toLongArray(ids);
         return CommonResult.success(isMapPointService.removeBatchByIds(Arrays.asList(longIds)));
     }
+
+    @ApiOperation("地图点位数据变更(绑定,位移,解绑)")
+    @PreAuthorize("@ss.hasPermi('iscs:map-point:add')")
+    @Log(title = "地图点位数据变更(绑定,位移,解绑)", businessType = BusinessType.INSERT)
+    @PostMapping("/updateMapPointList")
+    public CommonResult<Boolean> updateMapPointList(@RequestBody @Parameter(name = "isMapPoint", description = "新增数据类,放到body") MapPointParamDTO dto)
+    {
+        return CommonResult.success(isMapPointService.updateMapPointList(dto));
+    }
+
 }

+ 40 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/mapPoint/MapPointDTO.java

@@ -0,0 +1,40 @@
+package com.ktg.iscs.domain.dto.mapPoint;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 点位信息
+ *
+ * @author cgj
+ * @date 2024-12-19
+ */
+@EqualsAndHashCode(callSuper = false)
+@Data
+public class MapPointDTO
+{
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "ID")
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "地图id")
+    private Long mapId;
+
+    @ApiModelProperty(value = "地图类型(1岗位; 2锁定站)")
+    private String mapType;
+
+    @ApiModelProperty(value = "实体id")
+    private Long entityId;
+
+    @ApiModelProperty(value = "x坐标")
+    private String x;
+
+    @ApiModelProperty(value = "y坐标")
+    private String y;
+
+}

+ 29 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/mapPoint/MapPointParamDTO.java

@@ -0,0 +1,29 @@
+package com.ktg.iscs.domain.dto.mapPoint;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 点位信息
+ *
+ * @author cgj
+ * @date 2024-12-19
+ */
+@EqualsAndHashCode(callSuper = false)
+@Data
+public class MapPointParamDTO
+{
+
+    @ApiModelProperty(value = "绑定的点位")
+    private List<MapPointDTO> bindingPoints;
+
+    @ApiModelProperty(value = "移动的点位")
+    private List<MapPointDTO> movePoints;
+
+    @ApiModelProperty(value = "解绑的点位")
+    private List<MapPointDTO> unbindingPoints;
+
+}

+ 3 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMapPointService.java

@@ -3,6 +3,7 @@ package com.ktg.iscs.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ktg.iscs.domain.IsMapPoint;
+import com.ktg.iscs.domain.dto.mapPoint.MapPointParamDTO;
 
 import java.util.List;
 
@@ -18,4 +19,6 @@ public interface IIsMapPointService extends IService<IsMapPoint> {
 
     List<IsMapPoint> getIsMapPointList(IsMapPoint isMapPoint);
 
+    Boolean updateMapPointList(MapPointParamDTO dto);
+
 }

+ 22 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMapPointServiceImpl.java

@@ -2,7 +2,9 @@ package com.ktg.iscs.service.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ktg.common.utils.bean.BeanUtils;
 import com.ktg.iscs.domain.IsMapPoint;
+import com.ktg.iscs.domain.dto.mapPoint.MapPointParamDTO;
 import com.ktg.iscs.mapper.IsMapPointMapper;
 import com.ktg.iscs.service.IIsMapPointService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,4 +35,24 @@ public class IsMapPointServiceImpl extends ServiceImpl<IsMapPointMapper, IsMapPo
         return isMapPointMapper.getIsMapPointList(isMapPoint);
     }
 
+    @Override
+    public Boolean updateMapPointList(MapPointParamDTO dto) {
+        // 1.绑定
+        if (!dto.getBindingPoints().isEmpty()) {
+            List<IsMapPoint> bindingBean = BeanUtils.toBean(dto.getBindingPoints(), IsMapPoint.class);
+            saveBatch(bindingBean);
+        }
+        // 2.移动
+        if (!dto.getMovePoints().isEmpty()) {
+            List<IsMapPoint> moveBean = BeanUtils.toBean(dto.getMovePoints(), IsMapPoint.class);
+            updateBatchById(moveBean);
+        }
+        // 3.解绑
+        if (!dto.getUnbindingPoints().isEmpty()) {
+            List<IsMapPoint> moveBean = BeanUtils.toBean(dto.getUnbindingPoints(), IsMapPoint.class);
+            removeBatchByIds(moveBean);
+        }
+        return true;
+    }
+
 }

+ 4 - 0
ktg-system/src/main/java/com/ktg/system/domain/SysUserCharacteristic.java

@@ -36,6 +36,10 @@ public class SysUserCharacteristic extends BaseBean
     @Excel(name = "内容")
     private String content;
 
+    @ApiModelProperty(value = "图片地址")
+    @Excel(name = "图片地址")
+    private String imageUrl;
+
     @ApiModelProperty(value = "排序")
     @Excel(name = "排序")
     private Integer orderNum;

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

@@ -18,6 +18,6 @@ public interface ISysUserCharacteristicService extends IService<SysUserCharacter
 
     Page<SysUserCharacteristic> getSysUserCharacteristicPage(Page<SysUserCharacteristic> page, SysUserCharacteristic sysUserCharacteristic);
 
-    Boolean insertUserFingerprintDat(MultipartFile file, String userName) throws IOException;
+    Boolean insertUserFingerprintDat(MultipartFile file, String userName, String sysAttrValue) throws IOException;
 
 }

+ 12 - 2
ktg-system/src/main/java/com/ktg/system/service/impl/SysUserCharacteristicServiceImpl.java

@@ -45,13 +45,21 @@ public class SysUserCharacteristicServiceImpl extends ServiceImpl<SysUserCharact
     }
 
     @Override
-    public Boolean insertUserFingerprintDat(MultipartFile file, String userName) throws IOException {
+    public Boolean insertUserFingerprintDat(MultipartFile file, String userName, String sysAttrValue) 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 + "条!");
+        }
+
         // 时间戳
         long currentTimestamp = System.currentTimeMillis();
         // 设置文件路径
@@ -72,8 +80,9 @@ public class SysUserCharacteristicServiceImpl extends ServiceImpl<SysUserCharact
         file.transferTo(targetLocation.toFile());
 
         // 开始生成dat文件
+        String imagePath = null;
         try {
-            String imagePath = filePath + fileName; // 替换为你的指纹图片路径
+            imagePath = filePath + fileName; // 替换为你的指纹图片路径
             byte[] fingerprintData = extractFingerprintTemplate(imagePath);
 
             // 保存到文件
@@ -87,6 +96,7 @@ public class SysUserCharacteristicServiceImpl extends ServiceImpl<SysUserCharact
         sysUserCharacteristic.setType("1");
         sysUserCharacteristic.setContent(filePath + userId + "_" + currentTimestamp + ".dat");
         sysUserCharacteristic.setOrderNum(0);
+        sysUserCharacteristic.setImageUrl(imagePath);
         save(sysUserCharacteristic);
         return true;
     }