wenminjie
2026-07-10 5a33098b027b542dbc72a04c6207e487170693eb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.ruoyi.web.controller.api;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.system.domain.SysVisitorRecord;
import com.ruoyi.system.dto.SysVisitorRecordAddRequest;
import com.ruoyi.system.mapper.SysVisitorRecordMapper;
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.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;
 
import java.util.Date;
 
@RestController
@RequestMapping("/api/visitorRecord")
@Api(tags = "访客登记")
public class SysApiVisitorRecordController extends BaseController {
 
    @Autowired
    private SysVisitorRecordMapper visitorRecordMapper;
 
    @PostMapping("/add")
    @ApiOperation(value = "访客登记", notes = "现场访客登记")
    public AjaxResult add(
            @RequestBody
            @ApiParam(value = "访客登记信息", required = true)
            SysVisitorRecordAddRequest request) {
 
        // ================= 参数校验 =================
        if (StringUtils.isBlank(request.getVisitorName())) {
            return AjaxResult.error("访客姓名不能为空");
        }
 
        if (StringUtils.isBlank(request.getIntervieweeName())) {
            return AjaxResult.error("被访人不能为空");
        }
 
        if (StringUtils.isNotBlank(request.getIdCard())) {
 
            LambdaQueryWrapper<SysVisitorRecord> wrapper = Wrappers.lambdaQuery();
 
            wrapper.eq(SysVisitorRecord::getIdCard, request.getIdCard())
                    .eq(SysVisitorRecord::getDelFlag, "0")
                    .in(SysVisitorRecord::getStatus,
                            "VISITING",
                            "PENDING_CONFIRM")
                    .last("limit 1");
 
            SysVisitorRecord oldRecord = visitorRecordMapper.selectOne(wrapper);
 
            if (oldRecord != null) {
                return AjaxResult.error("该访客当前已有未结束的登记,请勿重复登记");
            }
        }
 
        // ================= 保存 =================
        SysVisitorRecord record = new SysVisitorRecord();
        BeanUtils.copyProperties(request, record);
 
        record.setRegisterNo(generateRegisterNo());
        record.setRegisterType("ONSITE");
        record.setRegisterSource("访客机");
        record.setStatus("VISITING");
        record.setRegisterTime(new Date());
        record.setDelFlag("0");
 
        int rows = visitorRecordMapper.insert(record);
 
        if (rows > 0) {
            return AjaxResult.success(record.getRegisterNo());
        }
 
        return AjaxResult.error("登记失败");
    }
 
 
    @PostMapping("/add")
    @ApiOperation(value = "身份证签离", notes = "身份证签离")
    public AjaxResult idCardOut(
            @RequestBody
            @ApiParam(value = "", required = true)
            SysVisitorRecordAddRequest request){
        return success();
    }
 
    /**
     * 生成登记编号
     * 格式:
     * VIS + 年月日 + 6位随机数
     * 例如:
     * VIS20260707123456
     */
    private String generateRegisterNo() {
 
        String date =
                new java.text.SimpleDateFormat("yyyyMMddHHmmss")
                        .format(new Date());
 
        String random =
                String.valueOf((int)((Math.random() * 900000) + 100000));
 
        return "VIS" + date + random;
    }
}