Browse Source

修改bug

Anthony 1 tuần trước cách đây
mục cha
commit
f19edc6a57
36 tập tin đã thay đổi với 1541 bổ sung1 xóa
  1. 18 0
      pom.xml
  2. 20 0
      supervision-admin/pom.xml
  3. 3 1
      supervision-admin/src/main/java/com/supervision/RuoYiApplication.java
  4. 96 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Controller/DeviceManageController.java
  5. 63 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Controller/EventLogController.java
  6. 244 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Controller/PeopleManageController.java
  7. 17 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/DeviceService.java
  8. 9 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/EventLogService.java
  9. 19 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/PeopleDeviceService.java
  10. 18 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/PeopleFaceService.java
  11. 16 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/PeopleInfoService.java
  12. 12 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/PersonService.java
  13. 45 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/DeviceServiceImpl.java
  14. 58 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/EventLogServiceImpl.java
  15. 61 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/PeopleDeviceServiceImpl.java
  16. 48 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/PeopleFaceServiceImpl.java
  17. 71 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/PeopleInfoServiceImpl.java
  18. 38 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/PersonServiceImpl.java
  19. 19 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/Device.java
  20. 41 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/DeviceAddRequest.java
  21. 21 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/EventLog.java
  22. 15 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/PeopleDevice.java
  23. 17 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/PeopleFace.java
  24. 23 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/PeopleInfo.java
  25. 20 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/DeviceMapper.java
  26. 38 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/EventLogMapper.java
  27. 22 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/PeopleDeviceMapper.java
  28. 18 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/PeopleFaceMapper.java
  29. 25 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/PeopleInfoMapper.java
  30. 21 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/PersonMapper.java
  31. 55 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/DeviceMapper.xml
  32. 106 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/EventLogMapper.xml
  33. 40 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/PeopleDeviceMapper.xml
  34. 45 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/PeopleFaceMapper.xml
  35. 70 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/PeopleInfoMapper.xml
  36. 89 0
      supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/PersonMapper.xml

+ 18 - 0
pom.xml

@@ -219,6 +219,24 @@
         </plugins>
     </build>
 
+    <build>
+        <resources>
+            <!-- 让 java 目录下的 xml 也能被编译打包 -->
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+
+            <!-- 保持原有的 resources 目录 -->
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+    </build>
+
+
     <repositories>
         <repository>
             <id>public</id>

+ 20 - 0
supervision-admin/pom.xml

@@ -131,6 +131,11 @@
             <artifactId>freemarker</artifactId>
             <version>2.3.31</version>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
 
 
     </dependencies>
@@ -163,6 +168,21 @@
            </plugin>
         </plugins>
         <finalName>${project.artifactId}</finalName>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+            <!-- 如果你把 XML 放在 src/main/java 下,加上这一段 -->
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+        </resources>
     </build>
 
 </project>

+ 3 - 1
supervision-admin/src/main/java/com/supervision/RuoYiApplication.java

@@ -1,15 +1,17 @@
 package com.supervision;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 
 /**
  * 启动程序
- * 
+ *
  * @author ruoyi
  */
 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
+@MapperScan("com.supervision.web.peopleGateManage.mapper")
 public class RuoYiApplication
 {
     public static void main(String[] args)

+ 96 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Controller/DeviceManageController.java

@@ -0,0 +1,96 @@
+package com.supervision.web.peopleGateManage.Controller;
+
+import com.supervision.web.peopleGateManage.Service.DeviceService;
+import com.supervision.web.peopleGateManage.Service.PeopleDeviceService;
+import com.supervision.web.peopleGateManage.Service.PeopleInfoService;
+import com.supervision.web.peopleGateManage.enity.Device;
+import com.supervision.web.peopleGateManage.enity.DeviceAddRequest;
+import com.supervision.web.peopleGateManage.enity.PeopleInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/device")
+public class DeviceManageController {
+
+    @Autowired
+    private DeviceService deviceService;
+
+    @Autowired
+    private PeopleInfoService peopleInfoService;
+
+    @Autowired
+    private PeopleDeviceService peopleDeviceService;
+
+    /**
+     * 获取所有设备
+     */
+    @GetMapping("/list")
+    public List<Device> listDevices() {
+        return deviceService.getAll();
+    }
+
+    /**
+     * 新增设备(支持从指定设备或所有设备同步人员信息)
+     */
+    @PostMapping("/add")
+    public String addDevice(@RequestBody DeviceAddRequest request) {
+        // 1. 保存新设备
+        Device device = new Device();
+        device.setModel(request.getModel());
+        device.setLocation(request.getLocation());
+        device.setIp(request.getIp());
+        device.setPort(request.getPort());
+        device.setAccount(request.getAccount());
+        device.setPassword(request.getPassword());
+        deviceService.add(device);
+
+        // 2. 同步逻辑
+        if (request.getSyncMode() != null) {
+            if (request.getSyncMode() == 1) {
+                // 同步所有人员
+                List<PeopleInfo> allPeople = peopleInfoService.getAll();
+                for (PeopleInfo p : allPeople) {
+                    peopleDeviceService.bindPersonToDevice(p.getPersonId(), device.getId());
+                }
+            } else if (request.getSyncMode() == 2 && request.getSyncFromDeviceId() != null) {
+                // 从指定设备同步
+                List<String> personIds = peopleDeviceService.getPersonsByDevice(request.getSyncFromDeviceId());
+                for (String personId : personIds) {
+                    peopleDeviceService.bindPersonToDevice(personId, device.getId());
+                }
+            }
+        }
+
+        return "success";
+    }
+
+    /**
+     * 修改设备
+     */
+    @PutMapping("/update")
+    public String updateDevice(@RequestBody Device device) {
+        deviceService.update(device);
+        return "success";
+    }
+
+    /**
+     * 删除设备
+     */
+    @DeleteMapping("/delete/{id}")
+    public String deleteDevice(@PathVariable Long id) {
+        deviceService.delete(id);
+        return "success";
+    }
+
+    /**
+     * 查看单个设备详情
+     */
+    @GetMapping("/get/{id}")
+    public Device getDevice(@PathVariable Long id) {
+        return deviceService.getById(id);
+    }
+}
+

+ 63 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Controller/EventLogController.java

@@ -0,0 +1,63 @@
+package com.supervision.web.peopleGateManage.Controller;
+
+import com.supervision.web.peopleGateManage.Service.EventLogService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/event")
+public class EventLogController {
+
+    @Resource
+    private EventLogService eventLogService;
+
+//    @GetMapping("/list")
+//    public Map<String, Object> list(@RequestParam Map<String, Object> params) {
+//        Integer pageNum = Integer.parseInt(params.getOrDefault("pageNum","1").toString());
+//        Integer pageSize = Integer.parseInt(params.getOrDefault("pageSize","20").toString());
+//        return eventLogService.getEventLogs(params);
+//    }
+@GetMapping("/list")
+public Map<String, Object> list(
+        @RequestParam(required = false) String eventType,
+        @RequestParam(required = false) String personId,
+        @RequestParam(required = false) String jobNumber,
+        @RequestParam(required = false) String name,
+        @RequestParam(required = false) String remoteHost,
+        @RequestParam(required = false) String reader,
+        @RequestParam(required = false) String detectorId,
+        @RequestParam(required = false) String operation,
+        @RequestParam(required = false) String startTime,
+        @RequestParam(required = false) String endTime,
+        @RequestParam(defaultValue = "1") Integer pageNum,
+        @RequestParam(defaultValue = "24") Integer pageSize
+) {
+    // 强制为非 null 值
+    int pn = (pageNum == null || pageNum < 1) ? 1 : pageNum;
+    int ps = (pageSize == null || pageSize < 1) ? 24 : pageSize;
+    int offset = (pn - 1) * ps;
+
+    // 如果你的 Service 接收 Map,你也可以组装 Map,并且确保都是正确类型
+    Map<String, Object> params = new HashMap<>();
+    params.put("eventType", eventType);
+    params.put("personId", personId);
+    params.put("jobNumber", jobNumber);
+    params.put("name", name);
+    params.put("remoteHost", remoteHost);
+    params.put("reader", reader);
+    params.put("detectorId", detectorId);
+    params.put("operation", operation);
+    params.put("startTime", startTime);
+    params.put("endTime", endTime);
+    params.put("offset", offset);     // **Integer**
+    params.put("pageSize", ps);       // **Integer**
+
+    // 调用 Service(内部调用 Mapper.selectByCondition(params...))
+    Map<String, Object> result = eventLogService.getEventLogs(params);
+
+    return result;
+}
+}

+ 244 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Controller/PeopleManageController.java

@@ -0,0 +1,244 @@
+package com.supervision.web.peopleGateManage.Controller;
+
+import com.supervision.web.peopleGateManage.Service.DeviceService;
+import com.supervision.web.peopleGateManage.Service.PeopleDeviceService;
+import com.supervision.web.peopleGateManage.Service.PeopleFaceService;
+import com.supervision.web.peopleGateManage.Service.PeopleInfoService;
+import com.supervision.web.peopleGateManage.enity.PeopleFace;
+import com.supervision.web.peopleGateManage.enity.PeopleInfo;
+import com.supervision.web.peopleGateManage.mapper.PeopleFaceMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.*;
+
+@RestController
+@RequestMapping("/person")
+public class PeopleManageController {
+
+    public static final Logger logger = LoggerFactory.getLogger(PeopleManageController.class);
+
+    @Autowired
+    private DeviceService deviceService;
+
+    @Autowired
+    private PeopleInfoService peopleInfoService;
+
+    @Autowired
+    private PeopleFaceService peopleFaceService;
+
+    @Autowired
+    private PeopleDeviceService peopleDeviceService;
+
+    // ------------------- 人员管理 -------------------
+
+    /** 获取设备下的人员 */
+    @GetMapping("/info/list/{deviceId}")
+    public List<PeopleInfo> getPeopleByDevice(@PathVariable Long deviceId) {
+        List<String> personIds = peopleDeviceService.getPersonsByDevice(deviceId);
+        return peopleInfoService.getByIds(personIds);
+    }
+
+    /**  获取所有人员 */
+    @GetMapping("/info/list")
+    public List<PeopleInfo> getAllPeople() {
+        return peopleInfoService.getAll();
+
+//        List<String> personIds = peopleDeviceService.getPersonsByDevice(deviceId);
+//        return peopleInfoService.getByIds(personIds);
+    }
+    @GetMapping("/info/total")
+    public int getPeopleTotal() {
+        return peopleInfoService.getPeopleTotal();
+    }
+
+    /** 新增人员(仅新增人员,不绑定设备) */
+    @PostMapping("/info/add")
+    public String addPersonInfo(@RequestBody PeopleInfo peopleInfo) {
+//        System.out.println("接收到的数据: " + peopleInfo);
+//        peopleInfoService.add(peopleInfo);
+        System.out.println("接收到的数据: " + peopleInfo);
+
+        // ⚡ personId 不从前端接收,由 Service 自动生成
+        peopleInfo.setPersonId(null);
+
+        peopleInfoService.add(peopleInfo);
+
+
+        System.out.println("绑定设备: " + peopleInfo.getDeviceId());
+        peopleDeviceService.addRelation(peopleInfo.getPersonId(), peopleInfo.getDeviceId());
+        System.out.println("关系已写入表 new_people_device");
+
+        return "success";
+    }
+
+
+
+    /** 给人员绑定设备 */
+    @PostMapping("/info/bind")
+    public String bindPersonToDevice(@RequestParam String personId, @RequestParam Long deviceId) {
+        peopleDeviceService.bindPersonToDevice(personId, deviceId);
+        return "success";
+    }
+
+    /** 修改人员 */
+    @PutMapping("/info/update")
+    public String updatePersonInfo(@RequestBody PeopleInfo peopleInfo) {
+        peopleInfoService.update(peopleInfo);
+        return "success";
+    }
+
+    /** 删除人员 */
+    @DeleteMapping("/info/delete/{id}")
+    public String deletePersonInfo(@PathVariable Long id) {
+        peopleInfoService.delete(id);
+        return "success";
+    }
+
+    // ------------------- 人脸库管理(全局) -------------------
+
+    @Value("${faceImgPath}")
+    private String uploadDir;
+
+    @PostMapping("face/upload")
+    public Map uploadFace(@RequestParam("file") MultipartFile file) {
+        Map res = new HashMap();
+        if (file.isEmpty()) {
+            res.put("message", "文件为空");
+            return res;
+        }
+
+        try {
+            String originalFilename = StringUtils.cleanPath(file.getOriginalFilename());
+            String suffix = originalFilename.contains(".") ? originalFilename.substring(originalFilename.lastIndexOf(".")) : "";
+            String newFileName = UUID.randomUUID().toString() + suffix;
+
+            File uploadFolder = new File(uploadDir);
+            if (!uploadFolder.exists()) {
+                uploadFolder.mkdirs();
+            }
+
+            File dest = new File(uploadFolder, newFileName);
+            file.transferTo(dest);
+
+            String url = "E:\\sourceCode\\faceImg\\" + newFileName;
+//
+            res.put("url", url);
+
+            res.put("fileName", newFileName);
+            res.put("message", "上传成功");
+            return res;
+        } catch (IOException e) {
+            logger.error("上传失败", e);
+            res.put("message", "上传失败");
+            return res;
+        }
+    }
+
+//    @GetMapping("/face/{personId}")
+//    public ResponseEntity<byte[]> getFace(@PathVariable String fileName) {
+//        try {
+//            File file = new File(uploadDir, fileName);
+//            if (!file.exists()) {
+//                return ResponseEntity.notFound().build();
+//            }
+//
+//            byte[] imageBytes = Files.readAllBytes(file.toPath());
+//
+//            HttpHeaders headers = new HttpHeaders();
+//            headers.setContentType(MediaType.IMAGE_JPEG); // 或 IMAGE_PNG,根据情况
+//
+//            return new ResponseEntity<>(imageBytes, headers, HttpStatus.OK);
+//        } catch (IOException e) {
+//            logger.error("读取图片失败", e);
+//            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
+//        }
+//    }
+
+    @Autowired
+    private PeopleFaceMapper peopleFaceMapper;
+
+//    private static final String UPLOAD_DIR = "E:/sourceCode/faceImg/faces/";
+    private static final String UPLOAD_DIR = "E:/sourceCode/faceImg/";
+
+    @GetMapping("/face/{id}")
+    public ResponseEntity<Map<String, Object>> getPerson(@PathVariable("id") Long id) {
+        // 1. 从 DB 查整条记录(实体里包含 faceImgUrl 字段)
+        PeopleFace person = peopleFaceMapper.selectById(id);
+        if (person == null) {
+            return ResponseEntity.notFound().build();
+        }
+
+        Map<String, Object> res = new HashMap<>();
+        res.put("id", person.getId());
+        res.put("personId", person.getPersonId());
+        res.put("jobNumber", person.getJobNumber());
+        res.put("name", person.getName());
+        // 你数据库里存的是 /uploads/faces/xxx.jpg 这种路径
+        String faceImgUrl = person.getFaceImgUrl();
+        if (faceImgUrl != null && !faceImgUrl.trim().isEmpty()) {
+            try {
+                String fileName = faceImgUrl.substring(faceImgUrl.lastIndexOf("/") + 1);
+                File file = new File(UPLOAD_DIR, fileName);
+                if (file.exists()) {
+                    byte[] bytes = Files.readAllBytes(file.toPath());
+                    String base64 = Base64.getEncoder().encodeToString(bytes);
+                    String mime = fileName.toLowerCase().endsWith(".png") ? "image/png" : "image/jpeg";
+                    // 返回 base64 字符串和 mime 类型
+                    res.put("faceImgBase64", base64);
+                    res.put("faceImgMime", mime);
+                } else {
+                    // 文件丢失:返回 null 或者不放该字段
+                    res.put("faceImgBase64", null);
+                    res.put("faceImgMime", null);
+                }
+            } catch (IOException e) {
+                // 出错时也返回 500 或者返回空图片字段,根据需要调整
+                e.printStackTrace();
+                res.put("faceImgBase64", null);
+                res.put("faceImgMime", null);
+            }
+        } else {
+            res.put("faceImgBase64", null);
+            res.put("faceImgMime", null);
+        }
+
+        return ResponseEntity.ok(res);
+    }
+
+
+    @GetMapping("/face/list")
+    public List<PeopleFace> getAllFaces() {
+        return peopleFaceService.getAll();
+    }
+
+    @PostMapping("/face/add")
+    public String addFace(@RequestBody PeopleFace peopleFace) {
+        peopleFaceService.add(peopleFace);
+        return "success";
+    }
+
+    @PutMapping("/face/update")
+    public String updateFace(@RequestBody PeopleFace peopleFace) {
+        peopleFaceService.update(peopleFace);
+        return "success";
+    }
+
+    @DeleteMapping("/face/delete/{id}")
+    public String deleteFace(@PathVariable Long id) {
+        peopleFaceService.delete(id);
+        return "success";
+    }
+}

+ 17 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/DeviceService.java

@@ -0,0 +1,17 @@
+package com.supervision.web.peopleGateManage.Service;
+
+import com.supervision.web.peopleGateManage.enity.Device;
+
+import java.util.List;
+
+public interface DeviceService {
+    List<Device> getAll();
+
+    Device getById(Long id);
+
+    void add(Device device);
+
+    void update(Device device);
+
+    void delete(Long id);
+}

+ 9 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/EventLogService.java

@@ -0,0 +1,9 @@
+package com.supervision.web.peopleGateManage.Service;
+
+import com.supervision.web.peopleGateManage.enity.EventLog;
+import java.util.List;
+import java.util.Map;
+
+public interface EventLogService {
+    Map<String, Object> getEventLogs(Map<String, Object> params);
+}

+ 19 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/PeopleDeviceService.java

@@ -0,0 +1,19 @@
+package com.supervision.web.peopleGateManage.Service;
+
+import java.util.List;
+
+public interface PeopleDeviceService {
+
+    void addRelation(String personId, Long deviceId);
+
+    void bindPersonToDevice(String personId, Long deviceId);
+
+    void bindPersonToDevices(String personId, List<Long> deviceIds);
+
+    void unbindPersonFromDevice(String personId, Long deviceId);
+
+    List<Long> getDevicesByPerson(String personId);
+
+    List<String> getPersonsByDevice(Long deviceId);
+
+}

+ 18 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/PeopleFaceService.java

@@ -0,0 +1,18 @@
+package com.supervision.web.peopleGateManage.Service;
+
+import com.supervision.web.peopleGateManage.enity.PeopleFace;
+
+import java.util.List;
+
+public interface PeopleFaceService {
+    PeopleFace getById(Long id);
+
+    List<PeopleFace> getAll();
+
+    void add(PeopleFace peopleFace);
+
+    void update(PeopleFace peopleFace);
+
+    void delete(Long id);
+}
+

+ 16 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/PeopleInfoService.java

@@ -0,0 +1,16 @@
+package com.supervision.web.peopleGateManage.Service;
+
+import com.supervision.web.peopleGateManage.enity.PeopleInfo;
+
+import java.util.List;
+
+
+public interface PeopleInfoService {
+    PeopleInfo getById(Long id);
+    List<PeopleInfo> getAll();
+    void add(PeopleInfo peopleInfo);
+    void update(PeopleInfo peopleInfo);
+    void delete(Long id);
+    int getPeopleTotal();
+    List<PeopleInfo> getByIds(List<String> personIds);
+}

+ 12 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/PersonService.java

@@ -0,0 +1,12 @@
+package com.supervision.web.peopleGateManage.Service;
+
+
+import com.supervision.web.peopleGateManage.enity.PeopleInfo;
+import java.util.List;
+public interface PersonService {
+    List<PeopleInfo> getAllPersons();
+//    List<PeopleInfo> getPersonsByDeviceId(Long deviceId);
+    void addPerson(PeopleInfo person);
+    void updatePerson(PeopleInfo person);
+    void deletePerson(Long id);
+}

+ 45 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/DeviceServiceImpl.java

@@ -0,0 +1,45 @@
+package com.supervision.web.peopleGateManage.Service.impl;
+
+import com.supervision.web.peopleGateManage.mapper.DeviceMapper;
+import com.supervision.web.peopleGateManage.Service.DeviceService;
+import com.supervision.web.peopleGateManage.enity.Device;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Service
+public class DeviceServiceImpl implements DeviceService {
+
+    @Autowired
+    private DeviceMapper deviceMapper;
+
+    @Override
+    public List<Device> getAll() {
+        return deviceMapper.selectAll();
+    }
+
+    @Override
+    public Device getById(Long id) {
+        return deviceMapper.selectById(id);
+    }
+
+    @Override
+    public void add(Device device) {
+        device.setCreateTime(LocalDateTime.now());
+        device.setUpdateTime(LocalDateTime.now());
+        deviceMapper.insert(device);
+    }
+
+    @Override
+    public void update(Device device) {
+        device.setUpdateTime(LocalDateTime.now());
+        deviceMapper.update(device);
+    }
+
+    @Override
+    public void delete(Long id) {
+        deviceMapper.delete(id);
+    }
+}

+ 58 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/EventLogServiceImpl.java

@@ -0,0 +1,58 @@
+package com.supervision.web.peopleGateManage.Service.impl;
+
+import com.supervision.web.peopleGateManage.enity.EventLog;
+import com.supervision.web.peopleGateManage.mapper.EventLogMapper;
+import com.supervision.web.peopleGateManage.Service.EventLogService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class EventLogServiceImpl implements EventLogService {
+
+    @Resource
+    private EventLogMapper eventLogMapper;
+
+    @Override
+    public Map<String, Object> getEventLogs(Map<String, Object> params) {
+        int pageNum = (int) params.getOrDefault("pageNum", 1);
+        int pageSize = (int) params.getOrDefault("pageSize", 24);
+        int offset = (pageNum - 1) * pageSize;
+
+        List<EventLog> list = eventLogMapper.selectByCondition(
+                (String) params.get("eventType"),
+                (String) params.get("personId"),
+                (String) params.get("jobNumber"),
+                (String) params.get("name"),
+                (String) params.get("remoteHost"),
+                (String) params.get("reader"),
+                (String) params.get("detectorId"),
+                (String) params.get("operation"),
+                (String) params.get("startTime"),
+                (String) params.get("endTime"),
+                offset, pageSize
+        );
+
+        int total = eventLogMapper.countByCondition(
+                (String) params.get("eventType"),
+                (String) params.get("personId"),
+                (String) params.get("jobNumber"),
+                (String) params.get("name"),
+                (String) params.get("remo  teHost"),
+                (String) params.get("reader"),
+                (String) params.get("detectorId"),
+                (String) params.get("operation"),
+                (String) params.get("startTime"),
+                (String) params.get("endTime")
+        );
+
+        Map<String, Object> result = new HashMap<>();
+        result.put("records", list);
+        result.put("total", total);
+        return result;
+    }
+}
+

+ 61 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/PeopleDeviceServiceImpl.java

@@ -0,0 +1,61 @@
+package com.supervision.web.peopleGateManage.Service.impl;
+
+import com.supervision.web.peopleGateManage.mapper.PeopleDeviceMapper;
+import com.supervision.web.peopleGateManage.Service.PeopleDeviceService;
+import com.supervision.web.peopleGateManage.enity.PeopleDevice;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Service
+public class PeopleDeviceServiceImpl implements PeopleDeviceService {
+
+    @Autowired
+    private PeopleDeviceMapper peopleDeviceMapper;
+
+    @Override
+    public void bindPersonToDevice(String personId, Long deviceId) {
+        PeopleDevice pd = new PeopleDevice();
+        pd.setPersonId(personId);
+        pd.setDeviceId(deviceId);
+        pd.setCreateTime(LocalDateTime.now());
+        pd.setUpdateTime(LocalDateTime.now());
+        peopleDeviceMapper.insert(pd);
+    }
+
+    @Override
+    public void bindPersonToDevices(String personId, List<Long> deviceIds) {
+        for (Long deviceId : deviceIds) {
+            bindPersonToDevice(personId, deviceId);
+        }
+    }
+
+    @Override
+    public void unbindPersonFromDevice(String personId, Long deviceId) {
+        peopleDeviceMapper.delete(personId, deviceId);
+    }
+
+    @Override
+    public List<Long> getDevicesByPerson(String personId) {
+        return peopleDeviceMapper.selectDevicesByPerson(personId);
+    }
+
+    @Override
+    public List<String> getPersonsByDevice(Long deviceId) {
+        return peopleDeviceMapper.selectPersonsByDevice(deviceId);
+    }
+
+
+    public void addRelation(String personId, Long deviceId) {
+        PeopleDevice relation = new PeopleDevice();
+        relation.setPersonId(personId);
+        relation.setDeviceId(deviceId);
+        relation.setCreateTime(LocalDateTime.now());
+        relation.setUpdateTime(LocalDateTime.now());
+        peopleDeviceMapper.insertRelation(relation);
+    }
+
+
+}

+ 48 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/PeopleFaceServiceImpl.java

@@ -0,0 +1,48 @@
+package com.supervision.web.peopleGateManage.Service.impl;
+
+import com.supervision.web.peopleGateManage.mapper.PeopleFaceMapper;
+import com.supervision.web.peopleGateManage.Service.PeopleFaceService;
+import com.supervision.web.peopleGateManage.enity.PeopleFace;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+// PeopleFaceServiceImpl.java
+@Service
+public class PeopleFaceServiceImpl implements PeopleFaceService {
+    @Autowired
+    private PeopleFaceMapper peopleFaceMapper;
+//    @Value("${faceImgPath}")  // 你存图片的路径,例如 D:/faceImg/
+//    private String faceImgPath = "E:/sourceCode/faceImg/";
+
+
+
+
+    @Override
+    public PeopleFace getById(Long id) {
+        return peopleFaceMapper.selectById(id);
+    }
+
+    @Override
+    public List<PeopleFace> getAll() {
+        return peopleFaceMapper.selectAll();
+    }
+
+    @Override
+    public void add(PeopleFace peopleFace) {
+        peopleFaceMapper.insert(peopleFace);
+    }
+
+    @Override
+    public void update(PeopleFace peopleFace) {
+        peopleFaceMapper.update(peopleFace);
+    }
+
+    @Override
+    public void delete(Long id) {
+        peopleFaceMapper.delete(id);
+    }
+}
+

+ 71 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/PeopleInfoServiceImpl.java

@@ -0,0 +1,71 @@
+package com.supervision.web.peopleGateManage.Service.impl;
+
+import com.supervision.web.peopleGateManage.mapper.PeopleInfoMapper;
+import com.supervision.web.peopleGateManage.Service.PeopleInfoService;
+import com.supervision.web.peopleGateManage.enity.PeopleInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.UUID;
+
+
+@Service
+public class PeopleInfoServiceImpl implements PeopleInfoService {
+    @Autowired
+    private PeopleInfoMapper peopleInfoMapper;
+
+    @Override
+    public PeopleInfo getById(Long id) {
+        return peopleInfoMapper.selectById(id);
+    }
+
+    @Override
+    public List<PeopleInfo> getAll() {
+        return peopleInfoMapper.selectAll();
+    }
+    @Override
+    public int getPeopleTotal() {
+        return peopleInfoMapper.selectTotal();
+    }
+
+    @Override
+    public void add(PeopleInfo peopleInfo) {
+
+        String prefix = Boolean.TRUE.equals(peopleInfo.getIsTemporary()) ? "1" : "0";
+
+
+
+        // 第三步:拼接 personId(比如 "100001")
+//        String personId = prefix + String.format("%05d", peopleInfo.getId());
+
+        String personId = prefix + UUID.randomUUID().toString().replace("-", "").substring(0, 10);
+        // 第四步:更新 personId
+        peopleInfo.setPersonId(personId);
+
+        peopleInfoMapper.insert(peopleInfo);
+
+//        peopleInfoMapper.updatePersonId(peopleInfo.getId(), personId);
+    }
+
+    @Override
+    public void update(PeopleInfo peopleInfo) {
+        peopleInfoMapper.update(peopleInfo);
+    }
+
+    @Override
+    public void delete(Long id) {
+        peopleInfoMapper.delete(id);
+    }
+
+    @Override
+    public List<PeopleInfo> getByIds(List<String> personIds) {
+        if (personIds == null || personIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+        List<PeopleInfo>t = peopleInfoMapper.selectByIds(personIds);
+        return peopleInfoMapper.selectByIds(personIds);
+    }
+
+}

+ 38 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/Service/impl/PersonServiceImpl.java

@@ -0,0 +1,38 @@
+package com.supervision.web.peopleGateManage.Service.impl;
+
+
+import com.supervision.web.peopleGateManage.mapper.PersonMapper;
+import com.supervision.web.peopleGateManage.Service.PersonService;
+import com.supervision.web.peopleGateManage.enity.PeopleInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class PersonServiceImpl implements PersonService {
+    @Autowired
+    private PersonMapper personMapper;
+
+    @Override
+    public List<PeopleInfo> getAllPersons() {
+        return personMapper.getAllPersons();
+    }
+
+
+
+    @Override
+    public void addPerson(PeopleInfo person) {
+        personMapper.insertPerson(person);
+    }
+
+    @Override
+    public void updatePerson(PeopleInfo person) {
+        personMapper.updatePerson(person);
+    }
+
+    @Override
+    public void deletePerson(Long id) {
+        personMapper.deletePerson(id);
+    }
+}

+ 19 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/Device.java

@@ -0,0 +1,19 @@
+package com.supervision.web.peopleGateManage.enity;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class Device {
+    private Long id;          // 主键
+//    private String deviceId;  // 设备编号(唯一)
+    private String model;     // 型号
+    private String location;  // 位置
+    private String ip;        // IP
+    private Integer port;     // 端口
+    private String account;   // 登录账号
+    private String password;  // 登录密码
+    private LocalDateTime createTime;
+    private LocalDateTime updateTime;
+}

+ 41 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/DeviceAddRequest.java

@@ -0,0 +1,41 @@
+package com.supervision.web.peopleGateManage.enity;
+
+import lombok.Data;
+
+@Data
+public class DeviceAddRequest {
+
+    private String deviceId;   // 设备编号
+    private String model;      // 型号
+    private String location;   // 位置
+    private String ip;         // IP
+    private Integer port;      // 端口
+    private String account;    // 账号
+    private String password;   // 密码
+
+    /**
+     * 同步模式:
+     * 0 = 不同步
+     * 1 = 同步所有设备人员
+     * 2 = 从指定设备同步人员
+     */
+    private Integer syncMode;
+
+    /**
+     * 当 syncMode = 2 时生效,表示来源设备ID
+     */
+    private Long syncFromDeviceId;
+
+//    private String deviceId;
+//    private String model;
+//    private String location;
+//    private String ip;
+//    private Integer port;
+//    private String account;
+//    private String password;
+//
+//    // 同步策略
+//    private Long syncFromDeviceId;   // 可选:从单个设备同步
+//    private Boolean syncAll = false; // 可选:是否同步所有设备
+}
+

+ 21 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/EventLog.java

@@ -0,0 +1,21 @@
+package com.supervision.web.peopleGateManage.enity;
+
+import lombok.Data;
+import java.time.LocalDateTime;
+
+@Data
+public class EventLog {
+    private Long id;
+    private String personId;     // 人员ID
+    private String jobNumber;    // 工号
+    private String name;         // 姓名
+    private String cardNumber;   // 卡号
+    private String door;         // 门
+    private String remoteHost;   // 远程主机地址
+    private String reader;       // 读卡器
+    private String detectorId;   // 探测器ID
+    private String operation;    // 操作
+    private String eventType;    // 事件类型
+    private LocalDateTime eventTime;  // 事件发生时间
+    private LocalDateTime createTime; // 记录创建时间
+}

+ 15 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/PeopleDevice.java

@@ -0,0 +1,15 @@
+package com.supervision.web.peopleGateManage.enity;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class PeopleDevice {
+    private Long id;
+    private String personId;        // 人员ID (对应 people_info.person_id)
+    private Long deviceId;          // 设备ID (对应 device.id)
+    private LocalDateTime createTime;
+    private LocalDateTime updateTime;
+}
+

+ 17 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/PeopleFace.java

@@ -0,0 +1,17 @@
+package com.supervision.web.peopleGateManage.enity;
+
+import lombok.Data;
+import java.time.LocalDateTime;
+
+@Data
+public class PeopleFace {
+    private Long id;
+    private String personId;        // 全局唯一人员ID
+    private String jobNumber;       // 工号(员工有,访客为空)
+    private String name;            // 姓名
+    private String faceImgUrl;      // 人脸图片路径/URL
+    private String featureData;     // 人脸特征数据(可选)
+    private byte[] faceImg;
+    private LocalDateTime createTime;
+    private LocalDateTime updateTime;
+}

+ 23 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/enity/PeopleInfo.java

@@ -0,0 +1,23 @@
+package com.supervision.web.peopleGateManage.enity;
+
+
+import lombok.Data;
+import java.time.LocalDateTime;
+
+@Data
+public class PeopleInfo {
+    private Long id;
+    private String personId;        // 外键 -> PeopleFace.personId
+    private Long deviceId;          // 设备ID
+    private String name;            // 冗余存储人员姓名
+    private Boolean longTerm;       // 是否长期有效
+    private LocalDateTime validPeriod; // 有效期(longTerm=false时才生效)
+    private String doorPermission;  // 门权限ID列表
+    private String planTemplateId;  // 计划模板编号
+    private String authMethod;      // 认证方式(人脸/指纹/密码/卡片)
+    private LocalDateTime createTime;
+    private LocalDateTime updateTime;
+    private Boolean isTemporary;
+}
+
+

+ 20 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/DeviceMapper.java

@@ -0,0 +1,20 @@
+package com.supervision.web.peopleGateManage.mapper;
+
+import com.supervision.web.peopleGateManage.enity.Device;
+import org.mybatis.spring.annotation.MapperScan;
+
+import java.util.List;
+
+@MapperScan("com.supervision.web.peopleGateManage.mapper.xml.DeviceMapper")
+public interface DeviceMapper {
+    List<Device> selectAll();
+
+    Device selectById(Long id);
+
+    int insert(Device device);
+
+    int update(Device device);
+
+    int delete(Long id);
+}
+

+ 38 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/EventLogMapper.java

@@ -0,0 +1,38 @@
+package com.supervision.web.peopleGateManage.mapper;
+import com.supervision.web.peopleGateManage.enity.EventLog;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface EventLogMapper {
+
+    List<EventLog> selectByCondition(
+            @Param("eventType") String eventType,
+            @Param("personId") String personId,
+            @Param("jobNumber") String jobNumber,
+            @Param("name") String name,
+            @Param("remoteHost") String remoteHost,
+            @Param("reader") String reader,
+            @Param("detectorId") String detectorId,
+            @Param("operation") String operation,
+            @Param("startTime") String startTime,
+            @Param("endTime") String endTime,
+            @Param("offset") Integer offset,
+            @Param("pageSize") Integer pageSize
+    );
+
+    int countByCondition(
+            @Param("eventType") String eventType,
+            @Param("personId") String personId,
+            @Param("jobNumber") String jobNumber,
+            @Param("name") String name,
+            @Param("remoteHost") String remoteHost,
+            @Param("reader") String reader,
+            @Param("detectorId") String detectorId,
+            @Param("operation") String operation,
+            @Param("startTime") String startTime,
+            @Param("endTime") String endTime
+    );
+}

+ 22 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/PeopleDeviceMapper.java

@@ -0,0 +1,22 @@
+package com.supervision.web.peopleGateManage.mapper;
+
+import com.supervision.web.peopleGateManage.enity.PeopleDevice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface PeopleDeviceMapper {
+
+    int insert(PeopleDevice peopleDevice);
+
+    int delete(@Param("personId") String personId, @Param("deviceId") Long deviceId);
+
+    List<Long> selectDevicesByPerson(@Param("personId") String personId);
+
+    List<String> selectPersonsByDevice(@Param("deviceId") Long deviceId);
+
+    void insertRelation(PeopleDevice peopleDevice);
+
+}

+ 18 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/PeopleFaceMapper.java

@@ -0,0 +1,18 @@
+package com.supervision.web.peopleGateManage.mapper;
+
+import com.supervision.web.peopleGateManage.enity.PeopleFace;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+@Mapper
+public interface PeopleFaceMapper {
+    PeopleFace selectById(Long id);
+
+    List<PeopleFace> selectAll();
+
+    int insert(PeopleFace peopleFace);
+
+    int update(PeopleFace peopleFace);
+
+    int delete(Long id);
+}

+ 25 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/PeopleInfoMapper.java

@@ -0,0 +1,25 @@
+package com.supervision.web.peopleGateManage.mapper;
+
+import com.supervision.web.peopleGateManage.enity.PeopleInfo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+public interface PeopleInfoMapper {
+    PeopleInfo selectById(Long id);
+
+    List<PeopleInfo> selectAll();
+
+    int selectTotal();
+
+    int insert(PeopleInfo peopleInfo);
+
+    int update(PeopleInfo peopleInfo);
+
+    int delete(Long id);
+
+    List<PeopleInfo> selectByIds(@Param("personIds") List<String> personIds);
+
+//    void updatePersonId(@Param("id") Long id, @Param("personId") String personId);
+}

+ 21 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/PersonMapper.java

@@ -0,0 +1,21 @@
+package com.supervision.web.peopleGateManage.mapper;
+
+
+import com.supervision.web.peopleGateManage.enity.PeopleInfo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface PersonMapper {
+    List<PeopleInfo> getAllPersons();
+//    List<PeopleInfo> getPersonsByDeviceId(@Param("deviceId") Long deviceId);
+
+
+    int insertPerson(PeopleInfo person);
+
+    void updatePerson(PeopleInfo person);
+
+    void deletePerson(Long id);
+}

+ 55 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/DeviceMapper.xml

@@ -0,0 +1,55 @@
+<?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.supervision.web.peopleGateManage.mapper.DeviceMapper">
+
+    <resultMap id="DeviceResultMap" type="com.supervision.web.peopleGateManage.enity.Device">
+        <id property="id" column="id"/>
+        <result property="model" column="model"/>
+        <result property="location" column="location"/>
+        <result property="ip" column="ip"/>
+        <result property="port" column="port"/>
+        <result property="account" column="account"/>
+        <result property="password" column="password"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <!-- 查询所有设备 -->
+    <select id="selectAll" resultMap="DeviceResultMap">
+        SELECT * FROM new_device ORDER BY id DESC
+    </select>
+
+    <!-- 根据ID查询 -->
+    <select id="selectById" resultMap="DeviceResultMap">
+        SELECT * FROM new_device WHERE id = #{id}
+    </select>
+
+    <!-- 插入设备 -->
+    <insert id="insert" parameterType="com.supervision.web.peopleGateManage.enity.Device" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO new_device (model, location, ip, port, account, password, create_time, update_time)
+        VALUES (#{model}, #{location}, #{ip}, #{port}, #{account}, #{password}, #{createTime}, #{updateTime})
+    </insert>
+
+    <!-- 更新设备 -->
+    <update id="update" parameterType="com.supervision.web.peopleGateManage.enity.Device">
+        UPDATE new_device
+        SET id = #{id},
+            model = #{model},
+            location = #{location},
+            ip = #{ip},
+            port = #{port},
+            account = #{account},
+            password = #{password},
+            update_time = #{updateTime}
+        WHERE id = #{id}
+    </update>
+
+    <!-- 删除设备 -->
+    <delete id="delete" parameterType="long">
+        DELETE FROM new_device WHERE id = #{id}
+    </delete>
+
+</mapper>

+ 106 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/EventLogMapper.xml

@@ -0,0 +1,106 @@
+<?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.supervision.web.peopleGateManage.mapper.EventLogMapper">
+    <resultMap id="EventLogResultMap" type="com.supervision.web.peopleGateManage.enity.EventLog">
+        <id property="id" column="id"/>
+        <result property="personId" column="person_id"/>
+        <result property="jobNumber" column="job_number"/>
+        <result property="name" column="name"/>
+        <result property="cardNumber" column="card_number"/>
+        <result property="door" column="door"/>
+        <result property="remoteHost" column="remote_host"/>
+        <result property="reader" column="reader"/>
+        <result property="detectorId" column="detector_id"/>
+        <result property="operation" column="operation"/>
+        <result property="eventType" column="event_type"/>
+        <result property="eventTime" column="event_time"/>
+        <result property="createTime" column="create_time"/>
+    </resultMap>
+
+
+    <!-- 分页查询 -->
+    <select id="selectByCondition" resultMap="EventLogResultMap">
+        SELECT *
+        FROM event_log
+        <where>
+            <if test="eventType != null and eventType != ''">
+                AND event_type = #{eventType}
+            </if>
+            <if test="personId != null and personId != ''">
+                AND person_id = #{personId}
+            </if>
+            <if test="jobNumber != null and jobNumber != ''">
+                AND job_number = #{jobNumber}
+            </if>
+            <if test="name != null and name != ''">
+                AND name LIKE CONCAT('%', #{name}, '%')
+            </if>
+            <if test="remoteHost != null and remoteHost != ''">
+                AND remote_host LIKE CONCAT('%', #{remoteHost}, '%')
+            </if>
+            <if test="reader != null and reader != ''">
+                AND reader LIKE CONCAT('%', #{reader}, '%')
+            </if>
+            <if test="detectorId != null and detectorId != ''">
+                AND detector_id = #{detectorId}
+            </if>
+            <if test="operation != null and operation != ''">
+                AND operation LIKE CONCAT('%', #{operation}, '%')
+            </if>
+<!--            <if test="startTime != null and startTime != ''">-->
+<!--                AND event_time &gt;= #{startTime}-->
+<!--            </if>-->
+<!--            <if test="endTime != null and endTime != ''">-->
+<!--                AND event_time &lt;= #{endTime}-->
+<!--            </if>-->
+            <if test="startTime != null and startTime != ''">
+                AND event_time <![CDATA[ >= ]]> #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND event_time <![CDATA[ <= ]]> #{endTime}
+            </if>
+        </where>
+        ORDER BY event_time DESC
+        LIMIT #{offset}, #{pageSize}
+    </select>
+
+    <!-- 总数查询 -->
+    <select id="countByCondition" resultType="int">
+        SELECT COUNT(*)
+        FROM event_log
+        <where>
+            <if test="eventType != null and eventType != ''">
+                AND event_type = #{eventType}
+            </if>
+            <if test="personId != null and personId != ''">
+                AND person_id = #{personId}
+            </if>
+            <if test="jobNumber != null and jobNumber != ''">
+                AND job_number = #{jobNumber}
+            </if>
+            <if test="name != null and name != ''">
+                AND name LIKE CONCAT('%', #{name}, '%')
+            </if>
+            <if test="remoteHost != null and remoteHost != ''">
+                AND remote_host LIKE CONCAT('%', #{remoteHost}, '%')
+            </if>
+            <if test="reader != null and reader != ''">
+                AND reader LIKE CONCAT('%', #{reader}, '%')
+            </if>
+            <if test="detectorId != null and detectorId != ''">
+                AND detector_id = #{detectorId}
+            </if>
+            <if test="operation != null and operation != ''">
+                AND operation LIKE CONCAT('%', #{operation}, '%')
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND event_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND event_time &lt;= #{endTime}
+            </if>
+        </where>
+    </select>
+</mapper>

+ 40 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/PeopleDeviceMapper.xml

@@ -0,0 +1,40 @@
+<?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.supervision.web.peopleGateManage.mapper.PeopleDeviceMapper">
+
+    <resultMap id="PeopleDeviceResultMap" type="com.supervision.web.peopleGateManage.enity.PeopleDevice">
+        <id property="id" column="id"/>
+        <result property="personId" column="person_id"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+    
+
+
+    <!-- 插入绑定关系 -->
+    <insert id="insertRelation" parameterType="com.supervision.web.peopleGateManage.enity.PeopleDevice" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO new_people_device (person_id, device_id, create_time, update_time)
+        VALUES (#{personId}, #{deviceId}, #{createTime}, #{updateTime})
+            ON DUPLICATE KEY UPDATE update_time = VALUES(update_time)
+    </insert>
+
+    <!-- 删除绑定关系 -->
+    <delete id="delete">
+        DELETE FROM new_people_device WHERE person_id = #{personId} AND device_id = #{deviceId}
+    </delete>
+
+    <!-- 查询某人绑定的设备 -->
+    <select id="selectDevicesByPerson" resultType="long">
+        SELECT device_id FROM new_people_device WHERE person_id = #{personId}
+    </select>
+
+    <!-- 查询某设备下的所有人员 -->
+    <select id="selectPersonsByDevice" resultType="string">
+        SELECT person_id FROM new_people_device WHERE device_id = #{deviceId}
+    </select>
+
+</mapper>

+ 45 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/PeopleFaceMapper.xml

@@ -0,0 +1,45 @@
+<?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.supervision.web.peopleGateManage.mapper.PeopleFaceMapper">
+
+    <resultMap id="PeopleFaceResultMap" type="com.supervision.web.peopleGateManage.enity.PeopleFace">
+        <id property="id" column="id"/>
+        <result property="personId" column="person_id"/>
+        <result property="jobNumber" column="job_number"/>
+        <result property="name" column="name"/>
+        <result property="faceImgUrl" column="face_img_url"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <select id="selectById" resultMap="PeopleFaceResultMap">
+        SELECT * FROM new_people_face WHERE id = #{id}
+    </select>
+
+    <select id="selectAll" resultMap="PeopleFaceResultMap">
+        SELECT * FROM new_people_face
+    </select>
+
+    <insert id="insert" parameterType="com.supervision.web.peopleGateManage.enity.PeopleFace" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO new_people_face(person_id, job_number, name, face_img_url, create_time, update_time)
+        VALUES(#{personId}, #{jobNumber}, #{name}, #{faceImgUrl}, NOW(), NOW())
+    </insert>
+
+    <update id="update" parameterType="com.supervision.web.peopleGateManage.enity.PeopleFace">
+        UPDATE new_people_face
+        SET person_id=#{personId},
+        job_number=#{jobNumber},
+        name=#{name},
+        face_img_url=#{faceImgUrl},
+        update_time=NOW()
+        WHERE id=#{id}
+    </update>
+
+    <delete id="delete" parameterType="long">
+        DELETE FROM new_people_face WHERE id = #{id}
+    </delete>
+
+</mapper>

+ 70 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/PeopleInfoMapper.xml

@@ -0,0 +1,70 @@
+<?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.supervision.web.peopleGateManage.mapper.PeopleInfoMapper">
+
+    <resultMap id="PeopleInfoResultMap" type="com.supervision.web.peopleGateManage.enity.PeopleInfo">
+        <id property="id" column="id"/>
+        <result property="personId" column="person_id"/>
+        <result property="deviceId" column="device_id"/>
+        <result property="longTerm" column="long_term"/>
+        <result property="isTemporary" column="is_temporary"/>
+        <result property="validPeriod" column="valid_period"/>
+        <result property="doorPermission" column="door_permission"/>
+        <result property="planTemplateId" column="plan_template_id"/>
+        <result property="authMethod" column="auth_method"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <select id="selectById" resultMap="PeopleInfoResultMap">
+        SELECT * FROM new_people_info WHERE id = #{id}
+    </select>
+
+    <select id="selectByIds" parameterType="java.util.List" resultMap="PeopleInfoResultMap">
+        SELECT *
+        FROM new_people_info
+        WHERE person_id IN
+        <foreach collection="personIds" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
+
+    <select id="selectAll" resultMap="PeopleInfoResultMap">
+        SELECT * FROM new_people_info
+    </select>
+    <select id="selectTotal" resultType="int">
+        SELECT COUNT(*) FROM new_people_info
+    </select>
+
+
+    <insert id="insert" parameterType="com.supervision.web.peopleGateManage.enity.PeopleInfo" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO new_people_info(person_id, name, device_id, is_temporary, long_term, valid_period, door_permission, plan_template_id, auth_method, create_time, update_time)
+        VALUES(#{personId}, #{name}, #{deviceId}, #{isTemporary}, #{longTerm}, #{validPeriod}, #{doorPermission}, #{planTemplateId}, #{authMethod}, NOW(), NOW())
+    </insert>
+
+    <update id="updatePersonId">
+        UPDATE new_people_info SET person_id = #{personId} WHERE id = #{id}
+    </update>
+
+    <update id="update" parameterType="com.supervision.web.peopleGateManage.enity.PeopleInfo">
+        UPDATE new_people_info
+        SET person_id=#{personId},
+        device_id=#{deviceId},
+        name= #{name},
+        long_term=#{longTerm},
+        valid_period=#{validPeriod},
+        door_permission=#{doorPermission},
+        plan_template_id=#{planTemplateId},
+        auth_method=#{authMethod},
+        update_time=NOW()
+        WHERE id=#{id}
+    </update>
+
+    <delete id="delete" parameterType="long">
+        DELETE FROM new_people_info WHERE id = #{id}
+    </delete>
+
+</mapper>

+ 89 - 0
supervision-admin/src/main/java/com/supervision/web/peopleGateManage/mapper/xml/PersonMapper.xml

@@ -0,0 +1,89 @@
+<?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.supervision.web.peopleGateManage.mapper.PersonMapper">
+
+    <select id="getAllPersons" resultType="com.supervision.web.peopleGateManage.enity.PeopleInfo">
+        SELECT
+        id,
+        person_id AS personId,
+        job_number AS jobNumber,
+        name,
+        long_term AS longTerm,
+        valid_period AS validPeriod,
+        door_permission AS doorPermission,
+        plan_template_id AS planTemplateId,
+        auth_method AS authMethod,
+        create_time AS createTime,
+        update_time AS updateTime
+        FROM new_people_manage;
+    </select>
+
+    <!-- 根据设备ID获取人员完整信息 -->
+<!--    <select id="getPersonsByDeviceId" resultType="com.supervision.web.peopleGateManage.enity.PeopleInfo">-->
+<!--        SELECT-->
+<!--            p.id,-->
+<!--            p.person_id AS personId,-->
+<!--            p.job_number AS jobNumber,-->
+<!--            p.name,-->
+<!--            p.long_term AS longTerm,-->
+<!--            p.valid_period AS validPeriod,-->
+<!--            p.door_permission AS doorPermission,-->
+<!--            p.plan_template_id AS planTemplateId,-->
+<!--            p.auth_method AS authMethod,-->
+<!--            p.create_time AS createTime,-->
+<!--            p.update_time AS updateTime-->
+<!--        FROM new_people_manage p-->
+<!--                 INNER JOIN new_people_device d ON p.person_id = d.person_id-->
+<!--        WHERE d.device_id = #{deviceId}-->
+<!--    </select>-->
+
+
+    <insert id="insertPerson" parameterType="com.supervision.web.peopleGateManage.enity.PeopleInfo"
+            useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO new_people_manage (
+        person_id,
+        job_number,
+        name,
+        long_term,
+        valid_period,
+        door_permission,
+        plan_template_id,
+        auth_method,
+        create_time,
+        update_time
+        ) VALUES (
+        #{personId},
+        #{jobNumber},
+        #{name},
+        #{longTerm},
+        #{validPeriod,jdbcType=TIMESTAMP},
+        #{doorPermission},
+        #{planTemplateId},
+        #{authMethod},
+        NOW(),
+        NOW()
+        )
+    </insert>
+
+    <update id="updatePerson" parameterType="com.supervision.web.peopleGateManage.enity.PeopleInfo">
+        UPDATE new_people_manage
+        SET
+        job_number = #{jobNumber},
+        name = #{name},
+        long_term = #{longTerm},
+        valid_period = #{validPeriod,jdbcType=TIMESTAMP},
+        door_permission = #{doorPermission},
+        plan_template_id = #{planTemplateId},
+        auth_method = #{authMethod},
+        update_time = NOW()
+        WHERE person_id = #{personId}
+    </update>
+
+    <delete id="deletePerson" parameterType="long">
+        DELETE FROM new_people_manage WHERE id = #{id}
+    </delete>
+
+</mapper>