SupplyChainController.java 64 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446
  1. package com.ruixuan.isc.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.ruixuan.common.core.controller.BaseController;
  4. import com.ruixuan.common.core.page.TableDataInfo;
  5. import com.ruixuan.common.utils.Check;
  6. import com.ruixuan.common.utils.DateUtils;
  7. import com.ruixuan.data.utils.ExportExcelUtils;
  8. import com.ruixuan.isc.service.IKuaishouPromoterService;
  9. import com.ruixuan.isc.service.ISupplyChainService;
  10. import io.swagger.annotations.ApiOperation;
  11. import io.swagger.annotations.ApiParam;
  12. import lombok.SneakyThrows;
  13. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.web.bind.annotation.GetMapping;
  16. import org.springframework.web.bind.annotation.PostMapping;
  17. import org.springframework.web.bind.annotation.RequestBody;
  18. import org.springframework.web.bind.annotation.RequestMapping;
  19. import org.springframework.web.bind.annotation.RequestParam;
  20. import org.springframework.web.bind.annotation.ResponseBody;
  21. import org.springframework.web.bind.annotation.RestController;
  22. import javax.servlet.http.HttpServletRequest;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.io.IOException;
  25. import java.io.OutputStream;
  26. import java.io.UnsupportedEncodingException;
  27. import java.text.SimpleDateFormat;
  28. import java.util.ArrayList;
  29. import java.util.Arrays;
  30. import java.util.HashMap;
  31. import java.util.List;
  32. import java.util.Map;
  33. @RestController
  34. @RequestMapping("/isv/supply_chain")
  35. public class SupplyChainController extends BaseController {
  36. @Autowired
  37. private ISupplyChainService supplyChainService;
  38. @Autowired
  39. private IKuaishouPromoterService promoterService;
  40. /**
  41. * 达人订单
  42. *
  43. * @param orderStartDate
  44. * @param orderEndDate
  45. * @param promoterNickName
  46. * @param promoterId
  47. * @return
  48. */
  49. @GetMapping("/orderList")
  50. @ApiOperation(value = "达人订单")
  51. public TableDataInfo orderList(@ApiParam("订单开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  52. @ApiParam("订单结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate,
  53. @ApiParam("达人名称") @RequestParam(value = "promoterNickName", required = false) String promoterNickName,
  54. @ApiParam("达人ID") @RequestParam(value = "promoterId", required = false) Long promoterId) {
  55. Map<String, Object> requestMap = new HashMap<>();
  56. if (!Check.isNull(orderStartDate)) {
  57. Long start = DateUtils.getStartLongTime(orderStartDate);
  58. requestMap.put("start", start);
  59. }
  60. if (!Check.isNull(orderEndDate)) {
  61. Long end = DateUtils.getEndLongTime(orderEndDate);
  62. requestMap.put("end", end);
  63. }
  64. if (!Check.isNull(promoterNickName)) {
  65. requestMap.put("promoterNickName", promoterNickName);
  66. }
  67. if (!Check.isNull(promoterId)) {
  68. requestMap.put("promoterId", promoterId);
  69. }
  70. TableDataInfo dataInfo = new TableDataInfo();
  71. if (Check.isNullMap(requestMap)) {
  72. dataInfo.setCode(-1);
  73. dataInfo.setMsg("入参不能为空");
  74. return dataInfo;
  75. }
  76. startPage();
  77. List<JSONObject> list = supplyChainService.getOrderList(requestMap);
  78. return getDataTable(list);
  79. }
  80. /**
  81. * 达人带货详情
  82. *
  83. * @param promoterId
  84. * @param orderStartDate
  85. * @param orderEndDate
  86. * @param itemTitle
  87. * @param itemId
  88. * @return
  89. */
  90. @GetMapping("/anchorOrderDetail")
  91. @ApiOperation(value = "达人带货详情")
  92. public TableDataInfo anchorOrderDetail(
  93. @ApiParam("达人Id") @RequestParam(value = "promoterId", required = false) String promoterId,
  94. @ApiParam("订单开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  95. @ApiParam("订单结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate,
  96. @ApiParam("商品名称") @RequestParam(value = "itemTitle", required = false) String itemTitle,
  97. @ApiParam("商品ID") @RequestParam(value = "itemId", required = false) String itemId) {
  98. Map<String, Object> requestMap = new HashMap<>();
  99. if (!Check.isNull(orderStartDate)) {
  100. Long start = DateUtils.getStartLongTime(orderStartDate);
  101. requestMap.put("start", start);
  102. }
  103. if (!Check.isNull(orderEndDate)) {
  104. Long end = DateUtils.getEndLongTime(orderEndDate);
  105. requestMap.put("end", end);
  106. }
  107. if (!Check.isNull(promoterId)) {
  108. requestMap.put("promoterId", promoterId);
  109. }
  110. if (!Check.isNull(itemId)) {
  111. requestMap.put("itemId", itemId);
  112. }
  113. if (!Check.isNull(itemTitle)) {
  114. requestMap.put("itemTitle", itemTitle);
  115. }
  116. TableDataInfo dataInfo = new TableDataInfo();
  117. if (Check.isNullMap(requestMap)) {
  118. dataInfo.setCode(-1);
  119. dataInfo.setMsg("入参不能为空");
  120. return dataInfo;
  121. }
  122. startPage();
  123. List<JSONObject> list = supplyChainService.anchorOrderDetail(requestMap);
  124. return getDataTable(list);
  125. }
  126. /**
  127. * 订单统计
  128. *
  129. * @param promoterId
  130. * @param orderStartDate
  131. * @param orderEndDate
  132. * @return
  133. */
  134. @GetMapping("/orderStatistics")
  135. @ApiOperation(value = "订单统计")
  136. public JSONObject orderStatistics(
  137. @ApiParam("达人Id") @RequestParam(value = "promoterId", required = false) String promoterId,
  138. @ApiParam("订单开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  139. @ApiParam("订单结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate) {
  140. Map<String, Object> requestMap = new HashMap<>();
  141. if (!Check.isNull(orderStartDate)) {
  142. Long start = DateUtils.getStartLongTime(orderStartDate);
  143. requestMap.put("start", start);
  144. }
  145. if (!Check.isNull(orderEndDate)) {
  146. Long end = DateUtils.getEndLongTime(orderEndDate);
  147. requestMap.put("end", end);
  148. }
  149. if (!Check.isNull(promoterId)) {
  150. requestMap.put("promoterId", promoterId);
  151. }
  152. JSONObject returnJson = new JSONObject();
  153. if (Check.isNullMap(requestMap)) {
  154. returnJson.put("code", -1);
  155. returnJson.put("message", "入参不能为空");
  156. return returnJson;
  157. }
  158. List<JSONObject> list = supplyChainService.orderStatistics(requestMap);
  159. returnJson.put("code", 0);
  160. returnJson.put("data", list);
  161. return returnJson;
  162. }
  163. /**
  164. * 商品列表
  165. *
  166. * @param itemId
  167. * @param itemTitle
  168. * @param orderStartDate
  169. * @param orderEndDate
  170. * @return
  171. */
  172. @GetMapping("/itemList")
  173. @ApiOperation(value = "商品列表")
  174. public TableDataInfo itemList(
  175. @ApiParam("商品Id") @RequestParam(value = "itemId", required = false) String itemId,
  176. @ApiParam("商品名称") @RequestParam(value = "itemTitle", required = false) String itemTitle,
  177. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  178. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate,
  179. @ApiParam("排序字段") @RequestParam(value = "fieId", required = false) String fieId,
  180. @ApiParam("排序方式") @RequestParam(value = "sort", required = false) String sort,
  181. @ApiParam("用户ID") @RequestParam(value = "userId", required = false) String userId
  182. ) {
  183. Map<String, Object> requestMap = new HashMap<>();
  184. if (!Check.isNull(orderStartDate)) {
  185. Long start = DateUtils.getStartLongTime(orderStartDate);
  186. requestMap.put("start", start);
  187. }
  188. if (!Check.isNull(orderEndDate)) {
  189. Long end = DateUtils.getEndLongTime(orderEndDate);
  190. requestMap.put("end", end);
  191. }
  192. if (!Check.isNull(itemId)) {
  193. requestMap.put("itemId", itemId);
  194. }
  195. if (!Check.isNull(itemTitle)) {
  196. requestMap.put("itemTitle", itemTitle);
  197. }
  198. if (!Check.isNull(userId)) {
  199. requestMap.put("userId", userId);
  200. }
  201. requestMap.put("fieId", fieId);
  202. requestMap.put("sort", sort);
  203. TableDataInfo dataInfo = new TableDataInfo();
  204. if (Check.isNullMap(requestMap)) {
  205. dataInfo.setCode(-1);
  206. dataInfo.setMsg("入参不能为空");
  207. return dataInfo;
  208. }
  209. startPage();
  210. List<JSONObject> list = supplyChainService.itemList(requestMap);
  211. return getDataTable(list);
  212. }
  213. /**
  214. * 根据商品id获取top达人
  215. *
  216. * @param itemId
  217. * @param orderStartDate
  218. * @param orderEndDate
  219. * @return
  220. */
  221. @GetMapping("/getTopPromoterByItemId")
  222. @ApiOperation(value = "商品列表")
  223. public TableDataInfo getTopPromoterByItemId(
  224. @ApiParam("商品Id") @RequestParam(value = "itemId", required = false) String itemId,
  225. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  226. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate) {
  227. Map<String, Object> requestMap = new HashMap<>();
  228. if (!Check.isNull(orderStartDate)) {
  229. Long start = DateUtils.getStartLongTime(orderStartDate);
  230. requestMap.put("start", start);
  231. }
  232. if (!Check.isNull(orderEndDate)) {
  233. Long end = DateUtils.getEndLongTime(orderEndDate);
  234. requestMap.put("end", end);
  235. }
  236. if (!Check.isNull(itemId)) {
  237. requestMap.put("itemId", itemId);
  238. }
  239. List<JSONObject> list = supplyChainService.getTopPromoterByItemId(requestMap);
  240. return getDataTable(list);
  241. }
  242. /**
  243. * 商品详情
  244. *
  245. * @param itemId
  246. * @param orderStartDate
  247. * @param orderEndDate
  248. * @param promoterId
  249. * @param promoterNickName
  250. * @return
  251. */
  252. @GetMapping("/itemDetail")
  253. @ApiOperation(value = "商品详情")
  254. public TableDataInfo itemDetail(
  255. @ApiParam("商品ID") @RequestParam(value = "itemId", required = false) String itemId,
  256. @ApiParam("订单开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  257. @ApiParam("订单结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate,
  258. @ApiParam("达人Id") @RequestParam(value = "promoterId", required = false) String promoterId,
  259. @ApiParam("达人名称") @RequestParam(value = "promoterNickName", required = false) String promoterNickName) {
  260. Map<String, Object> requestMap = new HashMap<>();
  261. if (!Check.isNull(orderStartDate)) {
  262. Long start = DateUtils.getStartLongTime(orderStartDate);
  263. requestMap.put("start", start);
  264. }
  265. if (!Check.isNull(orderEndDate)) {
  266. Long end = DateUtils.getEndLongTime(orderEndDate);
  267. requestMap.put("end", end);
  268. }
  269. if (!Check.isNull(promoterId)) {
  270. requestMap.put("promoterId", promoterId);
  271. }
  272. if (!Check.isNull(itemId)) {
  273. requestMap.put("itemId", itemId);
  274. }
  275. if (!Check.isNull(promoterNickName)) {
  276. requestMap.put("itemTitle", promoterNickName);
  277. }
  278. TableDataInfo dataInfo = new TableDataInfo();
  279. if (Check.isNullMap(requestMap)) {
  280. dataInfo.setCode(-1);
  281. dataInfo.setMsg("入参不能为空");
  282. return dataInfo;
  283. }
  284. startPage();
  285. List<JSONObject> list = supplyChainService.itemDetail(requestMap);
  286. return getDataTable(list);
  287. }
  288. /**
  289. * 产品服务费
  290. *
  291. * @param itemId
  292. * @param itemTitle
  293. * @param orderStartDate
  294. * @param orderEndDate
  295. * @return
  296. */
  297. @GetMapping("/itemServiceCharge")
  298. @ApiOperation(value = "产品服务费")
  299. public TableDataInfo itemServiceCharge(
  300. @ApiParam("商品Id") @RequestParam(value = "itemId", required = false) String itemId,
  301. @ApiParam("商品名称") @RequestParam(value = "itemTitle", required = false) String itemTitle,
  302. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  303. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate) {
  304. Map<String, Object> requestMap = new HashMap<>();
  305. if (!Check.isNull(orderStartDate)) {
  306. Long start = DateUtils.getStartLongTime(orderStartDate);
  307. requestMap.put("start", start);
  308. }
  309. if (!Check.isNull(orderEndDate)) {
  310. Long end = DateUtils.getEndLongTime(orderEndDate);
  311. requestMap.put("end", end);
  312. }
  313. if (!Check.isNull(itemId)) {
  314. requestMap.put("itemId", itemId);
  315. }
  316. if (!Check.isNull(itemTitle)) {
  317. requestMap.put("itemTitle", itemTitle);
  318. }
  319. TableDataInfo dataInfo = new TableDataInfo();
  320. if (Check.isNullMap(requestMap)) {
  321. dataInfo.setCode(-1);
  322. dataInfo.setMsg("入参不能为空");
  323. return dataInfo;
  324. }
  325. startPage();
  326. List<JSONObject> list = supplyChainService.itemServiceCharge(requestMap);
  327. return getDataTable(list);
  328. }
  329. /**
  330. * 首页-订单数据
  331. *
  332. * @param dateType
  333. * @param orderStartDate
  334. * @param orderEndDate
  335. * @return
  336. */
  337. @GetMapping("/indexOrderInfo")
  338. @ApiOperation(value = "首页-订单数据")
  339. public JSONObject orderTotal(
  340. @ApiParam("时间类型") @RequestParam(value = "dateType", required = false) Integer dateType,
  341. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  342. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate) {
  343. Map<String, Object> requestMap = new HashMap<>();
  344. JSONObject returnJson = new JSONObject();
  345. if (dateType == 0) {
  346. if (!Check.isNull(orderStartDate)) {
  347. Long start = DateUtils.getStartLongTime(orderStartDate); //当天开始时间
  348. requestMap.put("start", start);
  349. }
  350. if (!Check.isNull(orderEndDate)) {
  351. Long end = DateUtils.getEndLongTime(orderEndDate); // 当天结束时间
  352. requestMap.put("end", end);
  353. }
  354. JSONObject orderTotal = supplyChainService.getOrderTotal(requestMap);
  355. returnJson.put("orderTotal", orderTotal);
  356. Integer hour = DateUtils.getNowHour() - 1; // 当前小时
  357. if (hour >= 0) {
  358. JSONObject ratioJson = new JSONObject();
  359. Long nowStartHourTemp = DateUtils.getStartLongTime(orderStartDate); // 当天开始时间戳
  360. Long nowEndHourTemp = DateUtils.getNowEndHourTemp(orderStartDate, hour); // 当前结束时间戳
  361. String yesterday = DateUtils.getAnotherDay("yyyy-MM-dd", orderStartDate, -1); // 昨日日期
  362. Long yesterdayStartHourTemp = DateUtils.getStartLongTime(yesterday); //昨日开始时间戳
  363. Long yesterdayEndHourTemp = DateUtils.getNowEndHourTemp(yesterday, hour); // 昨日结束时间戳
  364. Map<String, Object> ratioMap = new HashMap<>();
  365. ratioMap.put("nowStartHourTemp", nowStartHourTemp);
  366. ratioMap.put("nowEndHourTemp", nowEndHourTemp);
  367. ratioMap.put("yesterdayStartHourTemp", yesterdayStartHourTemp);
  368. ratioMap.put("yesterdayEndHourTemp", yesterdayEndHourTemp);
  369. Double ringRatio = supplyChainService.getOrderTotalRatio(ratioMap); //环比
  370. ratioJson.put("ringRatio", ringRatio);
  371. String yearDay = DateUtils.getAnotherDay("yyyy-MM-dd", orderStartDate, -6); // 昨日日期
  372. Long yearStartHourTemp = DateUtils.getStartLongTime(yearDay); //前7日开始时间戳
  373. Long yearEndHourTemp = DateUtils.getNowEndHourTemp(yearDay, hour);//前7日结束时间戳
  374. ratioMap.put("yesterdayStartHourTemp", yearStartHourTemp);
  375. ratioMap.put("yesterdayEndHourTemp", yearEndHourTemp);
  376. Double yearRatio = supplyChainService.getOrderTotalRatio(ratioMap); //同比
  377. ratioJson.put("yearRatio", yearRatio);
  378. returnJson.put("ratio", ratioJson);
  379. }
  380. } else {
  381. if (!Check.isNull(orderStartDate)) {
  382. Long start = DateUtils.getStartLongTime(orderStartDate); //昨日开始时间
  383. requestMap.put("start", start);
  384. }
  385. if (!Check.isNull(orderEndDate)) {
  386. Long end = DateUtils.getEndLongTime(orderEndDate); // 前日开始时间
  387. requestMap.put("end", end);
  388. }
  389. JSONObject orderTotal = supplyChainService.getOrderTotal(requestMap);
  390. returnJson.put("orderTotal", orderTotal);
  391. }
  392. return returnJson;
  393. }
  394. /**
  395. * 首页-金额数据
  396. *
  397. * @param dateType
  398. * @param orderStartDate
  399. * @param orderEndDate
  400. * @return
  401. */
  402. @GetMapping("/indexAmountInfo")
  403. @ApiOperation(value = "首页-金额数据")
  404. public JSONObject indexAmountInfo(
  405. @ApiParam("时间类型") @RequestParam(value = "dateType", required = false) Integer dateType,
  406. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  407. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate) {
  408. Map<String, Object> requestMap = new HashMap<>();
  409. JSONObject returnJson = new JSONObject();
  410. if (dateType == 0) {
  411. if (!Check.isNull(orderStartDate)) {
  412. Long start = DateUtils.getStartLongTime(orderStartDate); //当天开始时间
  413. requestMap.put("start", start);
  414. }
  415. if (!Check.isNull(orderEndDate)) {
  416. Long end = DateUtils.getEndLongTime(orderEndDate); // 当天结束时间
  417. requestMap.put("end", end);
  418. }
  419. JSONObject amountTotal = supplyChainService.getAmountTotal(requestMap);
  420. returnJson.put("amountTotal", amountTotal);
  421. Integer hour = DateUtils.getNowHour() - 1; // 当前小时
  422. if (hour >= 0) {
  423. JSONObject amountRatioJson = new JSONObject();
  424. Long nowStartHourTemp = DateUtils.getStartLongTime(orderStartDate); // 当天开始时间戳
  425. Long nowEndHourTemp = DateUtils.getNowEndHourTemp(orderStartDate, hour); // 当前结束时间戳
  426. String yesterday = DateUtils.getAnotherDay("yyyy-MM-dd", orderStartDate, -1); // 昨日日期
  427. Long yesterdayStartHourTemp = DateUtils.getStartLongTime(yesterday); //昨日开始时间戳
  428. Long yesterdayEndHourTemp = DateUtils.getNowEndHourTemp(yesterday, hour); // 昨日结束时间戳
  429. Map<String, Object> ratioMap = new HashMap<>();
  430. ratioMap.put("nowStartHourTemp", nowStartHourTemp);
  431. ratioMap.put("nowEndHourTemp", nowEndHourTemp);
  432. ratioMap.put("yesterdayStartHourTemp", yesterdayStartHourTemp);
  433. ratioMap.put("yesterdayEndHourTemp", yesterdayEndHourTemp);
  434. Double amountRingRatio = supplyChainService.getAmountTotalRatio(ratioMap); //环比
  435. amountRatioJson.put("amountRingRatio", amountRingRatio);
  436. String yearDay = DateUtils.getAnotherDay("yyyy-MM-dd", orderStartDate, -6); // 昨日日期
  437. Long yearStartHourTemp = DateUtils.getStartLongTime(yearDay); //前7日开始时间戳
  438. Long yearEndHourTemp = DateUtils.getNowEndHourTemp(yearDay, hour);//前7日结束时间戳
  439. ratioMap.put("yesterdayStartHourTemp", yearStartHourTemp);
  440. ratioMap.put("yesterdayEndHourTemp", yearEndHourTemp);
  441. Double amountYearRatio = supplyChainService.getAmountTotalRatio(ratioMap); //同比
  442. amountRatioJson.put("amountYearRatio", amountYearRatio);
  443. returnJson.put("amountRatio", amountRatioJson);
  444. }
  445. } else {
  446. if (!Check.isNull(orderStartDate)) {
  447. Long start = DateUtils.getStartLongTime(orderStartDate); //昨日开始时间
  448. requestMap.put("start", start);
  449. }
  450. if (!Check.isNull(orderEndDate)) {
  451. Long end = DateUtils.getEndLongTime(orderEndDate); // 前日开始时间
  452. requestMap.put("end", end);
  453. }
  454. JSONObject amountTotal = supplyChainService.getAmountTotal(requestMap);
  455. returnJson.put("amountTotal", amountTotal);
  456. }
  457. return returnJson;
  458. }
  459. /**
  460. * 首页-服务费数据
  461. *
  462. * @param dateType
  463. * @param orderStartDate
  464. * @param orderEndDate
  465. * @return
  466. */
  467. @GetMapping("/indexServiceAmountInfo")
  468. @ApiOperation(value = "首页-服务费数据")
  469. public JSONObject indexServiceAmountInfo(
  470. @ApiParam("时间类型") @RequestParam(value = "dateType", required = false) Integer dateType,
  471. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  472. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate) {
  473. Map<String, Object> requestMap = new HashMap<>();
  474. JSONObject returnJson = new JSONObject();
  475. if (!Check.isNull(orderStartDate)) {
  476. Long start = DateUtils.getStartLongTime(orderStartDate); //昨日开始时间
  477. requestMap.put("start", start);
  478. }
  479. if (!Check.isNull(orderEndDate)) {
  480. Long end = DateUtils.getEndLongTime(orderEndDate); // 前日开始时间
  481. requestMap.put("end", end);
  482. }
  483. JSONObject serviceAmountTotal = supplyChainService.getServiceAmountTotal(requestMap);
  484. returnJson.put("serviceAmountTotal", serviceAmountTotal);
  485. return returnJson;
  486. }
  487. /**
  488. * 首页-商品排行
  489. *
  490. * @param dateType
  491. * @param orderStartDate
  492. * @param orderEndDate
  493. * @return
  494. */
  495. @GetMapping("/indexOrderRank")
  496. @ApiOperation(value = "首页-商品排行")
  497. public TableDataInfo indexOrderRank(
  498. @ApiParam("时间类型") @RequestParam(value = "dateType", required = true) Integer dateType,
  499. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = true) String orderStartDate,
  500. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = true) String orderEndDate) {
  501. Map<String, Object> requestMap = new HashMap<>();
  502. if (dateType == 0) {
  503. if (!Check.isNull(orderStartDate)) {
  504. Long start = DateUtils.getStartLongTime(orderStartDate); //当天开始时间
  505. requestMap.put("start", start);
  506. }
  507. if (!Check.isNull(orderEndDate)) {
  508. Long end = DateUtils.getEndLongTime(orderEndDate); // 当天结束时间
  509. requestMap.put("end", end);
  510. }
  511. Integer hour = DateUtils.getNowHour(); // 当前小时
  512. Long nowStartHourTemp = DateUtils.getStartLongTime(orderStartDate); // 当天开始时间戳
  513. Long nowEndHourTemp = DateUtils.getNowEndHourTemp(orderStartDate, hour); // 当前结束时间戳
  514. String yesterday = DateUtils.getAnotherDay("yyyy-MM-dd", orderStartDate, -1); // 昨日日期
  515. Long yesterdayStartHourTemp = DateUtils.getStartLongTime(yesterday); //昨日开始时间戳
  516. Long yesterdayEndHourTemp = DateUtils.getNowEndHourTemp(yesterday, hour); // 昨日结束时间戳
  517. requestMap.put("nowStartHourTemp", nowStartHourTemp);
  518. requestMap.put("nowEndHourTemp", nowEndHourTemp);
  519. requestMap.put("yesterdayStartHourTemp", yesterdayStartHourTemp);
  520. requestMap.put("yesterdayEndHourTemp", yesterdayEndHourTemp);
  521. startPage();
  522. List<JSONObject> orderRankRatioList = supplyChainService.getOrderRankRatioList(requestMap);
  523. return getDataTable(orderRankRatioList);
  524. } else {
  525. if (!Check.isNull(orderStartDate)) {
  526. Long start = DateUtils.getStartLongTime(orderStartDate);
  527. requestMap.put("start", start);
  528. }
  529. if (!Check.isNull(orderEndDate)) {
  530. Long end = DateUtils.getEndLongTime(orderEndDate);
  531. requestMap.put("end", end);
  532. }
  533. startPage();
  534. List<JSONObject> orderRankRatioList = supplyChainService.getOrderRankList(requestMap);
  535. return getDataTable(orderRankRatioList);
  536. }
  537. }
  538. @GetMapping("/indexPromoterRank")
  539. @ApiOperation(value = "首页-达人排行")
  540. public TableDataInfo indexPromoterRank(
  541. @ApiParam("时间类型") @RequestParam(value = "dateType", required = true) Integer dateType,
  542. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = true) String orderStartDate,
  543. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = true) String orderEndDate,
  544. @ApiParam("userId") @RequestParam(value = "userId", required = false) Long userId) {
  545. Map<String, Object> requestMap = new HashMap<>();
  546. if (dateType == 0) {
  547. if (Check.isNotNull(userId)) {
  548. requestMap.put("promoterIds", promoterService.selectPromoterIdList(Arrays.asList(userId)));
  549. }
  550. if (!Check.isNull(orderStartDate)) {
  551. Long start = DateUtils.getStartLongTime(orderStartDate); //当天开始时间
  552. requestMap.put("start", start);
  553. }
  554. if (!Check.isNull(orderEndDate)) {
  555. Long end = DateUtils.getEndLongTime(orderEndDate); // 当天结束时间
  556. requestMap.put("end", end);
  557. }
  558. Integer hour = DateUtils.getNowHour(); // 当前小时
  559. Long nowStartHourTemp = DateUtils.getStartLongTime(orderStartDate); // 当天开始时间戳
  560. Long nowEndHourTemp = DateUtils.getNowEndHourTemp(orderStartDate, hour); // 当前结束时间戳
  561. String yesterday = DateUtils.getAnotherDay("yyyy-MM-dd", orderStartDate, -1); // 昨日日期
  562. Long yesterdayStartHourTemp = DateUtils.getStartLongTime(yesterday); //昨日开始时间戳
  563. Long yesterdayEndHourTemp = DateUtils.getNowEndHourTemp(yesterday, hour); // 昨日结束时间戳
  564. requestMap.put("nowStartHourTemp", nowStartHourTemp);
  565. requestMap.put("nowEndHourTemp", nowEndHourTemp);
  566. requestMap.put("yesterdayStartHourTemp", yesterdayStartHourTemp);
  567. requestMap.put("yesterdayEndHourTemp", yesterdayEndHourTemp);
  568. startPage();
  569. List<JSONObject> promoterRankRatioList = supplyChainService.getPromoterRankRatioList(requestMap);
  570. return getDataTable(promoterRankRatioList);
  571. } else {
  572. if (!Check.isNull(orderStartDate)) {
  573. Long start = DateUtils.getStartLongTime(orderStartDate);
  574. requestMap.put("start", start);
  575. }
  576. if (!Check.isNull(orderEndDate)) {
  577. Long end = DateUtils.getEndLongTime(orderEndDate);
  578. requestMap.put("end", end);
  579. }
  580. startPage();
  581. List<JSONObject> orderRatioList = supplyChainService.getPromoterRatioList(requestMap);
  582. return getDataTable(orderRatioList);
  583. }
  584. }
  585. @RequestMapping(value = "/exportPromoterTotal")
  586. @ResponseBody
  587. public void exportPromoterTotal(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws Exception {
  588. Map<String, Object> requestMap = new HashMap<>();
  589. if (!Check.isNull(requestJson.getString("orderStartDate"))) {
  590. Long start = DateUtils.getStartLongTime(requestJson.getString("orderStartDate"));
  591. requestMap.put("start", start);
  592. }
  593. if (!Check.isNull(requestJson.getString("orderEndDate"))) {
  594. Long end = DateUtils.getEndLongTime(requestJson.getString("orderEndDate"));
  595. requestMap.put("end", end);
  596. }
  597. if (!Check.isNull(requestJson.getString("promoterNickName"))) {
  598. requestMap.put("promoterNickName", requestJson.getString("promoterNickName"));
  599. }
  600. if (!Check.isNull(requestJson.getLong("promoterId"))) {
  601. requestMap.put("promoterId", requestJson.getLong("promoterId"));
  602. }
  603. if (!Check.isNull(requestJson.getLong("itemId"))) {
  604. requestMap.put("itemId", requestJson.getLong("itemId"));
  605. }
  606. if (!Check.isNull(requestJson.getString("itemTitle"))) {
  607. requestMap.put("itemTitle", requestJson.getString("itemTitle"));
  608. }
  609. List<JSONObject> list = supplyChainService.exportPromoterTotal(requestMap);
  610. List<List<Object>> exportList = new ArrayList<>();
  611. if (!Check.isNull(list)) {
  612. for (int i = 0; i < list.size(); i++) {
  613. JSONObject date = list.get(i);
  614. List<Object> export = new ArrayList();
  615. Long promoterId = date.getLong("promoterId");
  616. String promoterNickName = date.getString("promoterNickName");
  617. String name = promoterNickName + "(" + promoterId + ")";
  618. export.add(name);
  619. export.add(date.getInteger("orderNum"));
  620. export.add(date.getInteger("validOrderNUm"));
  621. export.add(date.getString("validRadio"));
  622. export.add(date.getString("payAmount"));
  623. export.add(date.getString("validPayAmount"));
  624. // export.add(date.getString("regimentalPromotionAmount"));
  625. export.add(date.getString("deliveryNum"));
  626. export.add(date.getString("deliveryRadio"));
  627. export.add(date.getString("notDeliveryNum"));
  628. String userName = supplyChainService.getUserName(date.getLong("promoterId"));
  629. if (!Check.isNull(userName)) {
  630. export.add(userName);
  631. }
  632. exportList.add(export);
  633. }
  634. }
  635. String[] headers = {"达人名称", "订单数", "有效订单数", "有效订单率", "GVM", "有效GMV", "发货数", "发货率", "未发货数", "绑定人"};
  636. OutputStream os = response.getOutputStream();
  637. ExportExcelUtils eeu = new ExportExcelUtils();
  638. XSSFWorkbook workbook = new XSSFWorkbook();
  639. eeu.exportExcel(workbook, 0, "达人信息", headers, exportList);
  640. this.setResponseHeader(response, "达人信息.xls");
  641. workbook.write(os);
  642. os.flush();
  643. os.close();
  644. }
  645. @RequestMapping(value = "/exportPromoter")
  646. @ResponseBody
  647. public void exportPromoter(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws Exception {
  648. Map<String, Object> requestMap = new HashMap<>();
  649. if (!Check.isNull(requestJson.getString("orderStartDate"))) {
  650. Long start = DateUtils.getStartLongTime(requestJson.getString("orderStartDate"));
  651. requestMap.put("start", start);
  652. }
  653. if (!Check.isNull(requestJson.getString("orderEndDate"))) {
  654. Long end = DateUtils.getEndLongTime(requestJson.getString("orderEndDate"));
  655. requestMap.put("end", end);
  656. }
  657. if (!Check.isNull(requestJson.getString("promoterNickName"))) {
  658. requestMap.put("promoterNickName", requestJson.getString("promoterNickName"));
  659. }
  660. if (!Check.isNull(requestJson.getLong("promoterId"))) {
  661. requestMap.put("promoterId", requestJson.getLong("promoterId"));
  662. }
  663. if (!Check.isNull(requestJson.getLong("itemId"))) {
  664. requestMap.put("itemId", requestJson.getLong("itemId"));
  665. }
  666. if (!Check.isNull(requestJson.getString("itemTitle"))) {
  667. requestMap.put("itemTitle", requestJson.getString("itemTitle"));
  668. }
  669. List<JSONObject> list = supplyChainService.exportPromoter(requestMap);
  670. List<List<Object>> exportList = new ArrayList<>();
  671. if (!Check.isNull(list)) {
  672. for (int i = 0; i < list.size(); i++) {
  673. JSONObject date = list.get(i);
  674. List<Object> export = new ArrayList();
  675. String promoterNickName = date.getString("promoterNickName");
  676. Long promoterId = date.getLong("promoterId");
  677. String promoter = promoterNickName + "(" + promoterId + ")";
  678. export.add(promoter);
  679. Long itemId = date.getLong("itemId");
  680. String itemTitle = date.getString("itemTitle");
  681. String item = itemTitle + "(" + itemId + ")";
  682. export.add(item);
  683. export.add(date.getString("imageUrl"));
  684. export.add(date.getInteger("orderNum"));
  685. export.add(date.getInteger("validOrderNUm"));
  686. export.add(date.getString("validRadio"));
  687. export.add(date.getString("deliveryNum"));
  688. export.add(date.getString("deliveryRadio"));
  689. export.add(date.getString("activityItemStatus"));
  690. exportList.add(export);
  691. }
  692. }
  693. String[] headers = {"达人", "商品", "商品封面", "订单数", "有效订单数", "有效订单率", "发货数", "发货率", "商品状态"};
  694. OutputStream os = response.getOutputStream();
  695. ExportExcelUtils eeu = new ExportExcelUtils();
  696. XSSFWorkbook workbook = new XSSFWorkbook();
  697. eeu.exportExcel(workbook, 0, "达人信息", headers, exportList);
  698. this.setResponseHeader(response, "达人信息.xls");
  699. workbook.write(os);
  700. os.flush();
  701. os.close();
  702. }
  703. @RequestMapping(value = "/exportOrder")
  704. @ResponseBody
  705. public void exportOrder(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws Exception {
  706. Map<String, Object> requestMap = new HashMap<>();
  707. if (!Check.isNull(requestJson.getString("orderStartDate"))) {
  708. Long start = DateUtils.getStartLongTime(requestJson.getString("orderStartDate"));
  709. requestMap.put("start", start);
  710. }
  711. if (!Check.isNull(requestJson.getString("orderEndDate"))) {
  712. Long end = DateUtils.getEndLongTime(requestJson.getString("orderEndDate"));
  713. requestMap.put("end", end);
  714. }
  715. if (!Check.isNull(requestJson.getString("promoterNickName"))) {
  716. requestMap.put("promoterNickName", requestJson.getString("promoterNickName"));
  717. }
  718. if (!Check.isNull(requestJson.getLong("promoterId"))) {
  719. requestMap.put("promoterId", requestJson.getLong("promoterId"));
  720. }
  721. if (!Check.isNull(requestJson.getLong("itemId"))) {
  722. requestMap.put("itemId", requestJson.getLong("itemId"));
  723. }
  724. if (!Check.isNull(requestJson.getString("itemTitle"))) {
  725. requestMap.put("itemTitle", requestJson.getString("itemTitle"));
  726. }
  727. if (!Check.isNull(requestJson.getLong("userId"))) {
  728. requestMap.put("userId", requestJson.getLong("userId"));
  729. }
  730. List<JSONObject> list = supplyChainService.exportOrder(requestMap);
  731. List<List<Object>> exportList = new ArrayList<>();
  732. if (!Check.isNull(list)) {
  733. for (int i = 0; i < list.size(); i++) {
  734. JSONObject date = list.get(i);
  735. List<Object> export = new ArrayList();
  736. export.add(date.getString("userName"));
  737. export.add(date.getLong("itemId"));
  738. export.add(date.getString("itemTitle"));
  739. export.add(date.getString("imageUrl"));
  740. export.add(date.getString("itemCommissionRate"));
  741. export.add(date.getInteger("orderNum"));
  742. export.add(date.getInteger("validOrderNUm"));
  743. export.add(date.getString("validRadio"));
  744. export.add(date.getString("deliveryNum"));
  745. export.add(date.getString("deliveryRadio"));
  746. export.add(date.getString("notDeliveryNum"));
  747. exportList.add(export);
  748. }
  749. }
  750. String[] headers = {"所属人", "商品ID", "商品名称", "商品封面", "佣金率", "订单数", "有效订单数", "有效订单率", "发货数", "发货率", "未发货数"};
  751. OutputStream os = response.getOutputStream();
  752. ExportExcelUtils eeu = new ExportExcelUtils();
  753. XSSFWorkbook workbook = new XSSFWorkbook();
  754. eeu.exportExcel(workbook, 0, "订单信息", headers, exportList);
  755. this.setResponseHeader(response, "订单信息.xls");
  756. workbook.write(os);
  757. os.flush();
  758. os.close();
  759. }
  760. /**
  761. * 获取供应链人员列表
  762. *
  763. * @return
  764. */
  765. @GetMapping("/getSupplyChainUserList")
  766. @ApiOperation(value = "获取供应链成员列表")
  767. public TableDataInfo getSupplyChainUserList() {
  768. List<JSONObject> list = supplyChainService.getSupplyChainUserList();
  769. return getDataTable(list);
  770. }
  771. /**
  772. * 获取商品绑定人员列表
  773. *
  774. * @param status
  775. * @param userId
  776. * @param itemId
  777. * @param itemTitle
  778. * @param activityId
  779. * @return
  780. */
  781. @GetMapping("/bindUserItemList")
  782. @ApiOperation(value = "商品认领列表")
  783. public TableDataInfo bindUserItemList(
  784. @ApiParam("状态") @RequestParam(value = "status", required = false) Integer status,
  785. @ApiParam("userId") @RequestParam(value = "userId", required = false) Long userId,
  786. @ApiParam("商品id") @RequestParam(value = "itemId", required = false) Long itemId,
  787. @ApiParam("商品名称") @RequestParam(value = "itemTitle", required = false) String itemTitle,
  788. @ApiParam("活动ID") @RequestParam(value = "activityId", required = false) Long activityId
  789. ) {
  790. Map<String, Object> requestMap = new HashMap<>();
  791. if (!Check.isNull(status)) {
  792. requestMap.put("status", status);
  793. }
  794. if (!Check.isNull(userId)) {
  795. requestMap.put("userId", userId);
  796. }
  797. if (!Check.isNull(itemId)) {
  798. requestMap.put("itemId", itemId);
  799. }
  800. if (!Check.isNull(itemTitle)) {
  801. requestMap.put("itemTitle", itemTitle);
  802. }
  803. if (!Check.isNull(activityId)) {
  804. requestMap.put("activityId", activityId);
  805. }
  806. startPage();
  807. List<JSONObject> list = supplyChainService.bindUserItemList(requestMap);
  808. return getDataTable(list);
  809. }
  810. /**
  811. * 商品解绑
  812. *
  813. * @param itemId
  814. * @return
  815. */
  816. @GetMapping("/unbindUser")
  817. @ApiOperation(value = "商品解绑")
  818. public JSONObject unbindUser(
  819. @ApiParam("商品id") @RequestParam(value = "itemId", required = false) Long itemId) {
  820. JSONObject returnJson = new JSONObject();
  821. if (Check.isNull(itemId)) {
  822. returnJson.put("code", -1);
  823. returnJson.put("message", "请传入商品ID");
  824. return returnJson;
  825. }
  826. boolean isTrueOrFalse = supplyChainService.unbindUser(itemId);
  827. if (isTrueOrFalse) {
  828. returnJson.put("code", 0);
  829. returnJson.put("message", "解绑成功");
  830. return returnJson;
  831. } else {
  832. returnJson.put("code", -1);
  833. returnJson.put("message", "解绑失败");
  834. return returnJson;
  835. }
  836. }
  837. /**
  838. * 绑定商品
  839. *
  840. * @param itemId
  841. * @return
  842. */
  843. @GetMapping("/bindUser")
  844. @ApiOperation(value = "绑定商品")
  845. public JSONObject bindUser(
  846. @ApiParam("商品ID") @RequestParam(value = "itemId", required = false) Long itemId,
  847. @ApiParam("用户ID") @RequestParam(value = "userId", required = false) Long userId,
  848. @ApiParam("用户名称") @RequestParam(value = "nikeName", required = false) String nikeName) {
  849. JSONObject returnJson = new JSONObject();
  850. if (Check.isNull(itemId)) {
  851. returnJson.put("code", -1);
  852. returnJson.put("message", "请传入商品ID");
  853. return returnJson;
  854. }
  855. if (Check.isNull("userId")) {
  856. returnJson.put("code", -1);
  857. returnJson.put("message", "请传入用户ID");
  858. return returnJson;
  859. }
  860. if (Check.isNull("nikeName")) {
  861. returnJson.put("code", -1);
  862. returnJson.put("message", "请传入用户名称");
  863. return returnJson;
  864. }
  865. boolean isTrueOrFalse = supplyChainService.bindUser(itemId, userId, nikeName);
  866. if (isTrueOrFalse) {
  867. returnJson.put("code", 0);
  868. returnJson.put("message", "认领成功");
  869. return returnJson;
  870. } else {
  871. returnJson.put("code", -1);
  872. returnJson.put("message", "认领失败");
  873. return returnJson;
  874. }
  875. }
  876. /**
  877. * 供应链管理员统计列表
  878. *
  879. * @param orderStartDate
  880. * @param orderEndDate
  881. * @return
  882. */
  883. @GetMapping("/adminReportList")
  884. @ApiOperation(value = "供应链管理员统计列表")
  885. public TableDataInfo adminReportList(
  886. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  887. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate,
  888. @ApiParam("用户ID") @RequestParam(value = "userId", required = false) Long userId
  889. ) {
  890. Map<String, Object> requestMap = new HashMap<>();
  891. if (!Check.isNull(orderStartDate)) {
  892. Long start = DateUtils.getStartLongTime(orderStartDate);
  893. requestMap.put("start", start);
  894. }
  895. if (!Check.isNull(orderEndDate)) {
  896. Long end = DateUtils.getEndLongTime(orderEndDate);
  897. requestMap.put("end", end);
  898. }
  899. if (!Check.isNull(userId)) {
  900. requestMap.put("userId", userId);
  901. }
  902. TableDataInfo dataInfo = new TableDataInfo();
  903. if (Check.isNullMap(requestMap)) {
  904. dataInfo.setCode(-1);
  905. dataInfo.setMsg("入参不能为空");
  906. return dataInfo;
  907. }
  908. startPage();
  909. List<JSONObject> list = supplyChainService.adminReportList(requestMap);
  910. return getDataTable(list);
  911. }
  912. /**
  913. * 认领商品列表
  914. *
  915. * @param userId
  916. * @param orderStartDate
  917. * @param orderEndDate
  918. * @param itemId
  919. * @param itemTitle
  920. * @return
  921. */
  922. @GetMapping("/userItemDetail")
  923. @ApiOperation(value = "认领商品列表")
  924. public TableDataInfo userItemDetail(
  925. @ApiParam("userId") @RequestParam(value = "userId", required = false) Long userId,
  926. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  927. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate,
  928. @ApiParam("商品Id") @RequestParam(value = "itemId", required = false) Long itemId,
  929. @ApiParam("商品名称") @RequestParam(value = "itemTitle", required = false) String itemTitle,
  930. @ApiParam("排序字段") @RequestParam(value = "fieId", required = false) String fieId,
  931. @ApiParam("排序方式") @RequestParam(value = "sort", required = false) String sort
  932. ) {
  933. Map<String, Object> requestMap = new HashMap<>();
  934. if (!Check.isNull(userId)) {
  935. requestMap.put("userId", userId);
  936. }
  937. if (!Check.isNull(orderStartDate)) {
  938. Long start = DateUtils.getStartLongTime(orderStartDate);
  939. requestMap.put("start", start);
  940. }
  941. if (!Check.isNull(orderEndDate)) {
  942. Long end = DateUtils.getEndLongTime(orderEndDate);
  943. requestMap.put("end", end);
  944. }
  945. if (!Check.isNull(itemId)) {
  946. requestMap.put("itemId", itemId);
  947. }
  948. if (!Check.isNull(itemTitle)) {
  949. requestMap.put("itemTitle", itemTitle);
  950. }
  951. requestMap.put("fieId", fieId);
  952. requestMap.put("sort", sort);
  953. TableDataInfo dataInfo = new TableDataInfo();
  954. if (Check.isNullMap(requestMap)) {
  955. dataInfo.setCode(-1);
  956. dataInfo.setMsg("入参不能为空");
  957. return dataInfo;
  958. }
  959. startPage();
  960. List<JSONObject> list = supplyChainService.userItemDetail(requestMap);
  961. return getDataTable(list);
  962. }
  963. /**
  964. * 认领商品列表导出
  965. *
  966. * @return
  967. */
  968. @PostMapping("/exportUserItemDetail")
  969. @ApiOperation(value = "认领商品列表")
  970. @ResponseBody
  971. public void exportUserItemDetail(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws IOException {
  972. Map<String, Object> requestMap = new HashMap<>();
  973. if (!Check.isNull(requestJson.getLong("userId"))) {
  974. requestMap.put("userId", requestJson.getLong("userId"));
  975. }
  976. if (!Check.isNull(requestJson.getString("orderStartDate"))) {
  977. Long start = DateUtils.getStartLongTime(requestJson.getString("orderStartDate"));
  978. requestMap.put("start", start);
  979. }
  980. if (!Check.isNull(requestJson.getString("orderEndDate"))) {
  981. Long end = DateUtils.getEndLongTime(requestJson.getString("orderEndDate"));
  982. requestMap.put("end", end);
  983. }
  984. if (!Check.isNull(requestJson.getLong("itemId"))) {
  985. requestMap.put("itemId", requestJson.getLong("itemId"));
  986. }
  987. if (!Check.isNull(requestJson.getString("itemTitle"))) {
  988. requestMap.put("itemTitle", requestJson.getString("itemTitle"));
  989. }
  990. List<JSONObject> list = supplyChainService.exportUserItemDetail(requestMap);
  991. List<List<Object>> exportList = new ArrayList<>();
  992. if (!Check.isNull(list)) {
  993. for (int i = 0; i < list.size(); i++) {
  994. JSONObject date = list.get(i);
  995. List<Object> export = new ArrayList();
  996. export.add(date.getString("userName"));
  997. export.add(date.getLong("itemId"));
  998. export.add(date.getString("itemTitle"));
  999. export.add(date.getString("reservePrice"));
  1000. export.add(date.getString("itemCommissionRate"));
  1001. export.add(date.getString("orderNum"));
  1002. export.add(date.getString("validOrderNUm"));
  1003. export.add(date.getString("validRadio"));
  1004. export.add(date.getString("invalidOrderNUm"));
  1005. export.add(date.getString("deliveryNum"));
  1006. export.add(date.getString("deliveryRadio"));
  1007. export.add(date.getString("notDeliveryNum"));
  1008. export.add(date.getString("payAmount"));
  1009. export.add(date.getString("regimentalPromotionRate"));
  1010. export.add(date.getString("regimentalPromotionAmount"));
  1011. export.add(date.getString("totalRegimentalSettleAmount"));
  1012. export.add(date.getString("imageUrl"));
  1013. exportList.add(export);
  1014. }
  1015. }
  1016. String[] headers = {"所属人", "商品ID", "商品名称", "商品单价", "佣金率", "订单数", "有效订单数", "有效订单率", "失效订单数", "发货数", "发货率", "未发货数", "付款金额", "服务费率", "预估服务费收入", "结算服务费收入", "商品封面"};
  1017. OutputStream os = response.getOutputStream();
  1018. ExportExcelUtils eeu = new ExportExcelUtils();
  1019. XSSFWorkbook workbook = new XSSFWorkbook();
  1020. eeu.exportExcel(workbook, 0, "认领列表", headers, exportList);
  1021. this.setResponseHeader(response, "认领列表.xls");
  1022. workbook.write(os);
  1023. os.flush();
  1024. os.close();
  1025. }
  1026. @GetMapping("/userItemTotal")
  1027. @ApiOperation(value = "认领商品列表汇总")
  1028. public JSONObject userItemTotal(
  1029. @ApiParam("userId") @RequestParam(value = "userId", required = false) Long userId,
  1030. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  1031. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate
  1032. ) {
  1033. Map<String, Object> requestMap = new HashMap<>();
  1034. if (!Check.isNull(userId)) {
  1035. requestMap.put("userId", userId);
  1036. }
  1037. if (!Check.isNull(orderStartDate)) {
  1038. Long start = DateUtils.getStartLongTime(orderStartDate);
  1039. requestMap.put("start", start);
  1040. }
  1041. if (!Check.isNull(orderEndDate)) {
  1042. Long end = DateUtils.getEndLongTime(orderEndDate);
  1043. requestMap.put("end", end);
  1044. }
  1045. JSONObject returnJson = supplyChainService.userItemTotal(requestMap);
  1046. return returnJson;
  1047. }
  1048. /**
  1049. * 商品认领汇总
  1050. *
  1051. * @return
  1052. */
  1053. @GetMapping("/itemBindSummary")
  1054. @ApiOperation(value = "商品认领汇总")
  1055. public JSONObject itemBindSummary() {
  1056. JSONObject json = supplyChainService.itemBindSummary();
  1057. return json;
  1058. }
  1059. /**
  1060. * 首页-时段对比
  1061. *
  1062. * @param orderStartDate
  1063. * @param orderEndDate
  1064. * @return
  1065. */
  1066. @SneakyThrows
  1067. @GetMapping("/indexTimeIntervalRatio")
  1068. @ApiOperation(value = "首页-时段对比")
  1069. public JSONObject indexTimeIntervalRatio(
  1070. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  1071. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate) {
  1072. Map<String, Object> requestMap = new HashMap<>();
  1073. String nowDate = DateUtils.getNowDateStr();
  1074. String thisCycleEnd = null; // 当前时段结束日期
  1075. String thisCycleStart = null; // 当前时段开始日期
  1076. String lastCycleEnd = null; // 上一时段结束日期
  1077. String lastCycleStart = null; // 上一时段开始日期
  1078. if (nowDate.equals(orderStartDate) && nowDate.equals(orderEndDate)) {
  1079. thisCycleEnd = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
  1080. thisCycleStart = DateUtils.getAnotherDay("yyyy-MM-dd", thisCycleEnd, -6);
  1081. lastCycleEnd = DateUtils.getAnotherDay("yyyy-MM-dd", thisCycleStart, -1);
  1082. lastCycleStart = DateUtils.getAnotherDay("yyyy-MM-dd", lastCycleEnd, -6);
  1083. } else {
  1084. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  1085. int differDay = DateUtils.differentDaysByMillisecond(simpleDateFormat.parse(orderStartDate), simpleDateFormat.parse(orderEndDate));
  1086. thisCycleEnd = orderEndDate;
  1087. thisCycleStart = orderStartDate;
  1088. lastCycleEnd = DateUtils.getAnotherDay("yyyy-MM-dd", orderStartDate, -1);
  1089. lastCycleStart = DateUtils.getAnotherDay("yyyy-MM-dd", lastCycleEnd, -differDay);
  1090. }
  1091. if (!Check.isNull(thisCycleStart)) {
  1092. Long thisCycleStartTemp = DateUtils.getStartLongTime(thisCycleStart);
  1093. requestMap.put("thisCycleStartTemp", thisCycleStartTemp);
  1094. }
  1095. if (!Check.isNull(thisCycleEnd)) {
  1096. Long thisCycleEndTemp = DateUtils.getEndLongTime(thisCycleEnd);
  1097. requestMap.put("thisCycleEndTemp", thisCycleEndTemp);
  1098. }
  1099. if (!Check.isNull(lastCycleStart)) {
  1100. Long lastCycleStartTemp = DateUtils.getStartLongTime(lastCycleStart);
  1101. requestMap.put("lastCycleStartTemp", lastCycleStartTemp);
  1102. }
  1103. if (!Check.isNull(lastCycleEnd)) {
  1104. Long lastCycleEndTemp = DateUtils.getEndLongTime(lastCycleEnd);
  1105. requestMap.put("lastCycleEndTemp", lastCycleEndTemp);
  1106. }
  1107. JSONObject timeIntervalRatioJson = supplyChainService.getTimeIntervalRatio(requestMap);
  1108. return timeIntervalRatioJson;
  1109. }
  1110. /**
  1111. * 首页-统计图
  1112. *
  1113. * @param orderStartDate
  1114. * @param orderEndDate
  1115. * @param type
  1116. * @return
  1117. */
  1118. @GetMapping("/indexStatistics")
  1119. @ApiOperation(value = "首页-统计图")
  1120. public List<JSONObject> indexStatistics(
  1121. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  1122. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate,
  1123. @ApiParam("类型") @RequestParam(value = "type", required = false) String type) {
  1124. Map<String, Object> requestMap = new HashMap<>();
  1125. String nowDate = DateUtils.getNowDateStr();
  1126. String start = null;
  1127. String end = null;
  1128. if (nowDate.equals(orderStartDate) && nowDate.equals(orderEndDate)) {
  1129. end = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
  1130. start = DateUtils.getAnotherDay("yyyy-MM-dd", end, -6);
  1131. } else {
  1132. start = orderStartDate;
  1133. end = orderEndDate;
  1134. }
  1135. if (!Check.isNull(start)) {
  1136. Long startTemp = DateUtils.getStartLongTime(start);
  1137. requestMap.put("startTemp", startTemp);
  1138. }
  1139. if (!Check.isNull(end)) {
  1140. Long endTemp = DateUtils.getEndLongTime(end);
  1141. requestMap.put("endTemp", endTemp);
  1142. }
  1143. if (!Check.isNull(type)) {
  1144. requestMap.put("type", type);
  1145. }
  1146. List<JSONObject> list = supplyChainService.indexStatistics(requestMap);
  1147. return list;
  1148. }
  1149. //发送响应流方法
  1150. public void setResponseHeader(HttpServletResponse response, String fileName) {
  1151. try {
  1152. try {
  1153. fileName = new String(fileName.getBytes(), "ISO8859-1");
  1154. } catch (UnsupportedEncodingException e) {
  1155. e.printStackTrace();
  1156. }
  1157. response.setContentType("application/octet-stream;charset=ISO8859-1");
  1158. response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
  1159. response.addHeader("Pargam", "no-cache");
  1160. response.addHeader("Cache-Control", "no-cache");
  1161. } catch (Exception ex) {
  1162. ex.printStackTrace();
  1163. }
  1164. }
  1165. @GetMapping("/bdReportList")
  1166. @ApiOperation(value = "供应链管理员统计列表")
  1167. public TableDataInfo bdReportList(
  1168. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  1169. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate,
  1170. @ApiParam("用户ID") @RequestParam(value = "collectSampleId", required = false) Long collectSampleId) {
  1171. Map<String, Object> requestMap = new HashMap<>();
  1172. if (!Check.isNull(orderStartDate)) {
  1173. Integer start = DateUtils.getIntegerTime(orderStartDate);
  1174. requestMap.put("start", start);
  1175. }
  1176. if (!Check.isNull(orderEndDate)) {
  1177. Integer end = DateUtils.getIntegerTime(orderEndDate);
  1178. requestMap.put("end", end);
  1179. }
  1180. if (!Check.isNull(collectSampleId)) {
  1181. requestMap.put("collectSampleId", collectSampleId);
  1182. }
  1183. TableDataInfo dataInfo = new TableDataInfo();
  1184. if (Check.isNullMap(requestMap)) {
  1185. dataInfo.setCode(500);
  1186. dataInfo.setMsg("入参不能为空");
  1187. return dataInfo;
  1188. }
  1189. startPage();
  1190. List<JSONObject> list = supplyChainService.bdReportList(requestMap);
  1191. return getDataTable(list);
  1192. }
  1193. @PostMapping("/exportBdReportList")
  1194. @ApiOperation(value = "供应链管理员统计列表")
  1195. @ResponseBody
  1196. public void exportBdReportList(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws IOException {
  1197. Map<String, Object> requestMap = new HashMap<>();
  1198. if (!Check.isNull(requestJson.getString("orderStartDate"))) {
  1199. Integer start = DateUtils.getIntegerTime(requestJson.getString("orderStartDate"));
  1200. requestMap.put("start", start);
  1201. }
  1202. if (!Check.isNull(requestJson.getString("orderEndDate"))) {
  1203. Integer end = DateUtils.getIntegerTime(requestJson.getString("orderEndDate"));
  1204. requestMap.put("end", end);
  1205. }
  1206. if (!Check.isNull(requestJson.getLong("collectSampleId"))) {
  1207. requestMap.put("collectSampleId", requestJson.getLong("collectSampleId"));
  1208. }
  1209. List<JSONObject> list = supplyChainService.exportBdReportList(requestMap);
  1210. List<List<Object>> exportList = new ArrayList<>();
  1211. if (!Check.isNull(list)) {
  1212. for (int i = 0; i < list.size(); i++) {
  1213. JSONObject date = list.get(i);
  1214. List<Object> export = new ArrayList();
  1215. export.add(date.getString("collectSampleId"));
  1216. export.add(date.getString("collectSampleName"));
  1217. export.add(date.getString("promoterCount"));
  1218. export.add(date.getString("sampleCount"));
  1219. export.add(date.getString("sampleRate"));
  1220. export.add(date.getString("notSampleCount"));
  1221. export.add(date.getString("sendTotalCount"));
  1222. export.add(date.getString("sendPromoterCount"));
  1223. export.add(date.getString("sendItemCount"));
  1224. export.add(date.getString("orderNum"));
  1225. export.add(date.getString("voucherOrderNum"));
  1226. export.add(date.getString("validOrderNum"));
  1227. export.add(date.getString("voucherValidOrderNum"));
  1228. export.add(date.getString("validOrderRate"));
  1229. export.add(date.getString("orderAmount"));
  1230. export.add(date.getString("voucherOrderAmount"));
  1231. export.add(date.getString("regimentalPromotionAmount"));
  1232. export.add(date.getString("voucherRegimentalPromotionAmount"));
  1233. export.add(date.getString("totalRegimentalSettleAmount"));
  1234. export.add(date.getString("voucherTotalRegimentalSettleAmount"));
  1235. exportList.add(export);
  1236. }
  1237. }
  1238. String[] headers = {"渠道ID", "渠道姓名", "(总)达人数", "(总)领样达人数", "(总)领样率", "(总)未领样数", "发样数", "发样达人数", "发样商品数", "订单数", "(凭)订单数", "有效订单数", "(凭)有效订单数", "有效订单率", "订单金额", "凭(订单金额)", "预估服务费", "(凭)预估服务费", "结算服务费", "(凭)结算服务费"};
  1239. OutputStream os = response.getOutputStream();
  1240. ExportExcelUtils eeu = new ExportExcelUtils();
  1241. XSSFWorkbook workbook = new XSSFWorkbook();
  1242. eeu.exportExcel(workbook, 0, "bd业绩汇总", headers, exportList);
  1243. this.setResponseHeader(response, "bd业绩汇总.xls");
  1244. workbook.write(os);
  1245. os.flush();
  1246. os.close();
  1247. }
  1248. @GetMapping("/bdDetailList")
  1249. @ApiOperation(value = "供应链管理员统计列表")
  1250. public TableDataInfo bdDetailList(
  1251. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  1252. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate,
  1253. @ApiParam("用户ID") @RequestParam(value = "collectSampleId", required = false) Long collectSampleId,
  1254. @ApiParam("排序字段") @RequestParam(value = "fieId", required = false) String fieId,
  1255. @ApiParam("排序放肆") @RequestParam(value = "sort", required = false) String sort) {
  1256. Map<String, Object> requestMap = new HashMap<>();
  1257. if (!Check.isNull(orderStartDate)) {
  1258. Integer start = DateUtils.getIntegerTime(orderStartDate);
  1259. requestMap.put("start", start);
  1260. }
  1261. if (!Check.isNull(orderEndDate)) {
  1262. Integer end = DateUtils.getIntegerTime(orderEndDate);
  1263. requestMap.put("end", end);
  1264. }
  1265. if (!Check.isNull(collectSampleId)) {
  1266. requestMap.put("collectSampleId", collectSampleId);
  1267. }
  1268. requestMap.put("fieId", fieId);
  1269. requestMap.put("sort", sort);
  1270. TableDataInfo dataInfo = new TableDataInfo();
  1271. if (Check.isNullMap(requestMap)) {
  1272. dataInfo.setCode(500);
  1273. dataInfo.setMsg("入参不能为空");
  1274. return dataInfo;
  1275. }
  1276. startPage();
  1277. List<JSONObject> list = supplyChainService.bdDetailList(requestMap);
  1278. return getDataTable(list);
  1279. }
  1280. @GetMapping("/bdTotal")
  1281. @ApiOperation(value = "供应链管理员统计列表")
  1282. public TableDataInfo bdTotal(
  1283. @ApiParam("开始时间") @RequestParam(value = "orderStartDate", required = false) String orderStartDate,
  1284. @ApiParam("结束时间") @RequestParam(value = "orderEndDate", required = false) String orderEndDate,
  1285. @ApiParam("用户ID") @RequestParam(value = "collectSampleId", required = false) Long collectSampleId) {
  1286. Map<String, Object> requestMap = new HashMap<>();
  1287. if (!Check.isNull(orderStartDate)) {
  1288. Integer start = DateUtils.getIntegerTime(orderStartDate);
  1289. requestMap.put("start", start);
  1290. }
  1291. if (!Check.isNull(orderEndDate)) {
  1292. Integer end = DateUtils.getIntegerTime(orderEndDate);
  1293. requestMap.put("end", end);
  1294. }
  1295. if (!Check.isNull(collectSampleId)) {
  1296. requestMap.put("collectSampleId", collectSampleId);
  1297. }
  1298. TableDataInfo dataInfo = new TableDataInfo();
  1299. if (Check.isNullMap(requestMap)) {
  1300. dataInfo.setCode(500);
  1301. dataInfo.setMsg("入参不能为空");
  1302. return dataInfo;
  1303. }
  1304. startPage();
  1305. List<JSONObject> list = supplyChainService.bdTotal(requestMap);
  1306. return getDataTable(list);
  1307. }
  1308. @PostMapping("/exportBdDetail")
  1309. @ApiOperation(value = "认领商品列表")
  1310. @ResponseBody
  1311. public void exportBdDetail(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws IOException {
  1312. Map<String, Object> requestMap = new HashMap<>();
  1313. if (!Check.isNull(requestJson.getString("orderStartDate"))) {
  1314. Integer start = DateUtils.getIntegerTime(requestJson.getString("orderStartDate"));
  1315. requestMap.put("start", start);
  1316. }
  1317. if (!Check.isNull(requestJson.getString("orderEndDate"))) {
  1318. Integer end = DateUtils.getIntegerTime(requestJson.getString("orderEndDate"));
  1319. requestMap.put("end", end);
  1320. }
  1321. if (!Check.isNull(requestJson.getLong("collectSampleId"))) {
  1322. requestMap.put("collectSampleId", (requestJson.getLong("collectSampleId")));
  1323. }
  1324. List<JSONObject> list = supplyChainService.exportBdDetail(requestMap);
  1325. List<List<Object>> exportList = new ArrayList<>();
  1326. if (!Check.isNull(list)) {
  1327. for (int i = 0; i < list.size(); i++) {
  1328. JSONObject date = list.get(i);
  1329. List<Object> export = new ArrayList();
  1330. export.add(date.getString("promoterId"));
  1331. export.add(date.getString("promoterName"));
  1332. export.add(date.getString("sampleCount"));
  1333. export.add(date.getString("orderNum"));
  1334. export.add(date.getString("validOrderNum"));
  1335. export.add(date.getString("validOrderRate"));
  1336. export.add(date.getString("regimentalPromotionAmount"));
  1337. export.add(date.getString("totalRegimentalSettleAmount"));
  1338. export.add(date.getString("promoterUrl"));
  1339. exportList.add(export);
  1340. }
  1341. }
  1342. String[] headers = {"达人ID", "达人名称", "领样数", "订单数", "有效订单数", "有效率", "预估服务费收入", "结算服务费收入", "达人头像"};
  1343. OutputStream os = response.getOutputStream();
  1344. ExportExcelUtils eeu = new ExportExcelUtils();
  1345. XSSFWorkbook workbook = new XSSFWorkbook();
  1346. eeu.exportExcel(workbook, 0, "bd业绩", headers, exportList);
  1347. this.setResponseHeader(response, "bd业绩.xls");
  1348. workbook.write(os);
  1349. os.flush();
  1350. os.close();
  1351. }
  1352. }