diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceSaleClosingCaseMapper.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceSaleClosingCaseMapper.java index e606d27eb..d452c78d7 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceSaleClosingCaseMapper.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalResidenceSaleClosingCaseMapper.java @@ -18,6 +18,13 @@ public interface OriginalResidenceSaleClosingCaseMapper { */ int createTable(@Param("yearMonth") Integer yearMonth); + /** + * 原始成交案例 + * @param yearMonth + * @return + */ + int createClosingCaseRawTable(@Param("yearMonth") Integer yearMonth); + /** * 创建清洗完成之后的表ODS_HOUSINGCASELISTED_LJ_YYYYMM * @param 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 7c64f25b0..af4617d28 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 @@ -18,6 +18,15 @@ public interface OriginalResidenceSaleOpeningCaseMapper { */ int createTable(@Param("yearMonth") Integer yearMonth); + /** + * + * @param yearMonth + * @return + */ + int createOpeningCaseRawTable(@Param("yearMonth") Integer yearMonth); + + + /** * 创建清洗完成之后的表ODS_HOUSINGCASELISTED_LJ_YYYYMM * diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/sync/DownloadOriginalOfficeCaseMapper.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/sync/DownloadOriginalOfficeCaseMapper.java index 726645a2a..9a0a408b1 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/sync/DownloadOriginalOfficeCaseMapper.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/sync/DownloadOriginalOfficeCaseMapper.java @@ -6,7 +6,7 @@ import com.ruoyi.project.data.cases.domain.OriginalOfficeCase; import java.util.Date; import java.util.List; -@DS("test") +@DS("spider") public interface DownloadOriginalOfficeCaseMapper { /** * 下载案例 diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalResidenceSaleClosingCaseService.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalResidenceSaleClosingCaseService.java index 7f5c10a9a..8a99b1612 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalResidenceSaleClosingCaseService.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalResidenceSaleClosingCaseService.java @@ -1,5 +1,5 @@ package com.ruoyi.project.data.cases.service; public interface IOriginalResidenceSaleClosingCaseService { - void pullData(); + void clear(); } diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalResidenceSaleOpeningCaseService.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalResidenceSaleOpeningCaseService.java index 7965278b7..eeafbedb7 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalResidenceSaleOpeningCaseService.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalResidenceSaleOpeningCaseService.java @@ -1,5 +1,6 @@ package com.ruoyi.project.data.cases.service; public interface IOriginalResidenceSaleOpeningCaseService { - void pullData(); + + void clear(); } diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalOfficeCaseServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalOfficeCaseServiceImpl.java index 946659d7c..7f51f0696 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalOfficeCaseServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalOfficeCaseServiceImpl.java @@ -10,6 +10,7 @@ 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.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.util.Calendar; @@ -31,7 +32,7 @@ public class OriginalOfficeCaseServiceImpl implements IOriginalOfficeCaseService * 计算 */ @Override -// @Scheduled(cron = "") + @Scheduled(cron = "0 0 17 28 * ?") public void compute() { Date date = new Date(); Calendar calendar = Calendar.getInstance(); diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceRentClosingCaseServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceRentClosingCaseServiceImpl.java index b2f5c5848..eba54db21 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceRentClosingCaseServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/OriginalResidenceRentClosingCaseServiceImpl.java @@ -1,110 +1,111 @@ -package com.ruoyi.project.data.cases.service.impl; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.ruoyi.common.utils.LoadUtil; -import com.ruoyi.project.data.cases.domain.OriginalResidenceSaleClosingCase; -import com.ruoyi.project.data.cases.mapper.OriginalResidenceSaleClosingCaseMapper; -import com.ruoyi.project.data.cases.mapper.sync.DownloadOriginalResidenceSaleClosingCaseMapper; -import com.ruoyi.project.data.cases.service.IOriginalResidenceRentClosingCaseService; -import com.ruoyi.project.data.cases.service.IOriginalResidenceSaleClosingCaseService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -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.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -@Service -@DS("compute") -public class OriginalResidenceRentClosingCaseServiceImpl implements IOriginalResidenceRentClosingCaseService { - - private static Logger logger = LoggerFactory.getLogger(OriginalResidenceRentClosingCaseServiceImpl.class); - - @Autowired - private OriginalResidenceSaleClosingCaseMapper originalResidenceSaleClosingCaseMapper; - @Autowired - private DownloadOriginalResidenceSaleClosingCaseMapper downloadOriginalResidenceSaleClosingCaseMapper; - @Autowired - private NamedParameterJdbcTemplate namedParameterJdbcTemplate; - @Autowired - private JdbcTemplate jdbcTemplate; - - /** - * - */ - @Scheduled(cron = "0 0 5 9 * ?") - @Override - public void pullData() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - Integer targetTableRoute = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), - calendar.get(Calendar.MONTH))); - calendar.add(Calendar.MONTH, 1); - Integer computeTableRoute = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), - calendar.get(Calendar.MONTH) + 1)); - - prepare(computeTableRoute); - List<OriginalResidenceSaleClosingCase> list = - downloadOriginalResidenceSaleClosingCaseMapper.download(targetTableRoute); - list.parallelStream().forEach(originalResidenceSaleClosingCase -> { - originalResidenceSaleClosingCase.setCaseId(originalResidenceSaleClosingCase.generateCaseId()); - originalResidenceSaleClosingCase.setCleanPropertyType(originalResidenceSaleClosingCase.refinePropertyType()); -// originalResidenceSaleClosingCase.setCleanCurrentFloor(originalResidenceSaleClosingCase -// .refineCurrentFloor()); -// originalResidenceSaleClosingCase.setCleanBuildingAddress(originalResidenceSaleClosingCase -// .refineBuildingAddress()); - }); - running(computeTableRoute, list); - after(computeTableRoute); - } - - /** - * 准备工作 创建表 - * - * @param computeTableRoute - */ - public void prepare(Integer computeTableRoute) { - originalResidenceSaleClosingCaseMapper.createTable(computeTableRoute); - originalResidenceSaleClosingCaseMapper.createCleanTable(computeTableRoute); - } - - /** - * 批量入库 - * - * @param computeTableRoute - * @param list - */ - public void running(Integer computeTableRoute, List<OriginalResidenceSaleClosingCase> list) { - SqlParameterSource[] batchParams = SqlParameterSourceUtils.createBatch(list.toArray()); - int[] updateCounts = namedParameterJdbcTemplate.batchUpdate("insert into dbo" + - ".original_residence_sale_closing_case_" + computeTableRoute + "(case_id,case_county_name," + - "case_block_name,case_loopline_name,case_community_name,case_address,case_area," + - "case_unit_price,case_total_price,case_house_type,case_signing_date,case_register_date," + - "case_agency_name,case_agency_type,case_seller_type,case_buyer_type,case_birthday," + - "case_deal_type,clean_property_type,create_time) " + - "values (:caseId,:caseCountyName,:caseBlockName,:caseLoopName,:caseCommunityName," + - ":caseAddress,:caseArea,:caseUnitPrice,:caseTotalPrice,:caseHouseType,:caseSigningDate," + - ":caseRegisterDate,:agencyName,:agencyType,:sellerType,:buyerType,:birthday," + - ":cleanCaseType,:cleanPropertyType,GETDATE());", - batchParams); - } - - /** - * 匹配数据 - * - * @param yearMonth - */ - public void after(Integer yearMonth) { - // 清洗挂牌案例 - String rawSql = LoadUtil.loadContent("sql-template/clear_residence_sale_closing_case.sql"); - String sql = rawSql.replace("#yearMonth#", yearMonth.toString()); - jdbcTemplate.update(sql); - } -} +//package com.ruoyi.project.data.cases.service.impl; +// +//import com.baomidou.dynamic.datasource.annotation.DS; +//import com.ruoyi.common.utils.LoadUtil; +//import com.ruoyi.project.data.cases.domain.OriginalResidenceSaleClosingCase; +//import com.ruoyi.project.data.cases.mapper.OriginalResidenceSaleClosingCaseMapper; +//import com.ruoyi.project.data.cases.mapper.sync.DownloadOriginalResidenceSaleClosingCaseMapper; +//import com.ruoyi.project.data.cases.service.IOriginalResidenceRentClosingCaseService; +//import com.ruoyi.project.data.cases.service.IOriginalResidenceSaleClosingCaseService; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//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.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Service; +// +//import java.util.Calendar; +//import java.util.Date; +//import java.util.List; +// +//@Service +//@DS("compute") +//public class OriginalResidenceRentClosingCaseServiceImpl implements IOriginalResidenceRentClosingCaseService { +// +// private static Logger logger = LoggerFactory.getLogger(OriginalResidenceRentClosingCaseServiceImpl.class); +// +// @Autowired +// private OriginalResidenceSaleClosingCaseMapper originalResidenceSaleClosingCaseMapper; +// @Autowired +// private DownloadOriginalResidenceSaleClosingCaseMapper downloadOriginalResidenceSaleClosingCaseMapper; +// @Autowired +// private NamedParameterJdbcTemplate namedParameterJdbcTemplate; +// @Autowired +// private JdbcTemplate jdbcTemplate; +// +// /** +// * +// */ +// @Scheduled(cron = "0 0 5 9 * ?") +// @Override +// public void pullData() { +// Calendar calendar = Calendar.getInstance(); +// calendar.setTime(new Date()); +// Integer targetTableRoute = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), +// calendar.get(Calendar.MONTH))); +// calendar.add(Calendar.MONTH, 1); +// Integer computeTableRoute = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), +// calendar.get(Calendar.MONTH) + 1)); +// +// prepare(computeTableRoute); +// List<OriginalResidenceSaleClosingCase> list = +// downloadOriginalResidenceSaleClosingCaseMapper.download(targetTableRoute); +// list.parallelStream().forEach(originalResidenceSaleClosingCase -> { +// originalResidenceSaleClosingCase.setCaseId(originalResidenceSaleClosingCase.generateCaseId()); +//// originalResidenceSaleClosingCase.setCleanPropertyType(originalResidenceSaleClosingCase.refinePropertyType()); +//// originalResidenceSaleClosingCase.setCleanCurrentFloor(originalResidenceSaleClosingCase +//// .refineCurrentFloor()); +//// originalResidenceSaleClosingCase.setCleanBuildingAddress(originalResidenceSaleClosingCase +//// .refineBuildingAddress()); +// }); +// running(computeTableRoute, list); +//// after(computeTableRoute); +// } +// +// /** +// * 准备工作 创建表 +// * +// * @param computeTableRoute +// */ +// public void prepare(Integer computeTableRoute) { +// originalResidenceSaleClosingCaseMapper.createTable(computeTableRoute); +//// originalResidenceSaleClosingCaseMapper.createClosingCaseRawTable(computeTableRoute); +// originalResidenceSaleClosingCaseMapper.createCleanTable(computeTableRoute); +// } +// +// /** +// * 批量入库 +// * +// * @param computeTableRoute +// * @param list +// */ +// public void running(Integer computeTableRoute, List<OriginalResidenceSaleClosingCase> list) { +// SqlParameterSource[] batchParams = SqlParameterSourceUtils.createBatch(list.toArray()); +// int[] updateCounts = namedParameterJdbcTemplate.batchUpdate("insert into dbo" + +// ".original_residence_sale_closing_case_" + computeTableRoute + "(case_id,case_county_name," + +// "case_block_name,case_loopline_name,case_community_name,case_address,case_area," + +// "case_unit_price,case_total_price,case_house_type,case_signing_date,case_register_date," + +// "case_agency_name,case_agency_type,case_seller_type,case_buyer_type,case_birthday," + +// "case_deal_type,clean_property_type,create_time) " + +// "values (:caseId,:caseCountyName,:caseBlockName,:caseLoopName,:caseCommunityName," + +// ":caseAddress,:caseArea,:caseUnitPrice,:caseTotalPrice,:caseHouseType,:caseSigningDate," + +// ":caseRegisterDate,:agencyName,:agencyType,:sellerType,:buyerType,:birthday," + +// ":cleanCaseType,:cleanPropertyType,GETDATE());", +// batchParams); +// } +// +// /** +// * 匹配数据 +// * +// * @param yearMonth +// */ +// public void after(Integer yearMonth) { +// // 清洗挂牌案例 +// String rawSql = LoadUtil.loadContent("sql-template/clear_residence_sale_closing_case.sql"); +// String sql = rawSql.replace("#yearMonth#", yearMonth.toString()); +// jdbcTemplate.update(sql); +// } +//} 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 4ebe88ea3..7dd00e791 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 @@ -71,7 +71,6 @@ public class OriginalResidenceRentOpeningCaseServiceImpl implements IOriginalRes }); // 两种数据,分别插入不同的表当中 - running(computeTableRoute, list); after(computeTableRoute, lastYearMonth, valuePoint); } 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 8e08a0f99..93fc8ca1a 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 @@ -40,7 +40,7 @@ public class OriginalResidenceSaleClosingCaseServiceImpl implements IOriginalRes */ @Scheduled(cron = "0 0 5 9 * ?") @Override - public void pullData() { + public void clear() { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); Integer targetTableRoute = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), @@ -96,13 +96,14 @@ public class OriginalResidenceSaleClosingCaseServiceImpl implements IOriginalRes } /** - * 匹配数据 + * 清洗成交数据 * * @param yearMonth */ public void after(Integer yearMonth) { - // 清洗挂牌案例 - String rawSql = LoadUtil.loadContent("sql-template/clear_residence_sale_closing_case.sql"); + // sql-template/.sql +// String rawSql = LoadUtil.loadContent("sql-template/clear_residence_sale_closing_case.sql"); + String rawSql = LoadUtil.loadContent("sql-template/clear_sale_closing_case.sql"); String sql = rawSql.replace("#yearMonth#", yearMonth.toString()); jdbcTemplate.update(sql); } 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 ff6481191..b74452def 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 @@ -44,7 +44,7 @@ public class OriginalResidenceSaleOpeningCaseServiceImpl implements IOriginalRes */ @Scheduled(cron = "0 0 5 25 * ?") @Override - public void pullData() { + public void clear() { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); Integer syncTableRoute = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), @@ -56,16 +56,18 @@ 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; prepare(computeTableRoute, syncTableRoute); List<OriginalResidenceSaleOpeningCase> list = downloadOriginalResidenceSaleOpeningCaseMapper.download(); list.parallelStream().forEach(originalResidenceOpeningCase -> { - originalResidenceOpeningCase.clear(); - originalResidenceOpeningCase.setYearMonth(syncTableRoute); - syncOriginalResidenceSaleOpeningCaseMapper.insert(originalResidenceOpeningCase); +// originalResidenceOpeningCase.clear(); +// originalResidenceOpeningCase.setYearMonth(syncTableRoute); +// syncOriginalResidenceSaleOpeningCaseMapper.insert(originalResidenceOpeningCase); }); running(computeTableRoute, list); - after(computeTableRoute, lastYearMonth, valuePoint); + after(computeTableRoute, lastYearMonth); } /** @@ -75,13 +77,13 @@ public class OriginalResidenceSaleOpeningCaseServiceImpl implements IOriginalRes * @param syncTableRoute */ public void prepare(Integer computeTableRoute, Integer syncTableRoute) { - originalResidenceSaleOpeningCaseMapper.createTable(computeTableRoute); + originalResidenceSaleOpeningCaseMapper.createOpeningCaseRawTable(computeTableRoute); originalResidenceSaleOpeningCaseMapper.createCleanTable(computeTableRoute); originalResidenceSaleOpeningCaseMapper.createAssembleTable(computeTableRoute); originalResidenceSaleOpeningCaseMapper.createComputePriceTable(computeTableRoute); originalResidenceSaleOpeningCaseMapper.createArtificialPriceTable(computeTableRoute); - syncOriginalResidenceSaleOpeningCaseMapper.createTable(syncTableRoute); +// syncOriginalResidenceSaleOpeningCaseMapper.createTable(syncTableRoute); } /** @@ -93,22 +95,14 @@ public class OriginalResidenceSaleOpeningCaseServiceImpl implements IOriginalRes public void running(Integer computeTableRoute, List<OriginalResidenceSaleOpeningCase> list) { SqlParameterSource[] batchParams = SqlParameterSourceUtils.createBatch(list.toArray()); int[] updateCounts = namedParameterJdbcTemplate.batchUpdate("insert into dbo" + - ".original_residence_sale_opening_case_" + computeTableRoute + "(case_id, case_lianjia_id, " + - "case_lianjia_community_id, case_title, clean_property_type, case_apartment_layout, " + - "case_house_structure, case_area, case_underground_area, case_toward, clean_toward, " + - "case_storey, clean_total_floor, clean_current_floor_desc, case_elevator, clean_elevator, " + - "case_tihu, case_decoration, clean_decoration, case_year, clean_year, case_address, " + - "case_price, clean_unit_price, clean_total_price, case_community_name, case_visited_num, " + - "case_visited_num_15, case_visited_num_30, case_latest_deal_date, case_latest_visited_date, " + - "case_first_visited_date, case_url, case_community_url, case_get_date, case_provider, " + - "create_time) values (:newCaseId,:caseLianJiaId,:caseLianJiaCommunityId,:caseTitle," + - ":cleanPropertyType," + - ":caseApartmentLayout,:caseHouseStructure,:caseArea,:caseUndergroundArea,:caseToward," + - ":cleanToward,:caseStorey,:cleanTotalFloor,:cleanCurrentFloorDesc,:caseElevator," + - ":cleanElevator,:caseTiHu,:caseDecoration,:cleanDecoration,:caseYear,:cleanYear,:caseAddress," + - ":casePrice,:cleanUnitPrice,:cleanTotalPrice,:caseCommunityName,:caseVisitedNum," + - ":caseVisitedNum15,:caseVisitedNum30,NULL,:caseLatestVisitTime,:caseFirstVisitTime,:caseUrl," + - ":caseCommunityUrl,:caseGetDate,:caseProvider,GETDATE());", + ".ODS_HOUSINGCASELISTED_LJ_" + computeTableRoute + "_RAW(case_id, llid, lcid, Name, " + + "Roomtype, Area, Towards, Storey, Lastdeal, Condoelev, Decoration, Year, Address, Price, " + + "Cname, Visited_Num, First_Visit_Time, Visited_Num_15, Visited_Num_30, Url, Curl, CurlDate) " + + "values (:newCaseId,:caseLianJiaId,:caseLianJiaCommunityId,:caseTitle," + + ":caseApartmentLayout,:caseArea,:caseToward,:caseStorey,:caseLastDeal,:caseElevator" + + ",:caseDecoration,:caseYear,:caseAddress,:casePrice,:caseCommunityName,:caseVisitedNum," + + ":caseFirstVisitTime,:caseVisitedNum15,:caseVisitedNum30,:caseUrl,:caseCommunityUrl," + + ":caseGetDate);", batchParams); } @@ -118,21 +112,20 @@ public class OriginalResidenceSaleOpeningCaseServiceImpl implements IOriginalRes * * @param yearMonth * @param lastYearMonth - * @param valuePoint */ - public void after(Integer yearMonth, Integer lastYearMonth, Date valuePoint) { + public void after(Integer yearMonth, Integer lastYearMonth) { // 清洗挂牌案例 - String rawSql = LoadUtil.loadContent("sql-template/clear_residence_sale_opening_case.sql"); + + String rawSql = LoadUtil.loadContent("sql-template/clear_sale_opening_case.sql"); +// String rawSql = LoadUtil.loadContent("sql-template/clear_residence_sale_opening_case.sql"); String sql = rawSql.replace("#yearMonth#", yearMonth.toString()) .replace("#lastYearMonth#", lastYearMonth.toString()); jdbcTemplate.update(sql); // 作价 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - rawSql = LoadUtil.loadContent("sql-template/compute_residence_sale_base_price.sql"); + rawSql = LoadUtil.loadContent("sql-template/compute_sale_price.sql"); sql = rawSql.replace("#yearMonth#", yearMonth.toString()) - .replace("#lastYearMonth#", lastYearMonth.toString()) - .replace("#valuePoint#", simpleDateFormat.format(valuePoint)); + .replace("#lastYearMonth#", lastYearMonth.toString()); jdbcTemplate.update(sql); logger.debug("#作价完成#"); diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/UltimateOfficeBasePriceServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/UltimateOfficeBasePriceServiceImpl.java index 937455725..78471048d 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/UltimateOfficeBasePriceServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/price/service/impl/UltimateOfficeBasePriceServiceImpl.java @@ -94,10 +94,6 @@ public class UltimateOfficeBasePriceServiceImpl implements IUltimateOfficeBasePr officeBasePriceUltimateMapper.insertArtificialOfficeBasePrice(inputModel); }); -// RestTemplate restTemplate = new RestTemplate(); -// String url = String.format(uvConfig.getAitificialOfficeBasePriceUrl(), yearMonth, lastYearMonth); -// UVResponse<Integer> affectCount = restTemplate.getForObject(url, UVResponse.class); - String rawSql = LoadUtil.loadContent("sql-template/update_office_price.sql"); Calendar calendar = Calendar.getInstance(); int year = yearMonth / 100; @@ -114,10 +110,6 @@ public class UltimateOfficeBasePriceServiceImpl implements IUltimateOfficeBasePr .replace("#lastMonth#", simpleDateFormat.format(lastMonth)); jdbcTemplate.update(sql); -// String rawSql = -// String sql = rawSql.replace("#yearMonth#", yearMonth.toString()); -// jdbcTemplate.execute(sql); - successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条"); return successMsg.toString(); } diff --git a/ruoyi/src/main/resources/application-uat.yml b/ruoyi/src/main/resources/application-uat.yml new file mode 100644 index 000000000..be102b0f2 --- /dev/null +++ b/ruoyi/src/main/resources/application-uat.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: /var/log/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_test + 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/mybatis/data/DownloadOriginalResidenceSaleOpeningCaseMapper.xml b/ruoyi/src/main/resources/mybatis/data/DownloadOriginalResidenceSaleOpeningCaseMapper.xml index ee95f94c3..1a74bc0b0 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 llid + select top 100 llid , lcid , name , type diff --git a/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleClosingCaseMapper.xml b/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleClosingCaseMapper.xml index 32881e467..e392ec8a2 100644 --- a/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleClosingCaseMapper.xml +++ b/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleClosingCaseMapper.xml @@ -3,6 +3,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.project.data.cases.mapper.OriginalResidenceSaleClosingCaseMapper"> + + <update id="createRawClosingCaseTable"> + <bind name="targetTableName" value="'dbo.二手房成交数据' + yearMonth" /> + IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL + drop table ${targetTableName}; + + create table ${targetTableName} + ( + case_id uniqueidentifier not null primary key, + 区域 varchar (255) NULL, + 板块 varchar (255) NULL, + 环线 varchar (255) NULL, + 小区名称 varchar (255) NULL, + 房屋地址 varchar (255) NULL, + 面积 float NULL, + 房屋类型 varchar (255) NULL, + 总价 float NULL, + 单价 float NULL, + 登记日期 varchar (255) NULL, + 签约日期 varchar (255) NULL, + 中介公司 varchar (255) NULL, + 中介类型 varchar (255) NULL, + 卖家类型 float NULL, + 买家类型 varchar (5) NULL, + 出生年月日 varchar (5) NULL + ) + </update> + <!-- 外部数据重复问题 --> <update id="createTable"> <bind name="targetTableName" value="'dbo.original_residence_sale_closing_case_' + yearMonth"/> @@ -11,7 +39,7 @@ CREATE TABLE ${targetTableName} ( - id bigint identity (1,1) not null primary key, + id int identity(1,1) not null, case_id varchar(32) not null, case_county_name nvarchar(20) null, case_block_name nvarchar(20) null, @@ -55,7 +83,7 @@ CREATE TABLE ${targetTableName} ( - SID int NOT NULL IDENTITY(1, 1) , + id int identity(1,1) not null primary key, case_id varchar(32) not null, ProjectID bigint NULL, BuildingID bigint NULL, diff --git a/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml b/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml index 8351a6d7e..617f1b83b 100644 --- a/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml +++ b/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml @@ -4,6 +4,40 @@ "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'" /> + IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL + 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 + ); + </update> + + + <update id="createTable"> <bind name="targetTableName" value="'dbo.original_residence_sale_opening_case_' + yearMonth" /> IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL diff --git a/ruoyi/src/main/resources/sql-template/clear_sale_closing_case.sql b/ruoyi/src/main/resources/sql-template/clear_sale_closing_case.sql new file mode 100644 index 000000000..338bd9262 --- /dev/null +++ b/ruoyi/src/main/resources/sql-template/clear_sale_closing_case.sql @@ -0,0 +1,127 @@ +--二手房成交记录处理 +select t.*, left(addr_floornum,charindex('|', addr_floornum, 1)-1) as 楼栋地址, + substring(addr_floornum, charindex('|', addr_floornum, 1)+1, len(addr_floornum)-charindex('|', addr_floornum, 1)) as "所在层" +into #temp +from ( + select case_id + ,case_county_name + ,case_block_name + ,case_loopline_name + ,case_community_name + ,case_address + ,case_area + ,case_unit_price + ,case_total_price + ,case_house_type + ,case_signing_date + ,case_register_date + ,case_agency_name + ,case_agency_type + ,case_seller_type + ,case_buyer_type + ,case_birthday + , dbo.remove_last_numbers(case_address) as addr_floornum + from original_residence_sale_closing_case_#yearMonth# +) t; + +update #temp set case_county_name=case_county_name+'区'; +update #temp set case_county_name='浦东新区' where case_county_name='浦东区'; + +--成交插入到临时表 #result +select a.*, b.楼栋ID, b.小区ID +into #result +from #temp a +left join ( + select row_number()over(partition by 区县, 地址 order by newid()) sq, 楼栋ID, 小区ID, 区县, 地址 from obpm_LianCheng_Data.dbo.AI单套地址20190508 +) b +on a.case_county_name = b.区县 and a.楼栋地址 = b.地址 and b.sq=1; + +--添加物业类型等字段 +alter table #result +add 年月 varchar(16), 物业类型 varchar(16); + +update #result +set 年月= left(case_signing_date,7), + 物业类型 = case when case_house_type not in ('办公楼','商铺','未知','其它','工厂','车库') then '居住' + when case_house_type in ('办公','办公楼','写字楼') then '办公' + when case_house_type in ('商铺','商店','商铺') then '商业' + else '其他' end; + + +select +case_id +,left(case_county_name,2) case_county_name +,case_block_name +,case_loopline_name +,case_community_name +,case_address +,case_area as Area +,case_unit_price +,case_total_price as PriceTotal +,case_house_type as ProjectType +,case_signing_date as DateContract +,case_register_date +,case_agency_name +,case_agency_type +,case_seller_type as IsAgency +,case_buyer_type +,case_birthday +,addr_floornum +,楼栋地址 +, 所在层 as UpperFloorNum +, cast(convert(decimal(8,0),楼栋ID) as bigint) as BuildingID +, cast(convert(decimal(8,0),小区ID) as bigint) as ProjectID +, 年月 +, 物业类型 +into #tmp +from #result +where case_area <> 0; + +insert into dbo.ODS_HOUSINGCASE_DEAL_#yearMonth# + (case_id + ,ProjectID + ,BuildingID + ,Area + ,UpperFloorSum + ,UpperFloorNum + ,AreaCoff + ,FloorCoff + ,BuildingCoff + ,PriceTotal + ,PriceUnit + ,PriceUnitAdj + ,DateContract) +select a.case_id + , a.ProjectID + , a.BuildingID + , a.Area + , b.地上层数 as UpperFloorSum + , a.UpperFloorNum + , d.CoefficientA * a.Area + d.CoefficientB as AreaCoff + , 1 as FloorCoff + , e.Coefficient as BuildingCoff + , a.PriceTotal + , a.PriceTotal * 1.0 / a.Area as PriceUnit + , a.PriceTotal * 1.0 / a.Area / isnull(d.CoefficientA * a.Area + d.CoefficientB, 1) / isnull(e.Coefficient, 1) as PriceUnitAdj + , DateContract +from #tmp a + left join obpm_LianCheng_Data.dbo.AI楼栋数据_610 b + on a.ProjectID = b.AI小区ID + and a.BuildingID = b.AI楼栋ID + left join obpm_LianCheng_Data.dbo.TLK_小区信息管理 c + on a.ProjectID = c.ITEM_AIRAID and c.ITEM_ISBUILDINDEX='1' + left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 f on c.ITEM_PROPERTYLEVEL = f.ITEM_DICVALUE and f.ITEM_DICTYPE='物业档次' + left join + (select Coefficient,CoefficientA,CoefficientB,LowerKey,UpperKey,ProjectLevel from obpm_LianCheng_Data.dbo.DIM_PARAMETERS where CoffType = '面积修正(链家挂牌)' and ProjectType = '公寓') d --面积修正 + on f.ITEM_DICTEXT = d.ProjectLevel + and + ( + a.Area > d.LowerKey + and a.Area <= d.UpperKey + ) + left join obpm_LianCheng_Data.dbo.DIM_BUILDING_COFF e + on a.BuildingID = e.BuildingID; + + +drop table #temp; +drop table #result; \ No newline at end of file diff --git a/ruoyi/src/main/resources/sql-template/clear_sale_opening_case.sql b/ruoyi/src/main/resources/sql-template/clear_sale_opening_case.sql new file mode 100644 index 000000000..96e822031 --- /dev/null +++ b/ruoyi/src/main/resources/sql-template/clear_sale_opening_case.sql @@ -0,0 +1,229 @@ +----建临时表#HousingCaseListAdj, 插入挂牌清洗数据 +------ 20200312BUG修复:朝向处理规则优化 +create table #HousingCaseListAdj +( + case_id varchar(32) not null + , HouseholdsID_LJ bigint + , ProjectID_LJ bigint + , Roomtype nvarchar(64) + , Area decimal(18, 2) + , Towards nvarchar(64) + , UpperFloorSum nvarchar(32) + , UpperFloorNum nvarchar(32) + , Elevator tinyint + , Decoration nvarchar(64) + , [Year] int + , PriceTotal decimal(18, 2) + , PriceUnit decimal(18, 2) not null + , Visited_Num int + , First_Visit_Time date + , Visited_Num_15 int + , Visited_Num_30 int +); + +DECLARE @llid bigint, + @lcid bigint, + @roomtype nvarchar(50), + @area decimal(28, 10), + @towards nvarchar(50), + @storey nvarchar(50), + @condoElev nvarchar(50), + @decoration nvarchar(50), + @yr int, + @price DECIMAL(18,8), + @priceunit DECIMAL(18,8), + @visited_num int, + @first_visit_time date, + @visited_num_15 int, + @visited_num_30 int, + @toward nvarchar(50), + @curr int, + @prev int, + @trimstr nvarchar(32), + @flag int, + @UpperFloorSum NVARCHAR(32), + @UpperFloorNum NVARCHAR(32), + @Elevator tinyint, + @case_id varchar(32) + +DECLARE Record2Insert CURSOR + FOR select case_id + , llid + , lcid + , roomtype + , area + , towards + , storey + , condoElev + , decoration + , [year] + , price + , visited_num + , first_visit_time + , visited_num_15 + , visited_num_30 +from ODS_HOUSINGCASELISTED_LJ_#yearMonth#_Raw; +OPEN Record2Insert +FETCH NEXT FROM Record2Insert into @case_id, @llid , @lcid , @roomtype , @area , @towards , @storey , @condoElev , @decoration , @yr, @price , @visited_num , + @first_visit_time , @visited_num_15 , @visited_num_30 +SET NOCOUNT ON --忽略行数显示 +WHILE @@FETCH_STATUS=0 + BEGIN + BEGIN + --朝向处理(按照"东南, 西南, 西北, 东北, 南, 东, 西, 北"的优先级取朝向的值。注:表的一列赋值给单变量,只有最后赋的值有效) + set @toward = NULL + select @toward = StringSub from StringSplit(@towards, ' ') order by charindex(StringSub, '北, 西, 东, 南, 东北, 西北, 西南, 东南') + --楼层处理 + set @UpperFloorNum = case when substring(@storey,1,3)='高楼层' then '高区' + when substring(@storey,1,3)='中楼层' then '中区' + when substring(@storey,1,3)='低楼层' then '低区' end + set @UpperFloorSum = substring(@storey,charindex('共',@storey,1)+1,charindex('层',@storey,charindex('共',@storey,1))-charindex('共',@storey,1)-1) + --电梯处理 + set @Elevator = case when @condoElev='有' then 1 + when @condoElev='无' then 0 end + --装修处理 + set @decoration = case when @decoration <> '其他' then @decoration end + --单价 + set @priceunit = @price*1.0/isnull(@area,1) + --插入数据 + insert into #HousingCaseListAdj values(@case_id, @llid, @lcid, @roomtype, @area, @toward, @UpperFloorSum, @UpperFloorNum, @Elevator, @decoration, @yr, 10000*@price, 10000*@priceunit, + @visited_num, @first_visit_time, @visited_num_15, @visited_num_30) + END + FETCH NEXT FROM Record2Insert INTO @case_id, @llid , @lcid , @roomtype , @area , @towards , @storey , @condoElev , @decoration , @yr, @price , @visited_num , + @first_visit_time , @visited_num_15 , @visited_num_30 + END +CLOSE Record2Insert +DEALLOCATE Record2Insert +SET NOCOUNT OFF + + +----案例标准化 +create table #HousingCaseListSTD +( + HouseholdsID_LJ bigint + , ProjectID_LJ bigint + , ProjectID bigint + , BuildingID bigint + , AreaCoff decimal(7, 4) + , TowardsCoff decimal(7, 4) + , FloorCoff decimal(7, 4) + , DecorationRng int + , YearCoff decimal(7, 4) + , BuildingCoff decimal(7, 4) + , PriceUnit decimal(18, 2) not null + , PriceUnitAdj decimal(18, 2) not null +); + +INSERT INTO #HousingCaseListSTD +SELECT A.HouseholdsID_LJ, A.ProjectID_LJ, B.ProjectID, B.BuildingID, + D.CoefficientA*A.Area+D.CoefficientB as AreaCoff, E.Coefficient as TowardsCoff, F.Coefficient as FloorCoff, + G.Coefficient as DecorationRng, H.Coefficient as YearCoff, I.Coefficient as BuildingCoff, A.PriceUnit, + (A.PriceUnit-isnull(G.Coefficient,0))*1.0/isnull(D.CoefficientA*A.Area+D.CoefficientB,1)/isnull(E.Coefficient,1)/isnull(F.Coefficient,1)/isnull(H.Coefficient,1)/isnull(I.Coefficient,1) +FROM #HousingCaseListAdj A +LEFT JOIN obpm_LianCheng_Data.dbo.DIM_PROJECTID_LJ2AI B +ON A.ProjectID_LJ = B.ProjectID_LJ +left join (select * from uv_compute.dbo.ODS_PROJECT_INFO_202004 WHERE EffDate <= GETDATE() and ExpirDate > GETDATE() ) C +on B.ProjectID = C.ProjectID +LEFT JOIN (SELECT * FROM obpm_LianCheng_Data.dbo.DIM_PARAMETERS WHERE CoffType='面积修正(链家挂牌)') D --面积修正 +on D.ProjectType = '公寓' and C.ProjectLevel = D.ProjectLevel and ( A.Area > D.LowerKey and A.Area <= D.UpperKey) +LEFT JOIN (SELECT * FROM obpm_LianCheng_Data.dbo.DIM_PARAMETERS WHERE CoffType='朝向(链家挂牌)') E --朝向修正 +on E.ProjectType = '公寓' and A.Towards = E.SingleKey +LEFT JOIN (SELECT * FROM obpm_LianCheng_Data.dbo.DIM_PARAMETERS WHERE CoffType='楼层(链家挂牌)') F --楼层修正 +on F.ProjectType = '公寓' and isnull(A.Elevator,99)=isnull(F.Elevator,99) and A.UpperFloorSum = F.UpperKey and A.UpperFloorNum = F.LowerKey +LEFT JOIN (SELECT * FROM obpm_LianCheng_Data.dbo.DIM_PARAMETERS WHERE CoffType='室内装修(链家挂牌)') G --装修修正 +on G.ProjectType = '公寓' and A.Decoration = G.SingleKey +LEFT JOIN (SELECT * FROM obpm_LianCheng_Data.dbo.DIM_PARAMETERS WHERE CoffType='竣工日期') H --竣工日期修正 +on H.ProjectType = '公寓' and A.[Year]=H.SingleKey +LEFT JOIN obpm_LianCheng_Data.dbo.DIM_BUILDING_COFF I +on B.BuildingID = I.BuildingID; + + +--当月拍照表调价信息 +--- 20200205BUG修复:AdjustedValue、AdjustedPst 中当Status=1时,值不为0的问题 + select + a.HouseholdsID_LJ, + case when b.Status is null then 3 + when a.PriceTotal=b.PriceTotal then 1 + else 2 end as Status, + case when a.PriceTotal=b.PriceTotal then 0 -- 20200205修改 + when b.Status is null then 0 + else a.PriceTotal-b.PriceTotal end AdjustedValue, + case when a.PriceTotal=b.PriceTotal then 0 -- 20200205修改 + when b.Status is null then 0 + else (a.PriceTotal-b.PriceTotal)*1.0/b.PriceTotal end AdjustedPst, + case when a.PriceTotal=b.PriceTotal then b.AdjustedCumValue + when b.Status is null then 0 + else b.AdjustedCumValue + a.PriceTotal-b.PriceTotal end AdjustedCumValue, + case when a.PriceTotal=b.PriceTotal then b.AdjustedCumPst + when b.Status is null then 0 + else (b.AdjustedCumValue + a.PriceTotal-b.PriceTotal)*1.0/b.PriceTotalIn end AdjustedCumPst, + case when a.PriceTotal=b.PriceTotal then b.AdjustedCumValueAbs + when b.Status is null then 0 + else b.AdjustedCumValueAbs + abs(a.PriceTotal-b.PriceTotal) end AdjustedCumValueAbs, + case when a.PriceTotal=b.PriceTotal then b.AdjustedCumPstAbs + when b.Status is null then 0 + else (b.AdjustedCumValueAbs+ abs(a.PriceTotal-b.PriceTotal))*1.0/b.PriceTotalIn end AdjustedCumPstAbs, + case when a.PriceTotal=b.PriceTotal then b.AdjustedCumPstAbs + when b.Status is null then 0 + else b.AdjustedCumNum+1 end AdjustedCumNum, + case when b.Status is null then a.PriceTotal else b.PriceTotalIn end PriceTotalIn, + NULL as PriceTotalOut, + case when b.Status is null then getdate() else b.PriceDateIn end PriceDateIn, + cast(NULL as date) as PriceDateOut + into #HousingCaseListStatic + from #HousingCaseListAdj a + left join Ods_HousingCaseListed_LJ_#lastYearMonth# b + on a.HouseholdsID_LJ = b.HouseholdsID_LJ; + +--插入当月未下架(活跃)案例数据 +insert into Ods_HousingCaseListed_LJ_#yearMonth# +select a.case_id,a.HouseholdsID_LJ, a.ProjectID_LJ, d.ProjectID, a.Roomtype, a.Area, a.Towards, a.UpperFloorSum, a.UpperFloorNum, a.Elevator, a.Decoration, a.[Year], + b.AreaCoff, b.TowardsCoff, b.FloorCoff, b.DecorationRng, b.YearCoff, b.BuildingCoff, a.PriceTotal, a.PriceUnit, b.PriceUnitAdj, + a.Visited_Num, a.First_Visit_Time, a.Visited_Num_15, a.Visited_Num_30, + c.Status, c.AdjustedValue, c.AdjustedPst, c.AdjustedCumValue, c.AdjustedCumPst, c.AdjustedCumValueAbs, + c.AdjustedCumPstAbs, c.AdjustedCumNum, c.PriceTotalIn, c.PriceTotalOut, c.PriceDateIn, c.PriceDateOut +from #HousingCaseListAdj a +left join #HousingCaseListSTD b +on a.HouseholdsID_LJ = b.HouseholdsID_LJ +left join #HousingCaseListStatic c +on a.HouseholdsID_LJ = c.HouseholdsID_LJ +left join obpm_LianCheng_Data.dbo.DIM_PROJECTID_LJ2AI d +on a.ProjectID_LJ = d.ProjectID_LJ; + + +/*插入当月下架记录*/ +select a.case_id, a.HouseholdsID_LJ, a.ProjectID_LJ, a.ProjectID, a.Roomtype, a.Area, a.Towards, a.UpperFloorSum, a.UpperFloorNum, a.Elevator, a.Decoration, a.[Year], + a.AreaCoff, a.TowardsCoff, a.FloorCoff, a.DecorationRng, a.YearCoff, a.BuildingCoff, a.PriceTotal, a.PriceUnit, a.PriceUnitAdj, + a.Visited_Num, a.First_Visit_Time, a.Visited_Num_15, a.Visited_Num_30, + 4 as Status, a.AdjustedValue, a.AdjustedPst, a.AdjustedCumValue, a.AdjustedCumPst, + a.AdjustedCumValueAbs, a.AdjustedCumPstAbs, a.AdjustedCumNum, a.PriceTotalIn, a.PriceTotal as PriceTotalOut, a.PriceDateIn, getdate() as PriceDateOut +into #TmpRecordAddCurr +from Ods_HousingCaseListed_LJ_#lastYearMonth# a +left join Ods_HousingCaseListed_LJ_#yearMonth# b +on a.HouseholdsID_LJ = b.HouseholdsID_LJ +where b.HouseholdsID_LJ is null and a.Status not in (4,5); + +insert into dbo.Ods_HousingCaseListed_LJ_#yearMonth# select * from #TmpRecordAddCurr; + + +/*插入历史下架记录*/ + +select a.case_id,a.HouseholdsID_LJ, a.ProjectID_LJ, a.ProjectID, a.Roomtype, a.Area, a.Towards, a.UpperFloorSum, a.UpperFloorNum, a.Elevator, a.Decoration, a.[Year], + a.AreaCoff, a.TowardsCoff, a.FloorCoff, a.DecorationRng, a.YearCoff, a.BuildingCoff, a.PriceTotal, a.PriceUnit, a.PriceUnitAdj, + a.Visited_Num, a.First_Visit_Time, a.Visited_Num_15, a.Visited_Num_30, 5 as Status, + a.AdjustedValue, a.AdjustedPst, a.AdjustedCumValue, a.AdjustedCumPst, + a.AdjustedCumValueAbs, a.AdjustedCumPstAbs, a.AdjustedCumNum, a.PriceTotalIn, a.PriceTotal as PriceTotalOut, a.PriceDateIn, a.PriceDateOut +into #TmpRecordAddHis +from Ods_HousingCaseListed_LJ_#lastYearMonth# a +left join Ods_HousingCaseListed_LJ_#yearMonth# b +on a.HouseholdsID_LJ = b.HouseholdsID_LJ +where b.HouseholdsID_LJ is null and a.Status in (4,5); + +insert into dbo.Ods_HousingCaseListed_LJ_#yearMonth# select * from #TmpRecordAddHis + + +drop table #HousingCaseListAdj +drop table #HousingCaseListSTD +drop table #HousingCaseListStatic +drop table #TmpRecordAddCurr +drop table #TmpRecordAddHis \ 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 new file mode 100644 index 000000000..7c81968ab --- /dev/null +++ b/ruoyi/src/main/resources/sql-template/compute_sale_price.sql @@ -0,0 +1,497 @@ +truncate table DW_HOUSINGCASE_COMM_#yearMonth# +truncate table DWA_PROJECTBASEPRICE_IMDT_#yearMonth# + +insert into DW_HOUSINGCASE_COMM_#yearMonth# +select + a.case_id + , a.HouseholdsID_LJ + , a.ProjectID_LJ + , c.ITEM_AIRAID + , c.ITEM_RANAME + , c.ITEM_RAADRESS + , f.ITEM_DICTEXT + , g.ITEM_DICTEXT + , h.ITEM_DICTEXT + , a.Roomtype + , a.Area + , a.Towards + , a.UpperFloorSum + , a.UpperFloorNum + , a.Elevator + , a.Decoration + , a.Year + , isnull(a.AreaCoff, 1) + , isnull(a.TowardsCoff, 1) + , isnull(a.FloorCoff, 1) + , isnull(a.DecorationRng, 0) + , isnull(a.YearCoff, 1) + , isnull(a.BuildingCoff, 1) + , d.BasePrice as BasePrice_1 + , a.PriceTotal + , a.PriceUnit + , a.PriceUnitAdj + , a.Visited_Num + , a.First_Visit_Time + , a.Visited_Num_15 + , a.Visited_Num_30 + , a.Status + , a.AdjustedValue + , a.AdjustedPst + , a.AdjustedCumValue + , a.AdjustedCumPst + , a.AdjustedCumValueAbs + , a.AdjustedCumPstAbs + , a.AdjustedCumNum + , a.PriceTotalIn + , a.PriceDateIn + , null + , NULL +from ODS_HOUSINGCASELISTED_LJ_#yearMonth# a + left join obpm_LianCheng_Data.dbo.DIM_PROJECTID_LJ2AI b + on a.ProjectID_LJ = b.ProjectID_LJ + left join obpm_LianCheng_Data.dbo.TLK_小区信息管理 c + on b.ProjectID = c.ITEM_AIRAID and c.ITEM_ISBUILDINDEX='1' and c.ITEM_RUNNINGSTATE=1 + and c.ITEM_PROJECTTYPE='1' + left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 f + on c.ITEM_DISTRICT1=f.ITEM_DICVALUE and f.ITEM_DICTYPE='区域' + left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 g + on c.ITEM_SECTOR121=g.ITEM_DICVALUE and g.ITEM_DICTYPE='板块' + left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 h + on c.ITEM_CIRCLEPOSITION=h.ITEM_DICVALUE and h.ITEM_DICTYPE='环线' + left join ODS_PROJECT_PRICE_INFO_#lastYearMonth# d + on b.ProjectID = d.ProjectID + and d.Status = 1 +where a.status not in ( 4, 5 ); + + +insert into DW_HOUSINGCASE_COMM_#yearMonth# +select + a.case_id + ,null + ,null + , a.ProjectID + , c.ITEM_RANAME + , c.ITEM_RAADRESS + , f.ITEM_DICTEXT + , g.ITEM_DICTEXT + , h.ITEM_DICTEXT + , convert(varchar, null) + , a.Area + , convert(varchar, null) + , a.UpperFloorSum + , a.UpperFloorNum + , convert(int, null) + , convert(varchar, null) + , convert(int, null) + , isnull(a.AreaCoff, 1) + , 1 + , isnull(a.FloorCoff, 1) + , 0 + , 1 + , isnull(a.BuildingCoff, 1) + , d.BasePrice as BasePrice_1 + , a.PriceTotal + , a.PriceUnit + , a.PriceUnitAdj + , 0 + , convert(date, null) + , 0 + , 0 + , convert(int, null) + , 0 + , 0 + , 0 + , 0 + , 0 + , 0 + , 0 + , 0 + , a.DateContract + , null + , NULL +from ODS_HOUSINGCASE_DEAL_#lastYearMonth# a + left join obpm_LianCheng_Data.dbo.TLK_小区信息管理 c + on a.ProjectID = c.ITEM_AIRAID and c.ITEM_ISBUILDINDEX='1' and c.ITEM_RUNNINGSTATE=1 and c.ITEM_PROJECTTYPE='1' + left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 f + on c.ITEM_DISTRICT1=f.ITEM_DICVALUE and f.ITEM_DICTYPE='区域' + left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 g + on c.ITEM_SECTOR121=g.ITEM_DICVALUE and g.ITEM_DICTYPE='板块' + left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 h + on c.ITEM_CIRCLEPOSITION=h.ITEM_DICVALUE and h.ITEM_DICTYPE='环线' + left join ODS_PROJECT_PRICE_INFO_#lastYearMonth# d + on a.ProjectID = d.ProjectID + and d.Status = 1; + + +---成交案例的HouseholdsID_LJ,在上期由0优化为NULL,因此RangeFlag类型需要修改 +update DW_HOUSINGCASE_COMM_#yearMonth# +set CaseType = case when HouseholdsID_LJ is null then 0 else 1 end, +RangeFlag = case when BasePrice_1 is null then 19 + when HouseholdsID_LJ is null and abs(PriceUnitAdj*1.0/BasePrice_1-1)<=0.1 then 10 + when HouseholdsID_LJ is not null and abs(PriceUnitAdj*1.0/BasePrice_1-1)<=0.06 then 10 + when abs(PriceUnitAdj*1.0/BasePrice_1-1)>0.5 then 17 + else 16 end; + +/******************************小区基价计算中间表***********************************/ +----第一步;根据小区做基础信息汇总汇总; +create table #DWA_PROJECTBASEPRICE_IMDT_STEP_1 +( + ProjectID bigint primary key + , ProjectName nvarchar(1024) + , ProjectAddr nvarchar(1024) + , County nvarchar(512) + , Block nvarchar(512) + , Loop nvarchar(512) + , IsIndxGen tinyint + , IsPstCalc tinyint + , StatusRun tinyint + , 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 + , PriceCase2_ToAI_0 decimal(18, 6) --PriceCase2_ToAI_Pst非空的案例数量 + , PriceCase2_ToLst_0 decimal(18, 6) --PriceCase2_ToLst_Pst非空的案例数量 + , PriceCase2Adj_0 decimal(18, 6) --PriceCase2AdjPst非空的案例数量 +); + + +---规则修改:链家1和链家2调价幅度,status in (1,2) 都纳入计算范围 +insert into #DWA_PROJECTBASEPRICE_IMDT_STEP_1 +select a.ITEM_AIRAID, a.ITEM_RANAME, a.ITEM_RAADRESS,f.ITEM_DICTEXT , g.ITEM_DICTEXT, h.ITEM_DICTEXT, a.ITEM_ISBUILDINDEX, a.ITEM_GAINCALCULATION, a.ITEM_RUNNINGSTATE, + d.BasePrice, b.PriceUnitAdj, b.Visited_Num, + b.First_Visit_Time, b.Visited_Num_15, b.Visited_Num_30, c.PriceDealMean_1, c.PriceDealMax_1, c.SumDeal_1, + b.PriceDealMean, b.PriceDealMax, b.SumDeal, b.PriceListedMin, b.PriceCase1_ToAI_Pst, b.PriceCase2_ToAI_Pst, + (PriceCase1 - PriceCase1_1)*1.0/PriceCase1_1 as PriceCase1_ToLst_Pst, + (PriceCase2 - PriceCase2_1)*1.0/PriceCase2_1 as PriceCase2_ToLst_Pst, + b.PriceCase1, b.PriceCase1AdjPst, b.SumCase1, b.PriceCase2, b.PriceCase2AdjPst, b.SumCase2, + b.PriceCase2_ToAI_0, + case when b.PriceCase2_ToAI_0<>0 and c.PriceCase2_1 is not null then PriceCase2_ToAI_0 + else 0 end as PriceCase2_ToLst_0, + b.PriceCase2Adj_0 +from obpm_LianCheng_Data.dbo.TLK_小区信息管理 a +left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 f + on a.ITEM_DISTRICT1=f.ITEM_DICVALUE and f.ITEM_DICTYPE='区域' +left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 g + on a.ITEM_SECTOR121=g.ITEM_DICVALUE and g.ITEM_DICTYPE='板块' +left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 h + on a.ITEM_CIRCLEPOSITION=h.ITEM_DICVALUE and h.ITEM_DICTYPE='环线' +left join ( + select ProjectID, avg(BasePrice_1) as BasePrice_1, avg(PriceUnitAdj) as PriceUnitAdj, avg(Visited_Num) as Visited_Num, + min(First_Visit_Time) as First_Visit_Time, avg(Visited_Num_15) Visited_Num_15, avg(Visited_Num_30) as Visited_Num_30, + avg(case when CaseType=0 then PriceUnitAdj end) as PriceDealMean, + max(case when CaseType=0 then PriceUnitAdj end) as PriceDealMax, + count(case when CaseType=0 then 1 end) as SumDeal, + min(case when CaseType=1 then PriceUnitAdj end) as PriceListedMin, + + avg(case when RangeFlag<>19 then PriceUnitAdj end) as PriceCase1, + count(case when RangeFlag<>19 then 1 end) as SumCase1, + avg(case when RangeFlag<>19 then PriceUnitAdj end)*1.0/avg(BasePrice_1)-1 as PriceCase1_ToAI_Pst, + avg(case when RangeFlag<>19 and status in (1,2) then AdjustedPst end) as PriceCase1AdjPst, + avg(case when RangeFlag = 10 then PriceUnitAdj end) as PriceCase2, + count(case when RangeFlag = 10 then 1 end) as SumCase2, + avg(case when RangeFlag = 10 then PriceUnitAdj end)*1.0/avg(BasePrice_1)-1 as PriceCase2_ToAI_Pst, + avg(case when RangeFlag = 10 and status in (1,2) then AdjustedPst end) as PriceCase2AdjPst, + count(case when RangeFlag = 10 then 1 end) as PriceCase2_ToAI_0, + count(case when RangeFlag = 10 and status in (1,2) then 1 end) as PriceCase2Adj_0 + from DW_HOUSINGCASE_COMM_#yearMonth# group by ProjectID +) b on a.ITEM_AIRAID = b.ProjectID +left join ( + select ProjectID, avg(case when CaseType=0 then PriceUnitAdj end) as PriceDealMean_1, + max(case when CaseType=0 then PriceUnitAdj end) as PriceDealMax_1, + count(case when CaseType=0 then 1 end) as SumDeal_1, + avg(case when RangeFlag<>19 then PriceUnitAdj end) as PriceCase1_1, + avg(case when RangeFlag = 10 then PriceUnitAdj end) as PriceCase2_1 + from DW_HOUSINGCASE_COMM_#lastYearMonth# group by ProjectID +) c on a.ITEM_AIRAID = c.ProjectID +left join ODS_PROJECT_PRICE_INFO_#lastYearMonth# d on a.ITEM_AIRAID = d.ProjectID +where a.ITEM_RUNNINGSTATE=1 and a.ITEM_ISBUILDINDEX='1' and a.ITEM_PROJECTTYPE='1' and d.Status=1; + +----第二步;根据案例自动计算的小区涨跌幅 +create table #DWA_PROJECTBASEPRICE_IMDT_STEP_2 +( + ProjectID bigint primary key + , VOPPBT int --价格涨跌幅类型-调整前 + , VOPPB decimal(18, 6) --价格涨跌幅-调整前 +); + +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规则新增:对于绑定没有推导出、且上周期有价格的小区,沿用上周期价格 +create table #DWA_PROJECTBASEPRICE_IMDT_STEP_3 +( + ProjectID bigint primary key + , 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) + , Bind_Price_1_PType nvarchar(128) + , Bind_Price_1_PType_Pst decimal(18, 6) + , VOPPAT varchar(64) + , VOPPA decimal(18, 6) +); + + +SELECT A.ITEM_AIRAID as ProjectID, g.ITEM_DICTEXT as Block, f.ITEM_DICTEXT as County, h.ITEM_DICTEXT as ProjectLevel, A.item_ProjectTypeDtl as ProjectTypeDtl, A.item_BindClassID as BindClassID, B.ProjectID AS BindProjID, B.VOPPB AS Bind_Proj_Pst, + CASE WHEN C.ProjectID IS NOT NULL THEN C.VOPPBT + WHEN B.ProjectID IS NOT NULL AND D.BasePrice IS NOT NULL THEN '8505' END AS VOPPAT, + CASE WHEN C.ProjectID IS NOT NULL THEN C.VOPPB + WHEN B.ProjectID IS NOT NULL AND D.BasePrice IS NOT NULL THEN B.VOPPB END AS VOPPA, + D.BasePrice +INTO #TempBindProjID +FROM obpm_LianCheng_Data.dbo.TLK_小区信息管理 a +left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 f + on a.ITEM_DISTRICT1=f.ITEM_DICVALUE and f.ITEM_DICTYPE='区域' +left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 g + on a.ITEM_SECTOR121=g.ITEM_DICVALUE and g.ITEM_DICTYPE='板块' +left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 h + on a.ITEM_PROPERTYLEVEL=h.ITEM_DICVALUE and h.ITEM_DICTYPE='物业档次' +LEFT JOIN (SELECT ProjectID, VOPPBT, VOPPB FROM #DWA_PROJECTBASEPRICE_IMDT_STEP_2 WHERE ABS(VOPPB) < 0.1) B +ON A.item_BindProjID = B.ProjectID +LEFT JOIN (SELECT ProjectID, VOPPBT, VOPPB FROM #DWA_PROJECTBASEPRICE_IMDT_STEP_2 WHERE ABS(VOPPB) < 0.1) C +ON A.ITEM_AIRAID = C.ProjectID +LEFT JOIN ODS_PROJECT_PRICE_INFO_#lastYearMonth# D +ON A.ITEM_AIRAID = D.ProjectID AND D.Status=1 +where a.ITEM_ISBUILDINDEX='1' and a.ITEM_RUNNINGSTATE='1' and a.ITEM_PROJECTTYPE='1'; + +-- 2.板块+绑定 +SELECT A.ProjectID, A.Block, A.County, A.ProjectLevel, A.ProjectTypeDtl, A.BindClassID, A.BindProjID, A.Bind_Proj_Pst, + B.Bind_Block_Class, B.Bind_Block_Class_Pst, + CASE WHEN A.VOPPAT IS NOT NULL THEN A.VOPPAT + WHEN B.Bind_Block_Class IS NOT NULL AND A.BasePrice IS NOT NULL THEN '8501' END AS VOPPAT, + CASE WHEN A.VOPPA IS NOT NULL THEN A.VOPPA + WHEN B.Bind_Block_Class IS NOT NULL AND A.BasePrice IS NOT NULL THEN B.Bind_Block_Class_Pst END AS VOPPA, + A.BasePrice +INTO #Temp_Bind_Block_Class +FROM #TempBindProjID A +LEFT JOIN ( + SELECT Block+BindClassID AS Bind_Block_Class, AVG(VOPPA) AS Bind_Block_Class_Pst + FROM #TempBindProjID GROUP BY Block+BindClassID +) B +ON A.Block +A.BindClassID = B.Bind_Block_Class AND B.Bind_Block_Class_Pst IS NOT NULL + + +-- 3.板块+物业档次 +SELECT A.ProjectID, A.Block, A.County, A.ProjectLevel, A.ProjectTypeDtl, A.BindClassID, A.BindProjID, A.Bind_Proj_Pst, + A.Bind_Block_Class, A.Bind_Block_Class_Pst, B.Bind_Block_Plevel, B.Bind_Block_Plevel_Pst, + CASE WHEN A.VOPPAT IS NOT NULL THEN A.VOPPAT + WHEN B.Bind_Block_Plevel IS NOT NULL AND A.BasePrice IS NOT NULL THEN '8502' END AS VOPPAT, + CASE WHEN A.VOPPA IS NOT NULL THEN A.VOPPA + WHEN B.Bind_Block_Plevel IS NOT NULL AND A.BasePrice IS NOT NULL THEN B.Bind_Block_Plevel_Pst END AS VOPPA, + A.BasePrice +INTO #Temp_Bind_Block_Plevel +FROM #Temp_Bind_Block_Class A +LEFT JOIN ( + SELECT Block+ProjectLevel AS Bind_Block_Plevel, AVG(VOPPA) AS Bind_Block_Plevel_Pst + FROM #Temp_Bind_Block_Class GROUP BY Block+ProjectLevel +) B +ON A.Block +A.ProjectLevel = B.Bind_Block_Plevel AND B.Bind_Block_Plevel_Pst IS NOT NULL +-- 4.板块+物业类型 +SELECT A.ProjectID, A.Block, A.County, A.ProjectLevel, A.ProjectTypeDtl, A.BindClassID, A.BindProjID, A.Bind_Proj_Pst, + A.Bind_Block_Class, A.Bind_Block_Class_Pst, A.Bind_Block_Plevel, A.Bind_Block_Plevel_Pst, + B.Bind_Block_PType, B.Bind_Block_PType_Pst, + CASE WHEN A.VOPPAT IS NOT NULL THEN A.VOPPAT + WHEN B.Bind_Block_PType IS NOT NULL AND A.BasePrice IS NOT NULL THEN '8503' END AS VOPPAT, + CASE WHEN A.VOPPA IS NOT NULL THEN A.VOPPA + WHEN B.Bind_Block_PType IS NOT NULL AND A.BasePrice IS NOT NULL THEN B.Bind_Block_PType_Pst END AS VOPPA, + A.BasePrice +INTO #Temp_Bind_Block_PType +FROM #Temp_Bind_Block_Plevel A +LEFT JOIN ( + SELECT Block+ProjectTypeDtl AS Bind_Block_PType, AVG(VOPPA) AS Bind_Block_PType_Pst + FROM #Temp_Bind_Block_Plevel GROUP BY Block+ProjectTypeDtl +) B +ON A.Block+A.ProjectTypeDtl = B.Bind_Block_PType AND B.Bind_Block_PType_Pst IS NOT NULL +-- 5.区域+物业类型 +SELECT A.ProjectID, A.Block, A.County, A.ProjectLevel, A.ProjectTypeDtl, A.BindClassID, A.BindProjID, A.Bind_Proj_Pst, + A.Bind_Block_Class, A.Bind_Block_Class_Pst, A.Bind_Block_Plevel, A.Bind_Block_Plevel_Pst, + A.Bind_Block_PType, A.Bind_Block_PType_Pst, B.Bind_County_PType, B.Bind_County_PType_Pst, + CASE WHEN A.VOPPAT IS NOT NULL THEN A.VOPPAT + WHEN B.Bind_County_PType IS NOT NULL AND A.BasePrice IS NOT NULL THEN '8504' END AS VOPPAT, + CASE WHEN A.VOPPA IS NOT NULL THEN A.VOPPA + WHEN B.Bind_County_PType IS NOT NULL AND A.BasePrice IS NOT NULL THEN B.Bind_County_PType_Pst END AS VOPPA, + A.BasePrice +INTO #Temp_Bind_County_PType +FROM #Temp_Bind_Block_PType A +LEFT JOIN ( + SELECT County+ProjectTypeDtl AS Bind_County_PType, AVG(VOPPA) AS Bind_County_PType_Pst + FROM #Temp_Bind_Block_PType GROUP BY County+ProjectTypeDtl +) B +ON A.County +A.ProjectTypeDtl = B.Bind_County_PType AND B.Bind_County_PType_Pst IS NOT NULL + +--插入结果 (11-39 自动计算; 8505 绑定相同ID平均值; 8506混合小区ID; 8501板块+绑定; 8502板块+物业档次; 8503板块+类型; 8504区域+类型) +--6. 上周期有基价、当周期没有涨跌幅的的小区,沿用上周期基价 +INSERT INTO #DWA_PROJECTBASEPRICE_IMDT_STEP_3 +SELECT ProjectID, BindProjID, Bind_Proj_Pst, + Bind_Block_Class, Bind_Block_Class_Pst, Bind_Block_Plevel, Bind_Block_Plevel_Pst, + Bind_Block_PType, Bind_Block_PType_Pst, Bind_County_PType, Bind_County_PType_Pst, + '沿用上周期基价' as Bind_Price_1_PType, 0 as Bind_Price_1_PType_Pst, + CASE WHEN A.VOPPAT IS NOT NULL THEN A.VOPPAT + WHEN A.BasePrice IS NOT NULL THEN '9999' END AS VOPPAT, + CASE WHEN A.VOPPA IS NOT NULL THEN A.VOPPA + WHEN A.BasePrice IS NOT NULL THEN 0 END AS VOPPA +FROM #Temp_Bind_County_PType A + + +DROP TABLE #TempBindProjID +DROP TABLE #Temp_Bind_Block_Class +DROP TABLE #Temp_Bind_Block_Plevel +DROP TABLE #Temp_Bind_Block_PType +DROP TABLE #Temp_Bind_County_PType + + + +----第四步;基价中间表的其他字段,包括主力基价的修正系数等等 +create table #DWA_PROJECTBASEPRICE_IMDT_STEP_4 +( + ProjectID bigint primary key + , 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) +); + + +INSERT INTO #DWA_PROJECTBASEPRICE_IMDT_STEP_4 +SELECT A.ITEM_AIRAID, A.ITEM_RALABLE, g.ITEM_DICTEXT, i.ITEM_DICTEXT, A.item_ProjectTypeDtl, h.ITEM_DICTEXT, A.ITEM_MAINCOMPLETIONYEAR, A.item_MainArea, + A.item_AreaCoff, A.item_YearCoff, D.PriceNote +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='居住物业类型' +left join obpm_LianCheng_Data.dbo.TLK_字典数据信息 i + on a.ITEM_RAType=g.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_RUNNINGSTATE='1' and a.ITEM_ISBUILDINDEX='1' and D.Status=1; + +----第五步;整合到结果表 +INSERT INTO DWA_PROJECTBASEPRICE_IMDT_#yearMonth# +SELECT A.ProjectID, A.ProjectName, A.ProjectAddr, A.County, A.Block, A.Loop, a.IsIndxGen, a.IsPstCalc, a.StatusRun, D.ProjectSPLabel, D.PropertyType, D.ProjectType, + D.ProjectTypeDtl, D.ProjectLevel, D.[Year], D.MainArea, ISNULL(D.AreaCoff,1), ISNULL(D.YearCoff,1), D.PriceNote, + A.BasePrice_1*(1+C.VOPPA) AS BasePriceDft, + A.BasePrice_1*(1+C.VOPPA)*ISNULL(D.AreaCoff,1)*ISNULL(D.YearCoff,1) AS MainPriceDft, + A.BasePrice_1, A.PriceUnitAdj, A.Visited_Num, A.First_Visit_Time, A.Visited_Num_15, A.Visited_Num_30, + A.PriceDealMean_1, A.PriceDealMax_1, A.SumDeal_1, A.PriceDealMean, A.PriceDealMax, A.SumDeal, + A.PriceListedMin, A.PriceCase1_ToAI_Pst, A.PriceCase2_ToAI_Pst, A.PriceCase1_ToLst_Pst, A.PriceCase2_ToLst_Pst, + A.PriceCase1, A.PriceCase1AdjPst, A.SumCase1, A.PriceCase2, A.PriceCase2AdjPst, A.SumCase2, B.VOPPBT, B.VOPPB, + C.BindProjID, C.Bind_Proj_Pst, C.Bind_Block_Class, C.Bind_Block_Class_Pst, C.Bind_Block_Plevel, C.Bind_Block_Plevel_Pst, + C.Bind_Block_PType, C.Bind_Block_PType_Pst, C.Bind_County_PType, C.Bind_County_PType_Pst, C.VOPPAT, C.VOPPA +FROM #DWA_PROJECTBASEPRICE_IMDT_STEP_1 A +LEFT JOIN #DWA_PROJECTBASEPRICE_IMDT_STEP_2 B +ON A.ProjectID = B.ProjectID +LEFT JOIN #DWA_PROJECTBASEPRICE_IMDT_STEP_3 C +ON A.ProjectID = C.ProjectID +LEFT JOIN #DWA_PROJECTBASEPRICE_IMDT_STEP_4 D +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 diff --git a/ruoyi/src/main/resources/sql-template/update_office_price.sql b/ruoyi/src/main/resources/sql-template/update_office_price.sql index a9d70da37..64d569173 100644 --- a/ruoyi/src/main/resources/sql-template/update_office_price.sql +++ b/ruoyi/src/main/resources/sql-template/update_office_price.sql @@ -205,3 +205,168 @@ from #InfoChgCurr drop table #InfoChg; drop table #InfoChgCurr; drop table #InfoChgLst; + + +-- 更新上月价格 +update a +set a.ITEM_MAINAREAPRICE = b.MainPriceRent +from obpm_LianCheng_Data.dbo.TLK_基价信息 a + join dbo.ODS_OFFICE_BUILDING_PRICE_INFO_#lastYearMonth# b + on a.ITEM_AIRAID = b.ProjectID +where b.Status = 1 + and a.ITEM_VALUEPOINT = '#lastPriceDate#' + and a.ITEM_PRICETYPE = '2' + and a.ITEM_PROJECTTYPE = '2' + and a.ITEM_MAINAREAPRICE <> b.MainPriceRent; + +update a +set a.ITEM_MAINAREAPRICE = b.MainPriceRent +from obpm_LianCheng_Data.dbo.TLK_基价信息 a + join dbo.ODS_OFFICE_BUILDING_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 = '2' + and 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_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 + , 2 + , 2 + , MainPriceRent + , '#priceDate#' + , AdjEvd + , '李贺' + , getdate() + , MainPriceRentPst +from dbo.ODS_OFFICE_BUILDING_PRICE_INFO_#yearMonth# +where Status = 1 and BuildingStd=1; + +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_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 + , 2 + , 1 + , MainPrice + , '#priceDate#' + , AdjEvd + , '李贺' + , getdate() + , MainPricePst +from dbo.ODS_OFFICE_BUILDING_PRICE_INFO_#yearMonth# +where Status = 1 and BuildingStd=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 = '2'; \ No newline at end of file diff --git a/ruoyi/src/test/java/com/uvaluation/compute/ResidenceRentBasePriceTests.java b/ruoyi/src/test/java/com/uvaluation/compute/ResidenceRentBasePriceTests.java index 72bd26795..e94cee608 100644 --- a/ruoyi/src/test/java/com/uvaluation/compute/ResidenceRentBasePriceTests.java +++ b/ruoyi/src/test/java/com/uvaluation/compute/ResidenceRentBasePriceTests.java @@ -19,32 +19,32 @@ import java.util.List; @RunWith(SpringRunner.class) @SpringBootTest(classes = RuoYiApplication.class) public class ResidenceRentBasePriceTests { - - @Autowired - private IOriginalResidenceRentOpeningCaseService originalResidenceRentOpeningCaseService; - @Autowired - private IArtificialResidenceSalePriceService artificialResidenceSalePriceService; - @Autowired - private IOriginalResidenceSaleClosingCaseService originalResidenceClosingCaseService; - - @Test - public void testClearOpeningCase() { - originalResidenceRentOpeningCaseService.pullData(); - } - - @Test - public void testClearClosingCase() { - originalResidenceClosingCaseService.pullData(); - } - - @Test - public void testBatchImport() { - List<ComputeResidenceSaleBasePrice> list = new LinkedList<>(); - ComputeResidenceSaleBasePrice computeResidenceSaleBasePrice = new ComputeResidenceSaleBasePrice(); - computeResidenceSaleBasePrice.setCommunityId("10101"); - computeResidenceSaleBasePrice.setBasePriceDraft(new BigDecimal(12222)); - list.add(computeResidenceSaleBasePrice); - artificialResidenceSalePriceService.batchImport(202007, list); - } +// +// @Autowired +// private IOriginalResidenceRentOpeningCaseService originalResidenceRentOpeningCaseService; +// @Autowired +// private IArtificialResidenceSalePriceService artificialResidenceSalePriceService; +// @Autowired +// private IOriginalResidenceSaleClosingCaseService originalResidenceClosingCaseService; +// +// @Test +// public void testClearOpeningCase() { +// originalResidenceRentOpeningCaseService.pullData(); +// } +// +// @Test +// public void testClearClosingCase() { +// originalResidenceClosingCaseService.clear(); +// } +// +// @Test +// public void testBatchImport() { +// List<ComputeResidenceSaleBasePrice> list = new LinkedList<>(); +// ComputeResidenceSaleBasePrice computeResidenceSaleBasePrice = new ComputeResidenceSaleBasePrice(); +// computeResidenceSaleBasePrice.setCommunityId("10101"); +// computeResidenceSaleBasePrice.setBasePriceDraft(new BigDecimal(12222)); +// list.add(computeResidenceSaleBasePrice); +// artificialResidenceSalePriceService.batchImport(202007, list); +// } } diff --git a/ruoyi/src/test/java/com/uvaluation/compute/ResidenceSaleBasePriceTests.java b/ruoyi/src/test/java/com/uvaluation/compute/ResidenceSaleBasePriceTests.java index fb583b153..447d4b356 100644 --- a/ruoyi/src/test/java/com/uvaluation/compute/ResidenceSaleBasePriceTests.java +++ b/ruoyi/src/test/java/com/uvaluation/compute/ResidenceSaleBasePriceTests.java @@ -1,6 +1,7 @@ package com.uvaluation.compute; import com.ruoyi.RuoYiApplication; +import com.ruoyi.project.data.cases.service.IOriginalResidenceRentClosingCaseService; import com.ruoyi.project.data.cases.service.IOriginalResidenceSaleClosingCaseService; import com.ruoyi.project.data.cases.service.IOriginalResidenceSaleOpeningCaseService; import com.ruoyi.project.data.price.domain.ComputeResidenceSaleBasePrice; @@ -9,6 +10,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; @@ -18,6 +20,7 @@ import java.util.List; @RunWith(SpringRunner.class) @SpringBootTest(classes = RuoYiApplication.class) +@ActiveProfiles("uat") public class ResidenceSaleBasePriceTests { @Autowired @@ -27,16 +30,23 @@ public class ResidenceSaleBasePriceTests { @Autowired private IOriginalResidenceSaleClosingCaseService originalResidenceClosingCaseService; - @Test - public void testClearOpeningCase() { - originalResidenceOpeningCaseService.pullData(); - } - + /** + * 成交案例清洗 + */ @Test public void testClearClosingCase() { - originalResidenceClosingCaseService.pullData(); + originalResidenceClosingCaseService.clear(); } + /** + * 挂牌案例清洗 + */ + @Test + public void testClearOpeningCase() { + originalResidenceOpeningCaseService.clear(); + } + + @Test public void testBatchImport() { List<ComputeResidenceSaleBasePrice> list = new LinkedList<>(); @@ -47,4 +57,5 @@ public class ResidenceSaleBasePriceTests { artificialResidenceSalePriceService.batchImport(202007, list); } + }