PublicInquiryController.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. package com.uas.ps.inquiry.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.uas.ps.httplog.annotation.HttpLog;
  4. import com.uas.ps.inquiry.domain.IPage;
  5. import com.uas.ps.inquiry.entity.Constant;
  6. import com.uas.ps.inquiry.entity.InquiryMessage;
  7. import com.uas.ps.inquiry.entity.InquirySource;
  8. import com.uas.ps.inquiry.entity.OrderStatus;
  9. import com.uas.ps.inquiry.model.Attach;
  10. import com.uas.ps.inquiry.model.PublicInquiryItemInfo;
  11. import com.uas.ps.inquiry.model.PurcInquiry;
  12. import com.uas.ps.inquiry.model.PurcInquiryItemInfo;
  13. import com.uas.ps.inquiry.page.PageInfo;
  14. import com.uas.ps.inquiry.page.SearchFilter;
  15. import com.uas.ps.inquiry.page.criteria.PredicateUtils;
  16. import com.uas.ps.inquiry.service.AttachService;
  17. import com.uas.ps.inquiry.service.InquiryForSaleService;
  18. import com.uas.ps.inquiry.service.PublicInquiryService;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.data.domain.Page;
  23. import org.springframework.data.domain.Sort;
  24. import org.springframework.ui.ModelMap;
  25. import org.springframework.util.StringUtils;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import org.springframework.web.bind.annotation.RequestMethod;
  28. import org.springframework.web.bind.annotation.RestController;
  29. import java.rmi.AccessException;
  30. import java.util.List;
  31. import java.util.Map;
  32. /**
  33. * 公共询价接口路径
  34. * <p>
  35. * Created by hejq on 2018-01-13.
  36. */
  37. @RestController
  38. @RequestMapping("/inquiry/public")
  39. public class PublicInquiryController {
  40. @Autowired
  41. private PublicInquiryService publicInquiryService;
  42. @Autowired
  43. private AttachService attachService;
  44. @Autowired
  45. private InquiryForSaleService saleService;
  46. private final static Logger log = LoggerFactory.getLogger(PublicInquiryController.class);
  47. /**
  48. * 通过分页参数和过滤条件查询公共询价列表信息
  49. * B2B\B2C\IM
  50. * @param pageInfo 分页参数
  51. * @param searchFilter 过滤条件
  52. * @return
  53. * @author hejq
  54. * @date 2018-01-17 10:27
  55. */
  56. @HttpLog
  57. @RequestMapping(method = RequestMethod.GET)
  58. public IPage<PurcInquiryItemInfo> getInquiry(PageInfo pageInfo, SearchFilter searchFilter, String distributes) {
  59. long start = System.currentTimeMillis();
  60. if (!StringUtils.isEmpty(distributes)) {
  61. List<Long> distribute = JSONObject.parseArray(distributes, Long.class);
  62. searchFilter.setDistribute(distribute);
  63. }
  64. // 询价单主列表接口,默认限制询价单为有效状态
  65. if (null != searchFilter.getValid()) {
  66. pageInfo.expression(PredicateUtils.eq("valid", searchFilter.getValid(), false));
  67. } else {
  68. pageInfo.expression(PredicateUtils.eq("valid", Constant.YES, false));
  69. }
  70. IPage<PurcInquiryItemInfo> page = publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter);
  71. log.info("公共询价, 查询公共询价信息, UserUU: {}, EnUU: {}, 报价的应用来源: {}", searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.PLAIN.name());
  72. log.info("/inquiry/public 耗时:{}", (System.currentTimeMillis() - start));
  73. return page;
  74. }
  75. /**
  76. * 针对商城,查询已发布的公共询价信息
  77. * 暂无
  78. * @param pageInfo 分页信息
  79. * @param searchFilter 过滤条件
  80. * @return
  81. */
  82. @HttpLog
  83. @RequestMapping(value = "/inquiryList", method = RequestMethod.GET)
  84. public IPage<PurcInquiryItemInfo> getInquiryList(PageInfo pageInfo, SearchFilter searchFilter) {
  85. long start = System.currentTimeMillis();
  86. if (null != searchFilter.getUserUU()) {
  87. pageInfo.filter("userUU", searchFilter.getUserUU());
  88. }
  89. if (null != searchFilter.getEnUU()) {
  90. pageInfo.filter("inquiry.enUU", searchFilter.getEnUU());
  91. }
  92. IPage<PurcInquiryItemInfo> infoIPage = publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter);
  93. log.info("公共询价, 查询公共询价信息, UserUU: {}, EnUU: {}, 报价的应用来源: {}", searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.MALL.name());
  94. log.info("/inquiry/public/inquiryList 耗时:{}", (System.currentTimeMillis() - start));
  95. return infoIPage;
  96. }
  97. /**
  98. * 通过分页信息和过滤条件查询已转报价的信息
  99. * B2B\B2C
  100. * @param pageInfo 分页参数
  101. * @param filter 过滤条件
  102. * @return
  103. * @author hejq
  104. * @date 2018-01-18 15:36
  105. */
  106. @HttpLog
  107. @RequestMapping(value = "/quotation/list", method = RequestMethod.GET)
  108. public IPage<PublicInquiryItemInfo> getQuotation(PageInfo pageInfo, String filter, String _state, Short overdue) {
  109. long start = System.currentTimeMillis();
  110. SearchFilter searchFilter = JSONObject.parseObject(filter, SearchFilter.class);
  111. if (null != searchFilter) {
  112. if (null != searchFilter.getVendUU()) {
  113. pageInfo.filter("vendUU", searchFilter.getVendUU());
  114. } else if (null != searchFilter.getEnUU()) {
  115. pageInfo.filter("inquiry.enUU", searchFilter.getEnUU());
  116. // 已报价未传vendUU时,抛出异常
  117. }
  118. } else if (null != _state && _state.equals(OrderStatus.done.name())) {
  119. throw new IllegalAccessError("请先传入企业信息");
  120. }
  121. if (null != _state) {
  122. pageInfo = publicInquiryService.covert(pageInfo, _state, overdue);
  123. }
  124. log.info("公共询价, 查询已转报价询价列表信息, 状态:{}, UserUU: {}, EnUU: {}, 报价的应用来源: {}", (_state == null ? "all" : _state), searchFilter != null ? searchFilter.getUserUU() : null, searchFilter != null ? searchFilter.getEnUU() : null, InquirySource.PLAIN.name());
  125. IPage<PublicInquiryItemInfo> inquiryItemInfoIPage = publicInquiryService.findByPageInfo(pageInfo, searchFilter);
  126. log.info("/inquiry/public/quotation/list 耗时:{}", (System.currentTimeMillis() - start));
  127. return inquiryItemInfoIPage;
  128. }
  129. /**
  130. * 通过id查询单个已转报价的信息
  131. * B2C
  132. * @param id
  133. * @return
  134. */
  135. @HttpLog
  136. @RequestMapping(value = "/quotation/one", method = RequestMethod.GET)
  137. public PublicInquiryItemInfo getQuotationById(Long id, Long enuu, Long useruu) throws AccessException {
  138. long start = System.currentTimeMillis();
  139. if (StringUtils.isEmpty(enuu) || StringUtils.isEmpty(useruu)) {
  140. throw new IllegalAccessError("暂无访问权限");
  141. }
  142. PublicInquiryItemInfo info = publicInquiryService.findOneInfo(id, enuu, useruu);
  143. log.info("/inquiry/public/quotation/one 耗时:{}", (System.currentTimeMillis() - start));
  144. return info;
  145. }
  146. /**
  147. * 商城获取采纳列表
  148. * B2C
  149. * @param pageInfo
  150. * @param filter
  151. * @param _state
  152. * @return
  153. */
  154. @HttpLog
  155. @RequestMapping(value = "/quotationList", method = RequestMethod.GET)
  156. public Page<PublicInquiryItemInfo> getQuotationList(PageInfo pageInfo, String filter, String _state, Short overdue) {
  157. long start = System.currentTimeMillis();
  158. SearchFilter searchFilter = JSONObject.parseObject(filter, SearchFilter.class);
  159. if (null != _state) {
  160. pageInfo = publicInquiryService.covert(pageInfo, _state, overdue);
  161. }
  162. Page<PublicInquiryItemInfo> itemInfoPage = publicInquiryService.findListByPageInfo(pageInfo, searchFilter);
  163. log.info("/inquiry/public/quotationList 耗时:{}", (System.currentTimeMillis() - start));
  164. return itemInfoPage;
  165. }
  166. /**
  167. * 获取最新的公共询价列表
  168. * B2B
  169. * @param enuu 当前企业UU号
  170. * @param size 大小
  171. * @return
  172. */
  173. @HttpLog
  174. @RequestMapping(value = "/messageList", method = RequestMethod.GET)
  175. public List<InquiryMessage> getList(Long enuu, Integer size) {
  176. long start = System.currentTimeMillis();
  177. log.info("公共询价, 获取最新的公共询价, size:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", size, Constant.UU, enuu, InquirySource.PLAIN.name());
  178. List<InquiryMessage> messages = publicInquiryService.getMessageList(enuu, size);
  179. log.info("/inquiry/public/messageList 耗时:{}", (System.currentTimeMillis() - start));
  180. return messages;
  181. }
  182. /**
  183. * 将客户的公共询价列表中一条数据转成询价报价单数据
  184. * 暂无
  185. * @param id 公共询价明细id
  186. * @param enuu 报价企业UU
  187. * @param useruu 报价个人UU
  188. * @return
  189. * @author hejq
  190. * @date 2018-01-14 15:20
  191. */
  192. @HttpLog
  193. @RequestMapping(value = "/turntoInquiry", method = RequestMethod.POST)
  194. private ModelMap transtoInquiry(Long id, Long enuu, Long useruu) {
  195. long start = System.currentTimeMillis();
  196. ModelMap map = publicInquiryService.transtoInquiry(id, enuu, useruu);
  197. log.info("/inquiry/public/turntoInquiry post 耗时:{}", (System.currentTimeMillis() - start));
  198. return map;
  199. }
  200. /**
  201. * 获取附件信息
  202. * B2B
  203. * @param id 附件id
  204. * @return
  205. */
  206. @HttpLog
  207. @RequestMapping(value = "/attachUrl", method = RequestMethod.GET)
  208. public com.uas.ps.inquiry.model.Attach getAttach(Long id) {
  209. long start = System.currentTimeMillis();
  210. Attach attach = attachService.findById(id);
  211. log.info("/inquiry/public/atatchUrl 耗时:{}", (System.currentTimeMillis() - start));
  212. return attach;
  213. }
  214. /**
  215. * 通过询价主表id查询主表信息
  216. * B2C
  217. * @param id 主表id
  218. * @return
  219. */
  220. @HttpLog
  221. @RequestMapping(value = "/findInquiryById", method = RequestMethod.GET)
  222. public PurcInquiry findById(Long id, Long enuu) {
  223. long start = System.currentTimeMillis();
  224. log.info("公共询价, 获取询价信息, id:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", id, Constant.UU, enuu, InquirySource.PLAIN.name());
  225. PurcInquiry inquiry = publicInquiryService.findInquiryById(id);
  226. inquiry = publicInquiryService.getQuotedDetail(inquiry);
  227. log.info("/inquiry/public/findInquiryById 耗时:{}", (System.currentTimeMillis() - start));
  228. return inquiry;
  229. }
  230. /**
  231. * 商城-采购排行榜
  232. * B2C
  233. * @return
  234. */
  235. @HttpLog
  236. @RequestMapping(value = "/findCodeRankingList", method = RequestMethod.GET)
  237. public List<Map<String, Object>> findCodeRankingList() {
  238. long start = System.currentTimeMillis();
  239. List<Map<String, Object>> list = publicInquiryService.findCodeRankingList();
  240. log.info("/inquiry/public/findCodeRankingList 耗时:{}", (System.currentTimeMillis() - start));
  241. return list;
  242. }
  243. /**
  244. * 通过明细id查询该条询价的详情
  245. * B2B\B2C
  246. * @param itemId 明细id
  247. * @param enuu enuu
  248. * @return
  249. */
  250. @HttpLog
  251. @RequestMapping(value = "/findItemByItemId", method = RequestMethod.GET)
  252. public PurcInquiryItemInfo findItemByItemId(Long itemId, Long enuu) {
  253. long start = System.currentTimeMillis();
  254. PurcInquiryItemInfo itemInfo = publicInquiryService.findItemByItemId(itemId, enuu);
  255. log.info("公共询价, 获取询价信息, id:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", itemId, Constant.UU, enuu, InquirySource.B2B.name());
  256. log.info("/inquiry/public/findItemByItemId 耗时:{}", (System.currentTimeMillis() - start));
  257. return itemInfo;
  258. }
  259. /**
  260. * 公共询价单明细总数
  261. * zanwu
  262. * @return
  263. */
  264. @RequestMapping(value = "/getPurcInquiryItemCount", method = RequestMethod.GET)
  265. public ModelMap getPurcInquiryItemCount() {
  266. long start = System.currentTimeMillis();
  267. ModelMap map = publicInquiryService.getPurcInquiryItemCount();
  268. log.info("/inquiry/public/getPurcInquiryItemCount 耗时:{}", (System.currentTimeMillis() - start));
  269. return map;
  270. }
  271. /**
  272. * 公共询价单明细某年某月总数
  273. * B2C
  274. * @param month 月份
  275. * @return
  276. */
  277. @RequestMapping(value = "/getPurcInquiryItemCountByMonth", method = RequestMethod.GET)
  278. public ModelMap getPurcInquiryItemCountByMonth(Integer year, Integer month) {
  279. long start = System.currentTimeMillis();
  280. ModelMap map = publicInquiryService.countByMonth(year, month);
  281. log.info("/inquiry/public/getPurcInquiryItemCountByMonth 耗时:{}", (System.currentTimeMillis() - start));
  282. return map;
  283. }
  284. /**
  285. * 公共询价单明细本月数量和上月数量
  286. * B2C
  287. * @return
  288. */
  289. @RequestMapping(value = "/getCountOfLastAndThisMonth", method = RequestMethod.GET)
  290. public ModelMap getPurcInquiryItemCountByMonth() {
  291. long start = System.currentTimeMillis();
  292. ModelMap map = publicInquiryService.getCountOfLastAndThisMonth();
  293. log.info("/inquiry/public/getCountOfLastAndThisMonth 耗时:{}", (System.currentTimeMillis() - start));
  294. return map;
  295. }
  296. /**
  297. * 公共询价单明细设置禁用或反禁用
  298. * B2C-admin
  299. * @param id 询价明细id
  300. * @param valid 是否生效状态 1为是,0为否
  301. * @return
  302. */
  303. @RequestMapping(value = "/deleteItem", method = RequestMethod.POST)
  304. public ModelMap deleteItems(Long id, Integer valid) {
  305. long start = System.currentTimeMillis();
  306. if (null == valid) {
  307. valid = 0;
  308. }
  309. ModelMap map = publicInquiryService.deleteItems(id, valid);
  310. log.info("/inquiry/public/deleteItems 耗时:{}", (System.currentTimeMillis() - start));
  311. return map;
  312. }
  313. /* ===========================================app接口start============================================================ */
  314. /**
  315. * 移动端查询公共询价列表信息
  316. *
  317. * @param page 页码
  318. * @param size 每页大小
  319. * @param en_uu 企业UU
  320. * @param _state 过滤状态
  321. * @param keyword 搜索词
  322. * @param user_tel 电话
  323. * @param fromDate 开始日期
  324. * @param endDate 截止日期
  325. * @return
  326. */
  327. @Deprecated
  328. @HttpLog
  329. @RequestMapping(value = "/mobile", method = RequestMethod.GET)
  330. public ModelMap publincInquiry(Integer page, Integer size, Long en_uu, String _state,
  331. String keyword, String user_tel, Long fromDate, Long endDate) {
  332. long start = System.currentTimeMillis();
  333. ModelMap map = new ModelMap();
  334. PageInfo pageInfo = setPageInfo(page, size);
  335. SearchFilter filter = new SearchFilter();
  336. filter.setFromDate(fromDate);
  337. filter.setEndDate(endDate);
  338. filter.setKeyword(keyword);
  339. if (StringUtils.hasText(_state)) {
  340. if (_state.equals(OrderStatus.end.name())) {
  341. log.info("公共询价, 查询公共询价信息, tel:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  342. pageInfo.filter("overdue", Constant.YES);
  343. map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent());
  344. return map;
  345. } else if (_state.equals(OrderStatus.invalid.name())) {
  346. log.info("公共询价, 查询公共询价信息, tel:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  347. pageInfo.filter("invalid", Constant.YES);
  348. map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent());
  349. return map;
  350. } else if (_state.equals(OrderStatus.done.name())) {
  351. log.info("公共询价, 查询已转报价询价列表信息, tel:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  352. pageInfo.filter("vendUU", en_uu);
  353. filter.setKeyword(keyword);
  354. map.put("content", publicInquiryService.findByPageInfo(pageInfo, filter).getContent());
  355. return map;
  356. }
  357. } else {
  358. filter.setEnUU(en_uu);
  359. log.info("公共询价, 查询公共询价信息, tel:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  360. map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent());
  361. return map;
  362. }
  363. log.info("/inquiry/mobile 耗时:{}", (System.currentTimeMillis() - start));
  364. return map;
  365. }
  366. /**
  367. * 设置分页信息
  368. * @param page 页码
  369. * @param size 条数
  370. * @return
  371. */
  372. private PageInfo setPageInfo(Integer page, Integer size) {
  373. PageInfo pageInfo = new PageInfo();
  374. if (page == null || page == 0) {
  375. pageInfo.setPageNumber(1);
  376. } else {
  377. pageInfo.setPageNumber(page);
  378. }
  379. if (size == null || size == 0) {
  380. pageInfo.setPageSize(5);
  381. } else {
  382. pageInfo.setPageSize(size);
  383. }
  384. pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
  385. Sort sort = new Sort(Sort.Direction.DESC, "date");
  386. pageInfo.setSort(sort);
  387. return pageInfo;
  388. }
  389. /**
  390. * 移动端查询公共询价列表信息
  391. * 2018年7月10日 16:24:35 此接口实际是将获取全部、获取已报价、获取未报价接口整合到一起,供UU互联只调用一个接口,
  392. * 可以修改为去调用对应的列表方法,这样,UU只用调用一个接口,公共服务也不用重复维护。
  393. * @param page 页码
  394. * @param size 每页大小
  395. * @param en_uu 企业UU
  396. * @param _state 过滤状态
  397. * @param keyword 搜索词
  398. * @param user_tel 电话
  399. * @param fromDate 开始日期
  400. * @param endDate 截止日期
  401. * @return
  402. */
  403. @Deprecated
  404. @HttpLog
  405. @RequestMapping(value = "/mobile/v2", method = RequestMethod.GET)
  406. public ModelMap publicInquiry(Integer page, Integer size, Long en_uu, String _state,
  407. String keyword, String user_tel, Long fromDate, Long endDate) {
  408. long start = System.currentTimeMillis();
  409. ModelMap map = new ModelMap();
  410. PageInfo pageInfo = setPageInfo(page, size);
  411. SearchFilter filter = new SearchFilter();
  412. filter.setFromDate(fromDate);
  413. filter.setEndDate(endDate);
  414. filter.setKeyword(keyword);
  415. if (StringUtils.hasText(_state)) {
  416. if (_state.equals(OrderStatus.end.name())) {
  417. log.info("公共询价, 查询公共询价信息, tel:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  418. pageInfo.filter("overdue", Constant.YES);
  419. map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent());
  420. return map;
  421. } else if (_state.equals(OrderStatus.invalid.name())) {
  422. log.info("公共询价, 查询公共询价信息, tel:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  423. pageInfo.filter("invalid", Constant.YES);
  424. map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent());
  425. return map;
  426. } else if (_state.equals(OrderStatus.done.name())) {
  427. log.info("公共询价, 查询已转报价询价列表信息, tel:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  428. pageInfo.filter("vendUU", en_uu);
  429. filter.setKeyword(keyword);
  430. map.put("content", publicInquiryService.findByPageInfo(pageInfo, filter).getContent());
  431. return map;
  432. }
  433. } else {
  434. log.info("公共询价, 查询公共询价信息, tel:{}, Constant: {}, EnUU: {}, 报价的应用来源: {}", user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  435. pageInfo.filter("vendUU", en_uu);
  436. map.put("content", publicInquiryService.covertRemindToInquiry(saleService.findRemindByPageInfo(pageInfo, filter).getContent()));
  437. return map;
  438. }
  439. log.info("/inquiry/public/mobile/v2 耗时:{}", (System.currentTimeMillis() - start));
  440. return map;
  441. }
  442. /* ===========================================app接口end============================================================ */
  443. }