Browse Source

增加城市区域地级市搜索,汇总链家成交数据到价值库

wucl 1 year ago
parent
commit
cbc853c6a4
22 changed files with 395 additions and 39 deletions
  1. 2 1
      src/main/java/com/leeroa/dydb/datasource/lianjia/service/DataLianjiaService.java
  2. 111 0
      src/main/java/com/leeroa/dydb/datasource/lianjia/service/impl/DataLianjiaServiceImpl.java
  3. 4 0
      src/main/java/com/leeroa/dydb/datasource/qiyu/bo/DataQiYuDealBo.java
  4. 4 0
      src/main/java/com/leeroa/dydb/datasource/qiyu/bo/DataQiYuUpBo.java
  5. 18 15
      src/main/java/com/leeroa/dydb/datasource/qiyu/dto/DataQiYuDealDTO.java
  6. 18 15
      src/main/java/com/leeroa/dydb/datasource/qiyu/dto/DataQiYuUpDTO.java
  7. 16 0
      src/main/java/com/leeroa/dydb/datasource/qiyu/web/DataQiYuDealCtrl.java
  8. 16 0
      src/main/java/com/leeroa/dydb/datasource/qiyu/web/DataQiYuUpCtrl.java
  9. 5 1
      src/main/java/com/leeroa/dydb/price/bo/CommunityQueryBo.java
  10. 2 0
      src/main/java/com/leeroa/dydb/price/schedule/CommunityPriceSchedule.java
  11. 9 0
      src/main/java/com/leeroa/dydb/price/service/impl/CommunityPriceServiceImpl.java
  12. 17 0
      src/main/java/com/leeroa/dydb/price/web/CommunityQueryCtrl.java
  13. 1 1
      src/main/java/com/leeroa/dydb/utils/PriceUtils.java
  14. 3 0
      src/main/webapp/app/dydb/datasource/dataQiYuDeal/dataQiYuDeal.js
  15. 36 3
      src/main/webapp/app/dydb/datasource/dataQiYuDeal/dataQiYuDeal_list.js
  16. 18 0
      src/main/webapp/app/dydb/datasource/dataQiYuDeal/dataQiYuDeal_list.jsp
  17. 3 0
      src/main/webapp/app/dydb/datasource/dataQiYuUp/dataQiYuUp.js
  18. 35 2
      src/main/webapp/app/dydb/datasource/dataQiYuUp/dataQiYuUp_list.js
  19. 18 0
      src/main/webapp/app/dydb/datasource/dataQiYuUp/dataQiYuUp_list.jsp
  20. 2 0
      src/main/webapp/app/dydb/price/communityQuery/communityQuery.js
  21. 36 1
      src/main/webapp/app/dydb/price/communityQuery/communityQuery_list.js
  22. 21 0
      src/main/webapp/app/dydb/price/communityQuery/communityQuery_list.jsp

+ 2 - 1
src/main/java/com/leeroa/dydb/datasource/lianjia/service/DataLianjiaService.java

@@ -5,6 +5,7 @@ import com.leeroa.dydb.datasource.lianjia.bo.LianjiaParams;
 import com.leeroa.dydb.datasource.lianjia.domain.DataLianjia;
 import com.leeroa.dydb.datasource.lianjia.domain.DataLianjiaCode;
 import com.leeroa.dydb.datasource.lianjia.vo.DataLianjiaVo;
+import com.leeroa.dydb.price.service.DataSourcePriceService;
 import com.michael.core.pager.PageVo;
 
 import java.util.Date;
@@ -14,7 +15,7 @@ import java.util.Map;
 /**
  * @author Michael
  */
-public interface DataLianjiaService {
+public interface DataLianjiaService extends DataSourcePriceService {
 
     /**
      * 保存

+ 111 - 0
src/main/java/com/leeroa/dydb/datasource/lianjia/service/impl/DataLianjiaServiceImpl.java

@@ -5,6 +5,7 @@ import com.leeroa.base.attachment.utils.AttachmentHolder;
 import com.leeroa.base.attachment.vo.AttachmentVo;
 import com.leeroa.base.log.LogHelper;
 import com.leeroa.base.parameter.service.ParameterContainer;
+import com.leeroa.dydb.base.domain.Location;
 import com.leeroa.dydb.datasource.HouseCache;
 import com.leeroa.dydb.datasource.lianjia.bo.DataLianjiaBo;
 import com.leeroa.dydb.datasource.lianjia.bo.LianjiaParams;
@@ -13,6 +14,7 @@ import com.leeroa.dydb.datasource.lianjia.dao.DataLianjiaCodeDao;
 import com.leeroa.dydb.datasource.lianjia.dao.DataLianjiaDao;
 import com.leeroa.dydb.datasource.lianjia.domain.DataLianjia;
 import com.leeroa.dydb.datasource.lianjia.domain.DataLianjiaCode;
+import com.leeroa.dydb.datasource.lianjia.domain.DataLianjiaUp;
 import com.leeroa.dydb.datasource.lianjia.dto.DataLianjiaDTO;
 import com.leeroa.dydb.datasource.lianjia.service.DataLianjiaCodeService;
 import com.leeroa.dydb.datasource.lianjia.service.DataLianjiaService;
@@ -20,6 +22,10 @@ import com.leeroa.dydb.datasource.lianjia.vo.DataLianjiaVo;
 import com.leeroa.dydb.datasource.paimai.utils.LianjiaResponse;
 import com.leeroa.dydb.datasource.paimai.utils.LianjiaUtils;
 import com.leeroa.dydb.datasource.utils.HouseUtils;
+import com.leeroa.dydb.price.bo.DateSourcePriceBO;
+import com.leeroa.dydb.price.domain.CommunityPrice;
+import com.leeroa.dydb.price.service.CommunityPriceService;
+import com.leeroa.dydb.price.vo.DataSourcePriceVO;
 import com.leeroa.dydb.utils.baidu.BaiduData;
 import com.leeroa.dydb.utils.baidu.BaiduMapUtils;
 import com.leeroa.dydb.utils.baidu.BaiduResponseData;
@@ -45,6 +51,7 @@ import org.apache.commons.io.FileUtils;
 import org.apache.log4j.Logger;
 import org.hibernate.Criteria;
 import org.hibernate.Session;
+import org.hibernate.criterion.MatchMode;
 import org.hibernate.criterion.Order;
 import org.hibernate.criterion.Projections;
 import org.hibernate.criterion.Restrictions;
@@ -56,6 +63,7 @@ import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author Michael
@@ -69,6 +77,9 @@ public class DataLianjiaServiceImpl implements DataLianjiaService, BeanWrapCallb
     @Resource
     private DataLianjiaCodeDao dataLianjiaCodeDao;
 
+    @Resource
+    private CommunityPriceService communityPriceService;
+
 
     @Override
     public String save(DataLianjia dataLianjia) {
@@ -211,7 +222,15 @@ public class DataLianjiaServiceImpl implements DataLianjiaService, BeanWrapCallb
         if (data == null || data.isEmpty()) {
             return records;
         }
+        List<String> uniqueHouse = new ArrayList<>();
         for (DataLianjia d : data) {
+            Double dealPrice = d.getDealPrice();
+            if ("cd".equals(params.getCityCode()) && dealPrice < 5000d){
+                continue;
+            }
+            if (!"cd".equals(params.getCityCode()) && dealPrice < 1000d){
+                continue;
+            }
             records++;
             d.setBatchNO(batchNO);
             d.setProvinceName("四川");
@@ -224,6 +243,10 @@ public class DataLianjiaServiceImpl implements DataLianjiaService, BeanWrapCallb
                 d.setBizName(params.getBizName());
             }
             session.save(d);
+            if (!uniqueHouse.contains(d.getHouses())){
+                updateCommunityPrice(d);
+                uniqueHouse.add(d.getHouses());
+            }
         }
         return records;
     }
@@ -418,4 +441,92 @@ public class DataLianjiaServiceImpl implements DataLianjiaService, BeanWrapCallb
     public void doCallback(DataLianjia dataLianjia, DataLianjiaVo vo) {
         ParameterContainer container = ParameterContainer.getInstance();
     }
+
+    @Override
+    public Double avg(DateSourcePriceBO bo) {
+        Date startTime = bo.getStartTime();
+        String houseName = bo.getHouseName();
+        String areaName = bo.getAreaName();
+        final Session session = HibernateUtils.getSession();
+        Criteria criteria = session.createCriteria(DataLianjia.class)
+                .setProjection(Projections.avg("dealPrice"))
+                .add(Restrictions.ge("dealDate", startTime))
+                .add(Restrictions.eq("houses", houseName));
+        if (StringUtils.isNotEmpty(areaName)) {
+            // 去掉最后的区字
+            if (areaName.endsWith("区")) {
+                areaName = areaName.substring(0, areaName.length() - 1);
+            }
+            criteria.add(Restrictions.disjunction(
+                    Restrictions.isNull("areaName"),
+                    Restrictions.like("areaName", areaName, MatchMode.START)
+            ));
+        }
+        return (Double) criteria.uniqueResult();
+    }
+
+    @Override
+    public List<DataSourcePriceVO> source(DateSourcePriceBO bo) {
+        Date startTime = bo.getStartTime();
+        String houseName = bo.getHouseName();
+        String areaName = bo.getAreaName();
+        final Session session = HibernateUtils.getSession();
+        Criteria criteria = session.createCriteria(DataLianjia.class)
+                .add(Restrictions.ge("dealDate", startTime))
+                .add(Restrictions.eq("houses", houseName));
+        if (StringUtils.isNotEmpty(areaName)) {
+            // 去掉最后的区字
+            if (areaName.endsWith("区")) {
+                areaName = areaName.substring(0, areaName.length() - 1);
+            }
+            criteria.add(Restrictions.disjunction(
+                    Restrictions.isNull("areaName"),
+                    Restrictions.like("areaName", areaName, MatchMode.START)
+            ));
+        }
+        criteria.addOrder(Order.asc("dealDate"));
+        List<DataLianjia> data = criteria.list();
+        List<DataSourcePriceVO> voList = new ArrayList<>();
+        data.forEach(k -> {
+            DataSourcePriceVO vo = new DataSourcePriceVO();
+            BeanCopyUtils.copyProperties(k, vo);
+            vo.setSourceName("链家成交");
+            vo.setPrice(k.getDealPrice());
+            vo.setPriceDate(k.getDealDate());
+            voList.add(vo);
+        });
+        return voList;
+    }
+
+    private void updateCommunityPrice(DataLianjia dataLianjia){
+        CommunityPrice cp = communityPriceService.findByName(dataLianjia.getHouses());
+        if (cp == null) {
+            cp = new CommunityPrice();
+            cp.setPriceSource("链家成交");
+            cp.setHouses(dataLianjia.getHouses());
+            cp.setAddress(dataLianjia.getAddress());
+            cp.setPriceDate(dataLianjia.getDealDate());
+            cp.setPrice(dataLianjia.getDealPrice());
+            cp.setBuildArea(dataLianjia.getBuildArea());
+            cp.setLongitude(dataLianjia.getLongitude());
+            cp.setLatitude(dataLianjia.getLatitude());
+            cp.setCityName(dataLianjia.getCityName());
+            cp.setAreaName(dataLianjia.getAreaName());
+            if (dataLianjia.getBuildYear() != null) {
+                cp.setBuildYear(dataLianjia.getBuildYear().toString());
+            }
+            communityPriceService.save(cp);
+        }
+        // 如果经纬度变了,则设置经纬度
+        if (StringUtils.isEmpty(cp.getLongitude()) && StringUtils.isNotEmpty(dataLianjia.getLatitude())) {
+            cp.setLongitude(dataLianjia.getLongitude());
+            cp.setLatitude(dataLianjia.getLatitude());
+            if (cp.getPriceSource() == null) {
+                cp.setPriceSource("链家成交");
+            } else if (!cp.getPriceSource().contains("链家成交")) {
+                cp.setPriceSource(cp.getPriceSource() + ",链家成交");
+            }
+            communityPriceService.update(cp);
+        }
+    }
 }

+ 4 - 0
src/main/java/com/leeroa/dydb/datasource/qiyu/bo/DataQiYuDealBo.java

@@ -16,6 +16,10 @@ import java.util.Date;
 @Setter
 public class DataQiYuDealBo implements BO {
     @Condition(matchMode = MatchModel.LIKE, likeMode = LikeModel.ANYWHERE)
+    private String cityName;
+    @Condition(matchMode = MatchModel.LIKE, likeMode = LikeModel.ANYWHERE)
+    private String areaName;
+    @Condition(matchMode = MatchModel.LIKE, likeMode = LikeModel.ANYWHERE)
     private String houses;
     @Condition(matchMode = MatchModel.LIKE, likeMode = LikeModel.ANYWHERE)
     private String address;

+ 4 - 0
src/main/java/com/leeroa/dydb/datasource/qiyu/bo/DataQiYuUpBo.java

@@ -16,6 +16,10 @@ import java.util.Date;
 @Setter
 public class DataQiYuUpBo implements BO {
     @Condition(matchMode = MatchModel.LIKE, likeMode = LikeModel.ANYWHERE)
+    private String cityName;
+    @Condition(matchMode = MatchModel.LIKE, likeMode = LikeModel.ANYWHERE)
+    private String areaName;
+    @Condition(matchMode = MatchModel.LIKE, likeMode = LikeModel.ANYWHERE)
     private String houses;
     @Condition(matchMode = MatchModel.LIKE, likeMode = LikeModel.ANYWHERE)
     private String address;

+ 18 - 15
src/main/java/com/leeroa/dydb/datasource/qiyu/dto/DataQiYuDealDTO.java

@@ -17,50 +17,53 @@ public class DataQiYuDealDTO implements DTO {
     // 小区名称
     @Col(index = 0)
     private String houses;
-    // 区域名称
+    // 城市名称
     @Col(index = 1)
+    private String cityName;
+    // 区域名称
+    @Col(index = 2)
     private String areaName;
     // 地址
-    @Col(index = 2)
+    @Col(index = 3)
     private String description;
     // 建筑面积
-    @Col(index = 3)
+    @Col(index = 4)
     private Double buildArea;
     // 成交单价
-    @Col(index = 4)
+    @Col(index = 5)
     private Double price;
     // 成交日期
-    @Col(index = 6)
+    @Col(index = 7)
     private String dealDateStr;
     // 户型
-    @Col(index = 7)
+    @Col(index = 8)
     private String roomType;
     // 楼层
-    @Col(index = 8)
+    @Col(index = 9)
     private String floor;
     // 总楼层
-    @Col(index = 9)
+    @Col(index = 10)
     private String floorInfo;
     // 建筑年代
-    @Col(index = 10)
+    @Col(index = 11)
     private String buildYearStr;
     // 装修
-    @Col(index = 11)
+    @Col(index = 12)
     private String decoration;
     // 朝向
-    @Col(index = 12)
+    @Col(index = 13)
     private String orientation;
     // 百度经度
-    @Col(index = 13)
+    @Col(index = 14)
     private String longitude;
     // 百度维度
-    @Col(index = 14)
+    @Col(index = 15)
     private String latitude;
     @ApiField("房屋用途")
-    @Col(index = 15)
+    @Col(index = 16)
     private String usages;
 
     @ApiField("建筑结构")
-    @Col(index = 16)
+    @Col(index = 17)
     private String structure;
 }

+ 18 - 15
src/main/java/com/leeroa/dydb/datasource/qiyu/dto/DataQiYuUpDTO.java

@@ -18,52 +18,55 @@ public class DataQiYuUpDTO implements DTO {
     // 小区名称
     @Col(index = 0)
     private String houses;
-    // 区域名称
+    // 城市名称
     @Col(index = 1)
+    private String cityName;
+    // 区域名称
+    @Col(index = 2)
     private String areaName;
     // 地址
-    @Col(index = 2)
+    @Col(index = 3)
     private String description;
     // 建筑面积
-    @Col(index = 3)
+    @Col(index = 4)
     private Double buildArea;
     // 挂牌单价
-    @Col(index = 4)
+    @Col(index = 5)
     private Double price;
     // 挂牌日期
-    @Col(index = 6)
+    @Col(index = 7)
     private String upDateStr;
     // 户型
-    @Col(index = 7)
+    @Col(index = 8)
     private String roomType;
     // 楼层
-    @Col(index = 8)
+    @Col(index = 9)
     private String floor;
     // 总楼层
-    @Col(index = 9)
+    @Col(index = 10)
     private String floorInfo;
     // 建筑年代
-    @Col(index = 10)
+    @Col(index = 11)
     private String buildYearStr;
     // 装修
-    @Col(index = 11)
+    @Col(index = 12)
     private String decoration;
     // 朝向
-    @Col(index = 12)
+    @Col(index = 13)
     private String orientation;
     // 百度经度
-    @Col(index = 13)
+    @Col(index = 14)
     private String longitude;
     // 百度维度
-    @Col(index = 14)
+    @Col(index = 15)
     private String latitude;
 
     @ApiField("房屋用途")
-    @Col(index = 15)
+    @Col(index = 16)
     private String usages;
 
     @ApiField("建筑结构")
-    @Col(index = 16)
+    @Col(index = 17)
     private String structure;
 
 }

+ 16 - 0
src/main/java/com/leeroa/dydb/datasource/qiyu/web/DataQiYuDealCtrl.java

@@ -7,6 +7,9 @@ import com.google.gson.JsonObject;
 import com.leeroa.base.utils.DownloadResponseWrapper;
 import com.leeroa.base.utils.export.ExcelUtils;
 import com.leeroa.dydb.cache.ScheduleLock;
+import com.leeroa.dydb.datasource.lianjia.bo.DataLianjiaCodeBo;
+import com.leeroa.dydb.datasource.lianjia.domain.DataLianjiaCode;
+import com.leeroa.dydb.datasource.lianjia.service.DataLianjiaCodeService;
 import com.leeroa.dydb.datasource.qiyu.bo.DataQiYuDealBo;
 import com.leeroa.dydb.datasource.qiyu.domain.DataQiYuDeal;
 import com.leeroa.dydb.datasource.qiyu.service.DataQiYuDealService;
@@ -44,6 +47,9 @@ public class DataQiYuDealCtrl extends BaseController {
     @Resource
     private DataQiYuDealService dataQiYuDealService;
 
+    @Resource
+    private DataLianjiaCodeService dataLianjiaCodeService;
+
 
     @RequestMapping(value = {""}, method = RequestMethod.GET)
     public String toList() {
@@ -176,4 +182,14 @@ public class DataQiYuDealCtrl extends BaseController {
         GsonUtils.printData(response, total);
     }
 
+    // 获取成都的所有区域信息
+    @RequestMapping("/citymap")
+    @ResponseBody
+    public void queryCityMap(HttpServletRequest request, HttpServletResponse response) {
+        //GsonUtils.printData(response, LianjiaUtils.getCityMap());
+        DataLianjiaCodeBo bo = GsonUtils.wrapDataToEntity(request, DataLianjiaCodeBo.class);
+        List<DataLianjiaCode> cityMap = dataLianjiaCodeService.queryCityMap(bo);
+        GsonUtils.printData(response, cityMap);
+    }
+
 }

+ 16 - 0
src/main/java/com/leeroa/dydb/datasource/qiyu/web/DataQiYuUpCtrl.java

@@ -7,6 +7,9 @@ import com.google.gson.JsonObject;
 import com.leeroa.base.utils.DownloadResponseWrapper;
 import com.leeroa.base.utils.export.ExcelUtils;
 import com.leeroa.dydb.cache.ScheduleLock;
+import com.leeroa.dydb.datasource.lianjia.bo.DataLianjiaCodeBo;
+import com.leeroa.dydb.datasource.lianjia.domain.DataLianjiaCode;
+import com.leeroa.dydb.datasource.lianjia.service.DataLianjiaCodeService;
 import com.leeroa.dydb.datasource.qiyu.bo.DataQiYuUpBo;
 import com.leeroa.dydb.datasource.qiyu.domain.DataQiYuUp;
 import com.leeroa.dydb.datasource.qiyu.service.DataQiYuUpService;
@@ -44,6 +47,9 @@ public class DataQiYuUpCtrl extends BaseController {
     @Resource
     private DataQiYuUpService dataQiYuUpService;
 
+    @Resource
+    private DataLianjiaCodeService dataLianjiaCodeService;
+
 
     @RequestMapping(value = {""}, method = RequestMethod.GET)
     public String toList() {
@@ -175,4 +181,14 @@ public class DataQiYuUpCtrl extends BaseController {
         GsonUtils.printData(response, total);
     }
 
+    // 获取成都的所有区域信息
+    @RequestMapping("/citymap")
+    @ResponseBody
+    public void queryCityMap(HttpServletRequest request, HttpServletResponse response) {
+        //GsonUtils.printData(response, LianjiaUtils.getCityMap());
+        DataLianjiaCodeBo bo = GsonUtils.wrapDataToEntity(request, DataLianjiaCodeBo.class);
+        List<DataLianjiaCode> cityMap = dataLianjiaCodeService.queryCityMap(bo);
+        GsonUtils.printData(response, cityMap);
+    }
+
 }

+ 5 - 1
src/main/java/com/leeroa/dydb/price/bo/CommunityQueryBo.java

@@ -2,6 +2,7 @@ package com.leeroa.dydb.price.bo;
 
 import com.michael.core.hibernate.criteria.BO;
 import com.michael.core.hibernate.criteria.Condition;
+import com.michael.core.hibernate.criteria.LikeModel;
 import com.michael.core.hibernate.criteria.MatchModel;
 import lombok.Getter;
 import lombok.Setter;
@@ -16,7 +17,10 @@ import java.util.Date;
 public class CommunityQueryBo implements BO {
     @Condition(matchMode = MatchModel.OR, targets = {"%address", "%communityName", "%houseName"})
     private String keywords;
-
+    @Condition(matchMode = MatchModel.LIKE, likeMode = LikeModel.ANYWHERE)
+    private String cityName;
+    @Condition(matchMode = MatchModel.LIKE, likeMode = LikeModel.ANYWHERE)
+    private String areaName;
     @Condition
     private String status;
 

+ 2 - 0
src/main/java/com/leeroa/dydb/price/schedule/CommunityPriceSchedule.java

@@ -25,7 +25,9 @@ public class CommunityPriceSchedule {
      * 日常重新计算各个小区的价格
      */
     @Scheduled(cron = "0 0 4 * * ?")
+//    @Scheduled(cron = "*/5 * * * * ?")
     public void dailyInit() throws MessagingException {
+
         try {
 
             // 删除重复的小区

+ 9 - 0
src/main/java/com/leeroa/dydb/price/service/impl/CommunityPriceServiceImpl.java

@@ -9,6 +9,7 @@ import com.leeroa.core.index.utils.IndexWeightUtils;
 import com.leeroa.core.index.utils.RegUtils;
 import com.leeroa.core.utils.sql.SQLUtils;
 import com.leeroa.dydb.datasource.guide.service.GuidePriceService;
+import com.leeroa.dydb.datasource.lianjia.service.DataLianjiaService;
 import com.leeroa.dydb.datasource.lianjia.service.DataLianjiaUpService;
 import com.leeroa.dydb.datasource.loanorder.service.DataLoanOrderService;
 import com.leeroa.dydb.datasource.qiyu.service.DataQiYuDealService;
@@ -77,6 +78,9 @@ public class CommunityPriceServiceImpl implements CommunityPriceService, BeanWra
     @Resource
     private GuidePriceService guidePriceService;
 
+    @Resource
+    private DataLianjiaService dataLianjiaService;
+
     @Override
     public String save(CommunityPrice communityPrice) {
         if (StringUtils.isEmpty(communityPrice.getProvinceName())) {
@@ -359,6 +363,8 @@ public class CommunityPriceServiceImpl implements CommunityPriceService, BeanWra
             bo.setAreaName(communityPrice.getAreaName());
             if (name.equals("链家挂牌")) {
                 vo.setPrice(dataLianjiaUpService.avg(bo));
+            } else if (name.equals("链家成交")){
+                vo.setPrice(dataLianjiaService.avg(bo));
             } else if (name.equals("七鱼成交")) {
                 vo.setPrice(dataQiYuDealService.avg(bo));
             } else if (name.equals("七鱼挂牌")) {
@@ -457,6 +463,9 @@ public class CommunityPriceServiceImpl implements CommunityPriceService, BeanWra
                 case "链家挂牌":
                     voList.addAll(dataLianjiaUpService.source(bo));
                     break;
+                case "链家成交":
+                    voList.addAll(dataLianjiaService.source(bo));
+                    break;
                 case "七鱼挂牌":
                     voList.addAll(dataQiYuUpService.source(bo));
                     break;

+ 17 - 0
src/main/java/com/leeroa/dydb/price/web/CommunityQueryCtrl.java

@@ -6,6 +6,9 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.leeroa.base.utils.DownloadResponseWrapper;
 import com.leeroa.base.utils.export.ExcelUtils;
+import com.leeroa.dydb.datasource.lianjia.bo.DataLianjiaCodeBo;
+import com.leeroa.dydb.datasource.lianjia.domain.DataLianjiaCode;
+import com.leeroa.dydb.datasource.lianjia.service.DataLianjiaCodeService;
 import com.leeroa.dydb.land.web.LandFileCtrl;
 import com.leeroa.dydb.price.bo.CommunityQueryBo;
 import com.leeroa.dydb.price.domain.CommunityPrice;
@@ -45,6 +48,9 @@ public class CommunityQueryCtrl extends BaseController {
     private CommunityQueryService communityQueryService;
 
     @Resource
+    private DataLianjiaCodeService dataLianjiaCodeService;
+
+    @Resource
     private QueryLogService queryLogService;
 
     @RequestMapping(value = {""}, method = RequestMethod.GET)
@@ -120,4 +126,15 @@ public class CommunityQueryCtrl extends BaseController {
         return null;
     }
 
+
+    // 获取成都的所有区域信息
+    @RequestMapping("/citymap")
+    @ResponseBody
+    public void queryCityMap(HttpServletRequest request, HttpServletResponse response) {
+        //GsonUtils.printData(response, LianjiaUtils.getCityMap());
+        DataLianjiaCodeBo bo = GsonUtils.wrapDataToEntity(request, DataLianjiaCodeBo.class);
+        List<DataLianjiaCode> cityMap = dataLianjiaCodeService.queryCityMap(bo);
+        GsonUtils.printData(response, cityMap);
+    }
+
 }

+ 1 - 1
src/main/java/com/leeroa/dydb/utils/PriceUtils.java

@@ -10,7 +10,7 @@ import java.util.List;
 public class PriceUtils {
 
     // 价格组成
-    public static final String[] SOURCE = new String[]{"链家挂牌", "七鱼成交", "七鱼挂牌", "个贷", "二手房指导", "新房指导"};
+    public static final String[] SOURCE = new String[]{"链家挂牌","链家成交", "七鱼成交", "七鱼挂牌", "个贷", "二手房指导", "新房指导"};
 
     public static double getTotal(List<PriceTempVO> priceList) {
         Double totalRate = 0d;

+ 3 - 0
src/main/webapp/app/dydb/datasource/dataQiYuDeal/dataQiYuDeal.js

@@ -26,6 +26,9 @@
             // 根据id查询信息
             get: {method: 'GET', params: {method: 'get', id: '@id'}, isArray: false},
 
+            // 获得行政区域数据
+            getCityMap: {method: 'GET', params: {method: 'citymap',parentId:'@parentId'}, isArray: false},
+
             // 分页查询
             pageQuery: {method: 'POST', params: {method: 'pageQuery', limit: '@limit', start: '@start',orderBy:'@orderBy'}, isArray: false},
 

+ 36 - 3
src/main/webapp/app/dydb/datasource/dataQiYuDeal/dataQiYuDeal_list.js

@@ -6,17 +6,50 @@
     var app = angular.module('dydb.datasource.dataQiYuDeal.list', [
         'eccrm.angular',
         'eccrm.angularstrap',
-        'dydb.datasource.dataQiYuDeal'
+        'dydb.datasource.dataQiYuDeal',
     ]);
     app.controller('Ctrl', function ($scope, CommonUtils, AlertFactory, ModalFactory, DataQiYuDealService, DataQiYuDealParam) {
         var defaults = {
             orderBy : '-dealDate,houses'
         };
 
-        $scope.condition = angular.extend({}, defaults);
+        $scope.condition = angular.extend({cityName:'成都'}, defaults);
 
+        $scope.fetch = {page: 1, endPage: 100};
+        // 加载城市信息
+        $scope.citys = [];
+        DataQiYuDealService.getCityMap({parentId: '0'},function (o) {
+            angular.forEach(o.data, function (data) {
+                $scope.citys.push({name: data.name, value: data.id, code: data.name});
+            });
+        });
+
+        $scope.cityChange = function(){
+            $scope.areas = [];
+            $scope.condition.areaName = undefined;
+            if ($scope.condition.cityName) {
+                angular.forEach($scope.citys, function (o) {
+                    if (o.code.indexOf($scope.condition.cityName) === 0) {
+                        // 获取code
+                        DataQiYuDealService.getCityMap({parentId: o.value}, function (bizData) {
+                            angular.forEach(bizData.data, function (data) {
+                                $scope.areas.push({name: data.name, value: data.id, code: data.name});
+                            });
+                        });
+                    }
+                });
+            }
+            $scope.query();
+        }
+
+        //加载行政区域信息
+        $scope.areas = [];
+        DataQiYuDealService.getCityMap({parentId: '1780490511923245056'},function (o) {
+            angular.forEach(o.data, function (data) {
+                $scope.areas.push({name: data.name, value: data.name, code: data.name});
+            });
+        });
 
-    
         // 查询数据
         $scope.query = function() {
             $scope.pager.query();

+ 18 - 0
src/main/webapp/app/dydb/datasource/dataQiYuDeal/dataQiYuDeal_list.jsp

@@ -27,6 +27,22 @@ String contextPath = request.getContextPath();
                             </div>
                             <input type="text" class="w150" ng-model="condition.keywords" placeholder="小区名称、地址..."/>
                         </div>
+                        <div class="item w200">
+                            <div class="form-label w80">
+                                <label>城市</label>
+                            </div>
+                            <select class="w120" ng-model="condition.cityCode"
+                                    ng-options="foo.code as foo.name for foo in citys"
+                                    ng-change="cityChange();"> </select>
+                        </div>
+                        <div class="item w200">
+                            <div class="form-label w80">
+                                <label>行政区</label>
+                            </div>
+                            <select class="w120" ng-model="condition.areaName"
+                                    ng-options="foo.name as foo.name for foo in areas">
+                            </select>
+                        </div>
                         <div class="item w400">
                             <div class="form-label w80">
                                 <label>成交日期</label>
@@ -115,6 +131,7 @@ String contextPath = request.getContextPath();
                                 </td>
                                 <td style="width: 20px;">序号</td>
                                 <td style="width: 200px">小区名称</td>
+                                <td style="width: 80px">城市</td>
                                 <td style="width: 80px">行政区</td>
                                 <td style="width: 100px">建筑面积</td>
                                 <td style="width: 100px">成交单价</td>
@@ -141,6 +158,7 @@ String contextPath = request.getContextPath();
                                 <td><input type="checkbox" ng-model="foo.isSelected"/></td>
                                 <td bo-text="pager.start+$index+1"></td>
                                 <td bo-text="foo.houses"></td>
+                                <td bo-text="foo.cityName"></td>
                                 <td bo-text="foo.areaName"></td>
                                 <td bo-text="foo.buildArea|number:2"></td>
                                 <td bo-text="foo.price|number:2"></td>

+ 3 - 0
src/main/webapp/app/dydb/datasource/dataQiYuUp/dataQiYuUp.js

@@ -26,6 +26,9 @@
             // 根据id查询信息
             get: {method: 'GET', params: {method: 'get', id: '@id'}, isArray: false},
 
+            // 获得行政区域数据
+            getCityMap: {method: 'GET', params: {method: 'citymap',parentId:'@parentId'}, isArray: false},
+
             // 分页查询
             pageQuery: {method: 'POST', params: {method: 'pageQuery', limit: '@limit', start: '@start',orderBy:'@orderBy'}, isArray: false},
 

+ 35 - 2
src/main/webapp/app/dydb/datasource/dataQiYuUp/dataQiYuUp_list.js

@@ -13,10 +13,43 @@
             orderBy : '-upDate,houses'
         };
 
-        $scope.condition = angular.extend({}, defaults);
+        $scope.condition = angular.extend({cityName:'成都'}, defaults);
 
+        $scope.fetch = {page: 1, endPage: 100};
+        // 加载城市信息
+        $scope.citys = [];
+        DataQiYuUpService.getCityMap({parentId: '0'},function (o) {
+            angular.forEach(o.data, function (data) {
+                $scope.citys.push({name: data.name, value: data.id, code: data.name});
+            });
+        });
+
+        $scope.cityChange = function(){
+            $scope.areas = [];
+            $scope.condition.areaName = undefined;
+            if ($scope.condition.cityName) {
+                angular.forEach($scope.citys, function (o) {
+                    if (o.code.indexOf($scope.condition.cityName) === 0) {
+                        // 获取code
+                        DataQiYuUpService.getCityMap({parentId: o.value}, function (bizData) {
+                            angular.forEach(bizData.data, function (data) {
+                                $scope.areas.push({name: data.name, value: data.id, code: data.name});
+                            });
+                        });
+                    }
+                });
+            }
+            $scope.query();
+        }
+
+        //加载行政区域信息
+        $scope.areas = [];
+        DataQiYuUpService.getCityMap({parentId: '1780490511923245056'},function (o) {
+            angular.forEach(o.data, function (data) {
+                $scope.areas.push({name: data.name, value: data.name, code: data.name});
+            });
+        });
 
-    
         // 查询数据
         $scope.query = function() {
             $scope.pager.query();

+ 18 - 0
src/main/webapp/app/dydb/datasource/dataQiYuUp/dataQiYuUp_list.jsp

@@ -27,6 +27,22 @@
                             </div>
                             <input type="text" class="w150" ng-model="condition.keywords" placeholder="小区名称、地址..."/>
                         </div>
+                        <div class="item w200">
+                            <div class="form-label w80">
+                                <label>城市</label>
+                            </div>
+                            <select class="w120" ng-model="condition.cityName"
+                                    ng-options="foo.code as foo.name for foo in citys"
+                                    ng-change="cityChange();"> </select>
+                        </div>
+                        <div class="item w200">
+                            <div class="form-label w80">
+                                <label>行政区</label>
+                            </div>
+                            <select class="w120" ng-model="condition.areaName"
+                                    ng-options="foo.name as foo.name for foo in areas">
+                            </select>
+                        </div>
                         <div class="item w400">
                             <div class="form-label w80">
                                 <label>挂牌日期</label>
@@ -115,6 +131,7 @@
                                 </td>
                                 <td style="width: 20px;">序号</td>
                                 <td style="width: 200px">小区名称</td>
+                                <td style="width: 80px">城市</td>
                                 <td style="width: 80px">行政区</td>
                                 <td style="width: 100px">建筑面积</td>
                                 <td style="width: 100px">挂牌单价</td>
@@ -141,6 +158,7 @@
                                 <td><input type="checkbox" ng-model="foo.isSelected"/></td>
                                 <td bo-text="pager.start+$index+1"></td>
                                 <td bo-text="foo.houses"></td>
+                                <td bo-text="foo.cityName"></td>
                                 <td bo-text="foo.areaName"></td>
                                 <td bo-text="foo.buildArea|number:2"></td>
                                 <td bo-text="foo.price|number:2"></td>

+ 2 - 0
src/main/webapp/app/dydb/price/communityQuery/communityQuery.js

@@ -21,6 +21,8 @@
                 params: {method: 'pageQuery', limit: '@limit', start: '@start', orderBy: '@orderBy'},
                 isArray: false
             },
+            // 获得行政区域数据
+            getCityMap: {method: 'GET', params: {method: 'citymap',parentId:'@parentId'}, isArray: false},
 
             // 发起一次本地测试
             test: {method: 'POST', params: {method: 'test'}, isArray: false},

+ 36 - 1
src/main/webapp/app/dydb/price/communityQuery/communityQuery_list.js

@@ -13,7 +13,7 @@
             orderBy: '-createdDatetime'
         };
 
-        $scope.condition = angular.extend({}, defaults);
+        $scope.condition = angular.extend({cityName:'成都'}, defaults);
 
         $scope.remarks = [
             {name: '全部'},
@@ -24,6 +24,41 @@
             {name: '模糊匹配', value: '模糊匹配'},
         ];
 
+        $scope.fetch = {page: 1, endPage: 100};
+        // 加载城市信息
+        $scope.citys = [];
+        CommunityQueryService.getCityMap({parentId: '0'},function (o) {
+            angular.forEach(o.data, function (data) {
+                $scope.citys.push({name: data.name, value: data.id, code: data.name});
+            });
+        });
+
+        $scope.cityChange = function(){
+            $scope.areas = [];
+            $scope.condition.areaName = undefined;
+            if ($scope.condition.cityName) {
+                angular.forEach($scope.citys, function (o) {
+                    if (o.code.indexOf($scope.condition.cityName) === 0) {
+                        // 获取code
+                        CommunityQueryService.getCityMap({parentId: o.value}, function (bizData) {
+                            angular.forEach(bizData.data, function (data) {
+                                $scope.areas.push({name: data.name, value: data.id, code: data.name});
+                            });
+                        });
+                    }
+                });
+            }
+            $scope.query();
+        }
+
+        //加载行政区域信息
+        $scope.areas = [];
+        CommunityQueryService.getCityMap({parentId: '1780490511923245056'},function (o) {
+            angular.forEach(o.data, function (data) {
+                $scope.areas.push({name: data.name, value: data.name, code: data.name});
+            });
+        });
+
         // 查询数据
         $scope.query = function () {
             $scope.pager.query();

+ 21 - 0
src/main/webapp/app/dydb/price/communityQuery/communityQuery_list.jsp

@@ -29,6 +29,22 @@
                         </div>
                         <div class="item w200">
                             <div class="form-label w80">
+                                <label>城市</label>
+                            </div>
+                            <select class="w120" ng-model="condition.cityName"
+                                    ng-options="foo.code as foo.name for foo in citys"
+                                    ng-change="cityChange();"> </select>
+                        </div>
+                        <div class="item w200">
+                            <div class="form-label w80">
+                                <label>行政区</label>
+                            </div>
+                            <select class="w120" ng-model="condition.areaName"
+                                    ng-options="foo.name as foo.name for foo in areas">
+                            </select>
+                        </div>
+                        <div class="item w200">
+                            <div class="form-label w80">
                                 <label>异常类型</label>
                             </div>
                             <select class="w120" ng-model="condition.remark"
@@ -89,6 +105,8 @@
                                 <td style="width: 60px">楼栋</td>
                                 <td style="width: 60px">房号</td>
                                 <td style="text-align: left">地址</td>
+                                <td style="width: 80px;">城市</td>
+                                <td style="width: 80px;">区域</td>
                                 <td style="width: 80px;">评估单价</td>
                                 <td style="width: 80px;">评估面积</td>
                                 <td style="width: 110px;">评估总价</td>
@@ -120,6 +138,9 @@
                                 <td bo-text="foo.BUILDING_NAME"></td>
                                 <td bo-text="foo.DOOR_NAME"></td>
                                 <td bo-text="foo.ADDRESS" style="text-align: left;white-space: normal;min-width: 400px;"></td>
+                                <td bo-text="foo.CTYCOD_DSP"></td>
+                                <td bo-text="foo.DISCOD_DSP"></td>
+                                <td bo-text="foo.UNIT_PRICE|number:0"></td>
                                 <td bo-text="foo.UNIT_PRICE|number:0"></td>
                                 <td bo-text="foo.BUILD_AREA|number:2"></td>
                                 <td bo-text="foo.TOTAL_PRICE|number:2"></td>