StatsModelUtil.java 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844
  1. package com.slodon.b2b2c.util;
  2. import com.slodon.b2b2c.core.response.PagerInfo;
  3. import com.slodon.b2b2c.core.util.StringUtil;
  4. import com.slodon.b2b2c.enums.StatsTimeType;
  5. import com.slodon.b2b2c.model.statistics.*;
  6. import com.slodon.b2b2c.statistics.example.*;
  7. import com.slodon.b2b2c.statistics.pojo.base.*;
  8. import com.slodon.b2b2c.vo.statistics.MovableGoodsVO;
  9. import com.slodon.b2b2c.vo.statistics.SalesTrendVO;
  10. import org.springframework.stereotype.Component;
  11. import javax.annotation.Resource;
  12. import java.util.ArrayList;
  13. import java.util.Date;
  14. import java.util.List;
  15. /**
  16. * 统计model工具类
  17. */
  18. @Component
  19. public class StatsModelUtil {
  20. @Resource
  21. private PlatformHourModel platformHourModel;
  22. @Resource
  23. private PlatformDayModel platformDayModel;
  24. @Resource
  25. private PlatformWeekModel platformWeekModel;
  26. @Resource
  27. private PlatformMonthModel platformMonthModel;
  28. @Resource
  29. private PlatformYearModel platformYearModel;
  30. @Resource
  31. private TerminalHourModel terminalHourModel;
  32. @Resource
  33. private TerminalDayModel terminalDayModel;
  34. @Resource
  35. private TerminalWeekModel terminalWeekModel;
  36. @Resource
  37. private TerminalMonthModel terminalMonthModel;
  38. @Resource
  39. private TerminalYearModel terminalYearModel;
  40. @Resource
  41. private StoreHourModel storeHourModel;
  42. @Resource
  43. private StoreDayModel storeDayModel;
  44. @Resource
  45. private StoreWeekModel storeWeekModel;
  46. @Resource
  47. private StoreMonthModel storeMonthModel;
  48. @Resource
  49. private StoreYearModel storeYearModel;
  50. @Resource
  51. private GoodsHourModel goodsHourModel;
  52. @Resource
  53. private GoodsDayModel goodsDayModel;
  54. @Resource
  55. private GoodsWeekModel goodsWeekModel;
  56. @Resource
  57. private GoodsMonthModel goodsMonthModel;
  58. @Resource
  59. private GoodsYearModel goodsYearModel;
  60. @Resource
  61. private ProvinceHourModel provinceHourModel;
  62. @Resource
  63. private ProvinceDayModel provinceDayModel;
  64. @Resource
  65. private ProvinceWeekModel provinceWeekModel;
  66. @Resource
  67. private ProvinceMonthModel provinceMonthModel;
  68. @Resource
  69. private ProvinceYearModel provinceYearModel;
  70. @Resource
  71. private BrandHourModel brandHourModel;
  72. @Resource
  73. private BrandDayModel brandDayModel;
  74. @Resource
  75. private BrandWeekModel brandWeekModel;
  76. @Resource
  77. private BrandMonthModel brandMonthModel;
  78. @Resource
  79. private BrandYearModel brandYearModel;
  80. @Resource
  81. private CategoryHourModel categoryHourModel;
  82. @Resource
  83. private CategoryDayModel categoryDayModel;
  84. @Resource
  85. private CategoryWeekModel categoryWeekModel;
  86. @Resource
  87. private CategoryMonthModel categoryMonthModel;
  88. @Resource
  89. private CategoryYearModel categoryYearModel;
  90. /**
  91. * 返回对应的平台列表数据
  92. *
  93. * @param timeType
  94. * @param startTime
  95. * @param endTime
  96. * @return
  97. */
  98. public List<? extends PlatformBase> getPlatformList(StatsTimeType timeType, Date startTime, Date endTime) {
  99. List<? extends PlatformBase> list = new ArrayList<>();
  100. switch (timeType) {
  101. case HOUR:
  102. PlatformHourExample example = new PlatformHourExample();
  103. example.setStatsTimeAfter(startTime);
  104. example.setStatsTimeBefore(endTime);
  105. list = platformHourModel.getPlatformHourList(example, null);
  106. break;
  107. case WEEK:
  108. PlatformWeekExample weekExample = new PlatformWeekExample();
  109. weekExample.setStatsTimeAfter(startTime);
  110. weekExample.setStatsTimeBefore(endTime);
  111. list = platformWeekModel.getPlatformWeekList(weekExample, null);
  112. break;
  113. case MONTH:
  114. PlatformMonthExample monthExample = new PlatformMonthExample();
  115. monthExample.setStatsTimeAfter(startTime);
  116. monthExample.setStatsTimeBefore(endTime);
  117. list = platformMonthModel.getPlatformMonthList(monthExample, null);
  118. break;
  119. case YEAR:
  120. PlatformYearExample yearExample = new PlatformYearExample();
  121. yearExample.setStatsTimeAfter(startTime);
  122. yearExample.setStatsTimeBefore(endTime);
  123. list = platformYearModel.getPlatformYearList(yearExample, null);
  124. break;
  125. case DAY:
  126. PlatformDayExample dayExample = new PlatformDayExample();
  127. dayExample.setStatsTimeAfter(startTime);
  128. dayExample.setStatsTimeBefore(endTime);
  129. list = platformDayModel.getPlatformList(dayExample);
  130. break;
  131. }
  132. return list;
  133. }
  134. /**
  135. * 返回商品动销趋势列表数据
  136. *
  137. * @param timeType
  138. * @param startTime
  139. * @param endTime
  140. * @return
  141. */
  142. public List<MovableGoodsVO> getPlatformTrendList(StatsTimeType timeType, Date startTime, Date endTime) {
  143. List<MovableGoodsVO> list = new ArrayList<>();
  144. switch (timeType) {
  145. case HOUR:
  146. PlatformHourExample example = new PlatformHourExample();
  147. example.setStatsTimeAfter(startTime);
  148. example.setStatsTimeBefore(endTime);
  149. list = platformHourModel.getPlatformTrendList(example);
  150. break;
  151. case DAY:
  152. case WEEK:
  153. case MONTH:
  154. PlatformDayExample dayExample = new PlatformDayExample();
  155. dayExample.setStatsTimeAfter(startTime);
  156. dayExample.setStatsTimeBefore(endTime);
  157. list = platformDayModel.getPlatformTrendList(dayExample);
  158. break;
  159. case YEAR:
  160. PlatformMonthExample monthExample = new PlatformMonthExample();
  161. monthExample.setStatsTimeAfter(startTime);
  162. monthExample.setStatsTimeBefore(endTime);
  163. list = platformMonthModel.getPlatformTrendList(monthExample);
  164. break;
  165. }
  166. return list;
  167. }
  168. /**
  169. * 返回对应的终端列表数据
  170. *
  171. * @param timeType
  172. * @param startTime
  173. * @param endTime
  174. * @return
  175. */
  176. public List<? extends TerminalBase> getTerminalList(StatsTimeType timeType, Date startTime, Date endTime, String terminalType) {
  177. List<? extends TerminalBase> list = new ArrayList<>();
  178. switch (timeType) {
  179. case HOUR:
  180. TerminalHourExample example = new TerminalHourExample();
  181. example.setStatsTimeAfter(startTime);
  182. example.setStatsTimeBefore(endTime);
  183. example.setTerminalCode(terminalType);
  184. list = terminalHourModel.getTerminalHourList(example, null);
  185. break;
  186. case WEEK:
  187. TerminalWeekExample weekExample = new TerminalWeekExample();
  188. weekExample.setStatsTimeAfter(startTime);
  189. weekExample.setStatsTimeBefore(endTime);
  190. weekExample.setTerminalCode(terminalType);
  191. list = terminalWeekModel.getTerminalWeekList(weekExample, null);
  192. break;
  193. case MONTH:
  194. TerminalMonthExample monthExample = new TerminalMonthExample();
  195. monthExample.setStatsTimeAfter(startTime);
  196. monthExample.setStatsTimeBefore(endTime);
  197. monthExample.setTerminalCode(terminalType);
  198. list = terminalMonthModel.getTerminalMonthList(monthExample, null);
  199. break;
  200. case YEAR:
  201. TerminalYearExample yearExample = new TerminalYearExample();
  202. yearExample.setStatsTimeAfter(startTime);
  203. yearExample.setStatsTimeBefore(endTime);
  204. yearExample.setTerminalCode(terminalType);
  205. list = terminalYearModel.getTerminalYearList(yearExample, null);
  206. break;
  207. case DAY:
  208. TerminalDayExample dayExample = new TerminalDayExample();
  209. dayExample.setStatsTimeAfter(startTime);
  210. dayExample.setStatsTimeBefore(endTime);
  211. dayExample.setTerminalCode(terminalType);
  212. list = terminalDayModel.getTerminalList(dayExample);
  213. break;
  214. }
  215. return list;
  216. }
  217. /**
  218. * 返回各终端销售变化趋势列表数据
  219. *
  220. * @param timeType
  221. * @param startTime
  222. * @param endTime
  223. * @return
  224. */
  225. public List<SalesTrendVO> getTerminalTrendList(StatsTimeType timeType, Date startTime, Date endTime) {
  226. List<SalesTrendVO> list = new ArrayList<>();
  227. switch (timeType) {
  228. case HOUR:
  229. TerminalHourExample example = new TerminalHourExample();
  230. example.setStatsTimeAfter(startTime);
  231. example.setStatsTimeBefore(endTime);
  232. list = terminalHourModel.getTerminalTrendList(example);
  233. break;
  234. case DAY:
  235. case WEEK:
  236. case MONTH:
  237. TerminalDayExample dayExample = new TerminalDayExample();
  238. dayExample.setStatsTimeAfter(startTime);
  239. dayExample.setStatsTimeBefore(endTime);
  240. list = terminalDayModel.getTerminalTrendList(dayExample);
  241. break;
  242. case YEAR:
  243. TerminalMonthExample monthExample = new TerminalMonthExample();
  244. monthExample.setStatsTimeAfter(startTime);
  245. monthExample.setStatsTimeBefore(endTime);
  246. list = terminalMonthModel.getTerminalTrendList(monthExample);
  247. break;
  248. }
  249. return list;
  250. }
  251. /**
  252. * 返回对应的店铺列表数据
  253. *
  254. * @param timeType
  255. * @param startTime
  256. * @param endTime
  257. * @return
  258. */
  259. public List<? extends StoreBase> getStoreList(StatsTimeType timeType, Date startTime, Date endTime, String webSite, Integer sort,
  260. String sortType, Long storeId, PagerInfo pager) {
  261. List<? extends StoreBase> list = new ArrayList<>();
  262. //排序规则
  263. String orderBy;
  264. if (sortType.equals("sale")) {
  265. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  266. orderBy = "order_pay_num DESC";
  267. } else {
  268. orderBy = "order_pay_amount DESC";
  269. }
  270. } else {
  271. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  272. orderBy = "visitor_num DESC";
  273. } else {
  274. orderBy = "view_num DESC";
  275. }
  276. }
  277. switch (timeType) {
  278. case HOUR:
  279. StoreHourExample example = new StoreHourExample();
  280. example.setStatsTimeAfter(startTime);
  281. example.setStatsTimeBefore(endTime);
  282. example.setStoreId(storeId);
  283. example.setWebSite(webSite);
  284. example.setOrderBy(orderBy);
  285. list = storeHourModel.getStoreHourList(example, pager);
  286. break;
  287. case WEEK:
  288. StoreWeekExample weekExample = new StoreWeekExample();
  289. weekExample.setStatsTimeAfter(startTime);
  290. weekExample.setStatsTimeBefore(endTime);
  291. weekExample.setStoreId(storeId);
  292. weekExample.setWebSite(webSite);
  293. weekExample.setOrderBy(orderBy);
  294. list = storeWeekModel.getStoreWeekList(weekExample, pager);
  295. break;
  296. case MONTH:
  297. StoreMonthExample monthExample = new StoreMonthExample();
  298. monthExample.setStatsTimeAfter(startTime);
  299. monthExample.setStatsTimeBefore(endTime);
  300. monthExample.setStoreId(storeId);
  301. monthExample.setWebSite(webSite);
  302. monthExample.setOrderBy(orderBy);
  303. list = storeMonthModel.getStoreMonthList(monthExample, pager);
  304. break;
  305. case YEAR:
  306. StoreYearExample yearExample = new StoreYearExample();
  307. yearExample.setStatsTimeAfter(startTime);
  308. yearExample.setStatsTimeBefore(endTime);
  309. yearExample.setStoreId(storeId);
  310. yearExample.setWebSite(webSite);
  311. yearExample.setOrderBy(orderBy);
  312. list = storeYearModel.getStoreYearList(yearExample, pager);
  313. break;
  314. case DAY:
  315. StoreDayExample dayExample = new StoreDayExample();
  316. dayExample.setStatsTimeAfter(startTime);
  317. dayExample.setStatsTimeBefore(endTime);
  318. dayExample.setStoreId(storeId);
  319. dayExample.setWebSite(webSite);
  320. if (sortType.equals("sale")) {
  321. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  322. dayExample.setOrderBy("orderPayNum DESC");
  323. } else {
  324. dayExample.setOrderBy("orderPayAmount DESC");
  325. }
  326. } else {
  327. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  328. dayExample.setOrderBy("visitorNum DESC");
  329. } else {
  330. dayExample.setOrderBy("viewNum DESC");
  331. }
  332. }
  333. if (pager != null) {
  334. list = storeDayModel.getStoreList(dayExample, pager);
  335. } else {
  336. list = storeDayModel.getStoreListByExample(dayExample);
  337. }
  338. break;
  339. }
  340. return list;
  341. }
  342. /**
  343. * 返回店铺变化趋势列表数据
  344. *
  345. * @param timeType
  346. * @param startTime
  347. * @param endTime
  348. * @return
  349. */
  350. public List<MovableGoodsVO> getStoreTrendList(StatsTimeType timeType, Date startTime, Date endTime,String webSite, Long storeId) {
  351. List<MovableGoodsVO> list = new ArrayList<>();
  352. switch (timeType) {
  353. case HOUR:
  354. StoreHourExample example = new StoreHourExample();
  355. example.setStatsTimeAfter(startTime);
  356. example.setStatsTimeBefore(endTime);
  357. example.setStoreId(storeId);
  358. example.setWebSite(webSite);
  359. list = storeHourModel.getStoreTrendList(example);
  360. break;
  361. case DAY:
  362. case WEEK:
  363. case MONTH:
  364. StoreDayExample dayExample = new StoreDayExample();
  365. dayExample.setStatsTimeAfter(startTime);
  366. dayExample.setStatsTimeBefore(endTime);
  367. dayExample.setStoreId(storeId);
  368. dayExample.setWebSite(webSite);
  369. list = storeDayModel.getStoreTrendList(dayExample);
  370. break;
  371. case YEAR:
  372. StoreMonthExample monthExample = new StoreMonthExample();
  373. monthExample.setStatsTimeAfter(startTime);
  374. monthExample.setStatsTimeBefore(endTime);
  375. monthExample.setStoreId(storeId);
  376. monthExample.setWebSite(webSite);
  377. list = storeMonthModel.getStoreTrendList(monthExample);
  378. break;
  379. }
  380. return list;
  381. }
  382. /**
  383. * 返回对应的商品列表数据
  384. *
  385. * @param timeType
  386. * @param startTime
  387. * @param endTime
  388. * @return
  389. */
  390. public List<? extends GoodsBase> getGoodsList(StatsTimeType timeType, Date startTime, Date endTime,String webSite, Integer sort,
  391. String sortType, Long storeId) {
  392. //默认查询前十条数据
  393. PagerInfo pager = new PagerInfo(10, 1);
  394. List<? extends GoodsBase> list = new ArrayList<>();
  395. //排序规则
  396. String orderBy;
  397. if (sortType.equals("sale")) {
  398. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  399. orderBy = "sale_num DESC, sale_amount DESC";
  400. } else {
  401. orderBy = "sale_amount DESC, sale_num DESC";
  402. }
  403. } else if (sortType.equals("collection")) {
  404. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  405. orderBy = "goods_price DESC";
  406. } else {
  407. orderBy = "collection_num DESC";
  408. }
  409. } else if (sortType.equals("prefer")) {
  410. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  411. orderBy = "collection_num DESC";
  412. } else if (!StringUtil.isNullOrZero(sort) && sort == 3) {
  413. orderBy = "order_pay_num DESC";
  414. } else {
  415. orderBy = "view_num DESC";
  416. }
  417. } else {
  418. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  419. orderBy = "visitor_num DESC";
  420. } else {
  421. orderBy = "view_num DESC";
  422. }
  423. }
  424. switch (timeType) {
  425. case HOUR:
  426. GoodsHourExample example = new GoodsHourExample();
  427. example.setStatsTimeAfter(startTime);
  428. example.setStatsTimeBefore(endTime);
  429. example.setStoreId(storeId);
  430. example.setWebSite(webSite);
  431. example.setOrderBy(orderBy);
  432. list = goodsHourModel.getGoodsHourList(example, pager);
  433. break;
  434. case WEEK:
  435. GoodsWeekExample weekExample = new GoodsWeekExample();
  436. weekExample.setStatsTimeAfter(startTime);
  437. weekExample.setStatsTimeBefore(endTime);
  438. weekExample.setStoreId(storeId);
  439. weekExample.setWebSite(webSite);
  440. weekExample.setOrderBy(orderBy);
  441. list = goodsWeekModel.getGoodsWeekList(weekExample, pager);
  442. break;
  443. case MONTH:
  444. GoodsMonthExample monthExample = new GoodsMonthExample();
  445. monthExample.setStatsTimeAfter(startTime);
  446. monthExample.setStatsTimeBefore(endTime);
  447. monthExample.setStoreId(storeId);
  448. monthExample.setWebSite(webSite);
  449. monthExample.setOrderBy(orderBy);
  450. list = goodsMonthModel.getGoodsMonthList(monthExample, pager);
  451. break;
  452. case YEAR:
  453. GoodsYearExample yearExample = new GoodsYearExample();
  454. yearExample.setStatsTimeAfter(startTime);
  455. yearExample.setStatsTimeBefore(endTime);
  456. yearExample.setStoreId(storeId);
  457. yearExample.setOrderBy(orderBy);
  458. yearExample.setWebSite(webSite);
  459. list = goodsYearModel.getGoodsYearList(yearExample, pager);
  460. break;
  461. case DAY:
  462. GoodsDayExample dayExample = new GoodsDayExample();
  463. dayExample.setStatsTimeAfter(startTime);
  464. dayExample.setStatsTimeBefore(endTime);
  465. dayExample.setStoreId(storeId);
  466. dayExample.setWebSite(webSite);
  467. if (sortType.equals("sale")) {
  468. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  469. dayExample.setOrderBy("saleNum DESC");
  470. } else {
  471. dayExample.setOrderBy("saleAmount DESC");
  472. }
  473. } else if (sortType.equals("collection")) {
  474. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  475. dayExample.setOrderBy("goodsPrice DESC");
  476. } else {
  477. dayExample.setOrderBy("collectionNum DESC");
  478. }
  479. } else if (sortType.equals("prefer")) {
  480. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  481. dayExample.setOrderBy("collectionNum DESC");
  482. } else if (!StringUtil.isNullOrZero(sort) && sort == 3) {
  483. dayExample.setOrderBy("orderPayNum DESC");
  484. } else {
  485. dayExample.setOrderBy("viewNum DESC");
  486. }
  487. } else {
  488. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  489. dayExample.setOrderBy("visitorNum DESC");
  490. } else {
  491. dayExample.setOrderBy("viewNum DESC");
  492. }
  493. }
  494. list = goodsDayModel.getGoodsList(dayExample, pager);
  495. break;
  496. }
  497. return list;
  498. }
  499. /**
  500. * 返回商品销售变化趋势列表数据
  501. *
  502. * @param timeType
  503. * @param startTime
  504. * @param endTime
  505. * @return
  506. */
  507. public List<SalesTrendVO> getGoodsTrendList(StatsTimeType timeType, Date startTime, Date endTime, String goodsIds) {
  508. List<SalesTrendVO> list = new ArrayList<>();
  509. switch (timeType) {
  510. case HOUR:
  511. GoodsHourExample example = new GoodsHourExample();
  512. example.setStatsTimeAfter(startTime);
  513. example.setStatsTimeBefore(endTime);
  514. example.setGoodsIdIn(goodsIds);
  515. list = goodsHourModel.getGoodsTrendList(example);
  516. break;
  517. case DAY:
  518. case WEEK:
  519. case MONTH:
  520. GoodsDayExample dayExample = new GoodsDayExample();
  521. dayExample.setStatsTimeAfter(startTime);
  522. dayExample.setStatsTimeBefore(endTime);
  523. dayExample.setGoodsIdIn(goodsIds);
  524. list = goodsDayModel.getGoodsTrendList(dayExample);
  525. break;
  526. case YEAR:
  527. GoodsMonthExample monthExample = new GoodsMonthExample();
  528. monthExample.setStatsTimeAfter(startTime);
  529. monthExample.setStatsTimeBefore(endTime);
  530. monthExample.setGoodsIdIn(goodsIds);
  531. list = goodsMonthModel.getGoodsTrendList(monthExample);
  532. break;
  533. }
  534. return list;
  535. }
  536. /**
  537. * 返回各省份销售变化趋势列表数据
  538. *
  539. * @param timeType
  540. * @param startTime
  541. * @param endTime
  542. * @return
  543. */
  544. public List<SalesTrendVO> getProvinceTrendList(StatsTimeType timeType, Date startTime, Date endTime, String provinceCode) {
  545. List<SalesTrendVO> list = new ArrayList<>();
  546. switch (timeType) {
  547. case HOUR:
  548. ProvinceHourExample example = new ProvinceHourExample();
  549. example.setStatsTimeAfter(startTime);
  550. example.setStatsTimeBefore(endTime);
  551. if (!StringUtil.isEmpty(provinceCode)) {
  552. example.setProvinceCode(provinceCode);
  553. } else {
  554. //如果编码为空,默认按北京查询
  555. example.setProvinceCode("CN003000000");
  556. }
  557. list = provinceHourModel.getProvinceTrendList(example);
  558. break;
  559. case DAY:
  560. case WEEK:
  561. case MONTH:
  562. ProvinceDayExample dayExample = new ProvinceDayExample();
  563. dayExample.setStatsTimeAfter(startTime);
  564. dayExample.setStatsTimeBefore(endTime);
  565. if (!StringUtil.isEmpty(provinceCode)) {
  566. dayExample.setProvinceCode(provinceCode);
  567. } else {
  568. //如果编码为空,默认按北京查询
  569. dayExample.setProvinceCode("CN003000000");
  570. }
  571. list = provinceDayModel.getProvinceTrendList(dayExample);
  572. break;
  573. case YEAR:
  574. ProvinceMonthExample monthExample = new ProvinceMonthExample();
  575. monthExample.setStatsTimeAfter(startTime);
  576. monthExample.setStatsTimeBefore(endTime);
  577. if (!StringUtil.isEmpty(provinceCode)) {
  578. monthExample.setProvinceCode(provinceCode);
  579. } else {
  580. //如果编码为空,默认按北京查询
  581. monthExample.setProvinceCode("CN003000000");
  582. }
  583. list = provinceMonthModel.getProvinceTrendList(monthExample);
  584. break;
  585. }
  586. return list;
  587. }
  588. /**
  589. * 返回对应的省份列表数据
  590. *
  591. * @param timeType
  592. * @param startTime
  593. * @param endTime
  594. * @return
  595. */
  596. public List<? extends ProvinceBase> getProvinceList(StatsTimeType timeType, Date startTime, Date endTime, Integer sort) {
  597. List<? extends ProvinceBase> list = new ArrayList<>();
  598. //排序规则
  599. String orderBy;
  600. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  601. orderBy = "order_pay_num DESC";
  602. } else if (!StringUtil.isNullOrZero(sort) && sort == 3) {
  603. orderBy = "order_submit_member_num DESC";
  604. } else {
  605. orderBy = "order_pay_amount DESC";
  606. }
  607. switch (timeType) {
  608. case HOUR:
  609. ProvinceHourExample example = new ProvinceHourExample();
  610. example.setStatsTimeAfter(startTime);
  611. example.setStatsTimeBefore(endTime);
  612. example.setOrderBy(orderBy);
  613. list = provinceHourModel.getProvinceHourList(example, null);
  614. break;
  615. case WEEK:
  616. ProvinceWeekExample weekExample = new ProvinceWeekExample();
  617. weekExample.setStatsTimeAfter(startTime);
  618. weekExample.setStatsTimeBefore(endTime);
  619. weekExample.setOrderBy(orderBy);
  620. list = provinceWeekModel.getProvinceWeekList(weekExample, null);
  621. break;
  622. case MONTH:
  623. ProvinceMonthExample monthExample = new ProvinceMonthExample();
  624. monthExample.setStatsTimeAfter(startTime);
  625. monthExample.setStatsTimeBefore(endTime);
  626. monthExample.setOrderBy(orderBy);
  627. list = provinceMonthModel.getProvinceMonthList(monthExample, null);
  628. break;
  629. case YEAR:
  630. ProvinceYearExample yearExample = new ProvinceYearExample();
  631. yearExample.setStatsTimeAfter(startTime);
  632. yearExample.setStatsTimeBefore(endTime);
  633. yearExample.setOrderBy(orderBy);
  634. list = provinceYearModel.getProvinceYearList(yearExample, null);
  635. break;
  636. case DAY:
  637. ProvinceDayExample dayExample = new ProvinceDayExample();
  638. dayExample.setStatsTimeAfter(startTime);
  639. dayExample.setStatsTimeBefore(endTime);
  640. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  641. dayExample.setOrderBy("orderPayNum DESC");
  642. } else if (!StringUtil.isNullOrZero(sort) && sort == 3) {
  643. dayExample.setOrderBy("orderSubmitMemberNum DESC");
  644. } else {
  645. dayExample.setOrderBy("orderPayAmount DESC");
  646. }
  647. list = provinceDayModel.getProvinceList(dayExample);
  648. break;
  649. }
  650. return list;
  651. }
  652. /**
  653. * 返回对应的品牌列表数据
  654. *
  655. * @param timeType
  656. * @param startTime
  657. * @param endTime
  658. * @return
  659. */
  660. public List<? extends BrandBase> getBrandList(StatsTimeType timeType, Date startTime, Date endTime, Integer sort, PagerInfo pager) {
  661. List<? extends BrandBase> list = new ArrayList<>();
  662. //排序规则
  663. String orderBy;
  664. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  665. orderBy = "sale_num DESC";
  666. } else {
  667. orderBy = "sale_amount DESC";
  668. }
  669. switch (timeType) {
  670. case HOUR:
  671. BrandHourExample example = new BrandHourExample();
  672. example.setStatsTimeAfter(startTime);
  673. example.setStatsTimeBefore(endTime);
  674. example.setOrderBy(orderBy);
  675. list = brandHourModel.getBrandHourList(example, pager);
  676. break;
  677. case WEEK:
  678. BrandWeekExample weekExample = new BrandWeekExample();
  679. weekExample.setStatsTimeAfter(startTime);
  680. weekExample.setStatsTimeBefore(endTime);
  681. weekExample.setOrderBy(orderBy);
  682. list = brandWeekModel.getBrandWeekList(weekExample, pager);
  683. break;
  684. case MONTH:
  685. BrandMonthExample monthExample = new BrandMonthExample();
  686. monthExample.setStatsTimeAfter(startTime);
  687. monthExample.setStatsTimeBefore(endTime);
  688. monthExample.setOrderBy(orderBy);
  689. list = brandMonthModel.getBrandMonthList(monthExample, pager);
  690. break;
  691. case YEAR:
  692. BrandYearExample yearExample = new BrandYearExample();
  693. yearExample.setStatsTimeAfter(startTime);
  694. yearExample.setStatsTimeBefore(endTime);
  695. yearExample.setOrderBy(orderBy);
  696. list = brandYearModel.getBrandYearList(yearExample, pager);
  697. break;
  698. case DAY:
  699. BrandDayExample dayExample = new BrandDayExample();
  700. dayExample.setStatsTimeAfter(startTime);
  701. dayExample.setStatsTimeBefore(endTime);
  702. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  703. dayExample.setOrderBy("saleNum DESC");
  704. } else {
  705. dayExample.setOrderBy("saleAmount DESC");
  706. }
  707. list = brandDayModel.getBrandList(dayExample, pager);
  708. break;
  709. }
  710. return list;
  711. }
  712. /**
  713. * 返回对应的商品分类列表数据
  714. *
  715. * @param timeType
  716. * @param startTime
  717. * @param endTime
  718. * @return
  719. */
  720. public List<? extends CategoryBase> getCategoryList(StatsTimeType timeType, Date startTime, Date endTime, Integer sort, String sortType) {
  721. //默认查询前十条数据
  722. PagerInfo pager = new PagerInfo(10, 1);
  723. List<? extends CategoryBase> list = new ArrayList<>();
  724. //排序规则
  725. String orderBy;
  726. if (sortType.equals("sale")) {
  727. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  728. orderBy = "sale_num DESC";
  729. } else {
  730. orderBy = "sale_amount DESC";
  731. }
  732. } else {
  733. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  734. orderBy = "visitor_num DESC";
  735. } else {
  736. orderBy = "view_num DESC";
  737. }
  738. }
  739. switch (timeType) {
  740. case HOUR:
  741. CategoryHourExample example = new CategoryHourExample();
  742. example.setStatsTimeAfter(startTime);
  743. example.setStatsTimeBefore(endTime);
  744. example.setOrderBy(orderBy);
  745. list = categoryHourModel.getCategoryHourList(example, pager);
  746. break;
  747. case WEEK:
  748. CategoryWeekExample weekExample = new CategoryWeekExample();
  749. weekExample.setStatsTimeAfter(startTime);
  750. weekExample.setStatsTimeBefore(endTime);
  751. weekExample.setOrderBy(orderBy);
  752. list = categoryWeekModel.getCategoryWeekList(weekExample, pager);
  753. break;
  754. case MONTH:
  755. CategoryMonthExample monthExample = new CategoryMonthExample();
  756. monthExample.setStatsTimeAfter(startTime);
  757. monthExample.setStatsTimeBefore(endTime);
  758. monthExample.setOrderBy(orderBy);
  759. list = categoryMonthModel.getCategoryMonthList(monthExample, pager);
  760. break;
  761. case YEAR:
  762. CategoryYearExample yearExample = new CategoryYearExample();
  763. yearExample.setStatsTimeAfter(startTime);
  764. yearExample.setStatsTimeBefore(endTime);
  765. yearExample.setOrderBy(orderBy);
  766. list = categoryYearModel.getCategoryYearList(yearExample, pager);
  767. break;
  768. case DAY:
  769. CategoryDayExample dayExample = new CategoryDayExample();
  770. dayExample.setStatsTimeAfter(startTime);
  771. dayExample.setStatsTimeBefore(endTime);
  772. if (sortType.equals("sale")) {
  773. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  774. dayExample.setOrderBy("saleNum DESC");
  775. } else {
  776. dayExample.setOrderBy("saleAmount DESC");
  777. }
  778. } else {
  779. if (!StringUtil.isNullOrZero(sort) && sort == 2) {
  780. dayExample.setOrderBy("visitorNum DESC");
  781. } else {
  782. dayExample.setOrderBy("viewNum DESC");
  783. }
  784. }
  785. list = categoryDayModel.getCategoryList(dayExample, pager);
  786. break;
  787. }
  788. return list;
  789. }
  790. /**
  791. * 返回商品分类趋势列表数据
  792. *
  793. * @param timeType
  794. * @param startTime
  795. * @param endTime
  796. * @return
  797. */
  798. public List<SalesTrendVO> getCategoryTrendList(StatsTimeType timeType, Date startTime, Date endTime, String categoryIds) {
  799. List<SalesTrendVO> list = new ArrayList<>();
  800. switch (timeType) {
  801. case HOUR:
  802. CategoryHourExample example = new CategoryHourExample();
  803. example.setStatsTimeAfter(startTime);
  804. example.setStatsTimeBefore(endTime);
  805. example.setCategoryIdIn(categoryIds);
  806. list = categoryHourModel.getCategoryTrendList(example);
  807. break;
  808. case DAY:
  809. case WEEK:
  810. case MONTH:
  811. CategoryDayExample dayExample = new CategoryDayExample();
  812. dayExample.setStatsTimeAfter(startTime);
  813. dayExample.setStatsTimeBefore(endTime);
  814. dayExample.setCategoryIdIn(categoryIds);
  815. list = categoryDayModel.getCategoryTrendList(dayExample);
  816. break;
  817. case YEAR:
  818. CategoryMonthExample monthExample = new CategoryMonthExample();
  819. monthExample.setStatsTimeAfter(startTime);
  820. monthExample.setStatsTimeBefore(endTime);
  821. monthExample.setCategoryIdIn(categoryIds);
  822. list = categoryMonthModel.getCategoryTrendList(monthExample);
  823. break;
  824. }
  825. return list;
  826. }
  827. }