Browse Source

看房预约单

chenfan 3 weeks ago
parent
commit
a626fd135e
21 changed files with 4652 additions and 0 deletions
  1. 45 0
      doc/cf20250513.sql
  2. 119 0
      pro-base/src/main/java/com/idea/buildManage/controller/ParkRoomReservationController.java
  3. 16 0
      pro-base/src/main/java/com/idea/buildManage/dto/BindSearchDto.java
  4. 16 0
      pro-base/src/main/java/com/idea/buildManage/dto/ParkRoomReservationDto.java
  5. 14 0
      pro-base/src/main/java/com/idea/buildManage/dto/RoomSearchDto.java
  6. 30 0
      pro-base/src/main/java/com/idea/buildManage/mapper/ParkRoomBindDoorMapper.java
  7. 16 0
      pro-base/src/main/java/com/idea/buildManage/mapper/ParkRoomReservationExtendMapper.java
  8. 30 0
      pro-base/src/main/java/com/idea/buildManage/mapper/ParkRoomReservationMapper.java
  9. 58 0
      pro-base/src/main/java/com/idea/buildManage/model/ParkRoomBindDoor.java
  10. 541 0
      pro-base/src/main/java/com/idea/buildManage/model/ParkRoomBindDoorExample.java
  11. 73 0
      pro-base/src/main/java/com/idea/buildManage/model/ParkRoomReservation.java
  12. 2031 0
      pro-base/src/main/java/com/idea/buildManage/model/ParkRoomReservationExample.java
  13. 125 0
      pro-base/src/main/java/com/idea/buildManage/service/ParkRoomBindDoorService.java
  14. 325 0
      pro-base/src/main/java/com/idea/buildManage/service/ParkRoomReservationService.java
  15. 31 0
      pro-base/src/main/java/com/idea/buildManage/task/ParkRoomReservationTask.java
  16. 30 0
      pro-base/src/main/java/com/idea/buildManage/vo/ParkRoomVo.java
  17. 61 0
      pro-base/src/main/java/com/idea/util/AESUtil.java
  18. 229 0
      pro-base/src/main/java/com/idea/util/ApartmentUtil.java
  19. 211 0
      pro-base/src/main/resources/mybatis/buildManage/ParkRoomBindDoorMapper.xml
  20. 90 0
      pro-base/src/main/resources/mybatis/buildManage/ParkRoomReservationExtendMapper.xml
  21. 561 0
      pro-base/src/main/resources/mybatis/buildManage/ParkRoomReservationMapper.xml

+ 45 - 0
doc/cf20250513.sql

@@ -0,0 +1,45 @@
+drop table if exists park_room_reservation;
+create table park_room_reservation
+(
+    id                     varchar(255)  not null
+        primary key,
+    park_info_id           varchar(255)  null comment '园区id(park_info)',
+    park_info_name         varchar(255)  null comment '园区名称',
+    park_floor_disc_id     varchar(255)  null comment '分期id(park_floor_disc)',
+    park_floor_disc_name   varchar(255)  null comment '分期名称',
+    mnp_building_id        varchar(255)  null comment '楼栋id(mnp_building)',
+    mnp_building_no        varchar(255)  null comment '楼栋号',
+    park_room_id           varchar(255)  null comment '房间id(park_room)',
+    park_room_floor        varchar(255)  null comment '所在层',
+    park_room_no           varchar(255)  null comment '户室号',
+    buyer_name             varchar(255)  null comment '购房人姓名',
+    buyer_phone            varchar(255)  null comment '购房人电话',
+    buyer_gender           varchar(255)  null comment '购房人性别',
+    buyer_address          varchar(2000) null comment '购房人现住址',
+    applicant_name         varchar(255)  null comment '申请人',
+    applicant_phone        varchar(255)  null comment '申请人电话',
+    overview_content       varchar(4000) null comment '简况',
+    reservation_date       datetime      null comment '看房日期',
+    reservation_time_start varchar(255)  null comment '看房时段-起(HH:mm)',
+    reservation_time_end   varchar(255)  null comment '看房时段-止(HH:mm)',
+    reservation_order      int           null comment '排队号',
+    reservation_status     int           null comment '预约单状态(1已预约、2已取消、3待入户、4已完成)',
+    door_pass_status       int           null comment '开门密码状态(1未发、2已发)',
+    create_user            varchar(255)  null,
+    create_time            datetime      null,
+    update_user            varchar(255)  null,
+    update_time            datetime      null
+)
+    comment '看房预约单' row_format = DYNAMIC;
+
+drop table if exists park_room_bind_door;
+create table park_room_bind_door
+(
+    id           varchar(255) not null
+        primary key,
+    park_room_id varchar(255) null comment '房间id(park_room)',
+    door_pass_id varchar(255) null comment '门锁id',
+    create_user  varchar(255) null comment '门锁id',
+    create_time  datetime     null
+)
+    comment '房间-门锁绑定关系表' row_format = DYNAMIC;

+ 119 - 0
pro-base/src/main/java/com/idea/buildManage/controller/ParkRoomReservationController.java

@@ -0,0 +1,119 @@
+package com.idea.buildManage.controller;
+
+import com.github.pagehelper.PageInfo;
+import com.idea.buildManage.dto.BindSearchDto;
+import com.idea.buildManage.dto.ParkRoomReservationDto;
+import com.idea.buildManage.dto.RoomSearchDto;
+import com.idea.buildManage.model.ParkRoomBindDoorExample;
+import com.idea.buildManage.model.ParkRoomReservation;
+import com.idea.buildManage.service.ParkRoomBindDoorService;
+import com.idea.buildManage.service.ParkRoomReservationService;
+import com.idea.buildManage.vo.ParkRoomVo;
+import com.rockstar.common.base.BaseController;
+import com.rockstar.common.domain.AjaxResult;
+import com.rockstar.frame.model.extend.DateTrans;
+import com.rockstar.frame.model.extend.TableSplitResult;
+import com.rockstar.frame.model.extend.Tablepar;
+import com.rockstar.shiro.util.ShiroUtils;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping(value = "ParkRoomReservationController")
+@Api(value="看房预约单")
+public class ParkRoomReservationController extends BaseController {
+
+    @Autowired
+    private ParkRoomReservationService modelService;
+    @Autowired
+    private ParkRoomBindDoorService parkRoomBindDoorService;
+
+    @PostMapping(value = "list",produces = {"application/json;charset=UTF-8"})
+    public Object list(Tablepar tablepar, ParkRoomReservation model, DateTrans dt){
+        PageInfo<ParkRoomReservation> page = modelService.list(tablepar,model,dt);
+        return new TableSplitResult<>(page.getPageNum(), page.getTotal(), page.getList());
+    }
+
+    @PostMapping(value = "listPage",produces = {"application/json;charset=UTF-8"})
+    public Object listPage(Tablepar tablepar, ParkRoomReservationDto model){
+        PageInfo<ParkRoomReservation> page = modelService.listPage(tablepar,model);
+        return new TableSplitResult<>(page.getPageNum(), page.getTotal(), page.getList());
+    }
+
+    @PostMapping(value = "roomListPage",produces = {"application/json;charset=UTF-8"})
+    public Object roomListPage(Tablepar tablepar, RoomSearchDto model){
+        PageInfo<ParkRoomVo> page = modelService.roomListPage(tablepar,model);
+        return new TableSplitResult<>(page.getPageNum(), page.getTotal(), page.getList());
+    }
+
+    @PostMapping(value = "bindListPage",produces = {"application/json;charset=UTF-8"})
+    public Object bindListPage(Tablepar tablepar, BindSearchDto dto){
+        try {
+            return success(modelService.bindListPage(tablepar, dto));
+        } catch (Exception e) {
+            return error(503, e.getMessage());
+        }
+    }
+
+    @PostMapping(value = "listAll",produces = {"application/json;charset=UTF-8"})
+    public Object listAll(ParkRoomReservation model, DateTrans dt){
+        return  modelService.listAll(model,dt);
+    }
+
+    @PostMapping(value = "add",produces = {"application/json;charset=UTF-8"})
+    public AjaxResult add(ParkRoomReservation model){
+        model.setCreateUser(ShiroUtils.getUserId());
+        model.setUpdateUser(ShiroUtils.getUserId());
+        int result = modelService.insert(model);
+        return result(result);
+    }
+
+    @PostMapping(value = "remove/{id}",produces = {"application/json;charset=UTF-8"})
+    public AjaxResult remove(@PathVariable("id") String id){
+        int result = modelService.deleteByPrimaryKey(id);
+        return result(result);
+    }
+
+    @PostMapping(value = "edit",produces = {"application/json;charset=UTF-8"})
+    public AjaxResult edit(ParkRoomReservation model){
+        model.setUpdateUser(ShiroUtils.getUserId());
+        int result = modelService.updateByPrimaryKeySelective(model);
+        return result(result);
+    }
+
+    @PostMapping(value = "getById",produces = {"application/json;charset=UTF-8"})
+    public ParkRoomReservation getById(String id) {
+        return modelService.selectByPrimaryKey(id);
+    }
+
+    @PostMapping(value = "getPassword",produces = {"application/json;charset=UTF-8"})
+    public AjaxResult getPassword(String id){
+        try {
+            return success(modelService.getPassword(id, ShiroUtils.getUserId()));
+        } catch (Exception e) {
+            return error(503, e.getMessage());
+        }
+    }
+
+    @PostMapping(value = "editCancel/{id}",produces = {"application/json;charset=UTF-8"})
+    public AjaxResult editCancel(@PathVariable("id") String id){
+        int result = modelService.editCancel(id, ShiroUtils.getUserId());
+        return result(result);
+    }
+
+    @PostMapping(value = "roomBindDoor",produces = {"application/json;charset=UTF-8"})
+    public AjaxResult roomBindDoor(String roomId, String doorId){
+        ParkRoomBindDoorExample example = new ParkRoomBindDoorExample();
+        example.createCriteria().andDoorPassIdEqualTo(doorId);
+        if(parkRoomBindDoorService.countByExample(example)>0){
+            return error(503, "该门锁已匹配,请重新选择");
+        }
+        int result = parkRoomBindDoorService.roomBindDoor(roomId, doorId, ShiroUtils.getUserId());
+        return result(result);
+    }
+
+}

+ 16 - 0
pro-base/src/main/java/com/idea/buildManage/dto/BindSearchDto.java

@@ -0,0 +1,16 @@
+package com.idea.buildManage.dto;
+
+import lombok.Data;
+
+@Data
+public class BindSearchDto {
+
+    private String houseName;
+
+    private String buildingName;
+
+    private String floorName;
+
+    private String roomName;
+
+}

+ 16 - 0
pro-base/src/main/java/com/idea/buildManage/dto/ParkRoomReservationDto.java

@@ -0,0 +1,16 @@
+package com.idea.buildManage.dto;
+
+import lombok.Data;
+
+@Data
+public class ParkRoomReservationDto {
+
+    private String keyword;
+
+    private String createTimeStart;
+
+    private String createTimeEnd;
+
+    private Integer reservationStatus;
+
+}

+ 14 - 0
pro-base/src/main/java/com/idea/buildManage/dto/RoomSearchDto.java

@@ -0,0 +1,14 @@
+package com.idea.buildManage.dto;
+
+import lombok.Data;
+
+@Data
+public class RoomSearchDto {
+
+    private String parkInfoId;
+
+    private String mnpBuildingId;
+
+    private String roomAddress;
+
+}

+ 30 - 0
pro-base/src/main/java/com/idea/buildManage/mapper/ParkRoomBindDoorMapper.java

@@ -0,0 +1,30 @@
+package com.idea.buildManage.mapper;
+
+import com.idea.buildManage.model.ParkRoomBindDoor;
+import com.idea.buildManage.model.ParkRoomBindDoorExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface ParkRoomBindDoorMapper {
+    long countByExample(ParkRoomBindDoorExample example);
+
+    int deleteByExample(ParkRoomBindDoorExample example);
+
+    int deleteByPrimaryKey(String id);
+
+    int insert(ParkRoomBindDoor record);
+
+    int insertSelective(ParkRoomBindDoor record);
+
+    List<ParkRoomBindDoor> selectByExample(ParkRoomBindDoorExample example);
+
+    ParkRoomBindDoor selectByPrimaryKey(String id);
+
+    int updateByExampleSelective(@Param("record") ParkRoomBindDoor record, @Param("example") ParkRoomBindDoorExample example);
+
+    int updateByExample(@Param("record") ParkRoomBindDoor record, @Param("example") ParkRoomBindDoorExample example);
+
+    int updateByPrimaryKeySelective(ParkRoomBindDoor record);
+
+    int updateByPrimaryKey(ParkRoomBindDoor record);
+}

+ 16 - 0
pro-base/src/main/java/com/idea/buildManage/mapper/ParkRoomReservationExtendMapper.java

@@ -0,0 +1,16 @@
+package com.idea.buildManage.mapper;
+
+import com.idea.buildManage.dto.ParkRoomReservationDto;
+import com.idea.buildManage.dto.RoomSearchDto;
+import com.idea.buildManage.model.ParkRoomReservation;
+import com.idea.buildManage.vo.ParkRoomVo;
+
+import java.util.List;
+
+public interface ParkRoomReservationExtendMapper {
+
+    List<ParkRoomReservation> listPage(ParkRoomReservationDto dto);
+
+    List<ParkRoomVo> roomListPage(RoomSearchDto dto);
+
+}

+ 30 - 0
pro-base/src/main/java/com/idea/buildManage/mapper/ParkRoomReservationMapper.java

@@ -0,0 +1,30 @@
+package com.idea.buildManage.mapper;
+
+import com.idea.buildManage.model.ParkRoomReservation;
+import com.idea.buildManage.model.ParkRoomReservationExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface ParkRoomReservationMapper {
+    long countByExample(ParkRoomReservationExample example);
+
+    int deleteByExample(ParkRoomReservationExample example);
+
+    int deleteByPrimaryKey(String id);
+
+    int insert(ParkRoomReservation record);
+
+    int insertSelective(ParkRoomReservation record);
+
+    List<ParkRoomReservation> selectByExample(ParkRoomReservationExample example);
+
+    ParkRoomReservation selectByPrimaryKey(String id);
+
+    int updateByExampleSelective(@Param("record") ParkRoomReservation record, @Param("example") ParkRoomReservationExample example);
+
+    int updateByExample(@Param("record") ParkRoomReservation record, @Param("example") ParkRoomReservationExample example);
+
+    int updateByPrimaryKeySelective(ParkRoomReservation record);
+
+    int updateByPrimaryKey(ParkRoomReservation record);
+}

+ 58 - 0
pro-base/src/main/java/com/idea/buildManage/model/ParkRoomBindDoor.java

@@ -0,0 +1,58 @@
+package com.idea.buildManage.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ParkRoomBindDoor implements Serializable {
+    private String id;
+
+    private String parkRoomId;
+
+    private String doorPassId;
+
+    private String createUser;
+
+    private Date createTime;
+
+    private static final long serialVersionUID = 1L;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id == null ? null : id.trim();
+    }
+
+    public String getParkRoomId() {
+        return parkRoomId;
+    }
+
+    public void setParkRoomId(String parkRoomId) {
+        this.parkRoomId = parkRoomId == null ? null : parkRoomId.trim();
+    }
+
+    public String getDoorPassId() {
+        return doorPassId;
+    }
+
+    public void setDoorPassId(String doorPassId) {
+        this.doorPassId = doorPassId == null ? null : doorPassId.trim();
+    }
+
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser == null ? null : createUser.trim();
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+}

+ 541 - 0
pro-base/src/main/java/com/idea/buildManage/model/ParkRoomBindDoorExample.java

@@ -0,0 +1,541 @@
+package com.idea.buildManage.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class ParkRoomBindDoorExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public ParkRoomBindDoorExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(String value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(String value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(String value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(String value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(String value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(String value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLike(String value) {
+            addCriterion("id like", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotLike(String value) {
+            addCriterion("id not like", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<String> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<String> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(String value1, String value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(String value1, String value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdIsNull() {
+            addCriterion("park_room_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdIsNotNull() {
+            addCriterion("park_room_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdEqualTo(String value) {
+            addCriterion("park_room_id =", value, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdNotEqualTo(String value) {
+            addCriterion("park_room_id <>", value, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdGreaterThan(String value) {
+            addCriterion("park_room_id >", value, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdGreaterThanOrEqualTo(String value) {
+            addCriterion("park_room_id >=", value, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdLessThan(String value) {
+            addCriterion("park_room_id <", value, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdLessThanOrEqualTo(String value) {
+            addCriterion("park_room_id <=", value, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdLike(String value) {
+            addCriterion("park_room_id like", value, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdNotLike(String value) {
+            addCriterion("park_room_id not like", value, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdIn(List<String> values) {
+            addCriterion("park_room_id in", values, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdNotIn(List<String> values) {
+            addCriterion("park_room_id not in", values, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdBetween(String value1, String value2) {
+            addCriterion("park_room_id between", value1, value2, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParkRoomIdNotBetween(String value1, String value2) {
+            addCriterion("park_room_id not between", value1, value2, "parkRoomId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdIsNull() {
+            addCriterion("door_pass_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdIsNotNull() {
+            addCriterion("door_pass_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdEqualTo(String value) {
+            addCriterion("door_pass_id =", value, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdNotEqualTo(String value) {
+            addCriterion("door_pass_id <>", value, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdGreaterThan(String value) {
+            addCriterion("door_pass_id >", value, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdGreaterThanOrEqualTo(String value) {
+            addCriterion("door_pass_id >=", value, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdLessThan(String value) {
+            addCriterion("door_pass_id <", value, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdLessThanOrEqualTo(String value) {
+            addCriterion("door_pass_id <=", value, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdLike(String value) {
+            addCriterion("door_pass_id like", value, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdNotLike(String value) {
+            addCriterion("door_pass_id not like", value, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdIn(List<String> values) {
+            addCriterion("door_pass_id in", values, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdNotIn(List<String> values) {
+            addCriterion("door_pass_id not in", values, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdBetween(String value1, String value2) {
+            addCriterion("door_pass_id between", value1, value2, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDoorPassIdNotBetween(String value1, String value2) {
+            addCriterion("door_pass_id not between", value1, value2, "doorPassId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserIsNull() {
+            addCriterion("create_user is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserIsNotNull() {
+            addCriterion("create_user is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserEqualTo(String value) {
+            addCriterion("create_user =", value, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserNotEqualTo(String value) {
+            addCriterion("create_user <>", value, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserGreaterThan(String value) {
+            addCriterion("create_user >", value, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserGreaterThanOrEqualTo(String value) {
+            addCriterion("create_user >=", value, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserLessThan(String value) {
+            addCriterion("create_user <", value, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserLessThanOrEqualTo(String value) {
+            addCriterion("create_user <=", value, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserLike(String value) {
+            addCriterion("create_user like", value, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserNotLike(String value) {
+            addCriterion("create_user not like", value, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserIn(List<String> values) {
+            addCriterion("create_user in", values, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserNotIn(List<String> values) {
+            addCriterion("create_user not in", values, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserBetween(String value1, String value2) {
+            addCriterion("create_user between", value1, value2, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateUserNotBetween(String value1, String value2) {
+            addCriterion("create_user not between", value1, value2, "createUser");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNull() {
+            addCriterion("create_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNotNull() {
+            addCriterion("create_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeEqualTo(Date value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Date value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Date value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Date value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Date> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Date> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 73 - 0
pro-base/src/main/java/com/idea/buildManage/model/ParkRoomReservation.java

@@ -0,0 +1,73 @@
+package com.idea.buildManage.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ParkRoomReservation implements Serializable {
+    private String id;
+
+    private String parkInfoId;
+
+    private String parkInfoName;
+
+    private String parkFloorDiscId;
+
+    private String parkFloorDiscName;
+
+    private String mnpBuildingId;
+
+    private String mnpBuildingNo;
+
+    private String parkRoomId;
+
+    private String parkRoomFloor;
+
+    private String parkRoomNo;
+
+    private String buyerName;
+
+    private String buyerPhone;
+
+    private String buyerGender;
+
+    private String buyerAddress;
+
+    private String applicantName;
+
+    private String applicantPhone;
+
+    private String overviewContent;
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date reservationDate;
+
+    private String reservationTimeStart;
+
+    private String reservationTimeEnd;
+
+    private Integer reservationOrder;
+
+    private Integer reservationStatus;
+
+    private Integer doorPassStatus;
+
+    private String createUser;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    private String updateUser;
+
+    private Date updateTime;
+
+    // 额外字段
+    private String createUserName;
+    private String reservationStatusStr;
+    private String doorPassStatusStr;
+
+    private static final long serialVersionUID = 1L;
+}

File diff suppressed because it is too large
+ 2031 - 0
pro-base/src/main/java/com/idea/buildManage/model/ParkRoomReservationExample.java


+ 125 - 0
pro-base/src/main/java/com/idea/buildManage/service/ParkRoomBindDoorService.java

@@ -0,0 +1,125 @@
+package com.idea.buildManage.service;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.idea.buildManage.mapper.ParkRoomBindDoorMapper;
+import com.idea.buildManage.model.ParkRoomBindDoor;
+import com.idea.buildManage.model.ParkRoomBindDoorExample;
+import com.rockstar.common.base.BaseService;
+import com.rockstar.common.support.Convert;
+import com.rockstar.frame.model.extend.DateTrans;
+import com.rockstar.frame.model.extend.Tablepar;
+import com.rockstar.util.SnowflakeIdWorker;
+import com.rockstar.util.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Service
+public class ParkRoomBindDoorService implements BaseService<ParkRoomBindDoor, ParkRoomBindDoorExample> {
+
+    @Autowired
+    private ParkRoomBindDoorMapper modelMapper;
+
+    public PageInfo<ParkRoomBindDoor> list(Tablepar tablepar, ParkRoomBindDoor model, DateTrans dt) {
+        PageHelper.startPage(tablepar.getPageNum(), tablepar.getPageSize());
+        List<ParkRoomBindDoor> list = modelMapper.selectByExample(getCondition(model,dt));
+        return new PageInfo<>(list);
+    }
+
+    public List<ParkRoomBindDoor> listAll(ParkRoomBindDoor model, DateTrans dt) {
+        return modelMapper.selectByExample(getCondition(model,dt));
+    }
+
+    private ParkRoomBindDoorExample getCondition(ParkRoomBindDoor model, DateTrans dt) {
+        ParkRoomBindDoorExample ex = new ParkRoomBindDoorExample();
+        ex.setOrderByClause("create_time desc");
+        ParkRoomBindDoorExample.Criteria criteria = ex.createCriteria();
+
+        if(StringUtils.isNotEmpty(model.getParkRoomId())){
+            criteria.andParkRoomIdEqualTo(model.getParkRoomId());
+        }
+
+        if(StringUtils.isNotEmpty(model.getDoorPassId())){
+            criteria.andDoorPassIdEqualTo(model.getDoorPassId());
+        }
+
+        return ex;
+    }
+
+    @Override
+    public int deleteByPrimaryKey(String ids) {
+        List<String> list = Convert.toListStrArray(ids);
+        ParkRoomBindDoorExample example = new ParkRoomBindDoorExample();
+        example.createCriteria().andIdIn(list);
+        return modelMapper.deleteByExample(example);
+    }
+
+    @Override
+    public ParkRoomBindDoor selectByPrimaryKey(String id) {
+        return modelMapper.selectByPrimaryKey(id);
+    }
+
+    @Override
+    public int updateByPrimaryKeySelective(ParkRoomBindDoor record) {
+        return modelMapper.updateByPrimaryKeySelective(record);
+    }
+
+    @Override
+    public int updateByExampleSelective(ParkRoomBindDoor record, ParkRoomBindDoorExample example) {
+        return modelMapper.updateByExampleSelective(record, example);
+    }
+
+    @Override
+    public int updateByExample(ParkRoomBindDoor record, ParkRoomBindDoorExample example) {
+        return modelMapper.updateByExample(record, example);
+    }
+
+    @Override
+    public List<ParkRoomBindDoor> selectByExample(ParkRoomBindDoorExample example) {
+        return modelMapper.selectByExample(example);
+    }
+
+    @Override
+    public long countByExample(ParkRoomBindDoorExample example) {
+        return modelMapper.countByExample(example);
+    }
+
+    public long countByExample(ParkRoomBindDoor model, DateTrans dt) {
+        return modelMapper.countByExample(getCondition(model,dt));
+    }
+
+    @Override
+    public int deleteByExample(ParkRoomBindDoorExample example) {
+        return modelMapper.deleteByExample(example);
+    }
+
+    public int insert(ParkRoomBindDoor record){
+        record.setId(UUID.randomUUID().toString());
+        return insertWithoutId(record);
+    }
+
+    public int insertWithoutId(ParkRoomBindDoor record){
+        record.setCreateTime(new Date());
+        return modelMapper.insert(record);
+    }
+
+    @Override
+    public int insertSelective(ParkRoomBindDoor record) {
+        record.setId(UUID.randomUUID().toString());
+        record.setCreateTime(new Date());
+        return modelMapper.insertSelective(record);
+    }
+
+    public int roomBindDoor(String roomId, String doorId, String userId){
+        ParkRoomBindDoor data = new ParkRoomBindDoor();
+        data.setParkRoomId(roomId);
+        data.setDoorPassId(doorId);
+        data.setCreateUser(userId);
+        return insert(data);
+    }
+
+}

+ 325 - 0
pro-base/src/main/java/com/idea/buildManage/service/ParkRoomReservationService.java

@@ -0,0 +1,325 @@
+package com.idea.buildManage.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.idea.buildManage.dto.BindSearchDto;
+import com.idea.buildManage.dto.ParkRoomReservationDto;
+import com.idea.buildManage.dto.RoomSearchDto;
+import com.idea.buildManage.mapper.ParkRoomReservationExtendMapper;
+import com.idea.buildManage.mapper.ParkRoomReservationMapper;
+import com.idea.buildManage.model.ParkRoomBindDoor;
+import com.idea.buildManage.model.ParkRoomBindDoorExample;
+import com.idea.buildManage.model.ParkRoomReservation;
+import com.idea.buildManage.model.ParkRoomReservationExample;
+import com.idea.buildManage.vo.ParkRoomVo;
+import com.idea.util.ApartmentUtil;
+import com.rockstar.common.base.BaseService;
+import com.rockstar.common.support.Convert;
+import com.rockstar.frame.model.extend.DateTrans;
+import com.rockstar.frame.model.extend.Tablepar;
+import com.rockstar.util.DateUtils;
+import com.rockstar.util.HomeCacheManager;
+import com.rockstar.util.StringUtils;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class ParkRoomReservationService implements BaseService<ParkRoomReservation, ParkRoomReservationExample> {
+
+    @Autowired
+    private ParkRoomReservationMapper modelMapper;
+    @Autowired
+    private ParkRoomReservationExtendMapper parkRoomReservationExtendMapper;
+    @Autowired
+    private ParkRoomBindDoorService parkRoomBindDoorService;
+
+    public PageInfo<ParkRoomReservation> list(Tablepar tablepar, ParkRoomReservation model, DateTrans dt) {
+        PageHelper.startPage(tablepar.getPageNum(), tablepar.getPageSize());
+        List<ParkRoomReservation> list = modelMapper.selectByExample(getCondition(model,dt));
+        return new PageInfo<>(list);
+    }
+
+    public PageInfo<ParkRoomReservation> listPage(Tablepar tablepar, ParkRoomReservationDto model) {
+        PageHelper.startPage(tablepar.getPageNum(), tablepar.getPageSize());
+        List<ParkRoomReservation> list = parkRoomReservationExtendMapper.listPage(model);
+        return new PageInfo<>(list);
+    }
+
+    public PageInfo<ParkRoomVo> roomListPage(Tablepar tablepar, RoomSearchDto model) {
+        PageHelper.startPage(tablepar.getPageNum(), tablepar.getPageSize());
+        List<ParkRoomVo> list = parkRoomReservationExtendMapper.roomListPage(model);
+        if(CollectionUtils.isNotEmpty(list)){
+            for (ParkRoomVo vo : list) {
+                ParkRoomReservationExample example = new ParkRoomReservationExample();
+                example.setOrderByClause("reservation_date desc");
+                example.createCriteria().andParkRoomIdEqualTo(vo.getId());
+                List<ParkRoomReservation> reservationList = modelMapper.selectByExample(example);
+                if(CollectionUtils.isNotEmpty(reservationList)){
+                    ParkRoomReservation parkRoomReservation = reservationList.get(0);
+                    vo.setLastReservationDate(parkRoomReservation.getReservationDate());
+                    vo.setLastReservationTimeStart(parkRoomReservation.getReservationTimeStart());
+                    vo.setLastReservationTimeEnd(parkRoomReservation.getReservationTimeEnd());
+                }
+            }
+        }
+        return new PageInfo<>(list);
+    }
+
+    public JSONObject bindListPage(Tablepar tablepar, BindSearchDto dto) throws Exception {
+        JSONObject result = new JSONObject();
+        JSONArray jsonArray = new JSONArray();
+        List<JSONObject> resultList = new ArrayList<>();
+        String token = ApartmentUtil.getToken();
+        int startNum = 0;
+        int pageSize = 50;
+        long listSum = 0L;
+        JSONObject jsonObject = ApartmentUtil.getRoomListPage(startNum, pageSize, token);
+        if(null!=jsonObject){
+            JSONArray list = jsonObject.getJSONArray("list");
+            if(CollectionUtils.isNotEmpty(list)){
+                jsonArray.addAll(jsonObject.getJSONArray("list"));
+                listSum = jsonObject.getLongValue("listSum");
+                int totalPages = jsonObject.getInteger("totalPages");
+                if(totalPages > 1){
+                    for (int i = 2; i <= totalPages; i++) {
+                        JSONObject pagesObject = ApartmentUtil.getRoomListPage((i-1)*50, 50, token);
+                        jsonArray.addAll(pagesObject.getJSONArray("list"));
+                    }
+                }
+            }
+        }
+        // 过滤
+        if(CollectionUtils.isNotEmpty(jsonArray)){
+            resultList = jsonArray.stream().map(item -> (JSONObject) item).collect(Collectors.toList());
+            if(StringUtils.isNotEmpty(dto.getHouseName())){
+                resultList = resultList.stream()
+                        .filter(x -> x.getString("houseName").contains(dto.getHouseName()))
+                        .collect(Collectors.toList());
+            }
+            if(StringUtils.isNotEmpty(dto.getBuildingName())){
+                resultList = resultList.stream()
+                        .filter(x -> x.getString("buildingName").contains(dto.getBuildingName()))
+                        .collect(Collectors.toList());
+            }
+            if(StringUtils.isNotEmpty(dto.getFloorName())){
+                resultList = resultList.stream()
+                        .filter(x -> x.getString("floorName").contains(dto.getFloorName()))
+                        .collect(Collectors.toList());
+            }
+            if(StringUtils.isNotEmpty(dto.getRoomName())){
+                resultList = resultList.stream()
+                        .filter(x -> x.getString("roomName").contains(dto.getRoomName()))
+                        .collect(Collectors.toList());
+            }
+            // 分页
+            listSum = resultList.size();
+            resultList = resultList.stream()
+                    .skip((long) (tablepar.getPageNum() - 1) * tablepar.getPageSize()) // 跳过前面的数据项
+                    .limit(tablepar.getPageSize()) // 取出指定数量的数据
+                    .collect(Collectors.toList());
+        }
+        result.put("listSum", listSum);
+        result.put("list", resultList);
+        return result;
+    }
+
+    public List<ParkRoomReservation> listAll(ParkRoomReservation model, DateTrans dt) {
+        return modelMapper.selectByExample(getCondition(model,dt));
+    }
+
+    private ParkRoomReservationExample getCondition(ParkRoomReservation model, DateTrans dt) {
+        ParkRoomReservationExample ex = new ParkRoomReservationExample();
+        ex.setOrderByClause("create_time desc");
+        ParkRoomReservationExample.Criteria criteria = ex.createCriteria();
+
+        if(StringUtils.isNotEmpty(model.getParkRoomId())){
+            criteria.andParkRoomIdEqualTo(model.getParkRoomId());
+        }
+
+        return ex;
+    }
+
+    @Override
+    public int deleteByPrimaryKey(String ids) {
+        List<String> list = Convert.toListStrArray(ids);
+        ParkRoomReservationExample example = new ParkRoomReservationExample();
+        example.createCriteria().andIdIn(list);
+        return modelMapper.deleteByExample(example);
+    }
+
+    @Override
+    public ParkRoomReservation selectByPrimaryKey(String id) {
+        return modelMapper.selectByPrimaryKey(id);
+    }
+
+    @Override
+    public int updateByPrimaryKeySelective(ParkRoomReservation record) {
+        record.setUpdateTime(new Date());
+        return modelMapper.updateByPrimaryKeySelective(record);
+    }
+
+    @Override
+    public int updateByExampleSelective(ParkRoomReservation record, ParkRoomReservationExample example) {
+        record.setUpdateTime(new Date());
+        return modelMapper.updateByExampleSelective(record, example);
+    }
+
+    @Override
+    public int updateByExample(ParkRoomReservation record, ParkRoomReservationExample example) {
+        record.setUpdateTime(new Date());
+        return modelMapper.updateByExample(record, example);
+    }
+
+    @Override
+    public List<ParkRoomReservation> selectByExample(ParkRoomReservationExample example) {
+        return modelMapper.selectByExample(example);
+    }
+
+    @Override
+    public long countByExample(ParkRoomReservationExample example) {
+        return modelMapper.countByExample(example);
+    }
+
+    public long countByExample(ParkRoomReservation model, DateTrans dt) {
+        return modelMapper.countByExample(getCondition(model,dt));
+    }
+
+    @Override
+    public int deleteByExample(ParkRoomReservationExample example) {
+        return modelMapper.deleteByExample(example);
+    }
+
+    public int insert(ParkRoomReservation record){
+        record.setId(UUID.randomUUID().toString());
+        record.setUpdateTime(new Date());
+        record.setReservationStatus(1);
+        record.setDoorPassStatus(1);
+        setOrder(record);
+        return insertWithoutId(record);
+    }
+
+    public int insertWithoutId(ParkRoomReservation record){
+        record.setCreateTime(new Date());
+        record.setUpdateTime(new Date());
+        return modelMapper.insert(record);
+    }
+
+    @Override
+    public int insertSelective(ParkRoomReservation record) {
+        record.setId(UUID.randomUUID().toString());
+        record.setCreateTime(new Date());
+        record.setUpdateTime(new Date());
+        return modelMapper.insertSelective(record);
+    }
+
+    private void setOrder(ParkRoomReservation record){
+        ParkRoomReservationExample example = new ParkRoomReservationExample();
+        example.createCriteria().andParkRoomIdEqualTo(record.getParkRoomId())
+                .andReservationDateEqualTo(record.getReservationDate());
+        long count = modelMapper.countByExample(example);
+        record.setReservationOrder((int) count + 1);
+    }
+
+    @Transactional
+    public JSONObject getPassword(String id, String userId) throws Exception{
+        ParkRoomReservation reservation = selectByPrimaryKey(id);
+        if(null==reservation){
+            throw new Exception("预约单不存在");
+        }
+        ParkRoomBindDoorExample doorExample = new ParkRoomBindDoorExample();
+        doorExample.createCriteria().andParkRoomIdEqualTo(reservation.getParkRoomId());
+        List<ParkRoomBindDoor> bindDoorList = parkRoomBindDoorService.selectByExample(doorExample);
+        if(!CollectionUtils.isNotEmpty(bindDoorList)){
+            throw new Exception("预约单所选房间未匹配门锁户室号");
+        }
+        ParkRoomBindDoor door = bindDoorList.get(0);
+        StringBuilder msg = new StringBuilder();
+        String reservationDate = DateUtils.formatDate(reservation.getReservationDate(), "yyyy-MM-dd");
+        String reservationTimeStart = reservationDate + " " + reservation.getReservationTimeStart() + ":00";
+        Date startTime = DateUtils.parseDate(reservationTimeStart);
+        System.out.println(startTime.getTime());
+        String token = ApartmentUtil.getToken();
+        JSONObject jsonObject = ApartmentUtil.sendPassword(door.getDoorPassId(), startTime.getTime() / 1000, token);
+        String password = jsonObject.getString("password");
+        long validStartTime = jsonObject.getLongValue("validStartTime") * 1000;
+        long validEndTime = jsonObject.getLongValue("validEndTime") * 1000;
+        String startTimeStr = DateUtils.formatDate(new Date(validStartTime), "yyyy-MM-dd HH:mm:ss");
+        String endTimeStr = DateUtils.formatDate(new Date(validEndTime), "yyyy-MM-dd HH:mm:ss");
+        JSONObject obj = new JSONObject();
+        obj.put("password", password);
+        msg.append(reservation.getParkInfoName()).append(reservation.getParkFloorDiscName())
+                .append(reservation.getMnpBuildingNo()).append("号").append(reservation.getParkRoomNo()).append("室")
+                .append("临时开门密码为:").append(password).append(",密码生效时段为:").append(startTimeStr)
+                .append("~").append(endTimeStr).append("。点击确定,将密码复制到粘贴板。");
+        obj.put("msg", msg.toString());
+
+        // 更新开门密码状态
+        ParkRoomReservation update = new ParkRoomReservation();
+        update.setId(id);
+        update.setDoorPassStatus(2);
+        update.setReservationStatus(3);
+        update.setUpdateUser(userId);
+        updateByPrimaryKeySelective(update);
+        return obj;
+    }
+
+    public int editCancel(String id, String userId) {
+        ParkRoomReservation model = new ParkRoomReservation();
+        model.setId(id);
+        model.setReservationStatus(2);
+        model.setUpdateUser(userId);
+        model.setUpdateTime(new Date());
+        return modelMapper.updateByPrimaryKeySelective(model);
+    }
+
+    public void checkReservationStatus() throws Exception{
+        // 查状态等于待入户的、当前日期的预约单
+        Date now = DateUtils.getDateStart(new Date());
+        ParkRoomReservationExample example = new ParkRoomReservationExample();
+        example.createCriteria().andReservationDateEqualTo(now).andReservationStatusEqualTo(3);
+        List<ParkRoomReservation> reservationList = modelMapper.selectByExample(example);
+        if(CollectionUtils.isNotEmpty(reservationList)){
+            String token = ApartmentUtil.getToken();
+            for (ParkRoomReservation reservation : reservationList) {
+                ParkRoomBindDoorExample doorExample = new ParkRoomBindDoorExample();
+                doorExample.createCriteria().andParkRoomIdEqualTo(reservation.getParkRoomId());
+                List<ParkRoomBindDoor> bindDoorList = parkRoomBindDoorService.selectByExample(doorExample);
+                if(CollectionUtils.isNotEmpty(bindDoorList)){
+                    ParkRoomBindDoor bindDoor = bindDoorList.get(0);
+                    String reservationDate = DateUtils.formatDate(reservation.getReservationDate(), "yyyy-MM-dd");
+                    String[] reservationTimeStarts = reservation.getReservationTimeStart().split(":");
+                    LocalTime time = LocalTime.of(Integer.parseInt(reservationTimeStarts[0]), Integer.parseInt(reservationTimeStarts[1]), 0);
+                    LocalTime roundedDown = time.truncatedTo(ChronoUnit.HOURS)
+                            .plusMinutes(30 * (time.getMinute() / 30));
+                    String[] reservationTimeEnds = reservation.getReservationTimeEnd().split(":");
+                    time = LocalTime.of(Integer.parseInt(reservationTimeEnds[0]), Integer.parseInt(reservationTimeEnds[1]), 0);
+                    LocalTime roundedUp = time.truncatedTo(ChronoUnit.HOURS)
+                            .plusMinutes(30 * ((time.getMinute() + 29) / 30));
+                    String reservationTimeStart = reservationDate + " " + roundedDown.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
+                    String reservationTimeEnd = reservationDate + " " + roundedUp.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
+                    Date startTime = DateUtils.parseDate(reservationTimeStart);
+                    Date endTime = DateUtils.parseDate(reservationTimeEnd);
+                    JSONObject result = ApartmentUtil.getRoomLockLogListPage(0, 1, bindDoor.getDoorPassId(), token,
+                            startTime.getTime() / 1000, endTime.getTime() / 1000, 4);
+                    if(result.getLongValue("listSum") > 0) {
+                        ParkRoomReservation update = new ParkRoomReservation();
+                        update.setId(reservation.getId());
+                        update.setReservationStatus(4);
+                        updateByPrimaryKeySelective(update);
+                    }
+                }
+            }
+        }
+    }
+
+}

+ 31 - 0
pro-base/src/main/java/com/idea/buildManage/task/ParkRoomReservationTask.java

@@ -0,0 +1,31 @@
+package com.idea.buildManage.task;
+
+import com.idea.buildManage.service.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+public class ParkRoomReservationTask {
+
+    @Autowired
+    private ParkRoomReservationService parkRoomReservationService;
+
+    /**
+     * 每小时执行一次
+     * 获取开锁日志
+     * 有则更新状态
+     */
+    @Scheduled(cron = "0 0 * * * ?")
+    public void refreshStatus() {
+        try {
+            parkRoomReservationService.checkReservationStatus();
+            log.info("更新看房预约单状态任务执行成功");
+        } catch (Exception e) {
+            log.error("更新看房预约单状态任务执行失败 {}", e.getMessage());
+        }
+    }
+
+}

+ 30 - 0
pro-base/src/main/java/com/idea/buildManage/vo/ParkRoomVo.java

@@ -0,0 +1,30 @@
+package com.idea.buildManage.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ParkRoomVo implements Serializable {
+
+    private String id;
+    private String groupId;
+    private String groupName;
+    private String discId;
+    private String discName;
+    private String buildId;
+    private String buildName;
+    private String floor;
+    private String roomNo;
+    private String doorStatus;
+    private Integer personNum;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date lastReservationDate;
+    private String lastReservationTimeStart;
+    private String lastReservationTimeEnd;
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 61 - 0
pro-base/src/main/java/com/idea/util/AESUtil.java

@@ -0,0 +1,61 @@
+package com.idea.util;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.util.Base64;
+
+public class AESUtil {
+    public static String decryptKey(String tokenId, String pw) throws Exception {
+
+// MD5加密
+
+        byte[] md5Byte =MessageDigest.getInstance("MD5").digest(tokenId.getBytes());
+
+// 转为16进制字符串
+
+        String hexStr = bytesToHex(md5Byte);
+
+// 截取
+
+        String aesKey = hexStr.substring(8, 24);
+
+// AES解密,返回结果
+
+        return decrypt(pw, aesKey, aesKey);
+
+    }
+
+    private static String bytesToHex(byte[] bytes) {
+
+        StringBuilder sb = new StringBuilder(bytes.length * 2);
+
+        for (int i = 0; i < bytes.length; i++) {
+
+            sb.append(Character.toUpperCase(Character.forDigit((bytes[i] >> 4) & 0x0F, 16)));
+
+            sb.append(Character.toUpperCase(Character.forDigit(bytes[i] & 0x0F, 16)));
+
+        }
+
+        return sb.toString();
+
+    }
+
+    private static String decrypt(String pw, String aesKey, String viPara) throws Exception {
+
+        IvParameterSpec zeroIv = new IvParameterSpec(viPara.getBytes());
+
+        SecretKeySpec key = new SecretKeySpec(aesKey.getBytes(), "AES");
+
+        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
+
+        cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
+
+        return new String(cipher.doFinal(Base64.getDecoder().decode(pw)), StandardCharsets.UTF_8);
+
+    }
+
+}

+ 229 - 0
pro-base/src/main/java/com/idea/util/ApartmentUtil.java

@@ -0,0 +1,229 @@
+package com.idea.util;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.rockstar.util.MD5Util;
+import com.rockstar.util.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpHeaders;
+
+import java.util.Date;
+
+/**
+ * 公寓门锁相关接口
+ */
+@Slf4j
+public class ApartmentUtil {
+
+    private static final String postUrl = "http://t.server.hxjiot.com";
+
+    // 测试
+    private static final String accountName = "cfmenma";
+    private static final String password = MD5Util.encode("cf123456");
+
+    /**
+     * 鉴权获取token
+     */
+    public static String getToken() throws Exception {
+        JSONObject params = new JSONObject();
+        params.put("method", "apartmentLogin");
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("accountName", accountName);
+        jsonObject.put("password", password);
+        params.put("data", jsonObject);
+        String body = params.toJSONString();
+        // 发送POST请求
+        HttpHeaders headers = new HttpHeaders() {{
+            add("Content-Type", "text/json;charset=utf-8");
+            add("Content-Version", "1.0");
+        }};
+        HttpResponse response = HttpRequest.post(postUrl)
+                .header(headers)
+                .body(body)
+                .execute();
+        String responseBody = response.body();
+        // responseBody
+        if(StringUtils.isNotEmpty(responseBody)){
+            JSONObject json = JSON.parseObject(responseBody);
+            if(json.getIntValue("resultCode") == 0){
+                return json.getJSONObject("data").getString("tokenId");
+            }else{
+                throw new Exception(json.getString("resultCode") + ":" +json.getString("reason"));
+            }
+        }else{
+            throw new Exception("请求出错");
+        }
+    }
+
+    /**
+     * 获取房间分页列表
+     */
+    public static JSONObject getRoomListPage(int startNum, int getNum, String tokenId) throws Exception {
+        JSONObject params = new JSONObject();
+        params.put("method", "apartmentRoomList");
+        params.put("tokenId", tokenId);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("startNum", startNum);
+        jsonObject.put("getNum", getNum);
+        params.put("data", jsonObject);
+        String body = params.toJSONString();
+        // 发送POST请求
+        HttpHeaders headers = new HttpHeaders() {{
+            add("Content-Type", "text/json;charset=utf-8");
+            add("Content-Version", "1.2");
+        }};
+        HttpResponse response = HttpRequest.post(postUrl)
+                .header(headers)
+                .body(body)
+                .execute();
+        String responseBody = response.body();
+        // responseBody
+        if(StringUtils.isNotEmpty(responseBody)){
+            JSONObject json = JSON.parseObject(responseBody);
+            if(json.getIntValue("resultCode") == 0){
+                return json.getJSONObject("data");
+            }else{
+                throw new Exception(json.getString("resultCode") + ":" +json.getString("reason"));
+            }
+        }else{
+            throw new Exception("请求出错");
+        }
+    }
+
+    /**
+     * 房间详情
+     */
+    public static JSONObject getRoomDetail(String roomId, String tokenId) throws Exception {
+        JSONObject params = new JSONObject();
+        params.put("method", "apartmentRoomDetail");
+        params.put("tokenId", tokenId);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("roomId", roomId);
+        params.put("data", jsonObject);
+        String body = params.toJSONString();
+        // 发送POST请求
+        HttpHeaders headers = new HttpHeaders() {{
+            add("Content-Type", "text/json;charset=utf-8");
+            add("Content-Version", "1.2");
+        }};
+        HttpResponse response = HttpRequest.post(postUrl)
+                .header(headers)
+                .body(body)
+                .execute();
+        String responseBody = response.body();
+        // responseBody
+        if(StringUtils.isNotEmpty(responseBody)){
+            JSONObject json = JSON.parseObject(responseBody);
+            if(json.getIntValue("resultCode") == 0){
+                return json.getJSONObject("data");
+            }else{
+                throw new Exception(json.getString("resultCode") + ":" +json.getString("reason"));
+            }
+        }else{
+            throw new Exception("请求出错");
+        }
+    }
+
+    /**
+     * 远程下发密码授权
+     */
+    public static JSONObject sendPassword(String roomId, long beginTime, String tokenId) throws Exception {
+        JSONObject params = new JSONObject();
+        params.put("method", "apartmentAddSingleKey");
+        params.put("tokenId", tokenId);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("roomId", roomId);
+        jsonObject.put("beginTime", beginTime);
+        params.put("data", jsonObject);
+        String body = params.toJSONString();
+        // 发送POST请求
+        HttpHeaders headers = new HttpHeaders() {{
+            add("Content-Type", "text/json;charset=utf-8");
+            add("Content-Version", "1.1");
+        }};
+        HttpResponse response = HttpRequest.post(postUrl)
+                .header(headers)
+                .body(body)
+                .execute();
+        String responseBody = response.body();
+        // responseBody
+        if(StringUtils.isNotEmpty(responseBody)){
+            JSONObject json = JSON.parseObject(responseBody);
+            if(json.getIntValue("resultCode") == 0){
+                JSONObject data = json.getJSONObject("data");
+                data.put("aesPassword", data.getString("password"));
+                data.put("password", AESUtil.decryptKey(tokenId, data.getString("password")));
+                data.put("tokenId", tokenId);
+//                System.out.println(data.toJSONString());
+                return data;
+            }else{
+                throw new Exception(json.getString("resultCode") + ":" +json.getString("reason"));
+            }
+        }else{
+            throw new Exception("请求出错");
+        }
+    }
+
+    /**
+     * 获取门锁日志分页列表
+     */
+    public static JSONObject getRoomLockLogListPage(int startNum, int getNum, String roomId, String tokenId,
+                                                    Long beginTime, Long endTime, Integer logType) throws Exception {
+        JSONObject params = new JSONObject();
+        params.put("method", "apartmentLockLogList");
+        params.put("tokenId", tokenId);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("startNum", startNum);
+        jsonObject.put("getNum", getNum);
+        jsonObject.put("roomId", roomId);
+        if(null!=beginTime && null!=endTime){
+            jsonObject.put("beginTime", beginTime);
+            jsonObject.put("endTime", endTime);
+        }
+        if(null!=logType){
+            jsonObject.put("logType", logType);
+        }
+        jsonObject.put("logType", logType);
+        params.put("data", jsonObject);
+        String body = params.toJSONString();
+        // 发送POST请求
+        HttpHeaders headers = new HttpHeaders() {{
+            add("Content-Type", "text/json;charset=utf-8");
+            add("Content-Version", "1.1");
+        }};
+        HttpResponse response = HttpRequest.post(postUrl)
+                .header(headers)
+                .body(body)
+                .execute();
+        String responseBody = response.body();
+        // responseBody
+        if(StringUtils.isNotEmpty(responseBody)){
+            JSONObject json = JSON.parseObject(responseBody);
+            if(json.getIntValue("resultCode") == 0){
+                return json.getJSONObject("data");
+            }else{
+                throw new Exception(json.getString("resultCode") + ":" +json.getString("reason"));
+            }
+        }else{
+            throw new Exception("请求出错");
+        }
+    }
+
+    // 2025-05-14 11:00:00 1747191600
+    // 2025-05-14 18:00:00 1747216800
+    public static void main(String[] args) throws Exception {
+        String token = getToken();
+        System.out.println(token);
+//        JSONObject jsonObject = getRoomListPage(0, 10, token);
+//        System.out.println(jsonObject.toJSONString());
+//        System.out.println(getRoomDetail("CkgbdUY4u8g=", token));
+//        JSONObject data = sendPassword("CkgbdUY4u8g=", 1747278600L, token);
+//        System.out.println(data.toJSONString());
+//        String password = AESUtil.decryptKey(data.getString("password"), data.getString("tokenId"));
+//        System.out.println(password);
+//        System.out.println(getRoomLockLogListPage(0, 1, "CkgbdUY4u8g=", token, 1747278000L, 1747279800L, 4));
+    }
+
+}

+ 211 - 0
pro-base/src/main/resources/mybatis/buildManage/ParkRoomBindDoorMapper.xml

@@ -0,0 +1,211 @@
+<?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.idea.buildManage.mapper.ParkRoomBindDoorMapper">
+  <resultMap id="BaseResultMap" type="com.idea.buildManage.model.ParkRoomBindDoor">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="park_room_id" jdbcType="VARCHAR" property="parkRoomId" />
+    <result column="door_pass_id" jdbcType="VARCHAR" property="doorPassId" />
+    <result column="create_user" jdbcType="VARCHAR" property="createUser" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, park_room_id, door_pass_id, create_user, create_time
+  </sql>
+  <select id="selectByExample" parameterType="com.idea.buildManage.model.ParkRoomBindDoorExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from park_room_bind_door
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from park_room_bind_door
+    where id = #{id,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from park_room_bind_door
+    where id = #{id,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.idea.buildManage.model.ParkRoomBindDoorExample">
+    delete from park_room_bind_door
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.idea.buildManage.model.ParkRoomBindDoor">
+    insert into park_room_bind_door (id, park_room_id, door_pass_id, 
+      create_user, create_time)
+    values (#{id,jdbcType=VARCHAR}, #{parkRoomId,jdbcType=VARCHAR}, #{doorPassId,jdbcType=VARCHAR}, 
+      #{createUser,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP})
+  </insert>
+  <insert id="insertSelective" parameterType="com.idea.buildManage.model.ParkRoomBindDoor">
+    insert into park_room_bind_door
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="parkRoomId != null">
+        park_room_id,
+      </if>
+      <if test="doorPassId != null">
+        door_pass_id,
+      </if>
+      <if test="createUser != null">
+        create_user,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=VARCHAR},
+      </if>
+      <if test="parkRoomId != null">
+        #{parkRoomId,jdbcType=VARCHAR},
+      </if>
+      <if test="doorPassId != null">
+        #{doorPassId,jdbcType=VARCHAR},
+      </if>
+      <if test="createUser != null">
+        #{createUser,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.idea.buildManage.model.ParkRoomBindDoorExample" resultType="java.lang.Long">
+    select count(*) from park_room_bind_door
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update park_room_bind_door
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=VARCHAR},
+      </if>
+      <if test="record.parkRoomId != null">
+        park_room_id = #{record.parkRoomId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.doorPassId != null">
+        door_pass_id = #{record.doorPassId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createUser != null">
+        create_user = #{record.createUser,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update park_room_bind_door
+    set id = #{record.id,jdbcType=VARCHAR},
+      park_room_id = #{record.parkRoomId,jdbcType=VARCHAR},
+      door_pass_id = #{record.doorPassId,jdbcType=VARCHAR},
+      create_user = #{record.createUser,jdbcType=VARCHAR},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.idea.buildManage.model.ParkRoomBindDoor">
+    update park_room_bind_door
+    <set>
+      <if test="parkRoomId != null">
+        park_room_id = #{parkRoomId,jdbcType=VARCHAR},
+      </if>
+      <if test="doorPassId != null">
+        door_pass_id = #{doorPassId,jdbcType=VARCHAR},
+      </if>
+      <if test="createUser != null">
+        create_user = #{createUser,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.idea.buildManage.model.ParkRoomBindDoor">
+    update park_room_bind_door
+    set park_room_id = #{parkRoomId,jdbcType=VARCHAR},
+      door_pass_id = #{doorPassId,jdbcType=VARCHAR},
+      create_user = #{createUser,jdbcType=VARCHAR},
+      create_time = #{createTime,jdbcType=TIMESTAMP}
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+</mapper>

+ 90 - 0
pro-base/src/main/resources/mybatis/buildManage/ParkRoomReservationExtendMapper.xml

@@ -0,0 +1,90 @@
+<?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.idea.buildManage.mapper.ParkRoomReservationExtendMapper">
+    <select id="listPage" parameterType="com.idea.buildManage.dto.ParkRoomReservationDto"
+            resultType="com.idea.buildManage.model.ParkRoomReservation">
+        select a.id,
+        a.park_info_id,
+        a.park_info_name,
+        a.park_floor_disc_id,
+        a.park_floor_disc_name,
+        a.mnp_building_id,
+        a.mnp_building_no,
+        a.park_room_id,
+        a.park_room_floor,
+        a.park_room_no,
+        a.buyer_name,
+        a.buyer_phone,
+        a.buyer_gender,
+        a.buyer_address,
+        a.applicant_name,
+        a.applicant_phone,
+        a.overview_content,
+        a.reservation_date,
+        a.reservation_time_start,
+        a.reservation_time_end,
+        a.reservation_order,
+        a.reservation_status,
+        case a.reservation_status
+        when 1 then '已预约'
+        when 2 then '已取消'
+        when 3 then '待入户'
+        when 4 then '已完成'
+        end as reservationStatusStr,
+        a.door_pass_status,
+        case a.door_pass_status
+        when 1 then '未发'
+        when 2 then '已发'
+        end as doorPassStatusStr,
+        a.create_user,
+        a.create_time,
+        a.update_user,
+        a.update_time,
+        b.truename as createUserName
+        from park_room_reservation a
+        left join frame_user b on b.id = a.create_user
+        <where>
+            <if test="keyword!=null and keyword!=''">
+                and (
+                a.buyer_name like concat('%',#{keyword},'%')
+                or
+                a.buyer_phone like concat('%',#{keyword},'%')
+                )
+            </if>
+            <if test="createTimeStart!=null and createTimeStart!=''">
+                and date_format(a.create_time, '%Y-%m-%d') &gt;= #{createTimeStart}
+            </if>
+            <if test="createTimeEnd!=null and createTimeEnd!=''">
+                and date_format(a.create_time, '%Y-%m-%d') &lt;= #{createTimeEnd}
+            </if>
+            <if test="reservationStatus!=null">
+                and a.reservation_status= #{reservationStatus}
+            </if>
+        </where>
+        order by create_time desc
+    </select>
+
+    <select id="roomListPage" parameterType="com.idea.buildManage.dto.RoomSearchDto"
+            resultType="com.idea.buildManage.vo.ParkRoomVo">
+        select a.id, a.group_id, a.group_name, a.disc_id, a.disc_name, a.build_id, a.build_name, a.floor, a.room_no,
+        IF(b.id is not null, '已匹配', '未匹配') as doorStatus, c.num as personNum
+        from park_room a
+        left join park_room_bind_door b on b.park_room_id = a.id
+        left join (
+            select park_room_id, count(1) as num
+            from park_room_reservation
+            group by park_room_id
+        ) c on c.park_room_id = a.id
+        <where>
+            <if test="parkInfoId!=null and parkInfoId!=''">
+                and a.group_id = #{parkInfoId}
+            </if>
+            <if test="mnpBuildingId!=null and mnpBuildingId!=''">
+                and a.build_id = #{mnpBuildingId}
+            </if>
+            <if test="roomAddress!=null and roomAddress!=''">
+                and concat(a.group_name, a.disc_name, a.build_name, '号', a.room_no, '室') like concat('%',#{roomAddress},'%')
+            </if>
+        </where>
+    </select>
+</mapper>

+ 561 - 0
pro-base/src/main/resources/mybatis/buildManage/ParkRoomReservationMapper.xml

@@ -0,0 +1,561 @@
+<?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.idea.buildManage.mapper.ParkRoomReservationMapper">
+  <resultMap id="BaseResultMap" type="com.idea.buildManage.model.ParkRoomReservation">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="park_info_id" jdbcType="VARCHAR" property="parkInfoId" />
+    <result column="park_info_name" jdbcType="VARCHAR" property="parkInfoName" />
+    <result column="park_floor_disc_id" jdbcType="VARCHAR" property="parkFloorDiscId" />
+    <result column="park_floor_disc_name" jdbcType="VARCHAR" property="parkFloorDiscName" />
+    <result column="mnp_building_id" jdbcType="VARCHAR" property="mnpBuildingId" />
+    <result column="mnp_building_no" jdbcType="VARCHAR" property="mnpBuildingNo" />
+    <result column="park_room_id" jdbcType="VARCHAR" property="parkRoomId" />
+    <result column="park_room_floor" jdbcType="VARCHAR" property="parkRoomFloor" />
+    <result column="park_room_no" jdbcType="VARCHAR" property="parkRoomNo" />
+    <result column="buyer_name" jdbcType="VARCHAR" property="buyerName" />
+    <result column="buyer_phone" jdbcType="VARCHAR" property="buyerPhone" />
+    <result column="buyer_gender" jdbcType="VARCHAR" property="buyerGender" />
+    <result column="buyer_address" jdbcType="VARCHAR" property="buyerAddress" />
+    <result column="applicant_name" jdbcType="VARCHAR" property="applicantName" />
+    <result column="applicant_phone" jdbcType="VARCHAR" property="applicantPhone" />
+    <result column="overview_content" jdbcType="VARCHAR" property="overviewContent" />
+    <result column="reservation_date" jdbcType="TIMESTAMP" property="reservationDate" />
+    <result column="reservation_time_start" jdbcType="VARCHAR" property="reservationTimeStart" />
+    <result column="reservation_time_end" jdbcType="VARCHAR" property="reservationTimeEnd" />
+    <result column="reservation_order" jdbcType="INTEGER" property="reservationOrder" />
+    <result column="reservation_status" jdbcType="INTEGER" property="reservationStatus" />
+    <result column="door_pass_status" jdbcType="INTEGER" property="doorPassStatus" />
+    <result column="create_user" jdbcType="VARCHAR" property="createUser" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_user" jdbcType="VARCHAR" property="updateUser" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, park_info_id, park_info_name, park_floor_disc_id, park_floor_disc_name, mnp_building_id, 
+    mnp_building_no, park_room_id, park_room_floor, park_room_no, buyer_name, buyer_phone, 
+    buyer_gender, buyer_address, applicant_name, applicant_phone, overview_content, reservation_date, 
+    reservation_time_start, reservation_time_end, reservation_order, reservation_status, 
+    door_pass_status, create_user, create_time, update_user, update_time
+  </sql>
+  <select id="selectByExample" parameterType="com.idea.buildManage.model.ParkRoomReservationExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from park_room_reservation
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from park_room_reservation
+    where id = #{id,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from park_room_reservation
+    where id = #{id,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.idea.buildManage.model.ParkRoomReservationExample">
+    delete from park_room_reservation
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.idea.buildManage.model.ParkRoomReservation">
+    insert into park_room_reservation (id, park_info_id, park_info_name, 
+      park_floor_disc_id, park_floor_disc_name, mnp_building_id, 
+      mnp_building_no, park_room_id, park_room_floor, 
+      park_room_no, buyer_name, buyer_phone, 
+      buyer_gender, buyer_address, applicant_name, 
+      applicant_phone, overview_content, reservation_date, 
+      reservation_time_start, reservation_time_end, 
+      reservation_order, reservation_status, door_pass_status, 
+      create_user, create_time, update_user, 
+      update_time)
+    values (#{id,jdbcType=VARCHAR}, #{parkInfoId,jdbcType=VARCHAR}, #{parkInfoName,jdbcType=VARCHAR}, 
+      #{parkFloorDiscId,jdbcType=VARCHAR}, #{parkFloorDiscName,jdbcType=VARCHAR}, #{mnpBuildingId,jdbcType=VARCHAR}, 
+      #{mnpBuildingNo,jdbcType=VARCHAR}, #{parkRoomId,jdbcType=VARCHAR}, #{parkRoomFloor,jdbcType=VARCHAR}, 
+      #{parkRoomNo,jdbcType=VARCHAR}, #{buyerName,jdbcType=VARCHAR}, #{buyerPhone,jdbcType=VARCHAR}, 
+      #{buyerGender,jdbcType=VARCHAR}, #{buyerAddress,jdbcType=VARCHAR}, #{applicantName,jdbcType=VARCHAR}, 
+      #{applicantPhone,jdbcType=VARCHAR}, #{overviewContent,jdbcType=VARCHAR}, #{reservationDate,jdbcType=TIMESTAMP}, 
+      #{reservationTimeStart,jdbcType=VARCHAR}, #{reservationTimeEnd,jdbcType=VARCHAR}, 
+      #{reservationOrder,jdbcType=INTEGER}, #{reservationStatus,jdbcType=INTEGER}, #{doorPassStatus,jdbcType=INTEGER}, 
+      #{createUser,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateUser,jdbcType=VARCHAR}, 
+      #{updateTime,jdbcType=TIMESTAMP})
+  </insert>
+  <insert id="insertSelective" parameterType="com.idea.buildManage.model.ParkRoomReservation">
+    insert into park_room_reservation
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="parkInfoId != null">
+        park_info_id,
+      </if>
+      <if test="parkInfoName != null">
+        park_info_name,
+      </if>
+      <if test="parkFloorDiscId != null">
+        park_floor_disc_id,
+      </if>
+      <if test="parkFloorDiscName != null">
+        park_floor_disc_name,
+      </if>
+      <if test="mnpBuildingId != null">
+        mnp_building_id,
+      </if>
+      <if test="mnpBuildingNo != null">
+        mnp_building_no,
+      </if>
+      <if test="parkRoomId != null">
+        park_room_id,
+      </if>
+      <if test="parkRoomFloor != null">
+        park_room_floor,
+      </if>
+      <if test="parkRoomNo != null">
+        park_room_no,
+      </if>
+      <if test="buyerName != null">
+        buyer_name,
+      </if>
+      <if test="buyerPhone != null">
+        buyer_phone,
+      </if>
+      <if test="buyerGender != null">
+        buyer_gender,
+      </if>
+      <if test="buyerAddress != null">
+        buyer_address,
+      </if>
+      <if test="applicantName != null">
+        applicant_name,
+      </if>
+      <if test="applicantPhone != null">
+        applicant_phone,
+      </if>
+      <if test="overviewContent != null">
+        overview_content,
+      </if>
+      <if test="reservationDate != null">
+        reservation_date,
+      </if>
+      <if test="reservationTimeStart != null">
+        reservation_time_start,
+      </if>
+      <if test="reservationTimeEnd != null">
+        reservation_time_end,
+      </if>
+      <if test="reservationOrder != null">
+        reservation_order,
+      </if>
+      <if test="reservationStatus != null">
+        reservation_status,
+      </if>
+      <if test="doorPassStatus != null">
+        door_pass_status,
+      </if>
+      <if test="createUser != null">
+        create_user,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="updateUser != null">
+        update_user,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=VARCHAR},
+      </if>
+      <if test="parkInfoId != null">
+        #{parkInfoId,jdbcType=VARCHAR},
+      </if>
+      <if test="parkInfoName != null">
+        #{parkInfoName,jdbcType=VARCHAR},
+      </if>
+      <if test="parkFloorDiscId != null">
+        #{parkFloorDiscId,jdbcType=VARCHAR},
+      </if>
+      <if test="parkFloorDiscName != null">
+        #{parkFloorDiscName,jdbcType=VARCHAR},
+      </if>
+      <if test="mnpBuildingId != null">
+        #{mnpBuildingId,jdbcType=VARCHAR},
+      </if>
+      <if test="mnpBuildingNo != null">
+        #{mnpBuildingNo,jdbcType=VARCHAR},
+      </if>
+      <if test="parkRoomId != null">
+        #{parkRoomId,jdbcType=VARCHAR},
+      </if>
+      <if test="parkRoomFloor != null">
+        #{parkRoomFloor,jdbcType=VARCHAR},
+      </if>
+      <if test="parkRoomNo != null">
+        #{parkRoomNo,jdbcType=VARCHAR},
+      </if>
+      <if test="buyerName != null">
+        #{buyerName,jdbcType=VARCHAR},
+      </if>
+      <if test="buyerPhone != null">
+        #{buyerPhone,jdbcType=VARCHAR},
+      </if>
+      <if test="buyerGender != null">
+        #{buyerGender,jdbcType=VARCHAR},
+      </if>
+      <if test="buyerAddress != null">
+        #{buyerAddress,jdbcType=VARCHAR},
+      </if>
+      <if test="applicantName != null">
+        #{applicantName,jdbcType=VARCHAR},
+      </if>
+      <if test="applicantPhone != null">
+        #{applicantPhone,jdbcType=VARCHAR},
+      </if>
+      <if test="overviewContent != null">
+        #{overviewContent,jdbcType=VARCHAR},
+      </if>
+      <if test="reservationDate != null">
+        #{reservationDate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="reservationTimeStart != null">
+        #{reservationTimeStart,jdbcType=VARCHAR},
+      </if>
+      <if test="reservationTimeEnd != null">
+        #{reservationTimeEnd,jdbcType=VARCHAR},
+      </if>
+      <if test="reservationOrder != null">
+        #{reservationOrder,jdbcType=INTEGER},
+      </if>
+      <if test="reservationStatus != null">
+        #{reservationStatus,jdbcType=INTEGER},
+      </if>
+      <if test="doorPassStatus != null">
+        #{doorPassStatus,jdbcType=INTEGER},
+      </if>
+      <if test="createUser != null">
+        #{createUser,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateUser != null">
+        #{updateUser,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.idea.buildManage.model.ParkRoomReservationExample" resultType="java.lang.Long">
+    select count(*) from park_room_reservation
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update park_room_reservation
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=VARCHAR},
+      </if>
+      <if test="record.parkInfoId != null">
+        park_info_id = #{record.parkInfoId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.parkInfoName != null">
+        park_info_name = #{record.parkInfoName,jdbcType=VARCHAR},
+      </if>
+      <if test="record.parkFloorDiscId != null">
+        park_floor_disc_id = #{record.parkFloorDiscId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.parkFloorDiscName != null">
+        park_floor_disc_name = #{record.parkFloorDiscName,jdbcType=VARCHAR},
+      </if>
+      <if test="record.mnpBuildingId != null">
+        mnp_building_id = #{record.mnpBuildingId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.mnpBuildingNo != null">
+        mnp_building_no = #{record.mnpBuildingNo,jdbcType=VARCHAR},
+      </if>
+      <if test="record.parkRoomId != null">
+        park_room_id = #{record.parkRoomId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.parkRoomFloor != null">
+        park_room_floor = #{record.parkRoomFloor,jdbcType=VARCHAR},
+      </if>
+      <if test="record.parkRoomNo != null">
+        park_room_no = #{record.parkRoomNo,jdbcType=VARCHAR},
+      </if>
+      <if test="record.buyerName != null">
+        buyer_name = #{record.buyerName,jdbcType=VARCHAR},
+      </if>
+      <if test="record.buyerPhone != null">
+        buyer_phone = #{record.buyerPhone,jdbcType=VARCHAR},
+      </if>
+      <if test="record.buyerGender != null">
+        buyer_gender = #{record.buyerGender,jdbcType=VARCHAR},
+      </if>
+      <if test="record.buyerAddress != null">
+        buyer_address = #{record.buyerAddress,jdbcType=VARCHAR},
+      </if>
+      <if test="record.applicantName != null">
+        applicant_name = #{record.applicantName,jdbcType=VARCHAR},
+      </if>
+      <if test="record.applicantPhone != null">
+        applicant_phone = #{record.applicantPhone,jdbcType=VARCHAR},
+      </if>
+      <if test="record.overviewContent != null">
+        overview_content = #{record.overviewContent,jdbcType=VARCHAR},
+      </if>
+      <if test="record.reservationDate != null">
+        reservation_date = #{record.reservationDate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.reservationTimeStart != null">
+        reservation_time_start = #{record.reservationTimeStart,jdbcType=VARCHAR},
+      </if>
+      <if test="record.reservationTimeEnd != null">
+        reservation_time_end = #{record.reservationTimeEnd,jdbcType=VARCHAR},
+      </if>
+      <if test="record.reservationOrder != null">
+        reservation_order = #{record.reservationOrder,jdbcType=INTEGER},
+      </if>
+      <if test="record.reservationStatus != null">
+        reservation_status = #{record.reservationStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.doorPassStatus != null">
+        door_pass_status = #{record.doorPassStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.createUser != null">
+        create_user = #{record.createUser,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.updateUser != null">
+        update_user = #{record.updateUser,jdbcType=VARCHAR},
+      </if>
+      <if test="record.updateTime != null">
+        update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update park_room_reservation
+    set id = #{record.id,jdbcType=VARCHAR},
+      park_info_id = #{record.parkInfoId,jdbcType=VARCHAR},
+      park_info_name = #{record.parkInfoName,jdbcType=VARCHAR},
+      park_floor_disc_id = #{record.parkFloorDiscId,jdbcType=VARCHAR},
+      park_floor_disc_name = #{record.parkFloorDiscName,jdbcType=VARCHAR},
+      mnp_building_id = #{record.mnpBuildingId,jdbcType=VARCHAR},
+      mnp_building_no = #{record.mnpBuildingNo,jdbcType=VARCHAR},
+      park_room_id = #{record.parkRoomId,jdbcType=VARCHAR},
+      park_room_floor = #{record.parkRoomFloor,jdbcType=VARCHAR},
+      park_room_no = #{record.parkRoomNo,jdbcType=VARCHAR},
+      buyer_name = #{record.buyerName,jdbcType=VARCHAR},
+      buyer_phone = #{record.buyerPhone,jdbcType=VARCHAR},
+      buyer_gender = #{record.buyerGender,jdbcType=VARCHAR},
+      buyer_address = #{record.buyerAddress,jdbcType=VARCHAR},
+      applicant_name = #{record.applicantName,jdbcType=VARCHAR},
+      applicant_phone = #{record.applicantPhone,jdbcType=VARCHAR},
+      overview_content = #{record.overviewContent,jdbcType=VARCHAR},
+      reservation_date = #{record.reservationDate,jdbcType=TIMESTAMP},
+      reservation_time_start = #{record.reservationTimeStart,jdbcType=VARCHAR},
+      reservation_time_end = #{record.reservationTimeEnd,jdbcType=VARCHAR},
+      reservation_order = #{record.reservationOrder,jdbcType=INTEGER},
+      reservation_status = #{record.reservationStatus,jdbcType=INTEGER},
+      door_pass_status = #{record.doorPassStatus,jdbcType=INTEGER},
+      create_user = #{record.createUser,jdbcType=VARCHAR},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      update_user = #{record.updateUser,jdbcType=VARCHAR},
+      update_time = #{record.updateTime,jdbcType=TIMESTAMP}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.idea.buildManage.model.ParkRoomReservation">
+    update park_room_reservation
+    <set>
+      <if test="parkInfoId != null">
+        park_info_id = #{parkInfoId,jdbcType=VARCHAR},
+      </if>
+      <if test="parkInfoName != null">
+        park_info_name = #{parkInfoName,jdbcType=VARCHAR},
+      </if>
+      <if test="parkFloorDiscId != null">
+        park_floor_disc_id = #{parkFloorDiscId,jdbcType=VARCHAR},
+      </if>
+      <if test="parkFloorDiscName != null">
+        park_floor_disc_name = #{parkFloorDiscName,jdbcType=VARCHAR},
+      </if>
+      <if test="mnpBuildingId != null">
+        mnp_building_id = #{mnpBuildingId,jdbcType=VARCHAR},
+      </if>
+      <if test="mnpBuildingNo != null">
+        mnp_building_no = #{mnpBuildingNo,jdbcType=VARCHAR},
+      </if>
+      <if test="parkRoomId != null">
+        park_room_id = #{parkRoomId,jdbcType=VARCHAR},
+      </if>
+      <if test="parkRoomFloor != null">
+        park_room_floor = #{parkRoomFloor,jdbcType=VARCHAR},
+      </if>
+      <if test="parkRoomNo != null">
+        park_room_no = #{parkRoomNo,jdbcType=VARCHAR},
+      </if>
+      <if test="buyerName != null">
+        buyer_name = #{buyerName,jdbcType=VARCHAR},
+      </if>
+      <if test="buyerPhone != null">
+        buyer_phone = #{buyerPhone,jdbcType=VARCHAR},
+      </if>
+      <if test="buyerGender != null">
+        buyer_gender = #{buyerGender,jdbcType=VARCHAR},
+      </if>
+      <if test="buyerAddress != null">
+        buyer_address = #{buyerAddress,jdbcType=VARCHAR},
+      </if>
+      <if test="applicantName != null">
+        applicant_name = #{applicantName,jdbcType=VARCHAR},
+      </if>
+      <if test="applicantPhone != null">
+        applicant_phone = #{applicantPhone,jdbcType=VARCHAR},
+      </if>
+      <if test="overviewContent != null">
+        overview_content = #{overviewContent,jdbcType=VARCHAR},
+      </if>
+      <if test="reservationDate != null">
+        reservation_date = #{reservationDate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="reservationTimeStart != null">
+        reservation_time_start = #{reservationTimeStart,jdbcType=VARCHAR},
+      </if>
+      <if test="reservationTimeEnd != null">
+        reservation_time_end = #{reservationTimeEnd,jdbcType=VARCHAR},
+      </if>
+      <if test="reservationOrder != null">
+        reservation_order = #{reservationOrder,jdbcType=INTEGER},
+      </if>
+      <if test="reservationStatus != null">
+        reservation_status = #{reservationStatus,jdbcType=INTEGER},
+      </if>
+      <if test="doorPassStatus != null">
+        door_pass_status = #{doorPassStatus,jdbcType=INTEGER},
+      </if>
+      <if test="createUser != null">
+        create_user = #{createUser,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateUser != null">
+        update_user = #{updateUser,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.idea.buildManage.model.ParkRoomReservation">
+    update park_room_reservation
+    set park_info_id = #{parkInfoId,jdbcType=VARCHAR},
+      park_info_name = #{parkInfoName,jdbcType=VARCHAR},
+      park_floor_disc_id = #{parkFloorDiscId,jdbcType=VARCHAR},
+      park_floor_disc_name = #{parkFloorDiscName,jdbcType=VARCHAR},
+      mnp_building_id = #{mnpBuildingId,jdbcType=VARCHAR},
+      mnp_building_no = #{mnpBuildingNo,jdbcType=VARCHAR},
+      park_room_id = #{parkRoomId,jdbcType=VARCHAR},
+      park_room_floor = #{parkRoomFloor,jdbcType=VARCHAR},
+      park_room_no = #{parkRoomNo,jdbcType=VARCHAR},
+      buyer_name = #{buyerName,jdbcType=VARCHAR},
+      buyer_phone = #{buyerPhone,jdbcType=VARCHAR},
+      buyer_gender = #{buyerGender,jdbcType=VARCHAR},
+      buyer_address = #{buyerAddress,jdbcType=VARCHAR},
+      applicant_name = #{applicantName,jdbcType=VARCHAR},
+      applicant_phone = #{applicantPhone,jdbcType=VARCHAR},
+      overview_content = #{overviewContent,jdbcType=VARCHAR},
+      reservation_date = #{reservationDate,jdbcType=TIMESTAMP},
+      reservation_time_start = #{reservationTimeStart,jdbcType=VARCHAR},
+      reservation_time_end = #{reservationTimeEnd,jdbcType=VARCHAR},
+      reservation_order = #{reservationOrder,jdbcType=INTEGER},
+      reservation_status = #{reservationStatus,jdbcType=INTEGER},
+      door_pass_status = #{doorPassStatus,jdbcType=INTEGER},
+      create_user = #{createUser,jdbcType=VARCHAR},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      update_user = #{updateUser,jdbcType=VARCHAR},
+      update_time = #{updateTime,jdbcType=TIMESTAMP}
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+</mapper>