From 152f0820342137ae305b748e49e446e492003686 Mon Sep 17 00:00:00 2001 From: purple <purple_lihe@163.com> Date: Mon, 27 Jul 2020 14:13:25 +0800 Subject: [PATCH] =?UTF-8?q?feature=20(=E5=8A=9E=E5=85=AC=E4=BD=9C=E4=BB=B7?= =?UTF-8?q?)=EF=BC=9A=E5=8A=9E=E5=85=AC=E4=BD=9C=E4=BB=B7=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/framework/task/RyTask.java | 10 ++ .../mapper/OriginalOfficeCaseMapper.java | 14 +- .../DownloadOriginalOfficeCaseMapper.java | 7 +- .../service/IOriginalOfficeCaseService.java | 5 + ...alResidenceSaleOpeningCaseServiceImpl.java | 5 +- .../impl/OriginalOfficeCaseServiceImpl.java | 45 +++---- .../data/DownloadOriginalOfficeCaseMapper.xml | 3 +- ...OriginalResidenceSaleOpeningCaseMapper.xml | 120 +++++++++--------- .../clear_residence_sale_opening_case.sql | 2 + .../java/com/ruoyi/GenerateTableTests.java | 8 ++ 10 files changed, 127 insertions(+), 92 deletions(-) diff --git a/ruoyi/src/main/java/com/ruoyi/framework/task/RyTask.java b/ruoyi/src/main/java/com/ruoyi/framework/task/RyTask.java index 60b144c81..6cc8758ee 100644 --- a/ruoyi/src/main/java/com/ruoyi/framework/task/RyTask.java +++ b/ruoyi/src/main/java/com/ruoyi/framework/task/RyTask.java @@ -1,5 +1,6 @@ package com.ruoyi.framework.task; +import com.ruoyi.project.data.cases.service.IOriginalOfficeCaseService; import com.ruoyi.project.data.cases.service.IOriginalResidenceRentOpeningCaseService; import com.ruoyi.project.data.cases.service.impl.DownloadOriginalNewHouseCaseServiceImpl; import com.ruoyi.project.data.cases.service.impl.DownloadOriginalResidenceSaleClosingCaseServiceImpl; @@ -22,6 +23,8 @@ public class RyTask { private DownloadOriginalResidenceSaleClosingCaseServiceImpl downloadOriginalResidenceSaleClosingCaseService; @Autowired private DownloadOriginalNewHouseCaseServiceImpl downloadOriginalNewHouseCaseService; + @Autowired + private IOriginalOfficeCaseService originalOfficeCaseService; public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); @@ -63,4 +66,11 @@ public class RyTask { downloadOriginalNewHouseCaseService.downloadSecond(); } + /** + * 下载办公案例和作价 + */ + public void downloadOfficeCase() { + originalOfficeCaseService.compute(); + } + } diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalOfficeCaseMapper.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalOfficeCaseMapper.java index 7c1fc4356..0c4b63ac1 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalOfficeCaseMapper.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/mapper/OriginalOfficeCaseMapper.java @@ -26,13 +26,13 @@ public interface OriginalOfficeCaseMapper { * @param yearMonth */ void createArtificialTable(@Param("yearMonth") Integer yearMonth); - - /** - * 创建案例汇总表 - * - * @param yearMonth - */ - void createAssembleTable(@Param("yearMonth") Integer yearMonth); +// +// /** +// * 创建案例汇总表 +// * +// * @param yearMonth +// */ +// void createAssembleTable(@Param("yearMonth") Integer yearMonth); /** * 初始化案例汇总表 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 9a0a408b1..e188c6f2b 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,10 +6,15 @@ import com.ruoyi.project.data.cases.domain.OriginalOfficeCase; import java.util.Date; import java.util.List; +/** + * 爬取库中的办公案例 + * + * @author lihe + */ @DS("spider") public interface DownloadOriginalOfficeCaseMapper { /** - * 下载案例 + * 下载办公案例 * * @param startDate * @param endDate diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalOfficeCaseService.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalOfficeCaseService.java index 1b005d2b0..851624e04 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalOfficeCaseService.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/IOriginalOfficeCaseService.java @@ -1,5 +1,10 @@ package com.ruoyi.project.data.cases.service; +/** + * 办公基价计算Service + * + * @author lihe + */ public interface IOriginalOfficeCaseService { /** * 计算 diff --git a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/DownloadOriginalResidenceSaleOpeningCaseServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/DownloadOriginalResidenceSaleOpeningCaseServiceImpl.java index 92e4e359c..39467d105 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/DownloadOriginalResidenceSaleOpeningCaseServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/data/cases/service/impl/DownloadOriginalResidenceSaleOpeningCaseServiceImpl.java @@ -43,7 +43,7 @@ public class DownloadOriginalResidenceSaleOpeningCaseServiceImpl { */ public void download() { Integer tableRoute = DateUtils.getNextYearMonth(); - Integer remoteTableRoute = DateUtils.getLastYearMonth(); + Integer remoteTableRoute = DateUtils.getYearMonth(); download(tableRoute, remoteTableRoute); } @@ -82,6 +82,9 @@ public class DownloadOriginalResidenceSaleOpeningCaseServiceImpl { originalResidenceSaleOpeningCaseMapper.createRawTable(tableRoute); originalResidenceSaleOpeningCaseMapper.createCleanTable(tableRoute); originalResidenceSaleOpeningCaseMapper.createAssembleTable(tableRoute); + originalResidenceSaleOpeningCaseMapper.createComputePriceTable(tableRoute); + originalResidenceSaleOpeningCaseMapper.createArtificialPriceTable(tableRoute); + originalResidenceSaleOpeningCaseMapper.createUltimatePriceTable(tableRoute); syncOriginalResidenceSaleOpeningCaseMapper.createRawTable(remoteTableRoute); } 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 266840891..c820630a2 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 @@ -1,6 +1,7 @@ package com.ruoyi.project.data.cases.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.LoadUtil; import com.ruoyi.project.data.cases.domain.OriginalOfficeCase; import com.ruoyi.project.data.cases.mapper.OriginalOfficeCaseMapper; @@ -20,6 +21,11 @@ import java.util.Calendar; import java.util.Date; import java.util.List; +/** + * 办公基价计算Service + * + * @author lihe + */ @Service @DS("compute") public class OriginalOfficeCaseServiceImpl implements IOriginalOfficeCaseService { @@ -39,26 +45,18 @@ public class OriginalOfficeCaseServiceImpl implements IOriginalOfficeCaseService * 计算 */ @Override - @Scheduled(cron = "0 0 17 28 * ?") public void compute() { + + Integer yearMonth = DateUtils.getNextYearMonth(); + Integer lastYearMonth = DateUtils.getYearMonth(); + Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), 15); Date startDate = calendar.getTime(); - Integer lastYearMonth = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), - calendar.get(Calendar.MONTH) + 1)); calendar.add(Calendar.MONTH, 1); Date endDate = calendar.getTime(); - Integer yearMonth = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR), - calendar.get(Calendar.MONTH) + 1)); - -// yearMonth = 202007; -//// lastYearMonth = 202006; -//// calendar.set(2020, 5, 16); -//// startDate = calendar.getTime(); -//// calendar.set(2020, 6, 16); -//// endDate = calendar.getTime(); before(yearMonth, startDate, endDate); running(yearMonth, lastYearMonth); @@ -72,23 +70,26 @@ public class OriginalOfficeCaseServiceImpl implements IOriginalOfficeCaseService private void before(Integer yearMonth, Date startDate, Date endDate) { // 创建表 originalOfficeCaseMapper.createTable(yearMonth); - originalOfficeCaseMapper.createArtificialTable(yearMonth); originalOfficeCaseMapper.initAssembleTable(yearMonth); originalOfficeCaseMapper.initPriceTable(yearMonth); + originalOfficeCaseMapper.createArtificialTable(yearMonth); // 下载列表 List<OriginalOfficeCase> downloadList = downloadOriginalOfficeCaseMapper.download(startDate, endDate); SqlParameterSource[] batchParams = SqlParameterSourceUtils.createBatch(downloadList.toArray()); namedParameterJdbcTemplate.batchUpdate("insert into dbo.ODS_OFFICECASELISTED_" + yearMonth.toString() + "_RAW" + - "(case_id,url, title,容积率,总价售,均价售, 楼盘名称, 楼盘名称_M, 楼层, 面积, 物业费, 工位数, 地址, 地铁, 发布时间, 房源编号, 百度lng, 百度lat, " + - "区域, 分类, " + - "来源, 等级, 楼盘网址, 装修,类型, 板块, 挂牌中介, 月租金租, 标准租金租, 得房率, 总价, 单价,更新时间) values(replace(newid(),'-',''),:url," + - ":title," + - ":floorAreaRatio," + - ":caseTotalPrice," + - ":caseUnitPrice,:name,:name_m,:caseFloor,:area,:managementFee,:seatCount,:address,:metro," + - ":publishDate,:sourceNo,:lng,:lat,:county,:catalog,:source,:level,:homePageUrl,:decoration," + - ":type,:block,:agency,:rentOfMonthly,:rentOfStandard,:score,:totalPrice,:unitPrice,:updateDate) ", + "(case_id,url, title,容积率,总价售,均价售, 楼盘名称, 楼盘名称_M, 楼层, 面积, 物业费, 工位数, 地址, 地铁, 发布时间, 房源编号, 百度lng, " + + "百度lat, " + + "区域, 分类, " + + "来源, 等级, 楼盘网址, 装修,类型, 板块, 挂牌中介, 月租金租, 标准租金租, 得房率, 总价, 单价,更新时间) values(replace(newid(),'-','')" + + ",:url," + + ":title," + + ":floorAreaRatio," + + ":caseTotalPrice," + + ":caseUnitPrice,:name,:name_m,:caseFloor,:area,:managementFee,:seatCount,:address,:metro," + + ":publishDate,:sourceNo,:lng,:lat,:county,:catalog,:source,:level,:homePageUrl,:decoration," + + ":type,:block,:agency,:rentOfMonthly,:rentOfStandard,:score,:totalPrice,:unitPrice," + + ":updateDate) ", batchParams); } diff --git a/ruoyi/src/main/resources/mybatis/data/DownloadOriginalOfficeCaseMapper.xml b/ruoyi/src/main/resources/mybatis/data/DownloadOriginalOfficeCaseMapper.xml index 9169deb09..4b163a1cd 100644 --- a/ruoyi/src/main/resources/mybatis/data/DownloadOriginalOfficeCaseMapper.xml +++ b/ruoyi/src/main/resources/mybatis/data/DownloadOriginalOfficeCaseMapper.xml @@ -36,6 +36,7 @@ <result property="unitPrice" column="单价" javaType="java.math.BigDecimal"/> <result property="updateDate" column="更新时间" javaType="java.sql.Date"/> </resultMap> + <!-- 获取爬虫库中的办公案例 --> <select id="download" resultMap="DownloadMapping"> select url, title, 容积率, 总价售, 均价售, 楼盘名称, 楼层, case 面积 when 'nan' then NULL ELSE 面积 END 面积, 物业费, 工位数, 地址, 地铁, @@ -46,6 +47,6 @@ case when 分类 = '售' then (case 均价售 when 'nan' then NULL ELSE 均价售 END) when 分类 = '租' then (case 标准租金租 when 'nan' then NULL ELSE 标准租金租 END) end as 单价 from dbo.办公 - where 更新时间 >= #{startDate} and 更新时间 <![CDATA[ < ]]> #{endDate} + where 更新时间 >= #{startDate,jdbcType=DATE} and 更新时间 <![CDATA[ < ]]> #{endDate,jdbcType=DATE} </select> </mapper> \ No newline at end of file diff --git a/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml b/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml index f1235978f..be38561c0 100644 --- a/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml +++ b/ruoyi/src/main/resources/mybatis/data/OriginalResidenceSaleOpeningCaseMapper.xml @@ -79,7 +79,7 @@ #{casePrice}, #{caseCommunityName}, #{caseVisitedNum}, - #{caseFirstVisitTime}, + #{caseFirstVisitTime,jdbcType=DATE}, #{caseVisitedNum15}, #{caseVisitedNum30}, #{caseUrl}, @@ -262,65 +262,65 @@ 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> <!-- 人工修正价格表和作价表一摸一样 --> diff --git a/ruoyi/src/main/resources/sql-template/clear_residence_sale_opening_case.sql b/ruoyi/src/main/resources/sql-template/clear_residence_sale_opening_case.sql index 6dc22d2b7..4a20ff6d6 100644 --- a/ruoyi/src/main/resources/sql-template/clear_residence_sale_opening_case.sql +++ b/ruoyi/src/main/resources/sql-template/clear_residence_sale_opening_case.sql @@ -1,3 +1,5 @@ +truncate table ODS_HOUSINGCASELISTED_LJ_#yearMonth#; + update a set a.uv_community_id=b.ITEM_ProjectID, a.uv_building_id=b.ITEM_BuildingID, diff --git a/ruoyi/src/test/java/com/ruoyi/GenerateTableTests.java b/ruoyi/src/test/java/com/ruoyi/GenerateTableTests.java index 9e01d414a..409ada2e2 100644 --- a/ruoyi/src/test/java/com/ruoyi/GenerateTableTests.java +++ b/ruoyi/src/test/java/com/ruoyi/GenerateTableTests.java @@ -14,6 +14,14 @@ import java.util.stream.Stream; public class GenerateTableTests { + @Test + public void testLastYearMonth() { + + Integer lastYearMonth = DateUtils.getLastYearMonth(); + Assert.assertTrue(202007 == lastYearMonth); + + } + @Test public void getELTableColumn() { Class<?> targetClass = ComputeResidenceSaleBasePrice.class;