浏览代码

Merge remote-tracking branch 'origin/dev' into dev

dzx 1 年之前
父节点
当前提交
e4136444cc
共有 30 个文件被更改,包括 1612 次插入10 次删除
  1. 39 1
      src/main/java/com/xjrsoft/module/personnel/controller/FaceManagementController.java
  2. 127 0
      src/main/java/com/xjrsoft/module/personnel/controller/StundentFaceProcessController.java
  3. 120 0
      src/main/java/com/xjrsoft/module/personnel/controller/TeacherFaceProcessController.java
  4. 11 0
      src/main/java/com/xjrsoft/module/personnel/dto/AddFaceManagementDto.java
  5. 73 0
      src/main/java/com/xjrsoft/module/personnel/dto/AddStundentFaceProcessDto.java
  6. 73 0
      src/main/java/com/xjrsoft/module/personnel/dto/AddStundentFaceProcessDto.java.1715339624539.bak
  7. 73 0
      src/main/java/com/xjrsoft/module/personnel/dto/AddTeacherFaceProcessDto.java
  8. 50 0
      src/main/java/com/xjrsoft/module/personnel/dto/StundentFaceProcessPageDto.java
  9. 26 0
      src/main/java/com/xjrsoft/module/personnel/dto/StundentFaceProcessPageDto.java.1715339624538.bak
  10. 45 0
      src/main/java/com/xjrsoft/module/personnel/dto/TeacherFaceProcessPageDto.java
  11. 32 0
      src/main/java/com/xjrsoft/module/personnel/dto/UpdateStundentFaceProcessDto.java
  12. 32 0
      src/main/java/com/xjrsoft/module/personnel/dto/UpdateStundentFaceProcessDto.java.1715339624540.bak
  13. 32 0
      src/main/java/com/xjrsoft/module/personnel/dto/UpdateTeacherFaceProcessDto.java
  14. 12 0
      src/main/java/com/xjrsoft/module/personnel/entity/FaceManagement.java
  15. 123 0
      src/main/java/com/xjrsoft/module/personnel/entity/StundentFaceProcess.java
  16. 123 0
      src/main/java/com/xjrsoft/module/personnel/entity/TeacherFaceProcess.java
  17. 17 0
      src/main/java/com/xjrsoft/module/personnel/mapper/StundentFaceProcessMapper.java
  18. 17 0
      src/main/java/com/xjrsoft/module/personnel/mapper/StundentFaceProcessMapper.java.1715339624552.bak
  19. 17 0
      src/main/java/com/xjrsoft/module/personnel/mapper/TeacherFaceProcessMapper.java
  20. 17 0
      src/main/java/com/xjrsoft/module/personnel/service/IStundentFaceProcessService.java
  21. 17 0
      src/main/java/com/xjrsoft/module/personnel/service/ITeacherFaceProcessService.java
  22. 10 9
      src/main/java/com/xjrsoft/module/personnel/service/impl/FaceManagementServiceImpl.java
  23. 25 0
      src/main/java/com/xjrsoft/module/personnel/service/impl/StundentFaceProcessServiceImpl.java
  24. 25 0
      src/main/java/com/xjrsoft/module/personnel/service/impl/TeacherFaceProcessServiceImpl.java
  25. 131 0
      src/main/java/com/xjrsoft/module/personnel/vo/StundentFaceProcessPageVo.java
  26. 74 0
      src/main/java/com/xjrsoft/module/personnel/vo/StundentFaceProcessVo.java
  27. 118 0
      src/main/java/com/xjrsoft/module/personnel/vo/TeacherFaceProcessPageVo.java
  28. 74 0
      src/main/java/com/xjrsoft/module/personnel/vo/TeacherFaceProcessVo.java
  29. 29 0
      src/main/resources/sqlScript/20240510_sql.sql
  30. 50 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 39 - 1
src/main/java/com/xjrsoft/module/personnel/controller/FaceManagementController.java

@@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
@@ -20,7 +22,11 @@ import com.xjrsoft.module.personnel.dto.FaceManagementPageDto;
 import com.xjrsoft.module.personnel.dto.UpdateFaceManagementDto;
 import com.xjrsoft.module.personnel.dto.UpdateFaceManagementStatusDto;
 import com.xjrsoft.module.personnel.entity.FaceManagement;
+import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
+import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
 import com.xjrsoft.module.personnel.service.IFaceManagementService;
+import com.xjrsoft.module.personnel.service.IStundentFaceProcessService;
+import com.xjrsoft.module.personnel.service.ITeacherFaceProcessService;
 import com.xjrsoft.module.personnel.vo.FaceManagementVo;
 import com.xjrsoft.module.system.service.ICodeRuleService;
 import io.swagger.annotations.Api;
@@ -52,6 +58,8 @@ import java.util.Map;
 public class FaceManagementController {
     private final IFaceManagementService faceManagementService;
     private ICodeRuleService codeRuleService;
+    private final ITeacherFaceProcessService teacherFaceProcessService;
+    private final IStundentFaceProcessService stundentFaceProcessService;
 
     @GetMapping(value = "/page")
     @ApiOperation(value = "人脸列表(分页)")
@@ -77,6 +85,7 @@ public class FaceManagementController {
         if (faceManagement == null) {
             return RT.error("找不到此数据!");
         }
+
         return RT.ok(BeanUtil.toBean(faceManagement, FaceManagementVo.class));
     }
 
@@ -84,10 +93,32 @@ public class FaceManagementController {
     @ApiOperation(value = "根据当前用户查询人脸信息")
     @SaCheckPermission("facemanager:detail")
     public RT<FaceManagementVo> detail() {
-        FaceManagement faceManagement = faceManagementService.getOneDeep(Wrappers.lambdaQuery(FaceManagement.class).eq(FaceManagement::getUserId, StpUtil.getLoginIdAsLong()));
+        FaceManagement faceManagement = faceManagementService.getOneDeep(Wrappers.lambdaQuery(FaceManagement.class).eq(FaceManagement::getDeleteMark, DeleteMark.NODELETE.getCode()).eq(FaceManagement::getUserId, StpUtil.getLoginIdAsLong()));
         if (faceManagement == null) {
             return RT.error("找不到此数据!");
         }
+        faceManagement.setVerifyStatus(1);
+        if(faceManagement.getUserType()==1) {
+            // 查询 teacher_face_process 审核通过
+            MPJLambdaWrapper<TeacherFaceProcess> queryWrapper = new MPJLambdaWrapper<>();
+            queryWrapper.eq(TeacherFaceProcess::getUserId, faceManagement.getUserId())
+                    .eq(TeacherFaceProcess::getFacePhoto, faceManagement.getFileId())
+                    .eq(TeacherFaceProcess::getStatus, 1);
+            if (teacherFaceProcessService.count(queryWrapper) > 0) {
+                faceManagement.setVerifyStatus(2);
+            }
+        }
+
+        if(faceManagement.getUserType()==2){
+            // 查询 teacher_face_process 审核通过
+            MPJLambdaWrapper<StundentFaceProcess> queryWrapper = new MPJLambdaWrapper<>();
+            queryWrapper.eq(StundentFaceProcess::getUserId, faceManagement.getUserId())
+                    .eq(StundentFaceProcess::getFacePhoto, faceManagement.getFileId())
+                    .eq(StundentFaceProcess::getStatus, 1);
+            if (stundentFaceProcessService.count(queryWrapper) > 0) {
+                faceManagement.setVerifyStatus(2);
+            }
+        }
         return RT.ok(BeanUtil.toBean(faceManagement, FaceManagementVo.class));
     }
 
@@ -138,6 +169,13 @@ public class FaceManagementController {
         return RT.ok(faceManagementService.delete(ids));
     }
 
+    @DeleteMapping("/delete")
+    @ApiOperation(value = "删除")
+    @SaCheckPermission("facemanager:delete-current")
+    public RT<Boolean> delete() {
+        return RT.ok(faceManagementService.remove(Wrappers.<FaceManagement>query().lambda().eq(FaceManagement::getUserId,StpUtil.getLoginIdAsLong())));
+    }
+
     // 图片处理
     public String ImageHandler(@NotNull MultipartFile file) throws IOException {
         String filename = file.getOriginalFilename();

+ 127 - 0
src/main/java/com/xjrsoft/module/personnel/controller/StundentFaceProcessController.java

@@ -0,0 +1,127 @@
+package com.xjrsoft.module.personnel.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.toolkit.MPJWrappers;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.personnel.dto.AddStundentFaceProcessDto;
+import com.xjrsoft.module.personnel.dto.UpdateStundentFaceProcessDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.personnel.dto.StundentFaceProcessPageDto;
+import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
+import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
+import com.xjrsoft.module.personnel.service.IStundentFaceProcessService;
+import com.xjrsoft.module.personnel.vo.StundentFaceProcessPageVo;
+
+import com.xjrsoft.module.personnel.vo.StundentFaceProcessVo;
+import com.xjrsoft.module.personnel.vo.TeacherFaceProcessPageVo;
+import com.xjrsoft.module.student.entity.BaseStudent;
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
+import com.xjrsoft.module.system.entity.DictionaryDetail;
+import com.xjrsoft.module.system.entity.File;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+* @title: 学生人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/personnel" + "/stundentFaceProcess")
+@Api(value = "/personnel"  + "/stundentFaceProcess",tags = "学生人脸信息审核代码")
+@AllArgsConstructor
+public class StundentFaceProcessController {
+
+
+    private final IStundentFaceProcessService stundentFaceProcessService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="学生人脸信息审核列表(分页)")
+    @SaCheckPermission("stundentfaceprocess:detail")
+    public RT<PageOutput<StundentFaceProcessPageVo>> page(@Valid StundentFaceProcessPageDto dto){
+
+        IPage<StundentFaceProcessPageVo> page=stundentFaceProcessService.selectJoinListPage(ConventPage.getPage(dto),StundentFaceProcessPageVo.class,
+                MPJWrappers.<StundentFaceProcess>lambdaJoin()
+                        .orderByDesc(StundentFaceProcess::getId)
+                        .disableSubLogicDel()
+                        .like(StrUtil.isNotBlank(dto.getName()), XjrUser::getName,dto.getName())
+                        .eq(StrUtil.isNotBlank(dto.getStduyStatus()),BaseStudentSchoolRoll::getStduyStatus,dto.getStduyStatus())
+                        .like(StrUtil.isNotBlank(dto.getMobile()),XjrUser::getMobile,dto.getMobile())
+                        .like(StrUtil.isNotBlank(dto.getStudentId()),BaseStudent::getStudentId,dto.getStudentId())
+                        .eq(ObjectUtil.isNotNull(dto.getClassId())&&dto.getClassId()!=0,StundentFaceProcess::getClassId,dto.getClassId())
+                        .select(StundentFaceProcess::getId,StundentFaceProcess::getUserId,StundentFaceProcess::getClassId,StundentFaceProcess::getFacePhoto)
+                        .innerJoin(XjrUser.class,XjrUser::getId, StundentFaceProcess::getUserId)
+                        .leftJoin(File.class,File::getFolderId,StundentFaceProcess::getFacePhoto)
+                        .leftJoin(DictionaryDetail.class,DictionaryDetail::getCode,StundentFaceProcess::getGender, ext->ext.selectAs(DictionaryDetail::getName, StundentFaceProcessPageVo::getGender))
+                        .leftJoin(BaseStudentSchoolRoll.class,BaseStudentSchoolRoll::getUserId,StundentFaceProcess::getUserId)
+                        .leftJoin(DictionaryDetail.class,DictionaryDetail::getCode,BaseStudentSchoolRoll::getStduyStatus, ext->ext.selectAs(DictionaryDetail::getName, StundentFaceProcessPageVo::getStduyStatus))
+                        .leftJoin(BaseClass.class,BaseClass::getId,BaseStudentSchoolRoll::getClassId,ext->ext.selectAs(BaseClass::getName,StundentFaceProcessPageVo::getClassCn))
+                        .leftJoin(XjrUser.class,XjrUser::getId,StundentFaceProcess::getTeacherId, ext->ext.selectAs(XjrUser::getName, StundentFaceProcessPageVo::getTeacherCn))
+                        .selectAs(XjrUser::getName,StundentFaceProcess::getName)
+                        .select("t2.file_url AS face_photo_url,t1.user_name AS user_name,t1.mobile")
+                        .leftJoin(BaseStudent.class,BaseStudent::getUserId,StundentFaceProcess::getUserId, ext->ext.selectAs(BaseStudent::getStudentId, StundentFaceProcessPageVo::getStudentId))
+        );
+        PageOutput<StundentFaceProcessPageVo> pageOutput = ConventPage.getPageOutput(page, StundentFaceProcessPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询学生人脸信息审核信息")
+    @SaCheckPermission("stundentfaceprocess:detail")
+    public RT<StundentFaceProcessVo> info(@RequestParam Long id){
+        StundentFaceProcess stundentFaceProcess = stundentFaceProcessService.getById(id);
+        if (stundentFaceProcess == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(stundentFaceProcess, StundentFaceProcessVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增学生人脸信息审核")
+    @SaCheckPermission("stundentfaceprocess:add")
+    public RT<Boolean> add(@Valid @RequestBody AddStundentFaceProcessDto dto){
+        StundentFaceProcess stundentFaceProcess = BeanUtil.toBean(dto, StundentFaceProcess.class);
+        boolean isSuccess = stundentFaceProcessService.save(stundentFaceProcess);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改学生人脸信息审核")
+    @SaCheckPermission("stundentfaceprocess:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateStundentFaceProcessDto dto){
+
+        StundentFaceProcess stundentFaceProcess = BeanUtil.toBean(dto, StundentFaceProcess.class);
+        return RT.ok(stundentFaceProcessService.updateById(stundentFaceProcess));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除学生人脸信息审核")
+    @SaCheckPermission("stundentfaceprocess:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(stundentFaceProcessService.removeBatchByIds(ids));
+
+    }
+
+}

+ 120 - 0
src/main/java/com/xjrsoft/module/personnel/controller/TeacherFaceProcessController.java

@@ -0,0 +1,120 @@
+package com.xjrsoft.module.personnel.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.toolkit.MPJWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.personnel.dto.AddTeacherFaceProcessDto;
+import com.xjrsoft.module.personnel.dto.UpdateTeacherFaceProcessDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.personnel.dto.TeacherFaceProcessPageDto;
+import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
+import com.xjrsoft.module.personnel.service.ITeacherFaceProcessService;
+import com.xjrsoft.module.personnel.vo.TeacherFaceProcessPageVo;
+
+import com.xjrsoft.module.personnel.vo.TeacherFaceProcessVo;
+import com.xjrsoft.module.system.entity.DictionaryDetail;
+import com.xjrsoft.module.system.entity.File;
+import com.xjrsoft.module.teacher.entity.BaseTeacher;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+* @title: 人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/personnel" + "/teacherFaceProcess")
+@Api(value = "/personnel"  + "/teacherFaceProcess",tags = "人脸信息审核代码")
+@AllArgsConstructor
+public class TeacherFaceProcessController {
+
+
+    private final ITeacherFaceProcessService teacherFaceProcessService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="人脸信息审核列表(分页)")
+    @SaCheckPermission("teacherfaceprocess:detail")
+    public RT<PageOutput<TeacherFaceProcessPageVo>> page(@Valid TeacherFaceProcessPageDto dto){
+
+        IPage<TeacherFaceProcessPageVo> page=teacherFaceProcessService.selectJoinListPage(ConventPage.getPage(dto),TeacherFaceProcessPageVo.class,
+                MPJWrappers.<TeacherFaceProcess>lambdaJoin()
+                        .orderByDesc(TeacherFaceProcess::getId)
+                        .disableSubLogicDel()
+                        .like(StrUtil.isNotBlank(dto.getName()),XjrUser::getName,dto.getName())
+                        .like(StrUtil.isNotBlank(dto.getUserName()),XjrUser::getUserName,dto.getUserName())
+                        .like(StrUtil.isNotBlank(dto.getMobile()),XjrUser::getMobile,dto.getMobile())
+                        .eq(ObjectUtil.isNotNull(dto.getDepId())&&dto.getDepId()!=0,TeacherFaceProcess::getDepId,dto.getDepId())
+                        .select(TeacherFaceProcess::getId,TeacherFaceProcess::getUserId,TeacherFaceProcess::getDepId,TeacherFaceProcess::getFacePhoto)
+                        .innerJoin(XjrUser.class,XjrUser::getId, TeacherFaceProcess::getUserId)
+                        .leftJoin(File.class,File::getFolderId,TeacherFaceProcess::getFacePhoto)
+                        .leftJoin(DictionaryDetail.class,DictionaryDetail::getCode,TeacherFaceProcess::getGender, ext->ext.selectAs(DictionaryDetail::getName, TeacherFaceProcessPageVo::getGender))
+                        .selectAs(XjrUser::getName,TeacherFaceProcessPageVo::getName)
+                        .select("t2.file_url AS face_photo_url,t1.user_name AS user_name,t1.mobile")
+        );
+
+        PageOutput<TeacherFaceProcessPageVo> pageOutput = ConventPage.getPageOutput(page, TeacherFaceProcessPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询人脸信息审核信息")
+    @SaCheckPermission("teacherfaceprocess:detail")
+    public RT<TeacherFaceProcessVo> info(@RequestParam Long id){
+        TeacherFaceProcess teacherFaceProcess = teacherFaceProcessService.getById(id);
+        if (teacherFaceProcess == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(teacherFaceProcess, TeacherFaceProcessVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增人脸信息审核")
+    @SaCheckPermission("teacherfaceprocess:add")
+    public RT<Boolean> add(@Valid @RequestBody AddTeacherFaceProcessDto dto){
+        TeacherFaceProcess teacherFaceProcess = BeanUtil.toBean(dto, TeacherFaceProcess.class);
+        boolean isSuccess = teacherFaceProcessService.save(teacherFaceProcess);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改人脸信息审核")
+    @SaCheckPermission("teacherfaceprocess:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateTeacherFaceProcessDto dto){
+
+        TeacherFaceProcess teacherFaceProcess = BeanUtil.toBean(dto, TeacherFaceProcess.class);
+        return RT.ok(teacherFaceProcessService.updateById(teacherFaceProcess));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除人脸信息审核")
+    @SaCheckPermission("teacherfaceprocess:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(teacherFaceProcessService.removeBatchByIds(ids));
+
+    }
+
+}

+ 11 - 0
src/main/java/com/xjrsoft/module/personnel/dto/AddFaceManagementDto.java

@@ -55,4 +55,15 @@ public class AddFaceManagementDto {
      */
     @ApiModelProperty("状态 1=启用 2=禁用")
     private Integer status;
+    /**
+     * 文件ID(xjr_file)
+     */
+    @ApiModelProperty("文件ID(xjr_file)")
+    private Long fileId;
+
+    /**
+     * 用户类型 1 教职工 2 学生
+     */
+    @ApiModelProperty("用户类型 1 教职工 2 学生")
+    private Long userType;
 }

+ 73 - 0
src/main/java/com/xjrsoft/module/personnel/dto/AddStundentFaceProcessDto.java

@@ -0,0 +1,73 @@
+package com.xjrsoft.module.personnel.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 学生人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+public class AddStundentFaceProcessDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String name;
+    /**
+    * 班级id
+    */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String classCn;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+    * 人脸照片
+    */
+    @ApiModelProperty("人脸照片")
+    private Long facePhoto;
+    /**
+    * 状态(0:未结束 1:结束)
+    */
+    @ApiModelProperty("状态(0:未结束 1:结束)")
+    private Integer status;
+    /**
+    * 班主任id
+    */
+    @ApiModelProperty("班主任id")
+    private Long teacherId;
+
+}

+ 73 - 0
src/main/java/com/xjrsoft/module/personnel/dto/AddStundentFaceProcessDto.java.1715339624539.bak

@@ -0,0 +1,73 @@
+package com.xjrsoft.module.personnel.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 学生人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+public class AddStundentFaceProcessDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String name;
+    /**
+    * 班级id
+    */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String classCn;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+    * 人脸照片
+    */
+    @ApiModelProperty("人脸照片")
+    private Long facePhoto;
+    /**
+    * 状态(0:未结束 1:结束)
+    */
+    @ApiModelProperty("状态(0:未结束 1:结束)")
+    private Integer status;
+    /**
+    * 班主任id
+    */
+    @ApiModelProperty("班主任id")
+    private Long teacherId;
+
+}

+ 73 - 0
src/main/java/com/xjrsoft/module/personnel/dto/AddTeacherFaceProcessDto.java

@@ -0,0 +1,73 @@
+package com.xjrsoft.module.personnel.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+public class AddTeacherFaceProcessDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String name;
+    /**
+    * 部门id
+    */
+    @ApiModelProperty("部门id")
+    private Long depId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String depCn;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+    * 人脸照片
+    */
+    @ApiModelProperty("人脸照片")
+    private Long facePhoto;
+    /**
+    * 状态(0:未结束 1:结束)
+    */
+    @ApiModelProperty("状态(0:未结束 1:结束)")
+    private Integer status;
+    /**
+    * 部门主任id
+    */
+    @ApiModelProperty("部门主任id")
+    private Long depUserId;
+
+}

+ 50 - 0
src/main/java/com/xjrsoft/module/personnel/dto/StundentFaceProcessPageDto.java

@@ -0,0 +1,50 @@
+package com.xjrsoft.module.personnel.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 学生人脸信息审核分页查询入参
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class StundentFaceProcessPageDto extends PageInput {
+
+    /**
+     * 班级
+     */
+    @ApiModelProperty("班级")
+    private Long ClassId;
+    /**
+     * 姓名
+     */
+    @ApiModelProperty("姓名")
+    private String name;
+    /**
+     * 学号
+     */
+    @ApiModelProperty("学号")
+    private String studentId;
+    /**
+     * 手机号
+     */
+    @ApiModelProperty("手机号")
+    private String mobile;
+    /**
+     * 就读方式
+     */
+    @ApiModelProperty("就读方式")
+    private String stduyStatus;
+}

+ 26 - 0
src/main/java/com/xjrsoft/module/personnel/dto/StundentFaceProcessPageDto.java.1715339624538.bak

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.personnel.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 学生人脸信息审核分页查询入参
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class StundentFaceProcessPageDto extends PageInput {
+
+
+}

+ 45 - 0
src/main/java/com/xjrsoft/module/personnel/dto/TeacherFaceProcessPageDto.java

@@ -0,0 +1,45 @@
+package com.xjrsoft.module.personnel.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 人脸信息审核分页查询入参
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TeacherFaceProcessPageDto extends PageInput {
+
+    /**
+     * 部门id
+     */
+    @ApiModelProperty("部门id")
+    private Long depId;
+    /**
+     * 姓名
+     */
+    @ApiModelProperty("姓名")
+    private String name;
+    /**
+     * 账户
+     */
+    @ApiModelProperty("账户")
+    private String userName;
+    /**
+     * 手机号
+     */
+    @ApiModelProperty("手机号")
+    private String mobile;
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/personnel/dto/UpdateStundentFaceProcessDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.personnel.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 学生人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+public class UpdateStundentFaceProcessDto extends AddStundentFaceProcessDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/personnel/dto/UpdateStundentFaceProcessDto.java.1715339624540.bak

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.personnel.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 学生人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+public class UpdateStundentFaceProcessDto extends AddStundentFaceProcessDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/personnel/dto/UpdateTeacherFaceProcessDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.personnel.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+public class UpdateTeacherFaceProcessDto extends AddTeacherFaceProcessDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+}

+ 12 - 0
src/main/java/com/xjrsoft/module/personnel/entity/FaceManagement.java

@@ -88,4 +88,16 @@ public class FaceManagement  extends AuditEntity implements Serializable {
      */
     @ApiModelProperty("验证失败说明")
     private String verifyErrorMsg;
+
+    /**
+     * 文件ID(xjr_file)
+     */
+    @ApiModelProperty("文件ID(xjr_file)")
+    private Long fileId;
+
+    /**
+     * 用户类型 1 教职工 2 学生
+     */
+    @ApiModelProperty("用户类型 1 教职工 2 学生")
+    private Long userType;
 }

+ 123 - 0
src/main/java/com/xjrsoft/module/personnel/entity/StundentFaceProcess.java

@@ -0,0 +1,123 @@
+package com.xjrsoft.module.personnel.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 学生人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+@TableName("stundent_face_process")
+@ApiModel(value = "stundent_face_process", description = "学生人脸信息审核")
+public class StundentFaceProcess implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人id
+    */
+    @ApiModelProperty("修改人id")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String name;
+    /**
+    * 班级id
+    */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String classCn;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+    * 人脸照片
+    */
+    @ApiModelProperty("人脸照片")
+    private Long facePhoto;
+    /**
+    * 状态(0:未结束 1:结束)
+    */
+    @ApiModelProperty("状态(0:未结束 1:结束)")
+    private Integer status;
+    /**
+    * 班主任id
+    */
+    @ApiModelProperty("班主任id")
+    private Long teacherId;
+
+
+}

+ 123 - 0
src/main/java/com/xjrsoft/module/personnel/entity/TeacherFaceProcess.java

@@ -0,0 +1,123 @@
+package com.xjrsoft.module.personnel.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+@TableName("teacher_face_process")
+@ApiModel(value = "teacher_face_process", description = "人脸信息审核")
+public class TeacherFaceProcess implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人id
+    */
+    @ApiModelProperty("修改人id")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String name;
+    /**
+    * 部门id
+    */
+    @ApiModelProperty("部门id")
+    private Long depId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String depCn;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+    * 人脸照片
+    */
+    @ApiModelProperty("人脸照片")
+    private Long facePhoto;
+    /**
+    * 状态(0:未结束 1:结束)
+    */
+    @ApiModelProperty("状态(0:未结束 1:结束)")
+    private Integer status;
+    /**
+    * 部门主任id
+    */
+    @ApiModelProperty("部门主任id")
+    private Long depUserId;
+
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/personnel/mapper/StundentFaceProcessMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.personnel.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 学生人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Mapper
+public interface StundentFaceProcessMapper extends MPJBaseMapper<StundentFaceProcess> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/personnel/mapper/StundentFaceProcessMapper.java.1715339624552.bak

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.personnel.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 学生人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Mapper
+public interface StundentFaceProcessMapper extends MPJBaseMapper<StundentFaceProcess> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/personnel/mapper/TeacherFaceProcessMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.personnel.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Mapper
+public interface TeacherFaceProcessMapper extends MPJBaseMapper<TeacherFaceProcess> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/personnel/service/IStundentFaceProcessService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.personnel.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 学生人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+
+public interface IStundentFaceProcessService extends MPJBaseService<StundentFaceProcess> {
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/personnel/service/ITeacherFaceProcessService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.personnel.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+
+public interface ITeacherFaceProcessService extends MPJBaseService<TeacherFaceProcess> {
+}

+ 10 - 9
src/main/java/com/xjrsoft/module/personnel/service/impl/FaceManagementServiceImpl.java

@@ -36,18 +36,19 @@ public class FaceManagementServiceImpl extends MPJBaseServiceImpl<FaceManagement
             throw new MyException(String.format("人脸编码【%s】已存在!", faceManagement.getFaceCode()));
         }
 
+        faceManagement.setVerifyStatus(2); // 自动通过
         faceManagementMapper.insert(faceManagement);
 
         // 推送数据客户端
-        JSONObject jsonObject = JSONUtil.createObj()
-                .put("id", faceManagement.getId().toString())
-                .put("register_base64", ImageUtil.base64RemovePrefix(faceManagement.getRegisterBase64()));
-
-        try {
-            emqClient.publish("/face/device/personnel/image/verify", jsonObject);
-        } catch (MqttException e) {
-            log.error("mqtt", "publish", "/face/device/personnel/image/verify", e.getMessage());
-        }
+//        JSONObject jsonObject = JSONUtil.createObj()
+//                .put("id", faceManagement.getId().toString())
+//                .put("register_base64", ImageUtil.base64RemovePrefix(faceManagement.getRegisterBase64()));
+//
+//        try {
+//            emqClient.publish("/face/device/personnel/image/verify", jsonObject);
+//        } catch (MqttException e) {
+//            log.error("mqtt", "publish", "/face/device/personnel/image/verify", e.getMessage());
+//        }
 
         return true;
     }

+ 25 - 0
src/main/java/com/xjrsoft/module/personnel/service/impl/StundentFaceProcessServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.personnel.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
+import com.xjrsoft.module.personnel.mapper.StundentFaceProcessMapper;
+import com.xjrsoft.module.personnel.service.IStundentFaceProcessService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 学生人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class StundentFaceProcessServiceImpl extends MPJBaseServiceImpl<StundentFaceProcessMapper, StundentFaceProcess> implements IStundentFaceProcessService {
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/personnel/service/impl/TeacherFaceProcessServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.personnel.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
+import com.xjrsoft.module.personnel.mapper.TeacherFaceProcessMapper;
+import com.xjrsoft.module.personnel.service.ITeacherFaceProcessService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 人脸信息审核
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class TeacherFaceProcessServiceImpl extends MPJBaseServiceImpl<TeacherFaceProcessMapper, TeacherFaceProcess> implements ITeacherFaceProcessService {
+}

+ 131 - 0
src/main/java/com/xjrsoft/module/personnel/vo/StundentFaceProcessPageVo.java

@@ -0,0 +1,131 @@
+package com.xjrsoft.module.personnel.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 学生人脸信息审核分页列表出参
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+public class StundentFaceProcessPageVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人id
+    */
+    @ApiModelProperty("修改人id")
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    private Integer enabledMark;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String name;
+    /**
+    * 班级id
+    */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String classCn;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+    * 人脸照片
+    */
+    @ApiModelProperty("人脸照片")
+    private Long facePhoto;
+    /**
+    * 状态(0:未结束 1:结束)
+    */
+    @ApiModelProperty("状态(0:未结束 1:结束)")
+    private Integer status;
+    /**
+    * 班主任id
+    */
+    @ApiModelProperty("班主任id")
+    private Long teacherId;
+
+    /**
+     * 班主任
+     */
+    @ApiModelProperty("班主任")
+    private String teacherCn;
+
+    /**
+     * 手机号
+     */
+    @ApiModelProperty("手机号")
+    private String mobile;
+    /**
+     * 人脸照片地址
+     */
+    @ApiModelProperty("人脸照片地址")
+    private String facePhotoUrl;
+
+    /**
+     * 就读方式
+     */
+    @ApiModelProperty("就读方式")
+    private String stduyStatus;
+    /**
+     * 学号
+     */
+    @ApiModelProperty("学号")
+    private String studentId;
+}

+ 74 - 0
src/main/java/com/xjrsoft/module/personnel/vo/StundentFaceProcessVo.java

@@ -0,0 +1,74 @@
+package com.xjrsoft.module.personnel.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 学生人脸信息审核表单出参
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+public class StundentFaceProcessVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String name;
+    /**
+    * 班级id
+    */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String classCn;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+    * 人脸照片
+    */
+    @ApiModelProperty("人脸照片")
+    private Long facePhoto;
+    /**
+    * 状态(0:未结束 1:结束)
+    */
+    @ApiModelProperty("状态(0:未结束 1:结束)")
+    private Integer status;
+    /**
+    * 班主任id
+    */
+    @ApiModelProperty("班主任id")
+    private Long teacherId;
+
+
+
+}

+ 118 - 0
src/main/java/com/xjrsoft/module/personnel/vo/TeacherFaceProcessPageVo.java

@@ -0,0 +1,118 @@
+package com.xjrsoft.module.personnel.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 人脸信息审核分页列表出参
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+public class TeacherFaceProcessPageVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人id
+    */
+    @ApiModelProperty("修改人id")
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    private Integer enabledMark;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String name;
+    /**
+    * 部门id
+    */
+    @ApiModelProperty("部门id")
+    private Long depId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String depCn;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+    * 人脸照片
+    */
+    @ApiModelProperty("人脸照片")
+    private Long facePhoto;
+    /**
+    * 状态(0:未结束 1:结束)
+    */
+    @ApiModelProperty("状态(0:未结束 1:结束)")
+    private Integer status;
+    /**
+    * 部门主任id
+    */
+    @ApiModelProperty("部门主任id")
+    private Long depUserId;
+    /**
+     * 工号
+     */
+    @ApiModelProperty("工号")
+    private String userName;
+    /**
+     * 手机号
+     */
+    @ApiModelProperty("手机号")
+    private String mobile;
+    /**
+     * 人脸照片地址
+     */
+    @ApiModelProperty("人脸照片地址")
+    private String facePhotoUrl;
+}

+ 74 - 0
src/main/java/com/xjrsoft/module/personnel/vo/TeacherFaceProcessVo.java

@@ -0,0 +1,74 @@
+package com.xjrsoft.module.personnel.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 人脸信息审核表单出参
+* @Author dzx
+* @Date: 2024-05-10
+* @Version 1.0
+*/
+@Data
+public class TeacherFaceProcessVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String name;
+    /**
+    * 部门id
+    */
+    @ApiModelProperty("部门id")
+    private Long depId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String depCn;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String identityCard;
+    /**
+    * 人脸照片
+    */
+    @ApiModelProperty("人脸照片")
+    private Long facePhoto;
+    /**
+    * 状态(0:未结束 1:结束)
+    */
+    @ApiModelProperty("状态(0:未结束 1:结束)")
+    private Integer status;
+    /**
+    * 部门主任id
+    */
+    @ApiModelProperty("部门主任id")
+    private Long depUserId;
+
+
+
+}

+ 29 - 0
src/main/resources/sqlScript/20240510_sql.sql

@@ -0,0 +1,29 @@
+-- ----------------------------
+-- 人脸管理
+-- ----------------------------
+DROP TABLE IF EXISTS `base_face_management`;
+CREATE TABLE `base_face_management`  (
+    `id` bigint NOT NULL COMMENT '主键',
+    `create_user_id` bigint NULL DEFAULT NULL COMMENT '创建人',
+    `create_date` date NULL DEFAULT NULL COMMENT '创建时间',
+    `modify_user_id` bigint NULL DEFAULT NULL COMMENT '修改人',
+    `modify_date` date NULL DEFAULT NULL COMMENT '修改时间',
+    `delete_mark` int NOT NULL COMMENT '删除标记',
+    `enabled_mark` int NOT NULL COMMENT '有效标志',
+    `user_id` bigint COMMENT '用户(xjr_user)',
+    `face_code` varchar(50) not null default '' COMMENT '人脸编码',
+    `name` varchar(50) not null default '' COMMENT '姓名',
+    `sex` varchar(10) not null default '' COMMENT '性别 男, 女',
+    `idno` varchar(20) not null default '' COMMENT '身份证号',
+    `people_start_date` datetime COMMENT '名单有效期开始时间',
+    `people_end_date` datetime COMMENT '名单有效期结束时间',
+    `icno` varchar(20) not null default '' COMMENT ' ic卡号(10位10进制)',
+    `register_base64` mediumblob COMMENT '图片的base64字符串',
+    `verify_status` tinyint(4) unsigned default 1 not null COMMENT '验证状态 1=未验证 2=通过 3=失败',
+    `verify_error_msg` varchar(200) not null default '' COMMENT '验证失败说明',
+    `sync_status` tinyint(4) unsigned default 1 not null COMMENT '数据同步状态 1=未同步 2=已同步 3=同步失败',
+    `status` tinyint(4) unsigned default 1 not null COMMENT '状态 1=启用 2=禁用',
+    `file_id` bigint NULL DEFAULT NULL COMMENT '文件ID(xjr_file)',
+    `user_type` bigint NULL DEFAULT NULL COMMENT '用户类型 1 教职工 2 学生',
+    PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '人脸管理' ROW_FORMAT = Dynamic;

+ 50 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -2942,4 +2942,54 @@ public class FreeMarkerGeneratorTest {
 
         apiGeneratorService.generateCodes(params);
     }
+
+    @Test
+    public void gcFaceTeacherManage() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("teacher_face_process");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("personnel");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcFaceStudentManage() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("stundent_face_process");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("personnel");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }