PublicInquiryController.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. package com.uas.ps.inquiry.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.uas.ps.core.logging.BufferedLoggerManager;
  4. import com.uas.ps.httplog.annotation.HttpLog;
  5. import com.uas.ps.inquiry.domain.IPage;
  6. import com.uas.ps.inquiry.entity.BatchInquiry;
  7. import com.uas.ps.inquiry.entity.Constant;
  8. import com.uas.ps.inquiry.entity.Inquiry;
  9. import com.uas.ps.inquiry.entity.InquiryDecide;
  10. import com.uas.ps.inquiry.entity.InquiryDetail;
  11. import com.uas.ps.inquiry.entity.InquiryMessage;
  12. import com.uas.ps.inquiry.entity.InquirySource;
  13. import com.uas.ps.inquiry.entity.OrderStatus;
  14. import com.uas.ps.inquiry.model.PublicInquiryItemInfo;
  15. import com.uas.ps.inquiry.model.PurcInquiry;
  16. import com.uas.ps.inquiry.model.PurcInquiryItem;
  17. import com.uas.ps.inquiry.model.PurcInquiryItemInfo;
  18. import com.uas.ps.inquiry.page.PageInfo;
  19. import com.uas.ps.inquiry.page.SearchFilter;
  20. import com.uas.ps.inquiry.service.AttachService;
  21. import com.uas.ps.inquiry.service.PublicInquiryService;
  22. import com.uas.ps.inquiry.support.InquiryBufferedLogger;
  23. import java.io.UnsupportedEncodingException;
  24. import java.net.URLDecoder;
  25. import java.util.List;
  26. import java.util.Map;
  27. import javassist.NotFoundException;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.data.domain.Page;
  30. import org.springframework.data.domain.Sort;
  31. import org.springframework.ui.ModelMap;
  32. import org.springframework.util.StringUtils;
  33. import org.springframework.web.bind.annotation.RequestMapping;
  34. import org.springframework.web.bind.annotation.RequestMethod;
  35. import org.springframework.web.bind.annotation.RequestParam;
  36. import org.springframework.web.bind.annotation.RestController;
  37. /**
  38. * 公共询价接口路径
  39. *
  40. * Created by hejq on 2018-01-13.
  41. */
  42. @RestController
  43. @RequestMapping("/inquiry/public")
  44. public class PublicInquiryController {
  45. @Autowired
  46. private PublicInquiryService publicInquiryService;
  47. @Autowired
  48. private AttachService attachService;
  49. private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class);
  50. /**
  51. * 将买家ERP的公共询价写到公共询价服务中心
  52. *
  53. * @param data 封装的data
  54. * @param enuu 询价企业UU
  55. * @param address 询价企业地址信息
  56. * @return
  57. * @throws UnsupportedEncodingException
  58. */
  59. @HttpLog
  60. @RequestMapping(method = RequestMethod.POST)
  61. public void saveInquiries(@RequestParam("data") String data, Long enuu, String address) throws NotFoundException, UnsupportedEncodingException {
  62. String jsonStr = URLDecoder.decode(data, "UTF-8");
  63. address = URLDecoder.decode(address, "UTF-8");
  64. List<BatchInquiry> inquiries = JSONObject.parseArray(jsonStr, BatchInquiry.class);
  65. publicInquiryService.save(inquiries, enuu, address);
  66. logger.log("公共询价", "ERP上传公共询价", "size: " + inquiries.size(), Constant.UU, enuu, InquirySource.ERP.name());
  67. }
  68. /**
  69. * erp的公共询价单提交待审核时,更新公共询价服务中心的单据设置为不能报价
  70. *
  71. * @param data 封装的数据信息
  72. * @param enuu 询价企业UU
  73. * @throws UnsupportedEncodingException
  74. */
  75. @HttpLog
  76. @RequestMapping(value = "/check", method = RequestMethod.POST)
  77. public void updateInquiryStatus(@RequestParam("data") String data, @RequestParam("enuu") Long enuu) throws UnsupportedEncodingException {
  78. String jsonStr = URLDecoder.decode(data, "UTF-8");
  79. List<BatchInquiry> inquiries = JSONObject.parseArray(jsonStr, BatchInquiry.class);
  80. publicInquiryService.updateStatus(inquiries, enuu);
  81. logger.log("公共询价", "ERP设置公共询价不能报价", "size: " + inquiries.size(), Constant.UU, enuu, InquirySource.ERP.name());
  82. }
  83. /**
  84. * (针对客户)获取公共询价服务中心供应商的报价信息
  85. *
  86. * @author hejq
  87. * @date 2018-01-14 15:20
  88. * @param enuu 询价企业UU
  89. */
  90. @HttpLog
  91. @RequestMapping(value = "/quotation", method = RequestMethod.GET)
  92. public List<InquiryDetail> getReply(Long enuu) {
  93. List<InquiryDetail> details = publicInquiryService.findNotUploadReply(enuu);
  94. logger.log("公共询价", "ERP获取供应商报价信息", "size: " + details.size(), Constant.UU, enuu, "ERP");
  95. return details;
  96. }
  97. /**
  98. * 公共询价服务中心的报价信息传到买家ERP之后,修改公共询价服务中心里面的询价单明细的上传状态
  99. *
  100. * @param data 传回的id串
  101. * @return
  102. * @throws UnsupportedEncodingException
  103. */
  104. @HttpLog
  105. @RequestMapping(value = "/reply/back", method = RequestMethod.POST)
  106. public void onReplySuccess(@RequestParam("data") String data, Long enuu) throws UnsupportedEncodingException {
  107. String[] idArray = URLDecoder.decode(data, "UTF-8").split(",");
  108. logger.log("公共询价", "ERP获取报价信息返回id", "id: " + idArray, Constant.UU, enuu, "ERP");
  109. publicInquiryService.onReplyUploadSuccess(idArray);
  110. }
  111. /**
  112. * 买家在收到报价信息后,点击提交按钮后,状态传至公共询价服务中心,至此公共询价服务中心的供应商不能再对这张询价单进行报价
  113. *
  114. * @param data 封装的data信息
  115. * @throws UnsupportedEncodingException
  116. */
  117. @HttpLog
  118. @RequestMapping(value = "/checking", method = RequestMethod.POST)
  119. public void checkInquiry(@RequestParam("data") String data, Long enuu) throws UnsupportedEncodingException {
  120. String jsonStr = URLDecoder.decode(data, "UTF-8");
  121. List<Inquiry> inquiries = JSONObject.parseArray(jsonStr, Inquiry.class);
  122. logger.log("公共询价", "ERP提交报价信息应用禁止报价", "size: " + inquiries.size(), Constant.UU, enuu, "ERP");
  123. publicInquiryService.updateInquiryStatus(inquiries);
  124. }
  125. /**
  126. * 买家ERP(不)采纳了价格之后,修改公共询价服务中心里面的报价信息的状态
  127. *
  128. * @return 封装的data信息
  129. * @throws UnsupportedEncodingException
  130. */
  131. @HttpLog
  132. @RequestMapping(value = "/reply/decide", method = RequestMethod.POST)
  133. public void onReplyDecide(@RequestParam("data") String data, Long enuu) throws UnsupportedEncodingException {
  134. String jsonStr = URLDecoder.decode(data, "UTF-8");
  135. List<InquiryDecide> decides = JSONObject.parseArray(jsonStr, InquiryDecide.class);
  136. logger.log("公共询价", "ERP针对供应报价信息进行(不)采纳操作", "size: " + decides.size(), Constant.UU, enuu, "ERP");
  137. publicInquiryService.onReplyDecide(decides, enuu);
  138. }
  139. /**
  140. * 买家ERP作废询价单后,修改公共询价服务中心里面的状态
  141. *
  142. * @param data 封装的询价信息
  143. * @return
  144. * @throws UnsupportedEncodingException
  145. */
  146. @HttpLog
  147. @RequestMapping(value = "/invalid", method = RequestMethod.POST)
  148. public void onReplyInvalid(@RequestParam("data") String data, Long enuu) throws UnsupportedEncodingException {
  149. String jsonStr = URLDecoder.decode(data, "UTF-8");
  150. List<Inquiry> inquiries = JSONObject.parseArray(jsonStr, Inquiry.class);
  151. logger.log("公共询价", "ERP作废公共询价单返回数据到公共服务", "size: " + inquiries.size(), Constant.UU, enuu, "ERP");
  152. publicInquiryService.onReplyInvalid(inquiries, enuu);
  153. }
  154. /**
  155. * 将客户的公共询价列表中一条数据转成询价报价单数据
  156. *
  157. * @author hejq
  158. * @date 2018-01-14 15:20
  159. * @param id 公共询价明细id
  160. * @param enuu 报价企业UU
  161. * @param useruu 报价个人UU
  162. * @return
  163. */
  164. @HttpLog
  165. @RequestMapping(value = "/turntoInquiry", method = RequestMethod.POST)
  166. private ModelMap transtoInquiry(Long id, Long enuu, Long useruu) {
  167. return publicInquiryService.transtoInquiry(id, enuu, useruu);
  168. }
  169. /**
  170. * 通过分页参数和过滤条件查询公共询价列表信息
  171. *
  172. * @author hejq
  173. * @date 2018-01-17 10:27
  174. * @param pageInfo 分页参数
  175. * @param searchFilter 过滤条件
  176. * @return
  177. */
  178. @HttpLog
  179. @RequestMapping(method = RequestMethod.GET)
  180. public IPage<PurcInquiryItemInfo> getInquiry(PageInfo pageInfo, SearchFilter searchFilter) {
  181. Sort sort = new Sort(Sort.Direction.DESC, "id", "date");
  182. if (pageInfo.getOffset() == 0) {
  183. pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
  184. }
  185. pageInfo.setSort(sort);
  186. logger.log("公共询价", "查询公共询价信息", null, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.PLAIN.name());
  187. return publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter);
  188. }
  189. /**
  190. * 针对商城,查询已发布的公共询价信息
  191. *
  192. * @param pageInfo 分页信息
  193. * @param searchFilter 过滤条件
  194. * @return
  195. */
  196. @HttpLog
  197. @RequestMapping(value = "/inquiryList", method = RequestMethod.GET)
  198. public IPage<PurcInquiryItemInfo> getInquiryList(PageInfo pageInfo, SearchFilter searchFilter) {
  199. Sort sort = new Sort(Sort.Direction.DESC, "date");
  200. if (pageInfo.getOffset() == 0) {
  201. pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
  202. }
  203. pageInfo.setSort(sort);
  204. if (null != searchFilter.getUserUU()) {
  205. pageInfo.filter("userUU", searchFilter.getUserUU());
  206. }
  207. if (null != searchFilter.getEnUU()) {
  208. pageInfo.filter("inquiry.enUU", searchFilter.getEnUU());
  209. }
  210. logger.log("公共询价", "查询已发布公共询价信息", null, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.MALL.name());
  211. return publicInquiryService.findTodoByPageInfo(pageInfo, searchFilter);
  212. }
  213. /**
  214. * 移动端查询公共询价列表信息
  215. *
  216. * @param page 页码
  217. * @param size 每页大小
  218. * @param en_uu 企业UU
  219. * @param _state 过滤状态
  220. * @param keyword 搜索词
  221. * @param user_tel 电话
  222. * @param fromDate 开始日期
  223. * @param endDate 截止日期
  224. * @return
  225. */
  226. @HttpLog
  227. @RequestMapping(value = "/mobile", method = RequestMethod.GET)
  228. public ModelMap publincInquiry(Integer page, Integer size, Long en_uu, String _state,
  229. String keyword, String user_tel, Long fromDate, Long endDate) {
  230. ModelMap map = new ModelMap();
  231. PageInfo pageInfo = new PageInfo();
  232. if (page == 0 || page == null) {
  233. pageInfo.setPageNumber(1);
  234. } else {
  235. pageInfo.setPageNumber(page);
  236. }
  237. if (size == 0 || size == null) {
  238. pageInfo.setPageSize(5);
  239. } else {
  240. pageInfo.setPageSize(size);
  241. }
  242. pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
  243. Sort sort = new Sort(Sort.Direction.DESC, "date");
  244. pageInfo.setSort(sort);
  245. SearchFilter filter = new SearchFilter();
  246. filter.setFromDate(fromDate);
  247. filter.setEndDate(endDate);
  248. filter.setKeyword(keyword);
  249. if (StringUtils.hasText(_state)) {
  250. if (_state.equals(OrderStatus.end.name())) {
  251. logger.log("公共询价", "查询公共询价信息", "tel: " + user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  252. pageInfo.filter("overdue", Constant.YES);
  253. map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent());
  254. return map;
  255. } else if (_state.equals(OrderStatus.invalid)) {
  256. logger.log("公共询价", "查询公共询价信息", "tel: " + user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  257. pageInfo.filter("invalid", Constant.YES);
  258. map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent());
  259. return map;
  260. } else if (_state.equals(OrderStatus.done.name())) {
  261. logger.log("公共询价", "查询已转报价询价列表信息", "tel: " + user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  262. filter.setVendUU(en_uu);
  263. filter.setKeyword(keyword);
  264. map.put("content", publicInquiryService.findByPageInfo(pageInfo, filter).getContent());
  265. return map;
  266. }
  267. } else {
  268. filter.setEnUU(en_uu);
  269. logger.log("公共询价", "查询公共询价信息", "tel: " + user_tel, Constant.UU, en_uu, InquirySource.UU.name());
  270. map.put("content", publicInquiryService.findTodoByPageInfo(pageInfo, filter).getContent());
  271. return map;
  272. }
  273. return map;
  274. }
  275. /**
  276. * 通过分页信息和过滤条件查询已转报价的信息
  277. *
  278. * @author hejq
  279. * @date 2018-01-18 15:36
  280. * @param pageInfo 分页参数
  281. * @param filter 过滤条件
  282. * @return
  283. */
  284. @HttpLog
  285. @RequestMapping(value = "/quotation/list", method = RequestMethod.GET)
  286. public Page<PublicInquiryItemInfo> getQuotation(PageInfo pageInfo, String filter, String _state) {
  287. Sort sort = new Sort(Sort.Direction.DESC, "date");
  288. if (pageInfo.getOffset() == 0) {
  289. pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
  290. }
  291. pageInfo.setSort(sort);
  292. SearchFilter searchFilter = JSONObject.parseObject(filter, SearchFilter.class);
  293. if (null != searchFilter.getVendUU()) {
  294. pageInfo.filter("vendUU", searchFilter.getVendUU());
  295. } else if (null != searchFilter.getEnUU()) {
  296. pageInfo.filter("inquiry.enUU", searchFilter.getEnUU());
  297. } else {
  298. throw new IllegalAccessError("请先传入企业信息");
  299. }
  300. if (null != _state) {
  301. pageInfo = publicInquiryService.covert(pageInfo, _state);
  302. }
  303. logger.log("公共询价", "查询已转报价询价列表信息", "状态: " + _state == null ? "all" : _state, searchFilter.getUserUU(), searchFilter.getEnUU(), InquirySource.PLAIN.name());
  304. return publicInquiryService.findByPageInfo(pageInfo, searchFilter);
  305. }
  306. /**
  307. * 商城获取采纳列表
  308. * @param pageInfo
  309. * @param filter
  310. * @param _state
  311. * @return
  312. */
  313. @HttpLog
  314. @RequestMapping(value = "/quotationList", method = RequestMethod.GET)
  315. public Page<PublicInquiryItemInfo> getQuotationList(PageInfo pageInfo, String filter, String _state) {
  316. Sort sort = new Sort(Sort.Direction.DESC, "date");
  317. if (pageInfo.getOffset() == 0) {
  318. pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
  319. }
  320. pageInfo.setSort(sort);
  321. SearchFilter searchFilter = JSONObject.parseObject(filter, SearchFilter.class);
  322. if (null != _state) {
  323. pageInfo = publicInquiryService.covert(pageInfo, _state);
  324. }
  325. return publicInquiryService.findListByPageInfo(pageInfo, searchFilter);
  326. }
  327. /**
  328. * 获取最新的公共询价列表
  329. *
  330. * @param enuu 当前企业UU号
  331. * @param size 大小
  332. * @return
  333. */
  334. @HttpLog
  335. @RequestMapping(value = "/messageList", method = RequestMethod.GET)
  336. public List<InquiryMessage> getList(Long enuu, Integer size) {
  337. logger.log("公共询价", "获取最新的公共询价", "大小: " + size, Constant.UU, enuu, InquirySource.PLAIN.name());
  338. return publicInquiryService.getMessageList(enuu, size);
  339. }
  340. /**
  341. * 获取附件信息
  342. *
  343. * @param id 附件id
  344. * @return
  345. */
  346. @HttpLog
  347. @RequestMapping(value = "/attachUrl", method = RequestMethod.GET)
  348. public com.uas.ps.inquiry.model.Attach getAttach(Long id) {
  349. return attachService.findById(id);
  350. }
  351. /**
  352. * 通过询价主表id查询主表信息
  353. *
  354. * @param id 主表id
  355. * @return
  356. */
  357. @HttpLog
  358. @RequestMapping(value = "/findInquiryById", method = RequestMethod.GET)
  359. public PurcInquiry findById(Long id, Long enuu) {
  360. logger.log("公共询价", "获取询价信息", "id: " + id, Constant.UU, enuu, InquirySource.PLAIN.name());
  361. return publicInquiryService.findInquiryById(id);
  362. }
  363. /**
  364. * 商城-采购排行榜
  365. * @return
  366. */
  367. @HttpLog
  368. @RequestMapping(value = "/findCodeRankingList", method = RequestMethod.GET)
  369. public List<Map<String, Object>> findCodeRankingList() {
  370. return publicInquiryService.findCodeRankingList();
  371. }
  372. /**
  373. * 通过明细id查询该条询价的详情
  374. *
  375. * @param itemId 明细id
  376. * @param enuu enuu
  377. * @return
  378. */
  379. @HttpLog
  380. @RequestMapping(value = "/findItemByItemId", method = RequestMethod.GET)
  381. public PurcInquiryItemInfo findItemByItemId(Long itemId, Long enuu) {
  382. logger.log("公共询价", "获取询价信息", "id: " + itemId, Constant.UU, enuu, InquirySource.B2B.name());
  383. return publicInquiryService.findItemByItemId(itemId);
  384. }
  385. }