记得上下班打卡 | git大法好,push需谨慎

Commit 489a6aae authored by anjiabin's avatar anjiabin

提交演出数据统计admin模块

parent 1cb182fe
package com.liquidnet.service.kylin.service;
import com.liquidnet.service.kylin.dao.report.PerformanceAgeDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceCityDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceProvinceDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceSexDataDto;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: IReportPerformanceService
* @Package com.liquidnet.service.kylin.service
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 11:27
*/
public interface IReportPerformanceService {
/**
* 获取按省统计数据
* @param performanceId
* @return
*/
List<PerformanceProvinceDataDto> getProvinceDataList(String performanceId);
/**
* 获取按城市统计数据
* @param performanceId
* @return
*/
List<PerformanceCityDataDto> getCityDataList(String performanceId);
/**
* 获取按年龄统计数据
* @param performanceId
* @return
*/
List<PerformanceAgeDataDto> getAgeDataList(String performanceId);
/**
* 获取按性别统计数据
* @param performanceId
* @return
*/
List<PerformanceSexDataDto> getSexDataList(String performanceId);
}
package com.liquidnet.client.admin.web.controller.zhengzai.kylin;
import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.kylin.dao.report.PerformanceAgeDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceCityDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceProvinceDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceSexDataDto;
import com.liquidnet.service.kylin.dto.param.PerformancePartnerVo;
import com.liquidnet.service.kylin.service.IReportPerformanceService;
import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ReportPerformanceController
* @Package com.liquidnet.client.admin.web.controller.zhengzai.kylin
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 11:33
*/
@Slf4j
@Controller
@RequestMapping("/kylin/report")
public class ReportPerformanceController extends BaseController {
private String prefix = "zhengzai/kylin/report";
@Autowired
private IReportPerformanceService reportPerformanceService;
@Autowired
private IKylinPerformancesAdminService kylinPerformancesAdminService;
@Autowired
private MongoTemplate mongoTemplate;
// @RequiresPermissions("kylin:report:getPerformanceData:view")
@GetMapping("/getPerformanceData")
public String getPerformanceDataView(String performanceId, ModelMap mmap)
{
mmap.put("currentDate", LocalDate.now());
mmap.put("performanceId", "");
return prefix + "/performanceData";
}
/**
* 查询演出列表
*/
@Log(title = "演出报表", businessType = BusinessType.LIST)
@RequiresPermissions("kylin:report:getPerformanceData:list")
@PostMapping("/getPerformanceData/list")
@ResponseBody
public AjaxResult provincelist(@RequestParam(value = "performanceId") @Validated String performanceId, ModelMap mmap)
{
//获取演出详情
// KylinPerformanceMisVo kylinPerformanceMisVo = kylinPerformancesAdminService.performanceDetails(performanceId);
PerformancePartnerVo performanceData = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), PerformancePartnerVo.class, PerformancePartnerVo.class.getSimpleName());
if(StringUtil.isNull(performanceData)||StringUtil.isNull(performanceData.getPerformancesId())){
return AjaxResult.error("演出Id:"+performanceId+"对应演出不存在!",performanceId);
}
HashMap<String,Object> hashMap = new HashMap();
log.info("ReportPerformanceController.getPerformanceData performanceId:{}",performanceId);
//获取按省统计数据
List<PerformanceProvinceDataDto> provinceDataList= reportPerformanceService.getProvinceDataList(performanceId);
List<PerformanceCityDataDto> cityDataList= reportPerformanceService.getCityDataList(performanceId);
List<PerformanceAgeDataDto> ageDataList= reportPerformanceService.getAgeDataList(performanceId);
List<PerformanceSexDataDto> sexDataList= reportPerformanceService.getSexDataList(performanceId);
// //按年龄
// PerformanceAgeDataDto ageDataDto = PerformanceAgeDataDto.getNew();
// ageDataDto.setAge("19");
// ageDataDto.setTotalNumber(34555);
// ageDataList.add(ageDataDto);
// ageDataDto = PerformanceAgeDataDto.getNew();
// ageDataDto.setAge("20");
// ageDataDto.setTotalNumber(33444);
// ageDataList.add(ageDataDto);
//
// //按性别
// PerformanceSexDataDto sexDataDto = PerformanceSexDataDto.getNew();
// sexDataDto.setSex("男");
// sexDataDto.setTotalNumber(12345);
// sexDataList.add(sexDataDto);
// sexDataDto = PerformanceSexDataDto.getNew();
// sexDataDto.setSex("女");
// sexDataDto.setTotalNumber(99885);
// sexDataList.add(sexDataDto);
String perTitle = performanceData.getTitle();
hashMap.put("currentDate", LocalDate.now());
hashMap.put("performanceId", performanceId);
hashMap.put("perTitle", perTitle);
hashMap.put("provinceDataList",provinceDataList);
hashMap.put("cityDataList",cityDataList);
hashMap.put("ageDataList",ageDataList);
hashMap.put("sexDataList",sexDataList);
return AjaxResult.success(hashMap);
}
// /**
// * 查询演出列表
// */
//// @Log(title = "演出报表", businessType = BusinessType.LIST)
//// @RequiresPermissions("kylin:report:getPerformanceData:list")
// @PostMapping("/getPerformanceData/list")
// public String getPerformanceData(@RequestParam(value = "performanceId") @Validated String performanceId, ModelMap mmap)
// {
// log.info("ReportPerformanceController.getPerformanceData performanceId:{}",performanceId);
// //获取按省统计数据
// List<PerformanceProvinceDataDto> provinceDataList= reportPerformanceService.getProvinceDataList(performanceId);
// //
// List<PerformanceCityDataDto> cityDataList= reportPerformanceService.getCityDataList(performanceId);
// List<PerformanceAgeDataDto> ageDataList= reportPerformanceService.getAgeDataList(performanceId);
// List<PerformanceSexDataDto> sexDataDtos= reportPerformanceService.getSexDataList(performanceId);
//
// mmap.put("currentDate", LocalDate.now());
// mmap.put("performanceId", performanceId);
// mmap.put("provinceDataList",provinceDataList);
// mmap.put("cityDataList",cityDataList);
// mmap.put("ageDataList",ageDataList);
// mmap.put("sexDataDtos",sexDataDtos);
// return prefix + "/performanceData";
// }
}
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('演出列表')" />
</head>
<body class="gray-bg">
<div class="row border-bottom white-bg dashboard-header">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<li>
<label>演出id: </label>
<input th:field="${performanceId}" type="text" id="performanceId" placeholder="演出ID" name="performanceId" required/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="submit()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
<form id="formId2">
<div class="select-list" style="text-align: right">
<ul>
<li>
<label>演出id:</label>
<input type="text" name="perId" id ="perId" readonly/>
</li>
<li>
<label>演出名称:</label>
<input type="text" name="perName" id = "perTitle" readonly/>
</li>
</ul>
</div>
</form>
</div>
</div>
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>按省份统计购票数量</h5>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a href="#">选项1</a>
</li>
<li><a href="#">选项2</a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<div class="echarts" id="provinceDataChart"></div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>按城市统计购票数量</h5>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a href="#">选项1</a>
</li>
<li><a href="#">选项2</a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<div class="echarts" id="cityDataChart"></div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>按年龄统计购票数量</h5>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a href="#">选项1</a>
</li>
<li><a href="#">选项2</a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<div class="echarts" id="ageDataChart"></div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>按性别统计购票数量</h5>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a href="#">选项1</a>
</li>
<li><a href="#">选项2</a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<div class="echarts" id="sexDataChart"></div>
</div>
</div>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: echarts-js" />
<script type="text/javascript">
var prefix = ctx + "kylin/report/getPerformanceData";
var selectListUrl = prefix + "/list";
function submit() {
var performanceId = $("#performanceId").val();
var param = {
performanceId: performanceId
}
if (performanceId == "") {
alert("演出ID不能为空");
} else {
// $.post(selectListUrl,param,function (res) {
// console.log(res.msg);
// initProvinceData(res.data);
// });
$.operate.post(selectListUrl,
param,
function (res) {
if(res==null){
alert("演出查询异常!");
return;
}
if(res.code!=null&&res.code == 0){
debugger;
initProvinceData(res.data);
initCityData(res.data);
initAgeData(res.data);
initSexData(res.data);
$("#perId").attr("value",res.data.performanceId);
$("#perTitle").attr("value",res.data.perTitle);
}else{
// alert(res.msg);
}
});
}
}
function submit2(){
var form = $("#formId");
console.log(selectListUrl);
form.action = selectListUrl;
form.method = "post";
form.submit();
// if ($.validate.form()) {
// var form = $("#formId");
// console.log(selectListUrl);
// form.action = selectListUrl;
// form.submit();
// }
}
var validate = $("#formId").validate({
onkeyup: false,
rules:{
performanceId:{
required:true
}
},
messages:{
performanceId: {
required:"演出id不能为空!"
}
}
});
//按省份统计
function initProvinceData(data){
let settingObj = data.provinceDataList;
// 对象转化为数组
let settingArr = Object.keys(settingObj).map(key => {
return settingObj[key];
})
// 给数组附键值
let value = settingArr.map(item => {
return item.totalNumber;
})
// console.log("value.length==="+value.length);
// console.log("value[0]==="+value[0]);
let name = settingArr.map(item => {
return item.province;
})
// console.log("name.length==="+name.length);
// console.log("name[0]==="+name[0]);
var barChart = echarts.init(document.getElementById("provinceDataChart"));
var baroption = {
title : {
text: '按省份统计购票数量',
x:'center'
},
tooltip : {
trigger: 'axis'
},
legend: {
data:['购票数量']
},
grid:{
x:30,
x2:40,
y2:24
},
calculable : true,
xAxis : [
{
type : 'category',
// data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
data : name
}
],
yAxis : [
{
type : 'value'
}
],
series : [
{
name:'开票量',
type:'bar',
// data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
data:value,
markPoint : {
data : [
{type : 'max', name: '最大值'},
{type : 'min', name: '最小值'}
]
},
markLine : {
data : [
{type : 'average', name: '平均值'}
]
}
}
]
};
barChart.setOption(baroption);
window.onresize = barChart.resize;
}
//按城市统计
function initCityData(data){
let settingObj = data.cityDataList;
// 对象转化为数组
let settingArr = Object.keys(settingObj).map(key => {
return settingObj[key];
})
// 给数组附键值
let value = settingArr.map(item => {
return item.totalNumber;
})
// console.log("value.length==="+value.length);
// console.log("value[0]==="+value[0]);
let name = settingArr.map(item => {
return item.cityName;
})
// console.log("name.length==="+name.length);
// console.log("name[0]==="+name[0]);
var barChart = echarts.init(document.getElementById("cityDataChart"));
var baroption = {
title : {
text: '按城市统计购票数量',
x:'center'
},
tooltip : {
trigger: 'axis'
},
legend: {
data:['购票数量']
},
grid:{
x:30,
x2:40,
y2:24
},
calculable : true,
xAxis : [
{
type : 'category',
// data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
data : name
}
],
yAxis : [
{
type : 'value'
}
],
series : [
{
name:'开票量',
type:'bar',
// data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
data:value,
markPoint : {
data : [
{type : 'max', name: '最大值'},
{type : 'min', name: '最小值'}
]
},
markLine : {
data : [
{type : 'average', name: '平均值'}
]
}
}
]
};
barChart.setOption(baroption);
window.onresize = barChart.resize;
}
//按年龄统计
function initAgeData(data){
let settingObj = data.ageDataList;
// 对象转化为数组
let settingArr = Object.keys(settingObj).map(key => {
return settingObj[key];
})
// 给数组附键值
let value = settingArr.map(item => {
return item.totalNumber;
})
// console.log("value.length==="+value.length);
// console.log("value[0]==="+value[0]);
let name = settingArr.map(item => {
return item.age;
})
// console.log("name.length==="+name.length);
// console.log("name[0]==="+name[0]);
var barChart = echarts.init(document.getElementById("ageDataChart"));
var baroption = {
title : {
text: '按年龄统计购票数量',
x:'center'
},
tooltip : {
trigger: 'axis'
},
legend: {
data:['购票数量']
},
grid:{
x:30,
x2:40,
y2:24
},
calculable : true,
xAxis : [
{
type : 'category',
// data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
data : name
}
],
yAxis : [
{
type : 'value'
}
],
series : [
{
name:'开票量',
type:'bar',
// data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
data:value,
markPoint : {
data : [
{type : 'max', name: '最大值'},
{type : 'min', name: '最小值'}
]
},
markLine : {
data : [
{type : 'average', name: '平均值'}
]
}
}
]
};
barChart.setOption(baroption);
window.onresize = barChart.resize;
}
/**
* 按性别统计
* @param data
*/
function initSexData(data){
debugger;
let settingObj = data.sexDataList;
// 对象转化为数组
let settingArr = Object.keys(settingObj).map(key => {
return settingObj[key];
})
// 给数组附键值
let value = settingArr.map(item => {
return { "value": item.totalNumber };
})
// console.log("value.length==="+value.length);
// console.log("value[0]==="+value[0].value);
let name = settingArr.map(item => {
return { "name": item.sex };
})
// console.log("name.length==="+name.length);
// console.log("name[0]==="+name[0].name);
// 合并数组或者对象在数组或对象前面加...,是es6的新写法,然后数组的map方法会返回数组.
let objArr = value.map((value, index) => {
return { ...value ,...name[index]};
});
console.log(objArr[0]);
var pieChart = echarts.init(document.getElementById("sexDataChart"));
var pieoption = {
title : {
text: '按性别统计购票数量',
// subtext: '纯属虚构',
x:'center'
},
tooltip : {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
orient : 'vertical',
left : 'left',
data: [{name:'dde'},{name:'222'}]
},
calculable : true,
series : [
{
name:'性别',
type:'pie',
radius : '55%',
center: ['50%', '60%'],
data: objArr,
itemStyle: {
normal:{
label:{
show:true,
formatter: "{b} :\n {c} \n ({d}%)",
position:"inner"
}
}
}
}
]
};
pieChart.setOption(pieoption);
$(window).resize(pieChart.resize);
}
</script>
</body>
</html>
package com.liquidnet.client.admin.zhengzai.kylin.service.impl;
import com.liquidnet.service.kylin.dao.report.PerformanceAgeDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceCityDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceProvinceDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceSexDataDto;
import com.liquidnet.service.kylin.mapper.ReportPerformanceMapper;
import com.liquidnet.service.kylin.service.IReportPerformanceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ReportPerformanceServiceImpl
* @Package com.liquidnet.client.admin.zhengzai.kylin.service.impl
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 11:30
*/
@Slf4j
@Service
public class ReportPerformanceServiceImpl implements IReportPerformanceService {
@Autowired
private ReportPerformanceMapper reportPerformanceMapper;
@Override
public List<PerformanceProvinceDataDto> getProvinceDataList(String performanceId) {
return reportPerformanceMapper.getProvinceDataList(performanceId);
}
@Override
public List<PerformanceCityDataDto> getCityDataList(String performanceId) {
return reportPerformanceMapper.getCityDataList(performanceId);
}
@Override
public List<PerformanceAgeDataDto> getAgeDataList(String performanceId) {
return reportPerformanceMapper.getAgeDataList(performanceId);
}
@Override
public List<PerformanceSexDataDto> getSexDataList(String performanceId) {
return reportPerformanceMapper.getSexDataList(performanceId);
}
}
package com.liquidnet.service.kylin.dao.report;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceAgeDataDto
* @Package com.liquidnet.service.kylin.dao.report
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 10:58
*/
@Data
public class PerformanceAgeDataDto implements Serializable {
private String performanceId;
private String age;
private long totalNumber;
private static final PerformanceAgeDataDto obj = new PerformanceAgeDataDto();
public static PerformanceAgeDataDto getNew() {
try {
return (PerformanceAgeDataDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new PerformanceAgeDataDto();
}
}
}
package com.liquidnet.service.kylin.dao.report;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceCityDataDto
* @Package com.liquidnet.service.kylin.dao.report
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 10:58
*/
@Data
public class PerformanceCityDataDto implements Serializable {
private String performanceId;
private String cityName;
private long totalNumber;
private static final PerformanceCityDataDto obj = new PerformanceCityDataDto();
public static PerformanceCityDataDto getNew() {
try {
return (PerformanceCityDataDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new PerformanceCityDataDto();
}
}
}
package com.liquidnet.service.kylin.dao.report;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceProvinceData
* @Package com.liquidnet.service.kylin.dao.report
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 10:57
*/
@Data
public class PerformanceProvinceDataDto implements Serializable {
private String performanceId;
private String province;
private long totalNumber;
private static final PerformanceProvinceDataDto obj = new PerformanceProvinceDataDto();
public static PerformanceProvinceDataDto getNew() {
try {
return (PerformanceProvinceDataDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new PerformanceProvinceDataDto();
}
}
}
package com.liquidnet.service.kylin.dao.report;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceSexDataDto
* @Package com.liquidnet.service.kylin.dao.report
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 10:58
*/
@Data
public class PerformanceSexDataDto implements Serializable {
private String sex;
private long totalNumber;
private static final PerformanceSexDataDto obj = new PerformanceSexDataDto();
public static PerformanceSexDataDto getNew() {
try {
return (PerformanceSexDataDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new PerformanceSexDataDto();
}
}
}
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.report.PerformanceAgeDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceCityDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceProvinceDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceSexDataDto;
import com.liquidnet.service.kylin.entity.KylinPerformances;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ReportPerformanceMapper
* @Package com.liquidnet.service.kylin.mapper
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 10:54
*/
public interface ReportPerformanceMapper extends BaseMapper<KylinPerformances> {
/**
* 获取按省统计数据
* @param performanceId
* @return
*/
List<PerformanceProvinceDataDto> getProvinceDataList(String performanceId);
/**
* 获取按城市统计数据
* @param performanceId
* @return
*/
List<PerformanceCityDataDto> getCityDataList(String performanceId);
/**
* 获取按年龄统计数据
* @param performanceId
* @return
*/
List<PerformanceAgeDataDto> getAgeDataList(String performanceId);
/**
* 获取按性别统计数据
* @param performanceId
* @return
*/
List<PerformanceSexDataDto> getSexDataList(String performanceId);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.kylin.mapper.ReportPerformanceMapper">
<resultMap id="getProvinceDataListResult" type="com.liquidnet.service.kylin.dao.report.PerformanceProvinceDataDto">
<result column="performance_id" property="performanceId"/>
<result column="province" property="province"/>
<result column="total_number" property="totalNumber"/>
</resultMap>
<resultMap id="getCityDataListResult" type="com.liquidnet.service.kylin.dao.report.PerformanceCityDataDto">
<result column="performance_id" property="performanceId"/>
<result column="city_name" property="cityName"/>
<result column="total_number" property="totalNumber"/>
</resultMap>
<resultMap id="getAgeDataListResult" type="com.liquidnet.service.kylin.dao.report.PerformanceAgeDataDto">
<result column="performance_id" property="performanceId"/>
<result column="age" property="age"/>
<result column="total_number" property="totalNumber"/>
</resultMap>
<resultMap id="getSexDataListResult" type="com.liquidnet.service.kylin.dao.report.PerformanceSexDataDto">
<result column="sex" property="sex"/>
<result column="total_number" property="totalNumber"/>
</resultMap>
<!-- 演出按省统计-->
<select id="getProvinceDataList" parameterType="java.lang.String" resultMap="getProvinceDataListResult">
select x.* from (
SELECT kotr.performance_id AS 'performance_id',
ifnull(ca.province, '未知') province,
count(1) total_number
FROM kylin_order_ticket_relations kotr
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
inner join kylin_order_ticket_entities kote on kot.order_tickets_id = kote.order_id
left join sys_dict_id_card_area ca
on substr(kote.enter_id_code, 1, 6)= ca.code
WHERE 1 > 0
and kotr.performance_id = ${performanceId}
and kots.`status` in (1, 3, 6)
and kot.coupon_type = 'no'
group by kotr.performance_id,ca.province
) x order by x.total_number desc
</select>
<!-- 演出按城市统计-->
<select id="getCityDataList" parameterType="java.lang.String" resultMap="getCityDataListResult">
select x.* from (
SELECT
kotr.performance_id AS 'performance_id',
ifnull(ca.pre_city,'未知') city_name,
count(1) total_number
FROM
kylin_order_ticket_relations kotr
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
inner join kylin_order_ticket_entities kote on kot.order_tickets_id = kote.order_id
left join sys_dict_id_card_area ca on substr(kote.enter_id_code,1,6) = ca.code
WHERE 1>0 and kotr.performance_id = #{performanceId}
and kots.`status` in(1,3,6)
and kot.coupon_type ='no'
group by kotr.performance_id,ca.pre_city
) x order by x.total_number desc
</select>
<!-- 演出按年龄统计-->
<select id="getAgeDataList" parameterType="java.lang.String" resultMap="getAgeDataListResult">
select * from (
SELECT kotr.performance_id AS 'performance_id',
substr(curdate(), 1, 4) - substr(kote.enter_id_code, 7, 4) age,
count(1) total_number
FROM kylin_order_ticket_relations kotr
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
inner join kylin_order_ticket_entities kote on kot.order_tickets_id = kote.order_id
WHERE 1 > 0
and kotr.performance_id = #{performanceId}
and kots.`status` in (1, 3, 6)
and kot.coupon_type = 'no'
and length(kote.enter_id_code)=18
group by kotr.performance_id, substr(curdate(), 1, 4) - substr(kote.enter_id_code, 7, 4)
)x order by x.age
</select>
<!-- 演出按性别统计-->
<select id="getSexDataList" parameterType="java.lang.String" resultMap="getSexDataListResult">
select x.sex,count(1) total_number from (
SELECT kotr.performance_id AS 'performance_id',
case when substr(kote.enter_id_code,17,1)%2=0 then '女' else '男' end sex
FROM kylin_order_ticket_relations kotr
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
inner join kylin_order_ticket_entities kote on kot.order_tickets_id = kote.order_id
WHERE 1 > 0
and kotr.performance_id = ${performanceId}
and kots.`status` in (1, 3, 6)
and kot.coupon_type = 'no'
and length(kote.enter_id_code)=18
)x group by x.sex
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment