diff --git a/ruoyi-ui/src/api/data/artificialResidenceSalePrice.js b/ruoyi-ui/src/api/data/artificialResidenceSalePrice.js index 23df93289..d28fe2914 100644 --- a/ruoyi-ui/src/api/data/artificialResidenceSalePrice.js +++ b/ruoyi-ui/src/api/data/artificialResidenceSalePrice.js @@ -3,33 +3,33 @@ import request from '@/utils/request' // 查询住宅销售基价修正列表 export function list(query) { return request({ - url: '/data/price/residence/sale/artificial/list', + url: '/data/sale-price/residence/ultimate/list', method: 'get', params: query }) } // 查询住宅销售基价修正详细 -export function get(id) { - return request({ - url: '/data/price/residence/sale/artificial/' + id, - method: 'get' - }) -} +// export function get(id) { +// return request({ +// url: '/data/sale-price/residence/ultimate/' + id, +// method: 'get' +// }) +// } -// 修改住宅销售基价修正 -export function update(data) { - return request({ - url: '/data/price/residence/sale/artificial', - method: 'put', - data: data - }) -} +// // 修改住宅销售基价修正 +// export function update(data) { +// return request({ +// url: '/data/sale-price/residence/ultimate', +// method: 'put', +// data: data +// }) +// } // 导出住宅销售基价修正 export function export2File(query) { return request({ - url: '/data/price/residence/sale/artificial/export', + url: '/data/sale-price/residence/ultimate/export', method: 'get', params: query }) @@ -37,7 +37,7 @@ export function export2File(query) { export function getYearMonthList() { return request({ - url: '/data/price/residence/sale/artificial/yearmonth', + url: '/data/sale-price/residence/ultimate/yearmonth', method: 'get' }) } diff --git a/ruoyi-ui/src/api/data/computeResidenceSalePrice.js b/ruoyi-ui/src/api/data/computeResidenceSalePrice.js index 1cd74f92b..3c5264175 100644 --- a/ruoyi-ui/src/api/data/computeResidenceSalePrice.js +++ b/ruoyi-ui/src/api/data/computeResidenceSalePrice.js @@ -3,7 +3,7 @@ import request from '@/utils/request' // 查询住宅销售基价列表 export function list(query) { return request({ - url: '/data/price/residence/sale/compute/list', + url: '/data/sale-price/residence/compute/list', method: 'get', params: query }) @@ -12,7 +12,7 @@ export function list(query) { // 查询住宅销售基价详细 export function get(id) { return request({ - url: '/data/price/residence/sale/compute/' + id, + url: '/data/sale-price/residence/compute/' + id, method: 'get' }) } @@ -20,7 +20,7 @@ export function get(id) { // 修改住宅销售基价 export function update(data) { return request({ - url: '/data/price/residence/sale/compute', + url: '/data/sale-price/residence/compute', method: 'put', data: data }) @@ -29,7 +29,7 @@ export function update(data) { // 导出住宅销售基价 export function export2File(query) { return request({ - url: '/data/price/residence/sale/compute/export', + url: '/data/sale-price/residence/compute/export', method: 'get', params: query }) @@ -37,7 +37,7 @@ export function export2File(query) { export function getYearMonthList() { return request({ - url: '/data/price/residence/sale/compute/yearmonth', + url: '/data/sale-price/residence/compute/yearmonth', method: 'get' }) } diff --git a/ruoyi-ui/src/api/data/ultimateResidenceSalePrice.js b/ruoyi-ui/src/api/data/ultimateResidenceSalePrice.js new file mode 100644 index 000000000..7609a2994 --- /dev/null +++ b/ruoyi-ui/src/api/data/ultimateResidenceSalePrice.js @@ -0,0 +1,43 @@ +import request from '@/utils/request' + +// 查询住宅销售基价修正列表 +export function list(query) { + return request({ + url: '/data/sale-price/residence/ultimate/list', + method: 'get', + params: query + }) +} + +// 查询住宅销售基价修正详细 +export function get(id) { + return request({ + url: '/data/sale-price/residence/ultimate/' + id, + method: 'get' + }) +} + +// 修改住宅销售基价修正 +export function update(data) { + return request({ + url: '/data/sale-price/residence/ultimate', + method: 'put', + data: data + }) +} + +// 导出住宅销售基价修正 +export function export2File(query) { + return request({ + url: '/data/sale-price/residence/ultimate/export', + method: 'get', + params: query + }) +} + +export function getYearMonthList() { + return request({ + url: '/data/sale-price/residence/ultimate/yearmonth', + method: 'get' + }) +} diff --git a/ruoyi-ui/src/views/data/price/ArtificialResidenceSalePrice.vue b/ruoyi-ui/src/views/data/price/ArtificialResidenceSalePrice.vue index 22125b938..97c1032aa 100644 --- a/ruoyi-ui/src/views/data/price/ArtificialResidenceSalePrice.vue +++ b/ruoyi-ui/src/views/data/price/ArtificialResidenceSalePrice.vue @@ -2,7 +2,11 @@ <div class="app-container"> <el-form :model="queryParams" :rules="rules" ref="queryForm" :inline="true" label-width="100px"> <el-form-item label="年月" prop="yearMonth"> - <el-select v-model="queryParams.yearMonth" placeholder="请选择年月"> + <el-select + v-model="queryParams.yearMonth" + placeholder="请选择年月" + @change="yearMonthChange(queryParams.yearMonth)" + > <el-option v-for="item in yearMonthList" :value="item.value" @@ -36,7 +40,7 @@ </el-form> <el-row :gutter="10" class="mb8"> - <el-col :span="1.5"> + <!-- <el-col :span="1.5"> <el-button type="success" icon="el-icon-edit" @@ -45,7 +49,7 @@ @click="handleUpdate" v-hasPermi="['system:user:edit']" >修改</el-button> - </el-col> + </el-col>--> <el-col :span="1.5"> <el-button type="warning" @@ -62,15 +66,15 @@ size="mini" @click="handleImport" v-hasPermi="['system:user:import']" - >导入</el-button> + >文件导入</el-button> </el-col> </el-row> <el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" align="center" /> - <el-table-column label="年月" align="center" prop="yearMonth" /> - <el-table-column label="小区ID" align="center" prop="communityId" /> - <el-table-column label="小区名称" align="center" prop="communityName" /> + <!-- <el-table-column type="selection" width="55" align="center" /> --> + <!-- <el-table-column label="年月" align="center" prop="yearMonth" /> --> + <el-table-column label="小区ID" align="center" prop="communityId" fixed /> + <el-table-column label="小区名称" align="center" width="200" prop="communityName" fixed /> <el-table-column label="小区地址" align="center" prop="communityAddress" /> <el-table-column label="区域" align="center" prop="countyName" /> @@ -89,7 +93,12 @@ prop="isPstCalc" :formatter="yesOrNotFormatter" /> - <el-table-column label="运行状态" align="center" prop="status" /> + <el-table-column + label="运行状态" + align="center" + prop="status" + :formatter="runningStateFormatter" + /> <el-table-column label="特殊小区标签" align="center" prop="label" /> <el-table-column label="物业类型" align="center" prop="propertyType" /> <el-table-column label="小区类型" align="center" prop="projectType" /> @@ -139,7 +148,7 @@ <el-table-column label="绑定板块+小区类型的涨跌幅" align="center" prop="bindBlockProjectTypePst" /> <el-table-column label="绑定区县+小区类型" align="center" prop="bindCountyProjectType" /> <el-table-column label="绑定区县+小区类型的涨跌幅" align="center" prop="bindCountyProjectTypePst" /> - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> + <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="mini" @@ -156,7 +165,7 @@ v-hasPermi="['system:user:remove']" >删除</el-button> </template> - </el-table-column> + </el-table-column>--> </el-table> <pagination @@ -167,7 +176,7 @@ @pagination="getList" /> - <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> + <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> <el-upload ref="upload" :limit="1" @@ -265,7 +274,7 @@ export default { // 上传的地址 url: process.env.VUE_APP_BASE_API + - "/data/price/residence/sale/artificial/importData/" + "/data/sale-price/residence/artificial/importData/" }, // 表单参数 form: {}, @@ -285,6 +294,10 @@ export default { }); }, methods: { + yearMonthChange: function(yearMonth) { + // this.upload.url += "/" + yearMonth; + // console.log(this.upload.url); + }, yesOrNotFormatter: function(row, column, cellValue, index) { if (cellValue) return "是"; return "否"; @@ -293,6 +306,15 @@ export default { if (cellValue) return "正常"; return "失效"; }, + runningStateFormatter: function(row, column, cellValue, index) { + if (1 === cellValue) return "正常状态"; + else if (2 === cellValue) return "建设中"; + else if (3 === cellValue) return "建设中"; + else if (4 === cellValue) return "已撤销"; + else if (5 === cellValue) return "合并"; + else if (8 === cellValue) return "分拆"; + return "未知状态"; + }, dateFormatter: function(row, column, cellValue, index) { if (cellValue) { return cellValue.substring(0, 10); diff --git a/ruoyi-ui/src/views/data/price/UltimateResidenceSalePrice.vue b/ruoyi-ui/src/views/data/price/UltimateResidenceSalePrice.vue new file mode 100644 index 000000000..09facbb68 --- /dev/null +++ b/ruoyi-ui/src/views/data/price/UltimateResidenceSalePrice.vue @@ -0,0 +1,244 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryForm" :rules="rules" :inline="true" label-width="100px"> + <el-form-item label="年月" prop="yearMonth"> + <el-select v-model="queryParams.yearMonth" placeholder="请选择年月"> + <el-option + v-for="item in yearMonthList" + :value="item.value" + :label="item.label" + :key="item.value" + ></el-option> + </el-select> + </el-form-item> + <el-form-item label="小区ID" prop="communityId" clearable> + <el-input + v-model="queryParams.communityId" + placeholder="请输入案例小区名称" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <!-- <el-form-item label="名称或地址" prop="nameOrAddress" clearable> + <el-input + v-model="queryParams.nameOrAddress" + placeholder="请输入小区名称或地址" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> --> + <el-form-item label="状态"> + <el-select v-model="queryParams.status" clearable> + <el-option label="正常" value="1"></el-option> + <el-option label="失效" value="0"></el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="warning" + icon="el-icon-download" + size="mini" + @click="handleExport" + v-hasPermi="['system:user:export']" + >导出</el-button> + </el-col> + </el-row> + + <el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange"> + <el-table-column label="年月" align="center" prop="yearMonth" /> + <el-table-column label="小区ID" align="center" prop="communityId" /> + <el-table-column label="标准基价" align="center" prop="basePrice" /> + <el-table-column label="主力面积基价" align="center" prop="mainPrice" /> + <el-table-column label="主力面积系数" align="center" prop="areaCoefficient" /> + <el-table-column label="竣工年份系数" align="center" prop="yearCoefficient" /> + <el-table-column label="涨跌幅" align="center" prop="voppa" /> + <el-table-column label="涨跌幅类型" align="center" prop="voppat" /> + <el-table-column label="价值时点" align="center" prop="priceDate" :formatter="dateFormatter" /> + <el-table-column label="价格说明" align="center" prop="comment" /> + <el-table-column label="更新日期" align="center" prop="updateDate" :formatter="dateFormatter" /> + <el-table-column label="状态" align="center" prop="status" :formatter="statusFormatter" /> + <el-table-column label="变化字段" align="center" prop="adjustPriceComment" /> + </el-table> + + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + </div> +</template> + +<script> +import { getToken } from "@/utils/auth"; +import { + list, + export2File, + getYearMonthList +} from "@/api/data/ultimateResidenceSalePrice"; + +export default { + name: "ultimateResidenceSalePrice", + data() { + // 年月 + var yearMonthValidator = (rule, value, callback) => { + if (!value) { + callback(new Error("请输入年月")); + } else if (value === "" || isNaN(parseInt(value))) { + callback(new Error("请输入年月")); + } else { + callback(); + } + }; + + return { + // 遮罩层 + loading: true, + // 选中数组 + ids: [], + // 非单个禁用 + single: true, + // 非多个禁用 + multiple: true, + // 总条数 + total: 0, + // 办公基价表格数据 + dataList: [], + // 弹出层标题 + title: "", + // 是否显示弹出层 + open: false, + // 查询参数 + queryParams: { + yearMonth: undefined, + communityId: undefined, + nameOrAddress: undefined, + status: undefined, + pageIndex: 1, + pageSize: 10 + }, + yearMonthList: [], + statusOptions: [ + { value: 1, text: "正常" }, + { value: 1, text: "失效" } + ], + upload: { + // 是否显示弹出层(用户导入) + open: false, + // 弹出层标题(用户导入) + title: "", + // 是否禁用上传 + isUploading: false, + // 设置上传的请求头部 + headers: { Authorization: "Bearer " + getToken() }, + // 上传的地址 + url: + process.env.VUE_APP_BASE_API + + "/data/rentprice/residence/ultimate/importData" + }, + // 表单参数 + form: {}, + // 表单校验 + rules: { + yearMonth: [ + { validator: yearMonthValidator, trigger: "blur" }, + { validator: yearMonthValidator, trigger: "change" } + ] + } + }; + }, + created() { + this.loading = false; + getYearMonthList().then(response => { + this.yearMonthList = response.data; + }); + }, + methods: { + yesOrNotFormatter: function(row, column, cellValue, index) { + if (cellValue) return "是"; + return "否"; + }, + dateFormatter:function(row, column, cellValue, index){ + if(cellValue) return cellValue.substring(0,10); + return ''; + }, + statusFormatter: function(row, column, cellValue, index) { + if (cellValue) return "正常"; + return "失效"; + }, + dateFormatter: function(row, column, cellValue, index) { + if (cellValue) { + return cellValue.substring(0, 10); + } + return ""; + }, + /** 查询办公基价列表 */ + getList() { + this.$refs["queryForm"].validate(valid => { + if (valid) { + this.loading = true; + list(this.queryParams).then(response => { + this.dataList = response.rows; + this.total = response.total; + this.loading = false; + }); + } + }); + }, + // 取消按钮 + cancel() { + this.open = false; + this.reset(); + }, + // 表单重置 + reset() { + this.form = { + id: undefined + }; + this.resetForm("form"); + }, + /** 搜索按钮操作 */ + handleQuery() { + this.queryParams.pageIndex = 1; + this.getList(); + }, + /** 重置按钮操作 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 多选框选中数据 + handleSelectionChange(selection) { + this.ids = selection.map(item => item.id); + this.single = selection.length != 1; + this.multiple = !selection.length; + }, + /** 导出按钮操作 */ + handleExport() { + const queryParams = this.queryParams; + this.$confirm("是否确认导出所有住宅销售基价数据项?", "警告", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(function() { + return export2File(queryParams); + }) + .then(response => { + this.download(response.msg); + }) + .catch(function() {}); + } + } +}; +</script> diff --git a/ruoyi/sql/sale_price.sql b/ruoyi/sql/sale_price.sql new file mode 100644 index 000000000..ffffeb682 --- /dev/null +++ b/ruoyi/sql/sale_price.sql @@ -0,0 +1,61 @@ +create type [dbo].[DWA_PROJECTBASEPRICE_MANU_Table] as table( + [communityId] [nvarchar](20) null, + [communityName] [nvarchar](200) null, + [communityAddress] [nvarchar](1024) null, + [countyName] [nvarchar](200) null, + [blockName] [nvarchar](200) null, + [loopName] [nvarchar](200) null, + [hasIndex] [int] null, + [isPstCalc] [int] null, + [status] [int] null, + [label] [nvarchar](200) null, + [propertyType] [nvarchar](200) null, + [projectType] [nvarchar](200) null, + [projectTypeDtl] [nvarchar](200) null, + [propertyLevel] [nvarchar](200) null, + [year] [int] null, + [area] [decimal](18, 2) null, + [areaCoefficient] [decimal](7, 4) null, + [yearCoefficient] [decimal](7, 4) null, + [comment] [nvarchar](1024) null, + [basePriceDraft] [decimal](18, 2) null, + [mainPriceDraft] [decimal](18, 2) null, + [basePrice_1] [decimal](18, 2) null, + [voppat] [nvarchar](200) null, + [voppa] [decimal](18, 2) null, + [priceUnitAdj] [decimal](18, 2) null, + [visitedNum] [int] null, + [firstVisitTime] [date] null, + [visitedNum15] [int] null, + [visitedNum30] [int] null, + [priceDealMean_1] [decimal](18, 2) null, + [priceDealMax_1] [decimal](18, 2) null, + [sumDeal_1] [int] null, + [priceDealMean] [decimal](18, 2) null, + [priceDealMax] [decimal](18, 2) null, + [sumDeal] [int] null, + [priceListedMin] [decimal](18, 2) null, + [priceCase1_ToAI_Pst] [decimal](18, 6) null, + [priceCase2_ToAI_Pst] [decimal](18, 6) null, + [priceCase1_ToLst_Pst] [decimal](18, 6) null, + [priceCase2_ToLst_Pst] [decimal](18, 6) null, + [priceCase1] [decimal](18, 2) null, + [priceCase1AdjPst] [decimal](18, 6) null, + [sumCase1] [int] null, + [priceCase2] [decimal](18, 2) null, + [priceCase2AdjPst] [decimal](18, 6) null, + [sumCase2] [int] null, + [voppbt] [nvarchar](200) null, + [voppb] [decimal](18, 6) null, + [bindCommunityId] [int] null, + [bindCommunityPst] [decimal](18, 6) null, + [bindBlockClass] [nvarchar](200) null, + [bindBlockClassPst] [decimal](18, 6) null, + [bindBlockPropertyLevel] [nvarchar](200) null, + [bindBlockPropertyLevelPst] [decimal](18, 6) null, + [bindBlockProjectType] [nvarchar](200) null, + [bindBlockProjectTypePst] [decimal](18, 6) null, + [bindCountyProjectType] [nvarchar](200) null, + [bindCountyProjectTypePst] [decimal](18, 6) null +) +go \ No newline at end of file diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceRentOpeningCaseMapper.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceRentOpeningCaseMapper.java index 894c3df5a..ee5d30a60 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceRentOpeningCaseMapper.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceRentOpeningCaseMapper.java @@ -33,8 +33,10 @@ public interface OriginalResidenceRentOpeningCaseMapper { * @return */ int createAssembleTable(@Param("yearMonth") Integer yearMonth); + /** * 作价表 + * * @param yearMonth * @return */ @@ -42,11 +44,20 @@ public interface OriginalResidenceRentOpeningCaseMapper { /** * 人工修正价格表 + * * @param yearMonth * @return */ int createArtificialPriceTable(@Param("yearMonth") Integer yearMonth); + /** + * 结果表 + * + * @param yearMonth + * @return + */ + int createUltimatePriceTable(@Param("yearMonth") Integer yearMonth); + /** * 分页总数 * diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceSaleOpeningCaseMapper.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceSaleOpeningCaseMapper.java index af4617d28..5cde3eec1 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceSaleOpeningCaseMapper.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceSaleOpeningCaseMapper.java @@ -56,6 +56,14 @@ public interface OriginalResidenceSaleOpeningCaseMapper { */ int createArtificialPriceTable(@Param("yearMonth") Integer yearMonth); + /** + * 结果表 + * + * @param yearMonth + * @return + */ + int createUltimatePriceTable(@Param("yearMonth") Integer yearMonth); + /** * 分页总数 * diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceRentOpeningCaseServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceRentOpeningCaseServiceImpl.java index 7dd00e791..f8167ab43 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceRentOpeningCaseServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceRentOpeningCaseServiceImpl.java @@ -87,6 +87,7 @@ public class OriginalResidenceRentOpeningCaseServiceImpl implements IOriginalRes originalResidenceRentOpeningCaseMapper.createAssembleTable(computeTableRoute); originalResidenceRentOpeningCaseMapper.createComputePriceTable(computeTableRoute); originalResidenceRentOpeningCaseMapper.createArtificialPriceTable(computeTableRoute); + originalResidenceRentOpeningCaseMapper.createUltimatePriceTable(computeTableRoute); syncOriginalResidenceRentOpeningCaseMapper.createTable(syncTableRoute); } diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceSaleClosingCaseServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceSaleClosingCaseServiceImpl.java index 93fc8ca1a..b2c18de91 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceSaleClosingCaseServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceSaleClosingCaseServiceImpl.java @@ -49,6 +49,9 @@ public class OriginalResidenceSaleClosingCaseServiceImpl implements IOriginalRes Integer computeTableRoute = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1)); +// targetTableRoute = 202005; +// computeTableRoute = 202007; + prepare(computeTableRoute); List<OriginalResidenceSaleClosingCase> list = downloadOriginalResidenceSaleClosingCaseMapper.download(targetTableRoute); diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceSaleOpeningCaseServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceSaleOpeningCaseServiceImpl.java index b74452def..819f9358e 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceSaleOpeningCaseServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceSaleOpeningCaseServiceImpl.java @@ -56,8 +56,8 @@ public class OriginalResidenceSaleOpeningCaseServiceImpl implements IOriginalRes calendar.add(Calendar.MONTH, 1); Integer computeTableRoute = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1)); - computeTableRoute = 202007; - lastYearMonth = 202006; +// computeTableRoute = 202007; +// lastYearMonth = 202006; prepare(computeTableRoute, syncTableRoute); List<OriginalResidenceSaleOpeningCase> list = downloadOriginalResidenceSaleOpeningCaseMapper.download(); @@ -82,7 +82,7 @@ public class OriginalResidenceSaleOpeningCaseServiceImpl implements IOriginalRes originalResidenceSaleOpeningCaseMapper.createAssembleTable(computeTableRoute); originalResidenceSaleOpeningCaseMapper.createComputePriceTable(computeTableRoute); originalResidenceSaleOpeningCaseMapper.createArtificialPriceTable(computeTableRoute); - + originalResidenceSaleOpeningCaseMapper.createUltimatePriceTable(computeTableRoute); // syncOriginalResidenceSaleOpeningCaseMapper.createTable(syncTableRoute); } diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/price/controller/ResidenceSaleBasePriceController.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/controller/ResidenceSaleBasePriceController.java index 99cc6d3e6..b244e88b0 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/price/controller/ResidenceSaleBasePriceController.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/controller/ResidenceSaleBasePriceController.java @@ -17,10 +17,11 @@ import com.ruoyi.framework.web.page.TableSupport; import com.ruoyi.project.common.VueSelectModel; import com.ruoyi.project.data.price.domain.ArtificialResidenceSaleBasePrice; import com.ruoyi.project.data.price.domain.ComputeResidenceSaleBasePrice; -import com.ruoyi.project.data.price.service.IArtificialResidenceRentPriceService; +import com.ruoyi.project.data.price.domain.UltimateResidenceSaleBasePrice; import com.ruoyi.project.data.price.service.IArtificialResidenceSalePriceService; -import com.ruoyi.project.data.price.service.IOriginalResidenceSalePriceService; +import com.ruoyi.project.data.price.service.IComputeResidenceSalePriceService; import com.ruoyi.project.data.price.service.IUltimateResidenceRentBasePriceService; +import com.ruoyi.project.data.price.service.IUltimateResidenceSalePriceService; import com.ruoyi.project.system.domain.UploadFile; import com.ruoyi.project.system.service.IUploadFileService; import org.springframework.beans.factory.annotation.Autowired; @@ -28,18 +29,19 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.util.LinkedList; import java.util.List; @RestController -@RequestMapping("/data/price/residence/sale") +@RequestMapping("/data/sale-price/residence") public class ResidenceSaleBasePriceController extends BaseController { @Autowired - private IOriginalResidenceSalePriceService computeResidenceSalePriceService; + private IComputeResidenceSalePriceService computeResidenceSalePriceService; @Autowired private IArtificialResidenceSalePriceService artificialResidenceSalePriceService; @Autowired - private IUltimateResidenceRentBasePriceService ultimateResidenceRentBasePriceService; + private IUltimateResidenceSalePriceService ultimateResidenceSalePriceService; @Autowired private IUploadFileService fileService; @Autowired @@ -85,8 +87,11 @@ public class ResidenceSaleBasePriceController extends BaseController { int total = computeResidenceSalePriceService.selectCount(computeResidenceSaleBasePrice); computeResidenceSaleBasePrice.setPageIndex(0); computeResidenceSaleBasePrice.setPageSize(total); - List<ComputeResidenceSaleBasePrice> list = - computeResidenceSalePriceService.selectList(computeResidenceSaleBasePrice); + List<ComputeResidenceSaleBasePrice> list = null; + if (0 == total) + list = new LinkedList<>(); + else + list = computeResidenceSalePriceService.selectList(computeResidenceSaleBasePrice); ExcelUtil<ComputeResidenceSaleBasePrice> util = new ExcelUtil<>(ComputeResidenceSaleBasePrice.class); return util.exportExcel(list, "住宅销售基价" + computeResidenceSaleBasePrice.getYearMonth()); } @@ -192,76 +197,53 @@ public class ResidenceSaleBasePriceController extends BaseController { return AjaxResult.success(message); } -// -// /** -// * 人工修正住宅租赁 -// * -// * @param artificialResidenceRentBasePrice -// * @return -// */ -// @PreAuthorize("@ss.hasPermi('system:user:list')") -// @GetMapping("/artificial/list") -// public TableDataInfo artificialByList(ArtificialResidenceRentBasePrice artificialResidenceRentBasePrice) { -// int pageIndex = ServletUtils.getParameterToInt("pageIndex"); -// int pageSize = ServletUtils.getParameterToInt(TableSupport.PAGE_SIZE); -// artificialResidenceRentBasePrice.setPageIndex(pageIndex <= 1 ? 0 : (pageIndex - 1) * pageSize); -// artificialResidenceRentBasePrice.setPageSize(pageSize); -// -// int total = artificialResidenceRentPriceService.selectCount(artificialResidenceRentBasePrice); -// List<ArtificialResidenceRentBasePrice> list = -// artificialResidenceRentPriceService.selectList(artificialResidenceRentBasePrice); -// list.forEach(x -> x.setYearMonth(artificialResidenceRentBasePrice.getYearMonth())); -// return getDataTable(list, total); -// } -// -// -// // 文件保存 -// -// -// /** -// * 查询 住宅租赁基价列表 -// */ -// @PreAuthorize("@ss.hasPermi('system:user:list')") -// @GetMapping("/ultimate/list") -// public TableDataInfo ultimateResidenceRentBasePriceList(UltimateResidenceRentBasePrice -// ultimateResidenceRentBasePrice) { -// int pageIndex = ServletUtils.getParameterToInt("pageIndex"); -// int pageSize = ServletUtils.getParameterToInt(TableSupport.PAGE_SIZE); -// ultimateResidenceRentBasePrice.setPageIndex(pageIndex <= 1 ? 0 : (pageIndex - 1) * pageSize); -// ultimateResidenceRentBasePrice.setPageSize(pageSize); -// -// int total = ultimateResidenceRentBasePriceService.selectCount(ultimateResidenceRentBasePrice); -// List<UltimateResidenceRentBasePrice> list = -// ultimateResidenceRentBasePriceService.selectList(ultimateResidenceRentBasePrice); -// list.forEach(x -> x.setYearMonth(ultimateResidenceRentBasePrice.getYearMonth())); -// return getDataTable(list, total); -// } -// -// /** -// * 人工审核住宅租赁基价导入(模板) -// * 记录变化的值和变化次数 -// */ -// -// /** -// * 获取 住宅租赁基价详细信息 -// */ -// @PreAuthorize("@ss.hasPermi('system:user:query')") -// @GetMapping(value = "/ultimate/{id}") -// public AjaxResult ultimateResidenceRentBasePriceGet(@PathVariable("id") Integer id) { -// return AjaxResult.success(ultimateResidenceRentBasePriceService.selectById(id)); -// } -// -// /** -// * 修改 住宅租赁基价 -// */ -// @PreAuthorize("@ss.hasPermi('system:user:edit')") -// @Log(title = "住宅租赁基价", businessType = BusinessType.UPDATE) -// @PutMapping(value = "/ultimate") -// public AjaxResult ultimateResidenceRentBasePriceEdit(@RequestBody UltimateResidenceRentBasePrice -// ultimateResidenceRentBasePrice) { -// return toAjax(ultimateResidenceRentBasePriceService.update(ultimateResidenceRentBasePrice)); -// } -// + /** + * 查询 住宅租赁基价列表 + */ + @PreAuthorize("@ss.hasPermi('system:user:list')") + @GetMapping("/ultimate/list") + public TableDataInfo ultimateList(UltimateResidenceSaleBasePrice ultimateResidenceSaleBasePrice) { + int pageIndex = ServletUtils.getParameterToInt("pageIndex"); + int pageSize = ServletUtils.getParameterToInt(TableSupport.PAGE_SIZE); + ultimateResidenceSaleBasePrice.setPageIndex(pageIndex <= 1 ? 0 : (pageIndex - 1) * pageSize); + ultimateResidenceSaleBasePrice.setPageSize(pageSize); + int total = ultimateResidenceSalePriceService.selectCount(ultimateResidenceSaleBasePrice); + List<UltimateResidenceSaleBasePrice> list = + ultimateResidenceSalePriceService.selectList(ultimateResidenceSaleBasePrice); + list.forEach(x -> x.setYearMonth(ultimateResidenceSaleBasePrice.getYearMonth())); + return getDataTable(list, total); + } + + /** + * 查询 年月 + */ + @PreAuthorize("@ss.hasPermi('system:user:list')") + @GetMapping("/ultimate/yearmonth") + public AjaxResult ultimateYearMonthList() { + List<VueSelectModel> list = ultimateResidenceSalePriceService.getYearMonth(); + + return AjaxResult.success(list); + } + + /** + * 导出 住宅销售基价列表 + */ + @PreAuthorize("@ss.hasPermi('system:user:export')") + @Log(title = "住宅销售基价", businessType = BusinessType.EXPORT) + @GetMapping("/ultimate/export") + public AjaxResult ultimateExport(UltimateResidenceSaleBasePrice + ultimateResidenceSaleBasePrice) { + int total = ultimateResidenceSalePriceService.selectCount(ultimateResidenceSaleBasePrice); + ultimateResidenceSaleBasePrice.setPageIndex(0); + ultimateResidenceSaleBasePrice.setPageSize(total); + List<UltimateResidenceSaleBasePrice> list = null; + if (0 == total) + list = new LinkedList<>(); + else + list = ultimateResidenceSalePriceService.selectList(ultimateResidenceSaleBasePrice); + ExcelUtil<UltimateResidenceSaleBasePrice> util = new ExcelUtil<>(UltimateResidenceSaleBasePrice.class); + return util.exportExcel(list, "住宅销售基价" + ultimateResidenceSaleBasePrice.getYearMonth()); + } } diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/price/domain/UltimateResidenceSaleBasePrice.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/domain/UltimateResidenceSaleBasePrice.java index af764c558..b22e18cb2 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/price/domain/UltimateResidenceSaleBasePrice.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/domain/UltimateResidenceSaleBasePrice.java @@ -4,13 +4,11 @@ import com.alibaba.fastjson.annotation.JSONField; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.framework.web.domain.BaseEntity; +import java.math.BigDecimal; import java.util.Date; /** - * 【请填写功能名称】对象 office_base_price_ultimate * - * @author ruoyi - * @date 2020-05-20 */ public class UltimateResidenceSaleBasePrice extends BaseEntity { @@ -21,31 +19,48 @@ public class UltimateResidenceSaleBasePrice extends BaseEntity { private String id; @JSONField(serialize = false) private Integer yearMonth; - @Excel(name = "楼栋ID") - private String buildingId; @Excel(name = "小区ID") private String communityId; - @Excel(name = "主力基价") - private String mainPrice; - @Excel(name = "主力租金") - private String mainPriceRent; - @Excel(name = "主力基价涨跌幅") - private String mainPricePst; - @Excel(name = "主力租金涨跌幅") - private String mainPriceRentPst; - @Excel(name = "主力基价类型") - private String mainPriceType; - @Excel(name = "主力租金类型") - private String mainPriceRentType; + @Excel(name = "标准基价") + private BigDecimal basePrice; + @Excel(name = "主力面积基价") + private BigDecimal mainPrice; + @Excel(name = "主力面积系数") + private BigDecimal areaCoefficient; + @Excel(name = "竣工年份系数") + private BigDecimal yearCoefficient; + @Excel(name = "涨跌幅") + private BigDecimal voppa; + @Excel(name = "涨跌幅类型") + private String voppat; + @Excel(name = "价值时点") + private Date priceDate; + @Excel(name = "价格说明") + private String comment; @Excel(name = "更新日期") private Date updateDate; @Excel(name = "状态") private Boolean status; - @Excel(name = "是否标准楼栋") - private Boolean isStandardBuilding; @Excel(name = "更改价格说明") private String adjustPriceComment; + + 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; + } + public String getId() { return id; } @@ -62,14 +77,6 @@ public class UltimateResidenceSaleBasePrice extends BaseEntity { this.yearMonth = yearMonth; } - public String getBuildingId() { - return buildingId; - } - - public void setBuildingId(String buildingId) { - this.buildingId = buildingId; - } - public String getCommunityId() { return communityId; } @@ -78,52 +85,68 @@ public class UltimateResidenceSaleBasePrice extends BaseEntity { this.communityId = communityId; } - public String getMainPrice() { + public BigDecimal getBasePrice() { + return basePrice; + } + + public void setBasePrice(BigDecimal basePrice) { + this.basePrice = basePrice; + } + + public BigDecimal getMainPrice() { return mainPrice; } - public void setMainPrice(String mainPrice) { + public void setMainPrice(BigDecimal mainPrice) { this.mainPrice = mainPrice; } - public String getMainPriceRent() { - return mainPriceRent; + public BigDecimal getAreaCoefficient() { + return areaCoefficient; } - public void setMainPriceRent(String mainPriceRent) { - this.mainPriceRent = mainPriceRent; + public void setAreaCoefficient(BigDecimal areaCoefficient) { + this.areaCoefficient = areaCoefficient; } - public String getMainPricePst() { - return mainPricePst; + public BigDecimal getYearCoefficient() { + return yearCoefficient; } - public void setMainPricePst(String mainPricePst) { - this.mainPricePst = mainPricePst; + public void setYearCoefficient(BigDecimal yearCoefficient) { + this.yearCoefficient = yearCoefficient; } - public String getMainPriceRentPst() { - return mainPriceRentPst; + public BigDecimal getVoppa() { + return voppa; } - public void setMainPriceRentPst(String mainPriceRentPst) { - this.mainPriceRentPst = mainPriceRentPst; + public void setVoppa(BigDecimal voppa) { + this.voppa = voppa; } - public String getMainPriceType() { - return mainPriceType; + public String getVoppat() { + return voppat; } - public void setMainPriceType(String mainPriceType) { - this.mainPriceType = mainPriceType; + public void setVoppat(String voppat) { + this.voppat = voppat; } - public String getMainPriceRentType() { - return mainPriceRentType; + public Date getPriceDate() { + return priceDate; } - public void setMainPriceRentType(String mainPriceRentType) { - this.mainPriceRentType = mainPriceRentType; + public void setPriceDate(Date priceDate) { + this.priceDate = priceDate; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; } public Date getUpdateDate() { @@ -142,14 +165,6 @@ public class UltimateResidenceSaleBasePrice extends BaseEntity { this.status = status; } - public Boolean getStandardBuilding() { - return isStandardBuilding; - } - - public void setStandardBuilding(Boolean standardBuilding) { - isStandardBuilding = standardBuilding; - } - public String getAdjustPriceComment() { return adjustPriceComment; } @@ -157,20 +172,4 @@ public class UltimateResidenceSaleBasePrice extends BaseEntity { public void setAdjustPriceComment(String adjustPriceComment) { this.adjustPriceComment = adjustPriceComment; } - - 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/price/mapper/ArtificialResidenceSaleBasePriceMapper.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/mapper/ArtificialResidenceSaleBasePriceMapper.java index bef5cbdc1..3e909ff88 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/price/mapper/ArtificialResidenceSaleBasePriceMapper.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/mapper/ArtificialResidenceSaleBasePriceMapper.java @@ -48,6 +48,13 @@ public interface ArtificialResidenceSaleBasePriceMapper { */ int updateLastMonthPrice(ArtificialResidenceSaleBasePrice artificialResidenceSaleBasePrice); + /** + * 初始化执行环境 + * + * @return + */ + int initImport(); + /** * 创建用于批量导入的存储过程 * @@ -56,6 +63,7 @@ public interface ArtificialResidenceSaleBasePriceMapper { */ int prepareBachImport(@Param("yearMonth") Integer yearMonth); + /** * 分页列表 * diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/price/mapper/UltimateResidenceSalePriceMapper.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/mapper/UltimateResidenceSalePriceMapper.java new file mode 100644 index 000000000..113cd9aff --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/mapper/UltimateResidenceSalePriceMapper.java @@ -0,0 +1,34 @@ +package com.ruoyi.project.data.price.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.ruoyi.project.common.VueSelectModel; +import com.ruoyi.project.data.price.domain.ArtificialResidenceSaleBasePrice; +import com.ruoyi.project.data.price.domain.UltimateResidenceSaleBasePrice; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@DS("compute") +public interface UltimateResidenceSalePriceMapper { + + /** + * 分页列表 + * + * @param ultimateResidenceSaleBasePrice + * @return + */ + List<UltimateResidenceSaleBasePrice> selectPageList(UltimateResidenceSaleBasePrice ultimateResidenceSaleBasePrice); + + /** + * 分页总数 + * + * @param ultimateResidenceSaleBasePrice + * @return + */ + Integer selectPageCount(UltimateResidenceSaleBasePrice ultimateResidenceSaleBasePrice); + + /** + * @return + */ + List<VueSelectModel> yearMonthList(); +} diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IOriginalResidenceSalePriceService.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IComputeResidenceSalePriceService.java similarity index 92% rename from ruoyi/src/main/java/com/ruoyi/project/data/price/service/IOriginalResidenceSalePriceService.java rename to ruoyi/src/main/java/com/ruoyi/project/data/price/service/IComputeResidenceSalePriceService.java index b4d3c0e66..8a8e8a676 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IOriginalResidenceSalePriceService.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IComputeResidenceSalePriceService.java @@ -8,7 +8,7 @@ import java.util.List; /** * 计算住宅基价 */ -public interface IOriginalResidenceSalePriceService { +public interface IComputeResidenceSalePriceService { /** * 查询列表 diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IUltimateResidenceSalePriceService.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IUltimateResidenceSalePriceService.java new file mode 100644 index 000000000..0abdb9281 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/IUltimateResidenceSalePriceService.java @@ -0,0 +1,40 @@ +package com.ruoyi.project.data.price.service; + +import com.ruoyi.project.common.VueSelectModel; +import com.ruoyi.project.data.price.domain.ArtificialResidenceSaleBasePrice; +import com.ruoyi.project.data.price.domain.ComputeResidenceSaleBasePrice; +import com.ruoyi.project.data.price.domain.UltimateResidenceSaleBasePrice; + +import java.util.List; + +/** + * 住宅销售最终基价 + */ +public interface IUltimateResidenceSalePriceService { + + /** + * 分页列表 + * + * @param ultimateResidenceSaleBasePrice + * @return 集合 + */ + List<UltimateResidenceSaleBasePrice> selectList(UltimateResidenceSaleBasePrice ultimateResidenceSaleBasePrice); + + /** + * 分页数量 + * + * @param ultimateResidenceSaleBasePrice + * @return + */ + int selectCount(UltimateResidenceSaleBasePrice ultimateResidenceSaleBasePrice); + + /** + * 获取表名 + * + * @return + */ + List<VueSelectModel> getYearMonth(); + +} + + diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/ArtificialResidenceSalePriceServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/ArtificialResidenceSalePriceServiceImpl.java index 05dc4c6b8..e1b9eb039 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/ArtificialResidenceSalePriceServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/ArtificialResidenceSalePriceServiceImpl.java @@ -1,43 +1,29 @@ package com.ruoyi.project.data.price.service.impl; -import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; import com.baomidou.dynamic.datasource.annotation.DS; import com.microsoft.sqlserver.jdbc.*; -import com.ruoyi.common.exception.CustomException; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.framework.datasource.DynamicDataSource; -import com.ruoyi.project.common.UVResponse; +import com.ruoyi.common.utils.LoadUtil; import com.ruoyi.project.common.VueSelectModel; import com.ruoyi.project.data.price.domain.ArtificialResidenceSaleBasePrice; import com.ruoyi.project.data.price.domain.ComputeResidenceSaleBasePrice; import com.ruoyi.project.data.price.mapper.ArtificialResidenceSaleBasePriceMapper; -import com.ruoyi.project.data.price.mapper.ComputeResidenceSalePriceMapper; import com.ruoyi.project.data.price.service.IArtificialResidenceSalePriceService; -import com.ruoyi.project.data.price.service.IOriginalResidenceSalePriceService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; -import org.springframework.jdbc.core.namedparam.SqlParameterSource; -import org.springframework.jdbc.core.namedparam.SqlParameterSourceUtils; import org.springframework.stereotype.Service; -import org.springframework.transaction.TransactionStatus; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.support.TransactionCallbackWithoutResult; import org.springframework.transaction.support.TransactionTemplate; -import org.springframework.web.client.RestTemplate; -import javax.sql.DataSource; import java.sql.*; +import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.UUID; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.stream.Collectors; -import java.util.stream.Stream; /** * 计算住宅基价Service业务层处理 @@ -94,9 +80,13 @@ public class ArtificialResidenceSalePriceServiceImpl implements IArtificialResid Calendar calendar = Calendar.getInstance(); calendar.set(yearMonth / 100, (yearMonth % 100) - 1, 1); Date valuePoint = calendar.getTime(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); calendar.add(Calendar.MONTH, -1); + Integer lastYearMonth = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH) + 1)); Date lastValuePoint = calendar.getTime(); + artificialResidenceSaleBasePriceMapper.initImport(); artificialResidenceSaleBasePriceMapper.prepareBachImport(yearMonth); CopyOnWriteArrayList<ArtificialResidenceSaleBasePrice> copyOnWriteArrayList = new CopyOnWriteArrayList<>(); list.parallelStream().forEach(inputModel -> { @@ -116,10 +106,11 @@ public class ArtificialResidenceSalePriceServiceImpl implements IArtificialResid // 声明变量 // 构造一个 String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; - String dbURL = "jdbc:sqlserver://172.16.30.233:1433;DatabaseName=uv_compute"; + String dbURL = "jdbc:sqlserver://172.16.30.233:1433;DatabaseName=uv_compute_test"; String name = "sa"; String pwd = "Lcdatacenter_888"; Class.forName(driverName); +// jdbcTemplate.getDataSource().getConnection() Connection conn = DriverManager.getConnection(dbURL, name, pwd); SQLServerDataTable sourceDataTable = new SQLServerDataTable(); sourceDataTable.addColumnMetadata("communityId", java.sql.Types.NVARCHAR); @@ -251,8 +242,8 @@ public class ArtificialResidenceSalePriceServiceImpl implements IArtificialResid Statement statement = conn.createStatement(); - try (CallableStatement cs = conn.prepareCall("{CALL dbo.BatchImportOfArtificialResidenceSale (?)}")) { - ((SQLServerCallableStatement) cs).setStructured(1, "dbo.DWA_PROJECTBASEPRICE_MANU_Table", + try (CallableStatement cs = conn.prepareCall("{CALL BatchImportOfArtificialResidenceSale (?) }")) { + ((SQLServerCallableStatement) cs).setStructured(1, "DWA_PROJECTBASEPRICE_MANU_Table", sourceDataTable); boolean resultSetReturned = cs.execute(); if (resultSetReturned) { @@ -263,8 +254,12 @@ public class ArtificialResidenceSalePriceServiceImpl implements IArtificialResid } } // 删除存储过程,还原环境 - statement.execute("drop procedure BatchImportOfArtificialResidenceSale"); + statement.execute("IF OBJECT_ID('BatchImportOfArtificialResidenceSale', 'U') IS NOT NULL " + + " drop procedure BatchImportOfArtificialResidenceSale;"); conn.close(); + + after(yearMonth, lastYearMonth, valuePoint, lastValuePoint); + } catch (Exception e) { e.printStackTrace(); } @@ -272,4 +267,20 @@ public class ArtificialResidenceSalePriceServiceImpl implements IArtificialResid StringBuilder successMsg = new StringBuilder("恭喜您,数据已全部导入成功!共 " + (successNum - failureNum) + " 条"); return successMsg.toString(); } + + /** + * @param yearMonth + * @param lastYearMonth + */ + private void after(Integer yearMonth, Integer lastYearMonth, Date priceDate, Date lastPriceDate) { + String rawSql = LoadUtil.loadContent("sql-template/update_sale_price.sql"); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String sql = + rawSql.replace("#yearMonth#", yearMonth.toString()) + .replace("#lastYearMonth#", lastYearMonth.toString()) + .replace("#lastPriceDate#", simpleDateFormat.format(lastPriceDate)) + .replace("#priceDate#", simpleDateFormat.format(priceDate)); + jdbcTemplate.update(sql); + + } } diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/OriginalResidenceSalePriceServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/ComputeResidenceSalePriceServiceImpl.java similarity index 80% rename from ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/OriginalResidenceSalePriceServiceImpl.java rename to ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/ComputeResidenceSalePriceServiceImpl.java index e3c14f7a0..2bcd9f06c 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/OriginalResidenceSalePriceServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/ComputeResidenceSalePriceServiceImpl.java @@ -3,7 +3,7 @@ package com.ruoyi.project.data.price.service.impl; import com.ruoyi.project.common.VueSelectModel; import com.ruoyi.project.data.price.domain.ComputeResidenceSaleBasePrice; import com.ruoyi.project.data.price.mapper.ComputeResidenceSalePriceMapper; -import com.ruoyi.project.data.price.service.IOriginalResidenceSalePriceService; +import com.ruoyi.project.data.price.service.IComputeResidenceSalePriceService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -18,9 +18,9 @@ import java.util.List; * @date 2020-05-20 */ @Service -public class OriginalResidenceSalePriceServiceImpl implements IOriginalResidenceSalePriceService { +public class ComputeResidenceSalePriceServiceImpl implements IComputeResidenceSalePriceService { - private static final Logger log = LoggerFactory.getLogger(OriginalResidenceSalePriceServiceImpl.class); + private static final Logger log = LoggerFactory.getLogger(ComputeResidenceSalePriceServiceImpl.class); @Autowired private ComputeResidenceSalePriceMapper computeResidenceSalePriceMapper; diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/UltimateResidenceSalePriceServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/UltimateResidenceSalePriceServiceImpl.java new file mode 100644 index 000000000..dd759f8bf --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/UltimateResidenceSalePriceServiceImpl.java @@ -0,0 +1,64 @@ +package com.ruoyi.project.data.price.service.impl; + +import com.ruoyi.project.common.VueSelectModel; +import com.ruoyi.project.data.price.domain.ComputeResidenceSaleBasePrice; +import com.ruoyi.project.data.price.domain.UltimateResidenceSaleBasePrice; +import com.ruoyi.project.data.price.mapper.ComputeResidenceSalePriceMapper; +import com.ruoyi.project.data.price.mapper.UltimateResidenceSalePriceMapper; +import com.ruoyi.project.data.price.service.IComputeResidenceSalePriceService; +import com.ruoyi.project.data.price.service.IUltimateResidenceSalePriceService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 计算住宅基价Service业务层处理 + * + * @author ruoyi + * @date 2020-05-20 + */ +@Service +public class UltimateResidenceSalePriceServiceImpl implements IUltimateResidenceSalePriceService { + + @Autowired + private UltimateResidenceSalePriceMapper ultimateResidenceSalePriceMapper; + + @Override + public List<UltimateResidenceSaleBasePrice> selectList(UltimateResidenceSaleBasePrice ultimateResidenceSaleBasePrice) { + return ultimateResidenceSalePriceMapper.selectPageList(ultimateResidenceSaleBasePrice); + } + + @Override + public int selectCount(UltimateResidenceSaleBasePrice ultimateResidenceSaleBasePrice) { + return ultimateResidenceSalePriceMapper.selectPageCount(ultimateResidenceSaleBasePrice); + } + + @Override + public List<VueSelectModel> getYearMonth() { + return ultimateResidenceSalePriceMapper.yearMonthList(); + } + +// private static final Logger log = LoggerFactory.getLogger(UltimateResidenceSalePriceServiceImpl.class); +// +// @Autowired +// private ComputeResidenceSalePriceMapper computeResidenceSalePriceMapper; +// +// @Override +// public List<ComputeResidenceSaleBasePrice> selectList(ComputeResidenceSaleBasePrice +// computeResidenceSaleBasePrice) { +// return computeResidenceSalePriceMapper.selectPageList(computeResidenceSaleBasePrice); +// } +// +// @Override +// public int selectCount(ComputeResidenceSaleBasePrice computeResidenceSaleBasePrice) { +// return computeResidenceSalePriceMapper.selectPageCount(computeResidenceSaleBasePrice); +// } +// +// @Override +// public List<VueSelectModel> getYearMonth() { +// return computeResidenceSalePriceMapper.yearMonthList(); +// } +} diff --git a/ruoyi/src/main/resources/application-druid.yml b/ruoyi/src/main/resources/application-dev.yml similarity index 99% rename from ruoyi/src/main/resources/application-druid.yml rename to ruoyi/src/main/resources/application-dev.yml index b9f6b98e8..1d507d4d5 100644 --- a/ruoyi/src/main/resources/application-druid.yml +++ b/ruoyi/src/main/resources/application-dev.yml @@ -8,7 +8,7 @@ ruoyi: # 实例演示开关 demoEnabled: true # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) - profile: /var/log/ruoyi/uploadPath + profile: D:/ruoyi/uploadPath # 获取ip地址开关 addressEnabled: false diff --git a/ruoyi/src/main/resources/application-prod.yml b/ruoyi/src/main/resources/application-prod.yml new file mode 100644 index 000000000..1d507d4d5 --- /dev/null +++ b/ruoyi/src/main/resources/application-prod.yml @@ -0,0 +1,150 @@ +ruoyi: + # 名称 + name: RuoYi + # 版本 + version: 2.2.0 + # 版权年份 + copyrightYear: 2019 + # 实例演示开关 + demoEnabled: true + # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) + profile: D:/ruoyi/uploadPath + # 获取ip地址开关 + addressEnabled: false + +# web服务器配置 +server: + port: 9700 + servlet: + # 应用的访问路径 + context-path: / + tomcat: + # tomcat的URI编码 + uri-encoding: UTF-8 + # tomcat最大线程数,默认为200 + max-threads: 800 + # Tomcat启动初始化的线程数,默认值25 + min-spare-threads: 30 + +spring: + datasource: + dynamic: + primary: master + hikari: + connection-timeout: 30000 + validation-timeout: 30000 + idle-timeout: 30000 + max-lifetime: 30000 + max-pool-size: 30 + min-idle: 10 + initialization-fail-timeout: 30000 + connection-init-sql: select 1 + connection-test-query: select 1 + is-auto-commit: true + is-read-only: false + datasource: + master: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://172.16.30.243:6060/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: LOLm2dI2UQF#RxOf + teemlink: + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: jdbc:sqlserver://172.16.30.233:1433;DatabaseName=obpm_LianCheng_Data + username: sa + password: Lcdatacenter_888 + oldProd: + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: jdbc:sqlserver://139.196.201.83:8433;DatabaseName=LC_DataCenter + username: sa + password: lc1234 + compute: + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: jdbc:sqlserver://172.16.30.233:1433;DatabaseName=uv_compute + username: sa + password: Lcdatacenter_888 + clean: + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: jdbc:sqlserver://172.16.30.233:1433;DatabaseName=uv_clean + username: sa + password: Lcdatacenter_888 + calc: + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: jdbc:sqlserver://139.196.201.83:1433;DatabaseName=CALC + username: purple + password: liancheng + spider: + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: jdbc:sqlserver://139.196.201.83:1433;DatabaseName=TEST + username: purple + password: liancheng + +# druid: +# statViewServlet: +# enabled: true +# # 设置白名单,不填则允许所有访问 +# allow: +# url-pattern: /druid/* +# # 控制台管理用户名和密码 +# login-username: +# login-password: +# dynamic: +# druid: +# # 初始连接数 +# initialSize: 5 +# # 最小连接池数量 +# minIdle: 10 +# # 最大连接池数量 +# maxActive: 20 +# # 配置获取连接等待超时的时间 +# maxWait: 60000 +# # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 +# timeBetweenEvictionRunsMillis: 60000 +# # 配置一个连接在池中最小生存的时间,单位是毫秒 +# minEvictableIdleTimeMillis: 300000 +# # 配置一个连接在池中最大生存的时间,单位是毫秒 +# maxEvictableIdleTimeMillis: 900000 +# # 配置检测连接是否有效 +# validationQuery: SELECT 1 +# testWhileIdle: true +# testOnBorrow: false +# testOnReturn: false +## webStatFilter: +## enabled: true +## filters: stat,wall +## wall: +## multiStatementAllow: true +# stat: +# log-slow-sql: true +# slow-sql-millis: 1000 +# merge-sql: true +# primary: master +# datasource: +# # 主库数据源 +# master: +# driver-class-name: com.mysql.jdbc.Driver +# url: jdbc:mysql://172.16.30.243:6060/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# username: root +# password: LOLm2dI2UQF#RxOf +# # 从库数据源 +## slave: +## # 从数据源开关/默认关闭 +## enabled: false +## url: +## username: +## password: +# teemlink: +# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver +# url: jdbc:sqlserver://172.16.30.233:1433;DatabaseName=obpm_LianCheng_Data +# username: sa +# password: Lcdatacenter_888 +# compute: +# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver +# url: jdbc:sqlserver://172.16.30.233:1433;DatabaseName=uv_compute +# username: sa +# password: Lcdatacenter_888 +# clean: +# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver +# url: jdbc:sqlserver://172.16.30.233:1433;DatabaseName=uv_clean +# username: sa +# password: Lcdatacenter_888 \ No newline at end of file diff --git a/ruoyi/src/main/resources/application-uat.yml b/ruoyi/src/main/resources/application-uat.yml index be102b0f2..26cbf4c87 100644 --- a/ruoyi/src/main/resources/application-uat.yml +++ b/ruoyi/src/main/resources/application-uat.yml @@ -8,7 +8,7 @@ ruoyi: # 实例演示开关 demoEnabled: true # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) - profile: /var/log/ruoyi/uploadPath + profile: D:/ruoyi/uploadPath # 获取ip地址开关 addressEnabled: false diff --git a/ruoyi/src/main/resources/application.yml b/ruoyi/src/main/resources/application.yml index 417467b81..3bc2c238a 100644 --- a/ruoyi/src/main/resources/application.yml +++ b/ruoyi/src/main/resources/application.yml @@ -49,7 +49,7 @@ spring: # 国际化资源文件路径 basename: i18n/messages profiles: - active: druid + active: dev # 文件上传 servlet: multipart: diff --git a/ruoyi/src/main/resources/mybatis/data/ArtificialResidenceSalePriceMapper.xml b/ruoyi/src/main/resources/mybatis/data/ArtificialResidenceSalePriceMapper.xml index e92ffc4d8..2bae44baf 100644 --- a/ruoyi/src/main/resources/mybatis/data/ArtificialResidenceSalePriceMapper.xml +++ b/ruoyi/src/main/resources/mybatis/data/ArtificialResidenceSalePriceMapper.xml @@ -183,6 +183,10 @@ PriceNote=#{comment} where ProjectID=#{communityId}; </update> + <update id="initImport"> + IF OBJECT_ID('BatchImportOfArtificialResidenceSale', 'P') IS NOT NULL + drop procedure BatchImportOfArtificialResidenceSale; + </update> <update id="prepareBachImport" parameterType="int"> create procedure dbo.BatchImportOfArtificialResidenceSale @table DWA_PROJECTBASEPRICE_MANU_Table readonly as diff --git a/ruoyi/src/main/resources/mybatis/data/DownloadOriginalResidenceSaleOpeningCaseMapper.xml b/ruoyi/src/main/resources/mybatis/data/DownloadOriginalResidenceSaleOpeningCaseMapper.xml index 1a74bc0b0..ee95f94c3 100644 --- a/ruoyi/src/main/resources/mybatis/data/DownloadOriginalResidenceSaleOpeningCaseMapper.xml +++ b/ruoyi/src/main/resources/mybatis/data/DownloadOriginalResidenceSaleOpeningCaseMapper.xml @@ -28,7 +28,7 @@ <result property="caseProvider" column="caseProvider"/> </resultMap> <select id="download" resultMap="resultMapping"> - select top 100 llid + select llid , lcid , name , type diff --git a/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml b/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml index 617f1b83b..9e197b63e 100644 --- a/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml +++ b/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml @@ -3,278 +3,278 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.project.data.cases.mapper.OriginalResidenceSaleOpeningCaseMapper"> - + <!--案例原始表--> <update id="createOpeningCaseRawTable"> - <bind name="targetTableName" value="'dbo.ODS_HOUSINGCASELISTED_LJ_' + yearMonth +'_RAW'" /> + <bind name="targetTableName" value="'dbo.ODS_HOUSINGCASELISTED_LJ_' + yearMonth +'_RAW'"/> IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL - drop table ${targetTableName}; + drop table ${targetTableName}; create table ${targetTableName} ( - case_id varchar (32) not null primary key - , llid bigint - , lcid bigint - , Name sql_variant - , Roomtype nvarchar(50) - , Area decimal(18, 2) - , Towards nvarchar(50) - , Storey nvarchar(50) - , Lastdeal date - , Condoelev nvarchar(50) - , Decoration nvarchar(50) - , Year int - , Address nvarchar(1024) - , Price decimal(18, 2) - , Cname nvarchar(1024) - , Visited_Num int - , First_Visit_Time date - , Visited_Num_15 int - , Visited_Num_30 int - , Url nvarchar(512) - , Curl nvarchar(512) - , CurlDate date + case_id varchar (32) not null primary key + , llid bigint + , lcid bigint + , Name sql_variant + , Roomtype nvarchar(50) + , Area decimal(18, 2) + , Towards nvarchar(50) + , Storey nvarchar(50) + , Lastdeal date + , Condoelev nvarchar(50) + , Decoration nvarchar(50) + , Year int + , Address nvarchar(1024) + , Price decimal(18, 2) + , Cname nvarchar(1024) + , Visited_Num int + , First_Visit_Time date + , Visited_Num_15 int + , Visited_Num_30 int + , Url nvarchar(512) + , Curl nvarchar(512) + , CurlDate date ); </update> - - - + <!--过时--> <update id="createTable"> - <bind name="targetTableName" value="'dbo.original_residence_sale_opening_case_' + yearMonth" /> + <bind name="targetTableName" value="'dbo.original_residence_sale_opening_case_' + yearMonth"/> IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL - drop table ${targetTableName}; + drop table ${targetTableName}; CREATE TABLE ${targetTableName} ( - case_id varchar (32) NOT NULL, - case_lianjia_id nvarchar (50) NOT null primary key, - case_lianjia_community_id nvarchar (50) NOT NULL, - case_title nvarchar (500) NOT NULL, - clean_property_type nvarchar (20) NULL, - case_apartment_layout nvarchar (500) NOT NULL, - case_house_structure nvarchar (50) NULL, - case_area decimal (10, 2) NOT NULL, - case_underground_area decimal (10, 2) NULL, - case_toward nvarchar (50) NOT NULL, - clean_toward nvarchar (50) NULL, - case_storey nvarchar (20) NOT NULL, - clean_total_floor int NOT NULL, - clean_current_floor_desc nvarchar (20) NULL, - case_elevator nvarchar (20) NULL, - clean_elevator nvarchar (20) NULL, - case_tihu nvarchar (20) NULL, - case_decoration nvarchar (20) NULL, - clean_decoration nvarchar (50) NULL, - case_year int NOT NULL, - clean_year int NOT NULL, - case_address nvarchar (500) NULL, - case_vid nvarchar (500) NULL, - case_chan_quan_xing_zhi nvarchar (200) NULL, - case_price decimal (18, 2) NOT NULL, - clean_unit_price decimal (18, 2) NOT NULL, - clean_total_price decimal (18, 2) NOT NULL, - case_community_name nvarchar (500) NULL, - case_visited_num int NOT NULL, - case_visited_num_15 int NOT NULL, - case_visited_num_30 int NOT NULL, - case_latest_deal_date date NULL, - case_latest_visited_date date NULL, - case_first_visited_date date NULL, - case_url nvarchar (500) NOT NULL, - case_community_url nvarchar (500) NOT NULL, - case_get_date date NOT NULL, - case_provider nvarchar (50) NOT NULL, - uv_community_name nvarchar (500) NULL, - uv_community_address nvarchar (1024) NULL, - uv_community_id nvarchar (20) NULL, - uv_building_id nvarchar (20) NULL, - uv_county nvarchar (50) NULL, - uv_block nvarchar (50) NULL, - uv_loop nvarchar (50) NULL, - area_coefficient decimal (18, 6) NULL, - toward_coefficient decimal (18, 6) NULL, - floor_coefficient decimal (18, 6) NULL, - decoration_coefficient int NULL, - year_coefficient decimal (18, 6) NULL, - building_coefficient decimal (18, 6) NULL, - adjust_unit_price decimal (18, 2) NULL, - clean_project_level nvarchar (50) NULL, - create_time datetime NOT NULL + case_id varchar (32) NOT NULL, + case_lianjia_id nvarchar (50) NOT null primary key, + case_lianjia_community_id nvarchar (50) NOT NULL, + case_title nvarchar (500) NOT NULL, + clean_property_type nvarchar (20) NULL, + case_apartment_layout nvarchar (500) NOT NULL, + case_house_structure nvarchar (50) NULL, + case_area decimal (10, 2) NOT NULL, + case_underground_area decimal (10, 2) NULL, + case_toward nvarchar (50) NOT NULL, + clean_toward nvarchar (50) NULL, + case_storey nvarchar (20) NOT NULL, + clean_total_floor int NOT NULL, + clean_current_floor_desc nvarchar (20) NULL, + case_elevator nvarchar (20) NULL, + clean_elevator nvarchar (20) NULL, + case_tihu nvarchar (20) NULL, + case_decoration nvarchar (20) NULL, + clean_decoration nvarchar (50) NULL, + case_year int NOT NULL, + clean_year int NOT NULL, + case_address nvarchar (500) NULL, + case_vid nvarchar (500) NULL, + case_chan_quan_xing_zhi nvarchar (200) NULL, + case_price decimal (18, 2) NOT NULL, + clean_unit_price decimal (18, 2) NOT NULL, + clean_total_price decimal (18, 2) NOT NULL, + case_community_name nvarchar (500) NULL, + case_visited_num int NOT NULL, + case_visited_num_15 int NOT NULL, + case_visited_num_30 int NOT NULL, + case_latest_deal_date date NULL, + case_latest_visited_date date NULL, + case_first_visited_date date NULL, + case_url nvarchar (500) NOT NULL, + case_community_url nvarchar (500) NOT NULL, + case_get_date date NOT NULL, + case_provider nvarchar (50) NOT NULL, + uv_community_name nvarchar (500) NULL, + uv_community_address nvarchar (1024) NULL, + uv_community_id nvarchar (20) NULL, + uv_building_id nvarchar (20) NULL, + uv_county nvarchar (50) NULL, + uv_block nvarchar (50) NULL, + uv_loop nvarchar (50) NULL, + area_coefficient decimal (18, 6) NULL, + toward_coefficient decimal (18, 6) NULL, + floor_coefficient decimal (18, 6) NULL, + decoration_coefficient int NULL, + year_coefficient decimal (18, 6) NULL, + building_coefficient decimal (18, 6) NULL, + adjust_unit_price decimal (18, 2) NULL, + clean_project_level nvarchar (50) NULL, + create_time datetime NOT NULL ); </update> - + <!--清洗表--> <update id="createCleanTable"> - <bind name="targetTableName" value="'dbo.ODS_HOUSINGCASELISTED_LJ_' + yearMonth" /> + <bind name="targetTableName" value="'dbo.ODS_HOUSINGCASELISTED_LJ_' + yearMonth"/> IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL - drop table ${targetTableName}; + drop table ${targetTableName}; CREATE TABLE ${targetTableName} ( - case_id varchar(32) not null, - HouseholdsID_LJ bigint not null primary key, - ProjectID_LJ bigint null, - ProjectID bigint null, - Roomtype nvarchar(64) null, - Area decimal(18, 2) null, - Towards nvarchar(64) null, - UpperFloorSum nvarchar(32) null, - UpperFloorNum nvarchar(32) null, - Elevator tinyint null, - Decoration nvarchar(64) null, - Year int null, - AreaCoff decimal(7, 4) null, - TowardsCoff decimal(7, 4) null, - FloorCoff decimal(7, 4) null, - DecorationRng int null, - YearCoff decimal(7, 4) null, - BuildingCoff decimal(7, 4) null, - PriceTotal decimal(18, 2) null, - PriceUnit decimal(18, 2) not null, - PriceUnitAdj decimal(18, 2) not null, - Visited_Num int null, - First_Visit_Time date null, - Visited_Num_15 int null, - Visited_Num_30 int null, - Status tinyint null, - AdjustedValue decimal(18, 2) null, - AdjustedPst decimal(18, 6) null, - AdjustedCumValue decimal(18, 2) null, - AdjustedCumPst decimal(18, 6) null, - AdjustedCumValueAbs decimal(18, 2) null, - AdjustedCumPstAbs decimal(18, 6) null, - AdjustedCumNum int null, - PriceTotalIn decimal(18, 2) null, - PriceTotalOut decimal(18, 2) null, - PriceDateIn date null, - PriceDateOut date null + case_id varchar(32) not null, + HouseholdsID_LJ bigint not null primary key, + ProjectID_LJ bigint null, + ProjectID bigint null, + Roomtype nvarchar(64) null, + Area decimal(18, 2) null, + Towards nvarchar(64) null, + UpperFloorSum nvarchar(32) null, + UpperFloorNum nvarchar(32) null, + Elevator tinyint null, + Decoration nvarchar(64) null, + Year int null, + AreaCoff decimal(7, 4) null, + TowardsCoff decimal(7, 4) null, + FloorCoff decimal(7, 4) null, + DecorationRng int null, + YearCoff decimal(7, 4) null, + BuildingCoff decimal(7, 4) null, + PriceTotal decimal(18, 2) null, + PriceUnit decimal(18, 2) not null, + PriceUnitAdj decimal(18, 2) not null, + Visited_Num int null, + First_Visit_Time date null, + Visited_Num_15 int null, + Visited_Num_30 int null, + Status tinyint null, + AdjustedValue decimal(18, 2) null, + AdjustedPst decimal(18, 6) null, + AdjustedCumValue decimal(18, 2) null, + AdjustedCumPst decimal(18, 6) null, + AdjustedCumValueAbs decimal(18, 2) null, + AdjustedCumPstAbs decimal(18, 6) null, + AdjustedCumNum int null, + PriceTotalIn decimal(18, 2) null, + PriceTotalOut decimal(18, 2) null, + PriceDateIn date null, + PriceDateOut date null ); </update> + <!-- 案例汇总表 --> <update id="createAssembleTable"> - <bind name="targetTableName" value="'dbo.DW_HOUSINGCASE_COMM_' + yearMonth" /> + <bind name="targetTableName" value="'dbo.DW_HOUSINGCASE_COMM_' + yearMonth"/> IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL - drop table ${targetTableName}; + drop table ${targetTableName}; create table ${targetTableName} ( - SID int primary key identity - , case_id varchar(32) not null - , HouseholdsID_LJ bigint - , ProjectID_LJ bigint - , ProjectID bigint --modified - , ProjectName nvarchar(1024) - , ProjectAddr nvarchar(1024) - , County nvarchar(512) - , Block nvarchar(512) - , Loop nvarchar(512) - , Roomtype nvarchar(64) - , Area decimal(18, 2) - , Towards nvarchar(64) - , UpperFloorSum nvarchar(32) - , UpperFloorNum nvarchar(32) - , Elevator tinyint - , Decoration nvarchar(64) - , Year int - , AreaCoff decimal(7, 4) - , TowardsCoff decimal(7, 4) - , FloorCoff decimal(7, 4) - , DecorationRng int - , YearCoff decimal(7, 4) - , BuildingCoff decimal(7, 4) - , BasePrice_1 decimal(18, 2) - , PriceTotal decimal(18, 2) not null - , PriceUnit decimal(18, 2) not null - , PriceUnitAdj decimal(18, 2) not null - , Visited_Num int - , First_Visit_Time date - , Visited_Num_15 int - , Visited_Num_30 int - , Status tinyint - , AdjustedValue decimal(18, 2) - , AdjustedPst decimal(18, 6) - , AdjustedCumValue decimal(18, 2) - , AdjustedCumPst decimal(18, 6) - , AdjustedCumValueAbs decimal(18, 2) - , AdjustedCumPstAbs decimal(18, 6) - , AdjustedCumNum int - , PriceTotalIn decimal(18, 2) - , PriceDateIn date - , CaseType int - , RangeFlag int + SID int primary key identity + , case_id varchar(32) not null + , HouseholdsID_LJ bigint + , ProjectID_LJ bigint + , ProjectID bigint --modified + , ProjectName nvarchar(1024) + , ProjectAddr nvarchar(1024) + , County nvarchar(512) + , Block nvarchar(512) + , Loop nvarchar(512) + , Roomtype nvarchar(64) + , Area decimal(18, 2) + , Towards nvarchar(64) + , UpperFloorSum nvarchar(32) + , UpperFloorNum nvarchar(32) + , Elevator tinyint + , Decoration nvarchar(64) + , Year int + , AreaCoff decimal(7, 4) + , TowardsCoff decimal(7, 4) + , FloorCoff decimal(7, 4) + , DecorationRng int + , YearCoff decimal(7, 4) + , BuildingCoff decimal(7, 4) + , BasePrice_1 decimal(18, 2) + , PriceTotal decimal(18, 2) not null + , PriceUnit decimal(18, 2) not null + , PriceUnitAdj decimal(18, 2) not null + , Visited_Num int + , First_Visit_Time date + , Visited_Num_15 int + , Visited_Num_30 int + , Status tinyint + , AdjustedValue decimal(18, 2) + , AdjustedPst decimal(18, 6) + , AdjustedCumValue decimal(18, 2) + , AdjustedCumPst decimal(18, 6) + , AdjustedCumValueAbs decimal(18, 2) + , AdjustedCumPstAbs decimal(18, 6) + , AdjustedCumNum int + , PriceTotalIn decimal(18, 2) + , PriceDateIn date + , CaseType int + , RangeFlag int ); </update> + <!-- 计算价格表 --> <update id="createComputePriceTable"> - <bind name="targetTableName" value="'dbo.DWA_PROJECTBASEPRICE_IMDT_' + yearMonth" /> + <bind name="targetTableName" value="'dbo.DWA_PROJECTBASEPRICE_IMDT_' + yearMonth"/> IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL - drop table ${targetTableName}; + drop table ${targetTableName}; create table ${targetTableName} ( - SID int not null identity(1,1) - , ProjectID nvarchar(20) primary key - , ProjectName nvarchar(1024) - , ProjectAddr nvarchar(1024) - , County nvarchar(512) - , Block nvarchar(512) - , Loop nvarchar(512) - , IsIndxGen tinyint - , IsPstCalc tinyint - , StatusRun tinyint - , ProjectSPLabel nvarchar(64) - , PropertyType nvarchar(256) - , ProjectType nvarchar(256) - , ProjectTypeDtl nvarchar(256) - , ProjectLevel nvarchar(64) - , Year int - , MainArea decimal(18, 2) - , AreaCoff decimal(7, 4) - , YearCoff decimal(7, 4) - , PriceNote nvarchar(1024) - , BasePriceDft decimal(18, 2) - , MainPriceDft decimal(18, 2) - , BasePrice_1 decimal(18, 2) - , PriceUnitAdj decimal(18, 2) - , Visited_Num int - , First_Visit_Time date - , Visited_Num_15 int - , Visited_Num_30 int - , PriceDealMean_1 decimal(18, 2) - , PriceDealMax_1 decimal(18, 2) - , SumDeal_1 int - , PriceDealMean decimal(18, 2) - , PriceDealMax decimal(18, 2) - , SumDeal int - , PriceListedMin decimal(18, 2) - , PriceCase1_ToAI_Pst decimal(18, 6) - , PriceCase2_ToAI_Pst decimal(18, 6) - , PriceCase1_ToLst_Pst decimal(18, 6) - , PriceCase2_ToLst_Pst decimal(18, 6) - , PriceCase1 decimal(18, 2) - , PriceCase1AdjPst decimal(18, 6) - , SumCase1 int - , PriceCase2 decimal(18, 2) - , PriceCase2AdjPst decimal(18, 6) - , SumCase2 int - , VOPPBT varchar(64) - , VOPPB decimal(18, 6) - , BindProjID int - , Bind_Proj_Pst decimal(18, 6) - , Bind_Block_Class nvarchar(128) - , Bind_Block_Class_Pst decimal(18, 6) - , Bind_Block_Plevel nvarchar(128) - , Bind_Block_Plevel_Pst decimal(18, 6) - , Bind_Block_PType nvarchar(128) - , Bind_Block_Ptype_Pst decimal(18, 6) - , Bind_County_PType nvarchar(128) - , Bind_County_Ptype_Pst decimal(18, 6) - , VOPPAT varchar(64) - , VOPPA decimal(18, 6) + SID int not null identity(1,1) + , ProjectID nvarchar(20) primary key + , ProjectName nvarchar(1024) + , ProjectAddr nvarchar(1024) + , County nvarchar(512) + , Block nvarchar(512) + , Loop nvarchar(512) + , IsIndxGen tinyint + , IsPstCalc tinyint + , StatusRun tinyint + , ProjectSPLabel nvarchar(64) + , PropertyType nvarchar(256) + , ProjectType nvarchar(256) + , ProjectTypeDtl nvarchar(256) + , ProjectLevel nvarchar(64) + , Year int + , MainArea decimal(18, 2) + , AreaCoff decimal(7, 4) + , YearCoff decimal(7, 4) + , PriceNote nvarchar(1024) + , BasePriceDft decimal(18, 2) + , MainPriceDft decimal(18, 2) + , BasePrice_1 decimal(18, 2) + , PriceUnitAdj decimal(18, 2) + , Visited_Num int + , First_Visit_Time date + , Visited_Num_15 int + , Visited_Num_30 int + , PriceDealMean_1 decimal(18, 2) + , PriceDealMax_1 decimal(18, 2) + , SumDeal_1 int + , PriceDealMean decimal(18, 2) + , PriceDealMax decimal(18, 2) + , SumDeal int + , PriceListedMin decimal(18, 2) + , PriceCase1_ToAI_Pst decimal(18, 6) + , PriceCase2_ToAI_Pst decimal(18, 6) + , PriceCase1_ToLst_Pst decimal(18, 6) + , PriceCase2_ToLst_Pst decimal(18, 6) + , PriceCase1 decimal(18, 2) + , PriceCase1AdjPst decimal(18, 6) + , SumCase1 int + , PriceCase2 decimal(18, 2) + , PriceCase2AdjPst decimal(18, 6) + , SumCase2 int + , VOPPBT varchar(64) + , VOPPB decimal(18, 6) + , BindProjID int + , Bind_Proj_Pst decimal(18, 6) + , Bind_Block_Class nvarchar(128) + , Bind_Block_Class_Pst decimal(18, 6) + , Bind_Block_Plevel nvarchar(128) + , Bind_Block_Plevel_Pst decimal(18, 6) + , Bind_Block_PType nvarchar(128) + , Bind_Block_Ptype_Pst decimal(18, 6) + , Bind_County_PType nvarchar(128) + , Bind_County_Ptype_Pst decimal(18, 6) + , VOPPAT varchar(64) + , VOPPA decimal(18, 6) ); </update> - <!-- 人工修正价格表和作价表一摸一样 --> <update id="createArtificialPriceTable"> - <bind name="targetTableName" value="'dbo.DWA_PROJECTBASEPRICE_MANU_' + yearMonth" /> + <bind name="targetTableName" value="'dbo.DWA_PROJECTBASEPRICE_MANU_' + yearMonth"/> IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL drop table ${targetTableName}; + create table ${targetTableName} ( SID int not null identity(1,1) @@ -338,4 +338,28 @@ , VOPPA decimal(18, 6) ); </update> + <!-- 最终价格表--> + <update id="createUltimatePriceTable"> + <bind name="targetTableName" value="'dbo.ODS_PROJECT_PRICE_INFO_' + yearMonth"/> + IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL + drop table ${targetTableName}; + + create table ${targetTableName} + ( + ID int primary key identity + , ProjectID bigint not null + , PriceType int + , BasePrice decimal(18, 2) + , MainPrice decimal(18, 2) + , AreaCoff decimal(7, 4) + , YearCoff decimal(7, 4) + , VOPPAT varchar(64) + , VOPPA decimal(18, 6) + , PriceDate date + , PriceNote nvarchar(1024) + , ModifyDate date + , Status bit + , AdjEvd nvarchar(64) + ); + </update> </mapper> \ No newline at end of file diff --git a/ruoyi/src/main/resources/mybatis/data/UltimateResidenceSalePriceMapper.xml b/ruoyi/src/main/resources/mybatis/data/UltimateResidenceSalePriceMapper.xml new file mode 100644 index 000000000..6f4279eda --- /dev/null +++ b/ruoyi/src/main/resources/mybatis/data/UltimateResidenceSalePriceMapper.xml @@ -0,0 +1,80 @@ +<?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.ruoyi.project.data.price.mapper.UltimateResidenceSalePriceMapper"> + + <resultMap type="com.ruoyi.project.data.price.domain.UltimateResidenceSaleBasePrice" + id="MainMappingResult"> + <result property="id" column="id"/> + <result property="yearMonth" column="yearMonth"/> + <result property="communityId" column="ProjectID"/> +<!-- <result property="priceType" column="PriceType"/>--> + <result property="basePrice" column="BasePrice"/> + <result property="mainPrice" column="MainPrice"/> + <result property="areaCoefficient" column="AreaCoff"/> + <result property="yearCoefficient" column="YearCoff"/> + <result property="voppat" column="VOPPAT"/> + <result property="voppa" column="VOPPA"/> + <result property="priceDate" column="PriceDate"/> + <result property="comment" column="PriceNote"/> + <result property="updateDate" column="ModifyDate" jdbcType="DATE"/> + <result property="status" column="Status"/> + <result property="adjustPriceComment" column="AdjEvd"/> + </resultMap> + + <sql id="selectAllField"> + SELECT ID + ,ProjectID + ,PriceType + ,BasePrice + ,MainPrice + ,AreaCoff + ,YearCoff + ,VOPPAT + ,VOPPA + ,PriceDate + ,PriceNote + ,ModifyDate + ,Status + ,AdjEvd + ,${yearMonth} as yearMonth + FROM dbo.ODS_PROJECT_PRICE_INFO_${yearMonth} + </sql> + <!-- 分页总数 --> + <select id="selectPageCount" + parameterType="com.ruoyi.project.data.price.domain.UltimateResidenceSaleBasePrice" resultType="int"> + select count(1) from dbo.ODS_PROJECT_PRICE_INFO_${yearMonth} + <where> + <if test="communityId != null"> + AND ProjectID = #{communityId} + </if> + <if test="status != null"> + AND Status = #{status} + </if> + </where> + </select> + <!-- 分页列表 --> + <select id="selectPageList" + parameterType="com.ruoyi.project.data.price.domain.UltimateResidenceSaleBasePrice" + resultMap="MainMappingResult"> + <include refid="selectAllField"/> + <where> + <if test="communityId != null"> + AND ProjectID = #{communityId} + </if> + <if test="status != null"> + AND Status = #{status} + </if> + </where> + order by ProjectID ASC OFFSET #{pageIndex} rows fetch next #{pageSize} rows only + </select> + + <!-- 获取表名 --> + <select id="yearMonthList" resultType="com.ruoyi.project.common.VueSelectModel"> + SELECT right(name,6) as value, right(name,6) as label + FROM sys.tables + where name like 'ODS_PROJECT_PRICE_INFO_%' + order by cast(right(name,6) as int) desc + </select> +</mapper> \ No newline at end of file diff --git a/ruoyi/src/main/resources/sql-template/compute_sale_price.sql b/ruoyi/src/main/resources/sql-template/compute_sale_price.sql index d7dcad893..14169e6ab 100644 --- a/ruoyi/src/main/resources/sql-template/compute_sale_price.sql +++ b/ruoyi/src/main/resources/sql-template/compute_sale_price.sql @@ -1,5 +1,5 @@ -truncate table dbo.DW_HOUSINGCASE_COMM_#yearMonth#; -truncate table dbo.DWA_PROJECTBASEPRICE_IMDT_#yearMonth#; +truncate table DW_HOUSINGCASE_COMM_#yearMonth#; +truncate table DWA_PROJECTBASEPRICE_IMDT_#yearMonth#; insert into DW_HOUSINGCASE_COMM_#yearMonth# select @@ -223,87 +223,163 @@ left join ODS_PROJECT_PRICE_INFO_#lastYearMonth# d on a.ITEM_AIRAID = d.ProjectI where a.ITEM_ISBUILDINDEX='1' and a.ITEM_PROJECTTYPE='1' and d.Status=1; ----第二步;根据案例自动计算的小区涨跌幅 +update #DWA_PROJECTBASEPRICE_IMDT_STEP_1 +set PriceCase1_ToAI_Pst=NULL +where PriceCase1_ToAI_Pst < -0.05 or PriceCase1_ToAI_Pst>=0.12; + +update #DWA_PROJECTBASEPRICE_IMDT_STEP_1 +set PriceCase2_ToAI_Pst=NULL +where PriceCase2_ToAI_Pst < -0.05 or PriceCase2_ToAI_Pst>=0.12; + +update #DWA_PROJECTBASEPRICE_IMDT_STEP_1 +set PriceCase1_ToLst_Pst=NULL +where PriceCase1_ToLst_Pst < -0.05 or PriceCase1_ToLst_Pst>=0.12; + +update #DWA_PROJECTBASEPRICE_IMDT_STEP_1 +set PriceCase2_ToLst_Pst=NULL +where PriceCase2_ToLst_Pst < -0.05 or PriceCase2_ToLst_Pst>=0.12; + +-- 2. 对 #DWA_PROJECTBASEPRICE_IMDT_STEP_2 计算方式整体修改为如下。其它逻辑保存不变。 create table #DWA_PROJECTBASEPRICE_IMDT_STEP_2 ( ProjectID bigint primary key - , VOPPBT int --价格涨跌幅类型-调整前 + , VOPPBT varchar(64) --价格涨跌幅类型-调整前 , VOPPB decimal(18, 6) --价格涨跌幅-调整前 ); + +SELECT a.ProjectID, PriceCase1_ToAI_Pst, PriceCase2_ToAI_Pst, PriceCase1_ToLst_Pst, PriceCase2_ToLst_Pst, + case when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=4 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=4 then '4-4-0' --4个非空,4涨,0跌(涨跌幅=0情况,当作涨) + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=4 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=2 then '4-3-1' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=4 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=0 then '4-2-2' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=4 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=-2 then '4-1-3' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=4 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=-4 then '4-0-4' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=3 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=3 then '3-3-0' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=3 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=1 then '3-2-1' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=3 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=-1 then '3-1-2' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=3 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=-3 then '3-0-3' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=2 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=2 then '2-2-0' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=2 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=0 then '2-1-1' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=2 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=-2 then '2-0-2' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=1 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=1 then '1-1-0' + when abs(ToAI_1)+abs(ToAI_2)+abs(ToLst_1)+abs(ToLst_2)=1 and ToAI_1+ToAI_2+ToLst_1+ToLst_2=-1 then '1-0-1' + end as VOPPBT +INTO #TMP_STEP_2 +FROM (SELECT projectid, + isnull(PriceCase1_ToAI_Pst,0) PriceCase1_ToAI_Pst, case when PriceCase1_ToAI_Pst>=0 then 1 when PriceCase1_ToAI_Pst<0 then -1 else 0 end as ToAI_1, + isnull(PriceCase2_ToAI_Pst,0) PriceCase2_ToAI_Pst, case when PriceCase2_ToAI_Pst>=0 then 1 when PriceCase2_ToAI_Pst<0 then -1 else 0 end as ToAI_2, + isnull(PriceCase1_ToLst_Pst,0) PriceCase1_ToLst_Pst, case when PriceCase1_ToLst_Pst>=0 then 1 when PriceCase1_ToLst_Pst<0 then -1 else 0 end as ToLst_1, + isnull(PriceCase2_ToLst_Pst,0) PriceCase2_ToLst_Pst, case when PriceCase2_ToLst_Pst>=0 then 1 when PriceCase2_ToLst_Pst<0 then -1 else 0 end as ToLst_2 + FROM #DWA_PROJECTBASEPRICE_IMDT_STEP_1 where PriceUnitAdj is not null +) a + +select * +into #TMP_STEP_2_UP +from #TMP_STEP_2 t +unpivot (Vlu for Tp in (PriceCase1_ToAI_Pst, PriceCase2_ToAI_Pst, PriceCase1_ToLst_Pst, PriceCase2_ToLst_Pst)) UP + INSERT INTO #DWA_PROJECTBASEPRICE_IMDT_STEP_2 -SELECT a.ProjectID, - CASE WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN 11 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN 12 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN 13 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN 14 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0) THEN 15 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN 16 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN 17 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN 18 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN 19 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN 21 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN 22 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN 23 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN 24 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0 - AND (PriceCase2_ToAI_0<>0 OR PriceCase2_ToLst_0<>0 OR PriceCase2Adj_0<>0)) THEN 25 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN 26 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN 27 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN 28 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN 29 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN 0 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN 32 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN 33 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN 34 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0) THEN 35 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN 36 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN 37 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN 38 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN 39 - END AS VOPPBT, - CASE WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN MIN --11 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN MDN*1.0/4 --12 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN MDN*1.0/4 --13 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN MDN*1.0/4 --14 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0) THEN 0 --15 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN 0 --16 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN MDN*1.0/4 --17 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN 0 --18 - WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN MDN --19 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN MDN*1.0/4 --21 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN MDN*1.0/4 --22 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN 0 --23 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN 0 --24 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0 - AND (PriceCase2_ToAI_0<>0 OR PriceCase2_ToLst_0<>0 OR PriceCase2Adj_0<>0)) THEN 0 --25 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN MIN*1.0/3 --26 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN 0 --27 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN 0 --28 - WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN MDN --29 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN 0 --31 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN 0 --32 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN MDN --33 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN 0 --34 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0) THEN 0 --35 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN MDN --36 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN MDN --37 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN MDN --38 - WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN MDN --39 +SELECT ProjectID, VOPPBT, + CASE WHEN VOPPBT in ('4-4-0', '4-0-4') THEN Vlu_4 + WHEN VOPPBT in ('4-3-1', '3-3-0') THEN Vlu_3 + WHEN VOPPBT in ('4-1-3', '3-0-3') THEN Vlu_3_ + WHEN VOPPBT in ('2-2-0') THEN Vlu_2 + WHEN VOPPBT in ('2-1-1') THEN Vlu_1 + WHEN VOPPBT in ('4-2-2', '3-2-1') AND SM=2 THEN Mn + WHEN VOPPBT in ('4-2-2', '3-2-1') AND SM<2 THEN 0 + WHEN VOPPBT in ('1-1-0') AND SM=1 THEN Mn + WHEN VOPPBT in ('1-1-0') AND SM<1 THEN 0 + WHEN VOPPBT in ('3-1-2', '2-0-2', '1-0-1') THEN MX_ END AS VOPPB -FROM (SELECT projectid, ISNULL(PriceCase2_ToAI_Pst,0) PriceCase2_ToAI_Pst, - ISNULL(PriceCase2_ToLst_Pst,0) PriceCase2_ToLst_Pst, ISNULL(PriceCase2AdjPst,0) PriceCase2AdjPst, - PriceCase2_ToAI_0, PriceCase2_ToLst_0, PriceCase2Adj_0 - FROM #DWA_PROJECTBASEPRICE_IMDT_STEP_1 where PriceUnitAdj is not null) a -LEFT JOIN ( - select projectid, min(vl) as MIN, avg(MDN) as MDN - from ( - select projectid, tp, vl, PERCENTILE_CONT(0.5) within group(order by vl)over(partition by projectid) as MDN --取中位数 - from ( - select projectid, PriceCase2_ToAI_Pst, PriceCase2_ToLst_Pst, PriceCase2AdjPst - from #DWA_PROJECTBASEPRICE_IMDT_STEP_1 where PriceUnitAdj is not null - ) as t unpivot(vl for tp in (PriceCase2_ToAI_Pst, PriceCase2_ToLst_Pst, PriceCase2AdjPst)) as up - )tt group by projectid -)b ON a.projectid = b.projectid; +FROM ( + SELECT ProjectID, VOPPBT, + AVG(Vlu) as Vlu_4, + SUM(CASE WHEN Vlu>=0 THEN Vlu ELSE 0 END)/3 as Vlu_3, SUM(CASE WHEN Vlu<0 THEN Vlu ELSE 0 END)/3 as Vlu_3_, + SUM(CASE WHEN Vlu>=0 THEN Vlu ELSE 0 END)/2 as Vlu_2, SUM(CASE WHEN Vlu<0 THEN Vlu ELSE 0 END)/2 as Vlu_2_, + SUM(CASE WHEN Vlu>=0 THEN Vlu ELSE 0 END)/1 as Vlu_1, SUM(CASE WHEN Vlu<0 THEN Vlu ELSE 0 END)/1 as Vlu_1_, + MIN(CASE WHEN Vlu>0 THEN Vlu END) as Mn, MAX(CASE WHEN Vlu<0 THEN Vlu END) as MX_, + COUNT(CASE WHEN Vlu>0 THEN Vlu END) AS SM, COUNT(CASE WHEN Vlu<0 THEN Vlu END) AS SM_ + FROM #TMP_STEP_2_UP + GROUP BY ProjectID, VOPPBT +) T + +DROP TABLE #TMP_STEP_2_UP; +DROP TABLE #TMP_STEP_2; + +--INSERT INTO #DWA_PROJECTBASEPRICE_IMDT_STEP_2 +--SELECT a.ProjectID, +-- CASE WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN 11 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN 12 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN 13 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN 14 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0) THEN 15 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN 16 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN 17 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN 18 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN 19 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN 21 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN 22 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN 23 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN 24 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0 +-- AND (PriceCase2_ToAI_0<>0 OR PriceCase2_ToLst_0<>0 OR PriceCase2Adj_0<>0)) THEN 25 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN 26 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN 27 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN 28 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN 29 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN 0 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN 32 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN 33 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN 34 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0) THEN 35 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN 36 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN 37 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN 38 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN 39 +-- END AS VOPPBT, +-- CASE WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN MIN --11 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN MDN*1.0/4 --12 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN MDN*1.0/4 --13 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN MDN*1.0/4 --14 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0) THEN 0 --15 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN 0 --16 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN MDN*1.0/4 --17 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN 0 --18 +-- WHEN (PriceCase2_ToAI_Pst>0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN MDN --19 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN MDN*1.0/4 --21 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN MDN*1.0/4 --22 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN 0 --23 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN 0 --24 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0 +-- AND (PriceCase2_ToAI_0<>0 OR PriceCase2_ToLst_0<>0 OR PriceCase2Adj_0<>0)) THEN 0 --25 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN MIN*1.0/3 --26 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN 0 --27 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN 0 --28 +-- WHEN (PriceCase2_ToAI_Pst=0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN MDN --29 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst>0) THEN 0 --31 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst=0) THEN 0 --32 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst>0 AND PriceCase2AdjPst<0) THEN MDN --33 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst>0) THEN 0 --34 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst=0) THEN 0 --35 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst=0 AND PriceCase2AdjPst<0) THEN MDN --36 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst>0) THEN MDN --37 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst=0) THEN MDN --38 +-- WHEN (PriceCase2_ToAI_Pst<0 AND PriceCase2_ToLst_Pst<0 AND PriceCase2AdjPst<0) THEN MDN --39 +-- END AS VOPPB +--FROM (SELECT projectid, ISNULL(PriceCase2_ToAI_Pst,0) PriceCase2_ToAI_Pst, +-- ISNULL(PriceCase2_ToLst_Pst,0) PriceCase2_ToLst_Pst, ISNULL(PriceCase2AdjPst,0) PriceCase2AdjPst, +-- PriceCase2_ToAI_0, PriceCase2_ToLst_0, PriceCase2Adj_0 +-- FROM #DWA_PROJECTBASEPRICE_IMDT_STEP_1 where PriceUnitAdj is not null) a +--LEFT JOIN ( +-- select projectid, min(vl) as MIN, avg(MDN) as MDN +-- from ( +-- select projectid, tp, vl, PERCENTILE_CONT(0.5) within group(order by vl)over(partition by projectid) as MDN --取中位数 +-- from ( +-- select projectid, PriceCase2_ToAI_Pst, PriceCase2_ToLst_Pst, PriceCase2AdjPst +-- from #DWA_PROJECTBASEPRICE_IMDT_STEP_1 where PriceUnitAdj is not null +-- ) as t unpivot(vl for tp in (PriceCase2_ToAI_Pst, PriceCase2_ToLst_Pst, PriceCase2AdjPst)) as up +-- )tt group by projectid +--)b ON a.projectid = b.projectid; ----第三步;计算绑定涨跌幅 -----2019.11.12规则新增:对于绑定没有推导出、且上周期有价格的小区,沿用上周期价格 @@ -458,9 +534,9 @@ FROM obpm_LianCheng_Data.dbo.TLK_小区信息管理 A left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 h on a.ITEM_PROPERTYLEVEL=h.ITEM_DICVALUE and h.ITEM_DICTYPE='物业档次' left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 g - on a.ITEM_RAPropertyType=g.ITEM_DICVALUE and g.ITEM_DICTYPE='居住物业类型' + on a.ITEM_RAPropertyType=g.ITEM_DICVALUE and g.ITEM_DICTYPE='物业类型' left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 i - on a.ITEM_RAType=g.ITEM_DICVALUE and i.ITEM_DICTYPE='小区类型' + on a.ITEM_RAType=i.ITEM_DICVALUE and i.ITEM_DICTYPE='小区类型' LEFT JOIN ODS_PROJECT_PRICE_INFO_#lastYearMonth# D ON A.ITEM_AIRAID = D.ProjectID where A.ITEM_PROJECTTYPE='1' and a.ITEM_ISBUILDINDEX='1' and D.Status=1; @@ -490,4 +566,4 @@ ON A.ProjectID = D.ProjectID; DROP TABLE #DWA_PROJECTBASEPRICE_IMDT_STEP_1 DROP TABLE #DWA_PROJECTBASEPRICE_IMDT_STEP_2 DROP TABLE #DWA_PROJECTBASEPRICE_IMDT_STEP_3 -DROP TABLE #DWA_PROJECTBASEPRICE_IMDT_STEP_4 +DROP TABLE #DWA_PROJECTBASEPRICE_IMDT_STEP_4 \ No newline at end of file diff --git a/ruoyi/src/main/resources/sql-template/update_sale_price.sql b/ruoyi/src/main/resources/sql-template/update_sale_price.sql new file mode 100644 index 000000000..56455a08f --- /dev/null +++ b/ruoyi/src/main/resources/sql-template/update_sale_price.sql @@ -0,0 +1,214 @@ + +truncate table ODS_PROJECT_PRICE_INFO_#yearMonth#; + +insert into ODS_PROJECT_PRICE_INFO_#yearMonth# + select ProjectID, 1 PriceType, BasePriceDft, MainPriceDft, AreaCoff, YearCoff, VOPPAT, VOPPA, '#priceDate#', PriceNote, '#priceDate#', 1, NULL ---注意:AdjEvd下期调整 + from DWA_PROJECTBASEPRICE_IMDT_#yearMonth# a + +--判断有无新增小区(根据当期、上期价格表和当期小区信息表分别判断) +select a.ProjectID, + case when b.ProjectID is null then 1 else 0 end as PriceTableAdd, + case when c.ProjectID is null then 1 else 0 end as PriceTableAdd_1, + case when d.ITEM_AIRAID is null then 1 else 0 end as InfoTableAdd +into #ProjectAdd +from DWA_PROJECTBASEPRICE_MANU_#yearMonth# a +left join ODS_PROJECT_PRICE_INFO_#yearMonth# b +on a.ProjectID = b.ProjectID and b.Status=1 +left join ODS_PROJECT_PRICE_INFO_#lastYearMonth# c +on a.ProjectID = c.ProjectID and c.Status=1 +left join obpm_LianCheng_Data.dbo.TLK_小区信息管理 d +on a.ProjectID = d.ITEM_AIRAID and d.ITEM_PROJECTTYPE='1' and d.ITEM_ISBUILDINDEX='1' +where b.ProjectID is null or c.ProjectID is null or d.ITEM_AIRAID is null; + +-------DWA_PROJECTBASEPRICE_MANU_201902记录有更新,触发下面流程 +-------价格表调整 +select a.ProjectID, a.IsIndxGen, a.IsPstCalc, a.StatusRun, a.ProjectType, a.ProjectTypeDtl, a.ProjectLevel, a.[Year], a.MainArea, a.AreaCoff, a.YearCoff, + a.BasePriceDft as BasePrice, a.BasePrice_1, a.PriceNote, a.VOPPAT, a.VOPPA, getdate() as ModifyDate, + case when b.ProjectID is not null and isnull(a.BasePriceDft, 0) <> isnull(b.BasePrice, 0) then 1 else 0 end as PriceChg, --指当期基价变化 + case when b.ProjectID is not null and isnull(a.priceNote, '') <> isnull(b.priceNote, '') then 1 else 0 end as PriceNoteChg, -- 指当期价格说明字段变化 + case when b.ProjectID is not null and isnull(a.AreaCoff,1) <> isnull(b.AreaCoff,1) then 1 else 0 end as AreaCoffChg, -- 指当期面积修正系数字段变化 + case when b.ProjectID is not null and isnull(a.YearCoff,1) <> isnull(b.YearCoff,1) then 1 else 0 end as YearCoffChg, -- 指当期年代修正系数字段变化 + case when b.ProjectID is not null and isnull(a.VOPPAT,'') <> isnull(b.VOPPAT,'') then 1 else 0 end as VOPPATChg, -- 指当期价格涨跌幅类型字段变化 + case when b.ProjectID is not null and isnull(a.VOPPA,0) <> isnull(b.VOPPA,0) then 1 else 0 end as VOPPAChg, -- 指当期价格涨跌幅字段变化 + case when c.ProjectID is not null then 1 else 0 end as Price_1Chg -- 指上期基价变化 +into #InfoChg +from DWA_PROJECTBASEPRICE_MANU_#yearMonth# a +left join ODS_PROJECT_PRICE_INFO_#yearMonth# b +on a.ProjectID = b.ProjectID and b.status=1 and ( + isnull(a.BasePriceDft, 0) <> isnull(b.BasePrice, 0) or + isnull(a.priceNote, '') <> isnull(b.priceNote, '') or + isnull(a.AreaCoff,1) <> isnull(b.AreaCoff,1) or + isnull(a.YearCoff,1) <> isnull(b.YearCoff,1) or + isnull(a.VOPPAT,'') <> isnull(b.VOPPAT,'') or + isnull(a.VOPPA,0) <> isnull(b.VOPPA,0)) +left join ODS_PROJECT_PRICE_INFO_#lastYearMonth# c +on a.ProjectID = c.ProjectID and isnull(a.BasePrice_1,0) <> isnull(c.BasePrice,0) and c.status=1 +where b.ProjectID is not null or c.ProjectID is not null; + +select a.ProjectID, 1 PriceType, b.BasePrice, + b.BasePrice*1.0*isnull(b.AreaCoff,1)*isnull(b.YearCoff,1) as MainPrice, + isnull(b.AreaCoff,1) as AreaCoff, isnull(b.YearCoff, 1) as YearCoff, + b.VOPPAT, b.VOPPA, a.PriceDate, b.PriceNote, b.ModifyDate, 1 as Status, + case when PriceChg=0 then '' else 'PriceChg|' end + case when PriceNoteChg=0 then '' else 'PriceNoteChg|' end + + case when AreaCoffChg=0 then '' else 'AreaCoffChg|' end + case when YearCoffChg=0 then '' else 'YearCoffChg|' end + + case when VOPPATChg=0 then '' else 'VOPPATChg|' end + case when VOPPAChg=0 then '' else 'VOPPAChg|' end as AdjEvd +into #InfoChgCurr +from ODS_PROJECT_PRICE_INFO_#yearMonth# a +inner join #InfoChg b +on a.ProjectID = b.ProjectID +where (b.PriceChg=1 or b.PriceNoteChg=1 or b.AreaCoffChg=1 or b.YearCoffChg=1 or b.VOPPATChg=1 or b.VOPPAChg=1) and a.status=1; + +update a +set a.Status = 0 +from ODS_PROJECT_PRICE_INFO_#yearMonth# a +left join #InfoChgCurr b +on a.ProjectID = b.ProjectID +where b.ProjectID is not null and a.status=1; + +insert into ODS_PROJECT_PRICE_INFO_#yearMonth# +select * from #InfoChgCurr; + +select a.ProjectID, 1 PriceType, b.BasePrice_1, b.BasePrice_1*1.0*isnull(a.AreaCoff,1)*isnull(a.YearCoff,1) as MainPrice, a.AreaCoff, a.YearCoff, + a.VOPPAT, a.VOPPA, a.PriceDate, b.PriceNote, b.ModifyDate, 1 as Status,'Price_1Chg|' as AdjEvd +into #InfoChgLst +from ODS_PROJECT_PRICE_INFO_#lastYearMonth# a +inner join #InfoChg b +on a.ProjectID = b.ProjectID +where b.Price_1Chg=1 and a.status=1; + +update a +set Status = 0 +from ODS_PROJECT_PRICE_INFO_#lastYearMonth# a +left join #InfoChgLst b +on a.ProjectID = b.ProjectID +where b.ProjectID is not null and a.status=1; + +insert into ODS_PROJECT_PRICE_INFO_#lastYearMonth# +select * from #InfoChgLst; + +--插入新增小区价格信息 +INSERT INTO ODS_PROJECT_PRICE_INFO_#yearMonth# +SELECT A.ProjectID, 1 AS PriceType, A.BasePriceDft, A.MainPriceDft, AreaCoff, YearCoff, VOPPAT, VOPPA, '#priceDate#' AS PriceDate, PriceNote, '#priceDate#' AS ModifyDate, 1 Status, 'NewAdded' AdjEvd +FROM DWA_PROJECTBASEPRICE_MANU_#yearMonth# A +INNER JOIN #ProjectAdd B +ON A.ProjectID = B.ProjectID AND B.PriceTableAdd = 1; + + +INSERT INTO ODS_PROJECT_PRICE_INFO_#lastYearMonth# +SELECT A.ProjectID, 1 AS PriceType, BasePrice_1, BasePrice_1*1.0*ISNULL(AreaCoff,1)*ISNULL(YearCoff,1) MainPrice, + AreaCoff, YearCoff, NULL VOPPAT, NULL VOPPA, '#lastPriceDate#' AS PriceDate, PriceNote, '#priceDate#' AS ModifyDate, 1 Status, 'NewAdded_1' AdjEvd +FROM DWA_PROJECTBASEPRICE_MANU_#yearMonth# A +INNER JOIN #ProjectAdd B +ON A.ProjectID = B.ProjectID AND B.PriceTableAdd_1 = 1; + +drop table #InfoChg; +drop table #InfoChgCurr; +drop table #InfoChgLst; +drop table #ProjectAdd; + +-- 上月 +update a +set a.ITEM_STANDARDPRICE = b.BasePrice,a.ITEM_MAINAREAPRICE=b.MainPrice +from obpm_LianCheng_Data.dbo.TLK_基价信息 a + join dbo.ODS_PROJECT_PRICE_INFO_#lastYearMonth# b + on a.ITEM_AIRAID = b.ProjectID +where b.Status = 1 + and a.ITEM_VALUEPOINT = '#lastPriceDate#' + and a.ITEM_PRICETYPE = '1' + and a.ITEM_PROJECTTYPE = '1' + and ( + a.ITEM_STANDARDPRICE <> b.BasePrice or + a.ITEM_MAINAREAPRICE <> b.MainPrice + ); +-- +insert into obpm_LianCheng_Data.dbo.TLK_基价信息 +( + ID + , LASTMODIFIED + , FORMNAME + , AUTHOR + , AUTHOR_DEPT_INDEX + , CREATED + , FORMID + , ISTMP + , VERSIONS + , APPLICATIONID + , LASTMODIFIER + , DOMAINID + , ITEM_PriceID + , ITEM_AIRAID + , ITEM_PROJECTTYPE + , ITEM_PRICETYPE + , ITEM_STANDARDPRICE + , ITEM_MAINAREAPRICE + , ITEM_VALUEPOINT + , ITEM_PRICEEXPLAIN + , ITEM_UPDATEPERSON + , ITEM_UPDATEDATE + , ITEM_PRICECHG +) +select newid() + , getdate() + , '物业信息管理/基价信息' + , 'amQRUkvYQAsAec1JGLp' + , 'amQRUkvYQAsAec1JGLp' + , getdate() + , 'ybte0OakLV17UzAyoVU' + , 0 + , 1 + , 'Ts7TykYmuEzzZgWhXHj' + , 'amQRUkvYQAsAec1JGLp' + , 'BclzHtmfLQoAA5ICTb5' + , newid() + , ProjectID + , 1 + , 1 + , BasePrice + , MainPrice + , '#priceDate#' + , PriceNote + , '李贺' + , getdate() + , VOPPA +from dbo.ODS_PROJECT_PRICE_INFO_#yearMonth# +where Status = 1; + +insert into obpm_LianCheng_Data.dbo.T_DOCUMENT +( + ID + , LASTMODIFIED + , FORMNAME + , AUTHOR + , AUTHOR_DEPT_INDEX + , CREATED + , FORMID + , ISTMP + , VERSIONS + , APPLICATIONID + , LASTMODIFIER + , DOMAINID + , AUDITORLIST + , COAUDITORLIST + , MAPPINGID +) +select a.ID + , a.LASTMODIFIED + , a.FORMNAME + , a.AUTHOR + , a.AUTHOR_DEPT_INDEX + , a.CREATED + , a.FORMID + , a.ISTMP + , a.VERSIONS + , a.APPLICATIONID + , a.LASTMODIFIER + , a.DOMAINID + , a.AUDITORLIST + , a.COAUDITORLIST + , a.id +from obpm_LianCheng_Data.dbo.TLK_基价信息 a + left join obpm_LianCheng_Data.dbo.T_DOCUMENT b + on a.ID = b.ID +where a.ITEM_VALUEPOINT = '#priceDate#' + and a.ITEM_PROJECTTYPE = '1' + and a.ITEM_PRICETYPE = '1'; \ No newline at end of file