Browse Source

课表模板增加提示,增加员工管理,员工锁管理

wanxl 1 year ago
parent
commit
7f55e95477
22 changed files with 1078 additions and 7 deletions
  1. 2 2
      src/main/java/com/template/AutoCode.java
  2. 41 0
      src/main/java/com/template/api/EmployeeUsersControllerAPI.java
  3. 31 0
      src/main/java/com/template/api/UnlockingEmployeeControllerAPI.java
  4. 17 1
      src/main/java/com/template/controller/ClassScheduleController.java
  5. 205 0
      src/main/java/com/template/controller/EmployeeUsersController.java
  6. 333 0
      src/main/java/com/template/controller/UnlockingEmployeeController.java
  7. 17 0
      src/main/java/com/template/mapper/EmployeeUsersMapper.java
  8. 16 0
      src/main/java/com/template/mapper/UnlockingEmployeeMapper.java
  9. 20 0
      src/main/java/com/template/model/dto/EmployeeUsersDetailsDto.java
  10. 41 0
      src/main/java/com/template/model/dto/EmployeeUsersDto.java
  11. 47 0
      src/main/java/com/template/model/dto/KeyCardEmpDto.java
  12. 44 0
      src/main/java/com/template/model/dto/KeyFingerprintEmpDto.java
  13. 1 1
      src/main/java/com/template/model/enumModel/EmunIsWeekType.java
  14. 80 0
      src/main/java/com/template/model/pojo/EmployeeUsers.java
  15. 89 0
      src/main/java/com/template/model/pojo/UnlockingEmployee.java
  16. 12 3
      src/main/java/com/template/model/vo/ClassScheduleExportVo.java
  17. 16 0
      src/main/java/com/template/services/EmployeeUsersService.java
  18. 16 0
      src/main/java/com/template/services/UnlockingEmployeeService.java
  19. 20 0
      src/main/java/com/template/services/impl/EmployeeUsersServiceImpl.java
  20. 20 0
      src/main/java/com/template/services/impl/UnlockingEmployeeServiceImpl.java
  21. 5 0
      src/main/resources/mapper/template/EmployeeUsersMapper.xml
  22. 5 0
      src/main/resources/mapper/template/UnlockingEmployeeMapper.xml

+ 2 - 2
src/main/java/com/template/AutoCode.java

@@ -28,7 +28,7 @@ public class AutoCode {
 // 1、全局配置
         GlobalConfig gc = new GlobalConfig();
         String projectPath = System.getProperty("user.dir");
-        gc.setOutputDir(projectPath + "/src/main/java");
+        gc.setOutputDir(projectPath + "/iHotel_student_houtai/src/main/java");
         gc.setAuthor("ceshi");
         gc.setOpen(false);
         gc.setFileOverride(false); // 是否覆盖
@@ -56,7 +56,7 @@ public class AutoCode {
         mpg.setPackageInfo(pc);
         //4、策略配置
         StrategyConfig strategy = new StrategyConfig();
-        strategy.setInclude("building"); // 设置要映射的表名
+        strategy.setInclude("unlocking_employee"); // 设置要映射的表名
         strategy.setNaming(NamingStrategy.underline_to_camel);//下划线转驼峰
         strategy.setColumnNaming(NamingStrategy.underline_to_camel);//下划线转驼峰
         strategy.setEntityLombokModel(true); // 自动lombok;

+ 41 - 0
src/main/java/com/template/api/EmployeeUsersControllerAPI.java

@@ -0,0 +1,41 @@
+package com.template.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.template.model.dto.EmployeeUsersDetailsDto;
+import com.template.model.dto.EmployeeUsersDto;
+import com.template.model.dto.UsersDetailsDto;
+import com.template.model.dto.UsersDto;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+@RequestMapping("/auto/employeeUsers")
+public interface EmployeeUsersControllerAPI {
+
+    @PostMapping("/saveUsers")
+    @ApiOperation(value = "添加员工", notes = "添加用户", httpMethod = "POST")
+    CommonResult saveUsers(@RequestBody EmployeeUsersDto usersDto, BindingResult bindingResult);
+
+    @GetMapping("/getUsersPage")
+    @ApiOperation(value = "用户分页", notes = "用户分页", httpMethod = "GET")
+    CommonResult getUsersPage(int adminMenuId,int page,int size,String keyWord,String startTime,String endTime);
+
+
+    @PostMapping("/updateDetails")
+    @ApiOperation(value = "用户编辑", notes = "用户编辑", httpMethod = "POST")
+    CommonResult updateDetails(@RequestBody EmployeeUsersDetailsDto employeeUsersDetailsDto, BindingResult bindingResult);
+
+    @GetMapping("/deleteUsers")
+    @ApiOperation(value = "用户删除", notes = "用户删除", httpMethod = "GET")
+    CommonResult deleteUsers(int adminMenuId,int userId);
+
+    @GetMapping("/getUser")
+    @ApiOperation(value = "通过用户id找到对应用户", notes = "通过用户id找到对应用户", httpMethod = "GET")
+    CommonResult getUser(@RequestParam String userId);
+
+    @GetMapping("/getAllUser")
+    @ApiOperation(value = "查询所有用户", notes = "查询所有用户", httpMethod = "GET")
+    CommonResult getAllUser();
+
+}

+ 31 - 0
src/main/java/com/template/api/UnlockingEmployeeControllerAPI.java

@@ -0,0 +1,31 @@
+package com.template.api;
+
+import com.template.model.dto.*;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+@RequestMapping("/auto/unlocking-employee")
+public interface UnlockingEmployeeControllerAPI {
+
+    @PostMapping("/savePassWord")
+    @ApiOperation(value = "密码管理", notes = "密码管理", httpMethod = "PSOT")
+    CommonResult savePassWord(@RequestBody KeyPassWordDto keyPassWordDto);
+
+    @PostMapping("/saveCard")
+    @ApiOperation(value = "卡片管理", notes = "卡片管理", httpMethod = "PSOT")
+    CommonResult saveCard(@RequestBody KeyCardEmpDto keyCardDto);
+
+    @PostMapping("/saveFingerprint")
+    @ApiOperation(value = "指纹管理", notes = "指纹管理", httpMethod = "PSOT")
+    CommonResult saveFingerprint(@RequestBody KeyFingerprintEmpDto keyFingerprintEmpDto);
+
+    @GetMapping("/deleteLock")
+    @ApiOperation(value = "删除锁的用户", notes = "解绑", httpMethod = "GET")
+    CommonResult deleteLock(@RequestParam Integer unlockingEmpId);
+
+    @PostMapping("/updateLock")
+    @ApiOperation(value = "修改锁的用户", notes = "修改锁的用户", httpMethod = "PSOT")
+    CommonResult updateLock(@RequestBody UpdateLockDto updateLockDto);
+
+}

+ 17 - 1
src/main/java/com/template/controller/ClassScheduleController.java

@@ -123,13 +123,29 @@ public class ClassScheduleController implements ClassScheduleAPI {
         LocalDate end = LocalDate.parse(endTime, dateTimeFormatter2);
         QueryWrapper<ClassSchedule> qw = new QueryWrapper<>();
         qw.between("date_time",stateTime,endTime);
-        qw.like("jsxm",teacherName);
+        if(teacherName!=null){
+            qw.like("jsxm",teacherName);
+        }
         List<ClassSchedule> classSchedulesList= classScheduleService.list(qw);
         List<ClassScheduleExportVo> exportVoList=new ArrayList<>();
         for(ClassSchedule classSchedule:classSchedulesList){
             ClassScheduleExportVo classScheduleExportVo=JSON.parseObject(JSON.toJSONString(classSchedule), ClassScheduleExportVo.class);
             exportVoList.add(classScheduleExportVo);
         }
+        //空数据则为模板增加导入提示
+        if(exportVoList.size()==0){
+            ClassScheduleExportVo classScheduleExportVo=new ClassScheduleExportVo();
+            classScheduleExportVo.setJsgh("示例:12004");
+            classScheduleExportVo.setRemark("请在编辑导入数据时删除此行");
+            classScheduleExportVo.setJc("示例:9-10");
+            classScheduleExportVo.setJsxm("示例:张三");
+            classScheduleExportVo.setDateTime("示例:2024-06-18");
+            classScheduleExportVo.setXq("示例:2");
+            classScheduleExportVo.setXn("示例:2023-2024");
+            classScheduleExportVo.setZj("示例:星期日");
+            classScheduleExportVo.setDjz("示例:15");
+            exportVoList.add(classScheduleExportVo);
+        }
         ExcelWriter excelWriter = null;
         try {
             response.setContentType("application/octet-stream");

+ 205 - 0
src/main/java/com/template/controller/EmployeeUsersController.java

@@ -0,0 +1,205 @@
+package com.template.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.template.api.EmployeeUsersControllerAPI;
+import com.template.model.dto.EmployeeUsersDetailsDto;
+import com.template.model.dto.EmployeeUsersDto;
+import com.template.model.dto.UsersDetailsDto;
+import com.template.model.dto.UsersDto;
+import com.template.model.pojo.EmployeeUsers;
+import com.template.model.pojo.PermissionSetting;
+import com.template.model.pojo.Users;
+import com.template.model.result.CommonResult;
+import com.template.model.vo.UsersPageVo;
+import com.template.services.EmployeeUsersService;
+import com.template.services.PermissionSettingService;
+import com.template.services.UsersService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 员工表 前端控制器
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-08-09
+ */
+@RestController
+public class EmployeeUsersController implements EmployeeUsersControllerAPI {
+
+    @Autowired
+    EmployeeUsersService employeeUsersService;
+
+    @Autowired
+    PermissionSettingService permissionSettingService;
+
+    @Override
+    public CommonResult saveUsers(EmployeeUsersDto usersDto, BindingResult bindingResult) {
+        if (ObjectUtils.isEmpty(usersDto)) {
+            return CommonResult.fail();
+        }
+        Integer permissionSettingId = usersDto.getAdminMenuId();
+        PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
+        if (ObjectUtils.isEmpty(permissionSetting)) {
+            return CommonResult.fail("非法进入");
+        }
+//      判断该用户是否拥有权限
+        String accountManagement = permissionSetting.getAccountManagement();
+        if (!"0".equals(accountManagement) && !accountManagement.contains("1")) {
+            return CommonResult.fail("此账号暂无该权限");
+        }
+
+//        通过身份证号和手机号判断是否已经添加
+        String idCard = usersDto.getIdCard();
+        String cardNumber = usersDto.getCardNumber();
+        String phone = usersDto.getPhone();
+        LambdaQueryWrapper<EmployeeUsers> wrapperU = new LambdaQueryWrapper<>();
+        wrapperU.eq(EmployeeUsers::getPhone, phone)
+                .or()
+                .eq(EmployeeUsers::getIdCard,idCard);
+        EmployeeUsers one = employeeUsersService.getOne(wrapperU);
+        if (ObjectUtils.isNotEmpty(one)) {
+            return CommonResult.fail("用户已存在");
+        }
+
+        EmployeeUsers users = new EmployeeUsers();
+//        BeanUtils.copyProperties(usersDto, users);
+        users.setUserName(usersDto.getUserName());
+        users.setDepartment(usersDto.getDepartment());
+        users.setFingerprint(usersDto.getFingerprint());
+        users.setIdCard(usersDto.getIdCard());
+        users.setIdCardInformation(usersDto.getCardNumber());
+        users.setFingerRemark(usersDto.getFingeRemark());
+        users.setPhone(usersDto.getPhone());
+        boolean save = employeeUsersService.save(users);
+        if (!save) {
+            return CommonResult.fail();
+        }
+
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult getUsersPage(int adminMenuId, int page, int size, String keyWord, String startTime, String endTime) {
+        if (ObjectUtils.isEmpty(page) || page <= 0) {
+            page = 1;
+        }
+        if (ObjectUtils.isEmpty(size) || size <= 0) {
+            size = 10;
+        }
+
+        PermissionSetting permissionSetting = permissionSettingService.getById(adminMenuId);
+        if (ObjectUtils.isEmpty(permissionSetting)) {
+            return CommonResult.fail("非法进入");
+        }
+//      判断该用户是否拥有权限
+//        String accountManagement = permissionSetting.getAccountManagement();
+//        if (!"0".equals(accountManagement) && !accountManagement.contains("4")) {
+//            return CommonResult.fail("此账号暂无该权限");
+//        }
+
+
+        LambdaQueryWrapper<EmployeeUsers> wrapperU = new LambdaQueryWrapper<>();
+        wrapperU.eq(ObjectUtils.isNotEmpty(keyWord), EmployeeUsers::getPhone, keyWord)
+                .between(ObjectUtils.isNotEmpty(startTime) && ObjectUtils.isNotEmpty(endTime), EmployeeUsers::getCreateTime, startTime, endTime)
+                .or()
+                .like(ObjectUtils.isNotEmpty(keyWord), EmployeeUsers::getUserName, keyWord)
+                .between(ObjectUtils.isNotEmpty(startTime) && ObjectUtils.isNotEmpty(endTime), EmployeeUsers::getCreateTime, startTime, endTime);
+        wrapperU.select();
+        IPage<EmployeeUsers> page1 = employeeUsersService.page(new Page<>(page, size), wrapperU);
+//        List<EmployeeUsers> records = page1.getRecords();
+//
+//        ArrayList<UsersPageVo> usersPageVos = new ArrayList<>();
+//        for (Users record : records) {
+//            UsersPageVo usersPageVo = new UsersPageVo();
+//            BeanUtils.copyProperties(record,usersPageVo);
+////            String userMenuId = record.getUserMenuId();
+////            UsersMenu byId = usersMenuService.getById(userMenuId);
+////            usersPageVo.setUserMenu(byId);
+//            usersPageVos.add(usersPageVo);
+//        }
+//
+//        Page<UsersPageVo> usersPageVoPage = new Page<>();
+//        BeanUtils.copyProperties(page1,usersPageVoPage);
+//        usersPageVoPage.setRecords(usersPageVos);
+
+        return CommonResult.ok(page1);
+    }
+
+    @Override
+    public CommonResult updateDetails(EmployeeUsersDetailsDto usersDetailsDto, BindingResult bindingResult) {
+        if (ObjectUtils.isEmpty(usersDetailsDto)) {
+            return CommonResult.fail();
+        }
+
+        int adminMenuId = usersDetailsDto.getAdminMenuId();
+        PermissionSetting permissionSetting = permissionSettingService.getById(adminMenuId);
+        if (ObjectUtils.isEmpty(permissionSetting)) {
+            return CommonResult.fail("非法进入");
+        }
+//      判断该用户是否拥有权限
+        String accountManagement = permissionSetting.getAccountManagement();
+        if (!"0".equals(accountManagement) && !accountManagement.contains("2")) {
+            return CommonResult.fail("此账号暂无该权限");
+        }
+
+        EmployeeUsers users = usersDetailsDto.getEmployeeUsers();
+        boolean update = employeeUsersService.updateById(users);
+        if (!update) {
+            return CommonResult.fail();
+        }
+
+        return CommonResult.ok();
+
+
+    }
+
+    @Override
+    public CommonResult deleteUsers(int adminMenuId, int userId) {
+        if (ObjectUtils.isEmpty(adminMenuId) || ObjectUtils.isEmpty(userId)) {
+            return CommonResult.fail("参数异常");
+        }
+
+        PermissionSetting permissionSetting = permissionSettingService.getById(adminMenuId);
+        if (ObjectUtils.isEmpty(permissionSetting)) {
+            return CommonResult.fail("非法进入");
+        }
+//      判断该用户是否拥有权限
+        String accountManagement = permissionSetting.getAccountManagement();
+        if (!"0".equals(accountManagement) && !accountManagement.contains("3")) {
+            return CommonResult.fail("此账号暂无该权限");
+        }
+
+        boolean b = employeeUsersService.removeById(userId);
+        if (!b) {
+            return CommonResult.fail();
+        }
+
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult getUser(String userId) {
+        return CommonResult.ok(employeeUsersService.getById(userId));
+    }
+
+    @Override
+    public CommonResult getAllUser() {
+        return CommonResult.ok(employeeUsersService.list(new QueryWrapper<>()));
+    }
+}
+

+ 333 - 0
src/main/java/com/template/controller/UnlockingEmployeeController.java

@@ -0,0 +1,333 @@
+package com.template.controller;
+
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.template.api.UnlockingEmployeeControllerAPI;
+import com.template.common.utils.PasswordChecker;
+import com.template.common.utils.TimeExchange;
+import com.template.model.dto.*;
+import com.template.model.pojo.*;
+import com.template.model.result.CommonResult;
+import com.template.services.*;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * <p>
+ * 员工添加钥匙 前端控制器
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-08-12
+ */
+@RestController
+public class UnlockingEmployeeController implements UnlockingEmployeeControllerAPI {
+
+    @Autowired
+    UnlockingEmployeeService unlockingEmployeeService;
+
+    @Autowired
+    PermissionSettingService permissionSettingService;
+
+    @Autowired
+    AdminService adminService;
+
+    @Autowired
+    EmployeeUsersService employeeUsersService;
+
+    @Autowired
+    HouseNumberService houseNumberService;
+
+    @Autowired
+    OperatingRecordService operatingRecordService;
+
+    @Autowired
+    PasswordIssController passwordIssController;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public CommonResult savePassWord(KeyPassWordDto keyPassWordDto) {
+        String permissionSettingId = keyPassWordDto.getPermissionSettingId();
+        PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
+        if (ObjectUtils.isEmpty(permissionSetting)) {
+            return CommonResult.fail("非法进入");
+        }
+//      判断该用户是否拥有权限
+        String houseTypeManagement = permissionSetting.getDoorLockManagement();
+        if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("11")) {
+            return CommonResult.fail("此账号暂无该权限");
+        }
+
+//        监测密码是否符合要求
+        String passWord = keyPassWordDto.getPassWord();
+        if (!PasswordChecker.isValidPassword(passWord)) {
+            return CommonResult.fail("密码长度的一半不能是连续升序、倒序、一样的数字");
+        }
+
+        Admin admin = adminService.getById(keyPassWordDto.getAdminId());
+        if (ObjectUtils.isEmpty(admin)) {
+            return CommonResult.fail("该管理员不存在");
+        }
+
+        EmployeeUsers byId = employeeUsersService.getById(keyPassWordDto.getUsersId());
+        if (ObjectUtils.isEmpty(admin)) {
+            return CommonResult.fail("添加的用户不存在");
+        }
+
+        HouseNumber houseNumber = houseNumberService.getById(keyPassWordDto.getHouseNumberId());
+        if (ObjectUtils.isEmpty(houseNumber)) {
+            return CommonResult.fail("该房间不存在");
+        }
+//        String usersId = keyPassWordDto.getUsersId();
+//        Users byId = usersService.getById(usersId);
+//        if (ObjectUtils.isEmpty(byId)) {
+//            return CommonResult.fail("无该用户");
+//        }
+        UnlockingAdmin unlockingAdmin = null;
+        UnlockingEmployee unlockingEmployee = new UnlockingEmployee();
+        /**
+         * 缺少人的名字和
+         */
+        try {
+
+            unlockingAdmin = passwordIssController.savePassWord(keyPassWordDto);
+            if (ObjectUtils.isEmpty(unlockingAdmin)) {
+                return CommonResult.fail("该密码已存在,请更换");
+            }
+
+            unlockingAdmin.setName(byId.getUserName());
+            unlockingAdmin.setPhone(byId.getPhone());
+
+//        添加操作记录
+
+            OperatingRecord operatingRecord = new OperatingRecord();
+            operatingRecord.setRoomNumber(houseNumber.getRoomNumber());
+            operatingRecord.setHouseNumberId(houseNumber.getId());
+            operatingRecord.setOperatorName(admin.getName());
+            DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            operatingRecord.setDataTime(LocalDateTime.now().format(dateTimeFormatter1));
+            operatingRecord.setContent("姓名:" + byId.getUserName());
+            operatingRecord.setType("添加员工密码钥匙");
+
+            BeanUtils.copyProperties(unlockingAdmin,unlockingEmployee);
+            unlockingEmployeeService.save(unlockingEmployee);
+            operatingRecordService.save(operatingRecord);
+            return CommonResult.ok();
+        }catch (Exception e){
+            e.printStackTrace();
+//            删除锁
+            passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
+            return CommonResult.fail();
+        }
+
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public CommonResult saveCard(KeyCardEmpDto keyCardDto) {
+        String permissionSettingId = keyCardDto.getPermissionSettingId();
+        PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
+        if (ObjectUtils.isEmpty(permissionSetting)) {
+            return CommonResult.fail("非法进入");
+        }
+//      判断该用户是否拥有权限
+        String houseTypeManagement = permissionSetting.getDoorLockManagement();
+        if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("11")) {
+            return CommonResult.fail("此账号暂无该权限");
+        }
+
+        Admin admin = adminService.getById(keyCardDto.getAdminId());
+        if (ObjectUtils.isEmpty(admin)) {
+            return CommonResult.fail("该管理员不存在");
+        }
+
+        EmployeeUsers byId = employeeUsersService.getById(keyCardDto.getUsersId());
+        if (ObjectUtils.isEmpty(admin)) {
+            return CommonResult.fail("添加的员工不存在");
+        }
+        //没传卡片id则使用用户信息身份证
+        if(!StringUtils.hasText(keyCardDto.getCard())){
+            if (!StringUtils.hasText(byId.getIdCardInformation())){
+                return CommonResult.fail("该员工没有卡片信息");
+            }else{
+                keyCardDto.setCard(byId.getIdCardInformation());
+                keyCardDto.setCardType(1);
+            }
+        }
+
+        HouseNumber houseNumber = houseNumberService.getById(keyCardDto.getHouseNumberId());
+        if (ObjectUtils.isEmpty(houseNumber)) {
+            return CommonResult.fail("该房间不存在");
+        }
+//        String usersId = keyCardDto.getUsersId();
+//        Users byId = usersService.getById(usersId);
+//        if (ObjectUtils.isEmpty(byId)) {
+//            return CommonResult.fail("无该用户");
+//        }
+
+        UnlockingAdmin unlockingAdmin = null;
+        UnlockingEmployee unlockingEmployee = new UnlockingEmployee();
+
+        try {
+            KeyCardDto keyCardDto1=new KeyCardDto();
+            BeanUtils.copyProperties(keyCardDto,keyCardDto1);
+            unlockingAdmin = passwordIssController.addCard(keyCardDto1);
+
+            unlockingAdmin.setName(byId.getUserName());
+            unlockingAdmin.setPhone(byId.getPhone());
+
+//        添加操作记录
+
+            OperatingRecord operatingRecord = new OperatingRecord();
+
+            operatingRecord.setHouseNumberId(houseNumber.getId());
+            operatingRecord.setRoomNumber(houseNumber.getRoomNumber());
+            operatingRecord.setOperatorName(admin.getName());
+            DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            operatingRecord.setDataTime(LocalDateTime.now().format(dateTimeFormatter1));
+            operatingRecord.setContent("姓名:" + byId.getUserName());
+            operatingRecord.setType("添加员工卡片钥匙");
+
+            BeanUtils.copyProperties(unlockingAdmin,unlockingEmployee);
+            unlockingEmployeeService.save(unlockingEmployee);
+            operatingRecordService.save(operatingRecord);
+            return CommonResult.ok();
+
+        }catch (Exception e){
+            e.printStackTrace();
+//            删除锁
+            passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
+            return CommonResult.fail();
+        }
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public CommonResult saveFingerprint(KeyFingerprintEmpDto keyFingerprintEmpDto) {
+        String permissionSettingId = keyFingerprintEmpDto.getPermissionSettingId();
+        PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
+        if (ObjectUtils.isEmpty(permissionSetting)) {
+            return CommonResult.fail("非法进入");
+        }
+//      判断该用户是否拥有权限
+        String houseTypeManagement = permissionSetting.getDoorLockManagement();
+        if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("11")) {
+            return CommonResult.fail("此账号暂无该权限");
+        }
+
+        Admin admin = adminService.getById(keyFingerprintEmpDto.getAdminId());
+        if (ObjectUtils.isEmpty(admin)) {
+            return CommonResult.fail("该管理员不存在");
+        }
+        EmployeeUsers byId = employeeUsersService.getById(keyFingerprintEmpDto.getUsersId());
+        if (ObjectUtils.isEmpty(admin)) {
+            return CommonResult.fail("添加的用户不存在");
+        }
+        KeyFingerprintDto keyFingerprintDto = new KeyFingerprintDto();
+        if (!StringUtils.hasText(byId.getFingerprint())){
+            return CommonResult.fail("缺少指纹,请前往员工管理添加该员工指纹");
+        }else{
+            keyFingerprintDto.setFingerprintData(byId.getFingerprint());
+        }
+
+
+        HouseNumber houseNumber = houseNumberService.getById(keyFingerprintEmpDto.getHouseNumberId());
+        if (ObjectUtils.isEmpty(houseNumber)) {
+            return CommonResult.fail("该房间不存在");
+        }
+//        String usersId = keyFingerprintDto.getUsersId();
+//        Users byId = usersService.getById(usersId);
+//        if (ObjectUtils.isEmpty(byId)) {
+//            return CommonResult.fail("无该用户");
+//        }
+
+        UnlockingAdmin unlockingAdmin = null;
+        UnlockingEmployee unlockingEmployee = new UnlockingEmployee();
+        try {
+
+            BeanUtils.copyProperties(keyFingerprintEmpDto,keyFingerprintDto);
+            unlockingAdmin = passwordIssController.addFingerprintDto(keyFingerprintDto);
+
+            unlockingAdmin.setName(byId.getUserName());
+            unlockingAdmin.setPhone(byId.getPhone());
+
+//        添加操作记录
+
+            OperatingRecord operatingRecord = new OperatingRecord();
+            operatingRecord.setHouseNumberId(houseNumber.getId());
+            operatingRecord.setRoomNumber(houseNumber.getRoomNumber());
+            operatingRecord.setOperatorName(admin.getName());
+            DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            operatingRecord.setDataTime(LocalDateTime.now().format(dateTimeFormatter1));
+            operatingRecord.setContent("姓名:" + byId.getUserName());
+            operatingRecord.setType("添加员工指纹钥匙");
+
+
+            BeanUtils.copyProperties(unlockingAdmin,unlockingEmployee);
+            unlockingEmployeeService.save(unlockingEmployee);
+            operatingRecordService.save(operatingRecord);
+            return CommonResult.ok();
+
+        }catch (Exception e){
+            e.printStackTrace();
+//            删除锁
+            passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
+            return CommonResult.fail();
+        }
+
+    }
+
+    @Override
+    public CommonResult deleteLock(Integer unlockingEmpId) {
+        UnlockingEmployee byId = unlockingEmployeeService.getById(unlockingEmpId);
+        if (ObjectUtils.isEmpty(byId)) {
+            return CommonResult.fail("不存在该记录");
+        }
+
+        String lockUserId = byId.getLockUserId();
+        String luid = byId.getLuid();
+
+        passwordIssController.deleteLockUser(luid,lockUserId);
+
+        unlockingEmployeeService.removeById(unlockingEmpId);
+
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult updateLock(UpdateLockDto updateLockDto) {
+        UnlockingEmployee byId = unlockingEmployeeService.getById(updateLockDto.getUnlockingAdminId());
+        if (ObjectUtils.isEmpty(byId)) {
+            return CommonResult.fail("不存在该记录");
+        }
+
+        String lockStatus = byId.getLockStatus();
+        if (!"1".equals(lockStatus)) {
+            return CommonResult.fail("只有密码用户才能修改时效");
+        }
+        String lockUserId = byId.getLockUserId();
+        String luid = byId.getLuid();
+        String startTime = updateLockDto.getStartTime();
+        String endTime = updateLockDto.getEndTime();
+
+        passwordIssController.updateLock(lockUserId,luid,startTime,endTime);
+
+        byId.setStartTime(startTime);
+        byId.setEndTime(endTime);
+
+        unlockingEmployeeService.updateById(byId);
+
+        return CommonResult.ok();
+    }
+
+}
+

+ 17 - 0
src/main/java/com/template/mapper/EmployeeUsersMapper.java

@@ -0,0 +1,17 @@
+package com.template.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.template.model.pojo.EmployeeUsers;
+
+/**
+ * <p>
+ * 员工表 Mapper 接口
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-08-09
+ */
+public interface EmployeeUsersMapper extends BaseMapper<EmployeeUsers> {
+
+}

+ 16 - 0
src/main/java/com/template/mapper/UnlockingEmployeeMapper.java

@@ -0,0 +1,16 @@
+package com.template.mapper;
+
+import com.template.model.pojo.UnlockingEmployee;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 员工添加钥匙 Mapper 接口
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-08-12
+ */
+public interface UnlockingEmployeeMapper extends BaseMapper<UnlockingEmployee> {
+
+}

+ 20 - 0
src/main/java/com/template/model/dto/EmployeeUsersDetailsDto.java

@@ -0,0 +1,20 @@
+package com.template.model.dto;
+
+
+import com.template.model.pojo.EmployeeUsers;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+
+@Data
+public class EmployeeUsersDetailsDto {
+
+
+    @NotNull
+    private int adminMenuId;
+
+    @NotNull
+    private EmployeeUsers employeeUsers;
+
+}

+ 41 - 0
src/main/java/com/template/model/dto/EmployeeUsersDto.java

@@ -0,0 +1,41 @@
+package com.template.model.dto;
+
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+
+@Data
+public class EmployeeUsersDto {
+
+
+    @NotNull
+    private int adminMenuId;
+
+    @NotNull
+    private String department;
+
+    @NotNull
+    private String userName;
+
+    //身份证编码
+    @NotNull
+    private String cardNumber;
+
+    //身份证号
+    @NotNull
+    private String idCard;
+
+    @NotNull
+    private String phone;
+
+    // 指纹生成的编码
+    @NotNull
+    private String fingerprint;
+
+    //指纹描述
+    @NotNull
+    private String fingeRemark;
+
+}

+ 47 - 0
src/main/java/com/template/model/dto/KeyCardEmpDto.java

@@ -0,0 +1,47 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class KeyCardEmpDto {
+    /**
+     * 锁设备ID
+     */
+    @NotNull(message = "锁设备ID不能为空")
+    public String luid;
+    /**
+     * 卡号
+     */
+    public String card;
+
+    public int cardType;
+    /**
+     * 开始时间 时间戳
+     */
+    @NotNull(message = "开始时间不能为空")
+    public String startTime;
+
+    /**
+     * 结束时间 时间戳
+     */
+    @NotNull(message = "结束时间不能为空")
+    public String endTime;
+
+    //    房间号id
+    @NotNull(message = "房间号id不能为空")
+    private String houseNumberId;
+
+    @NotNull(message = "权限表id不能为空")
+    private String permissionSettingId;
+
+    @NotNull(message = "管理员id不能为空")
+    private String adminId;
+    //    用户id
+    @NotNull(message = "用户id不能为空")
+    private String usersId;
+    //    锁用户类型状态码(1:管理员用户,2:普通用户(永久),4:时效性用户,5:一次性时效密码用户,100:时效性无网络密码用户)
+    @NotNull(message = "锁用户类型状态码不能为空")
+    private Integer type;
+}

+ 44 - 0
src/main/java/com/template/model/dto/KeyFingerprintEmpDto.java

@@ -0,0 +1,44 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class KeyFingerprintEmpDto {
+
+    /**
+     * 锁设备ID
+     */
+    @NotNull(message = "锁设备ID不能为空")
+    public String luid;
+
+    /**
+     * 开始时间 时间戳
+     */
+    @NotNull(message = "开始时间不能为空")
+    public String startTime;
+
+    /**
+     * 结束时间 时间戳
+     */
+    @NotNull(message = "结束时间不能为空")
+    public String endTime;
+
+    //    房间号id
+    @NotNull(message = "房间号id不能为空")
+    private String houseNumberId;
+
+    @NotNull(message = "权限表id不能为空")
+    private String permissionSettingId;
+
+    @NotNull(message = "管理员id不能为空")
+    private String adminId;
+    //    用户id
+    @NotNull(message = "用户id不能为空")
+    private String usersId;
+    //    锁用户类型状态码(1:管理员用户,2:普通用户(永久),4:时效性用户,5:一次性时效密码用户,100:时效性无网络密码用户)
+    @NotNull(message = "锁用户类型状态码不能为空")
+    private Integer type;
+
+}

+ 1 - 1
src/main/java/com/template/model/enumModel/EmunIsWeekType.java

@@ -31,7 +31,7 @@ public class EmunIsWeekType implements Converter<String> {
         case "7":
             return new WriteCellData("星期天");
         default:
-            return new WriteCellData("");
+            return new WriteCellData(string);
     }
     }
     @Override

+ 80 - 0
src/main/java/com/template/model/pojo/EmployeeUsers.java

@@ -0,0 +1,80 @@
+package com.template.model.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 员工表
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-08-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="EmployeeUsers对象", description="员工表")
+public class EmployeeUsers implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "用户表")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "身份类型自填")
+    private String department;
+
+    @ApiModelProperty(value = "用户名")
+    private String userName;
+
+    @ApiModelProperty(value = "身份证")
+    private String idCard;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "身份证生成后的编码")
+    private String idCardInformation;
+
+    @ApiModelProperty(value = "指纹生成后的编码")
+    private String fingerprint;
+
+    @ApiModelProperty(value = "指纹手指备注")
+    private String fingerRemark;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private String createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateTime;
+
+    @ApiModelProperty(value = "创建人员")
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @ApiModelProperty(value = "更新人员")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleted;
+
+
+}

+ 89 - 0
src/main/java/com/template/model/pojo/UnlockingEmployee.java

@@ -0,0 +1,89 @@
+package com.template.model.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 员工添加钥匙
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-08-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="UnlockingEmployee对象", description="员工添加钥匙")
+public class UnlockingEmployee implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "员工添加钥匙")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "名字")
+    private String name;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "房间号id")
+    private String houseNumberId;
+
+    @ApiModelProperty(value = "类型(1:管理员用户,2:普通用户(永久),4:时效性用户,5:一次性时效密码用户,100:时效性无网络密码用户)")
+    private String type;
+
+    @ApiModelProperty(value = "锁用户id(每次生成密码/卡片/指纹时都会产生)")
+    private String lockUserId;
+
+    @ApiModelProperty(value = "锁设备UID")
+    private String luid;
+
+    @ApiModelProperty(value = "开锁的方式(1.密码,2.卡片,3.指纹,4:身份证)")
+    private String lockStatus;
+
+    @ApiModelProperty(value = "开锁密码")
+    private String passWord;
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private String createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateTime;
+
+    @ApiModelProperty(value = "创建人员")
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @ApiModelProperty(value = "更新人员")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleted;
+
+
+}

+ 12 - 3
src/main/java/com/template/model/vo/ClassScheduleExportVo.java

@@ -2,6 +2,7 @@ package com.template.model.vo;
 
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.baomidou.mybatisplus.annotation.*;
 import com.template.model.enumModel.EmunIsWeekType;
 import io.swagger.annotations.ApiModelProperty;
@@ -25,30 +26,38 @@ public class ClassScheduleExportVo {
     @ExcelIgnore
     private Integer id;
 
+    @ColumnWidth(11)
     @ExcelProperty(value = "节次" , index = 8)
     private String jc;
 
+    @ColumnWidth(15)
     @ExcelProperty(value = "周几", index = 7,converter = EmunIsWeekType.class)
     private String zj;
 
+    @ColumnWidth(15)
     @ExcelProperty(value = "第几周", index = 6)
     private String djz;
 
     @ExcelProperty(value = "学期", index = 5)
     private String xq;
 
+    @ColumnWidth(15)
     @ExcelProperty(value = "学年", index = 4)
     private String xn;
 
-    @ExcelProperty(value = "教师姓名", index = 1)
+    @ColumnWidth(13)
+    @ExcelProperty(value = "姓名(必填)", index = 1)
     private String jsxm;
 
-    @ExcelProperty(value = "微校卡号", index = 0)
+    @ColumnWidth(12)
+    @ExcelProperty(value = "微校卡号(必填)", index = 0)
     private String jsgh;
 
-    @ExcelProperty(value = "上课日期", index = 2)
+    @ColumnWidth(17)
+    @ExcelProperty(value = "日期(必填)", index = 2)
     private String dateTime;
 
+    @ColumnWidth(30)
     @ExcelProperty(value = "备注", index = 3)
     private String remark;
 

+ 16 - 0
src/main/java/com/template/services/EmployeeUsersService.java

@@ -0,0 +1,16 @@
+package com.template.services;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.template.model.pojo.EmployeeUsers;
+
+/**
+ * <p>
+ * 员工表 服务类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-08-09
+ */
+public interface EmployeeUsersService extends IService<EmployeeUsers> {
+
+}

+ 16 - 0
src/main/java/com/template/services/UnlockingEmployeeService.java

@@ -0,0 +1,16 @@
+package com.template.services;
+
+import com.template.model.pojo.UnlockingEmployee;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 员工添加钥匙 服务类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-08-12
+ */
+public interface UnlockingEmployeeService extends IService<UnlockingEmployee> {
+
+}

+ 20 - 0
src/main/java/com/template/services/impl/EmployeeUsersServiceImpl.java

@@ -0,0 +1,20 @@
+package com.template.services.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.template.mapper.EmployeeUsersMapper;
+import com.template.model.pojo.EmployeeUsers;
+import com.template.services.EmployeeUsersService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 员工表 服务实现类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-08-09
+ */
+@Service
+public class EmployeeUsersServiceImpl extends ServiceImpl<EmployeeUsersMapper, EmployeeUsers> implements EmployeeUsersService {
+
+}

+ 20 - 0
src/main/java/com/template/services/impl/UnlockingEmployeeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.template.services.impl;
+
+import com.template.model.pojo.UnlockingEmployee;
+import com.template.mapper.UnlockingEmployeeMapper;
+import com.template.services.UnlockingEmployeeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 员工添加钥匙 服务实现类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-08-12
+ */
+@Service
+public class UnlockingEmployeeServiceImpl extends ServiceImpl<UnlockingEmployeeMapper, UnlockingEmployee> implements UnlockingEmployeeService {
+
+}

+ 5 - 0
src/main/resources/mapper/template/EmployeeUsersMapper.xml

@@ -0,0 +1,5 @@
+<?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.template.auto.mapper.EmployeeUsersMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/template/UnlockingEmployeeMapper.xml

@@ -0,0 +1,5 @@
+<?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.template.mapper.UnlockingEmployeeMapper">
+
+</mapper>