Browse Source

Merge branch 'master' of https://e.coding.net/chuanghaikeji/smarCampus/iHotel_student_houtai into develop-wxl

# Conflicts:
#	src/main/java/com/template/controller/HouseOrderController.java
wanxl 1 year ago
parent
commit
305817da8b
77 changed files with 3207 additions and 483 deletions
  1. 8 0
      pom.xml
  2. 28 0
      src/main/java/com/template/annotation/ExcelExport.java
  3. 31 0
      src/main/java/com/template/annotation/ExcelImport.java
  4. 6 3
      src/main/java/com/template/api/AdminAPI.java
  5. 7 3
      src/main/java/com/template/api/AdminMenuAPI.java
  6. 13 4
      src/main/java/com/template/api/HouseLockControllerAPI.java
  7. 12 5
      src/main/java/com/template/api/HouseNumberControllerAPI.java
  8. 4 0
      src/main/java/com/template/api/HouseOrderAPI.java
  9. 8 6
      src/main/java/com/template/api/UnlockingAdminControllerAPI.java
  10. 29 0
      src/main/java/com/template/api/UnlockingCustomControllerAPI.java
  11. 0 4
      src/main/java/com/template/api/UsersAPI.java
  12. 0 3
      src/main/java/com/template/api/UsersMenuAPI.java
  13. 77 0
      src/main/java/com/template/common/utils/ExcelClassField.java
  14. 996 52
      src/main/java/com/template/common/utils/ExcelUtils.java
  15. 64 0
      src/main/java/com/template/common/utils/ExcelUtils2.java
  16. 8 6
      src/main/java/com/template/controller/AdminController.java
  17. 7 4
      src/main/java/com/template/controller/AdminMenuController.java
  18. 2 2
      src/main/java/com/template/controller/ApplicationProcedureController.java
  19. 2 2
      src/main/java/com/template/controller/ApplicationProcedureTemporaryController.java
  20. 6 11
      src/main/java/com/template/controller/ClassScheduleController.java
  21. 11 11
      src/main/java/com/template/controller/HouseController.java
  22. 98 7
      src/main/java/com/template/controller/HouseLockController.java
  23. 132 21
      src/main/java/com/template/controller/HouseNumberController.java
  24. 12 3
      src/main/java/com/template/controller/HouseNumberStateController.java
  25. 416 186
      src/main/java/com/template/controller/HouseOrderController.java
  26. 26 11
      src/main/java/com/template/controller/HousePriceController.java
  27. 25 5
      src/main/java/com/template/controller/LoginController.java
  28. 161 7
      src/main/java/com/template/controller/PasswordIssController.java
  29. 52 26
      src/main/java/com/template/controller/UnlockingAdminController.java
  30. 244 0
      src/main/java/com/template/controller/UnlockingCustomController.java
  31. 5 5
      src/main/java/com/template/controller/UploadServlet.java
  32. 0 15
      src/main/java/com/template/controller/UsersController.java
  33. 0 14
      src/main/java/com/template/controller/UsersMenuController.java
  34. 9 2
      src/main/java/com/template/mapper/HouseNumberMapper.java
  35. 2 0
      src/main/java/com/template/mapper/HouseOrderMapper.java
  36. 4 1
      src/main/java/com/template/mapper/HousePriceMapper.java
  37. 2 1
      src/main/java/com/template/mapper/UnlockingAdminMapper.java
  38. 23 0
      src/main/java/com/template/mapper/UnlockingCustomMapper.java
  39. 2 1
      src/main/java/com/template/mapper/UnlockingMapper.java
  40. 53 0
      src/main/java/com/template/model/dto/CustomKeyCardDto.java
  41. 51 0
      src/main/java/com/template/model/dto/CustomKeyFingerprintDto.java
  42. 49 0
      src/main/java/com/template/model/dto/CustomKeyPassWordDto.java
  43. 21 0
      src/main/java/com/template/model/dto/HouseLockListImportDto.java
  44. 28 0
      src/main/java/com/template/model/dto/HouseNumberImportDto.java
  45. 1 1
      src/main/java/com/template/model/dto/KeyCardDto.java
  46. 1 1
      src/main/java/com/template/model/dto/KeyFingerprintDto.java
  47. 1 1
      src/main/java/com/template/model/dto/KeyPassWordDto.java
  48. 13 0
      src/main/java/com/template/model/dto/UpdateLockDto.java
  49. 2 1
      src/main/java/com/template/model/enumModel/PasswordUrlEnum.java
  50. 1 1
      src/main/java/com/template/model/pojo/UnlockingAdmin.java
  51. 84 0
      src/main/java/com/template/model/pojo/UnlockingCustom.java
  52. 12 0
      src/main/java/com/template/model/vo/AppletReserveDayVo.java
  53. 50 0
      src/main/java/com/template/model/vo/HouseNumberPageVo.java
  54. 2 0
      src/main/java/com/template/model/vo/HouseOrderPageListVo.java
  55. 3 0
      src/main/java/com/template/model/vo/LoginVO.java
  56. 2 0
      src/main/java/com/template/model/vo/UnlockingKeyVo.java
  57. 7 0
      src/main/java/com/template/services/HouseNumberService.java
  58. 4 0
      src/main/java/com/template/services/HouseOrderService.java
  59. 3 0
      src/main/java/com/template/services/HousePriceService.java
  60. 1 3
      src/main/java/com/template/services/HouseService.java
  61. 2 1
      src/main/java/com/template/services/UnlockingAdminService.java
  62. 20 0
      src/main/java/com/template/services/UnlockingCustomService.java
  63. 2 1
      src/main/java/com/template/services/UnlockingService.java
  64. 22 0
      src/main/java/com/template/services/impl/HouseNumberServiceImpl.java
  65. 4 0
      src/main/java/com/template/services/impl/HouseNumberStateServiceImpl.java
  66. 60 40
      src/main/java/com/template/services/impl/HouseOrderServiceImpl.java
  67. 11 1
      src/main/java/com/template/services/impl/HousePriceServiceImpl.java
  68. 10 2
      src/main/java/com/template/services/impl/HouseServiceImpl.java
  69. 3 2
      src/main/java/com/template/services/impl/UnlockingAdminServiceImpl.java
  70. 31 0
      src/main/java/com/template/services/impl/UnlockingCustomServiceImpl.java
  71. 3 2
      src/main/java/com/template/services/impl/UnlockingServiceImpl.java
  72. 60 0
      src/main/resources/mapper/template/HouseNumberMapper.xml
  73. 12 0
      src/main/resources/mapper/template/HouseOrderMapper.xml
  74. 27 0
      src/main/resources/mapper/template/HousePriceMapper.xml
  75. 2 2
      src/main/resources/mapper/template/UnlockingAdminMapper.xml
  76. 13 0
      src/main/resources/mapper/template/UnlockingCustomMapper.xml
  77. 4 3
      src/main/resources/mapper/template/UnlockingMapper.xml

+ 8 - 0
pom.xml

@@ -223,6 +223,14 @@
             <scope>compile</scope>
         </dependency>
 
+
+        <!-- 文件上传 -->
+        <dependency>
+        <groupId>org.apache.httpcomponents</groupId>
+        <artifactId>httpmime</artifactId>
+        <version>4.5.7</version>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 28 - 0
src/main/java/com/template/annotation/ExcelExport.java

@@ -0,0 +1,28 @@
+package com.template.annotation;
+ 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+ 
+/**
+ * @author sunnyzyq
+ * @date 2021/12/17
+ */
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelExport {
+ 
+    /** 字段名称 */
+    String value();
+ 
+    /** 导出排序先后: 数字越小越靠前(默认按Java类字段顺序导出) */
+    int sort() default 0;
+ 
+    /** 导出映射,格式如:0-未知;1-男;2-女 */
+    String kv() default "";
+ 
+    /** 导出模板示例值(有值的话,直接取该值,不做映射) */
+    String example() default "";
+ 
+}

+ 31 - 0
src/main/java/com/template/annotation/ExcelImport.java

@@ -0,0 +1,31 @@
+package com.template.annotation;
+ 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+ 
+/**
+ * @author sunnyzyq
+ * @date 2021/12/17
+ */
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelImport {
+ 
+    /** 字段名称 */
+    String value();
+ 
+    /** 导出映射,格式如:0-未知;1-男;2-女 */
+    String kv() default "";
+ 
+    /** 是否为必填字段(默认为非必填) */
+    boolean required() default false;
+ 
+    /** 最大长度(默认255) */
+    int maxLength() default 255;
+ 
+    /** 导入唯一性验证(多个字段则取联合验证) */
+    boolean unique() default false;
+ 
+}

+ 6 - 3
src/main/java/com/template/api/AdminAPI.java

@@ -1,11 +1,8 @@
 package com.template.api;
 
-import com.template.model.dto.AdminDto;
 import com.template.model.dto.SaveAdminDto;
 import com.template.model.dto.UpdateAdminDto;
-import com.template.model.pojo.Admin;
 import com.template.model.result.CommonResult;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 
@@ -33,4 +30,10 @@ public interface AdminAPI {
     @GetMapping("/getUsersPage")
     @ApiOperation(value = "移动端用户搜索栏", notes = "移动端用户搜索栏", httpMethod = "GET")
     CommonResult getUsersPage(int permissionSettingId,int page,int size,String keyWord);
+
+
+    @GetMapping("/userList")
+    @ApiOperation(value = "管理端用户下拉列表", notes = "用户下拉列表", httpMethod = "GET")
+    CommonResult userList(String adminMenuId);
+
 }

+ 7 - 3
src/main/java/com/template/api/AdminMenuAPI.java

@@ -1,8 +1,8 @@
 package com.template.api;
 
-import com.template.model.dto.*;
-import com.template.model.pojo.Admin;
-import com.template.model.pojo.AdminMenu;
+import com.template.model.dto.SaveParentDto;
+import com.template.model.dto.SaveSecondaryDto;
+import com.template.model.dto.UpdateMenuPermissionSettingDto;
 import com.template.model.result.CommonResult;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.validation.BindingResult;
@@ -39,4 +39,8 @@ public interface AdminMenuAPI {
     @ApiOperation(value = "删除角色", notes = "删除角色", httpMethod = "GET")
     CommonResult delete(@RequestParam Integer adminMenuId,@RequestParam String permissionSettingId);
 
+
+    @GetMapping("/getUserRole")
+    @ApiOperation(value = "管理端角色列表", notes = "角色列表", httpMethod = "GET")
+    CommonResult getUserRole();
 }

+ 13 - 4
src/main/java/com/template/api/HouseLockControllerAPI.java

@@ -4,10 +4,10 @@ import com.template.model.dto.BingingDto;
 import com.template.model.dto.RemoteUnlocking;
 import com.template.model.result.CommonResult;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
 
 @RequestMapping("/auto/house-lock")
 public interface HouseLockControllerAPI {
@@ -44,4 +44,13 @@ public interface HouseLockControllerAPI {
     @ApiOperation(value = "判断房间是否绑定", notes = "判断房间是否绑定", httpMethod = "GET")
     CommonResult ifBinging(String houseNumberId);
 
+    @GetMapping("/lockExport")
+    @ApiOperation(value = "门锁导出示例", notes = "门锁导出示例", httpMethod = "GET")
+    CommonResult lockExport(HttpServletResponse response);
+
+    @PostMapping("/lockImport")
+    @ApiOperation(value = "门锁导入", notes = "门锁导入", httpMethod = "POST")
+    CommonResult lockImport(@RequestParam("file") MultipartFile file) throws Exception;
+
+
 }

+ 12 - 5
src/main/java/com/template/api/HouseNumberControllerAPI.java

@@ -2,13 +2,12 @@ package com.template.api;
 
 import com.template.model.dto.HouseNumberBindingDto;
 import com.template.model.dto.HouseNumberDeleteBindingDto;
-import com.template.model.pojo.HouseNumber;
 import com.template.model.result.CommonResult;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
 
 @RequestMapping("/auto/house-number")
 public interface HouseNumberControllerAPI {
@@ -33,4 +32,12 @@ public interface HouseNumberControllerAPI {
     @ApiOperation(value = "水电表删除绑定", notes = "水电表删除绑定", httpMethod = "POST")
     CommonResult delete(@RequestBody HouseNumberDeleteBindingDto houseNumberDeleteBindingDto);
 
+    @GetMapping("/listExport")
+    @ApiOperation(value = "房间水电编码导出", notes = "房间水电编码导出", httpMethod = "GET")
+    CommonResult listExport(HttpServletResponse response, String permissionSettingId, String keyWord, String startTime, String endTime);
+
+    @PostMapping("/importList")
+    @ApiOperation(value = "房间水电编码导入", notes = "房间水电编码导入", httpMethod = "POST")
+    CommonResult importList(@RequestParam("file") MultipartFile file) throws Exception;
+
 }

+ 4 - 0
src/main/java/com/template/api/HouseOrderAPI.java

@@ -125,5 +125,9 @@ public interface HouseOrderAPI {
     @ApiOperation(value = "查询退款", notes = "管理端——支付", httpMethod = "POST")
     CommonResult queryRefundById(@RequestParam String refundNo);
 
+    @GetMapping("/appletReserveHour")
+    @ApiOperation(value = "小程序-钟点房当天占用状态", notes = "小程序-钟点房当天占用状态", httpMethod = "GET")
+    CommonResult appletReserveHour(String houseNumberId, String startTime, int liveTime);
+
 }
 

+ 8 - 6
src/main/java/com/template/api/UnlockingAdminControllerAPI.java

@@ -3,12 +3,10 @@ package com.template.api;
 import com.template.model.dto.KeyCardDto;
 import com.template.model.dto.KeyFingerprintDto;
 import com.template.model.dto.KeyPassWordDto;
+import com.template.model.dto.UpdateLockDto;
 import com.template.model.result.CommonResult;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
 
 @RequestMapping("/auto/unlocking-admin")
 public interface UnlockingAdminControllerAPI {
@@ -29,8 +27,12 @@ public interface UnlockingAdminControllerAPI {
     @ApiOperation(value = "指纹管理", notes = "指纹管理", httpMethod = "PSOT")
     CommonResult saveFingerprint(@RequestBody KeyFingerprintDto keyFingerprintDto);
 
+    @GetMapping("/deleteLock")
+    @ApiOperation(value = "删除锁的用户", notes = "解绑", httpMethod = "GET")
+    CommonResult deleteLock(@RequestParam Integer unlockingAdminId);
 
-
-
+    @PostMapping("/updateLock")
+    @ApiOperation(value = "修改锁的用户", notes = "指纹管理", httpMethod = "PSOT")
+    CommonResult updateLock(@RequestBody UpdateLockDto updateLockDto);
 
 }

+ 29 - 0
src/main/java/com/template/api/UnlockingCustomControllerAPI.java

@@ -0,0 +1,29 @@
+package com.template.api;
+
+import com.template.model.dto.CustomKeyCardDto;
+import com.template.model.dto.CustomKeyFingerprintDto;
+import com.template.model.dto.CustomKeyPassWordDto;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+@RequestMapping("/auto/unlocking-custom")
+public interface UnlockingCustomControllerAPI {
+
+    @PostMapping("/savePassWord")
+    @ApiOperation(value = "密码管理", notes = "密码管理", httpMethod = "PSOT")
+    CommonResult saveCustomPassWord(@RequestBody CustomKeyPassWordDto dto);
+
+    @PostMapping("/saveCard")
+    @ApiOperation(value = "卡片管理", notes = "卡片管理", httpMethod = "PSOT")
+    CommonResult saveCustomCard(@RequestBody CustomKeyCardDto dto);
+
+    @PostMapping("/saveFingerprint")
+    @ApiOperation(value = "指纹管理", notes = "指纹管理", httpMethod = "PSOT")
+    CommonResult saveCustomFingerprint(@RequestBody CustomKeyFingerprintDto dto);
+
+    @GetMapping("/deleteLock")
+    @ApiOperation(value = "删除锁的用户", notes = "解绑", httpMethod = "GET")
+    CommonResult deleteLock(@RequestParam Integer unlockingCustomId);
+
+}

+ 0 - 4
src/main/java/com/template/api/UsersAPI.java

@@ -3,7 +3,6 @@ package com.template.api;
 import com.template.model.dto.UsersDetailsDto;
 import com.template.model.dto.UsersDto;
 import com.template.model.result.CommonResult;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
@@ -35,9 +34,6 @@ public interface UsersAPI {
     CommonResult departmentList();
 
 
-    @GetMapping("/userList")
-    @ApiOperation(value = "用户下拉列表", notes = "用户下拉列表", httpMethod = "GET")
-    CommonResult userList(String userMenuId);
 
     @GetMapping("/getUser")
     @ApiOperation(value = "通过用户id找到对应用户", notes = "通过用户id找到对应用户", httpMethod = "GET")

+ 0 - 3
src/main/java/com/template/api/UsersMenuAPI.java

@@ -16,9 +16,6 @@ public interface UsersMenuAPI {
     @ApiOperation(value = "添加次级用户", notes = "添加次级用户", httpMethod = "POST")
     CommonResult saveUserSecondary(@RequestBody SaveSecondaryUserDto saveSecondaryUserDto);
 
-    @GetMapping("/getUserRole")
-    @ApiOperation(value = "角色列表", notes = "角色列表", httpMethod = "GET")
-    CommonResult getUserRole();
 
     @GetMapping("/userListPage")
     @ApiOperation(value = "用户角色分页列表", notes = "用户角色分页列表", httpMethod = "GET")

+ 77 - 0
src/main/java/com/template/common/utils/ExcelClassField.java

@@ -0,0 +1,77 @@
+package com.template.common.utils;
+ 
+import java.util.LinkedHashMap;
+ 
+/**
+ * @author sunnyzyq
+ * @date 2021/12/17
+ */
+public class ExcelClassField {
+ 
+    /** 字段名称 */
+    private String fieldName;
+ 
+    /** 表头名称 */
+    private String name;
+ 
+    /** 映射关系 */
+    private LinkedHashMap<String, String> kvMap;
+ 
+    /** 示例值 */
+    private Object example;
+ 
+    /** 排序 */
+    private int sort;
+ 
+    /** 是否为注解字段:0-否,1-是 */
+    private int hasAnnotation;
+ 
+    public String getFieldName() {
+        return fieldName;
+    }
+ 
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+ 
+    public String getName() {
+        return name;
+    }
+ 
+    public void setName(String name) {
+        this.name = name;
+    }
+ 
+    public LinkedHashMap<String, String> getKvMap() {
+        return kvMap;
+    }
+ 
+    public void setKvMap(LinkedHashMap<String, String> kvMap) {
+        this.kvMap = kvMap;
+    }
+ 
+    public Object getExample() {
+        return example;
+    }
+ 
+    public void setExample(Object example) {
+        this.example = example;
+    }
+ 
+    public int getSort() {
+        return sort;
+    }
+ 
+    public void setSort(int sort) {
+        this.sort = sort;
+    }
+ 
+    public int getHasAnnotation() {
+        return hasAnnotation;
+    }
+ 
+    public void setHasAnnotation(int hasAnnotation) {
+        this.hasAnnotation = hasAnnotation;
+    }
+ 
+}

File diff suppressed because it is too large
+ 996 - 52
src/main/java/com/template/common/utils/ExcelUtils.java


+ 64 - 0
src/main/java/com/template/common/utils/ExcelUtils2.java

@@ -0,0 +1,64 @@
+package com.template.common.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.boot.system.ApplicationHome;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/7/10 星期一 14:21
+ * @Description: com.repair.common.utils
+ * @Version: 1.0
+ */
+@Slf4j
+public class ExcelUtils2 {
+    public static void fileDownload(String fileName, HttpServletResponse response) {
+        try {
+            ApplicationHome applicationHome = new ApplicationHome(ExcelUtils2.class);
+            String pathResouce = applicationHome.getDir().getParentFile().getParentFile().getAbsolutePath();
+            String decode = URLDecoder.decode(pathResouce, "utf-8");
+            File readPath = new File(decode + "/project/repair" + File.separator);
+            File file = new File(readPath.getAbsolutePath() + fileName);
+            // 获取文件名
+            String filename = file.getName();
+            // 获取文件后缀名
+            String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
+            InputStream inputStream = new FileInputStream(file);//根据路径获取要下载的文件输入流
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+            response.setHeader("Content-disposition", "attachment;fileName=" + URLEncoder.encode(filename, "UTF-8"));
+            OutputStream out = response.getOutputStream();
+            byte[] b = new byte[1024];  //创建数据缓冲区
+            int length;
+            while ((length = inputStream.read(b)) > 0) {  //把文件流写到缓冲区里
+                out.write(b, 0, length);
+            }
+            out.flush();
+            out.close();
+            inputStream.close();
+        } catch (IOException ex) {
+            System.out.println("模板导出失败:" + ex.getMessage());
+            ex.printStackTrace();
+        }
+    }
+
+    public static void excelDownload(Workbook workbook, String fileName, HttpServletResponse response) {
+        try {
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+            response.setHeader("Content-disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8"));
+            OutputStream out = response.getOutputStream();
+            workbook.write(out);
+            out.flush();
+            out.close();
+        } catch (IOException ex) {
+            System.out.println("模板导出失败:" + ex.getMessage());
+            ex.printStackTrace();
+        }
+    }
+}

+ 8 - 6
src/main/java/com/template/controller/AdminController.java

@@ -1,7 +1,6 @@
 package com.template.controller;
 
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -15,7 +14,6 @@ import com.template.model.pojo.Admin;
 import com.template.model.pojo.AdminMenu;
 import com.template.model.pojo.PermissionSetting;
 import com.template.model.pojo.Users;
-import com.template.model.request.loginRequest;
 import com.template.model.result.CommonResult;
 import com.template.model.vo.AdminVo;
 import com.template.services.AdminMenuService;
@@ -24,12 +22,8 @@ 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.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.security.PublicKey;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -256,6 +250,14 @@ public class AdminController implements AdminAPI {
         return CommonResult.ok(page1);
     }
 
+    @Override
+    public CommonResult userList(String adminMenuId) {
+        LambdaQueryWrapper<Admin> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(Admin::getAdminMenuId,adminMenuId);
+        List<Admin> list = adminService.list(wrapper);
+        return CommonResult.ok(list);
+    }
+
 
 }
 

+ 7 - 4
src/main/java/com/template/controller/AdminMenuController.java

@@ -8,13 +8,11 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.api.AdminMenuAPI;
 import com.template.model.dto.SaveParentDto;
-import com.template.model.dto.SaveParentUserDto;
 import com.template.model.dto.SaveSecondaryDto;
 import com.template.model.dto.UpdateMenuPermissionSettingDto;
 import com.template.model.pojo.Admin;
 import com.template.model.pojo.AdminMenu;
 import com.template.model.pojo.PermissionSetting;
-import com.template.model.pojo.UsersMenu;
 import com.template.model.result.CommonResult;
 import com.template.model.vo.AdminMenuTreeVo;
 import com.template.model.vo.AdminMenuVo;
@@ -25,8 +23,6 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.RequestMapping;
-
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
@@ -326,7 +322,14 @@ public class AdminMenuController implements AdminMenuAPI {
         return newTrees;
     }
 
+    @Override
+    public CommonResult getUserRole() {
+        Wrapper<AdminMenu> wrapper = new LambdaQueryWrapper<>();
+        List<AdminMenu> adminMenus = adminMenuService.list(wrapper);
+        List<AdminMenuTreeVo> adminMenuTreeVos = QueryAreaTreeRecords(0, adminMenus);
 
+        return CommonResult.ok(adminMenuTreeVos);
+    }
 
 }
 

+ 2 - 2
src/main/java/com/template/controller/ApplicationProcedureController.java

@@ -217,7 +217,7 @@ public class ApplicationProcedureController implements ApplicationProcedureContr
 //        当为最高审批人
         if (parentId==0) {
 //            先判断是否已经被审批了
-            if (!"1".equals(applicationProcedureStatus)) {
+            if (!"2".equals(applicationProcedureStatus)) {
 //                当不是处理中时则无法审批
                 return CommonResult.fail("当前无法审批");
             }
@@ -312,7 +312,7 @@ public class ApplicationProcedureController implements ApplicationProcedureContr
 //        当为最高审批人
         if (parentId==0) {
             //            先判断是否已经被审批了
-            if (!"1".equals(applicationProcedureStatus)) {
+            if (!"2".equals(applicationProcedureStatus)) {
 //                当不是处理中时则无法审批
                 return CommonResult.fail("当前无法审批");
             }

+ 2 - 2
src/main/java/com/template/controller/ApplicationProcedureTemporaryController.java

@@ -204,7 +204,7 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
 //        当为最高审批人
         if (parentId==0) {
             //            先判断是否已经被审批了
-            if (!"1".equals(applicationProcedureStatus)) {
+            if (!"2".equals(applicationProcedureStatus)) {
 //                当不是处理中时则无法审批
                 return CommonResult.fail("当前无法审批");
             }
@@ -304,7 +304,7 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
 //        当为最高审批人
         if (parentId==0) {
             //            先判断是否已经被审批了
-            if (!"1".equals(applicationProcedureStatus)) {
+            if (!"2".equals(applicationProcedureStatus)) {
 //                当不是处理中时则无法审批
                 return CommonResult.fail("当前无法审批");
             }

+ 6 - 11
src/main/java/com/template/controller/ClassScheduleController.java

@@ -6,7 +6,6 @@ import com.alibaba.excel.ExcelWriter;
 import com.alibaba.excel.read.listener.PageReadListener;
 import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -18,10 +17,7 @@ import com.template.model.vo.ClassScheduleExportVo;
 import com.template.model.vo.ScheduleVo;
 import com.template.services.ClassScheduleService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
@@ -30,7 +26,6 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.TextStyle;
 import java.time.temporal.ChronoUnit;
@@ -244,22 +239,22 @@ public class ClassScheduleController implements ClassScheduleAPI {
      */
     public Map<String, String> getDjz(String dateTime) {
         //    2023-9-4开始上课
-        LocalDate localDate = LocalDate.of(2023, 9, 4);
+//        LocalDate localDate = LocalDate.of(2023, 9, 4);
 
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         LocalDate date = LocalDate.parse(dateTime, dateTimeFormatter);
 
 //        将此日期与指定日期进行比较,传进来的日期不能小于开学日期
-        int i = date.compareTo(localDate);
+       /* int i = date.compareTo(localDate);
         if (i < 0) {
             return null;
-        }
+        }*/
         Map<String, String> map = new HashMap<>();
 //        计算2个时间的天数差
-        long until = date.until(localDate, ChronoUnit.DAYS);
+//        long until = date.until(localDate, ChronoUnit.DAYS);
         //        需要加1才是第几周
-        int weeks = (int) until / 7;
-        map.put("weeks", (weeks + 1) + "");
+//        int weeks = (int) until / 7;
+//        map.put("weeks", (weeks + 1) + "");
 
 //        周几
         String chineseDayOfWeek = date.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINA);

+ 11 - 11
src/main/java/com/template/controller/HouseController.java

@@ -2,7 +2,6 @@ package com.template.controller;
 
 
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -10,21 +9,22 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.annotation.Encrypt;
 import com.template.api.HouseAPI;
 import com.template.common.utils.DateUtil;
-import com.template.mapper.HouseMapper;
 import com.template.model.dto.HouseDto;
 import com.template.model.pojo.*;
 import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
-import com.template.model.vo.*;
+import com.template.model.vo.HouseAppletPageVo;
+import com.template.model.vo.HouseVo;
+import com.template.model.vo.HousedetailsVo;
 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.*;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Date;
@@ -99,12 +99,12 @@ public class HouseController implements HouseAPI {
         }
 
 //        房间号不能重复
-        LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
-        wrapperHn.in(HouseNumber::getRoomNumber, roomNumbers);
-        List<HouseNumber> list = houseNumberService.list(wrapperHn);
-        if (ObjectUtils.isNotEmpty(list) && list.size() > 0) {
-            return CommonResult.fail("该房间号已存在");
-        }
+//        LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
+//        wrapperHn.in(HouseNumber::getRoomNumber, roomNumbers);
+//        List<HouseNumber> list = houseNumberService.list(wrapperHn);
+//        if (ObjectUtils.isNotEmpty(list) && list.size() > 0) {
+//            return CommonResult.fail("该房间号已存在");
+//        }
 
 
         try {

+ 98 - 7
src/main/java/com/template/controller/HouseLockController.java

@@ -5,7 +5,9 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.template.api.HouseLockControllerAPI;
+import com.template.common.utils.ExcelUtils;
 import com.template.model.dto.BingingDto;
+import com.template.model.dto.HouseLockListImportDto;
 import com.template.model.dto.RemoteUnlocking;
 import com.template.model.pojo.*;
 import com.template.model.result.CommonResult;
@@ -16,13 +18,12 @@ import com.template.services.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -66,6 +67,9 @@ public class HouseLockController implements HouseLockControllerAPI {
     @Autowired
     OperatingRecordService operatingRecordService;
 
+    @Autowired
+    UnlockingCustomService unlockingCustomService;
+
     @Override
     public CommonResult list(String permissionSettingId, String roomNumber, String roomName) {
         PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
@@ -172,14 +176,16 @@ public class HouseLockController implements HouseLockControllerAPI {
             return CommonResult.fail("参数异常");
         }
 
+        Date date = new Date();
+        List<UnlockingKeyVo> unlockingKeyDtos = unlockingService.key(houseNumberId,date);
 
-        List<UnlockingKeyVo> unlockingKeyDtos = unlockingService.key(houseNumberId);
-
-        List<UnlockingAdmin> unlockingAdmins = unlockingAdminService.key(houseNumberId);
+        List<UnlockingAdmin> unlockingAdmins = unlockingAdminService.key(houseNumberId,date);
+        List<UnlockingCustom> unlockingCustoms = unlockingCustomService.key(houseNumberId,date);
 
         HashMap<String, Object> map = new HashMap<>();
         map.put("order", unlockingKeyDtos);
         map.put("system", unlockingAdmins);
+        map.put("custom", unlockingCustoms);
 
 
         return CommonResult.ok(map);
@@ -381,6 +387,91 @@ public class HouseLockController implements HouseLockControllerAPI {
         return CommonResult.ok(map);
     }
 
+    @Override
+    public CommonResult lockExport(HttpServletResponse response) {
+        // 表头数据
+        List<Object> head = Arrays.asList("房型类型","房型名称","房间号","门锁设备型号");
+        // 用户1数据
+        List<Object> user1 = new ArrayList<>();
+        user1.add("全日房");
+        user1.add("标准房");
+        user1.add("19-101");
+        user1.add("047863CA78E0");
+        List<Object> user2 = new ArrayList<>();
+        user2.add("钟点房");
+        user2.add("标准房");
+        user2.add("19-201");
+        user2.add("047863CA78E0");
+        // 将数据汇总
+        List<List<Object>> sheetDataList = new ArrayList<>();
+        sheetDataList.add(head);
+        sheetDataList.add(user1);
+        sheetDataList.add(user2);
+// 导出数据
+        ExcelUtils.export(response,"门锁绑定示例表", sheetDataList);
+
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult lockImport(MultipartFile file) throws Exception {
+        List<HouseLockListImportDto> dtos=ExcelUtils.readMultipartFile(file,HouseLockListImportDto.class);
+
+
+        ArrayList<HouseLock> houseLocks = new ArrayList<>();
+        for (int i = 0; i < dtos.size(); i++) {
+            HouseLockListImportDto houseLockListImportDto = dtos.get(i);
+
+            Integer roomType = houseLockListImportDto.getRoomType();
+//            房间号
+            String roomNumber = houseLockListImportDto.getRoomNumber();
+//            房型
+            String houseName = houseLockListImportDto.getHouseName();
+//            设备号
+            String equipmentType = houseLockListImportDto.getEquipmentType();
+
+//            判断当前房型是否存在当前房间号
+            House house=houseService.getHouseName(houseName,roomType);
+            if (ObjectUtils.isEmpty(house)) {
+                return CommonResult.fail("第"+(i+2)+"行,"+"不存在"+houseName+"该房型");
+            }
+            Integer houseId = house.getId();
+            HouseNumber houseNumber=houseNumberService.getRoomNumber(houseId,roomNumber);
+            if (ObjectUtils.isEmpty(houseNumber)) {
+                return CommonResult.fail("第"+(i+2)+"行,"+"不存在"+roomNumber+"该房间号");
+            }
+            Integer houseNumberId = houseNumber.getId();
+
+            LambdaQueryWrapper<HouseLock> wrapper=new LambdaQueryWrapper<>();
+            wrapper.eq(HouseLock::getHouseNumberId,houseNumberId);
+            HouseLock houseLock = houseLockService.getOne(wrapper);
+            if (ObjectUtils.isNotEmpty(houseLock)) {
+                houseLock.setEquipmentType(equipmentType);
+                houseLocks.add(houseLock);
+            }else {
+                HouseLock houseLock1 = new HouseLock();
+                houseLock1.setHouseNumberId(houseNumberId);
+                houseLock1.setEquipmentType(equipmentType);
+                houseLock1.setNetworkType("WIFI");
+                houseLock1.setWifiMac("WIFIMAC");
+                houseLock1.setBindingTime(new Date());
+                houseLock1.setElectricQuantity("0");
+                houseLock1.setNetworkState("1");
+                houseLock1.setNetworkState("1");
+                houseLocks.add(houseLock1);
+            }
+
+
+        }
+
+        boolean b = houseLockService.saveOrUpdateBatch(houseLocks);
+        if (b) {
+            return CommonResult.ok();
+        }
+
+        return CommonResult.fail();
+    }
+
 
 }
 

+ 132 - 21
src/main/java/com/template/controller/HouseNumberController.java

@@ -6,22 +6,26 @@ 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.HouseNumberControllerAPI;
+import com.template.common.utils.ExcelUtils;
+import com.template.common.utils.ExcelUtils2;
 import com.template.model.dto.HouseNumberBindingDto;
 import com.template.model.dto.HouseNumberDeleteBindingDto;
-import com.template.model.pojo.ElectricEquipment;
-import com.template.model.pojo.HouseNumber;
-import com.template.model.pojo.PermissionSetting;
-import com.template.model.pojo.WaterEquipment;
+import com.template.model.dto.HouseNumberImportDto;
+import com.template.model.pojo.*;
 import com.template.model.result.CommonResult;
-import com.template.services.ElectricEquipmentService;
-import com.template.services.HouseNumberService;
-import com.template.services.PermissionSettingService;
-import com.template.services.WaterEquipmentService;
+import com.template.model.result.PageUtils;
+import com.template.model.vo.HouseNumberPageVo;
+import com.template.services.*;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -47,6 +51,8 @@ public class HouseNumberController implements HouseNumberControllerAPI {
     @Autowired
     PermissionSettingService permissionSettingService;
 
+    @Autowired
+    HouseService houseService;
     @Override
     public CommonResult pullDownList(String permissionSettingId, int page, int size, String keyWord) {
         PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
@@ -164,19 +170,11 @@ public class HouseNumberController implements HouseNumberControllerAPI {
             size = 10;
         }
 
-        LambdaQueryWrapper<HouseNumber> wrapper=new LambdaQueryWrapper<>();
-        wrapper.like(ObjectUtils.isNotEmpty(keyWord),HouseNumber::getRoomNumber,keyWord)
-                .or()
-                .like(ObjectUtils.isNotEmpty(keyWord),HouseNumber::getElectricEquipmentMeterName,keyWord)
-                .or()
-                .like(ObjectUtils.isNotEmpty(keyWord),HouseNumber::getWaterEquipmentMeterName,keyWord)
-        ;
-        wrapper.between(ObjectUtils.isNotEmpty(startTime)&&ObjectUtils.isNotEmpty(endTime),HouseNumber::getCreateTime,startTime,endTime);
-        wrapper.orderByDesc(HouseNumber::getRoomNumber);
 
-        IPage<HouseNumber> page1 = houseNumberService.page(new Page<>(page, size), wrapper);
+        PageUtils<HouseNumberPageVo> pageList =houseNumberService.pageList(page,size,keyWord,startTime,endTime);
 
-        return CommonResult.ok(page1);
+
+        return CommonResult.ok(pageList);
     }
 
     @Override
@@ -284,5 +282,118 @@ public class HouseNumberController implements HouseNumberControllerAPI {
         return CommonResult.ok();
 
     }
+
+    @Override
+    public CommonResult listExport(HttpServletResponse response, String permissionSettingId, String keyWord, String startTime, String endTime) {
+        PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
+        if (ObjectUtils.isEmpty(permissionSetting)) {
+            return CommonResult.fail("非法进入");
+        }
+//      判断该用户是否拥有权限
+        String hydropowerManagement = permissionSetting.getHydropowerManagement();
+        if (!"0".equals(hydropowerManagement) && !hydropowerManagement.contains("5")) {
+            return CommonResult.fail("此账号暂无该权限");
+        }
+
+        List<HouseNumberPageVo> vos =houseNumberService.listExport(keyWord,startTime,endTime);
+
+
+//        导出
+        Workbook workbook = new XSSFWorkbook();
+        Sheet sheet = workbook.createSheet("水电设备绑定表");
+        Row headerRow = sheet.createRow(0);
+        headerRow.createCell(0).setCellValue("序号");
+        headerRow.createCell(1).setCellValue("水表编码");
+        headerRow.createCell(2).setCellValue("电表编码");
+        headerRow.createCell(3).setCellValue("房型类型");
+        headerRow.createCell(4).setCellValue("房型名称");
+        headerRow.createCell(5).setCellValue("房间号");
+
+        if (ObjectUtils.isNotEmpty(vos) && vos.size() > 0) {
+            for (int i = 0; i < vos.size(); i++) {
+                Row dataRow1 = sheet.createRow(i + 1);
+                HouseNumberPageVo vo = vos.get(i);
+                dataRow1.createCell(0).setCellValue(i+1);
+                dataRow1.createCell(1).setCellValue(vo.getWaterEquipmentMeterName());
+                dataRow1.createCell(2).setCellValue(vo.getElectricEquipmentMeterName());
+                Integer roomType = vo.getRoomType();
+                String houseType="";
+                if (1==roomType) {
+                    houseType="全日房";
+                }else {
+                    houseType="钟点房";
+                }
+                dataRow1.createCell(3).setCellValue(houseType);
+                dataRow1.createCell(4).setCellValue(vo.getHouseName());
+                dataRow1.createCell(5).setCellValue(vo.getHouseName());
+
+            }
+        }
+        // 将工作簿写入文件
+        ExcelUtils2.excelDownload(workbook, "水电设备绑定表.xlsx", response);
+
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult importList(MultipartFile file) throws Exception {
+        List<HouseNumberImportDto> dtos= ExcelUtils.readMultipartFile(file, HouseNumberImportDto.class);
+
+        ArrayList<HouseNumber> houseNumbers = new ArrayList<>();
+        for (int i = 0; i < dtos.size(); i++) {
+            HouseNumberImportDto dto = dtos.get(i);
+
+            Integer roomType = dto.getRoomType();
+//            房间号
+            String roomNumber = dto.getRoomNumber();
+//            房型
+            String houseName = dto.getHouseName();
+
+            //            判断当前房型是否存在当前房间号
+            House house=houseService.getHouseName(houseName,roomType);
+            if (ObjectUtils.isEmpty(house)) {
+                return CommonResult.fail("第"+(i+2)+"行,"+"不存在"+houseName+"该房型");
+            }
+
+            Integer houseId = house.getId();
+
+            HouseNumber houseNumber=houseNumberService.getRoomNumber(houseId,roomNumber);
+            if (ObjectUtils.isEmpty(houseNumber)) {
+                return CommonResult.fail("第"+(i+2)+"行,"+"不存在"+roomNumber+"该房间号");
+            }
+
+
+            String electricEquipmentMeterName = dto.getElectricEquipmentMeterName();
+            LambdaQueryWrapper<ElectricEquipment> wrapperEE=new LambdaQueryWrapper<>();
+            wrapperEE.eq(ElectricEquipment::getMeterName,electricEquipmentMeterName);
+            ElectricEquipment electricEquipment = electricEquipmentService.getOne(wrapperEE);
+
+            if (ObjectUtils.isEmpty(electricEquipment)) {
+                return CommonResult.fail("第"+(i+2)+"行,"+"不存在"+electricEquipmentMeterName+"该电表设备号");
+            }
+
+            String waterEquipmentMeterName = dto.getWaterEquipmentMeterName();
+            LambdaQueryWrapper<WaterEquipment> wrapperWE=new LambdaQueryWrapper<>();
+            wrapperWE.eq(WaterEquipment::getMeterName,waterEquipmentMeterName);
+            WaterEquipment waterEquipment = waterEquipmentService.getOne(wrapperWE);
+            if (ObjectUtils.isEmpty(waterEquipment)) {
+                return CommonResult.fail("第"+(i+2)+"行,"+"不存在"+waterEquipmentMeterName+"该水表设备号");
+            }
+
+            houseNumber.setElectricEquipmentId(electricEquipment.getId()+"");
+            houseNumber.setElectricEquipmentMeterName(electricEquipment.getMeterName());
+            houseNumber.setWaterEquipmentId(waterEquipment.getId()+"");
+            houseNumber.setWaterEquipmentMeterName(waterEquipment.getMeterName());
+            houseNumbers.add(houseNumber);
+        }
+
+        boolean b = houseNumberService.saveOrUpdateBatch(houseNumbers);
+        if (b) {
+            return CommonResult.ok();
+        }
+        return CommonResult.fail();
+    }
+
+
 }
 

+ 12 - 3
src/main/java/com/template/controller/HouseNumberStateController.java

@@ -937,7 +937,7 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
                 unlockingService.save(unlocking);
                 String passWord = unlocking.getPassWord();
                 ArrayList<String> strings = new ArrayList<>();
-//                strings.add(cardNumber);
+                strings.add(cardNumber);
                 weiXiaoComponent.sendNotice(strings, "公寓办理入住成功", "办理入住成功", "您的房间号为:" + roomNumber + ",密码是:" + passWord + "离店时间为:" + liveTime + ",欢迎您入住张玉玲酒店,我们全体员工很荣幸能为您服务,如有任何需要请致电张玉玲,期待为你服务。祝你生活愉快!", null);
             } else if ("2".equals(lockStatus)) {
                 CardInfoDto cid = new CardInfoDto();
@@ -1182,7 +1182,7 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
             if (ObjectUtils.isNotEmpty(unlocking)) {
 //                删除房间密码
                 passwordIssController.deleteLockUser(unlocking.getLuid(), unlocking.getLockUserId());
-
+                unlockingService.removeById(unlocking);
                 OperatingRecord operatingRecord = new OperatingRecord();
 
                 operatingRecord.setHouseNumberId(houseNumber1.getId());
@@ -1311,7 +1311,6 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
         try {
             houseOrder.setOrderStatus("8");
 
-
 //      判断退房在不在预定的时间段中,不在的话则判断是否有人在使用,没有的话按之前的步骤走,有的话则只改订单状态。
             DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
             String reserveLeaveTime = houseOrder.getReserveLeaveTime();
@@ -1328,6 +1327,16 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
                 return CommonResult.ok("该时间段已超过退房时间,已修改其订单状态");
             }
 //            }
+            LambdaQueryWrapper<Unlocking> wrapperU = new LambdaQueryWrapper<>();
+            wrapperU.eq(Unlocking::getOrderNumber, orderNumber)
+                    .eq(Unlocking::getHouseNumberId, houseNumberId);
+            Unlocking unlocking = unlockingService.getOne(wrapperU);
+            if (ObjectUtils.isNotEmpty(unlocking)) {
+//                删除房间密码
+                passwordIssController.deleteLockUser(unlocking.getLuid(), unlocking.getLockUserId());
+                unlockingService.removeById(unlocking);
+            }
+
 
             //      获取水电消费金额和额度
             HouseNumber houseNumber = houseNumberService.getById(houseNumberId);

File diff suppressed because it is too large
+ 416 - 186
src/main/java/com/template/controller/HouseOrderController.java


+ 26 - 11
src/main/java/com/template/controller/HousePriceController.java

@@ -1,14 +1,13 @@
 package com.template.controller;
 
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.HousePriceAPI;
 import com.template.common.utils.DateUtil;
-import com.template.common.utils.ExcelUtils;
+import com.template.common.utils.ExcelUtils2;
 import com.template.model.dto.AlterDto;
 import com.template.model.dto.AlterPriceDto;
 import com.template.model.pojo.House;
@@ -33,9 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.math.BigDecimal;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
@@ -43,7 +40,6 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -112,6 +108,9 @@ public class HousePriceController implements HousePriceAPI {
 
 //    获取改价内容
         List<AlterDto> list = alterPriceDto.getAlterDtoList();
+        if (ObjectUtils.isEmpty(list)||list.size()<=0) {
+            return CommonResult.fail("改价内容不能为空");
+        }
         for (AlterDto alterDto : list) {
             int type = alterDto.getType();
             String name = alterDto.getName();
@@ -120,7 +119,21 @@ public class HousePriceController implements HousePriceAPI {
                     .eq(House::getRoomName, name);
 
             House house = houseService.getOne(wrapper);
+            if (ObjectUtils.isEmpty(house)) {
+                return CommonResult.fail("不存在"+name+"房型");
+            }
             if (ObjectUtils.isNotEmpty(house)) {
+
+                //                判断该房型是否已存在该
+//                String date = alterDto.getDate();
+//                String[] split = date.split(",");
+//                String startTime = split[0];
+//                String endTime = split[1];
+//                List<HousePrice> hp=housePriceService.getHousePrice(startTime, endTime, house.getId());
+//                if (ObjectUtils.isNotEmpty(hp)) {
+//                    return CommonResult.fail("该"+date+"改价时间已包含");
+//                }
+
                 BigDecimal roomPrice = house.getRoomPrice();
                 HousePrice housePrice = new HousePrice();
                 BigDecimal price = alterDto.getPrice();
@@ -133,6 +146,8 @@ public class HousePriceController implements HousePriceAPI {
 //              设置日期
                 housePrice.setSetDate(alterDto.getDate());
 
+                housePriceService.save(housePrice);
+
                 housePrices.add(housePrice);
 
             }
@@ -144,7 +159,7 @@ public class HousePriceController implements HousePriceAPI {
             return CommonResult.ok();
         }
 
-        return CommonResult.fail();
+        return CommonResult.ok();
     }
 
     @Override
@@ -299,7 +314,7 @@ public class HousePriceController implements HousePriceAPI {
 
     @Override
     public void queryExport(HttpServletResponse response, String type, String houseName, String operatingTime, String priceTime, String operatingName) {
-        String fileName = "改价记录.xls";
+
         List<AlterPriceRecordVo> vos = housePriceService.queryExport(type, houseName, operatingTime, priceTime, operatingName);
         //        导出
         Workbook workbook = new XSSFWorkbook();
@@ -320,18 +335,18 @@ public class HousePriceController implements HousePriceAPI {
                 dataRow1.createCell(0).setCellValue(vo.getHouseType());
                 dataRow1.createCell(1).setCellValue(vo.getHouseName());
                 dataRow1.createCell(2).setCellValue(vo.getSetDate());
-                dataRow1.createCell(3).setCellValue(vo.getAlterPrice().toString());
-                dataRow1.createCell(4).setCellValue(vo.getOriginalPrice().toString());
+                dataRow1.createCell(3).setCellValue(vo.getAlterPrice().doubleValue());
+                dataRow1.createCell(4).setCellValue(vo.getOriginalPrice().doubleValue());
                 dataRow1.createCell(5).setCellValue(vo.getName());
                 dataRow1.createCell(6).setCellValue(vo.getDate());
             }
         }
         // 将工作簿写入文件
-        ExcelUtils.excelDownload(workbook, "改价记录表.xlsx", response);
-
+        ExcelUtils2.excelDownload(workbook, "改价记录表.xlsx", response);
 
     }
 
 
+
 }
 

+ 25 - 5
src/main/java/com/template/controller/LoginController.java

@@ -1,13 +1,13 @@
 package com.template.controller;
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.template.annotation.PassToken;
 import com.template.api.LoginControllerAPI;
 import com.template.common.utils.AesUtils;
+import com.template.common.utils.JWTUtil;
 import com.template.common.utils.RSAUtils;
+import com.template.common.utils.paramUtils;
 import com.template.config.MySecurity;
-import com.template.model.enumModel.eStatu;
 import com.template.model.pojo.Admin;
 import com.template.model.pojo.PermissionSetting;
 import com.template.model.request.changePasswordRequest;
@@ -15,8 +15,6 @@ import com.template.model.request.loginRequest;
 import com.template.model.result.CommonResult;
 import com.template.model.vo.LoginVO;
 import com.template.services.AdminService;
-import com.template.common.utils.paramUtils;
-import com.template.common.utils.JWTUtil;
 import com.template.services.PermissionSettingService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
@@ -85,6 +83,28 @@ public class LoginController implements LoginControllerAPI {
             wrapper.eq(PermissionSetting::getAdminMenuId,adminMenuId);
             PermissionSetting one = permissionSettingService.getOne(wrapper);
 
+//            JSONObject jsonObject = new JSONObject();
+////            房态
+//            String houseStatusManagement = one.getHouseStatusManagement();
+//            if (ObjectUtils.isEmpty(houseStatusManagement)) {
+//                jsonObject.put("houseStatusManagement",0);
+//            }else {
+//                jsonObject.put("houseStatusManagement",1);
+//            }
+////            房型
+//            String houseTypeManagement = one.getHouseTypeManagement();
+//
+//            if (ObjectUtils.isEmpty(houseTypeManagement)) {
+//                jsonObject.put("houseTypeManagement",0);
+//            }else {
+//                if (houseTypeManagement.contains("0")) {
+//
+//                    houseType.put("houseType",1);
+//                    houseType.put("housePrice",1);
+//                    jsonObject.put("houseTypeManagement",houseType);
+//                }
+//            }
+
 
             String token = JWTUtil.getAdminToken(result);
             LoginVO login = new LoginVO();
@@ -94,7 +114,7 @@ public class LoginController implements LoginControllerAPI {
             login.setId(result.getId());
             login.setPermissionSettingId(one.getId());
             login.setUser_head(AesUtils.encrypt(result.getId()+""));
-
+            login.setPermissionSetting(one);
             return CommonResult.ok("登录成功",login);
 
         }catch (Exception e){

File diff suppressed because it is too large
+ 161 - 7
src/main/java/com/template/controller/PasswordIssController.java


+ 52 - 26
src/main/java/com/template/controller/UnlockingAdminController.java

@@ -7,6 +7,7 @@ import com.template.common.utils.PasswordChecker;
 import com.template.model.dto.KeyCardDto;
 import com.template.model.dto.KeyFingerprintDto;
 import com.template.model.dto.KeyPassWordDto;
+import com.template.model.dto.UpdateLockDto;
 import com.template.model.pojo.*;
 import com.template.model.result.CommonResult;
 import com.template.services.*;
@@ -85,25 +86,24 @@ public class UnlockingAdminController implements UnlockingAdminControllerAPI {
         if (ObjectUtils.isEmpty(houseNumber)) {
             return CommonResult.fail("该房间不存在");
         }
-        String usersId = keyPassWordDto.getUsersId();
-        Users byId = usersService.getById(usersId);
-        if (ObjectUtils.isEmpty(byId)) {
-            return CommonResult.fail("无该用户");
-        }
+//        String usersId = keyPassWordDto.getUsersId();
+//        Users byId = usersService.getById(usersId);
+//        if (ObjectUtils.isEmpty(byId)) {
+//            return CommonResult.fail("无该用户");
+//        }
         UnlockingAdmin unlockingAdmin = null;
         /**
          * 缺少人的名字和
          */
         try {
 
-
             unlockingAdmin = passwordIssController.savePassWord(keyPassWordDto);
             if (ObjectUtils.isEmpty(unlockingAdmin)) {
                 return CommonResult.fail("该密码已存在,请更换");
             }
 
-            unlockingAdmin.setName(byId.getUserName());
-            unlockingAdmin.setPhone(byId.getPhone());
+            unlockingAdmin.setName(admin.getName());
+            unlockingAdmin.setPhone(admin.getPhoneNumber());
 
 //        添加操作记录
 
@@ -113,7 +113,7 @@ public class UnlockingAdminController implements UnlockingAdminControllerAPI {
             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.setContent("姓名:" + admin.getName());
             operatingRecord.setType("添加密码钥匙");
 
 
@@ -152,19 +152,19 @@ public class UnlockingAdminController implements UnlockingAdminControllerAPI {
         if (ObjectUtils.isEmpty(houseNumber)) {
             return CommonResult.fail("该房间不存在");
         }
-        String usersId = keyCardDto.getUsersId();
-        Users byId = usersService.getById(usersId);
-        if (ObjectUtils.isEmpty(byId)) {
-            return CommonResult.fail("无该用户");
-        }
+//        String usersId = keyCardDto.getUsersId();
+//        Users byId = usersService.getById(usersId);
+//        if (ObjectUtils.isEmpty(byId)) {
+//            return CommonResult.fail("无该用户");
+//        }
 
         UnlockingAdmin unlockingAdmin = null;
 
         try {
           unlockingAdmin = passwordIssController.addCard(keyCardDto);
 
-            unlockingAdmin.setName(byId.getUserName());
-            unlockingAdmin.setPhone(byId.getPhone());
+            unlockingAdmin.setName(admin.getName());
+            unlockingAdmin.setPhone(admin.getPhoneNumber());
 
 //        添加操作记录
 
@@ -175,7 +175,7 @@ public class UnlockingAdminController implements UnlockingAdminControllerAPI {
             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.setContent("姓名:" + admin.getName());
             operatingRecord.setType("添加卡片钥匙");
 
 
@@ -214,19 +214,19 @@ public class UnlockingAdminController implements UnlockingAdminControllerAPI {
         if (ObjectUtils.isEmpty(houseNumber)) {
             return CommonResult.fail("该房间不存在");
         }
-        String usersId = keyFingerprintDto.getUsersId();
-        Users byId = usersService.getById(usersId);
-        if (ObjectUtils.isEmpty(byId)) {
-            return CommonResult.fail("无该用户");
-        }
+//        String usersId = keyFingerprintDto.getUsersId();
+//        Users byId = usersService.getById(usersId);
+//        if (ObjectUtils.isEmpty(byId)) {
+//            return CommonResult.fail("无该用户");
+//        }
 
         UnlockingAdmin unlockingAdmin = null;
 
         try {
             unlockingAdmin = passwordIssController.addFingerprintDto(keyFingerprintDto);
 
-            unlockingAdmin.setName(byId.getUserName());
-            unlockingAdmin.setPhone(byId.getPhone());
+            unlockingAdmin.setName(admin.getName());
+            unlockingAdmin.setPhone(admin.getPhoneNumber());
 
 //        添加操作记录
 
@@ -236,8 +236,8 @@ public class UnlockingAdminController implements UnlockingAdminControllerAPI {
             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("添加卡片钥匙");
+            operatingRecord.setContent("姓名:" + admin.getName());
+            operatingRecord.setType("添加指纹钥匙");
 
 
             unlockingAdminService.save(unlockingAdmin);
@@ -253,8 +253,34 @@ public class UnlockingAdminController implements UnlockingAdminControllerAPI {
 
     }
 
+    @Override
+    public CommonResult deleteLock(Integer unlockingAdminId) {
+        UnlockingAdmin byId = unlockingAdminService.getById(unlockingAdminId);
+        if (ObjectUtils.isEmpty(byId)) {
+            return CommonResult.fail("不存在该记录");
+        }
 
+        String lockUserId = byId.getLockUserId();
+        String luid = byId.getLuid();
 
+        passwordIssController.deleteLockUser(luid,lockUserId);
+
+        unlockingAdminService.removeById(unlockingAdminId);
+
+        return CommonResult.ok();
+    }
+
+    @Override
+    public CommonResult updateLock(UpdateLockDto updateLockDto) {
+        UnlockingAdmin byId = unlockingAdminService.getById(updateLockDto.getUnlockingAdminId());
+        if (ObjectUtils.isEmpty(byId)) {
+            return CommonResult.fail("不存在该记录");
+        }
+
+        String luid = byId.getLuid();
+
+        return null;
+    }
 
 
 }

+ 244 - 0
src/main/java/com/template/controller/UnlockingCustomController.java

@@ -0,0 +1,244 @@
+package com.template.controller;
+
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.template.api.UnlockingCustomControllerAPI;
+import com.template.common.utils.PasswordChecker;
+import com.template.model.dto.CustomKeyCardDto;
+import com.template.model.dto.CustomKeyFingerprintDto;
+import com.template.model.dto.CustomKeyPassWordDto;
+import com.template.model.pojo.*;
+import com.template.model.result.CommonResult;
+import com.template.services.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-07-26
+ */
+@RestController
+public class UnlockingCustomController implements UnlockingCustomControllerAPI {
+
+    @Autowired
+    UnlockingCustomService unlockingCustomService;
+
+    @Autowired
+    PermissionSettingService permissionSettingService;
+
+    @Autowired
+    HouseNumberService houseNumberService;
+
+    @Autowired
+    PasswordIssController passwordIssController;
+
+    @Autowired
+    AdminService adminService;
+
+    @Autowired
+    OperatingRecordService operatingRecordService;
+
+    @Override
+    public CommonResult saveCustomPassWord(CustomKeyPassWordDto dto) {
+        String permissionSettingId = dto.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 = dto.getPassWord();
+        if (!PasswordChecker.isValidPassword(passWord)) {
+            return CommonResult.fail("密码长度的一半不能是连续升序、倒序、一样的数字");
+        }
+
+        Admin admin = adminService.getById(dto.getAdminId());
+        if (ObjectUtils.isEmpty(admin)) {
+            return CommonResult.fail("该管理员不存在");
+        }
+
+        HouseNumber houseNumber = houseNumberService.getById(dto.getHouseNumberId());
+        if (ObjectUtils.isEmpty(houseNumber)) {
+            return CommonResult.fail("该房间不存在");
+        }
+
+        UnlockingCustom unlockingAdmin = null;
+        /**
+         * 缺少人的名字和
+         */
+        try {
+
+            unlockingAdmin = passwordIssController.saveCustomPassWord(dto);
+            if (ObjectUtils.isEmpty(unlockingAdmin)) {
+                return CommonResult.fail("该密码已存在,请更换");
+            }
+
+            unlockingAdmin.setName(dto.getUserName());
+            unlockingAdmin.setPhone(dto.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("姓名:" + dto.getUserName());
+            operatingRecord.setType("添加密码钥匙");
+
+
+            unlockingCustomService.save(unlockingAdmin);
+            operatingRecordService.save(operatingRecord);
+            return CommonResult.ok();
+        }catch (Exception e){
+            e.printStackTrace();
+//            删除锁
+            passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
+            return CommonResult.fail();
+        }
+
+    }
+
+    @Override
+    public CommonResult saveCustomCard(CustomKeyCardDto dto) {
+        String permissionSettingId = dto.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(dto.getAdminId());
+        if (ObjectUtils.isEmpty(admin)) {
+            return CommonResult.fail("该管理员不存在");
+        }
+        HouseNumber houseNumber = houseNumberService.getById(dto.getHouseNumberId());
+        if (ObjectUtils.isEmpty(houseNumber)) {
+            return CommonResult.fail("该房间不存在");
+        }
+
+
+        UnlockingCustom unlockingAdmin = null;
+
+        try {
+            unlockingAdmin = passwordIssController.addCustomCard(dto);
+
+            unlockingAdmin.setName(dto.getUserName());
+            unlockingAdmin.setPhone(dto.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("姓名:" + dto.getUserName());
+            operatingRecord.setType("添加卡片钥匙");
+
+
+            unlockingCustomService.save(unlockingAdmin);
+            operatingRecordService.save(operatingRecord);
+            return CommonResult.ok();
+
+        }catch (Exception e){
+            e.printStackTrace();
+//            删除锁
+            passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
+            return CommonResult.fail();
+        }
+    }
+
+    @Override
+    public CommonResult saveCustomFingerprint(CustomKeyFingerprintDto dto) {
+        String permissionSettingId = dto.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(dto.getAdminId());
+        if (ObjectUtils.isEmpty(admin)) {
+            return CommonResult.fail("该管理员不存在");
+        }
+        HouseNumber houseNumber = houseNumberService.getById(dto.getHouseNumberId());
+        if (ObjectUtils.isEmpty(houseNumber)) {
+            return CommonResult.fail("该房间不存在");
+        }
+
+
+        UnlockingCustom unlockingAdmin = null;
+
+        try {
+            unlockingAdmin = passwordIssController.addCustomFingerprintDto(dto);
+
+            unlockingAdmin.setName(dto.getUserName());
+            unlockingAdmin.setPhone(dto.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("姓名:" + dto.getUserName());
+            operatingRecord.setType("添加指纹钥匙");
+
+
+            unlockingCustomService.save(unlockingAdmin);
+            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 unlockingAdminId) {
+        UnlockingCustom byId = unlockingCustomService.getById(unlockingAdminId);
+        if (ObjectUtils.isEmpty(byId)) {
+            return CommonResult.fail("不存在该记录");
+        }
+
+        String lockUserId = byId.getLockUserId();
+        String luid = byId.getLuid();
+
+        passwordIssController.deleteLockUser(luid,lockUserId);
+
+        unlockingCustomService.removeById(unlockingAdminId);
+
+        return CommonResult.ok();
+    }
+
+}
+

+ 5 - 5
src/main/java/com/template/controller/UploadServlet.java

@@ -28,10 +28,10 @@ public class UploadServlet {
         InputStream fileContent = filePart.getInputStream();
 
         String fileNameWithPath = FileUtil.getFileNameWithPath() + ".jpg";
-        FileUtil.makeDirs(fileNameWithPath, "E://image3");
-        String imgFilePath = "E://image3/" + fileNameWithPath;
-//        FileUtil.makeDirs(fileNameWithPath, "/home/nginx/html/image");
-//        String imgFilePath = "/home/nginx/html/image/" + fileNameWithPath;
+//        FileUtil.makeDirs(fileNameWithPath, "E://image3");
+//        String imgFilePath = "E://image3/" + fileNameWithPath;
+        FileUtil.makeDirs(fileNameWithPath, "/usr/local/nginx/html/image");
+        String imgFilePath = "/usr/local/nginx/html/image/" + fileNameWithPath;
 
 //        上传图片
         Files.copy(fileContent,new File(imgFilePath).toPath());
@@ -45,7 +45,7 @@ public class UploadServlet {
 //            out.write(buffer, 0, bytesRead);
 //        }
 //        out.close();
-        String url="192.168.161.190:12345/"+fileNameWithPath;
+        String url="https://chtech.ncjti.edu.cn/hotel/image/"+fileNameWithPath;
 //        response.getWriter().println(url);
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("url",url);

+ 0 - 15
src/main/java/com/template/controller/UsersController.java

@@ -1,11 +1,9 @@
 package com.template.controller;
 
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.extension.api.R;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.api.UsersAPI;
 import com.template.model.dto.UsersDetailsDto;
@@ -18,12 +16,9 @@ import com.template.model.vo.UsersPageVo;
 import com.template.services.PermissionSettingService;
 import com.template.services.UsersMenuService;
 import com.template.services.UsersService;
-import io.swagger.annotations.ApiModelProperty;
 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;
@@ -191,17 +186,7 @@ public class UsersController implements UsersAPI {
         return CommonResult.ok(departmentList);
     }
 
-    @Override
-    public CommonResult userList(String userMenuId) {
-        if (ObjectUtils.isEmpty(userMenuId)) {
-            return CommonResult.fail();
-        }
-       LambdaQueryWrapper<Users> wrapper=new LambdaQueryWrapper<>();
-        wrapper.eq(Users::getUserMenuId,userMenuId);
-        List<Users> list = usersService.list(wrapper);
 
-        return CommonResult.ok(list);
-    }
 
     @Override
     public CommonResult getUser(String userId) {

+ 0 - 14
src/main/java/com/template/controller/UsersMenuController.java

@@ -1,17 +1,13 @@
 package com.template.controller;
 
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.UsersMenuAPI;
-import com.template.model.dto.SaveParentDto;
 import com.template.model.dto.SaveParentUserDto;
 import com.template.model.dto.SaveSecondaryUserDto;
-import com.template.model.dto.UpdateMenuPermissionSettingDto;
-import com.template.model.pojo.AdminMenu;
 import com.template.model.pojo.PermissionSetting;
 import com.template.model.pojo.Users;
 import com.template.model.pojo.UsersMenu;
@@ -21,9 +17,6 @@ import com.template.services.PermissionSettingService;
 import com.template.services.UsersMenuService;
 import com.template.services.UsersService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestMapping;
-
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
@@ -120,14 +113,7 @@ public class UsersMenuController implements UsersMenuAPI {
         return CommonResult.ok();
     }
 
-    @Override
-    public CommonResult getUserRole() {
-        Wrapper<UsersMenu> wrapper = new LambdaQueryWrapper<>();
-        List<UsersMenu> adminMenus = usersMenuService.list(wrapper);
-        List<AdminMenuTreeVo> adminMenuTreeVos = QueryAreaTreeRecords(0, adminMenus);
 
-        return CommonResult.ok(adminMenuTreeVos);
-    }
 
     @Override
     public CommonResult userListPage(int adminMenuId,int page, int size, String keyWord, String startTime, String endTime) {

+ 9 - 2
src/main/java/com/template/mapper/HouseNumberMapper.java

@@ -23,12 +23,12 @@ import java.util.List;
 @Mapper
 public interface HouseNumberMapper extends BaseMapper<HouseNumber> {
 
-    List<HouseStateVo> houseStatePage(@Param("keyWord") String keyWord, @Param("houseType") String houseType, @Param("start") LocalDateTime start,@Param("end") LocalDateTime end);
+    List<HouseStateVo> houseStatePage(@Param("keyWord") String keyWord, @Param("houseType") String houseType, @Param("start") LocalDateTime start, @Param("end") LocalDateTime end);
 
     IPage<CalendarPageVo> houseStateCalendarPage(Page<CalendarPageVo> pageVo, @Param("keyWord") String keyWord, @Param("houseType") String houseType);
 
 
-    List<houseLockListVo> houseLockListDto(@Param("roomNumber") String roomNumber,@Param("houseIds") String houseIds);
+    List<houseLockListVo> houseLockListDto(@Param("roomNumber") String roomNumber, @Param("houseIds") String houseIds);
 
     List<Integer> getNumberState(@Param("date") Date date);
 
@@ -43,4 +43,11 @@ public interface HouseNumberMapper extends BaseMapper<HouseNumber> {
     List<FreeVo> openDropDownShow(String houseNumberIds);
 
     List<HouseNumberVo> roomChangePage(@Param("houseId") String houseId);
+
+    IPage<HouseNumberPageVo> pageList(Page<HouseNumberPageVo> pageVo, @Param("keyWord") String keyWord, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    List<HouseNumberPageVo> listExport(@Param("keyWord") String keyWord, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+
+
 }

+ 2 - 0
src/main/java/com/template/mapper/HouseOrderMapper.java

@@ -8,6 +8,7 @@ import com.template.model.pojo.HouseOrder;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -32,4 +33,5 @@ public interface HouseOrderMapper extends BaseMapper<HouseOrder> {
 
     List<ReportStatisticsExportVo> reportStatisticsExport(@Param("s") String s,@Param("keyWord") String keyWord,@Param("startTime") String startTime,@Param("endTime") String endTime);
 
+    List<String> payHouseOrderUser(@Param("start") LocalDateTime start,@Param("end") LocalDateTime end);
 }

+ 4 - 1
src/main/java/com/template/mapper/HousePriceMapper.java

@@ -1,8 +1,8 @@
 package com.template.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.template.model.pojo.HousePrice;
 import com.template.model.vo.AlterPriceRecordVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -30,4 +30,7 @@ public interface HousePriceMapper extends BaseMapper<HousePrice> {
     List<AlterPriceRecordVo> queryExport(@Param("type") String type,@Param("houseName") String houseName,@Param("operatingTime") String operatingTime,@Param("priceTime") String priceTime,@Param("operatingName") String operatingName);
 
 
+    List<HousePrice> getHousePrice(@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("id") Integer id);
+
+    List<HousePrice> getDatePrice(@Param("localDate1") LocalDate localDate1,@Param("houseId") String houseId);
 }

+ 2 - 1
src/main/java/com/template/mapper/UnlockingAdminMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -18,5 +19,5 @@ import java.util.List;
 @Mapper
 public interface UnlockingAdminMapper extends BaseMapper<UnlockingAdmin> {
 
-    List<UnlockingAdmin> key(@Param("houseNumberId") String houseNumberId);
+    List<UnlockingAdmin> key(@Param("houseNumberId") String houseNumberId,@Param("date") Date date);
 }

+ 23 - 0
src/main/java/com/template/mapper/UnlockingCustomMapper.java

@@ -0,0 +1,23 @@
+package com.template.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.template.model.pojo.UnlockingCustom;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-07-26
+ */
+@Mapper
+public interface UnlockingCustomMapper extends BaseMapper<UnlockingCustom> {
+
+    List<UnlockingCustom> key(@Param("houseNumberId") String houseNumberId,@Param("date") Date date);
+}

+ 2 - 1
src/main/java/com/template/mapper/UnlockingMapper.java

@@ -6,6 +6,7 @@ import com.template.model.vo.UnlockingKeyVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -19,6 +20,6 @@ import java.util.List;
 @Mapper
 public interface UnlockingMapper extends BaseMapper<Unlocking> {
 
-    List<UnlockingKeyVo> key(@Param("houseNumberId") String houseNumberId);
+    List<UnlockingKeyVo> key(@Param("houseNumberId") String houseNumberId,@Param("date") Date date);
 
 }

+ 53 - 0
src/main/java/com/template/model/dto/CustomKeyCardDto.java

@@ -0,0 +1,53 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class CustomKeyCardDto { /**
+ * 锁设备ID
+ */
+@NotNull(message = "锁设备ID不能为空")
+public String luid;
+    /**
+     * 卡号
+     */
+    @NotNull(message = "卡号不能为空")
+    public String card;
+
+    @NotNull(message = "卡类型不能为空 0 卡片 1 身份证")
+    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 = "自定义手机号")
+    private String phone;
+    //    用户id
+    @NotNull(message = "自定义用户名称")
+    private String userName;
+
+    @NotNull(message = "管理员id不能为空")
+    private String adminId;
+
+    //    锁用户类型状态码(1:管理员用户,2:普通用户(永久),4:时效性用户,5:一次性时效密码用户,100:时效性无网络密码用户)
+    @NotNull(message = "锁用户类型状态码不能为空")
+    private Integer type;
+
+}

+ 51 - 0
src/main/java/com/template/model/dto/CustomKeyFingerprintDto.java

@@ -0,0 +1,51 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class CustomKeyFingerprintDto {
+    /**
+     * 锁设备ID
+     */
+    @NotNull(message = "锁设备ID不能为空")
+    public String luid;
+    /**
+     * 指纹特征值
+     */
+    @NotNull(message = "指纹特征值不能为空")
+    public String fingerprintData;
+    /**
+     * 开始时间 时间戳
+     */
+    @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 = "自定义手机号")
+    private String phone;
+    //    用户id
+    @NotNull(message = "自定义用户名称")
+    private String userName;
+
+    @NotNull(message = "管理员id不能为空")
+    private String adminId;
+
+    //    锁用户类型状态码(1:管理员用户,2:普通用户(永久),4:时效性用户,5:一次性时效密码用户,100:时效性无网络密码用户)
+    @NotNull(message = "锁用户类型状态码不能为空")
+    private Integer type;
+
+}

+ 49 - 0
src/main/java/com/template/model/dto/CustomKeyPassWordDto.java

@@ -0,0 +1,49 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class CustomKeyPassWordDto {
+    //    权限表id
+    @NotNull(message = "权限表id不能为空")
+    private String permissionSettingId;
+
+
+    //    房间号id
+    @NotNull(message = "房间号id不能为空")
+    private String houseNumberId;
+
+    //    开始时间
+    @NotNull(message = "开始时间不能为空")
+    private String startTime;
+
+    //    结束时间
+    @NotNull(message = "结束时间不能为空")
+    private String endTime;
+
+//    手机号
+    @NotNull(message = "自定义手机号")
+    private String phone;
+
+    //    名称
+    @NotNull(message = "定义用户名称")
+    private String userName;
+
+    @NotNull(message = "管理员id不能为空")
+    private String adminId;
+
+
+    //    设备id
+    @NotNull(message = "设备id不能为空")
+    private String equipmentType;
+
+    //    设置的密码
+    @NotNull(message = "密码不能为空")
+    private String passWord;
+
+    //    锁用户类型状态码(1:管理员用户,2:普通用户(永久),4:时效性用户,5:一次性时效密码用户,100:时效性无网络密码用户)
+    @NotNull(message = "锁用户类型状态码不能为空")
+    private Integer type;
+}

+ 21 - 0
src/main/java/com/template/model/dto/HouseLockListImportDto.java

@@ -0,0 +1,21 @@
+package com.template.model.dto;
+
+import com.template.annotation.ExcelImport;
+import lombok.Data;
+
+@Data
+public class HouseLockListImportDto {
+
+    @ExcelImport(value = "房型类型",kv = "1-全日房;2-钟点房")
+    private Integer roomType;
+
+    @ExcelImport("房型名称")
+    private String houseName;
+
+    @ExcelImport("房间号")
+    private String roomNumber;
+
+    @ExcelImport(value = "门锁设备型号")
+    private String equipmentType;
+
+}

+ 28 - 0
src/main/java/com/template/model/dto/HouseNumberImportDto.java

@@ -0,0 +1,28 @@
+package com.template.model.dto;
+
+import com.template.annotation.ExcelImport;
+import lombok.Data;
+
+@Data
+public class HouseNumberImportDto {
+
+    @ExcelImport("序号")
+    private Integer serialNumber;
+
+    @ExcelImport(value = "水表编码")
+    private String waterEquipmentMeterName;
+
+    @ExcelImport(value = "电表编码")
+    private String electricEquipmentMeterName;
+
+    @ExcelImport(value = "房型类型",kv = "1-全日房;2-钟点房")
+    private Integer roomType;
+
+    @ExcelImport("房型名称")
+    private String houseName;
+
+    @ExcelImport("房间号")
+    private String roomNumber;
+
+
+}

+ 1 - 1
src/main/java/com/template/model/dto/KeyCardDto.java

@@ -45,5 +45,5 @@ public class KeyCardDto {
     private String usersId;
     //    锁用户类型状态码(1:管理员用户,2:普通用户(永久),4:时效性用户,5:一次性时效密码用户,100:时效性无网络密码用户)
     @NotNull(message = "锁用户类型状态码不能为空")
-    private String type;
+    private Integer type;
 }

+ 1 - 1
src/main/java/com/template/model/dto/KeyFingerprintDto.java

@@ -43,6 +43,6 @@ public class KeyFingerprintDto {
     private String usersId;
     //    锁用户类型状态码(1:管理员用户,2:普通用户(永久),4:时效性用户,5:一次性时效密码用户,100:时效性无网络密码用户)
     @NotNull(message = "锁用户类型状态码不能为空")
-    private String type;
+    private Integer type;
 
 }

+ 1 - 1
src/main/java/com/template/model/dto/KeyPassWordDto.java

@@ -39,6 +39,6 @@ public class KeyPassWordDto {
 
     //    锁用户类型状态码(1:管理员用户,2:普通用户(永久),4:时效性用户,5:一次性时效密码用户,100:时效性无网络密码用户)
     @NotNull(message = "锁用户类型状态码不能为空")
-    private String type;
+    private Integer type;
 
 }

+ 13 - 0
src/main/java/com/template/model/dto/UpdateLockDto.java

@@ -0,0 +1,13 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+@Data
+public class UpdateLockDto {
+    private Integer unlockingAdminId;
+
+    private String startTime;
+
+    private String endTime;
+
+}

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

@@ -14,7 +14,8 @@ public enum PasswordUrlEnum {
     Password("addPassword","下发密码"),
     DeleteLockUser("deleteLockUser","删除锁用户"),
     GetLockDeviceList("getLockDeviceList","获得门锁设备信息列表"),
-    RemoteOpen("remoteOpen","远程开锁");
+    RemoteOpen("remoteOpen","远程开锁"),
+    BatchModifyUserValidTimeRequest("batchModifyUserValidTimeRequest","批量修改用户时效");
     String url;
     String dsc;
 

+ 1 - 1
src/main/java/com/template/model/pojo/UnlockingAdmin.java

@@ -39,7 +39,7 @@ public class UnlockingAdmin implements Serializable {
     private String houseNumberId;
 
     @ApiModelProperty(value = "类型(1:管理员用户,2:普通用户(永久),4:时效性用户,5:一次性时效密码用户,100:时效性无网络密码用户)")
-    private String type;
+    private Integer type;
 
     @ApiModelProperty(value = "锁用户id(每次生成密码/卡片/指纹时都会产生)")
     private String lockUserId;

+ 84 - 0
src/main/java/com/template/model/pojo/UnlockingCustom.java

@@ -0,0 +1,84 @@
+package com.template.model.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-07-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="UnlockingCustom对象", description="")
+public class UnlockingCustom 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 Integer type;
+
+    @ApiModelProperty(value = "锁用户id(每次生成密码/卡片/指纹时都会产生)")
+    private String lockUserId;
+
+    @ApiModelProperty(value = "锁设备UID")
+    private String luid;
+
+    @ApiModelProperty(value = "开锁的方式(1.密码,2.卡片,3.指纹)")
+    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 - 0
src/main/java/com/template/model/vo/AppletReserveDayVo.java

@@ -0,0 +1,12 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+@Data
+public class AppletReserveDayVo {
+    private String date;
+
+    private String hourDate;
+
+    private String status;
+}

+ 50 - 0
src/main/java/com/template/model/vo/HouseNumberPageVo.java

@@ -0,0 +1,50 @@
+package com.template.model.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class HouseNumberPageVo {
+    @ApiModelProperty(value = "房间号表")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "房型id")
+    private String houseId;
+
+    @ApiModelProperty(value = "房间号")
+    private String roomNumber;
+
+    @ApiModelProperty(value = "房间状态 1.净房 2.脏房")
+    private Integer houseStatus;
+
+//    @ApiModelProperty(value = "状态 1.空闲 2.正在使用")
+//    private Integer status;
+
+    @ApiModelProperty(value = "电开关操作 1开电,2关电")
+    private String electricType;
+
+    @ApiModelProperty(value = "电表设备id")
+    private String electricEquipmentId;
+
+    @ApiModelProperty(value = "电表设备编码")
+    private String electricEquipmentMeterName;
+
+    @ApiModelProperty(value = "水表设备id")
+    private String waterEquipmentId;
+
+    @ApiModelProperty(value = "水表设备编码")
+    private String waterEquipmentMeterName;
+
+    @ApiModelProperty(value = "创建时间")
+    private String createTime;
+
+    @ApiModelProperty(value = "房型类型,1-全日房;2-钟点房")
+    private Integer roomType;
+
+    @ApiModelProperty(value = "房型名称")
+    private String houseName;
+
+}

+ 2 - 0
src/main/java/com/template/model/vo/HouseOrderPageListVo.java

@@ -29,6 +29,8 @@ public class HouseOrderPageListVo {
     private String houseNumber;
     //  订单金额
     private BigDecimal orderPrice;
+    @ApiModelProperty(value = "订单渠道(1线上,2管理端)")
+    private String orderChannel;
     //    支付渠道
     private String payType;
     //    订单渠道

+ 3 - 0
src/main/java/com/template/model/vo/LoginVO.java

@@ -1,5 +1,6 @@
 package com.template.model.vo;
 
+import com.template.model.pojo.PermissionSetting;
 import lombok.Data;
 
 /**
@@ -36,4 +37,6 @@ public class LoginVO {
 
     private String user_head;
 
+    private PermissionSetting permissionSetting;
+
 }

+ 2 - 0
src/main/java/com/template/model/vo/UnlockingKeyVo.java

@@ -16,4 +16,6 @@ public class UnlockingKeyVo {
     private String name;
     private String phone;
 
+    private String createTime;
+
 }

+ 7 - 0
src/main/java/com/template/services/HouseNumberService.java

@@ -38,4 +38,11 @@ public interface HouseNumberService extends IService<HouseNumber> {
     List<FreeVo> opneDropDownShow(String houseNumberIds);
 
     List<HouseNumberVo> roomChangePage(String houseId);
+
+    HouseNumber getRoomNumber(Integer houseId, String roomNumber);
+
+    PageUtils<HouseNumberPageVo> pageList(int page, int size, String keyWord, String startTime, String endTime);
+
+    List<HouseNumberPageVo> listExport(String keyWord, String startTime, String endTime);
+
 }

+ 4 - 0
src/main/java/com/template/services/HouseOrderService.java

@@ -6,6 +6,7 @@ import com.template.model.pojo.HouseOrder;
 import com.template.model.result.PageUtils;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -48,4 +49,7 @@ public interface HouseOrderService extends IService<HouseOrder> {
     PageUtils<ReportStatisticsVo> reportStatisticsPage(String s, String keyWord, String startTime, String endTime, int page, int size);
 
     List<ReportStatisticsExportVo> reportStatisticsExport(String s, String keyWord, String startTime, String endTime);
+
+    List<String> payHouseOrderUser(LocalDateTime start, LocalDateTime end);
+
 }

+ 3 - 0
src/main/java/com/template/services/HousePriceService.java

@@ -26,4 +26,7 @@ public interface HousePriceService extends IService<HousePrice> {
     List<AlterPriceRecordVo> queryExport(String type, String houseName, String operatingTime, String priceTime, String operatingName);
 
 
+    List<HousePrice> getHousePrice(String startTime, String endTime, Integer id);
+
+    List<HousePrice> getDatePrice(LocalDate localDate1, String houseId);
 }

+ 1 - 3
src/main/java/com/template/services/HouseService.java

@@ -3,7 +3,6 @@ package com.template.services;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.template.model.pojo.House;
 import com.template.model.result.PageUtils;
-import com.template.model.vo.HouseAppletPageVo;
 import com.template.model.vo.HouseVo;
 import com.template.model.vo.HousedetailsVo;
 import com.template.model.vo.RoomTypeVo;
@@ -30,6 +29,5 @@ public interface HouseService extends IService<House> {
     List<String> group();
 
 
-
-
+    House getHouseName(String houseName,Integer roomType);
 }

+ 2 - 1
src/main/java/com/template/services/UnlockingAdminService.java

@@ -3,6 +3,7 @@ package com.template.services;
 import com.template.model.pojo.UnlockingAdmin;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -15,6 +16,6 @@ import java.util.List;
  */
 public interface UnlockingAdminService extends IService<UnlockingAdmin> {
 
-    List<UnlockingAdmin> key(String houseNumberId);
+    List<UnlockingAdmin> key(String houseNumberId, Date date);
 
 }

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

@@ -0,0 +1,20 @@
+package com.template.services;
+
+import com.template.model.pojo.UnlockingCustom;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-07-26
+ */
+public interface UnlockingCustomService extends IService<UnlockingCustom> {
+
+    List<UnlockingCustom> key(String houseNumberId, Date date);
+}

+ 2 - 1
src/main/java/com/template/services/UnlockingService.java

@@ -4,6 +4,7 @@ import com.template.model.pojo.Unlocking;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.template.model.vo.UnlockingKeyVo;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -16,7 +17,7 @@ import java.util.List;
  */
 public interface UnlockingService extends IService<Unlocking> {
 
-    List<UnlockingKeyVo> key(String houseNumberId);
+    List<UnlockingKeyVo> key(String houseNumberId, Date date);
 
     Unlocking getOrderNumber(String orderNumber);
 }

+ 22 - 0
src/main/java/com/template/services/impl/HouseNumberServiceImpl.java

@@ -1,5 +1,6 @@
 package com.template.services.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -87,5 +88,26 @@ public class HouseNumberServiceImpl extends ServiceImpl<HouseNumberMapper, House
         return houseNumberMapper.roomChangePage(houseId);
     }
 
+    @Override
+    public HouseNumber getRoomNumber(Integer houseId, String roomNumber) {
+        LambdaQueryWrapper<HouseNumber> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(HouseNumber::getHouseId,houseId)
+                .eq(HouseNumber::getRoomNumber,roomNumber);
+        HouseNumber houseNumber = this.getOne(wrapper);
+        return houseNumber;
+    }
+
+    @Override
+    public PageUtils<HouseNumberPageVo> pageList(int page, int size, String keyWord, String startTime, String endTime) {
+        Page<HouseNumberPageVo> pageVo = new Page<>(page,size);
+        IPage<HouseNumberPageVo> result=houseNumberMapper.pageList(pageVo,keyWord,startTime,endTime);
+        return new PageUtils(result);
+    }
+
+    @Override
+    public List<HouseNumberPageVo> listExport(String keyWord, String startTime, String endTime) {
+        return houseNumberMapper.listExport(keyWord,startTime,endTime);
+    }
+
 
 }

+ 4 - 0
src/main/java/com/template/services/impl/HouseNumberStateServiceImpl.java

@@ -51,4 +51,8 @@ public class HouseNumberStateServiceImpl extends ServiceImpl<HouseNumberStateMap
     public HouseNumberState getMaintainHouseNumberState(String houseNumberId, LocalDateTime date) {
         return houseNumberStateMapper.getMaintainHouseNumberState(houseNumberId,date);
     }
+
+
+
+
 }

+ 60 - 40
src/main/java/com/template/services/impl/HouseOrderServiceImpl.java

@@ -4,13 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.template.common.utils.DateUtil;
 import com.template.mapper.HouseOrderMapper;
-import com.template.model.vo.*;
 import com.template.model.pojo.*;
 import com.template.model.result.PageUtils;
+import com.template.model.vo.*;
 import com.template.services.*;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -60,11 +60,12 @@ public class HouseOrderServiceImpl extends ServiceImpl<HouseOrderMapper, HouseOr
 
         DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        LocalDate state = LocalDateTime.parse(liveTime, dateTimeFormatter1).toLocalDate();
-        LocalDate end = LocalDateTime.parse(leaveTime, dateTimeFormatter1).toLocalDate();
-        LocalDateTime stateTime = LocalDateTime.parse(liveTime, dateTimeFormatter1);
-        LocalDateTime endTime = LocalDateTime.parse(leaveTime, dateTimeFormatter1);
 
+        LocalDateTime stateTime = LocalDateTime.parse(liveTime,dateTimeFormatter1);
+        LocalDateTime endTime = LocalDateTime.parse(leaveTime,dateTimeFormatter1);
+
+        LocalDate state = stateTime.toLocalDate();
+        LocalDate end = endTime.toLocalDate();
 //        获取这段时间内的所有改价记录
         List<HousePrice> housePrices = housePriceService.housePrice(stateTime, endTime, houseId);
 
@@ -112,50 +113,64 @@ public class HouseOrderServiceImpl extends ServiceImpl<HouseOrderMapper, HouseOr
         BigDecimal totalPrice = new BigDecimal(0);
         for (int i = 0; i < until; i++) {
             LocalDate localDate1 = state.plusDays(i);
+            List<HousePrice> housePrices1=housePriceService.getDatePrice(localDate1,houseId);
+//            LocalDate localDate2 = state.plusDays(i+1);
+//            List<HousePrice> housePrices = housePriceService.housePrice(localDate1, localDate2, houseId);
             if (ObjectUtils.isNotEmpty(scheduleList)) {
                 for (ClassSchedule classSchedule : scheduleList) {
                     String dateTime = classSchedule.getDateTime();
                     LocalDate parse = LocalDate.parse(dateTime, dateTimeFormatter2);
                     if (!localDate1.equals(parse)) {
-                        if (ObjectUtils.isNotEmpty(housePrices)) {
-                            for (HousePrice housePrice : housePrices) {
-                                String setDate = housePrice.getSetDate();
-                                String[] split = setDate.split(",");
-                                Date startDate = DateUtil.parseDateOnly(split[0]);
-                                Date endDate = DateUtil.parseDateOnly(split[1]);
-                                Date date1 = Date.from(localDate1.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
-                                //      判断当前时间是否在[startTime, endTime]区间
-                                assert startDate != null;
-                                boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
-                                if (effectiveDate) {
-                                    BigDecimal price = housePrice.getPrice();
-                                    totalPrice = totalPrice.add(price);
-                                } else {
-                                    totalPrice = totalPrice.add(roomPrice);
-                                }
-                            }
-
-                        }
-                    }
-                }
-            } else {
-                if (ObjectUtils.isNotEmpty(housePrices)) {
-                    for (HousePrice housePrice : housePrices) {
-                        String setDate = housePrice.getSetDate();
-                        String[] split = setDate.split(",");
-                        Date startDate = DateUtil.parseDateOnly(split[0]);
-                        Date endDate = DateUtil.parseDateOnly(split[1]);
-                        Date date1 = Date.from(localDate1.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
-                        //      判断当前时间是否在[startTime, endTime]区间
-                        assert startDate != null;
-                        boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
-                        if (effectiveDate) {
+                        if (ObjectUtils.isNotEmpty(housePrices1)) {
+                            HousePrice housePrice = housePrices1.get(housePrices1.size() - 1);
                             BigDecimal price = housePrice.getPrice();
                             totalPrice = totalPrice.add(price);
-                        } else {
+                        }else {
                             totalPrice = totalPrice.add(roomPrice);
                         }
+//                            for (HousePrice housePrice : housePrices1) {
+//                                String setDate = housePrice.getSetDate();
+//                                String[] split = setDate.split(",");
+//                                Date startDate = DateUtil.parseDateOnly(split[0]);
+//                                Date endDate = DateUtil.parseDateOnly(split[1]);
+//                                Date date1 = Date.from(localDate1.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+//                                //      判断当前时间是否在[startTime, endTime]区间
+//                                assert startDate != null;
+//                                boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
+//                                if (effectiveDate) {
+//                                    BigDecimal price = housePrice.getPrice();
+//                                    totalPrice = totalPrice.add(price);
+//                                } else {
+//                                    totalPrice = totalPrice.add(roomPrice);
+//                                }
+//                            }
+
+
                     }
+                }
+            } else {
+                if (ObjectUtils.isNotEmpty(housePrices1)) {
+                    if (ObjectUtils.isNotEmpty(housePrices1)) {
+                        HousePrice housePrice = housePrices1.get(housePrices1.size() - 1);
+                        BigDecimal price = housePrice.getPrice();
+                        totalPrice = totalPrice.add(price);
+                    }
+//                    for (HousePrice housePrice : housePrices1) {
+//                        String setDate = housePrice.getSetDate();
+//                        String[] split = setDate.split(",");
+//                        Date startDate = DateUtil.parseDateOnly(split[0]);
+//                        Date endDate = DateUtil.parseDateOnly(split[1]);
+//                        Date date1 = Date.from(localDate1.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+//                        //      判断当前时间是否在[startTime, endTime]区间
+//                        assert startDate != null;
+//                        boolean effectiveDate = DateUtil.isEffectiveDate(date1, startDate, endDate);
+//                        if (effectiveDate) {
+//                            BigDecimal price = housePrice.getPrice();
+//                            totalPrice = totalPrice.add(price);
+//                        } else {
+//                            totalPrice = totalPrice.add(roomPrice);
+//                        }
+//                    }
                 } else {
                     totalPrice = totalPrice.add(roomPrice);
                 }
@@ -322,4 +337,9 @@ public class HouseOrderServiceImpl extends ServiceImpl<HouseOrderMapper, HouseOr
     public List<ReportStatisticsExportVo> reportStatisticsExport(String s, String keyWord, String startTime, String endTime) {
         return houseOrderMapper.reportStatisticsExport(s,keyWord,startTime,endTime);
     }
+
+    @Override
+    public List<String> payHouseOrderUser(LocalDateTime start, LocalDateTime end) {
+        return houseOrderMapper.payHouseOrderUser(start,end);
+    }
 }

+ 11 - 1
src/main/java/com/template/services/impl/HousePriceServiceImpl.java

@@ -2,12 +2,12 @@ package com.template.services.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.template.mapper.HousePriceMapper;
 import com.template.model.pojo.HousePrice;
 import com.template.model.result.PageUtils;
 import com.template.model.vo.AlterPriceRecordVo;
 import com.template.services.HousePriceService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -44,4 +44,14 @@ public class HousePriceServiceImpl extends ServiceImpl<HousePriceMapper, HousePr
     public List<AlterPriceRecordVo> queryExport(String type, String houseName, String operatingTime, String priceTime, String operatingName) {
         return housePriceMapper.queryExport(type,houseName,operatingTime,priceTime,operatingName);
     }
+
+    @Override
+    public List<HousePrice> getHousePrice(String startTime, String endTime, Integer id) {
+        return housePriceMapper.getHousePrice(startTime,endTime,id);
+    }
+
+    @Override
+    public List<HousePrice> getDatePrice(LocalDate localDate1, String houseId) {
+        return housePriceMapper.getDatePrice(localDate1,houseId);
+    }
 }

+ 10 - 2
src/main/java/com/template/services/impl/HouseServiceImpl.java

@@ -1,16 +1,16 @@
 package com.template.services.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.template.mapper.HouseMapper;
 import com.template.model.pojo.House;
 import com.template.model.result.PageUtils;
-import com.template.model.vo.HouseAppletPageVo;
 import com.template.model.vo.HouseVo;
 import com.template.model.vo.HousedetailsVo;
 import com.template.model.vo.RoomTypeVo;
 import com.template.services.HouseService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -53,7 +53,15 @@ public class HouseServiceImpl extends ServiceImpl<HouseMapper, House> implements
         return roomNameList;
     }
 
+    @Override
+    public House getHouseName(String houseName,Integer roomType) {
+        LambdaQueryWrapper<House> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(House::getRoomName,houseName)
+                .eq(House::getRoomType,roomType);
 
+        House house = this.getOne(wrapper);
+        return house;
+    }
 
 
 }

+ 3 - 2
src/main/java/com/template/services/impl/UnlockingAdminServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -24,8 +25,8 @@ public class UnlockingAdminServiceImpl extends ServiceImpl<UnlockingAdminMapper,
     UnlockingAdminMapper unlockingAdminMapper;
 
     @Override
-    public List<UnlockingAdmin> key(String houseNumberId) {
-        List<UnlockingAdmin> unlockingAdmins=unlockingAdminMapper.key(houseNumberId);
+    public List<UnlockingAdmin> key(String houseNumberId, Date date) {
+        List<UnlockingAdmin> unlockingAdmins=unlockingAdminMapper.key(houseNumberId,date);
 
         return unlockingAdmins;
     }

+ 31 - 0
src/main/java/com/template/services/impl/UnlockingCustomServiceImpl.java

@@ -0,0 +1,31 @@
+package com.template.services.impl;
+
+import com.template.model.pojo.UnlockingCustom;
+import com.template.mapper.UnlockingCustomMapper;
+import com.template.services.UnlockingCustomService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-07-26
+ */
+@Service
+public class UnlockingCustomServiceImpl extends ServiceImpl<UnlockingCustomMapper, UnlockingCustom> implements UnlockingCustomService {
+
+    @Autowired
+    UnlockingCustomMapper unlockingCustomMapper;
+
+    @Override
+    public List<UnlockingCustom> key(String houseNumberId, Date date) {
+        return unlockingCustomMapper.key(houseNumberId,date);
+    }
+}

+ 3 - 2
src/main/java/com/template/services/impl/UnlockingServiceImpl.java

@@ -9,6 +9,7 @@ import com.template.services.UnlockingService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -25,8 +26,8 @@ public class UnlockingServiceImpl extends ServiceImpl<UnlockingMapper, Unlocking
     UnlockingMapper unlockingMapper;
 
     @Override
-    public List<UnlockingKeyVo> key(String houseNumberId) {
-        List<UnlockingKeyVo> unlockingKeyVos=unlockingMapper.key(houseNumberId);
+    public List<UnlockingKeyVo> key(String houseNumberId, Date date) {
+        List<UnlockingKeyVo> unlockingKeyVos=unlockingMapper.key(houseNumberId,date);
 
         return unlockingKeyVos;
     }

+ 60 - 0
src/main/resources/mapper/template/HouseNumberMapper.xml

@@ -225,5 +225,65 @@
         WHERE hn.house_id=#{houseId} AND hn.deleted=0 and hn.house_status=1
     </select>
 
+    <select id="pageList" resultType="com.template.model.vo.HouseNumberPageVo">
+        SELECT
+            hn.id,
+            hn.house_id as houseId,
+            hn.room_number as roomNumber,
+            hn.house_status as houseStatus,
+            hn.electric_type as electricType,
+            hn.electric_equipment_id as electricEquipmentId,
+            hn.electric_equipment_meter_name as electricEquipmentMeterName,
+            hn.water_equipment_id as waterEquipmentId,
+            hn.water_equipment_meter_name as waterEquipmentMeterName,
+            hn.create_time as createTime,
+            h.room_name as houseName,
+            h.room_type as roomType
+        FROM
+            `house_number` hn
+                LEFT JOIN house h on h.id=hn.house_id AND h.deleted=0
+        WHERE
+            hn.deleted=0
+        <if test="keyWord != null and keyWord != ''">
+            AND (hn.room_number LIKE '%' #{keyWord} '%' OR hn.electric_equipment_meter_name LIKE '%' #{keyWord} '%'  OR hn.water_equipment_meter_name LIKE '%' #{keyWord} '%')
+        </if>
+
+        <if test="startTime != null and startTime != '' and endTime != null and endTime != ''  ">
+            AND #{endTime} >= hn.create_time
+            AND hn.create_time >= #{startTime}
+        </if>
+        ORDER BY h.id
+    </select>
+
+    <select id="listExport" resultType="com.template.model.vo.HouseNumberPageVo">
+        SELECT
+        hn.id,
+        hn.house_id as houseId,
+        hn.room_number as roomNumber,
+        hn.house_status as houseStatus,
+        hn.electric_type as electricType,
+        hn.electric_equipment_id as electricEquipmentId,
+        hn.electric_equipment_meter_name as electricEquipmentMeterName,
+        hn.water_equipment_id as waterEquipmentId,
+        hn.water_equipment_meter_name as waterEquipmentMeterName,
+        hn.create_time as createTime,
+        h.room_name as houseName,
+        h.room_type as roomType
+        FROM
+        `house_number` hn
+        LEFT JOIN house h on h.id=hn.house_id AND h.deleted=0
+        WHERE
+        hn.deleted=0
+        <if test="keyWord != null and keyWord != ''">
+            AND (hn.room_number LIKE '%' #{keyWord} '%' OR hn.electric_equipment_meter_name LIKE '%' #{keyWord} '%'  OR hn.water_equipment_meter_name LIKE '%' #{keyWord} '%')
+        </if>
+
+        <if test="startTime != null and startTime != '' and endTime != null and endTime != ''  ">
+            AND #{endTime} >= hn.create_time
+            AND hn.create_time >= #{startTime}
+        </if>
+        ORDER BY h.id
+    </select>
+
 
 </mapper>

+ 12 - 0
src/main/resources/mapper/template/HouseOrderMapper.xml

@@ -20,6 +20,7 @@
         ho.pay_time as payTime,
         ho.refund_time as refundTime,
         ho.cancel_time as cancelTime,
+        ho.order_channel as orderChannel,
         h.id as houseId,
         hn.id as houseNumberId,
         h.room_type as roomType
@@ -241,4 +242,15 @@
 
     </select>
 
+    <select id="payHouseOrderUser" resultType="java.lang.String">
+        SELECT
+            reserve_user_id
+        FROM
+            `house_order`
+        WHERE deleted=0
+          AND  leave_time> #{start}
+          AND  #{end}> leave_time
+        GROUP BY reserve_user_id
+    </select>
+
 </mapper>

+ 27 - 0
src/main/resources/mapper/template/HousePriceMapper.xml

@@ -105,4 +105,31 @@
         GROUP BY t1.id
         ORDER BY t1.create_time DESC
     </select>
+    <select id="getHousePrice" resultType="com.template.model.pojo.HousePrice">
+        SELECT *
+        FROM `house_price`
+        WHERE (
+                    #{startTime} >= substring_index(set_date, ',', 1)
+                and substring_index(set_date, ',', -1) >= #{startTime}
+                and deleted = 0
+                and house_id = #{id}
+            )
+           or (
+                    #{endTime} >= substring_index(set_date, ',', 1)
+                and substring_index(set_date, ',', -1) >= #{endTime}
+                and deleted = 0
+                and house_id = #{id}
+            )
+
+
+    </select>
+
+    <select id="getDatePrice" resultType="com.template.model.pojo.HousePrice">
+        SELECT *
+        FROM `house_price`
+        WHERE #{localDate1} >= substring_index(set_date, ',', 1)
+          and substring_index(set_date, ',', -1) >= #{localDate1}
+          and house_id = #{houseId}
+          and deleted = 0
+    </select>
 </mapper>

+ 2 - 2
src/main/resources/mapper/template/UnlockingAdminMapper.xml

@@ -6,8 +6,8 @@
         SELECT u.*
         FROM `unlocking_admin` u
         where u.deleted = 0
-          and CURDATE() > u.start_time
-          and u.end_time > CURDATE()
+          and #{date} > u.start_time
+          and u.end_time > #{date}
           and u.house_number_id = #{houseNumberId}
     </select>
 </mapper>

+ 13 - 0
src/main/resources/mapper/template/UnlockingCustomMapper.xml

@@ -0,0 +1,13 @@
+<?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.UnlockingCustomMapper">
+
+    <select id="key" resultType="com.template.model.pojo.UnlockingCustom">
+        SELECT u.*
+        FROM `unlocking_custom` u
+        where u.deleted = 0
+          and #{date} > u.start_time
+          and u.end_time > #{date}
+          and u.house_number_id = #{houseNumberId}
+    </select>
+</mapper>

+ 4 - 3
src/main/resources/mapper/template/UnlockingMapper.xml

@@ -11,12 +11,13 @@
                u.start_time     as startTime,
                u.end_time       as endTime,
                ho.live_name     as name,
-               ho.reserve_phone as phone
+               ho.reserve_phone as phone,
+               u.create_time    as createTime
         FROM `unlocking` u
                  LEFT JOIN house_order ho on ho.order_number = u.order_number and ho.deleted = 0
         where u.deleted = 0
-          and CURDATE() > u.start_time
-          and u.end_time > CURDATE()
+          and #{date} > u.start_time
+          and u.end_time > #{date}
           and u.house_number_id = #{houseNumberId}
     </select>
 </mapper>