DataLianjiaUpCtrl.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package com.leeroa.dydb.datasource.lianjia.web;
  2. import com.google.gson.Gson;
  3. import com.google.gson.GsonBuilder;
  4. import com.google.gson.JsonElement;
  5. import com.google.gson.JsonObject;
  6. import com.leeroa.base.utils.DownloadResponseWrapper;
  7. import com.leeroa.base.utils.export.ExcelUtils;
  8. import com.leeroa.dydb.datasource.lianjia.bo.DataLianjiaUpBo;
  9. import com.leeroa.dydb.datasource.lianjia.bo.LianjiaParams;
  10. import com.leeroa.dydb.datasource.lianjia.cache.LianjiaCache;
  11. import com.leeroa.dydb.datasource.lianjia.domain.DataLianjiaUp;
  12. import com.leeroa.dydb.datasource.lianjia.schedule.LianjiaUpSchedule;
  13. import com.leeroa.dydb.datasource.lianjia.service.DataLianjiaUpService;
  14. import com.leeroa.dydb.datasource.lianjia.vo.DataLianjiaUpVo;
  15. import com.leeroa.dydb.datasource.paimai.utils.LianjiaUtils;
  16. import com.michael.common.JspAccessType;
  17. import com.michael.core.pager.PageVo;
  18. import com.michael.core.web.BaseController;
  19. import com.michael.poi.exp.ExportEngine;
  20. import com.michael.utils.gson.DateStringConverter;
  21. import com.michael.utils.gson.GsonUtils;
  22. import org.apache.commons.io.IOUtils;
  23. import org.springframework.stereotype.Controller;
  24. import org.springframework.util.Assert;
  25. import org.springframework.web.bind.annotation.RequestMapping;
  26. import org.springframework.web.bind.annotation.RequestMethod;
  27. import org.springframework.web.bind.annotation.RequestParam;
  28. import org.springframework.web.bind.annotation.ResponseBody;
  29. import javax.annotation.Resource;
  30. import javax.servlet.http.HttpServletRequest;
  31. import javax.servlet.http.HttpServletResponse;
  32. import java.io.IOException;
  33. import java.io.InputStream;
  34. import java.text.SimpleDateFormat;
  35. import java.util.Date;
  36. import java.util.List;
  37. import java.util.Map;
  38. /**
  39. * @author yluo
  40. */
  41. @Controller
  42. @RequestMapping(value = {"/dydb/data/dataLianjiaUp"})
  43. public class DataLianjiaUpCtrl extends BaseController {
  44. @Resource
  45. private DataLianjiaUpService dataLianjiaUpService;
  46. @Resource
  47. private LianjiaUpSchedule lianjiaUpSchedule;
  48. @RequestMapping(value = {""}, method = RequestMethod.GET)
  49. public String toList() {
  50. return "dydb/data/dataLianjiaUp/dataLianjiaUp_list";
  51. }
  52. @RequestMapping(value = "/add", method = RequestMethod.GET)
  53. public String toAdd(HttpServletRequest request) {
  54. request.setAttribute(JspAccessType.PAGE_TYPE, JspAccessType.ADD);
  55. return "dydb/data/dataLianjiaUp/dataLianjiaUp_edit";
  56. }
  57. @RequestMapping(value = "/save", method = RequestMethod.POST)
  58. @ResponseBody
  59. public void save(HttpServletRequest request, HttpServletResponse response) {
  60. DataLianjiaUp dataLianjiaUp = GsonUtils.wrapDataToEntity(request, DataLianjiaUp.class);
  61. dataLianjiaUpService.save(dataLianjiaUp);
  62. GsonUtils.printSuccess(response);
  63. }
  64. @RequestMapping(value = "/modify", params = {"id"}, method = RequestMethod.GET)
  65. public String toModify(@RequestParam String id, HttpServletRequest request) {
  66. request.setAttribute(JspAccessType.PAGE_TYPE, JspAccessType.MODIFY);
  67. request.setAttribute("id", id);
  68. return "dydb/data/dataLianjiaUp/dataLianjiaUp_edit";
  69. }
  70. @RequestMapping(value = "/update", method = RequestMethod.POST)
  71. @ResponseBody
  72. public void update(HttpServletRequest request, HttpServletResponse response) {
  73. DataLianjiaUp dataLianjiaUp = GsonUtils.wrapDataToEntity(request, DataLianjiaUp.class);
  74. dataLianjiaUpService.update(dataLianjiaUp);
  75. GsonUtils.printSuccess(response);
  76. }
  77. @RequestMapping(value = {"/detail"}, params = {"id"}, method = RequestMethod.GET)
  78. public String toDetail(@RequestParam String id, HttpServletRequest request) {
  79. request.setAttribute(JspAccessType.PAGE_TYPE, JspAccessType.DETAIL);
  80. request.setAttribute("id", id);
  81. return "dydb/data/dataLianjiaUp/dataLianjiaUp_edit";
  82. }
  83. @ResponseBody
  84. @RequestMapping(value = "/get", params = {"id"}, method = RequestMethod.GET)
  85. public void findById(@RequestParam String id, HttpServletResponse response) {
  86. DataLianjiaUpVo vo = dataLianjiaUpService.findById(id);
  87. GsonUtils.printData(response, vo);
  88. }
  89. @ResponseBody
  90. @RequestMapping(value = "/pageQuery", method = RequestMethod.POST)
  91. public void pageQuery(HttpServletRequest request, HttpServletResponse response) {
  92. DataLianjiaUpBo bo = GsonUtils.wrapDataToEntity(request, DataLianjiaUpBo.class);
  93. PageVo pageVo = dataLianjiaUpService.pageQuery(bo);
  94. GsonUtils.printData(response, pageVo);
  95. }
  96. @ResponseBody
  97. @RequestMapping(value = "/query", method = RequestMethod.POST)
  98. public void query(HttpServletRequest request, HttpServletResponse response) {
  99. DataLianjiaUpBo bo = GsonUtils.wrapDataToEntity(request, DataLianjiaUpBo.class);
  100. List<DataLianjiaUpVo> vos = dataLianjiaUpService.query(bo);
  101. GsonUtils.printData(response, vos);
  102. }
  103. @ResponseBody
  104. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  105. public void deleteByIds(HttpServletRequest request, HttpServletResponse response) {
  106. String[] ids = GsonUtils.wrapDataToEntity(request, String[].class);
  107. dataLianjiaUpService.deleteByIds(ids);
  108. GsonUtils.printSuccess(response);
  109. }
  110. // 全部导出
  111. @RequestMapping(value = "/export-all", method = RequestMethod.GET)
  112. public void exportAll(HttpServletRequest request, HttpServletResponse response) throws IOException {
  113. DownloadResponseWrapper.wrap(response, "链家挂牌数据.xlsx");
  114. ExcelUtils.export(DataLianjiaUp.class, response.getOutputStream());
  115. }
  116. // 导出数据
  117. @RequestMapping(value = "/export", method = RequestMethod.GET)
  118. public String export(HttpServletRequest request, HttpServletResponse response) throws IOException {
  119. Gson gson = new GsonBuilder()
  120. .registerTypeAdapter(Date.class, new DateStringConverter("yyyy-MM-dd"))
  121. .create();
  122. DataLianjiaUpBo bo = GsonUtils.wrapDataToEntity(request, DataLianjiaUpBo.class);
  123. List<DataLianjiaUpVo> data = dataLianjiaUpService.query(bo);
  124. String json = gson.toJson(data);
  125. JsonElement element = gson.fromJson(json, JsonElement.class);
  126. JsonObject o = new JsonObject();
  127. o.add("c", element);
  128. DownloadResponseWrapper.wrap(response, "链家挂牌数据数据" + new SimpleDateFormat("yyyyMMdd").format(new Date()) + ".xlsx");
  129. InputStream inputStream = DataLianjiaUpCtrl.class.getClassLoader().getResourceAsStream("exp/export_dataLianjiaUp.xlsx");
  130. Assert.notNull(inputStream, "数据导出失败!模板文件不存在,请与管理员联系!");
  131. new ExportEngine().export(response.getOutputStream(), inputStream, o);
  132. return null;
  133. }
  134. // 下载模板
  135. @RequestMapping(value = "/template", method = RequestMethod.GET)
  136. public void downloadTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException {
  137. InputStream input = DataLianjiaUpCtrl.class.getClassLoader().getResourceAsStream("import_dataLianjiaUp.xlsx");
  138. if (input == null) {
  139. request.setAttribute("javax.servlet.error.message", "模板[import_dataLianjiaUp.xlsx]不存在!");
  140. request.getRequestDispatcher("/app/500.jsp");
  141. return;
  142. }
  143. DownloadResponseWrapper.wrap(response, "链家挂牌数据数据导入模板.xlsx");
  144. IOUtils.copy(input, response.getOutputStream());
  145. }
  146. // 获取成都的所有区域信息
  147. @RequestMapping("/citymap")
  148. @ResponseBody
  149. public void queryCityMap(HttpServletRequest request, HttpServletResponse response) {
  150. GsonUtils.printData(response, LianjiaUtils.getCityCacheMap());
  151. }
  152. // 获取区域下的商圈信息
  153. @RequestMapping(value = "/citymap-biz", params = "code")
  154. @ResponseBody
  155. public void queryBizList(String code, HttpServletRequest request, HttpServletResponse response) {
  156. Map<String, String> data = LianjiaCache.get(code,null);
  157. GsonUtils.printData(response, data);
  158. }
  159. // 获取指定商圈的列表数据
  160. @RequestMapping(value = "/fetchList", method = RequestMethod.POST)
  161. @ResponseBody
  162. public void fetchList(HttpServletRequest request, HttpServletResponse response) {
  163. LianjiaParams lianjiaParams = GsonUtils.wrapDataToEntity(request, LianjiaParams.class);
  164. Assert.hasText(lianjiaParams.getBizCode(), "为保证抓取数据可靠且完整,请选择至具体的商圈");
  165. final int total = dataLianjiaUpService.remoteFetchUpPriceList(lianjiaParams);
  166. GsonUtils.printData(response, total);
  167. }
  168. // 获取指定商圈的列表数据
  169. @RequestMapping(value = "/fetchDetail", method = RequestMethod.POST)
  170. @ResponseBody
  171. public void fetchDetail(HttpServletRequest request, HttpServletResponse response) {
  172. DataLianjiaUpBo dataLianjiaUpBo = GsonUtils.wrapDataToEntity(request, DataLianjiaUpBo.class);
  173. int size = dataLianjiaUpService.remoteFetchDetail(dataLianjiaUpBo);
  174. GsonUtils.printData(response, size);
  175. }
  176. // 每日抓取
  177. @RequestMapping(value = "/dailySchedule", method = RequestMethod.GET)
  178. @ResponseBody
  179. public void dailySchedule(HttpServletRequest request, HttpServletResponse response) {
  180. lianjiaUpSchedule.dailyFetchUpPrice();
  181. GsonUtils.printSuccess(response);
  182. }
  183. // 抓取指定小区最新的挂牌数据
  184. @RequestMapping(value = "/fetch-new", method = RequestMethod.POST)
  185. @ResponseBody
  186. public void fetchNewList(HttpServletRequest request, HttpServletResponse response) {
  187. DataLianjiaUp bo = GsonUtils.wrapDataToEntity(request, DataLianjiaUp.class);
  188. int counts = dataLianjiaUpService.fetchNewList(bo.getHouses());
  189. GsonUtils.printData(response, counts);
  190. }
  191. }