Commit 7eabc5e5 by 一只苏

first commit

parents
.idea
target
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<version>2.0.5.RELEASE</version>
<artifactId>spring-boot-starter-parent</artifactId>
</parent>
<groupId>org.example</groupId>
<artifactId>springbootMybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.feng.su;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.feng.su.mapper")
@SpringBootApplication
public class RaysApplication {
public static void main(String[] args) {
SpringApplication.run(RaysApplication.class,args);
}
}
package com.feng.su.controller;
import com.feng.su.entity.*;
import com.feng.su.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@RestController
public class BookController {
@Autowired
private IBookService bookService;
/**
* 查询做的书籍信息
* @param response
*/
@RequestMapping("/getBook")
public void getAllBook(HttpServletResponse response){
bookService.getAllBook(response);
}
/**
* 查询订单金额表
* @param response
*/
@RequestMapping("/getItem")
public void getItemByYear(HttpServletResponse response){
bookService.getOrderByYear(response);
}
/**
* 编辑支出四项明细
* @param response
*/
@RequestMapping("/getBalance")
public void getBalance(HttpServletResponse response){
bookService.getBalance(response);
}
/**
* 图书分类以及读者圈和内容占比
* @param response
*/
@RequestMapping("/getGMVPercent")
public void getBookTypeGMV(HttpServletResponse response){
bookService.getBookTypeGMV(response);
}
/**
* 产生GMV的书
* @param response
*/
@RequestMapping("/getGMVBook")
public void getGMVBook(HttpServletResponse response){
bookService.getGMVBook(response);
}
/**
* 商品类型gmv占比排行
* @param response
*/
@RequestMapping("/getProductGMV")
public void getProGMV(HttpServletResponse response){
bookService.getProGMV(response);
}
/**
* 读者圈和内容GMV明细表
* @param response
* @return
*/
@RequestMapping("/getRcGMV")
public void getRcGMV(HttpServletResponse response){
bookService.getRcGMV(response);
}
}
package com.feng.su.entity;
import lombok.Data;
/**
* 做的书
*/
@Data
public class Book {
private Integer seqId;//序号,用于Excel表排序
private Integer book_id;//图书id
private String book_name;//图书名称
private String book_type;//图书类型
private Integer print_num;//印册量
private Integer adviser_id;//编辑ID
private String adviser_name;//编辑名称
private String agent_name;//出版社名称
private String confirm_time;//图书确认时间
@Override
public String toString() {
return "Book{" +
"seqId=" + seqId +
", book_id=" + book_id +
", book_name='" + book_name + '\'' +
", book_type='" + book_type + '\'' +
", print_num=" + print_num +
", adviser_id=" + adviser_id +
", adviser_name='" + adviser_name + '\'' +
", agent_name='" + agent_name + '\'' +
", confirm_time=" + confirm_time +
'}';
}
}
package com.feng.su.entity;
import lombok.Data;
import org.apache.poi.hpsf.Decimal;
/**
* 图书分类以及读者圈和内容占比
*/
@Data
public class BookTypeGMV {
private String book_type;//图书类型
private String reader_gmv;//读者圈GMV
private String reader_gmv_percent;//读者圈GMV占比
private String content_gmv;//内容GMV
private String content_gmv_percent;//内容GMV占比
private Integer book_count;//图书数量
private Integer print_num;//印册量
}
package com.feng.su.entity;
import lombok.Data;
/**
* 编辑四项支出明细
*/
@Data
public class FourBalance {
private Integer year;//年
private Integer month;//月
private Integer adviser_id;//编辑id
private String adviser_name;//编辑名称
private Integer adviser_fee;//编辑费用
private Integer author_fee;//作者费用
private Integer develop_fee;//研发费用
private Integer red_fee;//红榜任务
private Integer total_fee;//费用合计
private String agent_name;//出版社名称
}
package com.feng.su.entity;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 产生GMV的书
*/
@Data
public class GMVBook {
private Integer seqId;//序号
private Integer book_id;//图书ID
private String book_name;//图书名称
private String book_type;//图书类别
private Integer print_num;//印册量
private String agent_name;//出版社名称
private Integer adviser_id;//编辑ID
private String adviser_name;//编辑名称
private String gmv;//产生的GMV
}
package com.feng.su.entity;
import org.apache.poi.hpsf.Decimal;
public class ItemMoney {
private Integer year;
private Integer month;
private String gmv;
private Integer count;
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
}
public Integer getMonth() {
return month;
}
public void setMonth(Integer month) {
this.month = month;
}
public String getGmv() {
return gmv;
}
public void setGmv(String gmv) {
this.gmv = gmv;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
@Override
public String toString() {
return "ItemMoney{" +
"year=" + year +
", month=" + month +
", gmv=" + gmv +
", count=" + count +
'}';
}
}
package com.feng.su.entity;
import lombok.Data;
/**
* 商品类型gmv占比排行
*/
@Data
public class ProductGMV {
private Integer seqId;//序号
private Integer pro_type_id;//商品类型ID
private String type_name;//商品类型名称
private String rate;//占比
private String min_price;//最低价格
private String max_price;//最高价格
}
package com.feng.su.entity;
import lombok.Data;
@Data
public class ReaderContentGMV {
private Integer seqId;//序号
private Integer book_id;//图书ID
private String book_name;//图书名称
private String book_type;//图书类别
private String agent_name;//出版社
private Integer adviser_id;//编辑ID
private String adviser_name;//编辑名称
private String reader_gmv;//读者圈GMV
private String reader_gmv_rate;//读者圈GMV占比
private String reader_gmv_print_num;//读者圈GMV/印册量
private String content_gmv;//内容GMV
private String content_gmv_rate;//内容GMV占比
private String content_gmv_print_num;//内容GMV/印册量
private Integer print_num;//印册量
private String gmv;//产生的gmv
private String gmv_print_num;//产生的GMV/印册量
}
package com.feng.su.mapper;
import com.feng.su.entity.*;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface IBookMapper {
/**
* 获取新增书籍信息
* @return
*/
public List<Book> getAllBook();
/**
* 获取订单金额信息
* @return
*/
public List<ItemMoney> getOrderByYear();
/**
* 按月编辑四项支出明细
* @return
*/
public List<FourBalance> getBalance();
/**
* 图书分类以及读者圈和内容占比
* @return
*/
public List<BookTypeGMV> getBookTypeGMV();
/**
* 产生GMV的书
*/
public List<GMVBook> getGMVBook();
/**
* 商品类型gmv占比排行
* @return
*/
public List<ProductGMV> getProGMV();
/**
* 产生GMV的书-包括读者圈和内容GMV明细表
* @return
*/
public List<ReaderContentGMV> getRcGMV();
}
package com.feng.su.service;
import javax.servlet.http.HttpServletResponse;
public interface IBookService {
void getAllBook(HttpServletResponse response);
void getOrderByYear(HttpServletResponse response);
void getBalance(HttpServletResponse response);
void getBookTypeGMV(HttpServletResponse response);
void getGMVBook(HttpServletResponse response);
void getProGMV(HttpServletResponse response);
void getRcGMV(HttpServletResponse response);
}
package com.feng.su.service.impl;
import com.feng.su.entity.*;
import com.feng.su.mapper.IBookMapper;
import com.feng.su.service.IBookService;
import com.feng.su.utils.ExportExcelXSSFUtils;
import com.feng.su.utils.MarkUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
@Service
public class BookServiceImpl implements IBookService {
@Autowired
private IBookMapper bookMapper;
@Autowired
private ExportExcelXSSFUtils exportExcel;
/**
* 获取做的书籍信息
* @param response
* @return
*/
@Override
public void getAllBook(HttpServletResponse response) {
List<Book> bookList= bookMapper.getAllBook();
//生成Excel
exportExcel.exportExcel(new String[]{"序号","图书ID","图书名称","图书类型","印册量","编辑ID","编辑名称","出版社名称","图书确认时间"},bookList,"2020年新增的书籍",response);
}
/**
* 获取订单金额信息
* @param response
* @return
*/
@Override
public void getOrderByYear(HttpServletResponse response) {
List<ItemMoney> bookList= bookMapper.getOrderByYear();
//生成Excel
exportExcel.exportExcel(new String[]{"年(订单生成年份)","月","gmv","订单量"},bookList,"2020年订单金额表",response);
}
@Override
public void getBalance(HttpServletResponse response) {
List<FourBalance> fourBalanceList=bookMapper.getBalance();
//生成Excel
exportExcel.exportExcel(new String[]{"年","月","编辑ID","编辑名称","编辑费用","作者费用","研发费用","红榜任务","费用合计","出版社名称"},fourBalanceList,"2020年按月编辑四项支出明细",response);
}
@Override
public void getBookTypeGMV(HttpServletResponse response) {
List<BookTypeGMV> bookTypeGMVList=bookMapper.getBookTypeGMV();
//生成Excel
exportExcel.exportExcel(new String[]{"图书类型","读者圈GMV","读者圈GMV占比","内容GMV","内容GMV占比","图书数量","印册量"},bookTypeGMVList,"2020年产生GMV的书(到202004)-图书分类以及读者圈和内容占比",response);
}
/**
* 产生GMV的书
* @param response
* @return
*/
@Override
public void getGMVBook(HttpServletResponse response) {
List<GMVBook> gmvBookList=bookMapper.getGMVBook();
//生成Excel
exportExcel.exportExcel(new String[]{"序号","图书ID","图书名称","图书类别","印册量","出版社","编辑ID","编辑名称","产生的GMV"},gmvBookList,"2020年产生GMV的书(到202004)",response);
}
@Override
public void getProGMV(HttpServletResponse response) {
List<ProductGMV> productGMVList=bookMapper.getProGMV();
//生成Excel
exportExcel.exportExcel(new String[]{"序号","商品类型ID","商品类型名称","占比(%)","最低价格(元)","最高价格(元)"},productGMVList,"2020年商品类型gmv占比排行(到202004)",response);
}
@Override
public void getRcGMV(HttpServletResponse response) {
List<ReaderContentGMV> readerContentGMVList=bookMapper.getRcGMV();
//生成Excel
exportExcel.exportExcel(new String[]{"序号","图书ID","图书名称","图书类别","出版社","编辑ID","编辑名称","读者圈GMV","读者圈GMV占比","读者圈GMV/印册量","内容GMV","内容GMV占比","内容GMV/印册量","印册量","产生的GMV","产生的GMV/印册量"},
readerContentGMVList,"2020年产生GMV的书(到202004)-包括读者圈和内容GMV明细表",response);
}
}
package com.feng.su.utils;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.xssf.streaming.SXSSFCell;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Iterator;
/**
* 生成Excel工具类
* headers:表头
* dataset:javabean集合
* fileName:生成的Excel名称
* response:将excel表以字节流的形式返回给前端
* @param <T>
*/
@Component("exportExcel")
public class ExportExcelXSSFUtils<T> {
public void exportExcel(String[] headers, Collection<T> dataset, String fileName, HttpServletResponse response) {
// 声明一个工作薄
SXSSFWorkbook workbook = new SXSSFWorkbook();
// 生成一个表格
SXSSFSheet sheet = workbook.createSheet(fileName);
//样式对象
CellStyle style=workbook.createCellStyle();
// 设置表格默认列宽度为15个字节
sheet.setDefaultColumnWidth(15);
// 产生表格标题行
SXSSFRow row = sheet.createRow(0);
row.setHeightInPoints(30);//设置行高
for (int i = 0; i < headers.length; i++) {
SXSSFCell cell=row.createCell(i);
//设置背景
style.setFillBackgroundColor((short)13);
// style.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
//设置字体
//XSSFFont font2 = workbook.createFont();
//font2.setFontName("仿宋_GB2312");
// font2.setBoldweight(XSSFFont.);//粗体显示
//font2.setFontHeightInPoints((short) 12); //字体大小
//font2.setColor(XSSFColor.toXSSFColor(c).index);//设置字体颜色
//style.setFont(font2);//选择需要用到的字体格式
XSSFRichTextString text = new XSSFRichTextString(headers[i]);
cell.setCellStyle(style);
cell.setCellValue(text);
}
try {
// 遍历集合数据,产生数据行
Iterator<T> it = dataset.iterator();
int index = 0;
while (it.hasNext()) {
index++;
row = sheet.createRow(index);
T t = (T) it.next();
// 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值
Field[] fields = t.getClass().getDeclaredFields();
for (int i = 0; i < headers.length; i++) {
SXSSFCell cell = row.createCell(i);
Field field = fields[i];
String fieldName = field.getName();
String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
Class tCls = t.getClass();
Method getMethod = tCls.getMethod(getMethodName, new Class[] {});
Object value = getMethod.invoke(t, new Object[] {});
// 判断值的类型后进行强制类型转换
String textValue = null;
// 其它数据类型都当作字符串简单处理
if(value != null && value != ""){
textValue = value.toString();
}else{
textValue=String.valueOf(index);
}
if (textValue != null) {
XSSFRichTextString richString = new XSSFRichTextString(textValue);
cell.setCellValue(richString);
}
}
}
getExportedFile(workbook, fileName,response);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* 方法说明: 指定路径下生成EXCEL文件
* @return
*/
public void getExportedFile(SXSSFWorkbook workbook, String name, HttpServletResponse response) throws Exception {
System.out.println("name:"+name);
BufferedOutputStream fos = null;
try {
String fileName = name + ".xlsx";
response.setContentType("application/msdownload");
response.setHeader("Content-disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"),"ISO8859-1"));
response.flushBuffer();
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("ok");
}
}
}
package com.feng.su.utils;
import org.springframework.stereotype.Component;
/**
* 脱敏
*/
@Component("markUtils")
public class MarkUtils {
public static String toMarkBookName(String source){
if(source == null) {
return "";
}
if(source.length() == 1) {
return source;
}
int cutLength = 1;
if(source.length() > 9) {
cutLength = 2;
}
return source.substring(0,cutLength) + "*" + source.substring(source.length() - cutLength - 1, source.length() - 1);
}
public static String toMarkAgentName(String name){
if(name==null)
return "";
if(name.length()==2)
return "*"+name.substring(1);
if(name.length()==3)
return name.substring(0,1)+"*"+name.substring(2);
if(name.length()==4)
return name.substring(0,1)+"*"+name.substring(3);
return "";
}
}
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://116.62.119.190:33306/readercenter
driver-class-name: com.mysql.jdbc.Driver
username: bi110
password: lgsc123
#url: jdbc:mysql://127.0.0.1:3306/spring_test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
#driver-class-name: com.mysql.jdbc.Driver
#username: root
#password: Cpic1234
servlet:
multipart:
# 最大文件大小。值可以使用后缀“MB”或“KB”。指示兆字节或千字节大小。
max-file-size: 20MB
# # 最大请求大小可以是mb也可以是kb
max-request-size: 200MB
mybatis:
mapper-locations: classpath:mapping/*Mapper.xml
type-aliases-package: com.feng.su.entity
spring:
profiles:
active: dev
\ No newline at end of file
<?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.feng.su.mapper.IBookMapper">
<select id="getAllBook" resultType="com.feng.su.entity.Book">
SELECT a.book_id,
CASE
WHEN length(trim(a.book_name))>60 THEN
concat(substr(trim(a.book_name), 1,4),'*',substr(trim(a.book_name), -4))
WHEN length(trim(a.book_name))>42 THEN
concat(substr(trim(a.book_name),1,2),'*',substr(trim(a.book_name),-2))
WHEN length(trim(a.book_name))>21 THEN
concat(substr(trim(a.book_name), 1,2),'*',substr(trim(a.book_name), -2))
ELSE
concat(substr(trim(a.book_name), 1,1),'*',substr(trim(a.book_name), -1))
END AS book_name,
a.book_type,
a.print_num,
a.adviser_id,
if(LENGTH(trim(b.`NAME`))>6,concat(substr(trim(b.`NAME`), 1,1),'*',substr(trim(b.`NAME`), -1)),concat('*',substr(trim(b.`NAME`), -1))) adviser_name,
c.name agent_name,
a.confirm_time
FROM 1_2020_createdbook a
LEFT JOIN 1_rays_adviser b on a.adviser_id = b.ADVISER_ID
LEFT JOIN 1_rays_agent c on a.agent_id =c.AGENT_ID
where a.confirm_time between '2020-05-01' and '2020-06-01'
ORDER BY a.confirm_time
</select>
<select id="getOrderByYear" resultType="com.feng.su.entity.ItemMoney">
select year,month,sum(gmv) as gmv,sum(count) as count from 2018_order_book GROUP BY year,month union SELECT year,month,sum(gmv) as gmv,sum(count) as count from 2019_order_book GROUP BY year,month union SELECT year,month,sum(gmv) as gmv,sum(count) as count from 2020_order_book GROUP BY year,month order by year,month
</select>
<select id="getBalance" resultType="com.feng.su.entity.FourBalance">
SELECT
a.`year` ,
a.month ,
a.ADVISER_ID ,
if(LENGTH(trim(b.`NAME`))>6,concat(substr(trim(b.`NAME`), 1,1),'*',substr(trim(b.`NAME`), -1)),concat('*',substr(trim(b.`NAME`), -1))) adviser_name,
a.bianji adviser_fee,
a.zuozhe author_fee,
a.yanfa develop_fee,
a.hongbang red_fee,
a.total total_fee,
c.name agent_name from (
SELECT
ADVISER_ID,
FLOOR((report_time_id-27)/12) + 2018 year,
(report_time_id-27)%12 + 1 month,
report_time_id,
sum(IF(cost_type = 1, redpack_money, 0)) bianji,
sum(IF(cost_type = 2, redpack_money, 0)) zuozhe,
sum(IF(cost_type = 3, redpack_money, 0)) hongbang,
sum(IF(cost_type = 5, redpack_money, 0)) yanfa,
sum(redpack_money) total
from 1_finance_adviser_cost
WHERE cost_type in (1,2,3,5) and report_time_id =55
GROUP BY ADVISER_ID, report_time_id
ORDER BY report_time_id
) a
LEFT JOIN 1_rays_adviser b on a.ADVISER_ID = b.ADVISER_ID
LEFT JOIN 1_rays_agent c on b.AGENT_ID = c.AGENT_ID
</select>
<select id="getBookTypeGMV" resultType="com.feng.su.entity.BookTypeGMV">
select
f.TYPE_NAME book_type,
a.gmv reader_gmv,
CONCAT(TRUNCATE(a.gmv/d.gmv*100,2),'%') reader_gmv_percent,
b.gmv-a.gmv content_gmv,
CONCAT(TRUNCATE((b.gmv-a.gmv)/d.gmv*100,2),'%') content_gmv_percent,
b.bookcounts book_count,
ifnull(c.printnum,0) print_num
from (
select book_type_id ,sum(gmv)gmv from 2020_order_group_book a left join 1_rays_book b on a.book_id=b.book_id
where a.book_id>0 and (year=2020 and month=5)
group by b.book_type_id
)a left join (
select book_type_id,sum(gmv)gmv,count(DISTINCT a.book_id) bookcounts from 2020_order_book a left join 1_rays_book b on a.book_id=b.book_id
where a.book_id>0 and (year=2020 and month=5)
group by b.book_type_id)
b on a.book_type_id =b.book_type_id
left join(
select book_type_id ,sum(a.print_num) printnum from 2020_book_print_tmp_final a left join 1_rays_book b on a.book_id=b.book_id
where a.book_id in(select book_id from 2020_order_book where (year=2020 and month=5) )
group by b.book_type_id
)c on a.book_type_id=c.book_type_id
LEFT JOIN 1_rays_book_type f on a.book_type_id = f.id
,(select sum(gmv)gmv from 2020_order_book where (year=2020 and month=5) )d
</select>
<select id="getGMVBook" resultType="com.feng.su.entity.GMVBook">
select b.book_id,
CASE
WHEN length(trim(book_name))>60 THEN
concat(substr(trim(book_name), 1,4),'*',substr(trim(book_name), -4))
WHEN length(trim(book_name))>42 THEN
concat(substr(trim(book_name), 1,2),'*',substr(trim(book_name), -2))
WHEN length(trim(book_name))>21 THEN
concat(substr(trim(book_name), 1,2),'*',substr(trim(book_name), -2))
ELSE
concat(substr(trim(book_name), 1,1),'*',substr(trim(book_name), -1))
END AS book_name,
f.TYPE_NAME book_type,
ifnull(e.PRINT_NUM,b.PRINT_NUM) print_num,
d.`NAME` agent_name,
c.adviser_id adviser_id,
if(LENGTH(trim(c.`NAME`))>6,concat(substr(trim(c.`NAME`), 1,1),'*',substr(trim(c.`NAME`), -1)),concat('*',substr(trim(c.`NAME`), -1))) adviser_name,
a.gmv
from (
SELECT sum(gmv) gmv, book_id, ADVISER_ID from 2020_order_book where book_id > 0 and
(year = 2020 and month=5)
GROUP BY book_id ORDER BY gmv desc
) a
LEFT JOIN 1_rays_book b on a.book_id = b.book_id
LEFT JOIN 1_rays_adviser c on b.ADVISER_ID = c.ADVISER_ID
LEFT JOIN 1_rays_agent d on c.AGENT_ID = d.AGENT_ID
LEFT JOIN (
SELECT book_id, sum(print_num) print_num from 2020_book_print_num GROUP BY book_id
) e on a.book_id = e.book_id
LEFT JOIN 1_rays_book_type f on b.book_type_id = f.id
order by a.gmv desc;
</select>
<select id="getProGMV" resultType="com.feng.su.entity.ProductGMV">
SELECT g.pro_type_id , t.TYPE_NAME , round(sum(gmv) * 100 /425601368.41 , 2) rate , min(min_price) min_price , max(max_price) max_price
FROM 2020_pro_type_gmv g LEFT JOIN 1_rays_product_type t
ON g.pro_type_id = t.ID
WHERE (g.year=2020 and g.month =5)
GROUP BY pro_type_id ORDER BY rate DESC;
</select>
<select id="getRcGMV" resultType="com.feng.su.entity.ReaderContentGMV">
SELECT
b.book_id ,
CASE
WHEN length(trim(b.book_name))>60 THEN
concat(substr(trim(b.book_name), 1,4),'*',substr(trim(b.book_name), -4))
WHEN length(trim(b.book_name))>42 THEN
concat(substr(trim(b.book_name),1,2),'*',substr(trim(b.book_name),-2))
WHEN length(trim(b.book_name))>21 THEN
concat(substr(trim(b.book_name), 1,2),'*',substr(trim(b.book_name), -2))
ELSE
concat(substr(trim(b.book_name), 1,1),'*',substr(trim(b.book_name), -1))
END AS book_name,
f.TYPE_NAME book_type,
d.`NAME` agent_name,
c.adviser_id ,
if(LENGTH(trim(c.`NAME`))>6,concat(substr(trim(c.`NAME`), 1,1),'*',substr(trim(c.`NAME`), -1)),concat('*',substr(trim(c.`NAME`), -1))) adviser_name,
IFNULL(f.groupgvm,0) reader_gmv,
CONCAT(TRUNCATE(IFNULL(f.groupgvm,0)/a.gmv*100,2),'%') reader_gmv_rate,
ifnull(TRUNCATE(IFNULL(f.groupgvm,0)/ if(IFNULL(g.PRINT_NUM,0)=0, b.print_num,IFNULL(g.PRINT_NUM,0) ),2),0) as reader_gmv_print_num,
(a.gmv-IFNULL(f.groupgvm,0)) content_gmv,
CONCAT(TRUNCATE((a.gmv-IFNULL(f.groupgvm,0))/a.gmv*100,2),'%') content_gmv_rate,
ifnull(TRUNCATE((a.gmv-IFNULL(f.groupgvm,0))/ if(IFNULL(g.PRINT_NUM,0)=0, b.print_num,IFNULL(g.PRINT_NUM,0) ),2),0) as content_gmv_print_num,
if(IFNULL(g.PRINT_NUM,0)=0, b.print_num,(IFNULL(g.PRINT_NUM,0) ) ) print_num,
a.gmv ,
ifnull(TRUNCATE(a.gmv/ if((IFNULL(g.PRINT_NUM,0))=0, b.print_num,(IFNULL(g.PRINT_NUM,0) ) ),2),0) as gmv_print_num
from (
SELECT sum(gmv) gmv, book_id, ADVISER_ID from 2020_order_book where book_id > 0 and (year=2019 or month&lt;6) GROUP BY book_id ORDER BY gmv desc
) a
LEFT JOIN 1_rays_book b on a.book_id = b.book_id and b.IS_MAIN_EDITOR = 1
LEFT JOIN 1_rays_adviser c on b.ADVISER_ID = c.ADVISER_ID
LEFT JOIN 1_rays_agent d on c.AGENT_ID = d.AGENT_ID
LEFT JOIN (
SELECT book_id, sum(print_num) print_num from 2020_book_print_tmp_final GROUP BY book_id
) g on a.book_id = g.book_id
left join
(select book_id,sum(gmv)groupgvm from 2020_order_group_book where (year=2019 or month&lt;6) group by book_id)f on a.book_id = f.book_id
LEFT JOIN 1_rays_book_type f on b.book_type_id = f.id
order by a.gmv desc;
</select>
</mapper>
\ No newline at end of file
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