Browse Source

1.1.0 地块模板导入功能重构

feature/v1.1.0
peihao 4 years ago
parent
commit
2ed6ef796e
  1. 10
      air/src/main/java/com/air/land/controller/LandListedController.java
  2. 4
      air/src/main/java/com/air/land/entity/LandListed.java
  3. 61
      air/src/main/java/com/air/land/service/impl/LandListedServiceImpl.java
  4. 45
      air/src/main/java/com/air/land/service/impl/LandToListServiceImpl.java
  5. 35
      air/src/main/java/com/air/utils/DateUtil.java
  6. 155
      air/src/main/java/com/air/utils/ExcelUtil.java
  7. 8
      air/src/main/resources/application.yml
  8. 376
      air/src/main/resources/config/landListed-config.json
  9. 266
      air/src/main/resources/config/landToList-config.json
  10. 24
      air/src/main/resources/mapper/AppletsMapMapper.xml

10
air/src/main/java/com/air/land/controller/LandListedController.java

@ -2,11 +2,8 @@ package com.air.land.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.air.land.dto.LandListedDto;
import com.air.land.dto.LandListedStatisticsDto;
import com.air.land.entity.LandListed;
import com.air.land.service.LandListedService;
import com.air.land.vo.LandListedAppletsVo;
import com.air.land.vo.LandListedPageVo;
import com.air.land.vo.LandListedVo;
import com.air.utils.DateUtil;
@ -17,12 +14,10 @@ import com.cinderella.framework.common.core.util.R;
import com.cinderella.framework.common.data.mybatis.QueryPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -30,10 +25,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@ -56,6 +48,7 @@ public class LandListedController {
@Value("${template.land_listed}")
private String landListedUrl;
/**
* 分页查询
*
@ -225,6 +218,7 @@ public class LandListedController {
public R<String> getLandListedTemplate() {
return R.ok(minioDownUrl + landListedUrl);
}
}

4
air/src/main/java/com/air/land/entity/LandListed.java

@ -88,9 +88,9 @@ public class LandListed extends Model<LandListed> {
private BigDecimal civilAirDefence;
@ApiModelProperty(value = "特殊条件")
private String specialPlan;
@ApiModelProperty(value = "装配要求")
@ApiModelProperty(value = "装配建筑")
private String assemblyBuilding;
@ApiModelProperty(value = "绿色要求")
@ApiModelProperty(value = "绿色建筑")
private String greenBuilding;
@ApiModelProperty(value = "其他条件")
private String otherConditions;

61
air/src/main/java/com/air/land/service/impl/LandListedServiceImpl.java

@ -11,6 +11,7 @@ import com.air.land.mapper.LandListedMapper;
import com.air.land.service.*;
import com.air.land.vo.LandListedAppletsVo;
import com.air.utils.DateUtil;
import com.air.utils.ExcelUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -108,11 +109,59 @@ public class LandListedServiceImpl extends ServiceImpl<LandListedMapper, LandLis
public boolean importLandListExcel(MultipartFile file) {
List<LandListed> dataList;
try {
dataList = importLandListedExcel(file);
dataList = ExcelUtil.importExcel(file.getInputStream(), 0, 1, 0, LandListed.class, "config/landListed-config.json");
} catch (Exception e) {
log.error("导入已挂牌地块数据解析出错",e);
log.error("导入已挂牌地块数据出错", e);
throw new BusinessException("导入已挂牌地块数据出错");
}
if (CollectionUtil.isNotEmpty(dataList)) {
dataList.forEach(landListed -> {
landListed.setLandListedId(DateUtil.landListedIdfromDate(LocalDateTime.now(), "yyyyMMdd", this.selectId()));
//土地出让面积,计算土地出让面积(亩)(出让面积/2000*3)
BigDecimal landTransferSquare = landListed.getLandTransferSquare();
if (landTransferSquare != null) {
landListed.setLandTransferMu(landTransferSquare.divide(new BigDecimal(2000), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(3)).setScale(0, BigDecimal.ROUND_HALF_UP));
}
//总建筑面积
BigDecimal totalConsArea = landListed.getTotalConsArea();
//成交价(万元)
BigDecimal dealPrice = null;
//出让价款起始价(万元)
BigDecimal transferPrice = null;
if (totalConsArea != null) {
//计算容积率(总建筑面积/土地出让面积)
if (landTransferSquare != null) {
landListed.setPlotRatio(totalConsArea.doubleValue() == 0 ? new BigDecimal(0) : totalConsArea.divide(landTransferSquare, 2, BigDecimal.ROUND_HALF_UP));
}
//出让价款起始价(万元),计算起始楼面价(元/㎡) (出让价款起始价/总建筑面积*10000)
transferPrice = landListed.getTransferPrice();
if (transferPrice != null) {
landListed.setStartingFloorPrice((transferPrice.doubleValue() == 0 || totalConsArea.doubleValue() == 0)
? new BigDecimal(0) : transferPrice.divide(totalConsArea, 4, BigDecimal.ROUND_HALF_UP)
.multiply(new BigDecimal(10000)).setScale(0, BigDecimal.ROUND_HALF_UP));
}
//商业面积,商务面积
BigDecimal bizSpace = landListed.getBizSpace() == null ? new BigDecimal(0) : landListed.getBizSpace();
BigDecimal commerceSpace = landListed.getCommerceSpace() == null ? new BigDecimal(0) : landListed.getCommerceSpace();
//计算商业商务占比((商业面积+商务面积)/总建筑面积)
landListed.setBizCommerceRate(totalConsArea.doubleValue() == 0 ? new BigDecimal(0) : (bizSpace.add(commerceSpace)).
divide(totalConsArea, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP));
//成交价(万元),计算成交楼面价(元/㎡) (成交价/总建筑面积*10000)
dealPrice = landListed.getDealPrice();
if (dealPrice != null) {
landListed.setDealFloorPrice((dealPrice.doubleValue() == 0 || totalConsArea.doubleValue() == 0)
? new BigDecimal(0) : dealPrice.divide(totalConsArea, 4, BigDecimal.ROUND_HALF_UP)
.multiply(new BigDecimal(10000)).setScale(0, BigDecimal.ROUND_HALF_UP));
}
}
//计算溢价率
if (dealPrice != null && transferPrice != null) {
landListed.setPremiumRate((dealPrice.doubleValue() == 0 || transferPrice.doubleValue() == 0)
? new BigDecimal(0) : (dealPrice.subtract(transferPrice)).divide(transferPrice, 4, BigDecimal.ROUND_HALF_UP)
.multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP));
}
});
}
return this.saveBatch(dataList);
}
@ -294,10 +343,11 @@ public class LandListedServiceImpl extends ServiceImpl<LandListedMapper, LandLis
/**
* 将已挂牌地块信息转换为excel导出格式
* @author peihao
*
* @param data 拟已牌地块信息
* @date 2021/8/25
* @return
* @author peihao
* @date 2021/8/25
**/
private List<String> entityToList(LandListed data) {
List<String> list = new ArrayList<>();
@ -483,9 +533,10 @@ public class LandListedServiceImpl extends ServiceImpl<LandListedMapper, LandLis
/**
* 数字转换百分比
*
* @return
* @author peihao
* @date 2021/8/25
* @return
**/
private String strRateFormat(BigDecimal value, int decimal) {
return value == null ? null : stringFormat(value, decimal) + "%";

45
air/src/main/java/com/air/land/service/impl/LandToListServiceImpl.java

@ -2,10 +2,7 @@ package com.air.land.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.air.applets.dto.LandDto;
import com.air.applets.dto.MeasureTrendDto;
import com.air.applets.vo.LandVo;
import com.air.common.Constant;
import com.air.enums.LandListStatusEnum;
@ -92,11 +89,43 @@ public class LandToListServiceImpl extends ServiceImpl<LandToListMapper, LandToL
public boolean importLandToListExcel(MultipartFile file) {
List<LandToList> dataList;
try {
dataList = importLandListedExcel(file);
dataList = ExcelUtil.importExcel(file.getInputStream(), 0, 1, 0, LandToList.class, "config/landToList-config.json");
} catch (Exception e) {
log.error("导入拟挂牌地块数据解析出错", e);
throw new BusinessException("导入拟挂牌地块数据出错");
}
if (CollectionUtil.isNotEmpty(dataList)) {
dataList.forEach(landToList -> {
landToList.setProposedseriaId(DateUtil.landToListIdfromDate(LocalDateTime.now(), "yyyyMMdd", this.selectId()));
//土地出让面积,计算土地出让面积(亩)(出让面积/2000*3)
BigDecimal landTransferSquare = landToList.getLandTransferSquare();
if (landTransferSquare != null) {
landToList.setLandTransferMu(landTransferSquare.divide(new BigDecimal(2000), 4, BigDecimal.ROUND_HALF_UP)
.multiply(new BigDecimal(3)).setScale(0, BigDecimal.ROUND_HALF_UP));
}
//总建筑面积
BigDecimal totalConsArea = landToList.getTotalConsArea();
if (totalConsArea != null) {
//计算容积率(总建筑面积/土地出让面积)
if (landTransferSquare != null) {
landToList.setPlotRatio(totalConsArea.doubleValue() == 0 ? new BigDecimal(0) : totalConsArea.divide(landTransferSquare, 2, BigDecimal.ROUND_HALF_UP));
}
//出让价款起始价(万元),计算起始楼面价(元/㎡) (出让价款起始价/总建筑面积*10000)
BigDecimal transferPrice = landToList.getTransferPrice();
if (transferPrice != null) {
landToList.setStartingFloorPrice((transferPrice.doubleValue() == 0 || totalConsArea.doubleValue() == 0)
? new BigDecimal(0) : transferPrice.divide(totalConsArea, 4, BigDecimal.ROUND_HALF_UP)
.multiply(new BigDecimal(10000)).setScale(0, BigDecimal.ROUND_HALF_UP));
}
//商业面积,商务面积
BigDecimal bizSpace = landToList.getBizSpace() == null ? new BigDecimal(0) : landToList.getBizSpace();
BigDecimal commerceSpace = landToList.getCommerceSpace() == null ? new BigDecimal(0) : landToList.getCommerceSpace();
//计算商业商务占比((商业面积+商务面积)/总建筑面积)
landToList.setBizCommerceRate(totalConsArea.doubleValue() == 0 ? new BigDecimal(0) : (bizSpace.add(commerceSpace))
.divide(totalConsArea, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP));
}
});
}
return this.saveBatch(dataList);
}
@ -221,10 +250,11 @@ public class LandToListServiceImpl extends ServiceImpl<LandToListMapper, LandToL
/**
* 将拟挂牌地块信息转换为excel导出格式
* @author peihao
*
* @param data 拟挂牌地块信息
* @date 2021/8/25
* @return
* @author peihao
* @date 2021/8/25
**/
private List<String> entityToList(LandToList data) {
List<String> list = new ArrayList<>();
@ -376,9 +406,10 @@ public class LandToListServiceImpl extends ServiceImpl<LandToListMapper, LandToL
/**
* 数字转换百分比
*
* @return
* @author peihao
* @date 2021/8/25
* @return
**/
private String strRateFormat(BigDecimal value, int decimal) {
return value == null ? null : stringFormat(value, decimal) + "%";

35
air/src/main/java/com/air/utils/DateUtil.java

@ -1,6 +1,7 @@
package com.air.utils;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.text.SimpleDateFormat;
@ -16,6 +17,7 @@ import java.util.Date;
* @author peihao
* @date 2020-06-28
**/
@Slf4j
public class DateUtil {
/**
@ -34,10 +36,11 @@ public class DateUtil {
/**
* 距离今天多久
* @author peihao
*
* @param date 时间
* @date 2020/6/28
* @return
* @author peihao
* @date 2020/6/28
**/
public static String fromToday(Date date) {
long time = date.getTime() / 1000;
@ -54,10 +57,11 @@ public class DateUtil {
/**
* 字符串转时间
* @author peihao
*
* @param dateString 时间
* @date 2020/6/28
* @return
* @author peihao
* @date 2020/6/28
**/
public static LocalDate fromLocalDate(String dateString, String pattern) {
if (StrUtil.isEmpty(dateString)) {
@ -69,10 +73,11 @@ public class DateUtil {
/**
* 字符串转时间
* @author peihao
*
* @param dateString 时间
* @date 2020/6/28
* @return
* @author peihao
* @date 2020/6/28
**/
public static LocalDateTime fromLocalDateTime(String dateString, String pattern) {
LocalDate localDate = fromLocalDate(dateString, pattern);
@ -81,24 +86,32 @@ public class DateUtil {
/**
* date转 LocalDate
* @author peihao
*
* @param date 时间
* @date 2020/6/28
* @return
* @author peihao
* @date 2020/6/28
**/
public static LocalDate dateToLocalDate(Date date) {
if (null == date) {
return null;
}
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate localDate = null;
try {
localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
} catch (Exception e) {
log.error("时间格式解析错误:", e);
}
return localDate;
}
/**
* 字符串转时间
* @author peihao
*
* @param dateString 时间
* @date 2020/6/28
* @return
* @author peihao
* @date 2020/6/28
**/
public static String fromString(LocalDate dateString, String pattern) {
if (null == dateString || StringUtils.isEmpty(pattern)) {

155
air/src/main/java/com/air/utils/ExcelUtil.java

@ -1,14 +1,13 @@
package com.air.utils;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.air.common.entity.ExcelConfig;
import com.cinderella.framework.common.core.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
@ -18,6 +17,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.nio.charset.Charset;
import java.util.*;
import java.util.stream.Collectors;
@ -28,6 +28,7 @@ import java.util.stream.Collectors;
* @author peihao
* @date 2021-05-31
**/
@Slf4j
public class ExcelUtil {
@ -104,6 +105,19 @@ public class ExcelUtil {
return result;
}
/**
* 导入数据解析
*
* @param fileInputStream 文件流
* @param startSheet 读取的sheet
* @param titleRow 表头行
* @param titleColumn 开始列
* @param clazz 返回数据类
* @param path 配置文件路径
* @return
* @author peihao
* @date 2021/10/13
**/
public static <T> List<T> importExcel(InputStream fileInputStream, int startSheet, int titleRow, int titleColumn, Class<T> clazz, String path) throws IOException {
//读取文件的指定sheet
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
@ -132,52 +146,161 @@ public class ExcelUtil {
for (int i = titleRow + 1; i < totalRows; i++) {
Map<String, Object> map = new HashMap<>();
XSSFRow row = sheet.getRow(i);
for (ExcelConfig e:excelConfigList){
Object value = getCellString(row.getCell(e.getColumn()), e.getValueType());
map.put(e.getFieldName(),value);
for (ExcelConfig excelConfig : excelConfigList) {
try {
Object value = getCellString(row.getCell(excelConfig.getColumn()), excelConfig.getValueType());
map.put(excelConfig.getFieldName(), value);
} catch (Exception e) {
log.error("解析出错:", e);
throw new BusinessException("第" + i + "行,第" + excelConfig.getFieldName() + "列数据解析出现错误");
}
}
mapList.add(map);
}
return mapList.stream().map(e -> BeanUtil.mapToBean(e, clazz, true)).collect(Collectors.toList());
}
/**
* 读取excel数据列模板配置
*
* @param path 配置文件路径
* @param clazz 配置实体类
* @return
* @author peihao
* @date 2021/10/13
**/
public static <T> List<T> getExcelJsonConfig(String path, Class<T> clazz) {
String config = ResourceUtil.readStr(path, Charset.defaultCharset());
return JSONUtil.parseArray(config).stream().map(e -> JSONUtil.toBean((JSONObject) e, clazz)).collect(Collectors.toList());
}
/**
* 根据不同的数据类型获取列的值
*
* @param cell
* @param valueType 数据类型
* @return
* @author peihao
* @date 2021/10/13
**/
public static Object getCellString(XSSFCell cell, String valueType) {
String cellStrValue = getCellStrValue(cell);
switch (valueType) {
case "string":
return cellStrValue;
case "stringInt":
return String.valueOf(Double.valueOf(cellStrValue).intValue());
case "int":
return Integer.valueOf(cellStrValue);
case "date":
return DateUtil.dateToLocalDate(cell.getDateCellValue());
case "BigDecimal":
return numberFormat(cellStrValue, 0);
case "BigDecimal_mu":
return numberFormat(cellStrValue, 100, 0);
case "BigDecimal_2":
return numberFormat(cellStrValue, 2);
case "Integer":
return StrUtil.isEmpty(cellStrValue) ? null : Integer.valueOf(cellStrValue);
case "LocalDate":
return dateFormat(cell);
case "enum":
return null;
return getEnumValue(cellStrValue);
default:
return null;
}
}
/**
* 字符串转换数字
*
* @param decimal 保留小数位
* @param value 数据
* @return
* @author peihao
* @date 2021/6/25
**/
private static BigDecimal numberFormat(String value, int decimal) {
if (StringUtils.isEmpty(value)) {
return null;
}
return new BigDecimal(value).setScale(decimal, BigDecimal.ROUND_HALF_UP);
}
/**
* 字符串转换数字
*
* @param decimal 保留小数位
* @param value 数据
* @param mulitple 倍数
* @return
* @author peihao
* @date 2021/6/25
**/
private static BigDecimal numberFormat(String value, int mulitple, int decimal) {
if (StringUtils.isEmpty(value)) {
return null;
}
return new BigDecimal(value).multiply(new BigDecimal(mulitple)).setScale(decimal, BigDecimal.ROUND_HALF_UP);
}
/**
* 获取单元格的值
*
* @param cell 单元格
* @return
* @author peihao
* @date 2021/10/13
**/
public static String getCellStrValue(XSSFCell cell) {
if (cell == null) {
return null;
}
String value;
try {
value = cell.getRawValue();
value = cell.getStringCellValue();
} catch (Exception e) {
value = cell.toString();
value = cell.getRawValue();
}
return valueFormat(value);
}
/**
* 去除字符串中的空格和'-'
*
* @param value
* @return
* @author peihao
* @date 2021/10/13
**/
private static String valueFormat(String value) {
value = StringUtils.isNotEmpty(value) ? value.trim() : value;
value = StringUtils.isNotEmpty(value) ? StrUtil.trim(value) : value;
value = StringUtils.equals("-", value) ? "" : value;
return value;
}
/**
* 获取单元格时间
*
* @param cell 单元格
* @return
* @author peihao
* @date 2021/10/13
**/
private static Date dateFormat(XSSFCell cell) {
Date dateCellValue = null;
try {
dateCellValue = cell.getDateCellValue();
} catch (Exception e) {
log.error("时间格式解析错误", e);
}
return dateCellValue;
}
private static String getEnumValue(String value) {
if (StrUtil.isBlank(value)) {
return null;
}
if ("是".equals(value)) {
value = "1";
} else if ("否".equals(value)) {
value = "0";
}
return value;
}
}

8
air/src/main/resources/application.yml

@ -10,8 +10,8 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver
username: air
password: air123456
url: jdbc:mysql://127.0.0.1:4000/air?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true
# url: jdbc:mysql://124.71.210.242:4000/air?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true
# url: jdbc:mysql://127.0.0.1:4000/air?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://124.71.210.242:4000/air?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true
stat-view-servlet:
enabled: true
url-pattern: /druid/*
@ -34,7 +34,7 @@ spring:
multipart:
max-file-size: 100MB
max-request-size: 100MB
location: /opt/air/tmp_files
# location: /opt/air/tmp_files
freemarker:
allow-request-override: false
allow-session-override: false
@ -85,7 +85,7 @@ security:
- /applets/landlisted/calendar/**
- /applets/landlisted/list/**
- /cityArea/**
# - /**
- /**
# 文件系统
minio:

376
air/src/main/resources/config/landListed-config.json

@ -1,6 +1,374 @@
[{
"title": "地块编号",
"key": "landCode",
[
{
"titleName": "公告序号",
"fieldName": "annoId",
"valueType": "string",
"required": true
}]
},
{
"titleName": "地块编号",
"fieldName": "landCode",
"valueType": "string",
"required": true
},
{
"titleName": "地块位置",
"fieldName": "landPosition",
"valueType": "string",
"required": true
},
{
"titleName": "土地用途",
"fieldName": "landUsage",
"valueType": "string",
"required": false
},
{
"titleName": "土地出让面积(㎡)",
"fieldName": "landTransferSquare",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "总计容建筑面积(㎡)",
"fieldName": "totalConsArea",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "建筑密度(%)",
"fieldName": "buildingDensity",
"valueType": "BigDecimal_mu",
"required": false
},
{
"titleName": "绿地率(%)",
"fieldName": "greenSpaceRatio",
"valueType": "BigDecimal_mu",
"required": false
},
{
"titleName": "限高",
"fieldName": "heighPermitted",
"valueType": "string",
"required": false
},
{
"titleName": "出让年限",
"fieldName": "remiseYears",
"valueType": "string",
"required": false
},
{
"titleName": "出让价款起始价(万元)",
"fieldName": "transferPrice",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "竞买保证金(万元)",
"fieldName": "bidMargin",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "备注",
"fieldName": "bizRemark",
"valueType": "string",
"required": false
},
{
"titleName": "公告开始日期",
"fieldName": "annoDate",
"valueType": "LocalDate",
"required": false
},
{
"titleName": "公告截止日期",
"fieldName": "annoEndDate",
"valueType": "LocalDate",
"required": false
},
{
"titleName": "拍卖日期",
"fieldName": "auctionDate",
"valueType": "LocalDate",
"required": false
},
{
"titleName": "持证准用面积",
"fieldName": "licensedArea",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "商业面积(㎡)",
"fieldName": "bizSpace",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "商务面积(㎡)",
"fieldName": "commerceSpace",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "配建-计容(㎡)",
"fieldName": "allocationCapacity",
"valueType": "string",
"required": false
},
{
"titleName": "配建-不计容(㎡)",
"fieldName": "allocationNotCapacity",
"valueType": "string",
"required": false
},
{
"titleName": "地质灾害",
"fieldName": "geologicHazard",
"valueType": "string",
"required": false
},
{
"titleName": "人防还建(㎡)",
"fieldName": "civilAirDefence",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "特殊条件",
"fieldName": "specialPlan",
"valueType": "string",
"required": false
},
{
"titleName": "装配建筑",
"fieldName": "assemblyBuilding",
"valueType": "string",
"required": false
},
{
"titleName": "绿色建筑",
"fieldName": "greenBuilding",
"valueType": "string",
"required": false
},
{
"titleName": "其他条件",
"fieldName": "otherConditions",
"valueType": "string",
"required": false
},
{
"titleName": "成品住宅比例(%)",
"fieldName": "percentFinishedHousing",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "竞买条件",
"fieldName": "biddingConditions",
"valueType": "string",
"required": false
},
{
"titleName": "勾地形式",
"fieldName": "hookForm",
"valueType": "string",
"required": false
},
{
"titleName": "一级治理方",
"fieldName": "firstGovernance",
"valueType": "string",
"required": false
},
{
"titleName": "勾地企业",
"fieldName": "landEnterprises",
"valueType": "string",
"required": false
},
{
"titleName": "付款节奏",
"fieldName": "paymentRhythm",
"valueType": "string",
"required": false
},
{
"titleName": "出让人",
"fieldName": "bargainor",
"valueType": "string",
"required": false
},
{
"titleName": "城市",
"fieldName": "city",
"valueType": "string",
"required": false
},
{
"titleName": "行政区",
"fieldName": "canton",
"valueType": "string",
"required": false
},
{
"titleName": "特区",
"fieldName": "specialZone",
"valueType": "string",
"required": false
},
{
"titleName": "环线",
"fieldName": "loopWire",
"valueType": "string",
"required": false
},
{
"titleName": "大组团",
"fieldName": "bigGroup",
"valueType": "string",
"required": false
},
{
"titleName": "小组团",
"fieldName": "smallGroup",
"valueType": "string",
"required": false
},
{
"titleName": "奥维定位",
"fieldName": "ovePosition",
"valueType": "string",
"required": false
},
{
"titleName": "经纬度(百度BD09)",
"fieldName": "lonLatBd",
"valueType": "string",
"required": false
},
{
"titleName": "是否成交",
"fieldName": "deal",
"valueType": "enum",
"required": false
},
{
"titleName": "出让方式",
"fieldName": "transferMode",
"valueType": "string",
"required": false
},
{
"titleName": "受让单位",
"fieldName": "assignee",
"valueType": "string",
"required": false
},
{
"titleName": "拿地企业-简称",
"fieldName": "landEnterpriseShort",
"valueType": "string",
"required": false
},
{
"titleName": "成交总价(万元)",
"fieldName": "dealPrice",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "商业自持比例(%)",
"fieldName": "commercialSelfRatio",
"valueType": "BigDecimal_mu",
"required": false
},
{
"titleName": "商业自持年份",
"fieldName": "commercialSelfYear",
"valueType": "Integer",
"required": false
},
{
"titleName": "住宅自持比例(%)",
"fieldName": "homeSelfRatio",
"valueType": "BigDecimal_mu",
"required": false
},
{
"titleName": "住宅自持年份",
"fieldName": "homeSelfYear",
"valueType": "Integer",
"required": false
},
{
"titleName": "无偿移交比例(%)",
"fieldName": "percentUnpaid",
"valueType": "BigDecimal_mu",
"required": false
},
{
"titleName": "人才公寓面积(㎡)",
"fieldName": "talenApartmentArea",
"valueType": "BigDecimal_2",
"required": false
},
{
"titleName": "参拍企业",
"fieldName": "participatingEnterprises",
"valueType": "string",
"required": false
},
{
"titleName": "项目状态",
"fieldName": "projectStatus",
"valueType": "string",
"required": false
},
{
"titleName": "楼盘名称",
"fieldName": "buildingName",
"valueType": "string",
"required": false
},
{
"titleName": "项目公司",
"fieldName": "projectCompany",
"valueType": "string",
"required": false
},
{
"titleName": "确权时间",
"fieldName": "confirmationTime",
"valueType": "LocalDate",
"required": false
},
{
"titleName": "操盘企业",
"fieldName": "tradingEnterprises",
"valueType": "string",
"required": false
},
{
"titleName": "合作方",
"fieldName": "partner",
"valueType": "string",
"required": false
},
{
"titleName": "经营企业",
"fieldName": "conductEnterprise",
"valueType": "string",
"required": false
},
{
"titleName": "项目首开时间",
"fieldName": "firstOpenTime",
"valueType": "LocalDate",
"required": false
}
]

266
air/src/main/resources/config/landToList-config.json

@ -0,0 +1,266 @@
[
{
"titleName": "供地状态",
"fieldName": "supplyStatus",
"valueType": "string",
"required": false
},
{
"titleName": "预计挂牌时间",
"fieldName": "estimatedListingTime",
"valueType": "string",
"required": false
},
{
"titleName": "公告序号",
"fieldName": "annoId",
"valueType": "string",
"required": false
},
{
"titleName": "地块编号",
"fieldName": "landCode",
"valueType": "string",
"required": true
},
{
"titleName": "地块位置",
"fieldName": "landPosition",
"valueType": "string",
"required": true
},
{
"titleName": "土地用途",
"fieldName": "landUsage",
"valueType": "string",
"required": false
},
{
"titleName": "土地出让面积(㎡)",
"fieldName": "landTransferSquare",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "总计容建筑面积(㎡)",
"fieldName": "totalConsArea",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "建筑密度(%)",
"fieldName": "buildingDensity",
"valueType": "BigDecimal_mu",
"required": false
},
{
"titleName": "绿地率(%)",
"fieldName": "greenSpaceRatio",
"valueType": "BigDecimal_mu",
"required": false
},
{
"titleName": "限高",
"fieldName": "heighPermitted",
"valueType": "string",
"required": false
},
{
"titleName": "出让年限",
"fieldName": "remiseYears",
"valueType": "string",
"required": false
},
{
"titleName": "出让价款起始价(万元)",
"fieldName": "transferPrice",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "竞买保证金(万元)",
"fieldName": "bidMargin",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "备注",
"fieldName": "bizRemark",
"valueType": "string",
"required": false
},
{
"titleName": "公告开始日期",
"fieldName": "annoDate",
"valueType": "LocalDate",
"required": false
},
{
"titleName": "公告截止日期",
"fieldName": "annoEndDate",
"valueType": "LocalDate",
"required": false
},
{
"titleName": "拍卖日期",
"fieldName": "auctionDate",
"valueType": "LocalDate",
"required": false
},
{
"titleName": "持证准用面积",
"fieldName": "licensedArea",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "商业面积(㎡)",
"fieldName": "bizSpace",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "商务面积(㎡)",
"fieldName": "commerceSpace",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "配建-计容(㎡)",
"fieldName": "allocationCapacity",
"valueType": "string",
"required": false
},
{
"titleName": "配建-不计容(㎡)",
"fieldName": "allocationNotCapacity",
"valueType": "string",
"required": false
},
{
"titleName": "地质灾害",
"fieldName": "geologicHazard",
"valueType": "string",
"required": false
},
{
"titleName": "人防还建(㎡)",
"fieldName": "civilAirDefence",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "特殊条件",
"fieldName": "specialPlan",
"valueType": "string",
"required": false
},
{
"titleName": "装配建筑",
"fieldName": "assemblyBuilding",
"valueType": "string",
"required": false
},
{
"titleName": "绿色建筑",
"fieldName": "greenBuilding",
"valueType": "string",
"required": false
},
{
"titleName": "其他条件",
"fieldName": "otherConditions",
"valueType": "string",
"required": false
},
{
"titleName": "成品住宅比例(%)",
"fieldName": "percentFinishedHousing",
"valueType": "BigDecimal",
"required": false
},
{
"titleName": "竞买条件",
"fieldName": "biddingConditions",
"valueType": "string",
"required": false
},
{
"titleName": "勾地形式",
"fieldName": "hookForm",
"valueType": "string",
"required": false
},
{
"titleName": "一级治理方",
"fieldName": "firstGovernance",
"valueType": "string",
"required": false
},
{
"titleName": "勾地企业",
"fieldName": "landEnterprises",
"valueType": "string",
"required": false
},
{
"titleName": "付款节奏",
"fieldName": "paymentRhythm",
"valueType": "string",
"required": false
},
{
"titleName": "出让人",
"fieldName": "bargainor",
"valueType": "string",
"required": false
},
{
"titleName": "城市",
"fieldName": "city",
"valueType": "string",
"required": false
},
{
"titleName": "行政区",
"fieldName": "canton",
"valueType": "string",
"required": false
},
{
"titleName": "特区",
"fieldName": "specialZone",
"valueType": "string",
"required": false
},
{
"titleName": "环线",
"fieldName": "loopWire",
"valueType": "string",
"required": false
},
{
"titleName": "大组团",
"fieldName": "bigGroup",
"valueType": "string",
"required": false
},
{
"titleName": "小组团",
"fieldName": "smallGroup",
"valueType": "string",
"required": false
},
{
"titleName": "奥维定位",
"fieldName": "ovePosition",
"valueType": "string",
"required": false
},
{
"titleName": "经纬度(百度BD09)",
"fieldName": "lonLatBd",
"valueType": "string",
"required": false
}
]

24
air/src/main/resources/mapper/AppletsMapMapper.xml

@ -46,21 +46,21 @@
<select id="getLandToList" resultType="com.air.land.entity.LandListedLonLat">
SELECT
lat_id,
proposedseria_id landListedId,
land_code,
name,
land_lon_lat,
line_width,
line_color,
line_opaqueness,
fill_color,
fill_opaqueness
a.lat_id,
a.proposedseria_id landListedId,
a.land_code,
a.name,
a.land_lon_lat,
a.line_width,
a.line_color,
a.line_opaqueness,
a.fill_color,
a.fill_opaqueness
from
land_to_list_lon_lat
land_to_list_lon_lat a join land_to_list b on a.proposedseria_id = b.proposedseria_id
<where>
<if test="city != null and city != ''">
city = #{city}
a.city = #{city}
</if>
</where>
</select>

Loading…
Cancel
Save