MonthlyCustomersController.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620
  1. package com.kmall.admin.controller.statistics;
  2. import com.kmall.admin.dao.GoodsDao;
  3. import com.kmall.admin.dao.ProductStoreRelaDao;
  4. import com.kmall.admin.dao.statistics.MonthlyCustomersDao;
  5. import com.kmall.admin.dao.statistics.WechatFollowersDao;
  6. import com.kmall.admin.entity.GoodsEntity;
  7. import com.kmall.admin.entity.MonthlySalesGrowthEntity;
  8. import com.kmall.admin.entity.ProductStoreRelaEntity;
  9. import com.kmall.admin.entity.WechatFollowersEntity;
  10. import com.kmall.admin.fromcomm.entity.SysUserEntity;
  11. import com.kmall.admin.service.statistics.MonthlyCustomersService;
  12. import com.kmall.admin.utils.ParamUtils;
  13. import com.kmall.admin.utils.ShiroUtils;
  14. import com.kmall.common.utils.R;
  15. import com.kmall.common.utils.excel.ExcelExport;
  16. import com.kmall.common.utils.excel.ExcelUtil;
  17. import org.apache.shiro.SecurityUtils;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.web.bind.annotation.RequestMapping;
  20. import org.springframework.web.bind.annotation.RequestParam;
  21. import org.springframework.web.bind.annotation.RestController;
  22. import javax.servlet.http.HttpServletRequest;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.math.BigDecimal;
  25. import java.math.RoundingMode;
  26. import java.text.ParseException;
  27. import java.text.SimpleDateFormat;
  28. import java.util.*;
  29. /**
  30. * @author zhangchuangbiao
  31. * @version 1.0
  32. * 2020-09-01 14:35
  33. */
  34. @RestController
  35. @RequestMapping("/monthly")
  36. public class MonthlyCustomersController {
  37. @Autowired
  38. private MonthlyCustomersService monthlyCustomersService;
  39. @Autowired
  40. private ExcelUtil excelUtil;
  41. @Autowired
  42. private MonthlyCustomersDao monthlyCustomersDao;
  43. @Autowired
  44. private WechatFollowersDao wechatFollowersDao;
  45. @Autowired
  46. private GoodsDao goodsDao;
  47. @Autowired
  48. private ProductStoreRelaDao productStoreRelaDao;
  49. private void calculateDifferentMonth(List<String> monthList, String startMonth, String endMonth) throws ParseException {
  50. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  51. Calendar bef = Calendar.getInstance();
  52. Calendar aft = Calendar.getInstance();
  53. bef.setTime(sdf.parse(startMonth));
  54. aft.setTime(sdf.parse(endMonth));
  55. do {
  56. monthList.add(sdf.format(bef.getTime()));
  57. bef.add(Calendar.MONTH, 1);
  58. }
  59. while (bef.compareTo(aft) <= 0);
  60. }
  61. /**
  62. * 每月销售额查询
  63. * @param startMonth
  64. * @param endMonth
  65. * @return
  66. */
  67. @RequestMapping("/customersQuery")
  68. public R queryMonthlyCustomers(@RequestParam("startMonth") String startMonth, @RequestParam("endMonth") String endMonth) {
  69. List<String> dateList = new ArrayList<>();
  70. Map<String, Object> returnMap = new HashMap<>();
  71. try {
  72. calculateDifferentMonth(dateList, startMonth, endMonth);
  73. } catch (ParseException e) {
  74. e.printStackTrace();
  75. }
  76. try {
  77. String merchSn = null;
  78. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  79. if(!"1".equals(sysUser.getRoleType())){
  80. merchSn = sysUser.getMerchSn();
  81. }
  82. Map<String,Object> map = monthlyCustomersService.queryMonthlyCustomers(startMonth,endMonth,merchSn,dateList);
  83. returnMap.put("dateList", dateList);
  84. returnMap.putAll(map);
  85. } catch (Exception e) {
  86. e.printStackTrace();
  87. return R.error(e.getMessage());
  88. }
  89. return R.ok(returnMap);
  90. }
  91. /**
  92. * 每月销售额销售量导出
  93. * @param params
  94. * @param response
  95. * @param request
  96. * @return
  97. */
  98. @RequestMapping("/monthlySalesGrowthExport")
  99. public R monthlySalesGrowthExport(@RequestParam Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) {
  100. ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
  101. if (Objects.isNull(params.get("startMonth")) || "".equals(params.get("startMonth"))){
  102. return R.error("请先选择开始时间");
  103. }
  104. if (Objects.isNull(params.get("endMonth")) || "".equals(params.get("endMonth"))){
  105. return R.error("请先选择结束时间");
  106. }
  107. String merchSn = null;
  108. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  109. if(!"1".equals(sysUser.getRoleType())){
  110. merchSn = sysUser.getMerchSn();
  111. }
  112. List<MonthlySalesGrowthEntity> monthlySalesGrowthEntities = monthlyCustomersDao.queryMonthlyCustomers((String) params.get("startMonth"), (String) params.get("endMonth"), merchSn);
  113. ExcelExport ee = new ExcelExport("Monthly Sales Growth");
  114. String[] header = new String[]{"序号","商户编号","商户名称","销售额","销售数量","年-月"};
  115. List<Map<String, Object>> list = new ArrayList<>();
  116. int count = 1;
  117. if (monthlySalesGrowthEntities!=null && monthlySalesGrowthEntities.size()>0) {
  118. for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
  119. LinkedHashMap<String, Object> map = new LinkedHashMap<>();
  120. map.put("OrderNumber",count++);
  121. map.put("MerchSn",monthlySalesGrowthEntity.getMerchSn());
  122. map.put("MerchName",monthlySalesGrowthEntity.getMerchName());
  123. map.put("TotalSales",monthlySalesGrowthEntity.getTotalSales());
  124. map.put("TotalNumber",monthlySalesGrowthEntity.getTotalNumber());
  125. map.put("YearAndMonth",monthlySalesGrowthEntity.getYearAndMonth());
  126. list.add(map);
  127. }
  128. }
  129. ee.addSheetByMap("Monthly Sales Growth", list, header);
  130. ee.export(response);
  131. return R.ok();
  132. }
  133. /**
  134. * 导出销售额销售数客单数客单价
  135. * @param params
  136. * @param response
  137. * @param request
  138. * @return
  139. */
  140. @RequestMapping("/monthlySalesGrowthExport2")
  141. public R monthlySalesGrowthExport2(@RequestParam Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) {
  142. ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
  143. if (Objects.isNull(params.get("startMonth")) || "".equals(params.get("startMonth"))){
  144. return R.error("请先选择开始时间");
  145. }
  146. if (Objects.isNull(params.get("endMonth")) || "".equals(params.get("endMonth"))){
  147. return R.error("请先选择结束时间");
  148. }
  149. String merchSn = null;
  150. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  151. if(!"1".equals(sysUser.getRoleType())){
  152. merchSn = sysUser.getMerchSn();
  153. }
  154. List<MonthlySalesGrowthEntity> monthlySalesGrowthEntities = monthlyCustomersDao.queryMonthlyCustomers((String) params.get("startMonth"), (String) params.get("endMonth"), merchSn);
  155. ExcelExport ee = new ExcelExport("Monthly Customers&Avg Basket");
  156. String[] header = new String[]{"序号","商户编号","商户名称","销售额","销售数量","客户数","客单价","年-月"};
  157. List<Map<String, Object>> list = new ArrayList<>();
  158. int count = 1;
  159. if (monthlySalesGrowthEntities!=null && monthlySalesGrowthEntities.size()>0) {
  160. for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
  161. LinkedHashMap<String, Object> map = new LinkedHashMap<>();
  162. map.put("OrderNumber",count++);
  163. map.put("MerchSn",monthlySalesGrowthEntity.getMerchSn());
  164. map.put("MerchName",monthlySalesGrowthEntity.getMerchName());
  165. map.put("TotalSales",monthlySalesGrowthEntity.getTotalSales());
  166. map.put("TotalNumber",monthlySalesGrowthEntity.getTotalNumber());
  167. map.put("TotalCustomers",monthlySalesGrowthEntity.getTotalCustomers());
  168. String avgBasketSale = new BigDecimal(monthlySalesGrowthEntity.getTotalSales()).divide(new BigDecimal(monthlySalesGrowthEntity.getTotalNumber()),3, RoundingMode.HALF_UP).toString();
  169. map.put("avgBasketSale",avgBasketSale);
  170. map.put("YearAndMonth",monthlySalesGrowthEntity.getYearAndMonth());
  171. list.add(map);
  172. }
  173. }
  174. ee.addSheetByMap("Monthly Customers&Avg Basket", list, header);
  175. ee.export(response);
  176. return R.ok();
  177. }
  178. /**
  179. * 销售前10的产品
  180. * @param month
  181. * @param week
  182. * @return
  183. */
  184. @RequestMapping("/top10ForProduct")
  185. public R top10ForProduct(@RequestParam("month") String month, @RequestParam("week") String week){
  186. String merchSn = null;
  187. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  188. if(!"1".equals(sysUser.getRoleType())){
  189. merchSn = sysUser.getMerchSn();
  190. }
  191. Map<String,Object> map = monthlyCustomersService.top10ForProduct(month,week,merchSn);
  192. return R.ok(map);
  193. }
  194. /**
  195. * 销售前10的品牌/供应商的商品
  196. * @param startDate
  197. * @param endDate
  198. * @return
  199. */
  200. @RequestMapping("/top10ByBrandAndSupplier")
  201. public R top10ByBrandAndSupplier(@RequestParam("startDate") String startDate,
  202. @RequestParam("endDate") String endDate){
  203. String merchSn = null;
  204. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  205. if(!"1".equals(sysUser.getRoleType())){
  206. merchSn = sysUser.getMerchSn();
  207. }
  208. Map<String,Object> map = monthlyCustomersService.top10ByBrandAndSupplier(startDate,endDate,merchSn);
  209. return R.ok(map);
  210. }
  211. @RequestMapping("/top10ByBrandAndSupplierExport")
  212. public R top10ByBrandAndSupplierExport(@RequestParam("startDate") String startDate,
  213. @RequestParam("endDate") String endDate, HttpServletResponse response, HttpServletRequest request){
  214. String merchSn = null;
  215. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  216. if(!"1".equals(sysUser.getRoleType())){
  217. merchSn = sysUser.getMerchSn();
  218. }
  219. Map<String,Object> map = monthlyCustomersService.top10ByBrandAndSupplier(startDate,endDate,merchSn);
  220. List<MonthlySalesGrowthEntity> top10ByBrand = (List<MonthlySalesGrowthEntity>) map.get("top10ByBrand");
  221. List<MonthlySalesGrowthEntity> top10BySupplier = (List<MonthlySalesGrowthEntity>) map.get("top10BySupplier");
  222. ExcelExport ee = new ExcelExport("产品销量前10");
  223. String[] header1 = new String[]{"序号","商户名称","品牌","产品规格","销售数量"};
  224. String[] header2 = new String[]{"序号","商户名称","供应商","产品规格","销售数量"};
  225. List<Map<String, Object>> list1 = new ArrayList<>();
  226. List<Map<String, Object>> list2 = new ArrayList<>();
  227. int count = 1;
  228. if (top10ByBrand!=null && top10ByBrand.size()>0) {
  229. for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : top10ByBrand) {
  230. LinkedHashMap<String, Object> tempMap = new LinkedHashMap<>();
  231. tempMap.put("OrderNumber",count++);
  232. tempMap.put("MerchName",monthlySalesGrowthEntity.getMerchName());
  233. tempMap.put("Brand",monthlySalesGrowthEntity.getBrand());
  234. tempMap.put("GoodsSpecificationNameValue",monthlySalesGrowthEntity.getGoodsSpecificationNameValue());
  235. tempMap.put("sales",monthlySalesGrowthEntity.getSales());
  236. list1.add(tempMap);
  237. }
  238. }
  239. count=1;
  240. if (top10BySupplier!=null && top10BySupplier.size()>0) {
  241. for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : top10BySupplier) {
  242. LinkedHashMap<String, Object> tempMap = new LinkedHashMap<>();
  243. tempMap.put("OrderNumber",count++);
  244. tempMap.put("MerchName",monthlySalesGrowthEntity.getMerchName());
  245. tempMap.put("Supplier",monthlySalesGrowthEntity.getSupplier());
  246. tempMap.put("GoodsSpecificationNameValue",monthlySalesGrowthEntity.getGoodsSpecificationNameValue());
  247. tempMap.put("sales",monthlySalesGrowthEntity.getSales());
  248. list2.add(tempMap);
  249. }
  250. }
  251. ee.addSheetByMap("top10ByBrand", list1, header1);
  252. ee.addSheetByMap("top10BySupplier", list2, header2);
  253. ee.export(response);
  254. return R.ok(map);
  255. }
  256. /**
  257. * 每周销售额销售量图表查询
  258. * @param startWeek
  259. * @param endWeek
  260. * @return
  261. * @throws ParseException
  262. */
  263. @RequestMapping("/customersQueryByWeek")
  264. public R queryWeeklyCustomers(@RequestParam("startWeek") String startWeek, @RequestParam("endWeek") String endWeek) throws ParseException {
  265. List<String> dateList = new ArrayList<>();
  266. try {
  267. calculateDifferentWeek(dateList, startWeek, endWeek);
  268. } catch (ParseException e) {
  269. e.printStackTrace();
  270. }
  271. String merchSn = null;
  272. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  273. if(!"1".equals(sysUser.getRoleType())){
  274. merchSn = sysUser.getMerchSn();
  275. }
  276. SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy");
  277. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  278. Calendar bef = Calendar.getInstance();
  279. Calendar aft = Calendar.getInstance();
  280. bef.setFirstDayOfWeek(Calendar.MONDAY);
  281. aft.setFirstDayOfWeek(Calendar.MONDAY);
  282. bef.setTime(sdf.parse(startWeek));
  283. aft.setTime(sdf.parse(endWeek));
  284. int befWeek = bef.get(Calendar.WEEK_OF_YEAR);
  285. int aftWeek = aft.get(Calendar.WEEK_OF_YEAR);
  286. if(befWeek<10){
  287. startWeek =weekSdf.format(bef.getTime())+"-0"+befWeek;
  288. }else{
  289. startWeek =weekSdf.format(bef.getTime())+"-"+befWeek;
  290. }
  291. if(aftWeek<10){
  292. endWeek =weekSdf.format(aft.getTime())+"-0"+aftWeek;
  293. }else{
  294. endWeek =weekSdf.format(aft.getTime())+"-"+aftWeek;
  295. }
  296. Map<String,Object> map = monthlyCustomersService.queryWeeklyCustomers(startWeek,endWeek,merchSn,dateList);
  297. Map<String, Object> returnMap = new HashMap<>();
  298. returnMap.put("dateList", dateList);
  299. returnMap.putAll(map);
  300. return R.ok(returnMap);
  301. }
  302. @RequestMapping("/weeklySalesSummaryExport")
  303. public R weeklySalesSummaryExport(@RequestParam Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) throws ParseException {
  304. ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
  305. if (Objects.isNull(params.get("startWeek"))){
  306. return R.error("请先选择开始时间");
  307. }
  308. if (Objects.isNull(params.get("endWeek"))){
  309. return R.error("请先选择结束时间");
  310. }
  311. String startWeek = (String) params.get("startWeek");
  312. String endWeek = (String) params.get("endWeek");
  313. String merchSn = null;
  314. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  315. if(!"1".equals(sysUser.getRoleType())){
  316. merchSn = sysUser.getMerchSn();
  317. }
  318. SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy");
  319. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  320. Calendar bef = Calendar.getInstance();
  321. Calendar aft = Calendar.getInstance();
  322. bef.setFirstDayOfWeek(Calendar.MONDAY);
  323. aft.setFirstDayOfWeek(Calendar.MONDAY);
  324. bef.setTime(sdf.parse(startWeek));
  325. aft.setTime(sdf.parse(endWeek));
  326. int befWeek = bef.get(Calendar.WEEK_OF_YEAR);
  327. int aftWeek = aft.get(Calendar.WEEK_OF_YEAR);
  328. if(befWeek<10){
  329. startWeek =weekSdf.format(bef.getTime())+"-0"+befWeek;
  330. }else{
  331. startWeek =weekSdf.format(bef.getTime())+"-"+befWeek;
  332. }
  333. if(aftWeek<10){
  334. endWeek =weekSdf.format(aft.getTime())+"-0"+aftWeek;
  335. }else{
  336. endWeek =weekSdf.format(aft.getTime())+"-"+aftWeek;
  337. }
  338. List<MonthlySalesGrowthEntity> monthlySalesGrowthEntities = monthlyCustomersDao.queryWeeklyCustomers(startWeek, endWeek, merchSn);
  339. ExcelExport ee = new ExcelExport("Weekly Sales Summary");
  340. String[] header = new String[]{"序号","商户编号","商户名称","销售额","销售数量","年-周"};
  341. List<Map<String, Object>> list = new ArrayList<>();
  342. int count = 1;
  343. if (monthlySalesGrowthEntities!=null && monthlySalesGrowthEntities.size()>0) {
  344. for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
  345. LinkedHashMap<String, Object> map = new LinkedHashMap<>();
  346. map.put("OrderNumber",count++);
  347. map.put("MerchSn",monthlySalesGrowthEntity.getMerchSn());
  348. map.put("MerchName",monthlySalesGrowthEntity.getMerchName());
  349. map.put("TotalSales",monthlySalesGrowthEntity.getTotalSales());
  350. map.put("TotalNumber",monthlySalesGrowthEntity.getTotalNumber());
  351. map.put("YearAndWeek",monthlySalesGrowthEntity.getYearAndWeek());
  352. list.add(map);
  353. }
  354. }
  355. ee.addSheetByMap("Weekly Sales Summary", list, header);
  356. ee.export(response);
  357. return R.ok();
  358. }
  359. private void calculateDifferentWeek(List<String> weekList, String startWeek, String endWeek) throws ParseException {
  360. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  361. SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy");
  362. Calendar bef = Calendar.getInstance();
  363. Calendar aft = Calendar.getInstance();
  364. bef.setFirstDayOfWeek(Calendar.MONDAY);
  365. aft.setFirstDayOfWeek(Calendar.MONDAY);
  366. bef.setTime(sdf.parse(startWeek));
  367. aft.setTime(sdf.parse(endWeek));
  368. do {
  369. int i = bef.get(Calendar.WEEK_OF_YEAR);
  370. if (i<10){
  371. weekList.add(weekSdf.format(bef.getTime())+"-0"+i);
  372. }else{
  373. weekList.add(weekSdf.format(bef.getTime())+"-"+i);
  374. }
  375. bef.set(Calendar.DAY_OF_MONTH,bef.get(Calendar.DAY_OF_MONTH)+7); //给当前时间增加一周
  376. }
  377. while (bef.compareTo(aft) <= 0);
  378. }
  379. /**
  380. * 每月微信好友图表查询
  381. * @param startMonth
  382. * @param endMonth
  383. * @return
  384. */
  385. @RequestMapping("/queryMonthlyWechatFollowers")
  386. public R queryMonthlyWechatFollowers(@RequestParam("startMonth") String startMonth, @RequestParam("endMonth") String endMonth) {
  387. List<String> dateList = new ArrayList<>();
  388. Map<String, Object> returnMap = new HashMap<>();
  389. try {
  390. calculateDifferentMonth(dateList, startMonth, endMonth);
  391. } catch (ParseException e) {
  392. e.printStackTrace();
  393. }
  394. try {
  395. String merchSn = null;
  396. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  397. if(!"1".equals(sysUser.getRoleType())){
  398. merchSn = sysUser.getMerchSn();
  399. }
  400. Map<String,Object> map = monthlyCustomersService.queryMonthlyWechatFollowers(startMonth,endMonth,merchSn);
  401. returnMap.put("dateList", dateList);
  402. returnMap.putAll(map);
  403. } catch (Exception e) {
  404. e.printStackTrace();
  405. return R.error(e.getMessage());
  406. }
  407. return R.ok(returnMap);
  408. }
  409. /**
  410. * 添加微信好友数据
  411. * @param wechatFollowers
  412. * @return
  413. */
  414. @RequestMapping("/addWechatFollowers")
  415. public R addWechatFollowers( @RequestParam("wechatFollowers") Integer wechatFollowers) {
  416. try {
  417. String merchSn = null;
  418. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  419. if(!"1".equals(sysUser.getRoleType())){
  420. merchSn = sysUser.getMerchSn();
  421. }
  422. WechatFollowersEntity wechatFollowersEntity = new WechatFollowersEntity();
  423. wechatFollowersEntity.setCreaterSn(ShiroUtils.getUserId().toString());
  424. wechatFollowersEntity.setCreateTime(new Date());
  425. wechatFollowersEntity.setWechatFollowers(wechatFollowers);
  426. wechatFollowersEntity.setMerchSn(merchSn);
  427. monthlyCustomersService.addWechatFollowers(wechatFollowersEntity);
  428. } catch (Exception e) {
  429. e.printStackTrace();
  430. return R.error(e.getMessage());
  431. }
  432. return R.ok("添加成功");
  433. }
  434. @RequestMapping("/wechatFollowersGrowthExport")
  435. public R wechatFollowersGrowthExport(@RequestParam Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) {
  436. ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
  437. if (Objects.isNull(params.get("startMonth")) || "".equals(params.get("startMonth"))){
  438. return R.error("请先选择开始时间");
  439. }
  440. if (Objects.isNull(params.get("endMonth")) || "".equals(params.get("endMonth"))){
  441. return R.error("请先选择结束时间");
  442. }
  443. String merchSn = null;
  444. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  445. if(!"1".equals(sysUser.getRoleType())){
  446. merchSn = sysUser.getMerchSn();
  447. }
  448. List<WechatFollowersEntity> wechatFollowersEntities = wechatFollowersDao.queryMonthlyWechatFollowers((String) params.get("startMonth"), (String) params.get("endMonth"), merchSn);
  449. ExcelExport ee = new ExcelExport("Wechat Followers Growth");
  450. String[] header = new String[]{"序号","商户编号","好友数量","年-月"};
  451. List<Map<String, Object>> list = new ArrayList<>();
  452. int count = 1;
  453. if (wechatFollowersEntities!=null && wechatFollowersEntities.size()>0) {
  454. for (WechatFollowersEntity wechatFollowersEntity : wechatFollowersEntities) {
  455. LinkedHashMap<String, Object> map = new LinkedHashMap<>();
  456. map.put("OrderNumber",count++);
  457. map.put("MerchSn",wechatFollowersEntity.getMerchSn());
  458. map.put("WechatFollowers",wechatFollowersEntity.getWechatFollowers());
  459. map.put("YearAndMonth",wechatFollowersEntity.getYearAndMonth());
  460. list.add(map);
  461. }
  462. }
  463. ee.addSheetByMap("Wechat Followers Growth", list, header);
  464. ee.export(response);
  465. return R.ok();
  466. }
  467. /**
  468. * 品牌销售数量
  469. * @param startDate
  470. * @param endDate
  471. * @return
  472. */
  473. @RequestMapping("/salesByCategory")
  474. public R salesByCategory(@RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate){
  475. String merchSn = null;
  476. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  477. if(!"1".equals(sysUser.getRoleType())){
  478. merchSn = sysUser.getMerchSn();
  479. }
  480. return R.ok().put("list",monthlyCustomersService.salesByCategory(startDate,endDate,merchSn));
  481. }
  482. /**
  483. * 每月品牌销售数量查询
  484. * @param startMonth
  485. * @param endMonth
  486. * @return
  487. */
  488. @RequestMapping("/monthlyCategory")
  489. public R monthlyCategory(@RequestParam("startMonth") String startMonth, @RequestParam("endMonth") String endMonth) {
  490. List<String> dateList = new ArrayList<>();
  491. Map<String, Object> returnMap = new HashMap<>();
  492. try {
  493. calculateDifferentMonth(dateList, startMonth, endMonth);
  494. } catch (ParseException e) {
  495. e.printStackTrace();
  496. }
  497. try {
  498. String merchSn = null;
  499. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  500. if(!"1".equals(sysUser.getRoleType())){
  501. merchSn = sysUser.getMerchSn();
  502. }
  503. Map<String,Object> map = monthlyCustomersService.monthlyCategory(startMonth,endMonth,merchSn,dateList);
  504. returnMap.put("dateList", dateList);
  505. returnMap.putAll(map);
  506. } catch (Exception e) {
  507. e.printStackTrace();
  508. return R.error(e.getMessage());
  509. }
  510. return R.ok(returnMap);
  511. }
  512. @RequestMapping("/monthlyCategoryExport")
  513. public R monthlyCategoryExport(@RequestParam Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) {
  514. ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
  515. if (Objects.isNull(params.get("startMonth")) || "".equals(params.get("startMonth"))){
  516. return R.error("请先选择开始时间");
  517. }
  518. if (Objects.isNull(params.get("endMonth")) || "".equals(params.get("endMonth"))){
  519. return R.error("请先选择结束时间");
  520. }
  521. String merchSn = null;
  522. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  523. if(!"1".equals(sysUser.getRoleType())){
  524. merchSn = sysUser.getMerchSn();
  525. }
  526. List<MonthlySalesGrowthEntity> monthlySalesGrowthEntities = monthlyCustomersDao.monthlyCategory((String) params.get("startMonth"), (String) params.get("endMonth"), merchSn);
  527. ExcelExport ee = new ExcelExport("品牌销售量比较");
  528. String[] header = new String[]{"序号","销售数量","品牌名","销售额","年-月"};
  529. List<Map<String, Object>> list = new ArrayList<>();
  530. int count = 1;
  531. if (monthlySalesGrowthEntities!=null && monthlySalesGrowthEntities.size()>0) {
  532. for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
  533. LinkedHashMap<String, Object> map = new LinkedHashMap<>();
  534. map.put("OrderNumber",count++);
  535. map.put("Sales",monthlySalesGrowthEntity.getSales());
  536. map.put("Cgname",monthlySalesGrowthEntity.getCgname());
  537. map.put("TotalSales",monthlySalesGrowthEntity.getTotalSales());
  538. map.put("YearAndMonth",monthlySalesGrowthEntity.getYearAndMonth());
  539. list.add(map);
  540. }
  541. }
  542. ee.addSheetByMap("品牌销售量比较", list, header);
  543. ee.export(response);
  544. return R.ok();
  545. }
  546. }