| @@ -0,0 +1,93 @@ | |||||
| package com.iformall.controller.market; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.ApiVersion; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.constant.SwaggerConstant; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.po.WxLegionActivity; | |||||
| import com.iformall.domain.po.WxLegionActivityConfig; | |||||
| import com.iformall.domain.po.WxLegionActivityMerchantConfig; | |||||
| import com.iformall.domain.po.WxLegionActivityOrder; | |||||
| import com.iformall.domain.po.base.BaseEntity.SortField; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.domain.vo.LegionActivityStatistics; | |||||
| import com.iformall.enums.EnumLegionActivityStatus; | |||||
| import com.iformall.exception.MallinkException; | |||||
| import com.iformall.service.WxLegionActivityConfigService; | |||||
| import com.iformall.service.WxLegionActivityOrderService; | |||||
| import com.iformall.service.WxLegionActivityService; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import javax.servlet.http.HttpServletRequest; | |||||
| import javax.servlet.http.HttpServletResponse; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| /** | |||||
| * @author alascor | |||||
| * | |||||
| */ | |||||
| @RestController | |||||
| @RequestMapping("/legionNotic") | |||||
| @Api(tags = "军团活动看板相关接口") | |||||
| public class WxLegionActivityNoticeController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxLegionActivityOrderService wxLegionActivityOrderService; | |||||
| @ApiVersion(group = SwaggerConstant.V_2_0_0) | |||||
| @ApiOperation("查询军团活动数据") | |||||
| @GetMapping("legionData") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) | |||||
| public ResultData getLegionData(@ModelAttribute WxLegionActivityOrder wxLegionActivityOrder) { | |||||
| if(wxLegionActivityOrder.getActivityId() == null){ | |||||
| throw new MallinkException(Result.ERROR,"活动ID不能为空"); | |||||
| } | |||||
| TenantEntity tenantInfo = getTenantInfo(); | |||||
| wxLegionActivityOrder.updateTenantInfo(tenantInfo); | |||||
| List<LegionActivityStatistics> activityData = wxLegionActivityOrderService.getLegionData(wxLegionActivityOrder); | |||||
| return new ResultData(activityData); | |||||
| } | |||||
| @ApiVersion(group = SwaggerConstant.V_2_0_0) | |||||
| @ApiOperation("导出军团活动数据") | |||||
| @GetMapping("/exportLegionData") | |||||
| public void exportLegionData(@ModelAttribute WxLegionActivityOrder wxLegionActivityOrder, HttpServletRequest request, HttpServletResponse response) { | |||||
| if (null == wxLegionActivityOrder) wxLegionActivityOrder = new WxLegionActivityOrder(); | |||||
| if(wxLegionActivityOrder.getActivityId() == null){ | |||||
| throw new MallinkException(Result.ERROR,"活动ID不能为空"); | |||||
| } | |||||
| TenantEntity tenantInfo = getTenantInfo(); | |||||
| wxLegionActivityOrder.updateTenantInfo(tenantInfo); | |||||
| wxLegionActivityOrderService.exportLegionData(request,response,wxLegionActivityOrder); | |||||
| } | |||||
| @ApiVersion(group = SwaggerConstant.V_2_0_0) | |||||
| @ApiOperation("查询军团活动数据") | |||||
| @GetMapping("legionDaysData") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) | |||||
| public ResultData getLegionDaysData(@ModelAttribute WxLegionActivityOrder wxLegionActivityOrder) { | |||||
| if(wxLegionActivityOrder.getActivityId() == null){ | |||||
| throw new MallinkException(Result.ERROR,"活动ID不能为空"); | |||||
| } | |||||
| TenantEntity tenantInfo = getTenantInfo(); | |||||
| wxLegionActivityOrder.updateTenantInfo(tenantInfo); | |||||
| List<LegionActivityStatistics> activityData = wxLegionActivityOrderService.getLegionDaysData(wxLegionActivityOrder); | |||||
| return new ResultData(activityData); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,25 @@ | |||||
| package com.iformall.domain.vo; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| import java.math.BigDecimal; | |||||
| @Data | |||||
| public class ActivityNoticeBo implements Serializable { | |||||
| private static final long serialVersionUID = 1L; | |||||
| //名称 | |||||
| private String name; | |||||
| //数量 | |||||
| private Integer count; | |||||
| //百分比 | |||||
| private String percentage; | |||||
| //序号 | |||||
| private Integer sortNum; | |||||
| private Double score; | |||||
| private BigDecimal price; | |||||
| } | |||||
| @@ -0,0 +1,26 @@ | |||||
| package com.iformall.domain.vo; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| import java.math.BigDecimal; | |||||
| import java.text.DecimalFormat; | |||||
| @Data | |||||
| public class ActivityNoticeVo implements Serializable { | |||||
| private static final long serialVersionUID = 1L; | |||||
| //名称 | |||||
| private String name; | |||||
| //数量 | |||||
| private Integer count; | |||||
| //百分比 | |||||
| private String percentage; | |||||
| //序号 | |||||
| private Integer sortNum; | |||||
| private Double score; | |||||
| private BigDecimal price; | |||||
| } | |||||
| @@ -10,6 +10,8 @@ public class LegionActivityOrderTypeStatistics implements Serializable { | |||||
| private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
| private Long cusMerchantId; | private Long cusMerchantId; | ||||
| private Long cusLegionId; | |||||
| private Integer orderType; | private Integer orderType; | ||||
| private String xTime; | |||||
| private Integer count; | private Integer count; | ||||
| } | } | ||||
| @@ -0,0 +1,36 @@ | |||||
| package com.iformall.domain.vo; | |||||
| import cn.afterturn.easypoi.excel.annotation.Excel; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| import java.util.List; | |||||
| @Data | |||||
| public class LegionActivityStatistics implements Serializable { | |||||
| private static final long serialVersionUID = 1L; | |||||
| private Long legionId; | |||||
| @Excel(name="军团名称",width = 20,orderNum = "2") | |||||
| private String legionName; | |||||
| @Excel(name="售卡数量",width = 20,orderNum = "4") | |||||
| private Integer userCount; | |||||
| @Excel(name="签单数量",width = 20,orderNum = "5") | |||||
| private Integer orderCount; | |||||
| @Excel(name="带单数量",width = 20,orderNum = "6") | |||||
| private Integer sellOrderCount; | |||||
| @Excel(name="售卡积分",width = 20,orderNum = "7") | |||||
| private Double userScore; | |||||
| @Excel(name="签单积分",width = 20,orderNum = "8") | |||||
| private Double orderScore; | |||||
| @Excel(name="带单积分",width = 20,orderNum = "9") | |||||
| private Double sellOrderScore; | |||||
| @Excel(name="总积分",width = 20,orderNum = "11") | |||||
| private Double totalScore; | |||||
| private List<ActivityNoticeVo> noticeVoList; | |||||
| } | |||||
| @@ -10,5 +10,7 @@ public class LegionActivityUserStatistics implements Serializable { | |||||
| private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
| private Long merchantId; | private Long merchantId; | ||||
| private Long LegionId; | |||||
| private String xTime; | |||||
| private Integer count; | private Integer count; | ||||
| } | } | ||||
| @@ -30,7 +30,13 @@ public interface WxLegionActivityOrderMapper extends CommonMapper<WxLegionActivi | |||||
| List<LegionActivityOrderTypeStatistics> merchantStatistics(WxLegionActivityOrder wxLegionActivityOrder); | List<LegionActivityOrderTypeStatistics> merchantStatistics(WxLegionActivityOrder wxLegionActivityOrder); | ||||
| List<LegionActivityOrderTypeStatistics> legionStatistics(WxLegionActivityOrder wxLegionActivityOrder); | |||||
| List<LegionActivityOrderTypeStatistics> legionDateStatistics(WxLegionActivityOrder wxLegionActivityOrder); | |||||
| List<LegionActivitySellOrder> findOrderUser(WxLegionActivityOrder wxLegionActivityOrder); | List<LegionActivitySellOrder> findOrderUser(WxLegionActivityOrder wxLegionActivityOrder); | ||||
| } | } | ||||
| @@ -32,6 +32,10 @@ public interface WxLegionActivityUserMapper extends CommonMapper<WxLegionActivit | |||||
| WxLegionActivityUser selectLimitOne(WxLegionActivityUser wxLegionActivityUser); | WxLegionActivityUser selectLimitOne(WxLegionActivityUser wxLegionActivityUser); | ||||
| Integer selectCount(WxLegionActivityUser wxLegionActivityUser); | Integer selectCount(WxLegionActivityUser wxLegionActivityUser); | ||||
| List<LegionActivityUserStatistics> selectCountGroupLegion(WxLegionActivityUser wxLegionActivityUser); | |||||
| List<LegionActivityUserStatistics> selectCountGroupLegionDate(WxLegionActivityUser wxLegionActivityUser); | |||||
| } | } | ||||
| @@ -8,6 +8,7 @@ import com.iformall.domain.po.WxOfflineActivityRecord; | |||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.domain.vo.LegionActivityMerchantStatistics; | import com.iformall.domain.vo.LegionActivityMerchantStatistics; | ||||
| import com.iformall.domain.vo.LegionActivitySellOrder; | import com.iformall.domain.vo.LegionActivitySellOrder; | ||||
| import com.iformall.domain.vo.LegionActivityStatistics; | |||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| @@ -46,4 +47,10 @@ public interface WxLegionActivityOrderService { | |||||
| void exportActivitySellOrder(HttpServletRequest request, HttpServletResponse response, WxLegionActivityOrder wxLegionActivityOrder); | void exportActivitySellOrder(HttpServletRequest request, HttpServletResponse response, WxLegionActivityOrder wxLegionActivityOrder); | ||||
| void batchAudiPass(TenantEntity tenantEntity, List<Long> ids, Long userId); | void batchAudiPass(TenantEntity tenantEntity, List<Long> ids, Long userId); | ||||
| List<LegionActivityStatistics> getLegionData(WxLegionActivityOrder wxLegionActivityOrder); | |||||
| void exportLegionData(HttpServletRequest request, HttpServletResponse response, WxLegionActivityOrder wxLegionActivityOrder); | |||||
| List<LegionActivityStatistics> getLegionDaysData(WxLegionActivityOrder wxLegionActivityOrder); | |||||
| } | } | ||||
| @@ -15,6 +15,7 @@ import com.iformall.enums.*; | |||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.utils.DateUtils; | |||||
| import jodd.util.StringUtil; | import jodd.util.StringUtil; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| @@ -684,6 +685,211 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe | |||||
| } | } | ||||
| wxLegionActivityOfflineConfigService.syncOfflineActivityRecord(syncOrders); | wxLegionActivityOfflineConfigService.syncOfflineActivityRecord(syncOrders); | ||||
| } | } | ||||
| @Override | |||||
| public List<LegionActivityStatistics> getLegionData(WxLegionActivityOrder wxLegionActivityOrder) { | |||||
| WxLegionActivity activity = wxLegionActivityMapper.selectById(wxLegionActivityOrder.getActivityId(), wxLegionActivityOrder.getTenantId()); | |||||
| if(activity == null){ | |||||
| throw new MallinkException(Result.ERROR,"未查询到活动"); | |||||
| } | |||||
| //军团 | |||||
| WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig(); | |||||
| legionConfigQ.updateTenantInfo(wxLegionActivityOrder); | |||||
| legionConfigQ.setActivityId(wxLegionActivityOrder.getActivityId()); | |||||
| legionConfigQ.setParentId(0L); | |||||
| Map<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); | |||||
| //军团用户 | |||||
| WxLegionActivityUser userQ = new WxLegionActivityUser(); | |||||
| userQ.updateTenantInfo(activity); | |||||
| userQ.setActivityId(activity.getId()); | |||||
| userQ.setStatus(EnumLegionActivityUserStatus.VALID.getCode()); | |||||
| userQ.setCreateDateBegin(wxLegionActivityOrder.getCreateDateBegin()); | |||||
| userQ.setCreateDateEnd(wxLegionActivityOrder.getCreateDateEnd()); | |||||
| List<LegionActivityUserStatistics> legionCountList = wxLegionActivityUserMapper.selectCountGroupLegion(userQ); | |||||
| Map<Long, Integer> legionCountMap = new HashMap<>(); | |||||
| if(legionCountList != null && !legionCountList.isEmpty()){ | |||||
| legionCountMap = legionCountList.stream().collect(Collectors.toMap(LegionActivityUserStatistics::getLegionId, LegionActivityUserStatistics::getCount)); | |||||
| } | |||||
| //军团订单 | |||||
| WxLegionActivityOrder orderQ = new WxLegionActivityOrder(); | |||||
| orderQ.updateTenantInfo(activity); | |||||
| orderQ.setActivityId(activity.getId()); | |||||
| orderQ.setAuditStatus(EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode()); | |||||
| orderQ.setCreateDateBegin(wxLegionActivityOrder.getCreateDateBegin()); | |||||
| orderQ.setCreateDateEnd(wxLegionActivityOrder.getCreateDateEnd()); | |||||
| List<LegionActivityOrderTypeStatistics> legionStatistics = wxLegionActivityOrderMapper.legionStatistics(orderQ); | |||||
| Map<Long, List<LegionActivityOrderTypeStatistics>> legionStatisticsMap = new HashMap<>(); | |||||
| if(legionStatistics != null && !legionStatistics.isEmpty()){ | |||||
| legionStatisticsMap = legionStatistics.stream().collect(groupingBy(LegionActivityOrderTypeStatistics::getCusLegionId)); | |||||
| } | |||||
| List<LegionActivityStatistics> legionStatisticsList = new ArrayList<>(); | |||||
| for (Long legionId : legionConfigMap.keySet()) { | |||||
| LegionActivityStatistics legionS = new LegionActivityStatistics(); | |||||
| legionS.setLegionId(legionId); | |||||
| legionS.setLegionName(legionConfigMap.get(legionId)); | |||||
| Integer userCount = legionCountMap.get(legionId)==null?0:legionCountMap.get(legionId); | |||||
| legionS.setUserCount(userCount); | |||||
| Integer sign_order = 0,dif_legion = 0,dif_union = 0,eq_union = 0,not_union = 0; | |||||
| if(legionStatisticsMap.get(legionId) != null){ | |||||
| for(LegionActivityOrderTypeStatistics statistics : legionStatisticsMap.get(legionId)){ | |||||
| if(EnumLegionActivityOrderType.SIGN_ORDER.getCode().equals(statistics.getOrderType())){ | |||||
| sign_order = statistics.getCount(); | |||||
| }else if (EnumLegionActivityOrderType.DIF_LEGION.getCode().equals(statistics.getOrderType())){ | |||||
| dif_legion = statistics.getCount(); | |||||
| }else if(EnumLegionActivityOrderType.DIF_UNION.getCode().equals(statistics.getOrderType())){ | |||||
| dif_union = statistics.getCount(); | |||||
| }else if(EnumLegionActivityOrderType.EQ_UNION.getCode().equals(statistics.getOrderType())){ | |||||
| eq_union = statistics.getCount(); | |||||
| }else if(EnumLegionActivityOrderType.NOT_UNION.getCode().equals(statistics.getOrderType())){ | |||||
| not_union = statistics.getCount(); | |||||
| } | |||||
| } | |||||
| } | |||||
| //签单=总订单数 | |||||
| Integer order_count = sign_order+dif_legion+dif_union+eq_union+not_union; | |||||
| legionS.setOrderCount(order_count); | |||||
| //带单 | |||||
| legionS.setSellOrderCount(dif_legion+dif_union+eq_union+not_union); | |||||
| legionS.setUserScore(userCount*activity.getSellingCard()); | |||||
| legionS.setOrderScore(order_count*activity.getSignOrder()); | |||||
| legionS.setSellOrderScore(dif_legion*activity.getDifLegionOrder()+dif_union*activity.getDifUnionOrder() | |||||
| +eq_union*activity.getEqUnionOrder()+not_union*activity.getNotUnionOrder()); | |||||
| Double total_score = legionS.getUserScore() + legionS.getOrderScore() + legionS.getSellOrderScore(); | |||||
| legionS.setTotalScore(total_score); | |||||
| legionStatisticsList.add(legionS); | |||||
| } | |||||
| return legionStatisticsList; | |||||
| } | |||||
| @Override | |||||
| public void exportLegionData(HttpServletRequest request, HttpServletResponse response, WxLegionActivityOrder wxLegionActivityOrder) { | |||||
| List<LegionActivityStatistics> legionData = getLegionData(wxLegionActivityOrder); | |||||
| excelService.exportExcel(legionData, null, "军团活动数据", LegionActivityStatistics.class, "军团活动数据.xlsx", response, false); | |||||
| } | |||||
| @Override | |||||
| public List<LegionActivityStatistics> getLegionDaysData(WxLegionActivityOrder wxLegionActivityOrder) { | |||||
| WxLegionActivity activity = wxLegionActivityMapper.selectById(wxLegionActivityOrder.getActivityId(), wxLegionActivityOrder.getTenantId()); | |||||
| if(activity == null){ | |||||
| throw new MallinkException(Result.ERROR,"未查询到活动"); | |||||
| } | |||||
| //军团 | |||||
| WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig(); | |||||
| legionConfigQ.updateTenantInfo(wxLegionActivityOrder); | |||||
| legionConfigQ.setActivityId(wxLegionActivityOrder.getActivityId()); | |||||
| legionConfigQ.setParentId(0L); | |||||
| Map<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); | |||||
| if(wxLegionActivityOrder.getCreateDateBegin() == null || wxLegionActivityOrder.getCreateDateBegin().before(activity.getStartTime())){ | |||||
| wxLegionActivityOrder.setCreateDateBegin(activity.getStartTime()); | |||||
| } | |||||
| if(wxLegionActivityOrder.getCreateDateEnd() == null || wxLegionActivityOrder.getCreateDateEnd().after(activity.getEndTime())){ | |||||
| wxLegionActivityOrder.setCreateDateEnd(activity.getEndTime()); | |||||
| } | |||||
| Date now = new Date(); | |||||
| if(wxLegionActivityOrder.getCreateDateEnd().after(now)){ | |||||
| wxLegionActivityOrder.setCreateDateEnd(now); | |||||
| } | |||||
| List<LegionActivityStatistics> legionStatisticsList = new ArrayList<>(); | |||||
| if(wxLegionActivityOrder.getCreateDateBegin().after(wxLegionActivityOrder.getCreateDateEnd())){ | |||||
| for (Long legionId : legionConfigMap.keySet()) { | |||||
| LegionActivityStatistics legionS = new LegionActivityStatistics(); | |||||
| legionS.setLegionId(legionId); | |||||
| legionS.setLegionName(legionConfigMap.get(legionId)); | |||||
| legionStatisticsList.add(legionS); | |||||
| } | |||||
| return legionStatisticsList; | |||||
| } | |||||
| List<String> tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(wxLegionActivityOrder.getCreateDateBegin(),"yyyy-MM-dd"), | |||||
| DateUtils.date2String(wxLegionActivityOrder.getCreateDateEnd(),"yyyy-MM-dd"), "0"); | |||||
| //军团用户 | |||||
| WxLegionActivityUser userQ = new WxLegionActivityUser(); | |||||
| userQ.updateTenantInfo(activity); | |||||
| userQ.setActivityId(activity.getId()); | |||||
| userQ.setStatus(EnumLegionActivityUserStatus.VALID.getCode()); | |||||
| userQ.setCreateDateBegin(wxLegionActivityOrder.getCreateDateBegin()); | |||||
| userQ.setCreateDateEnd(wxLegionActivityOrder.getCreateDateEnd()); | |||||
| List<LegionActivityUserStatistics> legionCountList = wxLegionActivityUserMapper.selectCountGroupLegionDate(userQ); | |||||
| Map<Long, List<LegionActivityUserStatistics>> legionCountMap = new HashMap<>(); | |||||
| if(legionCountList != null && !legionCountList.isEmpty()){ | |||||
| legionCountMap = legionCountList.stream().collect(groupingBy(LegionActivityUserStatistics::getLegionId)); | |||||
| } | |||||
| //军团订单 | |||||
| WxLegionActivityOrder orderQ = new WxLegionActivityOrder(); | |||||
| orderQ.updateTenantInfo(activity); | |||||
| orderQ.setActivityId(activity.getId()); | |||||
| orderQ.setAuditStatus(EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode()); | |||||
| orderQ.setCreateDateBegin(wxLegionActivityOrder.getCreateDateBegin()); | |||||
| orderQ.setCreateDateEnd(wxLegionActivityOrder.getCreateDateEnd()); | |||||
| List<LegionActivityOrderTypeStatistics> legionStatistics = wxLegionActivityOrderMapper.legionDateStatistics(orderQ); | |||||
| Map<Long, List<LegionActivityOrderTypeStatistics>> legionStatisticsMap = new HashMap<>(); | |||||
| if(legionStatistics != null && !legionStatistics.isEmpty()){ | |||||
| legionStatisticsMap = legionStatistics.stream().collect(groupingBy(LegionActivityOrderTypeStatistics::getCusLegionId)); | |||||
| } | |||||
| for (Long legionId : legionConfigMap.keySet()) { | |||||
| LegionActivityStatistics legionS = new LegionActivityStatistics(); | |||||
| legionS.setLegionId(legionId); | |||||
| legionS.setLegionName(legionConfigMap.get(legionId)); | |||||
| List<LegionActivityUserStatistics> legionDateCountList = legionCountMap.get(legionId); | |||||
| Map<String, Integer> legionDateCountMap = new HashMap<>(); | |||||
| if(legionDateCountList != null && !legionDateCountList.isEmpty()){ | |||||
| legionDateCountMap = legionDateCountList.stream().collect(Collectors.toMap(LegionActivityUserStatistics::getXTime, LegionActivityUserStatistics::getCount)); | |||||
| } | |||||
| List<LegionActivityOrderTypeStatistics> legionOrderDateList = legionStatisticsMap.get(legionId); | |||||
| Map<String, List<LegionActivityOrderTypeStatistics>> legionOrderDateMap = new HashMap<>(); | |||||
| if(legionOrderDateList != null && !legionOrderDateList.isEmpty()){ | |||||
| legionOrderDateMap = legionOrderDateList.stream().collect(groupingBy(LegionActivityOrderTypeStatistics::getXTime)); | |||||
| } | |||||
| List<ActivityNoticeVo> activityNoticeVoList = new ArrayList<>(); | |||||
| for (String date : tjTimeList) { | |||||
| Integer userCount = legionDateCountMap.get(date)==null?0:legionDateCountMap.get(date); | |||||
| Integer sign_order = 0,dif_legion = 0,dif_union = 0,eq_union = 0,not_union = 0; | |||||
| if(legionOrderDateMap.get(date) != null){ | |||||
| for(LegionActivityOrderTypeStatistics statistics : legionOrderDateMap.get(date)){ | |||||
| if(EnumLegionActivityOrderType.SIGN_ORDER.getCode().equals(statistics.getOrderType())){ | |||||
| sign_order = statistics.getCount(); | |||||
| }else if (EnumLegionActivityOrderType.DIF_LEGION.getCode().equals(statistics.getOrderType())){ | |||||
| dif_legion = statistics.getCount(); | |||||
| }else if(EnumLegionActivityOrderType.DIF_UNION.getCode().equals(statistics.getOrderType())){ | |||||
| dif_union = statistics.getCount(); | |||||
| }else if(EnumLegionActivityOrderType.EQ_UNION.getCode().equals(statistics.getOrderType())){ | |||||
| eq_union = statistics.getCount(); | |||||
| }else if(EnumLegionActivityOrderType.NOT_UNION.getCode().equals(statistics.getOrderType())){ | |||||
| not_union = statistics.getCount(); | |||||
| } | |||||
| } | |||||
| } | |||||
| //签单=总订单数 | |||||
| Integer order_count = sign_order+dif_legion+dif_union+eq_union+not_union; | |||||
| //带单 | |||||
| // Integer sell_order_count = dif_legion+dif_union+eq_union+not_union; | |||||
| //总分 | |||||
| Double total_score = userCount*activity.getSellingCard()+order_count*activity.getSignOrder() | |||||
| +dif_legion*activity.getDifLegionOrder()+dif_union*activity.getDifUnionOrder() | |||||
| +eq_union*activity.getEqUnionOrder()+not_union*activity.getNotUnionOrder(); | |||||
| ActivityNoticeVo noticeVo = new ActivityNoticeVo(); | |||||
| noticeVo.setName(date.substring(5).replace("-", "/")); | |||||
| noticeVo.setScore(total_score); | |||||
| activityNoticeVoList.add(noticeVo); | |||||
| } | |||||
| legionS.setNoticeVoList(activityNoticeVoList); | |||||
| legionStatisticsList.add(legionS); | |||||
| } | |||||
| return legionStatisticsList; | |||||
| } | |||||
| } | } | ||||
| @@ -288,7 +288,64 @@ | |||||
| <if test=" null != auditStatus "> | <if test=" null != auditStatus "> | ||||
| and `audit_status` = #{auditStatus} | and `audit_status` = #{auditStatus} | ||||
| </if> | </if> | ||||
| GROUP BY merchant_id,order_type | |||||
| GROUP BY cus_merchant_id,order_type | |||||
| </select> | |||||
| <select id="legionStatistics" parameterType="com.iformall.domain.po.WxLegionActivityOrder" resultType="com.iformall.domain.vo.LegionActivityOrderTypeStatistics"> | |||||
| SELECT cus_legion_id as 'cusLegionId', | |||||
| order_type as 'orderType', | |||||
| count(1) as 'count' | |||||
| FROM wx_legion_activity_order | |||||
| where 1 = 1 | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != activityId "> | |||||
| and `activity_id` = #{activityId} | |||||
| </if> | |||||
| <if test=" null != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| <if test=" null != auditStatus "> | |||||
| and `audit_status` = #{auditStatus} | |||||
| </if> | |||||
| GROUP BY cus_legion_id,order_type | |||||
| </select> | |||||
| <select id="legionDateStatistics" parameterType="com.iformall.domain.po.WxLegionActivityOrder" resultType="com.iformall.domain.vo.LegionActivityOrderTypeStatistics"> | |||||
| SELECT cus_legion_id as 'cusLegionId', | |||||
| order_type as 'orderType', | |||||
| DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, | |||||
| count(1) as 'count' | |||||
| FROM wx_legion_activity_order | |||||
| where 1 = 1 | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != activityId "> | |||||
| and `activity_id` = #{activityId} | |||||
| </if> | |||||
| <if test=" null != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| <if test=" null != auditStatus "> | |||||
| and `audit_status` = #{auditStatus} | |||||
| </if> | |||||
| GROUP BY cus_legion_id,order_type,xTime | |||||
| </select> | </select> | ||||
| <select id="findOrderUser" parameterType="com.iformall.domain.po.WxLegionActivityOrder" resultType="com.iformall.domain.vo.LegionActivitySellOrder"> | <select id="findOrderUser" parameterType="com.iformall.domain.po.WxLegionActivityOrder" resultType="com.iformall.domain.vo.LegionActivitySellOrder"> | ||||
| @@ -140,6 +140,65 @@ | |||||
| GROUP BY merchant_id | GROUP BY merchant_id | ||||
| </select> | </select> | ||||
| <select id="selectCountGroupLegion" parameterType="com.iformall.domain.po.WxLegionActivityUser" resultType="com.iformall.domain.vo.LegionActivityUserStatistics"> | |||||
| SELECT legion_id as 'legionId', | |||||
| count(1) as 'count' | |||||
| FROM wx_legion_activity_user | |||||
| where 1 = 1 | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != activityId "> | |||||
| and `activity_id` = #{activityId} | |||||
| </if> | |||||
| <if test=" null != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| <if test=" null != status "> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| GROUP BY legion_id | |||||
| </select> | |||||
| <select id="selectCountGroupLegionDate" parameterType="com.iformall.domain.po.WxLegionActivityUser" resultType="com.iformall.domain.vo.LegionActivityUserStatistics"> | |||||
| SELECT legion_id as 'legionId', | |||||
| DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, | |||||
| count(1) as 'count' | |||||
| FROM wx_legion_activity_user | |||||
| where 1 = 1 | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != activityId "> | |||||
| and `activity_id` = #{activityId} | |||||
| </if> | |||||
| <if test=" null != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| <if test=" null != status "> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| GROUP BY legion_id,xTime | |||||
| </select> | |||||
| <update id="updateStatus" parameterType="com.iformall.domain.po.WxLegionActivityUser"> | <update id="updateStatus" parameterType="com.iformall.domain.po.WxLegionActivityUser"> | ||||
| update wx_legion_activity_user | update wx_legion_activity_user | ||||
| set `status` = #{status}, | set `status` = #{status}, | ||||
| @@ -201,4 +260,5 @@ | |||||
| <include refid="dynamicWhereConditions" /> | <include refid="dynamicWhereConditions" /> | ||||
| </select> | </select> | ||||
| </mapper> | </mapper> | ||||