|
|
@@ -0,0 +1,230 @@
|
|
|
+package com.template.controller;
|
|
|
+
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.template.api.TotalCardControllerAPI;
|
|
|
+import com.template.model.dto.KeyCardDto;
|
|
|
+import com.template.model.dto.TotalCardDto;
|
|
|
+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.services.*;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+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 2024-09-27
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+public class TotalCardController implements TotalCardControllerAPI {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ TotalCardService totalCardService;
|
|
|
+
|
|
|
+ @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
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public CommonResult saveTotalCard(TotalCardDto totalCardDto) {
|
|
|
+ Integer adminId = totalCardDto.getAdminId();
|
|
|
+
|
|
|
+ Admin admin = adminService.getById(adminId);
|
|
|
+ if (ObjectUtils.isEmpty(admin)) {
|
|
|
+ return CommonResult.fail("该管理员不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ Integer buildingId = totalCardDto.getBuildingId();
|
|
|
+ Integer employeeUsersId = totalCardDto.getEmployeeUsersId();
|
|
|
+// 先判断是否已添加总卡
|
|
|
+ LambdaQueryWrapper<TotalCard> wrapperTc = new LambdaQueryWrapper<>();
|
|
|
+ wrapperTc.eq(TotalCard::getBuildingId, buildingId)
|
|
|
+ .eq(TotalCard::getEmployeeUsersId, employeeUsersId);
|
|
|
+ TotalCard totalCard = totalCardService.getOne(wrapperTc);
|
|
|
+ if (ObjectUtils.isNotEmpty(totalCard)) {
|
|
|
+ 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("该楼栋下无门锁设备");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加总卡
|
|
|
+ try {
|
|
|
+ for (HouseLock houseLock : houseLockList) {
|
|
|
+ Integer houseNumberId = houseLock.getHouseNumberId();
|
|
|
+ HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
|
|
|
+
|
|
|
+ KeyCardDto dto = new KeyCardDto();
|
|
|
+ dto.setLuid(houseLock.getEquipmentType());
|
|
|
+ dto.setCard(totalCardDto.getRoomCardInformation());
|
|
|
+ dto.setCardType(0);
|
|
|
+ dto.setStartTime(totalCardDto.getStartTime());
|
|
|
+ dto.setEndTime(totalCardDto.getEndTime());
|
|
|
+ dto.setHouseNumberId(houseLock.getHouseNumberId() + "");
|
|
|
+ dto.setAdminId(totalCardDto.getAdminId() + "");
|
|
|
+ dto.setType(4);
|
|
|
+
|
|
|
+ UnlockingAdmin unlockingAdmin = passwordIssController.addCard(dto);
|
|
|
+
|
|
|
+ unlockingAdmin.setName(employeeUsers.getUserName());
|
|
|
+ unlockingAdmin.setPhone(employeeUsers.getPhone());
|
|
|
+
|
|
|
+ UnlockingEmployee unlockingEmployee = new UnlockingEmployee();
|
|
|
+ BeanUtils.copyProperties(unlockingAdmin, unlockingEmployee);
|
|
|
+ unlockingEmployeeService.save(unlockingEmployee);
|
|
|
+
|
|
|
+// 添加操作记录
|
|
|
+
|
|
|
+ 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);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ TotalCard totalCard1 = new TotalCard();
|
|
|
+ BeanUtils.copyProperties(totalCardDto, totalCard1);
|
|
|
+ totalCardService.save(totalCard1);
|
|
|
+ return CommonResult.ok();
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return CommonResult.fail();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public CommonResult deleteTotalCard(Integer id) {
|
|
|
+ TotalCard totalCard = totalCardService.getById(id);
|
|
|
+
|
|
|
+ if (ObjectUtils.isEmpty(totalCard)) {
|
|
|
+ return CommonResult.fail("无该总卡");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否有该员工
|
|
|
+ EmployeeUsers employeeUsers = employeeUsersService.getById(totalCard.getEmployeeUsersId());
|
|
|
+ if (ObjectUtils.isEmpty(employeeUsers)) {
|
|
|
+ return CommonResult.fail("无该员工");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Integer buildingId = totalCard.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,totalCard.getStartTime())
|
|
|
+ .eq(UnlockingEmployee::getEndTime,totalCard.getEndTime())
|
|
|
+ .eq(UnlockingEmployee::getLockStatus,2);
|
|
|
+
|
|
|
+ List<UnlockingEmployee> list = unlockingEmployeeService.list(wrapperUe);
|
|
|
+
|
|
|
+ try {
|
|
|
+ ArrayList<Integer> idUEs = new ArrayList<>();
|
|
|
+ for (UnlockingEmployee unlockingEmployee : list) {
|
|
|
+ String luid = unlockingEmployee.getLuid();
|
|
|
+ String lockUserId = unlockingEmployee.getLockUserId();
|
|
|
+ passwordIssController.deleteLockUser(luid, lockUserId);
|
|
|
+ idUEs.add(unlockingEmployee.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ unlockingEmployeeService.removeByIds(idUEs);
|
|
|
+ totalCardService.removeById(id);
|
|
|
+ return CommonResult.ok();
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ return CommonResult.fail();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult listEmployeeTotalCard(Integer page, Integer size, String employeeName, Integer buildingId, String startTime, String endTime) {
|
|
|
+ PageUtils<TotalCardPageVo> pageUtils=totalCardService.totalCardPage(page,size,employeeName,buildingId,startTime,endTime);
|
|
|
+ return CommonResult.ok(pageUtils);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|