Przeglądaj źródła

1.生成车牌与设备

lirui 3 lat temu
rodzic
commit
bc67e2079f
23 zmienionych plików z 1149 dodań i 28 usunięć
  1. 21 6
      eladmin-activity/eladmin-activity.iml
  2. 11 3
      eladmin-common/eladmin-common.iml
  3. 11 3
      eladmin-generator/eladmin-generator.iml
  4. 11 3
      eladmin-logging/eladmin-logging.iml
  5. 20 5
      eladmin-system/eladmin-system.iml
  6. 97 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/domain/DmPlateNumber.java
  7. 28 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/repository/DmPlateNumberRepository.java
  8. 87 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/rest/DmPlateNumberController.java
  9. 83 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/service/DmPlateNumberService.java
  10. 66 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/service/dto/DmPlateNumberDto.java
  11. 29 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/service/dto/DmPlateNumberQueryCriteria.java
  12. 117 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/service/impl/DmPlateNumberServiceImpl.java
  13. 32 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/service/mapstruct/DmPlateNumberMapper.java
  14. 82 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/domain/DmRoomDevice.java
  15. 28 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/repository/DmRoomDeviceRepository.java
  16. 87 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/rest/DmRoomDeviceController.java
  17. 83 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/service/DmRoomDeviceService.java
  18. 63 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/service/dto/DmRoomDeviceDto.java
  19. 29 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/service/dto/DmRoomDeviceQueryCriteria.java
  20. 116 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/service/impl/DmRoomDeviceServiceImpl.java
  21. 32 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/service/mapstruct/DmRoomDeviceMapper.java
  22. 5 5
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/domain/DmUser.java
  23. 11 3
      eladmin-tools/eladmin-tools.iml

+ 21 - 6
eladmin-activity/eladmin-activity.iml

@@ -1,14 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
     <facet type="web" name="Web">
       <configuration>
         <webroots />
       </configuration>
     </facet>
+    <facet type="jpa" name="JPA">
+      <configuration>
+        <setting name="validation-enabled" value="true" />
+        <setting name="provider-name" value="Hibernate" />
+        <datasource-mapping />
+        <naming-strategy-map />
+      </configuration>
+    </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />
@@ -68,6 +76,16 @@
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.10" level="project" />
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.10" level="project" />
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.10" level="project" />
+    <orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.ws:jaxws-api:2.3.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.soap:javax.xml.soap-api:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: javax.jws:javax.jws-api:1.1" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.corba:glassfish-corba-omgapi:4.1.0" level="project" />
+    <orderEntry type="library" name="Maven: org.mozilla:rhino:1.7.10" level="project" />
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.8" level="project" />
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-anim:1.8" level="project" />
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.8" level="project" />
@@ -91,8 +109,6 @@
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.1.0.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.2" level="project" />
     <orderEntry type="library" name="Maven: javax.transaction:javax.transaction-api:1.3" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
-    <orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
     <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.3.7.Final" level="project" />
     <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
     <orderEntry type="library" name="Maven: javax.persistence:javax.persistence-api:2.2" level="project" />
@@ -114,7 +130,6 @@
     <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.11.1" level="project" />
     <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.11.1" level="project" />
     <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
-    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
     <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.23" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.1.0.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.7" level="project" />

+ 11 - 3
eladmin-common/eladmin-common.iml

@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
     <facet type="web" name="Web">
       <configuration>
         <webroots />
@@ -12,6 +9,17 @@
         </sourceRoots>
       </configuration>
     </facet>
+    <facet type="jpa" name="JPA">
+      <configuration>
+        <setting name="validation-enabled" value="true" />
+        <setting name="provider-name" value="Hibernate" />
+        <datasource-mapping />
+        <naming-strategy-map />
+      </configuration>
+    </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />

+ 11 - 3
eladmin-generator/eladmin-generator.iml

@@ -1,14 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
     <facet type="web" name="Web">
       <configuration>
         <webroots />
       </configuration>
     </facet>
+    <facet type="jpa" name="JPA">
+      <configuration>
+        <setting name="validation-enabled" value="true" />
+        <setting name="provider-name" value="Hibernate" />
+        <datasource-mapping />
+        <naming-strategy-map />
+      </configuration>
+    </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />

+ 11 - 3
eladmin-logging/eladmin-logging.iml

@@ -1,14 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
     <facet type="web" name="Web">
       <configuration>
         <webroots />
       </configuration>
     </facet>
+    <facet type="jpa" name="JPA">
+      <configuration>
+        <setting name="validation-enabled" value="true" />
+        <setting name="provider-name" value="Hibernate" />
+        <datasource-mapping />
+        <naming-strategy-map />
+      </configuration>
+    </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />

+ 20 - 5
eladmin-system/eladmin-system.iml

@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
     <facet type="web" name="Web">
       <configuration>
         <webroots />
@@ -13,6 +10,17 @@
         </sourceRoots>
       </configuration>
     </facet>
+    <facet type="jpa" name="JPA">
+      <configuration>
+        <setting name="validation-enabled" value="true" />
+        <setting name="provider-name" value="Hibernate" />
+        <datasource-mapping />
+        <naming-strategy-map />
+      </configuration>
+    </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />
@@ -75,6 +83,15 @@
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.10" level="project" />
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.10" level="project" />
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.10" level="project" />
+    <orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.ws:jaxws-api:2.3.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.soap:javax.xml.soap-api:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: javax.jws:javax.jws-api:1.1" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.corba:glassfish-corba-omgapi:4.1.0" level="project" />
+    <orderEntry type="library" name="Maven: org.mozilla:rhino:1.7.10" level="project" />
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.8" level="project" />
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-anim:1.8" level="project" />
     <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.8" level="project" />
@@ -115,7 +132,6 @@
     <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.2.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: javax.transaction:javax.transaction-api:1.3" level="project" />
     <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
-    <orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
     <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.3.7.Final" level="project" />
     <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
     <orderEntry type="library" name="Maven: javax.persistence:javax.persistence-api:2.2" level="project" />
@@ -138,7 +154,6 @@
     <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.11.1" level="project" />
     <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.11.1" level="project" />
     <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
-    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
     <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.23" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.1.0.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.7" level="project" />

+ 97 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/domain/DmPlateNumber.java

@@ -0,0 +1,97 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.plateNumber.domain;
+
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import me.zhengjie.modules.dm.roomDevice.domain.DmRoomDevice;
+
+import javax.persistence.*;
+import javax.validation.constraints.*;
+import java.sql.Timestamp;
+import java.io.Serializable;
+import java.util.Set;
+
+/**
+* @website https://el-admin.vip
+* @description /
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@Entity
+@Data
+@Table(name="dm_plate_number")
+public class DmPlateNumber implements Serializable {
+
+    @Id
+    @Column(name = "id")
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @Column(name = "user_number",nullable = false)
+    @NotBlank
+    @ApiModelProperty(value = "用户")
+    private String userNumber;
+
+    @Column(name = "plate_number")
+    @ApiModelProperty(value = "车牌号")
+    private String plateNumber;
+
+    @Column(name = "start_time")
+    @ApiModelProperty(value = "有效开始时间")
+    private Timestamp startTime;
+
+    @Column(name = "end_time")
+    @ApiModelProperty(value = "有效结束时间")
+    private Timestamp endTime;
+
+    @Column(name = "effective_state")
+    @ApiModelProperty(value = "效期状态(00-有效、01-过期)")
+    private String effectiveState;
+
+    @Column(name = "registration_status")
+    @ApiModelProperty(value = "登记状态(00-待审核、01-已登记)")
+    private String registrationStatus;
+
+    @Column(name = "create_by")
+    @ApiModelProperty(value = "创建者")
+    private String createBy;
+
+    @Column(name = "update_by")
+    @ApiModelProperty(value = "更新者")
+    private String updateBy;
+
+    @Column(name = "create_time")
+    @ApiModelProperty(value = "创建时间")
+    private Timestamp createTime;
+
+    @Column(name = "update_time")
+    @ApiModelProperty(value = "更新时间")
+    private Timestamp updateTime;
+
+    @ManyToMany
+    @ApiModelProperty(value = "车牌设备")
+    @JoinTable(name = "dm_plate_device",
+            joinColumns = {@JoinColumn(name = "plate_id",referencedColumnName = "id")},
+            inverseJoinColumns = {@JoinColumn(name = "device_id",referencedColumnName = "id")})
+    private Set<DmRoomDevice> dmRoomDevices;
+
+    public void copy(DmPlateNumber source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}

+ 28 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/repository/DmPlateNumberRepository.java

@@ -0,0 +1,28 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.plateNumber.repository;
+
+import me.zhengjie.modules.dm.plateNumber.domain.DmPlateNumber;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+/**
+* @website https://el-admin.vip
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+public interface DmPlateNumberRepository extends JpaRepository<DmPlateNumber, Long>, JpaSpecificationExecutor<DmPlateNumber> {
+}

+ 87 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/rest/DmPlateNumberController.java

@@ -0,0 +1,87 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.plateNumber.rest;
+
+import me.zhengjie.annotation.Log;
+import me.zhengjie.modules.dm.plateNumber.domain.DmPlateNumber;
+import me.zhengjie.modules.dm.plateNumber.service.DmPlateNumberService;
+import me.zhengjie.modules.dm.plateNumber.service.dto.DmPlateNumberQueryCriteria;
+import org.springframework.data.domain.Pageable;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+* @website https://el-admin.vip
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "/api/plateNumber管理")
+@RequestMapping("/api/dmPlateNumber")
+public class DmPlateNumberController {
+
+    private final DmPlateNumberService dmPlateNumberService;
+
+    @Log("导出数据")
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('dmPlateNumber:list')")
+    public void download(HttpServletResponse response, DmPlateNumberQueryCriteria criteria) throws IOException {
+        dmPlateNumberService.download(dmPlateNumberService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @Log("查询/api/plateNumber")
+    @ApiOperation("查询/api/plateNumber")
+    @PreAuthorize("@el.check('dmPlateNumber:list')")
+    public ResponseEntity<Object> query(DmPlateNumberQueryCriteria criteria, Pageable pageable){
+        return new ResponseEntity<>(dmPlateNumberService.queryAll(criteria,pageable),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增/api/plateNumber")
+    @ApiOperation("新增/api/plateNumber")
+    @PreAuthorize("@el.check('dmPlateNumber:add')")
+    public ResponseEntity<Object> create(@Validated @RequestBody DmPlateNumber resources){
+        return new ResponseEntity<>(dmPlateNumberService.create(resources),HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改/api/plateNumber")
+    @ApiOperation("修改/api/plateNumber")
+    @PreAuthorize("@el.check('dmPlateNumber:edit')")
+    public ResponseEntity<Object> update(@Validated @RequestBody DmPlateNumber resources){
+        dmPlateNumberService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @Log("删除/api/plateNumber")
+    @ApiOperation("删除/api/plateNumber")
+    @PreAuthorize("@el.check('dmPlateNumber:del')")
+    @DeleteMapping
+    public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
+        dmPlateNumberService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}

+ 83 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/service/DmPlateNumberService.java

@@ -0,0 +1,83 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.plateNumber.service;
+
+import me.zhengjie.modules.dm.plateNumber.domain.DmPlateNumber;
+import me.zhengjie.modules.dm.plateNumber.service.dto.DmPlateNumberDto;
+import me.zhengjie.modules.dm.plateNumber.service.dto.DmPlateNumberQueryCriteria;
+import org.springframework.data.domain.Pageable;
+import java.util.Map;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+* @website https://el-admin.vip
+* @description 服务接口
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+public interface DmPlateNumberService {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param pageable 分页参数
+    * @return Map<String,Object>
+    */
+    Map<String,Object> queryAll(DmPlateNumberQueryCriteria criteria, Pageable pageable);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<DmPlateNumberDto>
+    */
+    List<DmPlateNumberDto> queryAll(DmPlateNumberQueryCriteria criteria);
+
+    /**
+     * 根据ID查询
+     * @param id ID
+     * @return DmPlateNumberDto
+     */
+    DmPlateNumberDto findById(Long id);
+
+    /**
+    * 创建
+    * @param resources /
+    * @return DmPlateNumberDto
+    */
+    DmPlateNumberDto create(DmPlateNumber resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(DmPlateNumber resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(Long[] ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<DmPlateNumberDto> all, HttpServletResponse response) throws IOException;
+}

+ 66 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/service/dto/DmPlateNumberDto.java

@@ -0,0 +1,66 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.plateNumber.service.dto;
+
+import lombok.Data;
+import java.sql.Timestamp;
+import java.io.Serializable;
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.ToStringSerializer;
+
+/**
+* @website https://el-admin.vip
+* @description /
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@Data
+public class DmPlateNumberDto implements Serializable {
+
+    /** 防止精度丢失 */
+    @JSONField(serializeUsing = ToStringSerializer.class)
+    private Long id;
+
+    /** 用户 */
+    private String userNumber;
+
+    /** 车牌号 */
+    private String plateNumber;
+
+    /** 有效开始时间 */
+    private Timestamp startTime;
+
+    /** 有效结束时间 */
+    private Timestamp endTime;
+
+    /** 效期状态(00-有效、01-过期) */
+    private String effectiveState;
+
+    /** 登记状态(00-待审核、01-已登记) */
+    private String registrationStatus;
+
+    /** 创建者 */
+    private String createBy;
+
+    /** 更新者 */
+    private String updateBy;
+
+    /** 创建时间 */
+    private Timestamp createTime;
+
+    /** 更新时间 */
+    private Timestamp updateTime;
+}

+ 29 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/service/dto/DmPlateNumberQueryCriteria.java

@@ -0,0 +1,29 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.plateNumber.service.dto;
+
+import lombok.Data;
+import java.util.List;
+import me.zhengjie.annotation.Query;
+
+/**
+* @website https://el-admin.vip
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@Data
+public class DmPlateNumberQueryCriteria{
+}

+ 117 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/service/impl/DmPlateNumberServiceImpl.java

@@ -0,0 +1,117 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.plateNumber.service.impl;
+
+import me.zhengjie.modules.dm.plateNumber.domain.DmPlateNumber;
+import me.zhengjie.utils.ValidationUtil;
+import me.zhengjie.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import me.zhengjie.modules.dm.plateNumber.repository.DmPlateNumberRepository;
+import me.zhengjie.modules.dm.plateNumber.service.DmPlateNumberService;
+import me.zhengjie.modules.dm.plateNumber.service.dto.DmPlateNumberDto;
+import me.zhengjie.modules.dm.plateNumber.service.dto.DmPlateNumberQueryCriteria;
+import me.zhengjie.modules.dm.plateNumber.service.mapstruct.DmPlateNumberMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import cn.hutool.core.lang.Snowflake;
+import cn.hutool.core.util.IdUtil;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import me.zhengjie.utils.PageUtil;
+import me.zhengjie.utils.QueryHelp;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+
+/**
+* @website https://el-admin.vip
+* @description 服务实现
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@Service
+@RequiredArgsConstructor
+public class DmPlateNumberServiceImpl implements DmPlateNumberService {
+
+    private final DmPlateNumberRepository dmPlateNumberRepository;
+    private final DmPlateNumberMapper dmPlateNumberMapper;
+
+    @Override
+    public Map<String,Object> queryAll(DmPlateNumberQueryCriteria criteria, Pageable pageable){
+        Page<DmPlateNumber> page = dmPlateNumberRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
+        return PageUtil.toPage(page.map(dmPlateNumberMapper::toDto));
+    }
+
+    @Override
+    public List<DmPlateNumberDto> queryAll(DmPlateNumberQueryCriteria criteria){
+        return dmPlateNumberMapper.toDto(dmPlateNumberRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
+    }
+
+    @Override
+    @Transactional
+    public DmPlateNumberDto findById(Long id) {
+        DmPlateNumber dmPlateNumber = dmPlateNumberRepository.findById(id).orElseGet(DmPlateNumber::new);
+        ValidationUtil.isNull(dmPlateNumber.getId(),"DmPlateNumber","id",id);
+        return dmPlateNumberMapper.toDto(dmPlateNumber);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public DmPlateNumberDto create(DmPlateNumber resources) {
+        Snowflake snowflake = IdUtil.createSnowflake(1, 1);
+        resources.setId(snowflake.nextId()); 
+        return dmPlateNumberMapper.toDto(dmPlateNumberRepository.save(resources));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(DmPlateNumber resources) {
+        DmPlateNumber dmPlateNumber = dmPlateNumberRepository.findById(resources.getId()).orElseGet(DmPlateNumber::new);
+        ValidationUtil.isNull( dmPlateNumber.getId(),"DmPlateNumber","id",resources.getId());
+        dmPlateNumber.copy(resources);
+        dmPlateNumberRepository.save(dmPlateNumber);
+    }
+
+    @Override
+    public void deleteAll(Long[] ids) {
+        for (Long id : ids) {
+            dmPlateNumberRepository.deleteById(id);
+        }
+    }
+
+    @Override
+    public void download(List<DmPlateNumberDto> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (DmPlateNumberDto dmPlateNumber : all) {
+            Map<String,Object> map = new LinkedHashMap<>();
+            map.put("用户", dmPlateNumber.getUserNumber());
+            map.put("车牌号", dmPlateNumber.getPlateNumber());
+            map.put("有效开始时间", dmPlateNumber.getStartTime());
+            map.put("有效结束时间", dmPlateNumber.getEndTime());
+            map.put("效期状态(00-有效、01-过期)", dmPlateNumber.getEffectiveState());
+            map.put("登记状态(00-待审核、01-已登记)", dmPlateNumber.getRegistrationStatus());
+            map.put("创建者", dmPlateNumber.getCreateBy());
+            map.put("更新者", dmPlateNumber.getUpdateBy());
+            map.put("创建时间", dmPlateNumber.getCreateTime());
+            map.put("更新时间", dmPlateNumber.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}

+ 32 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/plateNumber/service/mapstruct/DmPlateNumberMapper.java

@@ -0,0 +1,32 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.plateNumber.service.mapstruct;
+
+import me.zhengjie.base.BaseMapper;
+import me.zhengjie.modules.dm.plateNumber.domain.DmPlateNumber;
+import me.zhengjie.modules.dm.plateNumber.service.dto.DmPlateNumberDto;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+
+/**
+* @website https://el-admin.vip
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
+public interface DmPlateNumberMapper extends BaseMapper<DmPlateNumberDto, DmPlateNumber> {
+
+}

+ 82 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/domain/DmRoomDevice.java

@@ -0,0 +1,82 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.roomDevice.domain;
+
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import javax.persistence.*;
+import javax.validation.constraints.*;
+import java.sql.Timestamp;
+import java.io.Serializable;
+
+/**
+* @website https://el-admin.vip
+* @description /
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@Entity
+@Data
+@Table(name="dm_room_device")
+public class DmRoomDevice implements Serializable {
+
+    @Id
+    @Column(name = "id")
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @Column(name = "code")
+    @ApiModelProperty(value = "设备编号")
+    private String code;
+
+    @Column(name = "name")
+    @ApiModelProperty(value = "设备名称")
+    private String name;
+
+    @Column(name = "build_address")
+    @ApiModelProperty(value = "设备安装位置")
+    private String buildAddress;
+
+    @Column(name = "status")
+    @ApiModelProperty(value = "设备状态(00-启用、01-禁用、02-待维修)")
+    private String status;
+
+    @Column(name = "remark")
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @Column(name = "create_by")
+    @ApiModelProperty(value = "创建者")
+    private String createBy;
+
+    @Column(name = "update_by")
+    @ApiModelProperty(value = "更新者")
+    private String updateBy;
+
+    @Column(name = "create_time")
+    @ApiModelProperty(value = "创建时间")
+    private Timestamp createTime;
+
+    @Column(name = "update_time")
+    @ApiModelProperty(value = "更新时间")
+    private Timestamp updateTime;
+
+    public void copy(DmRoomDevice source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}

+ 28 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/repository/DmRoomDeviceRepository.java

@@ -0,0 +1,28 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.roomDevice.repository;
+
+import me.zhengjie.modules.dm.roomDevice.domain.DmRoomDevice;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+/**
+* @website https://el-admin.vip
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+public interface DmRoomDeviceRepository extends JpaRepository<DmRoomDevice, Long>, JpaSpecificationExecutor<DmRoomDevice> {
+}

+ 87 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/rest/DmRoomDeviceController.java

@@ -0,0 +1,87 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.roomDevice.rest;
+
+import me.zhengjie.annotation.Log;
+import me.zhengjie.modules.dm.roomDevice.domain.DmRoomDevice;
+import me.zhengjie.modules.dm.roomDevice.service.DmRoomDeviceService;
+import me.zhengjie.modules.dm.roomDevice.service.dto.DmRoomDeviceQueryCriteria;
+import org.springframework.data.domain.Pageable;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+* @website https://el-admin.vip
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "/api/dmPlateNumber管理")
+@RequestMapping("/api/dmRoomDevice")
+public class DmRoomDeviceController {
+
+    private final DmRoomDeviceService dmRoomDeviceService;
+
+    @Log("导出数据")
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('dmRoomDevice:list')")
+    public void download(HttpServletResponse response, DmRoomDeviceQueryCriteria criteria) throws IOException {
+        dmRoomDeviceService.download(dmRoomDeviceService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @Log("查询/api/dmPlateNumber")
+    @ApiOperation("查询/api/dmPlateNumber")
+    @PreAuthorize("@el.check('dmRoomDevice:list')")
+    public ResponseEntity<Object> query(DmRoomDeviceQueryCriteria criteria, Pageable pageable){
+        return new ResponseEntity<>(dmRoomDeviceService.queryAll(criteria,pageable),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增/api/dmPlateNumber")
+    @ApiOperation("新增/api/dmPlateNumber")
+    @PreAuthorize("@el.check('dmRoomDevice:add')")
+    public ResponseEntity<Object> create(@Validated @RequestBody DmRoomDevice resources){
+        return new ResponseEntity<>(dmRoomDeviceService.create(resources),HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改/api/dmPlateNumber")
+    @ApiOperation("修改/api/dmPlateNumber")
+    @PreAuthorize("@el.check('dmRoomDevice:edit')")
+    public ResponseEntity<Object> update(@Validated @RequestBody DmRoomDevice resources){
+        dmRoomDeviceService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @Log("删除/api/dmPlateNumber")
+    @ApiOperation("删除/api/dmPlateNumber")
+    @PreAuthorize("@el.check('dmRoomDevice:del')")
+    @DeleteMapping
+    public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
+        dmRoomDeviceService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}

+ 83 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/service/DmRoomDeviceService.java

@@ -0,0 +1,83 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.roomDevice.service;
+
+import me.zhengjie.modules.dm.roomDevice.domain.DmRoomDevice;
+import me.zhengjie.modules.dm.roomDevice.service.dto.DmRoomDeviceDto;
+import me.zhengjie.modules.dm.roomDevice.service.dto.DmRoomDeviceQueryCriteria;
+import org.springframework.data.domain.Pageable;
+import java.util.Map;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+* @website https://el-admin.vip
+* @description 服务接口
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+public interface DmRoomDeviceService {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param pageable 分页参数
+    * @return Map<String,Object>
+    */
+    Map<String,Object> queryAll(DmRoomDeviceQueryCriteria criteria, Pageable pageable);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<DmRoomDeviceDto>
+    */
+    List<DmRoomDeviceDto> queryAll(DmRoomDeviceQueryCriteria criteria);
+
+    /**
+     * 根据ID查询
+     * @param id ID
+     * @return DmRoomDeviceDto
+     */
+    DmRoomDeviceDto findById(Long id);
+
+    /**
+    * 创建
+    * @param resources /
+    * @return DmRoomDeviceDto
+    */
+    DmRoomDeviceDto create(DmRoomDevice resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(DmRoomDevice resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(Long[] ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<DmRoomDeviceDto> all, HttpServletResponse response) throws IOException;
+}

+ 63 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/service/dto/DmRoomDeviceDto.java

@@ -0,0 +1,63 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.roomDevice.service.dto;
+
+import lombok.Data;
+import java.sql.Timestamp;
+import java.io.Serializable;
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.ToStringSerializer;
+
+/**
+* @website https://el-admin.vip
+* @description /
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@Data
+public class DmRoomDeviceDto implements Serializable {
+
+    /** 防止精度丢失 */
+    @JSONField(serializeUsing = ToStringSerializer.class)
+    private Long id;
+
+    /** 设备编号 */
+    private String code;
+
+    /** 设备名称 */
+    private String name;
+
+    /** 设备安装位置 */
+    private String buildAddress;
+
+    /** 设备状态(00-启用、01-禁用、02-待维修) */
+    private String status;
+
+    /** 备注 */
+    private String remark;
+
+    /** 创建者 */
+    private String createBy;
+
+    /** 更新者 */
+    private String updateBy;
+
+    /** 创建时间 */
+    private Timestamp createTime;
+
+    /** 更新时间 */
+    private Timestamp updateTime;
+}

+ 29 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/service/dto/DmRoomDeviceQueryCriteria.java

@@ -0,0 +1,29 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.roomDevice.service.dto;
+
+import lombok.Data;
+import java.util.List;
+import me.zhengjie.annotation.Query;
+
+/**
+* @website https://el-admin.vip
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@Data
+public class DmRoomDeviceQueryCriteria{
+}

+ 116 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/service/impl/DmRoomDeviceServiceImpl.java

@@ -0,0 +1,116 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.roomDevice.service.impl;
+
+import me.zhengjie.modules.dm.roomDevice.domain.DmRoomDevice;
+import me.zhengjie.utils.ValidationUtil;
+import me.zhengjie.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import me.zhengjie.modules.dm.roomDevice.repository.DmRoomDeviceRepository;
+import me.zhengjie.modules.dm.roomDevice.service.DmRoomDeviceService;
+import me.zhengjie.modules.dm.roomDevice.service.dto.DmRoomDeviceDto;
+import me.zhengjie.modules.dm.roomDevice.service.dto.DmRoomDeviceQueryCriteria;
+import me.zhengjie.modules.dm.roomDevice.service.mapstruct.DmRoomDeviceMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import cn.hutool.core.lang.Snowflake;
+import cn.hutool.core.util.IdUtil;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import me.zhengjie.utils.PageUtil;
+import me.zhengjie.utils.QueryHelp;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+
+/**
+* @website https://el-admin.vip
+* @description 服务实现
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@Service
+@RequiredArgsConstructor
+public class DmRoomDeviceServiceImpl implements DmRoomDeviceService {
+
+    private final DmRoomDeviceRepository dmRoomDeviceRepository;
+    private final DmRoomDeviceMapper dmRoomDeviceMapper;
+
+    @Override
+    public Map<String,Object> queryAll(DmRoomDeviceQueryCriteria criteria, Pageable pageable){
+        Page<DmRoomDevice> page = dmRoomDeviceRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
+        return PageUtil.toPage(page.map(dmRoomDeviceMapper::toDto));
+    }
+
+    @Override
+    public List<DmRoomDeviceDto> queryAll(DmRoomDeviceQueryCriteria criteria){
+        return dmRoomDeviceMapper.toDto(dmRoomDeviceRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
+    }
+
+    @Override
+    @Transactional
+    public DmRoomDeviceDto findById(Long id) {
+        DmRoomDevice dmRoomDevice = dmRoomDeviceRepository.findById(id).orElseGet(DmRoomDevice::new);
+        ValidationUtil.isNull(dmRoomDevice.getId(),"DmRoomDevice","id",id);
+        return dmRoomDeviceMapper.toDto(dmRoomDevice);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public DmRoomDeviceDto create(DmRoomDevice resources) {
+        Snowflake snowflake = IdUtil.createSnowflake(1, 1);
+        resources.setId(snowflake.nextId()); 
+        return dmRoomDeviceMapper.toDto(dmRoomDeviceRepository.save(resources));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(DmRoomDevice resources) {
+        DmRoomDevice dmRoomDevice = dmRoomDeviceRepository.findById(resources.getId()).orElseGet(DmRoomDevice::new);
+        ValidationUtil.isNull( dmRoomDevice.getId(),"DmRoomDevice","id",resources.getId());
+        dmRoomDevice.copy(resources);
+        dmRoomDeviceRepository.save(dmRoomDevice);
+    }
+
+    @Override
+    public void deleteAll(Long[] ids) {
+        for (Long id : ids) {
+            dmRoomDeviceRepository.deleteById(id);
+        }
+    }
+
+    @Override
+    public void download(List<DmRoomDeviceDto> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (DmRoomDeviceDto dmRoomDevice : all) {
+            Map<String,Object> map = new LinkedHashMap<>();
+            map.put("设备编号", dmRoomDevice.getCode());
+            map.put("设备名称", dmRoomDevice.getName());
+            map.put("设备安装位置", dmRoomDevice.getBuildAddress());
+            map.put("设备状态(00-启用、01-禁用、02-待维修)", dmRoomDevice.getStatus());
+            map.put("备注", dmRoomDevice.getRemark());
+            map.put("创建者", dmRoomDevice.getCreateBy());
+            map.put("更新者", dmRoomDevice.getUpdateBy());
+            map.put("创建时间", dmRoomDevice.getCreateTime());
+            map.put("更新时间", dmRoomDevice.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}

+ 32 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/roomDevice/service/mapstruct/DmRoomDeviceMapper.java

@@ -0,0 +1,32 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.roomDevice.service.mapstruct;
+
+import me.zhengjie.base.BaseMapper;
+import me.zhengjie.modules.dm.roomDevice.domain.DmRoomDevice;
+import me.zhengjie.modules.dm.roomDevice.service.dto.DmRoomDeviceDto;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+
+/**
+* @website https://el-admin.vip
+* @author Zheng Jie
+* @date 2021-11-27
+**/
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
+public interface DmRoomDeviceMapper extends BaseMapper<DmRoomDeviceDto, DmRoomDevice> {
+
+}

+ 5 - 5
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/domain/DmUser.java

@@ -20,6 +20,7 @@ import cn.hutool.core.bean.BeanUtil;
 import io.swagger.annotations.ApiModelProperty;
 import cn.hutool.core.bean.copier.CopyOptions;
 import javax.persistence.*;
+import javax.persistence.CascadeType;
 import javax.validation.constraints.*;
 import javax.persistence.Entity;
 import javax.persistence.Table;
@@ -96,11 +97,10 @@ public class DmUser extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "用户部门")
     private Dept dept;
 
-//    @OneToMany
-//    @ApiModelProperty(value = "用户车牌")
-//    @JoinTable(name = "dm_plate_number",
-//            joinColumns = {@JoinColumn(name = "user_number",referencedColumnName = "id")})
-//    private Set<DmPlateNumber> plateNumbers;
+    @OneToMany
+    @JoinColumn(name = "user_number",referencedColumnName = "id")
+    @ApiModelProperty(value = "用户车牌")
+    private Set<DmPlateNumber> plateNumbers;
 
     @Column(name = "is_approver")
     @ApiModelProperty(value = "是否是审批人")

+ 11 - 3
eladmin-tools/eladmin-tools.iml

@@ -1,14 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
     <facet type="web" name="Web">
       <configuration>
         <webroots />
       </configuration>
     </facet>
+    <facet type="jpa" name="JPA">
+      <configuration>
+        <setting name="validation-enabled" value="true" />
+        <setting name="provider-name" value="Hibernate" />
+        <datasource-mapping />
+        <naming-strategy-map />
+      </configuration>
+    </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />