Explorar o código

开闸时间记录

LIVE_YE hai 10 meses
pai
achega
dc29ceb56b
Modificáronse 18 ficheiros con 614 adicións e 24 borrados
  1. 2 1
      ruoyi-admin/pom.xml
  2. 34 3
      ruoyi-admin/src/main/java/com/ruoyi/alarm/Alarm.java
  3. 25 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/camera/CameraController.java
  4. 98 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/camera/OpeningDoorRecordController.java
  5. 2 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
  6. 1 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
  7. 3 3
      ruoyi-admin/src/main/resources/application-prod.yml
  8. 1 1
      ruoyi-admin/src/main/resources/application.yml
  9. 1 1
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
  10. 8 8
      ruoyi-system/src/main/java/com/ruoyi/system/domain/ClockUserInfo.java
  11. 112 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/OpeningDoorRecord.java
  12. 2 1
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/EquipmentConfigurationMapper.java
  13. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/OpeningDoorRecordMapper.java
  14. 61 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IOpeningDoorRecordService.java
  15. 5 1
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EquipmentConfigurationServiceImpl.java
  16. 100 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OpeningDoorRecordServiceImpl.java
  17. 2 2
      ruoyi-system/src/main/resources/mapper/system/EquipmentConfigurationMapper.xml
  18. 96 0
      ruoyi-system/src/main/resources/mapper/system/OpeningDoorRecordMapper.xml

+ 2 - 1
ruoyi-admin/pom.xml

@@ -9,7 +9,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>jar</packaging>
-    <artifactId>ruoyi-admin</artifactId>
+    <artifactId>yuan_qu</artifactId>
 
     <description>
         web服务入口
@@ -90,6 +90,7 @@
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <version>2.5.15</version>
                 <configuration>
+                    <includeSystemScope>true</includeSystemScope>
                     <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
                 </configuration>
                 <executions>

+ 34 - 3
ruoyi-admin/src/main/java/com/ruoyi/alarm/Alarm.java

@@ -29,7 +29,7 @@ public class Alarm implements CommandLineRunner {
      *
      * @return
      */
-    private static boolean createSDKInstance() {
+    /*private static boolean createSDKInstance() {
         if (hCNetSDK == null) {
             synchronized (HCNetSDK.class) {
                 String strDllPath = "";
@@ -48,6 +48,34 @@ public class Alarm implements CommandLineRunner {
             }
         }
         return true;
+    }*/
+
+    /**
+     * 动态库加载
+     *
+     * @return
+     */
+    private static boolean createSDKInstance() {
+        if (hCNetSDK == null) {
+            synchronized (HCNetSDK.class) {
+                String strDllPath = "";
+                try {
+                    if (osSelect.isWindows())
+                        //win系统加载库路径
+                        strDllPath = System.getProperty("user.dir") + "\\ruoyi-admin\\lib\\HCNetSDK.dll";
+                    else if (osSelect.isLinux())
+                        //Linux系统加载库路径
+//                        strDllPath = System.getProperty("user.dir") + "/lib/libhcnetsdk.so";
+                        strDllPath =  System.getProperty("user.dir") + "/lib/libhcnetsdk.so";
+
+                    hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class);
+                } catch (Exception ex) {
+                    System.out.println("loadLibrary: " + strDllPath + " Error: " + ex.getMessage());
+                    return false;
+                }
+            }
+        }
+        return true;
     }
 
     @Async
@@ -64,8 +92,11 @@ public class Alarm implements CommandLineRunner {
             HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256);
             HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256);
             //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限
-            String strPath1 = System.getProperty("user.dir") + "/lib/libcrypto.so.1.0.0";
-            String strPath2 = System.getProperty("user.dir") + "/lib/libssl.so";
+            /*String strPath1 = System.getProperty("user.dir") + "/lib/libcrypto.so.1.0.0";
+            String strPath2 = System.getProperty("user.dir") + "/lib/libssl.so";*/
+
+            String strPath1 = System.getProperty("user.dir") + "/lib/libcrypto.so.1.1";
+            String strPath2 = System.getProperty("user.dir") + "/lib/libssl.so.1.1";
 
             System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length());
             ptrByteArray1.write();

+ 25 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/camera/CameraController.java

@@ -7,15 +7,19 @@ import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.hksdk.HCNetSDK;
 import com.ruoyi.system.domain.EquipmentConfiguration;
+import com.ruoyi.system.domain.OpeningDoorRecord;
 import com.ruoyi.system.domain.PersonnelManagement;
 import com.ruoyi.system.domain.vo.CameraInfoVo;
 import com.ruoyi.system.service.CameraService;
 import com.ruoyi.system.service.IEquipmentConfigurationService;
+import com.ruoyi.system.service.IOpeningDoorRecordService;
 import com.ruoyi.system.service.IPersonnelManagementService;
 import com.sun.jna.Pointer;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -37,6 +41,8 @@ public class CameraController extends BaseController {
     private CameraService cameraService;
     @Autowired
     private IEquipmentConfigurationService equipmentConfigurationService;
+    @Autowired
+    private IOpeningDoorRecordService openingDoorRecordService;
 
     /**
      * 查询安防设备列表
@@ -61,8 +67,12 @@ public class CameraController extends BaseController {
      * 设备关闭
      */
     @GetMapping("/video/closeDz")
+    @PreAuthorize("@ss.hasPermi('system:camera:closeDz')")
     public AjaxResult closeDz(EquipmentConfiguration equipmentConfiguration) {
         equipmentConfiguration = equipmentConfigurationService.selectEquipmentConfigurationByEquipmentName(equipmentConfiguration.getEquipmentName());
+        if(StringUtils.isEmpty(equipmentConfiguration.getEquipmentName())){
+            return AjaxResult.error("设备列表暂无当前设备");
+        }
         String ip = equipmentConfiguration.getEquipmentIp();
         short prot = (short) Short.parseShort(equipmentConfiguration.getEquipmentPort());
         String login = equipmentConfiguration.getLoginName();
@@ -90,6 +100,11 @@ public class CameraController extends BaseController {
                 //new HikVisionService().run();
             }
             System.out.println("关闸结果--"+a+"-- 提示内容:"+ret);
+            //保存记录
+            OpeningDoorRecord openingDoorRecord = new OpeningDoorRecord();
+            openingDoorRecord.setEntranceGuardName(equipmentConfiguration.getEquipmentName());
+            openingDoorRecord.setType("2");
+            openingDoorRecordService.insertOpeningDoorRecord(openingDoorRecord);
             //注销用户
             boolean b=Alarm.logout(tdh);
         } catch (Exception e) {
@@ -102,8 +117,13 @@ public class CameraController extends BaseController {
      * 设备打开
      */
     @GetMapping("/video/openDz")
+    @PreAuthorize("@ss.hasPermi('system:camera:openDz')")
     public AjaxResult openDz(EquipmentConfiguration equipmentConfiguration) {
         equipmentConfiguration = equipmentConfigurationService.selectEquipmentConfigurationByEquipmentName(equipmentConfiguration.getEquipmentName());
+        if(StringUtils.isEmpty(equipmentConfiguration.getEquipmentName())){
+            return AjaxResult.error("设备列表暂无当前设备");
+        }
+
         String ip = equipmentConfiguration.getEquipmentIp();
         short prot = (short) Short.parseShort(equipmentConfiguration.getEquipmentPort());
         String login = equipmentConfiguration.getLoginName();
@@ -132,6 +152,11 @@ public class CameraController extends BaseController {
                 //new HikVisionService().run();
             }
             System.out.println("开闸结果--"+a+"-- 提示内容:"+ret);
+            //保存记录
+            OpeningDoorRecord openingDoorRecord = new OpeningDoorRecord();
+            openingDoorRecord.setEntranceGuardName(equipmentConfiguration.getEquipmentName());
+            openingDoorRecord.setType("1");
+            openingDoorRecordService.insertOpeningDoorRecord(openingDoorRecord);
             //注销用户
             boolean b=Alarm.logout(tdh);
         } catch (Exception e) {

+ 98 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/camera/OpeningDoorRecordController.java

@@ -0,0 +1,98 @@
+package com.ruoyi.web.controller.camera;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.OpeningDoorRecord;
+import com.ruoyi.system.service.IOpeningDoorRecordService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 门禁开门记录Controller
+ *
+ * @author ruoyi
+ * @date 2024-08-21
+ */
+@RestController
+@RequestMapping("/system/door")
+public class OpeningDoorRecordController extends BaseController {
+    @Autowired
+    private IOpeningDoorRecordService openingDoorRecordService;
+
+    /**
+     * 查询门禁开门记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:door:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(OpeningDoorRecord openingDoorRecord) {
+        startPage();
+        List<OpeningDoorRecord> list = openingDoorRecordService.selectOpeningDoorRecordList(openingDoorRecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出门禁开门记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:door:export')")
+    @Log(title = "门禁开门记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, OpeningDoorRecord openingDoorRecord) {
+        List<OpeningDoorRecord> list = openingDoorRecordService.selectOpeningDoorRecordList(openingDoorRecord);
+        ExcelUtil<OpeningDoorRecord> util = new ExcelUtil<OpeningDoorRecord>(OpeningDoorRecord.class);
+        util.exportExcel(response, list, "门禁开门记录数据");
+    }
+
+    /**
+     * 获取门禁开门记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:door:query')")
+    @GetMapping(value = "/{recordId}")
+    public AjaxResult getInfo(@PathVariable("recordId") Long recordId) {
+        return success(openingDoorRecordService.selectOpeningDoorRecordByRecordId(recordId));
+    }
+
+    /**
+     * 新增门禁开门记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:door:add')")
+    @Log(title = "门禁开门记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody OpeningDoorRecord openingDoorRecord) {
+        return toAjax(openingDoorRecordService.insertOpeningDoorRecord(openingDoorRecord));
+    }
+
+    /**
+     * 修改门禁开门记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:door:edit')")
+    @Log(title = "门禁开门记录", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody OpeningDoorRecord openingDoorRecord) {
+        return toAjax(openingDoorRecordService.updateOpeningDoorRecord(openingDoorRecord));
+    }
+
+    /**
+     * 删除门禁开门记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:door:remove')")
+    @Log(title = "门禁开门记录", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{recordIds}")
+    public AjaxResult remove(@PathVariable Long[] recordIds) {
+        return toAjax(openingDoorRecordService.deleteOpeningDoorRecordByRecordIds(recordIds));
+    }
+}

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java

@@ -56,7 +56,7 @@ public class SysProfileController extends BaseController
      * 修改用户
      */
     @Log(title = "个人信息", businessType = BusinessType.UPDATE)
-    @PutMapping
+    @PostMapping("/put")
     public AjaxResult updateProfile(@RequestBody SysUser user)
     {
         LoginUser loginUser = getLoginUser();
@@ -86,7 +86,7 @@ public class SysProfileController extends BaseController
      * 重置密码
      */
     @Log(title = "个人信息", businessType = BusinessType.UPDATE)
-    @PutMapping("/updatePwd")
+    @PostMapping("/updatePwd")
     public AjaxResult updatePwd(String oldPassword, String newPassword)
     {
         LoginUser loginUser = getLoginUser();

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -190,7 +190,7 @@ public class SysUserController extends BaseController
     @PutMapping("/resetPwd")
     public AjaxResult resetPwd(@RequestBody SysUser user)
     {
-        userService.checkUserAllowed(user);
+        //userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
         user.setUpdateBy(getUsername());

+ 3 - 3
ruoyi-admin/src/main/resources/application-prod.yml

@@ -39,9 +39,9 @@ spring:
         # 端口,默认为6379
         port: 6379
         # 数据库索引
-        database: 5
+        database: 7
         # 密码
-        password: 3r263Tr$
+        password: D3fQYAsw
         # 连接超时时间
         timeout: 10s
         lettuce:
@@ -63,7 +63,7 @@ spring:
             master:
                 url: jdbc:mysql://127.0.0.1:3306/yuan_qu?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
                 username: root
-                password: UEB^RX$z
+                password: zhaoshang@2018
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -20,7 +20,7 @@ spring:
     basename: i18n/messages
   profiles:
     active: druid
-  #    active: prod
+    #active: prod
   # 文件上传
   servlet:
     multipart:

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -111,7 +111,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 // 过滤请求
                 .authorizeRequests()
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                .antMatchers("/login", "/register", "/captchaImage","/camera/**").permitAll()
+                .antMatchers("/login", "/register", "/captchaImage").permitAll()
                 // 静态资源,可匿名访问
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**","/system/app/new").permitAll()

+ 8 - 8
ruoyi-system/src/main/java/com/ruoyi/system/domain/ClockUserInfo.java

@@ -24,7 +24,7 @@ public class ClockUserInfo extends BaseEntity
 
     /** 所属部门名称 */
     @Excel(name = "所属部门名称")
-    private Long deptName;
+    private String deptName;
 
     /** 人员姓名 */
     @Excel(name = "人员姓名")
@@ -59,16 +59,16 @@ public class ClockUserInfo extends BaseEntity
     {
         return deptId;
     }
-    public void setDeptName(Long deptName) 
-    {
-        this.deptName = deptName;
-    }
 
-    public Long getDeptName() 
-    {
+    public String getDeptName() {
         return deptName;
     }
-    public void setUserName(String userName) 
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setUserName(String userName)
     {
         this.userName = userName;
     }

+ 112 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/OpeningDoorRecord.java

@@ -0,0 +1,112 @@
+package com.ruoyi.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 门禁开门记录对象 opening_door_record
+ * 
+ * @author ruoyi
+ * @date 2024-08-21
+ */
+public class OpeningDoorRecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long recordId;
+
+    /** 门禁名称 */
+    @Excel(name = "门禁名称")
+    private String entranceGuardName;
+
+    /** 开/关门时间 */
+    @Excel(name = "开/关门时间")
+    private String controlsTime;
+
+    /** 开/关门 1:开门,2关门 */
+    @Excel(name = "开/关门 1:开门,2关门")
+    private String type;
+
+    /** 抓拍图片地址 */
+    @Excel(name = "抓拍图片地址")
+    private String pictureUrl;
+
+    /** 创建部门 */
+    @Excel(name = "创建部门")
+    private Long createDept;
+
+    public void setRecordId(Long recordId) 
+    {
+        this.recordId = recordId;
+    }
+
+    public Long getRecordId() 
+    {
+        return recordId;
+    }
+    public void setEntranceGuardName(String entranceGuardName) 
+    {
+        this.entranceGuardName = entranceGuardName;
+    }
+
+    public String getEntranceGuardName() 
+    {
+        return entranceGuardName;
+    }
+    public void setControlsTime(String controlsTime) 
+    {
+        this.controlsTime = controlsTime;
+    }
+
+    public String getControlsTime() 
+    {
+        return controlsTime;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+    public void setPictureUrl(String pictureUrl) 
+    {
+        this.pictureUrl = pictureUrl;
+    }
+
+    public String getPictureUrl() 
+    {
+        return pictureUrl;
+    }
+    public void setCreateDept(Long createDept) 
+    {
+        this.createDept = createDept;
+    }
+
+    public Long getCreateDept() 
+    {
+        return createDept;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("recordId", getRecordId())
+            .append("entranceGuardName", getEntranceGuardName())
+            .append("controlsTime", getControlsTime())
+            .append("type", getType())
+            .append("pictureUrl", getPictureUrl())
+            .append("createDept", getCreateDept())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 2 - 1
ruoyi-system/src/main/java/com/ruoyi/system/mapper/EquipmentConfigurationMapper.java

@@ -2,6 +2,7 @@ package com.ruoyi.system.mapper;
 
 import java.util.List;
 import com.ruoyi.system.domain.EquipmentConfiguration;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 设备配置(控制抓拍一体机)Mapper接口
@@ -59,5 +60,5 @@ public interface EquipmentConfigurationMapper
      */
     public int deleteEquipmentConfigurationByEquipmentIds(Long[] equipmentIds);
 
-    EquipmentConfiguration selectEquipmentConfigurationByEquipmentName(String equipmentName);
+    EquipmentConfiguration selectEquipmentConfigurationByEquipmentName(@Param("equipmentName") String equipmentName);
 }

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OpeningDoorRecordMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.OpeningDoorRecord;
+
+/**
+ * 门禁开门记录Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-08-21
+ */
+public interface OpeningDoorRecordMapper 
+{
+    /**
+     * 查询门禁开门记录
+     * 
+     * @param recordId 门禁开门记录主键
+     * @return 门禁开门记录
+     */
+    public OpeningDoorRecord selectOpeningDoorRecordByRecordId(Long recordId);
+
+    /**
+     * 查询门禁开门记录列表
+     * 
+     * @param openingDoorRecord 门禁开门记录
+     * @return 门禁开门记录集合
+     */
+    public List<OpeningDoorRecord> selectOpeningDoorRecordList(OpeningDoorRecord openingDoorRecord);
+
+    /**
+     * 新增门禁开门记录
+     * 
+     * @param openingDoorRecord 门禁开门记录
+     * @return 结果
+     */
+    public int insertOpeningDoorRecord(OpeningDoorRecord openingDoorRecord);
+
+    /**
+     * 修改门禁开门记录
+     * 
+     * @param openingDoorRecord 门禁开门记录
+     * @return 结果
+     */
+    public int updateOpeningDoorRecord(OpeningDoorRecord openingDoorRecord);
+
+    /**
+     * 删除门禁开门记录
+     * 
+     * @param recordId 门禁开门记录主键
+     * @return 结果
+     */
+    public int deleteOpeningDoorRecordByRecordId(Long recordId);
+
+    /**
+     * 批量删除门禁开门记录
+     * 
+     * @param recordIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteOpeningDoorRecordByRecordIds(Long[] recordIds);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IOpeningDoorRecordService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.OpeningDoorRecord;
+
+/**
+ * 门禁开门记录Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-08-21
+ */
+public interface IOpeningDoorRecordService 
+{
+    /**
+     * 查询门禁开门记录
+     * 
+     * @param recordId 门禁开门记录主键
+     * @return 门禁开门记录
+     */
+    public OpeningDoorRecord selectOpeningDoorRecordByRecordId(Long recordId);
+
+    /**
+     * 查询门禁开门记录列表
+     * 
+     * @param openingDoorRecord 门禁开门记录
+     * @return 门禁开门记录集合
+     */
+    public List<OpeningDoorRecord> selectOpeningDoorRecordList(OpeningDoorRecord openingDoorRecord);
+
+    /**
+     * 新增门禁开门记录
+     * 
+     * @param openingDoorRecord 门禁开门记录
+     * @return 结果
+     */
+    public int insertOpeningDoorRecord(OpeningDoorRecord openingDoorRecord);
+
+    /**
+     * 修改门禁开门记录
+     * 
+     * @param openingDoorRecord 门禁开门记录
+     * @return 结果
+     */
+    public int updateOpeningDoorRecord(OpeningDoorRecord openingDoorRecord);
+
+    /**
+     * 批量删除门禁开门记录
+     * 
+     * @param recordIds 需要删除的门禁开门记录主键集合
+     * @return 结果
+     */
+    public int deleteOpeningDoorRecordByRecordIds(Long[] recordIds);
+
+    /**
+     * 删除门禁开门记录信息
+     * 
+     * @param recordId 门禁开门记录主键
+     * @return 结果
+     */
+    public int deleteOpeningDoorRecordByRecordId(Long recordId);
+}

+ 5 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EquipmentConfigurationServiceImpl.java

@@ -96,6 +96,10 @@ public class EquipmentConfigurationServiceImpl implements IEquipmentConfiguratio
 
     @Override
     public EquipmentConfiguration selectEquipmentConfigurationByEquipmentName(String equipmentName) {
-        return equipmentConfigurationMapper.selectEquipmentConfigurationByEquipmentName(equipmentName);
+        EquipmentConfiguration equipmentConfiguration = equipmentConfigurationMapper.selectEquipmentConfigurationByEquipmentName(equipmentName);
+        if(equipmentConfiguration == null){
+            equipmentConfiguration = new EquipmentConfiguration();
+        }
+        return equipmentConfiguration;
     }
 }

+ 100 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OpeningDoorRecordServiceImpl.java

@@ -0,0 +1,100 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.OpeningDoorRecordMapper;
+import com.ruoyi.system.domain.OpeningDoorRecord;
+import com.ruoyi.system.service.IOpeningDoorRecordService;
+
+/**
+ * 门禁开门记录Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-08-21
+ */
+@Service
+public class OpeningDoorRecordServiceImpl implements IOpeningDoorRecordService 
+{
+    @Autowired
+    private OpeningDoorRecordMapper openingDoorRecordMapper;
+
+    /**
+     * 查询门禁开门记录
+     * 
+     * @param recordId 门禁开门记录主键
+     * @return 门禁开门记录
+     */
+    @Override
+    public OpeningDoorRecord selectOpeningDoorRecordByRecordId(Long recordId)
+    {
+        return openingDoorRecordMapper.selectOpeningDoorRecordByRecordId(recordId);
+    }
+
+    /**
+     * 查询门禁开门记录列表
+     * 
+     * @param openingDoorRecord 门禁开门记录
+     * @return 门禁开门记录
+     */
+    @Override
+    public List<OpeningDoorRecord> selectOpeningDoorRecordList(OpeningDoorRecord openingDoorRecord)
+    {
+        return openingDoorRecordMapper.selectOpeningDoorRecordList(openingDoorRecord);
+    }
+
+    /**
+     * 新增门禁开门记录
+     * 
+     * @param openingDoorRecord 门禁开门记录
+     * @return 结果
+     */
+    @Override
+    public int insertOpeningDoorRecord(OpeningDoorRecord openingDoorRecord)
+    {
+        if(StringUtils.isEmpty(openingDoorRecord.getControlsTime())){
+            openingDoorRecord.setControlsTime(DateUtils.getTime());
+        }
+        openingDoorRecord.setCreateTime(DateUtils.getNowDate());
+        return openingDoorRecordMapper.insertOpeningDoorRecord(openingDoorRecord);
+    }
+
+    /**
+     * 修改门禁开门记录
+     * 
+     * @param openingDoorRecord 门禁开门记录
+     * @return 结果
+     */
+    @Override
+    public int updateOpeningDoorRecord(OpeningDoorRecord openingDoorRecord)
+    {
+        openingDoorRecord.setUpdateTime(DateUtils.getNowDate());
+        return openingDoorRecordMapper.updateOpeningDoorRecord(openingDoorRecord);
+    }
+
+    /**
+     * 批量删除门禁开门记录
+     * 
+     * @param recordIds 需要删除的门禁开门记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteOpeningDoorRecordByRecordIds(Long[] recordIds)
+    {
+        return openingDoorRecordMapper.deleteOpeningDoorRecordByRecordIds(recordIds);
+    }
+
+    /**
+     * 删除门禁开门记录信息
+     * 
+     * @param recordId 门禁开门记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteOpeningDoorRecordByRecordId(Long recordId)
+    {
+        return openingDoorRecordMapper.deleteOpeningDoorRecordByRecordId(recordId);
+    }
+}

+ 2 - 2
ruoyi-system/src/main/resources/mapper/system/EquipmentConfigurationMapper.xml

@@ -37,9 +37,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectEquipmentConfigurationVo"/>
         where equipment_id = #{equipmentId}
     </select>
-    <select id="selectEquipmentConfigurationByEquipmentName" parameterType="Long" resultMap="EquipmentConfigurationResult">
+    <select id="selectEquipmentConfigurationByEquipmentName" parameterType="java.lang.String" resultMap="EquipmentConfigurationResult">
         <include refid="selectEquipmentConfigurationVo"/>
-        where equipment_name =  #{equipmentName} limit 1
+        where equipment_name = #{equipmentName} limit 1
     </select>
 
     <insert id="insertEquipmentConfiguration" parameterType="EquipmentConfiguration" useGeneratedKeys="true" keyProperty="equipmentId">

+ 96 - 0
ruoyi-system/src/main/resources/mapper/system/OpeningDoorRecordMapper.xml

@@ -0,0 +1,96 @@
+<?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.ruoyi.system.mapper.OpeningDoorRecordMapper">
+    
+    <resultMap type="OpeningDoorRecord" id="OpeningDoorRecordResult">
+        <result property="recordId"    column="record_id"    />
+        <result property="entranceGuardName"    column="entrance_guard_name"    />
+        <result property="controlsTime"    column="controls_time"    />
+        <result property="type"    column="type"    />
+        <result property="pictureUrl"    column="picture_url"    />
+        <result property="createDept"    column="create_dept"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectOpeningDoorRecordVo">
+        select record_id, entrance_guard_name, controls_time, type, picture_url, create_dept, create_by, create_time, update_by, update_time, remark from opening_door_record
+    </sql>
+
+    <select id="selectOpeningDoorRecordList" parameterType="OpeningDoorRecord" resultMap="OpeningDoorRecordResult">
+        <include refid="selectOpeningDoorRecordVo"/>
+        <where>  
+            <if test="entranceGuardName != null  and entranceGuardName != ''"> and entrance_guard_name like concat('%', #{entranceGuardName}, '%')</if>
+            <if test="controlsTime != null  and controlsTime != ''"> and controls_time = #{controlsTime}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="pictureUrl != null  and pictureUrl != ''"> and picture_url = #{pictureUrl}</if>
+            <if test="createDept != null "> and create_dept = #{createDept}</if>
+        </where>
+    </select>
+    
+    <select id="selectOpeningDoorRecordByRecordId" parameterType="Long" resultMap="OpeningDoorRecordResult">
+        <include refid="selectOpeningDoorRecordVo"/>
+        where record_id = #{recordId}
+    </select>
+        
+    <insert id="insertOpeningDoorRecord" parameterType="OpeningDoorRecord" useGeneratedKeys="true" keyProperty="recordId">
+        insert into opening_door_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="entranceGuardName != null">entrance_guard_name,</if>
+            <if test="controlsTime != null">controls_time,</if>
+            <if test="type != null">type,</if>
+            <if test="pictureUrl != null">picture_url,</if>
+            <if test="createDept != null">create_dept,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="entranceGuardName != null">#{entranceGuardName},</if>
+            <if test="controlsTime != null">#{controlsTime},</if>
+            <if test="type != null">#{type},</if>
+            <if test="pictureUrl != null">#{pictureUrl},</if>
+            <if test="createDept != null">#{createDept},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateOpeningDoorRecord" parameterType="OpeningDoorRecord">
+        update opening_door_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="entranceGuardName != null">entrance_guard_name = #{entranceGuardName},</if>
+            <if test="controlsTime != null">controls_time = #{controlsTime},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="pictureUrl != null">picture_url = #{pictureUrl},</if>
+            <if test="createDept != null">create_dept = #{createDept},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where record_id = #{recordId}
+    </update>
+
+    <delete id="deleteOpeningDoorRecordByRecordId" parameterType="Long">
+        delete from opening_door_record where record_id = #{recordId}
+    </delete>
+
+    <delete id="deleteOpeningDoorRecordByRecordIds" parameterType="String">
+        delete from opening_door_record where record_id in 
+        <foreach item="recordId" collection="array" open="(" separator="," close=")">
+            #{recordId}
+        </foreach>
+    </delete>
+</mapper>