From 15ecc3b6fa9a5ae69f3ec169ae45699a4cd0ea20 Mon Sep 17 00:00:00 2001
From: wenminjie <1036699586@qq.com>
Date: 星期二, 21 七月 2026 10:31:16 +0800
Subject: [PATCH] 访客机侧代码

---
 ruoyi-system/src/main/java/com/ruoyi/system/dto/ApiVisitorRecodeSingoutRequest.java         |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysVisitorSignoutTemp.java               |    4 +
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiProtocolConfigController.java |   51 +++++++++++++++++
 ruoyi-applet/src/main/java/com/ruoyi/RuoYiAppletApplication.java                            |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/ApiVisitorRecordSinginRequest.java          |    6 +-
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiVisitorConfigController.java  |   53 +++++++++++++++++
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiVisitorRecordController.java  |   56 ++++++++++++++++++
 7 files changed, 168 insertions(+), 6 deletions(-)

diff --git a/ruoyi-applet/src/main/java/com/ruoyi/RuoYiAppletApplication.java b/ruoyi-applet/src/main/java/com/ruoyi/RuoYiAppletApplication.java
index 86b7bf9..157704c 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/RuoYiAppletApplication.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/RuoYiAppletApplication.java
@@ -29,8 +29,6 @@
 public class RuoYiAppletApplication
 {
     public static void main(String[] args) {
-
-
         ConfigurableApplicationContext application = SpringApplication.run(RuoYiAppletApplication.class, args);
         try {
             Environment env = application.getEnvironment();
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiProtocolConfigController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiProtocolConfigController.java
new file mode 100644
index 0000000..f985ead
--- /dev/null
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiProtocolConfigController.java
@@ -0,0 +1,51 @@
+package com.ruoyi.web.controller.api;
+
+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.dto.SysProtocolConfigDetailRequest;
+import com.ruoyi.system.dto.SysProtocolConfigSaveRequest;
+import com.ruoyi.system.service.ISysProtocolConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 入园承诺
+ *
+ * @author ruoyi
+ */
+@RestController
+@RequestMapping("/api/admission")
+@Api(tags = "入园承诺" , value = "入园承诺")
+public class SysApiProtocolConfigController extends BaseController
+{
+    @Autowired
+    private ISysProtocolConfigService protocolConfigService;
+
+    /**
+     * 入园承诺
+     */
+    @Log(title = "入园承诺", businessType = BusinessType.SELECT)
+    @PostMapping("/detail")
+    @ApiOperation(value = "入园承诺")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "操作成功", response = SysProtocolConfigDetailRequest.class),
+            @ApiResponse(code = 500, message = "操作失败")
+    })
+    public AjaxResult<SysProtocolConfigDetailRequest> detail()
+    {
+        SysProtocolConfigDetailRequest request = new SysProtocolConfigDetailRequest();
+        request.setProtocolType("ENTRY_COMMITMENT");//入园承诺
+        return success(protocolConfigService.selectConfig(request));
+    }
+
+}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiVisitorConfigController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiVisitorConfigController.java
new file mode 100644
index 0000000..ec4934a
--- /dev/null
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiVisitorConfigController.java
@@ -0,0 +1,53 @@
+package com.ruoyi.web.controller.api;
+
+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.dto.SysVisitorConfigSaveRequest;
+import com.ruoyi.system.service.ISysVisitorConfigService;
+import com.ruoyi.system.vo.SysVisitorConfigVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 访客系统配置接口
+ *
+ * @author ruoyi
+ */
+@RestController
+@RequestMapping("/api/visitorconfig")
+@Api(tags = "访客系统配置接口")
+public class SysApiVisitorConfigController extends BaseController
+{
+    @Autowired
+    private ISysVisitorConfigService visitorConfigService;
+
+    /**
+     * 查询当前配置
+     */
+    @Log(title = "访客系统配置", businessType = BusinessType.SELECT)
+    @PostMapping("/detail")
+    @ApiOperation(
+            value = "查询访客系统配置",
+            notes = "获取当前访客系统的配置信息,包括访客登记、审批流程等设置",
+            response = SysVisitorConfigVO.class
+    )
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "查询成功", response = SysVisitorConfigVO.class),
+            @ApiResponse(code = 500, message = "查询失败")
+    })
+    public AjaxResult<SysVisitorConfigVO> detail()
+    {
+        SysVisitorConfigVO data = visitorConfigService.selectConfig();
+        return new AjaxResult<>(200, "操作成功", data);
+    }
+}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiVisitorRecordController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiVisitorRecordController.java
index ff434d4..d8b3afc 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiVisitorRecordController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/SysApiVisitorRecordController.java
@@ -15,6 +15,7 @@
 import com.ruoyi.system.domain.SysVisitArea;
 import com.ruoyi.system.domain.SysVisitorRecord;
 import com.ruoyi.system.domain.vo.AreasList;
+import com.ruoyi.system.dto.SysVisitAreaTreeRequest;
 import com.ruoyi.system.dto.SysVisitorIdCardOutRequest;
 import com.ruoyi.system.dto.SysVisitorRecordAddRequest;
 import com.ruoyi.system.mapper.EmployeeMapper;
@@ -22,12 +23,14 @@
 import com.ruoyi.system.mapper.SysVisitAreaMapper;
 import com.ruoyi.system.mapper.SysVisitorRecordMapper;
 import com.ruoyi.system.service.ISysVisitAreaService;
+import com.ruoyi.system.vo.SysVisitAreaVO;
 import com.ruoyi.web.controller.service.SysVisitorRecordService;
 import com.ruoyi.web.controller.service.VisitorRegisterSyncService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -55,6 +58,7 @@
 
     @PostMapping("/add")
     @ApiOperation(value = "访客登记", notes = "现场访客登记")
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult add(
             @RequestBody
             @ApiParam(value = "访客登记信息", required = true)
@@ -106,6 +110,9 @@
         BeanUtils.copyProperties(request, record);
 
         //查询地区
+        List<AreasList> areasList = null;
+
+        //查询地区
         if (StringUtils.isNotEmpty(record.getVisitAreaIds())) {
             String[] visitAreaIds = record.getVisitAreaIds().split(",");
             String visitArea = Arrays.stream(visitAreaIds)
@@ -117,7 +124,7 @@
                     .collect(Collectors.joining(","));
 
             // ====== 新增:构建 areas 数组 ======
-            List<AreasList> areasList = Arrays.stream(visitAreaIds)
+            areasList = Arrays.stream(visitAreaIds)
                     .map(String::trim)
                     .filter(StringUtils::isNotEmpty)
                     .map(id -> {
@@ -141,6 +148,52 @@
             if (StringUtils.isNotEmpty(visitArea)) {
                 record.setVisitAreaNames(visitArea);
                 record.setRemark("来访中,允许访问区域:" + visitArea);
+            }
+        }
+// 如果 visitAreaIds 为空,但 visitAreaNames 不为空,根据名称查询填充 visitAreaIds
+        else if (StringUtils.isNotEmpty(record.getVisitAreaNames())) {
+            String[] visitAreaNames = record.getVisitAreaNames().split(",");
+
+            // 根据区域名称查询对应的ID,构建ID字符串
+            String visitAreaIdsStr = Arrays.stream(visitAreaNames)
+                    .map(String::trim)
+                    .filter(StringUtils::isNotEmpty)
+                    .map(name -> {
+                        // 根据区域名称查询区域信息(这里假设您有根据名称查询的方法)
+                        SysVisitAreaTreeRequest query = new SysVisitAreaTreeRequest();
+                        query.setAreaName(name);
+                        List<SysVisitAreaVO> area = sysVisitAreaMapper.selectAreaTreeList(query);
+                        return area != null ? String.valueOf(area.get(0).getAreaId()) : null;
+                    })
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.joining(","));
+
+            if (StringUtils.isNotEmpty(visitAreaIdsStr)) {
+                record.setVisitAreaIds(visitAreaIdsStr);
+            }
+
+            // 同时构建 areas 数组
+            areasList = Arrays.stream(visitAreaNames)
+                    .map(String::trim)
+                    .filter(StringUtils::isNotEmpty)
+                    .map(name -> {
+                        SysVisitAreaTreeRequest query = new SysVisitAreaTreeRequest();
+                        query.setAreaName(name);
+                        List<SysVisitAreaVO> area = sysVisitAreaMapper.selectAreaTreeList(query);
+                        if (area == null || area.isEmpty()) {
+                            return null;
+                        }
+                        AreasList areas = new AreasList();
+                        areas.setAreaCode(area.get(0).getAreaCode());
+                        areas.setAreaName(area.get(0).getAreaName());
+                        return areas;
+                    })
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toList());
+
+            if (!areasList.isEmpty()) {
+                record.setAreasList(areasList);
+                record.setRemark("来访中,允许访问区域:" + record.getVisitAreaNames());
             }
         }
 
@@ -200,6 +253,7 @@
 
     @PostMapping("/idCardSingOut")
     @ApiOperation(value = "访客身份证签离", notes = "访客身份证签离")
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult idCardSingOut(
             @RequestBody
             @ApiParam(value = "访客身份证签离", required = true)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysVisitorSignoutTemp.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysVisitorSignoutTemp.java
index 8c516d7..efbe5c9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysVisitorSignoutTemp.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysVisitorSignoutTemp.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -47,6 +48,7 @@
      * 签离时间
      */
     @TableField("sign_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date signTime;
 
     /**
@@ -95,12 +97,14 @@
      * 创建时间
      */
     @TableField(value = "create_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
     /**
      * 更新时间
      */
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
     /**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/ApiVisitorRecodeSingoutRequest.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/ApiVisitorRecodeSingoutRequest.java
index 2505120..41d90d5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/ApiVisitorRecodeSingoutRequest.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/ApiVisitorRecodeSingoutRequest.java
@@ -1,5 +1,6 @@
 package com.ruoyi.system.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -42,6 +43,7 @@
 
     /** 签离时间 */
     @ApiModelProperty(value = "签离时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date signTime;
 
 //    @NotBlank(message = "登记类型不能为空")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/ApiVisitorRecordSinginRequest.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/ApiVisitorRecordSinginRequest.java
index b4248dc..dc27c59 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/ApiVisitorRecordSinginRequest.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/ApiVisitorRecordSinginRequest.java
@@ -74,21 +74,21 @@
      * 有效期开始时间
      */
     @ApiModelProperty(value = "有效期开始时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyyMMddHHmmss")
     private Date validStartTime;
 
     /**
      * 有效期结束时间
      */
     @ApiModelProperty(value = "有效期结束时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyyMMddHHmmss")
     private Date validEndTime;
 
     /**
      * 登记时间
      */
     @ApiModelProperty(value = "登记时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyyMMddHHmmss")
     private Date registerTime;
 
     /**

--
Gitblit v1.7.1