From 462207c61355ce7adbccf3e77a32a3e1f58b37ec Mon Sep 17 00:00:00 2001
From: purple <purple_lihe@163.com>
Date: Fri, 10 Jul 2020 18:22:39 +0800
Subject: [PATCH] =?UTF-8?q?feature=20(=E8=B0=83=E6=95=B4=E5=89=8D=E7=AB=AF?=
 =?UTF-8?q?=E6=96=87=E6=A1=88)=EF=BC=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ruoyi-ui/src/layout/components/Navbar.vue     | 374 +++++++++---------
 .../src/layout/components/Sidebar/Logo.vue    | 168 ++++----
 ruoyi-ui/src/views/login.vue                  |   4 +-
 .../cases/controller/CasesController.java     |  48 ++-
 .../cases/domain/OriginalNewHouseCase.java    |  19 +
 .../mapper/OriginalNewHouseCaseMapper.java    |  16 +
 .../service/IOriginalNewHouseCaseService.java |  29 ++
 .../impl/OriginalNewHouseCaseServiceImpl.java |  38 ++
 .../IArtificialResidenceRentPriceService.java |   3 +
 .../data/OriginalNewHouseCaseMapper.xml       |  47 +++
 10 files changed, 454 insertions(+), 292 deletions(-)
 create mode 100644 ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalNewHouseCaseService.java
 create mode 100644 ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalNewHouseCaseServiceImpl.java

diff --git a/ruoyi-ui/src/layout/components/Navbar.vue b/ruoyi-ui/src/layout/components/Navbar.vue
index 22427a81f..d88b3deb5 100644
--- a/ruoyi-ui/src/layout/components/Navbar.vue
+++ b/ruoyi-ui/src/layout/components/Navbar.vue
@@ -1,187 +1,187 @@
-<template>
-  <div class="navbar">
-    <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
-
-    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
-
-    <div class="right-menu">
-      <template v-if="device!=='mobile'">
-        <search id="header-search" class="right-menu-item" />
-        
-        <el-tooltip content="源码地址" effect="dark" placement="bottom">
-          <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
-        </el-tooltip>
-
-        <el-tooltip content="文档地址" effect="dark" placement="bottom">
-          <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
-        </el-tooltip>
-
-        <screenfull id="screenfull" class="right-menu-item hover-effect" />
-
-        <el-tooltip content="布局大小" effect="dark" placement="bottom">
-          <size-select id="size-select" class="right-menu-item hover-effect" />
-        </el-tooltip>
-
-      </template>
-
-      <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
-        <div class="avatar-wrapper">
-          <img :src="avatar" class="user-avatar">
-          <i class="el-icon-caret-bottom" />
-        </div>
-        <el-dropdown-menu slot="dropdown">
-          <router-link to="/user/profile">
-            <el-dropdown-item>个人中心</el-dropdown-item>
-          </router-link>
-          <el-dropdown-item @click.native="setting = true">
-            <span>布局设置</span>
-          </el-dropdown-item>
-          <el-dropdown-item divided @click.native="logout">
-            <span>退出登录</span>
-          </el-dropdown-item>
-        </el-dropdown-menu>
-      </el-dropdown>
-    </div>
-  </div>
-</template>
-
-<script>
-import { mapGetters } from 'vuex'
-import Breadcrumb from '@/components/Breadcrumb'
-import Hamburger from '@/components/Hamburger'
-import Screenfull from '@/components/Screenfull'
-import SizeSelect from '@/components/SizeSelect'
-import Search from '@/components/HeaderSearch'
-import RuoYiGit from '@/components/RuoYi/Git'
-import RuoYiDoc from '@/components/RuoYi/Doc'
-
-export default {
-  components: {
-    Breadcrumb,
-    Hamburger,
-    Screenfull,
-    SizeSelect,
-    Search,
-    RuoYiGit,
-    RuoYiDoc
-  },
-  computed: {
-    ...mapGetters([
-      'sidebar',
-      'avatar',
-      'device'
-    ]),
-    setting: {
-      get() {
-        return this.$store.state.settings.showSettings
-      },
-      set(val) {
-        this.$store.dispatch('settings/changeSetting', {
-          key: 'showSettings',
-          value: val
-        })
-      }
-    }
-  },
-  methods: {
-    toggleSideBar() {
-      this.$store.dispatch('app/toggleSideBar')
-    },
-    async logout() {
-      this.$confirm('确定注销并退出系统吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        this.$store.dispatch('LogOut').then(() => {
-          location.reload()
-        })
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.navbar {
-  height: 50px;
-  overflow: hidden;
-  position: relative;
-  background: #fff;
-  box-shadow: 0 1px 4px rgba(0,21,41,.08);
-
-  .hamburger-container {
-    line-height: 46px;
-    height: 100%;
-    float: left;
-    cursor: pointer;
-    transition: background .3s;
-    -webkit-tap-highlight-color:transparent;
-
-    &:hover {
-      background: rgba(0, 0, 0, .025)
-    }
-  }
-
-  .breadcrumb-container {
-    float: left;
-  }
-
-  .errLog-container {
-    display: inline-block;
-    vertical-align: top;
-  }
-
-  .right-menu {
-    float: right;
-    height: 100%;
-    line-height: 50px;
-
-    &:focus {
-      outline: none;
-    }
-
-    .right-menu-item {
-      display: inline-block;
-      padding: 0 8px;
-      height: 100%;
-      font-size: 18px;
-      color: #5a5e66;
-      vertical-align: text-bottom;
-
-      &.hover-effect {
-        cursor: pointer;
-        transition: background .3s;
-
-        &:hover {
-          background: rgba(0, 0, 0, .025)
-        }
-      }
-    }
-
-    .avatar-container {
-      margin-right: 30px;
-
-      .avatar-wrapper {
-        margin-top: 5px;
-        position: relative;
-
-        .user-avatar {
-          cursor: pointer;
-          width: 40px;
-          height: 40px;
-          border-radius: 10px;
-        }
-
-        .el-icon-caret-bottom {
-          cursor: pointer;
-          position: absolute;
-          right: -20px;
-          top: 25px;
-          font-size: 12px;
-        }
-      }
-    }
-  }
-}
-</style>
+<template>
+  <div class="navbar">
+    <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
+
+    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
+
+    <div class="right-menu">
+      <template v-if="device!=='mobile'">
+        <search id="header-search" class="right-menu-item" />
+
+        <!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">
+          <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
+        </el-tooltip>
+
+        <el-tooltip content="文档地址" effect="dark" placement="bottom">
+          <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
+        </el-tooltip> -->
+
+        <screenfull id="screenfull" class="right-menu-item hover-effect" />
+
+        <el-tooltip content="布局大小" effect="dark" placement="bottom">
+          <size-select id="size-select" class="right-menu-item hover-effect" />
+        </el-tooltip>
+
+      </template>
+
+      <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
+        <div class="avatar-wrapper">
+          <img :src="avatar" class="user-avatar">
+          <i class="el-icon-caret-bottom" />
+        </div>
+        <el-dropdown-menu slot="dropdown">
+          <router-link to="/user/profile">
+            <el-dropdown-item>个人中心</el-dropdown-item>
+          </router-link>
+          <el-dropdown-item @click.native="setting = true">
+            <span>布局设置</span>
+          </el-dropdown-item>
+          <el-dropdown-item divided @click.native="logout">
+            <span>退出登录</span>
+          </el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown>
+    </div>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import Breadcrumb from '@/components/Breadcrumb'
+import Hamburger from '@/components/Hamburger'
+import Screenfull from '@/components/Screenfull'
+import SizeSelect from '@/components/SizeSelect'
+import Search from '@/components/HeaderSearch'
+// import RuoYiGit from '@/components/RuoYi/Git'
+// import RuoYiDoc from '@/components/RuoYi/Doc'
+
+export default {
+  components: {
+    Breadcrumb,
+    Hamburger,
+    Screenfull,
+    SizeSelect,
+    Search,
+    // RuoYiGit,
+    // RuoYiDoc
+  },
+  computed: {
+    ...mapGetters([
+      'sidebar',
+      'avatar',
+      'device'
+    ]),
+    setting: {
+      get() {
+        return this.$store.state.settings.showSettings
+      },
+      set(val) {
+        this.$store.dispatch('settings/changeSetting', {
+          key: 'showSettings',
+          value: val
+        })
+      }
+    }
+  },
+  methods: {
+    toggleSideBar() {
+      this.$store.dispatch('app/toggleSideBar')
+    },
+    async logout() {
+      this.$confirm('确定注销并退出系统吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.$store.dispatch('LogOut').then(() => {
+          location.reload()
+        })
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.navbar {
+  height: 50px;
+  overflow: hidden;
+  position: relative;
+  background: #fff;
+  box-shadow: 0 1px 4px rgba(0,21,41,.08);
+
+  .hamburger-container {
+    line-height: 46px;
+    height: 100%;
+    float: left;
+    cursor: pointer;
+    transition: background .3s;
+    -webkit-tap-highlight-color:transparent;
+
+    &:hover {
+      background: rgba(0, 0, 0, .025)
+    }
+  }
+
+  .breadcrumb-container {
+    float: left;
+  }
+
+  .errLog-container {
+    display: inline-block;
+    vertical-align: top;
+  }
+
+  .right-menu {
+    float: right;
+    height: 100%;
+    line-height: 50px;
+
+    &:focus {
+      outline: none;
+    }
+
+    .right-menu-item {
+      display: inline-block;
+      padding: 0 8px;
+      height: 100%;
+      font-size: 18px;
+      color: #5a5e66;
+      vertical-align: text-bottom;
+
+      &.hover-effect {
+        cursor: pointer;
+        transition: background .3s;
+
+        &:hover {
+          background: rgba(0, 0, 0, .025)
+        }
+      }
+    }
+
+    .avatar-container {
+      margin-right: 30px;
+
+      .avatar-wrapper {
+        margin-top: 5px;
+        position: relative;
+
+        .user-avatar {
+          cursor: pointer;
+          width: 40px;
+          height: 40px;
+          border-radius: 10px;
+        }
+
+        .el-icon-caret-bottom {
+          cursor: pointer;
+          position: absolute;
+          right: -20px;
+          top: 25px;
+          font-size: 12px;
+        }
+      }
+    }
+  }
+}
+</style>
diff --git a/ruoyi-ui/src/layout/components/Sidebar/Logo.vue b/ruoyi-ui/src/layout/components/Sidebar/Logo.vue
index 021de8eb4..5e87b6c2d 100644
--- a/ruoyi-ui/src/layout/components/Sidebar/Logo.vue
+++ b/ruoyi-ui/src/layout/components/Sidebar/Logo.vue
@@ -1,84 +1,84 @@
-<template>
-  <div class="sidebar-logo-container" :class="{'collapse':collapse}">
-    <transition name="sidebarLogoFade">
-      <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
-        <img v-if="logo" :src="logo" class="sidebar-logo">
-        <h1 v-else class="sidebar-title">{{ title }} </h1>
-      </router-link>
-      <router-link v-else key="expand" class="sidebar-logo-link" to="/">
-        <img v-if="logo" :src="logo" class="sidebar-logo">
-        <h1 class="sidebar-title">{{ title }} </h1>
-      </router-link>
-    </transition>
-  </div>
-</template>
-
-<script>
-import logoImg from '@/assets/logo/logo.png'
-
-export default {
-  name: 'SidebarLogo',
-  props: {
-    collapse: {
-      type: Boolean,
-      required: true
-    }
-  },
-  data() {
-    return {
-      title: '若依管理系统',
-      logo: logoImg
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.sidebarLogoFade-enter-active {
-  transition: opacity 1.5s;
-}
-
-.sidebarLogoFade-enter,
-.sidebarLogoFade-leave-to {
-  opacity: 0;
-}
-
-.sidebar-logo-container {
-  position: relative;
-  width: 100%;
-  height: 50px;
-  line-height: 50px;
-  background: #2b2f3a;
-  text-align: center;
-  overflow: hidden;
-
-  & .sidebar-logo-link {
-    height: 100%;
-    width: 100%;
-
-    & .sidebar-logo {
-      width: 32px;
-      height: 32px;
-      vertical-align: middle;
-      margin-right: 12px;
-    }
-
-    & .sidebar-title {
-      display: inline-block;
-      margin: 0;
-      color: #fff;
-      font-weight: 600;
-      line-height: 50px;
-      font-size: 14px;
-      font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
-      vertical-align: middle;
-    }
-  }
-
-  &.collapse {
-    .sidebar-logo {
-      margin-right: 0px;
-    }
-  }
-}
-</style>
+<template>
+  <div class="sidebar-logo-container" :class="{'collapse':collapse}">
+    <transition name="sidebarLogoFade">
+      <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
+        <img v-if="logo" :src="logo" class="sidebar-logo">
+        <h1 v-else class="sidebar-title">{{ title }} </h1>
+      </router-link>
+      <router-link v-else key="expand" class="sidebar-logo-link" to="/">
+        <img v-if="logo" :src="logo" class="sidebar-logo">
+        <h1 class="sidebar-title">{{ title }} </h1>
+      </router-link>
+    </transition>
+  </div>
+</template>
+
+<script>
+import logoImg from '@/assets/logo/logo.png'
+
+export default {
+  name: 'SidebarLogo',
+  props: {
+    collapse: {
+      type: Boolean,
+      required: true
+    }
+  },
+  data() {
+    return {
+      title: '联城作价系统',
+      logo: logoImg
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.sidebarLogoFade-enter-active {
+  transition: opacity 1.5s;
+}
+
+.sidebarLogoFade-enter,
+.sidebarLogoFade-leave-to {
+  opacity: 0;
+}
+
+.sidebar-logo-container {
+  position: relative;
+  width: 100%;
+  height: 50px;
+  line-height: 50px;
+  background: #2b2f3a;
+  text-align: center;
+  overflow: hidden;
+
+  & .sidebar-logo-link {
+    height: 100%;
+    width: 100%;
+
+    & .sidebar-logo {
+      width: 32px;
+      height: 32px;
+      vertical-align: middle;
+      margin-right: 12px;
+    }
+
+    & .sidebar-title {
+      display: inline-block;
+      margin: 0;
+      color: #fff;
+      font-weight: 600;
+      line-height: 50px;
+      font-size: 14px;
+      font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
+      vertical-align: middle;
+    }
+  }
+
+  &.collapse {
+    .sidebar-logo {
+      margin-right: 0px;
+    }
+  }
+}
+</style>
diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue
index ac32e6350..9daa94ba6 100644
--- a/ruoyi-ui/src/views/login.vue
+++ b/ruoyi-ui/src/views/login.vue
@@ -65,8 +65,8 @@ export default {
       codeUrl: "",
       cookiePassword: "",
       loginForm: {
-        username: "admin",
-        password: "admin123",
+        username: "",
+        password: "",
         rememberMe: false,
         code: "",
         uuid: ""
diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/controller/CasesController.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/controller/CasesController.java
index ee03b6b09..09885ddc8 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/controller/CasesController.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/controller/CasesController.java
@@ -1,31 +1,41 @@
 package com.ruoyi.project.data.cases.controller;
 
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.framework.web.page.TableSupport;
+import com.ruoyi.project.data.cases.domain.OriginalNewHouseCase;
+import com.ruoyi.project.data.cases.service.IOriginalNewHouseCaseService;
+import com.ruoyi.project.data.price.domain.UltimateOfficeBasePrice;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
+/**
+ * 案例Controller
+ *
+ * @author lihe
+ */
 @RestController
 @RequestMapping("/data/cases")
-public class CasesController {
+public class CasesController extends BaseController {
+
+    @Autowired
+    private IOriginalNewHouseCaseService originalNewHouseCaseService;
 
     /**
-     * 原始办公挂牌案例
+     * 一手房成交案例
      */
-    public void originalOfficeOpeningCase() {
-
+    @PreAuthorize("@ss.hasPermi('cases:newHouse:list')")
+    @GetMapping("/newHouse/list")
+    public TableDataInfo list(OriginalNewHouseCase originalNewHouseCase) {
+        int total = originalNewHouseCaseService.selectCount(originalNewHouseCase);
+        List<OriginalNewHouseCase> list =
+                originalNewHouseCaseService.selectList(originalNewHouseCase);
+        return getDataTable(list, total);
     }
-
-    /**
-     * 原始住宅销售挂牌案例
-     */
-    public void originalResidenceSalesOpeningCase(){
-
-    }
-
-    /**
-     * 原始住宅销售挂牌案例
-     */
-    public void originalResidenceSalesClosingCase(){
-
-    }
-
 }
diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/domain/OriginalNewHouseCase.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/domain/OriginalNewHouseCase.java
index da364bf90..3c396ea5d 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/domain/OriginalNewHouseCase.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/domain/OriginalNewHouseCase.java
@@ -14,6 +14,9 @@ import java.util.Date;
  */
 public class OriginalNewHouseCase {
     private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+    private Integer pageIndex;
+    private Integer pageSize;
+
     private Integer yearMonth;
     /**
      * 案例id
@@ -248,4 +251,20 @@ public class OriginalNewHouseCase {
     public void setCaseLabel(String caseLabel) {
         this.caseLabel = caseLabel;
     }
+
+    public Integer getPageIndex() {
+        return pageIndex;
+    }
+
+    public void setPageIndex(Integer pageIndex) {
+        this.pageIndex = pageIndex;
+    }
+
+    public Integer getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
 }
diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalNewHouseCaseMapper.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalNewHouseCaseMapper.java
index 778baa2b8..3f0626574 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalNewHouseCaseMapper.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalNewHouseCaseMapper.java
@@ -47,5 +47,21 @@ public interface OriginalNewHouseCaseMapper {
      */
     int insertSecondTable(OriginalNewHouseCase originalNewHouseCase);
 
+    /**
+     * 分页总数
+     *
+     * @param originalNewHouseCase
+     * @return
+     */
+    int pageCount(OriginalNewHouseCase originalNewHouseCase);
+
+    /**
+     * 分页列表
+     *
+     * @param originalNewHouseCase
+     * @return
+     */
+    List<OriginalNewHouseCase> pageList(OriginalNewHouseCase originalNewHouseCase);
+
 
 }
diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalNewHouseCaseService.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalNewHouseCaseService.java
new file mode 100644
index 000000000..46f608f67
--- /dev/null
+++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalNewHouseCaseService.java
@@ -0,0 +1,29 @@
+package com.ruoyi.project.data.cases.service;
+
+import com.ruoyi.project.data.cases.domain.OriginalNewHouseCase;
+import com.ruoyi.project.data.price.domain.ArtificialResidenceRentBasePrice;
+
+import java.util.List;
+
+/**
+ * 一手房成交案例Service
+ *
+ * @author lihe
+ */
+public interface IOriginalNewHouseCaseService {
+
+    /**
+     * @param originalNewHouseCase
+     * @return
+     */
+    List<OriginalNewHouseCase> selectList(OriginalNewHouseCase originalNewHouseCase);
+
+    /**
+     * 分页总数
+     *
+     * @param originalNewHouseCase
+     * @return
+     */
+    int selectCount(OriginalNewHouseCase originalNewHouseCase);
+
+}
diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalNewHouseCaseServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalNewHouseCaseServiceImpl.java
new file mode 100644
index 000000000..aa7702426
--- /dev/null
+++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalNewHouseCaseServiceImpl.java
@@ -0,0 +1,38 @@
+package com.ruoyi.project.data.cases.service.impl;
+
+import com.ruoyi.common.constant.LabelConstants;
+import com.ruoyi.project.data.cases.domain.OriginalNewHouseCase;
+import com.ruoyi.project.data.cases.mapper.OriginalNewHouseCaseMapper;
+import com.ruoyi.project.data.cases.mapper.sync.DownloadOriginalNewHouseCaseMapper;
+import com.ruoyi.project.data.cases.service.IOriginalNewHouseCaseService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 一手房成交案例Service
+ *
+ * @author lihe
+ */
+@Service
+public class OriginalNewHouseCaseServiceImpl implements IOriginalNewHouseCaseService {
+
+    @Autowired
+    private OriginalNewHouseCaseMapper originalNewHouseCaseMapper;
+
+    @Override
+    public List<OriginalNewHouseCase> selectList(OriginalNewHouseCase originalNewHouseCase) {
+        return originalNewHouseCaseMapper.pageList(originalNewHouseCase);
+    }
+
+    @Override
+    public int selectCount(OriginalNewHouseCase originalNewHouseCase) {
+        return originalNewHouseCaseMapper.pageCount(originalNewHouseCase);
+    }
+}
diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IArtificialResidenceRentPriceService.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IArtificialResidenceRentPriceService.java
index 8786032d3..4c040b398 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IArtificialResidenceRentPriceService.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IArtificialResidenceRentPriceService.java
@@ -32,6 +32,8 @@ public interface IArtificialResidenceRentPriceService {
     List<ArtificialResidenceRentBasePrice> selectList(ArtificialResidenceRentBasePrice officeBasePriceUltimate);
 
     /**
+     * 分页总数
+     *
      * @param officeBasePriceUltimate
      * @return
      */
@@ -51,6 +53,7 @@ public interface IArtificialResidenceRentPriceService {
 
     /**
      * 更新
+     *
      * @param officeBasePriceUltimate
      * @return
      */
diff --git a/ruoyi/src/main/resources/mybatis/data/OriginalNewHouseCaseMapper.xml b/ruoyi/src/main/resources/mybatis/data/OriginalNewHouseCaseMapper.xml
index a79be726a..11e74b0f1 100644
--- a/ruoyi/src/main/resources/mybatis/data/OriginalNewHouseCaseMapper.xml
+++ b/ruoyi/src/main/resources/mybatis/data/OriginalNewHouseCaseMapper.xml
@@ -163,4 +163,51 @@
         )
     </insert>
 
+    <select id="pageCount" parameterType="com.ruoyi.project.data.cases.domain.OriginalNewHouseCase">
+        SELECT case_county as caseCounty
+              ,case_block as caseBlock
+              ,case_loop as caseLoop
+              ,case_community_name as caseCommunityName
+              ,case_address as caseAddress
+              ,case_area as caseArea
+              ,case_unit_price as caseUnitPrice
+              ,case_total_price as caseTotalPrice
+              ,case_house_type as caseHouseType
+              ,case_signing_date as caseSigningDate
+              ,case_floor as caseFloor
+              ,case_house_property as caseHouseProperty
+              ,case_apartment_layout as caseApartmentLayout
+              ,compute_unit_price as computeUnitPrice
+              ,compute_total_price as computeTotalPrice
+              ,reference_unit_price as referenceUnitPrice
+              ,reference_total_price as referenceTotalPrice
+              ,case_label as caseLabel
+              ,create_time
+              , ${yearMonth} as yearMonth
+          FROM dbo.original_new_house_case_${yearMonth}
+    </select>
+    <select id="pageList" resultType="com.ruoyi.project.data.cases.domain.OriginalNewHouseCase">
+        SELECT case_county as caseCounty
+              ,case_block as caseBlock
+              ,case_loop as caseLoop
+              ,case_community_name as caseCommunityName
+              ,case_address as caseAddress
+              ,case_area as caseArea
+              ,case_unit_price as caseUnitPrice
+              ,case_total_price as caseTotalPrice
+              ,case_house_type as caseHouseType
+              ,case_signing_date as caseSigningDate
+              ,case_floor as caseFloor
+              ,case_house_property as caseHouseProperty
+              ,case_apartment_layout as caseApartmentLayout
+              ,compute_unit_price as computeUnitPrice
+              ,compute_total_price as computeTotalPrice
+              ,reference_unit_price as referenceUnitPrice
+              ,reference_total_price as referenceTotalPrice
+              ,case_label as caseLabel
+              ,create_time
+              , ${yearMonth} as yearMonth
+          FROM dbo.original_new_house_case_${yearMonth}
+          order by case_id ASC OFFSET #{pageIndex} rows fetch next #{pageSize} rows only
+    </select>
 </mapper>
\ No newline at end of file