123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- package com.leeroa.dydb.datasource.lianjia.web;
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- 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.DataLianjiaUpBo;
- import com.leeroa.dydb.datasource.lianjia.bo.LianjiaParams;
- import com.leeroa.dydb.datasource.lianjia.cache.LianjiaCache;
- import com.leeroa.dydb.datasource.lianjia.domain.DataLianjiaUp;
- import com.leeroa.dydb.datasource.lianjia.schedule.LianjiaUpSchedule;
- import com.leeroa.dydb.datasource.lianjia.service.DataLianjiaUpService;
- import com.leeroa.dydb.datasource.lianjia.vo.DataLianjiaUpVo;
- import com.leeroa.dydb.datasource.paimai.utils.LianjiaUtils;
- import com.michael.common.JspAccessType;
- import com.michael.core.pager.PageVo;
- import com.michael.core.web.BaseController;
- import com.michael.poi.exp.ExportEngine;
- import com.michael.utils.gson.DateStringConverter;
- import com.michael.utils.gson.GsonUtils;
- import org.apache.commons.io.IOUtils;
- import org.springframework.stereotype.Controller;
- import org.springframework.util.Assert;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.io.InputStream;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- /**
- * @author yluo
- */
- @Controller
- @RequestMapping(value = {"/dydb/data/dataLianjiaUp"})
- public class DataLianjiaUpCtrl extends BaseController {
- @Resource
- private DataLianjiaUpService dataLianjiaUpService;
- @Resource
- private LianjiaUpSchedule lianjiaUpSchedule;
- @RequestMapping(value = {""}, method = RequestMethod.GET)
- public String toList() {
- return "dydb/data/dataLianjiaUp/dataLianjiaUp_list";
- }
- @RequestMapping(value = "/add", method = RequestMethod.GET)
- public String toAdd(HttpServletRequest request) {
- request.setAttribute(JspAccessType.PAGE_TYPE, JspAccessType.ADD);
- return "dydb/data/dataLianjiaUp/dataLianjiaUp_edit";
- }
- @RequestMapping(value = "/save", method = RequestMethod.POST)
- @ResponseBody
- public void save(HttpServletRequest request, HttpServletResponse response) {
- DataLianjiaUp dataLianjiaUp = GsonUtils.wrapDataToEntity(request, DataLianjiaUp.class);
- dataLianjiaUpService.save(dataLianjiaUp);
- GsonUtils.printSuccess(response);
- }
- @RequestMapping(value = "/modify", params = {"id"}, method = RequestMethod.GET)
- public String toModify(@RequestParam String id, HttpServletRequest request) {
- request.setAttribute(JspAccessType.PAGE_TYPE, JspAccessType.MODIFY);
- request.setAttribute("id", id);
- return "dydb/data/dataLianjiaUp/dataLianjiaUp_edit";
- }
- @RequestMapping(value = "/update", method = RequestMethod.POST)
- @ResponseBody
- public void update(HttpServletRequest request, HttpServletResponse response) {
- DataLianjiaUp dataLianjiaUp = GsonUtils.wrapDataToEntity(request, DataLianjiaUp.class);
- dataLianjiaUpService.update(dataLianjiaUp);
- GsonUtils.printSuccess(response);
- }
- @RequestMapping(value = {"/detail"}, params = {"id"}, method = RequestMethod.GET)
- public String toDetail(@RequestParam String id, HttpServletRequest request) {
- request.setAttribute(JspAccessType.PAGE_TYPE, JspAccessType.DETAIL);
- request.setAttribute("id", id);
- return "dydb/data/dataLianjiaUp/dataLianjiaUp_edit";
- }
- @ResponseBody
- @RequestMapping(value = "/get", params = {"id"}, method = RequestMethod.GET)
- public void findById(@RequestParam String id, HttpServletResponse response) {
- DataLianjiaUpVo vo = dataLianjiaUpService.findById(id);
- GsonUtils.printData(response, vo);
- }
- @ResponseBody
- @RequestMapping(value = "/pageQuery", method = RequestMethod.POST)
- public void pageQuery(HttpServletRequest request, HttpServletResponse response) {
- DataLianjiaUpBo bo = GsonUtils.wrapDataToEntity(request, DataLianjiaUpBo.class);
- PageVo pageVo = dataLianjiaUpService.pageQuery(bo);
- GsonUtils.printData(response, pageVo);
- }
- @ResponseBody
- @RequestMapping(value = "/query", method = RequestMethod.POST)
- public void query(HttpServletRequest request, HttpServletResponse response) {
- DataLianjiaUpBo bo = GsonUtils.wrapDataToEntity(request, DataLianjiaUpBo.class);
- List<DataLianjiaUpVo> vos = dataLianjiaUpService.query(bo);
- GsonUtils.printData(response, vos);
- }
- @ResponseBody
- @RequestMapping(value = "/delete", method = RequestMethod.POST)
- public void deleteByIds(HttpServletRequest request, HttpServletResponse response) {
- String[] ids = GsonUtils.wrapDataToEntity(request, String[].class);
- dataLianjiaUpService.deleteByIds(ids);
- GsonUtils.printSuccess(response);
- }
- // 全部导出
- @RequestMapping(value = "/export-all", method = RequestMethod.GET)
- public void exportAll(HttpServletRequest request, HttpServletResponse response) throws IOException {
- DownloadResponseWrapper.wrap(response, "链家挂牌数据.xlsx");
- ExcelUtils.export(DataLianjiaUp.class, response.getOutputStream());
- }
- // 导出数据
- @RequestMapping(value = "/export", method = RequestMethod.GET)
- public String export(HttpServletRequest request, HttpServletResponse response) throws IOException {
- Gson gson = new GsonBuilder()
- .registerTypeAdapter(Date.class, new DateStringConverter("yyyy-MM-dd"))
- .create();
- DataLianjiaUpBo bo = GsonUtils.wrapDataToEntity(request, DataLianjiaUpBo.class);
- List<DataLianjiaUpVo> data = dataLianjiaUpService.query(bo);
- String json = gson.toJson(data);
- JsonElement element = gson.fromJson(json, JsonElement.class);
- JsonObject o = new JsonObject();
- o.add("c", element);
- DownloadResponseWrapper.wrap(response, "链家挂牌数据数据" + new SimpleDateFormat("yyyyMMdd").format(new Date()) + ".xlsx");
- InputStream inputStream = DataLianjiaUpCtrl.class.getClassLoader().getResourceAsStream("exp/export_dataLianjiaUp.xlsx");
- Assert.notNull(inputStream, "数据导出失败!模板文件不存在,请与管理员联系!");
- new ExportEngine().export(response.getOutputStream(), inputStream, o);
- return null;
- }
- // 下载模板
- @RequestMapping(value = "/template", method = RequestMethod.GET)
- public void downloadTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException {
- InputStream input = DataLianjiaUpCtrl.class.getClassLoader().getResourceAsStream("import_dataLianjiaUp.xlsx");
- if (input == null) {
- request.setAttribute("javax.servlet.error.message", "模板[import_dataLianjiaUp.xlsx]不存在!");
- request.getRequestDispatcher("/app/500.jsp");
- return;
- }
- DownloadResponseWrapper.wrap(response, "链家挂牌数据数据导入模板.xlsx");
- IOUtils.copy(input, response.getOutputStream());
- }
- // 获取成都的所有区域信息
- @RequestMapping("/citymap")
- @ResponseBody
- public void queryCityMap(HttpServletRequest request, HttpServletResponse response) {
- GsonUtils.printData(response, LianjiaUtils.getCityCacheMap());
- }
- // 获取区域下的商圈信息
- @RequestMapping(value = "/citymap-biz", params = "code")
- @ResponseBody
- public void queryBizList(String code, HttpServletRequest request, HttpServletResponse response) {
- Map<String, String> data = LianjiaCache.get(code,null);
- GsonUtils.printData(response, data);
- }
- // 获取指定商圈的列表数据
- @RequestMapping(value = "/fetchList", method = RequestMethod.POST)
- @ResponseBody
- public void fetchList(HttpServletRequest request, HttpServletResponse response) {
- LianjiaParams lianjiaParams = GsonUtils.wrapDataToEntity(request, LianjiaParams.class);
- Assert.hasText(lianjiaParams.getBizCode(), "为保证抓取数据可靠且完整,请选择至具体的商圈");
- final int total = dataLianjiaUpService.remoteFetchUpPriceList(lianjiaParams);
- GsonUtils.printData(response, total);
- }
- // 获取指定商圈的列表数据
- @RequestMapping(value = "/fetchDetail", method = RequestMethod.POST)
- @ResponseBody
- public void fetchDetail(HttpServletRequest request, HttpServletResponse response) {
- DataLianjiaUpBo dataLianjiaUpBo = GsonUtils.wrapDataToEntity(request, DataLianjiaUpBo.class);
- int size = dataLianjiaUpService.remoteFetchDetail(dataLianjiaUpBo);
- GsonUtils.printData(response, size);
- }
- // 每日抓取
- @RequestMapping(value = "/dailySchedule", method = RequestMethod.GET)
- @ResponseBody
- public void dailySchedule(HttpServletRequest request, HttpServletResponse response) {
- lianjiaUpSchedule.dailyFetchUpPrice();
- GsonUtils.printSuccess(response);
- }
- // 抓取指定小区最新的挂牌数据
- @RequestMapping(value = "/fetch-new", method = RequestMethod.POST)
- @ResponseBody
- public void fetchNewList(HttpServletRequest request, HttpServletResponse response) {
- DataLianjiaUp bo = GsonUtils.wrapDataToEntity(request, DataLianjiaUp.class);
- int counts = dataLianjiaUpService.fetchNewList(bo.getHouses());
- GsonUtils.printData(response, counts);
- }
- }
|