feature (住宅租赁基价作价): 推送住宅租赁基价作价

1. 创建汇总案例表
2. 推送汇总案例数据
3. 创建价格表(备份上期价格表)
4. 推送价格数据
This commit is contained in:
purple 2020-07-09 12:03:46 +08:00
parent 2b28b51717
commit 5ef0853f58
14 changed files with 598 additions and 94 deletions

View File

@ -9,42 +9,153 @@ import java.util.Date;
public class CleanResidenceRentAggregationCase {
private Integer yearMonth;
/**
* 案例单套ID
*/
private String householdsIdSRC;
/**
* 案例小区ID
*/
private String projectIdSRC;
/**
* 小区ID
*/
private String communityId;
private String buildingId;
/**
* WHEN A.RentType=1 THEN ''整租''
* WHEN A.RentType=2 THEN ''散租''
* WHEN A.RentType=3 THEN ''分租''
*/
private Integer rentType;
/**
*
*/
private Integer roomNum;
/**
*
*/
private Integer hallNum;
/**
*
*/
private Integer bashRoomNum;
/**
* 面积
*/
private BigDecimal area;
/**
* 朝向
*/
private String toward;
/**
* UpperFloorSum 总层数
*/
private String totalFloor;
/**
* UpperFloorNum 所在层
*/
private String currentFloor;
/**
* 有无电梯
*/
private Boolean elevator;
/**
* 装修类型
*/
private String decoration;
/**
* 建成年代
*/
private Integer year;
/**
* 房屋面积系数
*/
private BigDecimal areaCoefficient;
/**
* 朝向系数
*/
private BigDecimal towardCoefficient;
/**
* 楼层系数
*/
private BigDecimal floorCoefficient;
/**
* 装修系数
*/
private Integer decorationCoefficient;
/**
* 建成年代系数
*/
private BigDecimal yearCoefficient;
/**
* 楼栋系数
*/
private BigDecimal buildingCoefficient;
/**
* 室厅修正系数
*/
private BigDecimal roomTypeCoefficient;
/**
* 总价
*/
private BigDecimal totalPrice;
/**
* 单价元每平方米
*/
private BigDecimal unitPrice;
/**
* 散租单价
*/
private BigDecimal priceScatterRent;
/**
* 整租单价
*/
private BigDecimal priceEntireRent;
/**
* 合租单间价
*/
private BigDecimal priceShareRent0;
/**
* 合租折算价
*/
private BigDecimal priceShareRent;
/**
* 带看总次数
*/
private Integer visitedNum;
/**
* 首次带看时间
*/
private Date firstVisitedDate;
/**
* 15天内带看总次数
*/
private Integer visitedNum15;
/**
* 30天内带看总次数
*/
private Integer visitedNum30;
/**
* 案例状态
*/
private Integer status;
/**
* 最近一次挂牌总价调整幅度
*/
private BigDecimal adjustedValue;
/**
* 最近一次挂牌总价调整比例
*/
private BigDecimal adjustedPst;
/**
* 累计挂牌总价调整幅度
*/
private BigDecimal adjustedCumValue;
/**
* 累计挂牌总价调整比例
*/
private BigDecimal adjustedCumPst;
/**
* 累计挂牌总价绝对调整幅度

View File

@ -0,0 +1,27 @@
package com.ruoyi.project.data.cases.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.ruoyi.project.data.cases.domain.CleanResidenceRentAggregationCase;
import com.ruoyi.project.data.cases.domain.OriginalResidenceSaleOpeningCase;
import com.ruoyi.project.data.cases.domain.OriginalResidenceSaleOpeningCaseQueryModel;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 汇总案例查询
*
* @author lihe
*/
@DS("compute")
public interface ResidenceRentAggregationCaseMapper {
/**
* 获取每月汇总案例列表
*
* @param yearMonth
* @return
*/
List<CleanResidenceRentAggregationCase> getMonthly(@Param("yearMonth") Integer yearMonth);
}

View File

@ -1,26 +0,0 @@
package com.ruoyi.project.data.cases.mapper.sync;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.ruoyi.project.data.cases.domain.OriginalResidenceRentOpeningCase;
import org.apache.ibatis.annotations.Param;
/**
* @author lihe
*/
@DS("calc")
public interface SyncOriginalResidenceRentAggregationCaseMapper {
/**
* 创建挂牌案例表
* @param yearMonth
*/
int createTable(@Param("yearMonth") Integer yearMonth);
/**
*
* @param originalResidenceRentOpeningCase
* @return
*/
int insert(OriginalResidenceRentOpeningCase originalResidenceRentOpeningCase);
}

View File

@ -0,0 +1,65 @@
package com.ruoyi.project.data.cases.mapper.sync;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.ruoyi.project.data.cases.domain.CleanResidenceRentAggregationCase;
import com.ruoyi.project.data.cases.domain.OriginalResidenceRentOpeningCase;
import com.ruoyi.project.data.price.domain.UltimateOfficeBasePrice;
import com.ruoyi.project.data.price.domain.UltimateResidenceRentBasePrice;
import org.apache.ibatis.annotations.Param;
/**
* @author lihe
*/
@DS("calc")
public interface SyncResidenceRentCaseMapper {
/**
* 创建案例汇总表
*
* @param yearMonth
* @return
*/
int createAggregationCaseTable(@Param("yearMonth") Integer yearMonth);
/**
* 插入案例汇总表
*
* @param cleanResidenceRentAggregationCase
* @return
*/
int insertAggregationCaseTable(CleanResidenceRentAggregationCase cleanResidenceRentAggregationCase);
/**
* 创建最终价格表
*
* @param yearMonth
* @return
*/
int createUltimatePriceTable(@Param("yearMonth") Integer yearMonth);
/**
* 备份价格表
*
* @param yearMonth
* @param operateDate
* @return
*/
int dumpPriceTable(@Param("yearMonth") Integer yearMonth, @Param("operateDate") String operateDate);
/**
* 清空价格表
*
* @param yearMonth
* @return
*/
int clearPriceTable(@Param("yearMonth") Integer yearMonth);
/**
* 插入最终价格
*
* @param ultimateOfficeBasePrice
* @return
*/
int insertUltimatePriceTable(UltimateResidenceRentBasePrice ultimateOfficeBasePrice);
}

View File

@ -20,7 +20,7 @@ import com.ruoyi.project.data.price.domain.ComputeResidenceRentBasePrice;
import com.ruoyi.project.data.price.domain.UltimateResidenceRentBasePrice;
import com.ruoyi.project.data.price.service.IArtificialResidenceRentPriceService;
import com.ruoyi.project.data.price.service.IComputeResidenceRentPriceService;
import com.ruoyi.project.data.price.service.IUltimateResidenceRentBasePriceService;
import com.ruoyi.project.data.price.service.IUltimateResidenceRentPriceService;
import com.ruoyi.project.system.domain.UploadFile;
import com.ruoyi.project.system.service.IUploadFileService;
import org.springframework.beans.factory.annotation.Autowired;
@ -38,7 +38,7 @@ public class ResidenceRentBasePriceController extends BaseController {
@Autowired
private IArtificialResidenceRentPriceService artificialResidenceRentPriceService;
@Autowired
private IUltimateResidenceRentBasePriceService ultimateResidenceRentBasePriceService;
private IUltimateResidenceRentPriceService ultimateResidenceRentBasePriceService;
@Autowired
private IUploadFileService fileService;
@Autowired

View File

@ -3,25 +3,48 @@ package com.ruoyi.project.data.price.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.ruoyi.project.common.VueSelectModel;
import com.ruoyi.project.data.price.domain.UltimateResidenceRentBasePrice;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 请填写功能名称Mapper接口
* 住宅租赁最终基价DAO
*
* @author ruoyi
* @author purple
* @date 2020-05-20
*/
@DS("compute")
public interface UltimateResidenceRentPriceMapper {
/**
* 获取分页列表
*
* @param ultimateResidenceRentBasePrice
* @return
*/
List<UltimateResidenceRentBasePrice> selectPageList(UltimateResidenceRentBasePrice ultimateResidenceRentBasePrice);
/**
* 获取分页总数
*
* @param ultimateResidenceRentBasePrice
* @return
*/
Integer selectPageCount(UltimateResidenceRentBasePrice ultimateResidenceRentBasePrice);
/**
* 获取有效价格表
*
* @return
*/
List<VueSelectModel> yearMonthList();
/**
* 获取某个月的数据
*
* @param yearMonth
* @return
*/
List<UltimateResidenceRentBasePrice> getMonthly(@Param("yearMonth") Integer yearMonth);
}

View File

@ -2,21 +2,30 @@ package com.ruoyi.project.data.price.service;
import com.ruoyi.project.common.VueSelectModel;
import com.ruoyi.project.data.price.domain.UltimateResidenceRentBasePrice;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 住宅租赁基价
* 住宅租赁最终基价
*
* @author lihe
*/
public interface IUltimateResidenceRentBasePriceService {
public interface IUltimateResidenceRentPriceService {
/**
* 获取分页列表
*
* @param ultimateResidenceRentBasePrice
* @return
*/
List<UltimateResidenceRentBasePrice> selectList(UltimateResidenceRentBasePrice ultimateResidenceRentBasePrice);
/**
* 获取分页总数
*
* @param ultimateResidenceRentBasePrice
* @return
*/

View File

@ -6,9 +6,16 @@ import com.microsoft.sqlserver.jdbc.SQLServerDataTable;
import com.microsoft.sqlserver.jdbc.SQLServerException;
import com.ruoyi.common.utils.LoadUtil;
import com.ruoyi.project.common.VueSelectModel;
import com.ruoyi.project.data.cases.domain.CleanResidenceRentAggregationCase;
import com.ruoyi.project.data.cases.domain.OfficeAggregationCase;
import com.ruoyi.project.data.cases.mapper.ResidenceRentAggregationCaseMapper;
import com.ruoyi.project.data.cases.mapper.sync.SyncResidenceRentCaseMapper;
import com.ruoyi.project.data.price.domain.ArtificialResidenceRentBasePrice;
import com.ruoyi.project.data.price.domain.ComputeResidenceRentBasePrice;
import com.ruoyi.project.data.price.domain.UltimateOfficeBasePrice;
import com.ruoyi.project.data.price.domain.UltimateResidenceRentBasePrice;
import com.ruoyi.project.data.price.mapper.ArtificialResidenceRentPriceMapper;
import com.ruoyi.project.data.price.mapper.UltimateResidenceRentPriceMapper;
import com.ruoyi.project.data.price.service.IArtificialResidenceRentPriceService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -16,6 +23,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -45,6 +53,12 @@ public class ArtificialResidenceRentPriceServiceImpl implements IArtificialResid
private ArtificialResidenceRentPriceMapper artificialResidenceRentPriceMapper;
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private SyncResidenceRentCaseMapper syncResidenceRentCaseMapper;
@Autowired
private ResidenceRentAggregationCaseMapper residenceRentAggregationCaseMapper;
@Autowired
private UltimateResidenceRentPriceMapper ultimateResidenceRentPriceMapper;
@Override
public ArtificialResidenceRentBasePrice selectById(Integer yearMonth, String id) {
@ -101,7 +115,8 @@ public class ArtificialResidenceRentPriceServiceImpl implements IArtificialResid
Date valuePoint = calendar.getTime();
calendar.add(Calendar.MONTH, -1);
Date lastValuePoint = calendar.getTime();
String lastYearMonth = String.format("%d%02d", calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1);
Integer lastYearMonth = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) + 1));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String priceDate = simpleDateFormat.format(valuePoint);
String lastPriceDate = simpleDateFormat.format(lastValuePoint);
@ -173,16 +188,69 @@ public class ArtificialResidenceRentPriceServiceImpl implements IArtificialResid
// 人工修正导入
String rawSql = LoadUtil.loadContent("sql-template/update_rent_price.sql");
String sql = rawSql.replace("#yearMonth#", yearMonth.toString())
.replace("#lastYearMonth#", lastYearMonth)
.replace("#lastYearMonth#", lastYearMonth.toString())
.replace("#priceDate#", priceDate)
.replace("#lastPriceDate#", lastPriceDate);
jdbcTemplate.update(sql);
artificialResidenceRentPriceMapper.initProcedure();
calendar.setTime(lastValuePoint);
calendar.add(Calendar.MONTH, -1);
Integer lastPriceTableRoute = new Integer(String.format("%d%02d", calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) + 1));
pushData(yearMonth, lastYearMonth, lastPriceTableRoute);
} catch (Exception e) {
e.printStackTrace();
log.error("住宅租赁基价人工修正异常", e);
}
StringBuilder successMsg = new StringBuilder("恭喜您,数据已全部导入成功!共 " + (successNum - failureNum) + "");
return successMsg.toString();
}
/**
* 数据推送
*
* @param yearMonth 作价表
* @param currentPriceTableRoute 当期表
* @param lastPriceTableRoute 上期表
*/
@Async
public void pushData(Integer yearMonth, Integer currentPriceTableRoute, Integer lastPriceTableRoute) {
try {
// 案例同步
syncResidenceRentCaseMapper.createAggregationCaseTable(currentPriceTableRoute);
List<CleanResidenceRentAggregationCase> list = residenceRentAggregationCaseMapper.getMonthly(yearMonth);
list.parallelStream().forEach(cleanResidenceRentAggregationCase -> {
cleanResidenceRentAggregationCase.setYearMonth(currentPriceTableRoute);
syncResidenceRentCaseMapper.insertAggregationCaseTable(cleanResidenceRentAggregationCase);
});
// 当期价格同步
syncResidenceRentCaseMapper.createUltimatePriceTable(currentPriceTableRoute);
List<UltimateResidenceRentBasePrice> ultimateResidenceRentBasePrices =
ultimateResidenceRentPriceMapper.getMonthly(yearMonth);
ultimateResidenceRentBasePrices.parallelStream().forEach(ultimateResidenceRentBasePrice -> {
ultimateResidenceRentBasePrice.setYearMonth(currentPriceTableRoute);
syncResidenceRentCaseMapper.insertUltimatePriceTable(ultimateResidenceRentBasePrice);
});
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
String operateDate = simpleDateFormat.format(calendar.getTime());
// 上期价格同步
syncResidenceRentCaseMapper.dumpPriceTable(lastPriceTableRoute, operateDate);
syncResidenceRentCaseMapper.clearPriceTable(lastPriceTableRoute);
List<UltimateResidenceRentBasePrice> lastUltimateResidenceRentBasePrices =
ultimateResidenceRentPriceMapper.getMonthly(lastPriceTableRoute);
lastUltimateResidenceRentBasePrices.parallelStream().forEach(ultimateResidenceRentBasePrice -> {
ultimateResidenceRentBasePrice.setYearMonth(lastPriceTableRoute);
syncResidenceRentCaseMapper.insertUltimatePriceTable(ultimateResidenceRentBasePrice);
});
} catch (Exception e) {
log.error("推送住宅租赁数据失败", e);
}
}
}

View File

@ -253,36 +253,41 @@ public class UltimateOfficeBasePriceServiceImpl implements IUltimateOfficeBasePr
*/
@Async
public void pushData(Integer yearMonth, Integer currentPriceTableRoute, Integer lastPriceTableRoute) {
// 案例同步
syncOfficeAggregationCaseMapper.createAggregationCaseTable(currentPriceTableRoute);
List<OfficeAggregationCase> list = originalOfficeCaseMapper.getOfficeAggregationCases(yearMonth);
list.parallelStream().forEach(officeAggregationCase -> {
officeAggregationCase.setYearMonth(currentPriceTableRoute);
syncOfficeAggregationCaseMapper.insertAggregationCase(officeAggregationCase);
});
try {
// 案例同步
syncOfficeAggregationCaseMapper.createAggregationCaseTable(currentPriceTableRoute);
List<OfficeAggregationCase> list = originalOfficeCaseMapper.getOfficeAggregationCases(yearMonth);
list.parallelStream().forEach(officeAggregationCase -> {
officeAggregationCase.setYearMonth(currentPriceTableRoute);
syncOfficeAggregationCaseMapper.insertAggregationCase(officeAggregationCase);
});
// 当期价格同步
syncOfficeAggregationCaseMapper.createUltimatePriceTable(currentPriceTableRoute);
List<UltimateOfficeBasePrice> ultimateOfficeBasePrices =
ultimateOfficeBasePriceMapper.getUltimateOfficeBasePrices(yearMonth);
ultimateOfficeBasePrices.parallelStream().forEach(ultimateOfficeBasePrice -> {
ultimateOfficeBasePrice.setYearMonth(currentPriceTableRoute);
syncOfficeAggregationCaseMapper.insertUltimatePriceTable(ultimateOfficeBasePrice);
});
// 当期价格同步
syncOfficeAggregationCaseMapper.createUltimatePriceTable(currentPriceTableRoute);
List<UltimateOfficeBasePrice> ultimateOfficeBasePrices =
ultimateOfficeBasePriceMapper.getUltimateOfficeBasePrices(yearMonth);
ultimateOfficeBasePrices.parallelStream().forEach(ultimateOfficeBasePrice -> {
ultimateOfficeBasePrice.setYearMonth(currentPriceTableRoute);
syncOfficeAggregationCaseMapper.insertUltimatePriceTable(ultimateOfficeBasePrice);
});
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
String operateDate = simpleDateFormat.format(calendar.getTime());
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
String operateDate = simpleDateFormat.format(calendar.getTime());
// 上期价格同步
syncOfficeAggregationCaseMapper.dumpPriceTable(lastPriceTableRoute, operateDate);
syncOfficeAggregationCaseMapper.clearPriceTable(lastPriceTableRoute);
List<UltimateOfficeBasePrice> lastUltimateOfficeBasePrices =
ultimateOfficeBasePriceMapper.getUltimateOfficeBasePrices(lastPriceTableRoute);
lastUltimateOfficeBasePrices.parallelStream().forEach(ultimateOfficeBasePrice -> {
ultimateOfficeBasePrice.setYearMonth(lastPriceTableRoute);
syncOfficeAggregationCaseMapper.insertUltimatePriceTable(ultimateOfficeBasePrice);
});
// 上期价格同步
syncOfficeAggregationCaseMapper.dumpPriceTable(lastPriceTableRoute, operateDate);
syncOfficeAggregationCaseMapper.clearPriceTable(lastPriceTableRoute);
List<UltimateOfficeBasePrice> lastUltimateOfficeBasePrices =
ultimateOfficeBasePriceMapper.getUltimateOfficeBasePrices(lastPriceTableRoute);
lastUltimateOfficeBasePrices.parallelStream().forEach(ultimateOfficeBasePrice -> {
ultimateOfficeBasePrice.setYearMonth(lastPriceTableRoute);
syncOfficeAggregationCaseMapper.insertUltimatePriceTable(ultimateOfficeBasePrice);
});
} catch (Exception e) {
log.error("推送办公数据失败", e);
}
}
}

View File

@ -3,7 +3,7 @@ package com.ruoyi.project.data.price.service.impl;
import com.ruoyi.project.common.VueSelectModel;
import com.ruoyi.project.data.price.domain.UltimateResidenceRentBasePrice;
import com.ruoyi.project.data.price.mapper.UltimateResidenceRentPriceMapper;
import com.ruoyi.project.data.price.service.IUltimateResidenceRentBasePriceService;
import com.ruoyi.project.data.price.service.IUltimateResidenceRentPriceService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -14,13 +14,11 @@ import java.util.List;
/**
* 核准住宅租赁基价 Service业务层处理
*
* @author ruoyi
* @author purple
* @date 2020-05-20
*/
@Service
public class UltimateResidenceRentBasePriceServiceImpl implements IUltimateResidenceRentBasePriceService {
private static final Logger log = LoggerFactory.getLogger(UltimateResidenceRentBasePriceServiceImpl.class);
public class UltimateResidenceRentPriceServiceImpl implements IUltimateResidenceRentPriceService {
@Autowired
private UltimateResidenceRentPriceMapper ultimateResidenceRentPriceMapper;
@ -40,5 +38,4 @@ public class UltimateResidenceRentBasePriceServiceImpl implements IUltimateResid
return ultimateResidenceRentPriceMapper.yearMonthList();
}
}

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.data.cases.mapper.ResidenceRentAggregationCaseMapper">
<resultMap id="AggregationCaseResultMapping" type="com.ruoyi.project.data.cases.domain.CleanResidenceRentAggregationCase">
<result property="householdsIdSRC" column="HouseholdsID_SRC"/>
<result property="projectIdSRC" column="ProjectID_SRC"/>
<result property="communityId" column="ProjectID"/>
<result property="buildingId" column="BuildingID"/>
<result property="rentType" column="RentType"/>
<result property="roomNum" column="Room"/>
<result property="hallNum" column="Hall"/>
<result property="bashRoomNum" column="Bashroom"/>
<result property="area" column="Area"/>
<result property="toward" column="Towards"/>
<result property="totalFloor" column="UpperFloorSum"/>
<result property="currentFloor" column="UpperFloorNum"/>
<result property="elevator" column="Elevator"/>
<result property="decoration" column="Decoration"/>
<result property="year" column="Year"/>
<result property="areaCoefficient" column="AreaCoff"/>
<result property="towardCoefficient" column="TowardsCoff"/>
<result property="floorCoefficient" column="FloorCoff"/>
<result property="decorationCoefficient" column="DecorationRng"/>
<result property="yearCoefficient" column="YearCoff"/>
<result property="buildingCoefficient" column="BuildingCoff"/>
<result property="roomTypeCoefficient" column="RoomTypeCoff"/>
<result property="totalPrice" column="PriceTotal"/>
<result property="unitPrice" column="PriceUnit"/>
<result property="priceScatterRent" column="PriceScatterRent"/>
<result property="priceEntireRent" column="PriceEntireRent"/>
<result property="priceShareRent0" column="PriceShareRent0"/>
<result property="priceShareRent" column="PriceShareRent"/>
<result property="visitedNum" column="Visited_Num"/>
<result property="firstVisitedDate" column="First_Visit_Time" jdbcType="DATE"/>
<result property="visitedNum15" column="Visited_Num_15"/>
<result property="visitedNum30" column="Visited_Num_30"/>
<result property="status" column="Status"/>
<result property="adjustedValue" column="AdjustedValue"/>
<result property="adjustedPst" column="AdjustedPst"/>
<result property="adjustedCumValue" column="AdjustedCumValue"/>
<result property="adjustedCumPst" column="AdjustedCumPst"/>
<result property="adjustedCumValueAbs" column="AdjustedCumValueAbs"/>
<result property="adjustedCumPstAbs" column="AdjustedCumPstAbs"/>
<result property="adjustedCumNum" column="AdjustedCumNum"/>
<result property="priceTotalIn" column="PriceTotalIn"/>
<result property="priceTotalOut" column="PriceTotalOut"/>
<result property="priceDateIn" column="PriceDateIn" jdbcType="DATE"/>
<result property="priceDateOut" column="PriceDateOut" jdbcType="DATE"/>
<result property="origin" column="Origin"/>
<result property="urlHouseholds" column="UrlHouseholds"/>
<result property="urlProjects" column="UrlProjects"/>
<result property="caseName" column="CaseName"/>
<result property="caseType" column="CaseType"/>
<result property="rentPrice_1" column="RentPrice_1"/>
<result property="range" column="Range"/>
<result property="rangeFlag" column="RangeFlag"/>
<result property="rentPrice" column="RentPrice"/>
<result property="entireRentRatio" column="EntireRentRatio"/>
<result property="shareRentRatio" column="ShareRentRatio"/>
<result property="yearMonth" column="yearMonth"/>
</resultMap>
<!-- 汇总案例 -->
<select id="getOfficeAggregationCases" resultMap="AggregationCaseResultMapping">
SELECT HouseholdsID_SRC
,ProjectID_SRC
,ProjectID
,BuildingID
,RentType
,Room
,Hall
,Bashroom
,Area
,Towards
,UpperFloorSum
,UpperFloorNum
,Elevator
,Decoration
,Year
,AreaCoff
,TowardsCoff
,FloorCoff
,DecorationRng
,YearCoff
,BuildingCoff
,RoomTypeCoff
,PriceTotal
,PriceUnit
,PriceScatterRent
,PriceEntireRent
,PriceShareRent0
,PriceShareRent
,Visited_Num
,First_Visit_Time
,Visited_Num_15
,Visited_Num_30
,Status
,AdjustedValue
,AdjustedPst
,AdjustedCumValue
,AdjustedCumPst
,AdjustedCumValueAbs
,AdjustedCumPstAbs
,AdjustedCumNum
,PriceTotalIn
,PriceTotalOut
,PriceDateIn
,PriceDateOut
,Origin
,UrlHouseholds
,UrlProjects
,CaseName
,CaseType
,RentPrice_1
,Range
,RangeFlag
,RentPrice
,EntireRentRatio
,ShareRentRatio
,${yearMonth} as yearMonth
FROM dbo.DW_HOUSINGCASE_RENT_COMM_${yearMonth}
</select>
</mapper>

View File

@ -2,8 +2,8 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.data.cases.mapper.sync.SyncOriginalResidenceRentAggregationCaseMapper">
<update id="createTable">
<mapper namespace="com.ruoyi.project.data.cases.mapper.sync.SyncResidenceRentCaseMapper">
<update id="createAggregationCaseTable">
<bind name="targetTableName" value="'dbo.DW_HOUSINGCASE_RENT_COMM_' + yearMonth"/>
IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL
drop table ${targetTableName};
@ -68,7 +68,7 @@
)
</update>
<insert id="insert" parameterType="com.ruoyi.project.data.cases.domain.OriginalResidenceSaleOpeningCase">
<insert id="insertAggregationCaseTable" parameterType="com.ruoyi.project.data.cases.domain.CleanResidenceRentAggregationCase">
insert into dbo.DW_HOUSINGCASE_RENT_COMM_${yearMonth}
(
HouseholdsID_SRC
@ -128,27 +128,74 @@
, ShareRentRatio
) values
(
#{caseLianJiaId},
#{caseLianJiaCommunityId},
#{caseTitle},
#{caseApartmentLayout},
#{caseArea},
#{caseToward},
#{caseStorey},
#{caseLastDeal,jdbcType=DATE},
#{caseElevator},
#{caseDecoration},
#{caseYear},
#{caseAddress},
#{casePrice},
#{caseCommunityName},
#{caseVisitedNum},
#{caseFirstVisitTime,jdbcType=DATE},
#{caseVisitedNum15},
#{caseVisitedNum30},
#{caseUrl},
#{caseCommunityUrl},
#{caseGetDate,jdbcType=DATE}
#{householdsIdSRC},
#{projectIdSRC},
#{communityId},
#{buildingId},
#{rentType},
#{roomNum},
#{hallNum},
#{bashRoomNum},
#{area},
#{toward},
#{totalFloor},
#{currentFloor},
#{elevator},
#{decoration},
#{year},
#{areaCoefficient},
#{towardCoefficient},
#{floorCoefficient},
#{decorationCoefficient},
#{yearCoefficient},
#{buildingCoefficient},
#{roomTypeCoefficient},
#{totalPrice},
#{unitPrice},
#{priceScatterRent},
#{priceEntireRent},
#{priceShareRent0},
#{priceShareRent},
#{visitedNum},
#{firstVisitedDate,jdbcType=DATE},
#{visitedNum15},
#{visitedNum30},
#{status},
#{adjustedValue},
#{adjustedPst},
#{adjustedCumValue},
#{adjustedCumPst},
#{adjustedCumValueAbs},
#{adjustedCumPstAbs},
#{adjustedCumNum},
#{priceTotalIn},
#{priceTotalOut},
#{priceDateIn,jdbcType=DATE},
#{priceDateOut,jdbcType=DATE},
#{origin},
#{urlHouseholds},
#{urlProjects},
#{caseName},
#{caseType},
#{rentPrice_1},
#{range},
#{rangeFlag},
#{rentPrice},
#{entireRentRatio},
#{shareRentRatio}
)
</insert>
<!--备份表-->
<update id="dumpPriceTable">
<bind name="backUpTableName" value="'dbo.ODS_PROJECT_RENT_PRICE_INFO_' + yearMonth+'_'+operateDate+'_bak'"/>
<bind name="targetTableName" value="'dbo.ODS_PROJECT_RENT_PRICE_INFO_' + yearMonth"/>
IF OBJECT_ID(#{backUpTableName}, 'U') IS NOT NULL
drop table ${backUpTableName}
select * into ${backUpTableName} from ${targetTableName}
</update>
<update id="clearPriceTable">
<bind name="targetTableName" value="'dbo.ODS_PROJECT_RENT_PRICE_INFO_' + yearMonth"/>
IF OBJECT_ID(#{targetTableName}, 'U') IS NOT NULL
truncate table ${targetTableName}
</update>
</mapper>

View File

@ -111,4 +111,57 @@
where name like 'ODS_PROJECT_RENT_PRICE_INFO_%' and name not like '%_bak'
order by cast(right(name,6) as int) desc
</select>
<resultMap id="ultimatePriceMapping" type="com.ruoyi.project.data.price.domain.UltimateResidenceRentBasePrice">
<result property="id" column="id"/>
<result property="communityId" column="projectID"/>
<result property="priceType" column="priceType"/>
<result property="basePrice_1" column="basePrice_1"/>
<result property="rentPrice" column="rentPrice"/>
<result property="sumCase1" column="sumCase1"/>
<result property="voppa" column="voppa"/>
<result property="voppat" column="voppat"/>
<result property="gf_1Room" column="gf_1Room"/>
<result property="gf_2Room" column="gf_2Room"/>
<result property="gy_2Room" column="gy_2Room"/>
<result property="gy_3Room" column="gy_3Room"/>
<result property="one_Room" column="one_Room"/>
<result property="two_Room" column="two_Room"/>
<result property="three_Room" column="three_Room"/>
<result property="entireRentRatio" column="entireRentRatio"/>
<result property="entireRentNum" column="entireRentNum"/>
<result property="shareRentRatio" column="shareRentRatio"/>
<result property="shareRentNum" column="shareRentNum"/>
<result property="saleRentRatio" column="saleRentRatio"/>
<result property="modifyDate" column="modifyDate" jdbcType="DATE"/>
<result property="status" column="status"/>
<result property="adjEvd" column="adjEvd"/>
<result property="yearMonth" column="yearMonth"/>
</resultMap>
<select id="getMonthly" resultMap="ultimatePriceMapping">
SELECT ID
,ProjectID
,PriceType
,BasePrice_1
,RentPrice
,SumCase1
,VOPPAT
,VOPPA
,GF_1Room
,GF_2Room
,GY_2Room
,GY_3Room
,One_Room
,Two_Room
,Three_Room
,EntireRentRatio
,EntireRentNum
,ShareRentRatio
,ShareRentNum
,SaleRentRatio
,ModifyDate
,Status
,AdjEvd
,${yearMonth} as yearMonth
FROM dbo.ODS_PROJECT_RENT_PRICE_INFO_${yearMonth}
</select>
</mapper>

View File

@ -1,6 +1,7 @@
package com.ruoyi;
import com.ruoyi.project.data.cases.domain.CleanResidenceRentAggregationCase;
import com.ruoyi.project.data.cases.domain.OfficeAggregationCase;
import com.ruoyi.project.data.cases.domain.OriginalResidenceRentClosingCase;
import com.ruoyi.project.data.price.domain.ComputeResidenceSaleBasePrice;
@ -95,7 +96,7 @@ public class GenerateTableTests {
@Test
public void generateBatchGuoHaoInsertSqL() {
Class targetClass = UltimateOfficeBasePrice.class;
Class targetClass = CleanResidenceRentAggregationCase.class;
List<Field> fieldList = new ArrayList<>();
while (targetClass != null) {