feature (住宅租赁基价作价): 推送住宅租赁基价作价
1. 创建汇总案例表 2. 推送汇总案例数据 3. 创建价格表(备份上期价格表) 4. 推送价格数据
This commit is contained in:
parent
2b28b51717
commit
5ef0853f58
@ -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;
|
||||
/**
|
||||
* 累计挂牌总价绝对调整幅度
|
||||
|
@ -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);
|
||||
|
||||
}
|
@ -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);
|
||||
|
||||
}
|
@ -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);
|
||||
|
||||
}
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
*/
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user