|
|
@@ -0,0 +1,240 @@
|
|
|
+package com.template.controller;
|
|
|
+
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.template.api.TotalPassWordControllerAPI;
|
|
|
+import com.template.common.utils.PasswordChecker;
|
|
|
+import com.template.model.dto.KeyCardDto;
|
|
|
+import com.template.model.dto.KeyPassWordDto;
|
|
|
+import com.template.model.dto.TotalPassWordDto;
|
|
|
+import com.template.model.pojo.*;
|
|
|
+import com.template.model.result.CommonResult;
|
|
|
+import com.template.model.result.PageUtils;
|
|
|
+import com.template.model.vo.TotalCardPageVo;
|
|
|
+import com.template.model.vo.TotalPassWordPageVo;
|
|
|
+import com.template.services.*;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 前端控制器
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author ceshi
|
|
|
+ * @since 2025-05-09
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+public class TotalPassWordController implements TotalPassWordControllerAPI {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ TotalPassWordService totalPassWordService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ UnlockingEmployeeService unlockingEmployeeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ PasswordIssController passwordIssController;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ BuildingService buildingService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ HouseNumberService houseNumberService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ HouseLockService houseLockService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ EmployeeUsersService employeeUsersService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ OperatingRecordService operatingRecordService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ AdminService adminService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult saveEmployeeTotalPassWord(TotalPassWordDto totalPassWordDto) {
|
|
|
+ Integer adminId = totalPassWordDto.getAdminId();
|
|
|
+
|
|
|
+ Admin admin = adminService.getById(adminId);
|
|
|
+ if (ObjectUtils.isEmpty(admin)) {
|
|
|
+ return CommonResult.fail("该管理员不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 监测密码是否符合要求
|
|
|
+ String passWord = totalPassWordDto.getPassWord();
|
|
|
+ if (!PasswordChecker.isValidPassword(passWord)) {
|
|
|
+ return CommonResult.fail("密码长度的一半不能是连续升序、倒序、一样的数字");
|
|
|
+ }
|
|
|
+
|
|
|
+ Integer buildingId = totalPassWordDto.getBuildingId();
|
|
|
+ Integer employeeUsersId = totalPassWordDto.getEmployeeUsersId();
|
|
|
+// 先判断是否已添加总卡
|
|
|
+ LambdaQueryWrapper<TotalPassWord> wrapperTc = new LambdaQueryWrapper<>();
|
|
|
+ wrapperTc.eq(TotalPassWord::getBuildingId, buildingId)
|
|
|
+ .eq(TotalPassWord::getEmployeeUsersId, employeeUsersId);
|
|
|
+ TotalPassWord totalPassWord = totalPassWordService.getOne(wrapperTc);
|
|
|
+ if (ObjectUtils.isNotEmpty(totalPassWord)) {
|
|
|
+ return CommonResult.fail("已存在该总密码");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+// 判断是否有该员工
|
|
|
+ EmployeeUsers employeeUsers = employeeUsersService.getById(employeeUsersId);
|
|
|
+ if (ObjectUtils.isEmpty(employeeUsers)) {
|
|
|
+ return CommonResult.fail("无该员工");
|
|
|
+ }
|
|
|
+
|
|
|
+// 获取该楼栋下的房间
|
|
|
+ LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
|
|
|
+ wrapperHn.eq(HouseNumber::getBuildingId, buildingId);
|
|
|
+ List<HouseNumber> houseNumberList = houseNumberService.list(wrapperHn);
|
|
|
+ if (houseNumberList.size() == 0) {
|
|
|
+ return CommonResult.fail("该楼栋下无房间");
|
|
|
+ }
|
|
|
+ ArrayList<Integer> houseNumberIds = new ArrayList<>();
|
|
|
+ for (HouseNumber houseNumber : houseNumberList) {
|
|
|
+ houseNumberIds.add(houseNumber.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<HouseLock> wrapperHl = new LambdaQueryWrapper<>();
|
|
|
+ wrapperHl.in(HouseLock::getHouseNumberId, houseNumberIds);
|
|
|
+ List<HouseLock> houseLockList = houseLockService.list(wrapperHl);
|
|
|
+ if (houseLockList.size() == 0) {
|
|
|
+ return CommonResult.fail("该楼栋下无门锁设备");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加总密码
|
|
|
+
|
|
|
+ for (HouseLock houseLock : houseLockList) {
|
|
|
+ Integer houseNumberId = houseLock.getHouseNumberId();
|
|
|
+ HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
|
|
|
+
|
|
|
+ KeyPassWordDto dto = new KeyPassWordDto();
|
|
|
+ dto.setEquipmentType(houseLock.getEquipmentType());
|
|
|
+ dto.setPassWord(totalPassWordDto.getPassWord());
|
|
|
+ dto.setStartTime(totalPassWordDto.getStartTime());
|
|
|
+ dto.setEndTime(totalPassWordDto.getEndTime());
|
|
|
+ dto.setHouseNumberId(houseLock.getHouseNumberId() + "");
|
|
|
+ dto.setAdminId(totalPassWordDto.getAdminId() + "");
|
|
|
+ dto.setType(4);
|
|
|
+
|
|
|
+ UnlockingAdmin unlockingAdmin = null;
|
|
|
+ UnlockingEmployee unlockingEmployee = new UnlockingEmployee();
|
|
|
+ /**
|
|
|
+ * 缺少人的名字和
|
|
|
+ */
|
|
|
+ try {
|
|
|
+ unlockingAdmin = passwordIssController.savePassWord(dto);
|
|
|
+ if (ObjectUtils.isEmpty(unlockingAdmin)) {
|
|
|
+ return CommonResult.fail("房间:"+houseNumber.getRoomNumber() +",密码已存在,请更换");
|
|
|
+ }
|
|
|
+
|
|
|
+ unlockingAdmin.setName(employeeUsers.getUserName());
|
|
|
+ unlockingAdmin.setPhone(employeeUsers.getPhone());
|
|
|
+ BeanUtils.copyProperties(unlockingAdmin, unlockingEmployee);
|
|
|
+ unlockingEmployeeService.save(unlockingEmployee);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ if (ObjectUtils.isNotEmpty(unlockingAdmin)) {
|
|
|
+// 删除锁
|
|
|
+ passwordIssController.deleteLockUser(unlockingAdmin.getLuid(), unlockingAdmin.getLockUserId());
|
|
|
+ }
|
|
|
+ return CommonResult.fail(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// 添加操作记录
|
|
|
+
|
|
|
+ OperatingRecord operatingRecord = new OperatingRecord();
|
|
|
+
|
|
|
+ operatingRecord.setHouseNumberId(houseLock.getHouseNumberId());
|
|
|
+ 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("姓名:" + employeeUsers.getUserName());
|
|
|
+ operatingRecord.setType("添加密码钥匙");
|
|
|
+ operatingRecordService.save(operatingRecord);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ TotalPassWord totalPassWord1 = new TotalPassWord();
|
|
|
+ BeanUtils.copyProperties(totalPassWordDto, totalPassWord1);
|
|
|
+ totalPassWordService.save(totalPassWord1);
|
|
|
+ return CommonResult.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult deleteEmployeeTotalPassWord(Integer id) {
|
|
|
+ TotalPassWord totalPassWord = totalPassWordService.getById(id);
|
|
|
+
|
|
|
+ if (ObjectUtils.isEmpty(totalPassWord)) {
|
|
|
+ return CommonResult.fail("无该总卡");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否有该员工
|
|
|
+ EmployeeUsers employeeUsers = employeeUsersService.getById(totalPassWord.getEmployeeUsersId());
|
|
|
+ if (ObjectUtils.isEmpty(employeeUsers)) {
|
|
|
+ return CommonResult.fail("无该员工");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Integer buildingId = totalPassWord.getBuildingId();
|
|
|
+
|
|
|
+ // 获取该楼栋下的房间
|
|
|
+ LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
|
|
|
+ wrapperHn.eq(HouseNumber::getBuildingId, buildingId);
|
|
|
+ List<HouseNumber> houseNumberList = houseNumberService.list(wrapperHn);
|
|
|
+ if (houseNumberList.size() == 0) {
|
|
|
+ return CommonResult.fail("该楼栋下无房间");
|
|
|
+ }
|
|
|
+ ArrayList<Integer> houseNumberIds = new ArrayList<>();
|
|
|
+ for (HouseNumber houseNumber : houseNumberList) {
|
|
|
+ houseNumberIds.add(houseNumber.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+// 查询所有需要删除的锁
|
|
|
+ LambdaQueryWrapper<UnlockingEmployee> wrapperUe = new LambdaQueryWrapper<>();
|
|
|
+ wrapperUe.eq(UnlockingEmployee::getName, employeeUsers.getUserName())
|
|
|
+ .eq(UnlockingEmployee::getPhone, employeeUsers.getPhone())
|
|
|
+ .in(UnlockingEmployee::getHouseNumberId, houseNumberIds)
|
|
|
+ .eq(UnlockingEmployee::getStartTime, totalPassWord.getStartTime())
|
|
|
+ .eq(UnlockingEmployee::getEndTime, totalPassWord.getEndTime())
|
|
|
+ .eq(UnlockingEmployee::getLockStatus, 1);
|
|
|
+
|
|
|
+ List<UnlockingEmployee> list = unlockingEmployeeService.list(wrapperUe);
|
|
|
+
|
|
|
+
|
|
|
+ for (UnlockingEmployee unlockingEmployee : list) {
|
|
|
+ System.out.println("删除用户id:"+unlockingEmployee.getId());
|
|
|
+ String luid = unlockingEmployee.getLuid();
|
|
|
+ String lockUserId = unlockingEmployee.getLockUserId();
|
|
|
+ passwordIssController.deleteLockUser(luid, lockUserId);
|
|
|
+ unlockingEmployeeService.removeById(unlockingEmployee.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ totalPassWordService.removeById(id);
|
|
|
+ return CommonResult.ok();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult listEmployeeTotalPassWord(Integer page, Integer size, String employeeName, Integer buildingId, String startTime, String endTime) {
|
|
|
+ PageUtils<TotalPassWordPageVo> pageUtils = totalPassWordService.totalPassWordPage(page, size, employeeName, buildingId, startTime, endTime);
|
|
|
+ return CommonResult.ok(pageUtils);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|