IndexController.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. package com.uas.search.controller;
  2. import com.uas.search.annotation.NotEmpty;
  3. import com.uas.search.constant.model.SPage;
  4. import com.uas.search.jms.JmsListener;
  5. import com.uas.search.jms.LuceneMessage;
  6. import com.uas.search.jms.LuceneMessageDao;
  7. import com.uas.search.jms.LuceneMessageService;
  8. import com.uas.search.service.IndexService;
  9. import com.uas.search.support.DownloadHelper;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Controller;
  12. import com.uas.search.util.StringUtils;
  13. import org.springframework.web.bind.annotation.RequestMapping;
  14. import org.springframework.web.bind.annotation.ResponseBody;
  15. import javax.servlet.http.HttpServletRequest;
  16. import java.io.IOException;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. import java.util.Map;
  20. /**
  21. * 索引创建相关请求
  22. *
  23. * @author sunyj
  24. * @since 2016年8月5日 上午11:42:54
  25. */
  26. @Controller
  27. @RequestMapping("/index")
  28. public class IndexController {
  29. @Autowired
  30. private LuceneMessageDao luceneMessageDao;
  31. @Autowired
  32. private IndexService indexService;
  33. @Autowired
  34. private LuceneMessageService luceneMessageService;
  35. @Autowired
  36. private JmsListener jmsListener;
  37. @RequestMapping("/create")
  38. @ResponseBody
  39. public String initIndexes(String tableNames, HttpServletRequest request) {
  40. return String.format("Indexes created success in %.2fs",
  41. indexService.createIndexes(toList(tableNames), true) / 1000.0);
  42. }
  43. /**
  44. * 根据逗号进行分隔,将字符串转为 List
  45. *
  46. * @param input 输入的字符串
  47. * @return 转为的 List
  48. */
  49. private List<String> toList(String input) {
  50. List<String> list = new ArrayList<>();
  51. if (!StringUtils.isEmpty(input)) {
  52. String[] strs = input.split(",");
  53. for (String str : strs) {
  54. list.add(str.toLowerCase());
  55. }
  56. }
  57. return list;
  58. }
  59. @RequestMapping("/multiDownloadComponent")
  60. @ResponseBody
  61. public String multiDownloadComponent(Integer threads, Integer startFileIndex, Integer endFileIndex, String validateResult, HttpServletRequest request) {
  62. long start = System.currentTimeMillis();
  63. String message= "Downloaded: "+ indexService.multiDownloadComponent(threads, startFileIndex, endFileIndex,
  64. StringUtils.isEmpty(validateResult) ? DownloadHelper.ValidateResult.CURRENT : DownloadHelper.ValidateResult.valueOf(validateResult.toUpperCase()));
  65. message += String.format(", Time: %.2fs", (System.currentTimeMillis()-start)/1000.0);
  66. return message;
  67. }
  68. /**
  69. * 下载标准物料数据
  70. * @param threads 线程数量,默认为 1
  71. * @param startFileIndex 开始的文件,默认为 1
  72. * @param endFileIndex 结束的文件,默认为 1024 * 1024 * 1024
  73. * @param validateResult 下载完成后,是否对结果进行校验
  74. * @param request
  75. * @return
  76. */
  77. @RequestMapping("/multiDownloadProduct")
  78. @ResponseBody
  79. public String multiDownloadStandardProduct(Integer threads, Integer startFileIndex, Integer endFileIndex, String validateResult, HttpServletRequest request) {
  80. long start = System.currentTimeMillis();
  81. String message= "Downloaded: "+ indexService.multiDownloadProduct(threads, startFileIndex, endFileIndex,
  82. StringUtils.isEmpty(validateResult) ? DownloadHelper.ValidateResult.CURRENT : DownloadHelper.ValidateResult.valueOf(validateResult.toUpperCase()));
  83. message += String.format(", Time: %.2fs", (System.currentTimeMillis()-start)/1000.0);
  84. return message;
  85. }
  86. @RequestMapping("/multiDownloadGoods")
  87. @ResponseBody
  88. public String multiDownloadGoods(Integer threads, Integer startFileIndex, Integer endFileIndex, String validateResult, HttpServletRequest request) {
  89. long start = System.currentTimeMillis();
  90. String message= "Downloaded: "+ indexService.multiDownloadGoods(threads, startFileIndex, endFileIndex,
  91. StringUtils.isEmpty(validateResult) ? DownloadHelper.ValidateResult.CURRENT : DownloadHelper.ValidateResult.valueOf(validateResult.toUpperCase()));
  92. message += String.format(", Time: %.2fs", (System.currentTimeMillis()-start)/1000.0);
  93. return message;
  94. }
  95. @RequestMapping("/multiDownloadPCB")
  96. @ResponseBody
  97. public String multiDownloadPCB(Integer threads, Integer startFileIndex, Integer endFileIndex, String validateResult, HttpServletRequest request) {
  98. long start = System.currentTimeMillis();
  99. String message= "Downloaded: "+ indexService.multiDownloadPCB(threads, startFileIndex, endFileIndex,
  100. StringUtils.isEmpty(validateResult) ? DownloadHelper.ValidateResult.CURRENT : DownloadHelper.ValidateResult.valueOf(validateResult.toUpperCase()));
  101. message += String.format(", Time: %.2fs", (System.currentTimeMillis()-start)/1000.0);
  102. return message;
  103. }
  104. @RequestMapping("/multiDownloadPCBGoods")
  105. @ResponseBody
  106. public String multiDownloadPCBGoods(Integer threads, Integer startFileIndex, Integer endFileIndex, String validateResult, HttpServletRequest request) {
  107. long start = System.currentTimeMillis();
  108. String message= "Downloaded: "+ indexService.multiDownloadPCBGoods(threads, startFileIndex, endFileIndex,
  109. StringUtils.isEmpty(validateResult) ? DownloadHelper.ValidateResult.CURRENT : DownloadHelper.ValidateResult.valueOf(validateResult.toUpperCase()));
  110. message += String.format(", Time: %.2fs", (System.currentTimeMillis()-start)/1000.0);
  111. return message;
  112. }
  113. @RequestMapping("/listen/start")
  114. @ResponseBody
  115. public String startListen(Long interval, HttpServletRequest request) {
  116. jmsListener.start(interval);
  117. return "开启成功";
  118. }
  119. @RequestMapping("/listen/stop")
  120. @ResponseBody
  121. public String stopListen(HttpServletRequest request) {
  122. jmsListener.stop();
  123. return "关闭成功";
  124. }
  125. @RequestMapping("/listen/restart")
  126. @ResponseBody
  127. public String restartListen(Long interval, HttpServletRequest request) {
  128. if (jmsListener.isRunning()) {
  129. jmsListener.stop();
  130. }
  131. jmsListener.start(interval);
  132. return "重启成功";
  133. }
  134. @RequestMapping("/listen/details")
  135. @ResponseBody
  136. public SPage<LuceneMessage> listenDetails(Integer page, Integer size, HttpServletRequest request) {
  137. return luceneMessageService.findAll(page, size);
  138. }
  139. @RequestMapping("/maintain")
  140. @ResponseBody
  141. public String maintainIndexes(@NotEmpty("tableName") String tableName, @NotEmpty("dataId") Long dataId, @NotEmpty("methodType") String methodType, String data,
  142. HttpServletRequest request) {
  143. return "已维护:" + indexService.maintainIndexes(tableName.toLowerCase(), dataId, methodType, data);
  144. }
  145. @RequestMapping("/dequeue")
  146. @ResponseBody
  147. public boolean dequeueLuceneQueueMessage(Long id, HttpServletRequest request) {
  148. luceneMessageDao.dequeueLuceneMessage(id);
  149. return true;
  150. }
  151. @RequestMapping("/updateByNewWords")
  152. @ResponseBody
  153. public Map<String, List<Object>> updateIndexByNewWords(String newWords, HttpServletRequest request) throws IOException {
  154. return indexService.updateIndexByNewWords(toList(newWords));
  155. }
  156. }