|
@@ -12,9 +12,14 @@ import com.qs.mp.user.service.IUserTicketOrderService;
|
|
|
import com.qs.mp.utils.SecurityUtils;
|
|
|
import com.qs.mp.web.controller.common.BaseApiController;
|
|
|
import io.swagger.annotations.Api;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
@@ -48,7 +53,7 @@ public class IndexMgrController extends BaseApiController {
|
|
|
*/
|
|
|
@PostMapping("/pay/amt")
|
|
|
// @PreAuthorize("@ss.hasPermi('business:channel:list')")
|
|
|
- public AjaxResult listChannel(@RequestBody IndexQueryParam indeQueryParam) {
|
|
|
+ public AjaxResult listPayAmtData(@RequestBody IndexQueryParam indeQueryParam) {
|
|
|
|
|
|
IndexQueryParam queryParam = getQueryParam(indeQueryParam);
|
|
|
|
|
@@ -67,9 +72,227 @@ public class IndexMgrController extends BaseApiController {
|
|
|
}
|
|
|
|
|
|
list = userTicketOrderService.selectIndexPayAmtList(queryWrapper);
|
|
|
- return AjaxResult.success(list);
|
|
|
+ return AjaxResult.success(getPayAmtList(list, queryParam));
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Map<String,Object>> getPayAmtList(List<IndexVO> list, IndexQueryParam queryParam){
|
|
|
+ List<Map<String,Object>> mapList = new ArrayList<>();
|
|
|
+ if(null != queryParam && queryParam.getLevel().equals("month")) { // 月粒度
|
|
|
+ List<String> monthList = DateUtils.addMonths(queryParam.getStartTime(), queryParam.getEndTime());
|
|
|
+ if(null != monthList && monthList.size() > 0) {
|
|
|
+ for(String month : monthList) {
|
|
|
+ if(StringUtils.isNotBlank(month)) {
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+ map.put("x", month);
|
|
|
+ map.put("y", getMonthPayAmt(month, list));
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(null != queryParam && queryParam.getLevel().equals("week")) { // 周粒度
|
|
|
+ List<Map<String,Object>> weekList = DateUtils.getDateOfWeek(queryParam.getStartTime(), queryParam.getEndTime());
|
|
|
+ if(null != weekList && weekList.size() > 0) {
|
|
|
+ for(Map<String,Object> weekMap : weekList) {
|
|
|
+ if(null != weekMap && weekMap.containsKey("start")
|
|
|
+ && weekMap.containsKey("end")
|
|
|
+ && weekMap.containsKey("dayList")) {
|
|
|
+ String start = weekMap.get("start").toString();
|
|
|
+ String end = weekMap.get("end").toString();
|
|
|
+ List<String> dayList = (List<String>) weekMap.get("dayList");
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+ map.put("x", start +"-"+end);
|
|
|
+ map.put("y", getWeekPayAmt(dayList, list));
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else { // 日粒度
|
|
|
+ List<String> dayList = DateUtils.addDates(DateUtils.dateTime(queryParam.getStartTime()), DateUtils.dateTime(queryParam.getEndTime()));
|
|
|
+ if(null != dayList && dayList.size() > 0) {
|
|
|
+ for(String day : dayList) {
|
|
|
+ int payAmt = 0;
|
|
|
+ if(null != list && list.size() > 0) {
|
|
|
+ if(StringUtils.isNotBlank(day)) {
|
|
|
+ for(IndexVO indexVo : list) {
|
|
|
+ if(null != indexVo
|
|
|
+ && null != indexVo.getPayAmt()
|
|
|
+ && StringUtils.isNotBlank(indexVo.getTime())
|
|
|
+ && indexVo.getTime().equals(day)) {
|
|
|
+ payAmt = indexVo.getPayAmt();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+ map.put("x", day);
|
|
|
+ map.put("y", payAmt);
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return mapList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private int getWeekPayAmt(List<String> dayList, List<IndexVO> list) {
|
|
|
+ BigDecimal payAmt = new BigDecimal(0);
|
|
|
+ if(null != list && list.size() > 0
|
|
|
+ && null != dayList && dayList.size() > 0) {
|
|
|
+ for(IndexVO indexVo : list) {
|
|
|
+ if(null != indexVo
|
|
|
+ && null != indexVo.getPayAmt()
|
|
|
+ && StringUtils.isNotBlank(indexVo.getTime())
|
|
|
+ && dayList.contains(indexVo.getTime())) {
|
|
|
+ payAmt = payAmt.add(new BigDecimal(indexVo.getPayAmt()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return payAmt.intValue();
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
+ private int getMonthPayAmt(String month, List<IndexVO> list) {
|
|
|
+ BigDecimal payAmt = new BigDecimal(0);
|
|
|
+ if(null != list && list.size() > 0
|
|
|
+ && StringUtils.isNotBlank(month)) {
|
|
|
+ for(IndexVO indexVo : list) {
|
|
|
+ if(null != indexVo
|
|
|
+ && null != indexVo.getPayAmt()
|
|
|
+ && StringUtils.isNotBlank(indexVo.getTime())
|
|
|
+ && indexVo.getTime().indexOf(month) >= 0) {
|
|
|
+ payAmt = payAmt.add(new BigDecimal(indexVo.getPayAmt()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return payAmt.intValue();
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询统计交易用户数
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping("/pay/user")
|
|
|
+ // @PreAuthorize("@ss.hasPermi('business:channel:list')")
|
|
|
+ public AjaxResult listPayUserData(@RequestBody IndexQueryParam indeQueryParam) {
|
|
|
+
|
|
|
+ IndexQueryParam queryParam = getQueryParam(indeQueryParam);
|
|
|
+
|
|
|
+ List<IndexVO> list = new ArrayList<IndexVO>();
|
|
|
+ QueryWrapper<UserDeliverOrder> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(), "DATE_FORMAT(t1.created_time, '%Y-%m-%d')", queryParam.getStartTime());
|
|
|
+ queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "DATE_FORMAT(t1.created_time, '%Y-%m-%d')", queryParam.getEndTime());
|
|
|
+ queryWrapper.gt("t1.`status`", 0);
|
|
|
+ Long channelId = SecurityUtils.getLoginUser().getChannelId();
|
|
|
+ if(null != channelId && 0 != channelId) {
|
|
|
+ Channel channel = channelService.getById(channelId);
|
|
|
+ if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
|
|
|
+ queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
|
|
|
+ .or().eq("t2.channel_no", channel.getChannelNo()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ list = userTicketOrderService.selectIndexPayUserCntList(queryWrapper);
|
|
|
+ return AjaxResult.success(getPayUserList(list, queryParam));
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Map<String,Object>> getPayUserList(List<IndexVO> list, IndexQueryParam queryParam){
|
|
|
+ List<Map<String,Object>> mapList = new ArrayList<>();
|
|
|
+ if(null != queryParam && queryParam.getLevel().equals("month")) { // 月粒度
|
|
|
+ List<String> monthList = DateUtils.addMonths(queryParam.getStartTime(), queryParam.getEndTime());
|
|
|
+ if(null != monthList && monthList.size() > 0) {
|
|
|
+ for(String month : monthList) {
|
|
|
+ if(StringUtils.isNotBlank(month)) {
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+ map.put("x", month);
|
|
|
+ map.put("y", getMonthPayUser(month, list));
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(null != queryParam && queryParam.getLevel().equals("week")) { // 周粒度
|
|
|
+ List<Map<String,Object>> weekList = DateUtils.getDateOfWeek(queryParam.getStartTime(), queryParam.getEndTime());
|
|
|
+ if(null != weekList && weekList.size() > 0) {
|
|
|
+ for(Map<String,Object> weekMap : weekList) {
|
|
|
+ if(null != weekMap && weekMap.containsKey("start")
|
|
|
+ && weekMap.containsKey("end")
|
|
|
+ && weekMap.containsKey("dayList")) {
|
|
|
+ String start = weekMap.get("start").toString();
|
|
|
+ String end = weekMap.get("end").toString();
|
|
|
+ List<String> dayList = (List<String>) weekMap.get("dayList");
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+ map.put("x", start +"-"+end);
|
|
|
+ map.put("y", getWeekPayUser(dayList, list));
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else { // 日粒度
|
|
|
+ List<String> dayList = DateUtils.addDates(DateUtils.dateTime(queryParam.getStartTime()), DateUtils.dateTime(queryParam.getEndTime()));
|
|
|
+ if(null != dayList && dayList.size() > 0) {
|
|
|
+ for(String day : dayList) {
|
|
|
+ int payUser = 0;
|
|
|
+ if(null != list && list.size() > 0) {
|
|
|
+ if(StringUtils.isNotBlank(day)) {
|
|
|
+ for(IndexVO indexVo : list) {
|
|
|
+ if(null != indexVo
|
|
|
+ && null != indexVo.getPayUserCnt()
|
|
|
+ && StringUtils.isNotBlank(indexVo.getTime())
|
|
|
+ && indexVo.getTime().equals(day)) {
|
|
|
+ payUser = indexVo.getPayUserCnt();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+ map.put("x", day);
|
|
|
+ map.put("y", payUser);
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return mapList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private int getWeekPayUser(List<String> dayList, List<IndexVO> list) {
|
|
|
+ int payUserCnt = 0;
|
|
|
+ if(null != list && list.size() > 0
|
|
|
+ && null != dayList && dayList.size() > 0) {
|
|
|
+ for(IndexVO indexVo : list) {
|
|
|
+ if(null != indexVo
|
|
|
+ && null != indexVo.getPayUserCnt()
|
|
|
+ && StringUtils.isNotBlank(indexVo.getTime())
|
|
|
+ && dayList.contains(indexVo.getTime())) {
|
|
|
+ payUserCnt = payUserCnt + indexVo.getPayUserCnt();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return payUserCnt;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ private int getMonthPayUser(String month, List<IndexVO> list) {
|
|
|
+ int payUserCnt = 0;
|
|
|
+ if(null != list && list.size() > 0
|
|
|
+ && StringUtils.isNotBlank(month)) {
|
|
|
+ for(IndexVO indexVo : list) {
|
|
|
+ if(null != indexVo
|
|
|
+ && null != indexVo.getPayUserCnt()
|
|
|
+ && StringUtils.isNotBlank(indexVo.getTime())
|
|
|
+ && indexVo.getTime().indexOf(month) >= 0) {
|
|
|
+ payUserCnt = payUserCnt + indexVo.getPayUserCnt();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return payUserCnt;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 初始化查询参数
|
|
|
* @param indeQueryParam
|
|
@@ -80,12 +303,145 @@ public class IndexMgrController extends BaseApiController {
|
|
|
queryParam.setDays(null != indeQueryParam && null != indeQueryParam.getDays()?indeQueryParam.getDays():7);
|
|
|
queryParam.setLevel(null != indeQueryParam && StringUtils.isNotBlank(indeQueryParam.getLevel())?indeQueryParam.getLevel():"day");
|
|
|
if(queryParam.getDays() == 0) { // 自定义
|
|
|
-
|
|
|
+ if(null != indeQueryParam.getStartTime() && null != indeQueryParam.getEndTime()) {
|
|
|
+ queryParam.setStartTime(indeQueryParam.getStartTime());
|
|
|
+ queryParam.setEndTime(indeQueryParam.getEndTime());
|
|
|
+ }else {
|
|
|
+ queryParam.setStartTime(DateUtils.getPreDayOfNow(7));
|
|
|
+ queryParam.setEndTime(new Date());
|
|
|
+ }
|
|
|
}else {
|
|
|
- queryParam.setStartTime(new Date());
|
|
|
- queryParam.setEndTime(DateUtils.getNowDate());
|
|
|
+ queryParam.setStartTime(DateUtils.getPreDayOfNow(queryParam.getDays()));
|
|
|
+ queryParam.setEndTime(new Date());
|
|
|
}
|
|
|
return queryParam;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询统计新增经销商数量
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping("/site/increase")
|
|
|
+ // @PreAuthorize("@ss.hasPermi('business:channel:list')")
|
|
|
+ public AjaxResult listSiteIncreaseData(@RequestBody IndexQueryParam indeQueryParam) {
|
|
|
+
|
|
|
+ IndexQueryParam queryParam = getQueryParam(indeQueryParam);
|
|
|
+
|
|
|
+ List<IndexVO> list = new ArrayList<IndexVO>();
|
|
|
+ QueryWrapper<Channel> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(), "DATE_FORMAT(t1.created_time, '%Y-%m-%d')", queryParam.getStartTime());
|
|
|
+ queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "DATE_FORMAT(t1.created_time, '%Y-%m-%d')", queryParam.getEndTime());
|
|
|
+ queryWrapper.eq("t1.`level`", 0);
|
|
|
+ Long channelId = SecurityUtils.getLoginUser().getChannelId();
|
|
|
+ if(null != channelId && 0 != channelId) {
|
|
|
+ Channel channel = channelService.getById(channelId);
|
|
|
+ if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
|
|
|
+ queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
|
|
|
+ .or().eq("t2.channel_no", channel.getChannelNo()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ list = channelService.selectIndexSiteIncreaseList(queryWrapper);
|
|
|
+ return AjaxResult.success(getSiteIncreaseList(list, queryParam));
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Map<String,Object>> getSiteIncreaseList(List<IndexVO> list, IndexQueryParam queryParam){
|
|
|
+ List<Map<String,Object>> mapList = new ArrayList<>();
|
|
|
+ if(null != queryParam && queryParam.getLevel().equals("month")) { // 月粒度
|
|
|
+ List<String> monthList = DateUtils.addMonths(queryParam.getStartTime(), queryParam.getEndTime());
|
|
|
+ if(null != monthList && monthList.size() > 0) {
|
|
|
+ for(String month : monthList) {
|
|
|
+ if(StringUtils.isNotBlank(month)) {
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+ map.put("x", month);
|
|
|
+ map.put("y", getMonthSiteIncrease(month, list));
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(null != queryParam && queryParam.getLevel().equals("week")) { // 周粒度
|
|
|
+ List<Map<String,Object>> weekList = DateUtils.getDateOfWeek(queryParam.getStartTime(), queryParam.getEndTime());
|
|
|
+ if(null != weekList && weekList.size() > 0) {
|
|
|
+ for(Map<String,Object> weekMap : weekList) {
|
|
|
+ if(null != weekMap && weekMap.containsKey("start")
|
|
|
+ && weekMap.containsKey("end")
|
|
|
+ && weekMap.containsKey("dayList")) {
|
|
|
+ String start = weekMap.get("start").toString();
|
|
|
+ String end = weekMap.get("end").toString();
|
|
|
+ List<String> dayList = (List<String>) weekMap.get("dayList");
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+ map.put("x", start +"-"+end);
|
|
|
+ map.put("y", getWeekSiteIncrease(dayList, list));
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else { // 日粒度
|
|
|
+ List<String> dayList = DateUtils.addDates(DateUtils.dateTime(queryParam.getStartTime()), DateUtils.dateTime(queryParam.getEndTime()));
|
|
|
+ if(null != dayList && dayList.size() > 0) {
|
|
|
+ for(String day : dayList) {
|
|
|
+ int newSiteCnt = 0;
|
|
|
+ if(null != list && list.size() > 0) {
|
|
|
+ if(StringUtils.isNotBlank(day)) {
|
|
|
+ for(IndexVO indexVo : list) {
|
|
|
+ if(null != indexVo
|
|
|
+ && null != indexVo.getNewSiteCnt()
|
|
|
+ && StringUtils.isNotBlank(indexVo.getTime())
|
|
|
+ && indexVo.getTime().equals(day)) {
|
|
|
+ newSiteCnt = indexVo.getNewSiteCnt();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+ map.put("x", day);
|
|
|
+ map.put("y", newSiteCnt);
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return mapList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private int getWeekSiteIncrease(List<String> dayList, List<IndexVO> list) {
|
|
|
+ int newSiteCnt = 0;
|
|
|
+ if(null != list && list.size() > 0
|
|
|
+ && null != dayList && dayList.size() > 0) {
|
|
|
+ for(IndexVO indexVo : list) {
|
|
|
+ if(null != indexVo
|
|
|
+ && null != indexVo.getNewSiteCnt()
|
|
|
+ && StringUtils.isNotBlank(indexVo.getTime())
|
|
|
+ && dayList.contains(indexVo.getTime())) {
|
|
|
+ newSiteCnt = newSiteCnt + indexVo.getNewSiteCnt();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return newSiteCnt;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ private int getMonthSiteIncrease(String month, List<IndexVO> list) {
|
|
|
+ int newSiteCnt = 0;
|
|
|
+ if(null != list && list.size() > 0
|
|
|
+ && StringUtils.isNotBlank(month)) {
|
|
|
+ for(IndexVO indexVo : list) {
|
|
|
+ if(null != indexVo
|
|
|
+ && null != indexVo.getNewSiteCnt()
|
|
|
+ && StringUtils.isNotBlank(indexVo.getTime())
|
|
|
+ && indexVo.getTime().indexOf(month) >= 0) {
|
|
|
+ newSiteCnt = newSiteCnt + indexVo.getNewSiteCnt();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return newSiteCnt;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|