Commit fe636ea3 by 一只苏

提交分页Rasy

parent 7eabc5e5
.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>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.0.5.RELEASE</version>
</parent>
<groupId>org.example</groupId>
<artifactId>Rasy</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.21</version>
</dependency>
</dependencies>
</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 RasyApplication {
public static void main(String[] args) {
SpringApplication.run(RasyApplication.class,args);
}
}
package com.feng.su.constant;
/**
* EXCEL常量类
*/
public class ExcelConstant {
/**
* 每个sheet存储的记录数 100W
*/
public static final Integer PER_SHEET_ROW_COUNT = 1000000;
/**
* 每次向EXCEL写入的记录数(查询每页数据大小) 20W
*/
public static final Integer PER_WRITE_ROW_COUNT = 200000;
/**
* 每个sheet的写入次数 5
*/
public static final Integer PER_SHEET_WRITE_COUNT = PER_SHEET_ROW_COUNT / PER_WRITE_ROW_COUNT;
}
package com.feng.su.controller;
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;
/**
* book控制类
*/
@RestController
@RequestMapping(value="/book")
public class BookController {
@Autowired
private IBookService bookService;
/**
* 查询做的书籍信息
* @param response
*/
@RequestMapping("/getBook")
public void getAllBook(HttpServletResponse response) throws Exception{
bookService.getAllBook(response);
}
/**
* 查询订单金额表
* @param response
*/
@RequestMapping("/getItem")
public void getItemByYear(HttpServletResponse response)throws Exception{
bookService.getOrderByYear(response);
}
/**
* 编辑支出四项明细
* @param response
*/
@RequestMapping("/getBalance")
public void getBalance(HttpServletResponse response)throws Exception{
bookService.getBalance(response);
}
/**
* 图书分类以及读者圈和内容占比
* @param response
*/
@RequestMapping("/getGMVPercent")
public void getBookTypeGMV(HttpServletResponse response)throws Exception{
bookService.getBookTypeGMV(response);
}
/**
* 产生GMV的书
* @param response
*/
@RequestMapping("/getGMVBook")
public void getGMVBook(HttpServletResponse response)throws Exception{
bookService.getGMVBook(response);
}
/**
* 商品类型gmv占比排行
* @param response
*/
@RequestMapping("/getProductGMV")
public void getProGMV(HttpServletResponse response)throws Exception{
bookService.getProGMV(response);
}
/**
* 读者圈和内容GMV明细表
* @param response
* @return
*/
@RequestMapping("/getRcGMV")
public void getRcGMV(HttpServletResponse response)throws Exception{
bookService.getRcGMV(response);
}
/**
* 获取订单
* @param response
* @return
*/
@RequestMapping("/getOrderDetail")
public void getOrderDetail(HttpServletResponse response)throws Exception{
bookService.getOrderDetail(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;//图书确认时间
}
package com.feng.su.entity;
import lombok.Data;
/**
* 图书分类以及读者圈和内容占比
*/
@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;
/**
* 产生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 lombok.Data;
@Data
public class ItemMoney {
private Integer year;
private Integer month;
private String gmv;
private Integer count;
}
package com.feng.su.entity;
import lombok.Data;
@Data
public class Order {
private Integer id;
private String order_num;
private String openid;
private String pro_name;
private Integer pro_type_id;
private Integer adviser_id;
private Integer agent_id;
private String price;
private Integer count;
private String wx_pay_num;
private String pay_time;
private String submit_time;
private Integer book_id;
private Integer pro_id;
private Integer is_fund;
private Integer data_source;
private Integer main_adviser_id;
private Integer specification_id;
private Integer pay_time_m;
}
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.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface IBookMapper {
/**
* 获取新增书籍信息
* @return
*/
public List<Book> getAllBook(@Param(value="startIndex")Integer startIndex,@Param(value="pageSize") Integer pageSize);
/**
* 获取做书的数量
* @return
*/
public Integer getBookCount();
/**
* 获取订单金额信息
* @return
*/
public List<ItemMoney> getOrderByYear(@Param(value="startIndex")Integer startIndex,@Param(value="pageSize") Integer pageSize);
/**
* 获取订单金额信息数量
* @return
*/
public Integer getOrderByYearCount();
/**
* 按月编辑四项支出明细
* @return
*/
public List<FourBalance> getBalance(@Param(value="startIndex")Integer startIndex,@Param(value="pageSize") Integer pageSize);
/**
* 按月编辑四项支出明细数量
* @return
*/
public Integer getBalanceCount();
/**
* 图书分类以及读者圈和内容占比
* @return
*/
public List<BookTypeGMV> getBookTypeGMV(@Param(value="startIndex")Integer startIndex,@Param(value="pageSize") Integer pageSize);
/**
* 图书分类以及读者圈和内容占比数量
* @return
*/
public Integer getBookTypeGMVCount();
/**
* 产生GMV的书
*/
public List<GMVBook> getGMVBook(@Param(value="startIndex")Integer startIndex,@Param(value="pageSize") Integer pageSize);
/**
* 产生GMV的书的数量
*/
public Integer getGMVBookCount();
/**
* 商品类型gmv占比排行
* @return
*/
public List<ProductGMV> getProGMV(@Param(value="startIndex")Integer startIndex,@Param(value="pageSize") Integer pageSize);
/**
* 商品类型gmv占比排行的数量
* @return
*/
public Integer getProGMVCount();
/**
* 产生GMV的书-包括读者圈和内容GMV明细表
* @return
*/
public List<ReaderContentGMV> getRcGMV(@Param(value="startIndex")Integer startIndex,@Param(value="pageSize") Integer pageSize);
/**
* 产生GMV的书-包括读者圈和内容GMV明细表的数量
* @return
*/
public Integer getRcGMVCount();
/**
* 查询订单详情
* @return
*/
public List<Order> getOrderDetail(@Param(value="startIndex")Integer startIndex,@Param(value="pageSize") Integer pageSize);
/**
* 查询订单详情数量
* @return
*/
public Integer getOrderDetailCount();
}
package com.feng.su.service;
import javax.servlet.http.HttpServletResponse;
public interface IBookService {
void getAllBook(HttpServletResponse response) throws Exception;
void getOrderByYear(HttpServletResponse response)throws Exception;
void getBalance(HttpServletResponse response)throws Exception;
void getBookTypeGMV(HttpServletResponse response)throws Exception;
void getGMVBook(HttpServletResponse response)throws Exception;
void getProGMV(HttpServletResponse response)throws Exception;
void getRcGMV(HttpServletResponse response)throws Exception;
void getOrderDetail(HttpServletResponse response)throws Exception;
}
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.util.*;
import com.github.pagehelper.PageHelper;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
@Service
public class BookServiceImpl implements IBookService {
private final static Logger logger = LoggerFactory.getLogger(PoiUtil.class);
@Autowired
private IBookMapper bookMapper;
@Autowired
private ExcelUtil excelUtil;
/**
* 获取做的书籍信息
* @param response
* @return
*/
@Override
public void getAllBook(HttpServletResponse response) throws Exception{
//总记录数
Integer totalRowCount=this.bookMapper.getBookCount();
//导出EXCEL文件名称
String fileName="2020年做的书籍信息";
//标题
String[] titiles={"序号","图书ID","图书名称","图书类型","印册量","编辑ID","编辑名称","出版社名称","图书确认时间"};
//开始导入
PoiUtil.exportExcelToWebsite(response, totalRowCount, fileName, titiles, new WriteExcelDataDelegated() {
@Override
public void writeExcelData(SXSSFSheet eachSheet, Integer startRowCount, Integer endRowCount, Integer currentPage, Integer pageSize) throws Exception {
List<Book> bookList=bookMapper.getAllBook(startRowCount-1,pageSize);
if(!CollectionUtils.isEmpty(bookList)){
for (int i = startRowCount; i <= endRowCount; i++) {
SXSSFRow eachDataRow = eachSheet.createRow(i);
if ((i - startRowCount) < bookList.size()) {
Book book = bookList.get(i - startRowCount);
// --------- 将每一条记录写入excel -----------------------
excelUtil.convertBean(titiles,book,eachDataRow,i);
}
}
}
bookList.clear();
}
});
}
/**
* 获取订单金额信息
* @param response
* @return
*/
@Override
public void getOrderByYear(HttpServletResponse response) throws Exception{
//总记录数
Integer totalRowCount=this.bookMapper.getBookCount();
//导出EXCEL文件名称
String fileName="订单金额信息";
//标题
String[] titiles={"年(订单生成年份)","月","gmv","订单量"};
//开始导入
PoiUtil.exportExcelToWebsite(response, totalRowCount, fileName, titiles, new WriteExcelDataDelegated() {
@Override
public void writeExcelData(SXSSFSheet eachSheet, Integer startRowCount, Integer endRowCount, Integer currentPage, Integer pageSize) throws Exception {
List<ItemMoney> itemMoneyList=bookMapper.getOrderByYear(startRowCount-1,pageSize);
if(!CollectionUtils.isEmpty(itemMoneyList)){
for (int i = startRowCount; i <= endRowCount; i++) {
SXSSFRow eachDataRow = eachSheet.createRow(i);
if ((i - startRowCount) < itemMoneyList.size()) {
ItemMoney itemMoney = itemMoneyList.get(i - startRowCount);
// --------- 将每一条记录写入excel -----------------------
excelUtil.convertBean(titiles,itemMoney,eachDataRow,i);
}
}
itemMoneyList.clear();
}
}
});
}
@Override
public void getBalance(HttpServletResponse response) throws Exception{
//总记录数
Integer totalRowCount=this.bookMapper.getBalanceCount();
//导出EXCEL文件名称
String fileName="编辑四项费用明细";
//标题
String[] titiles={"年","月","编辑ID","编辑名称","编辑费用","作者费用","研发费用","红榜任务","费用合计","出版社名称"};
//开始导入
PoiUtil.exportExcelToWebsite(response, totalRowCount, fileName, titiles, new WriteExcelDataDelegated() {
@Override
public void writeExcelData(SXSSFSheet eachSheet, Integer startRowCount, Integer endRowCount, Integer currentPage, Integer pageSize) throws Exception {
List<FourBalance> fourBalanceList=bookMapper.getBalance(startRowCount-1,pageSize);
if(!CollectionUtils.isEmpty(fourBalanceList)){
for (int i = startRowCount; i <= endRowCount; i++) {
SXSSFRow eachDataRow = eachSheet.createRow(i);
if ((i - startRowCount) < fourBalanceList.size()) {
FourBalance fourBalance = fourBalanceList.get(i - startRowCount);
// --------- 将每一条记录写入excel -----------------------
excelUtil.convertBean(titiles,fourBalance,eachDataRow,i);
}
}
fourBalanceList.clear();
}
}
});
}
@Override
public void getBookTypeGMV(HttpServletResponse response) throws Exception{
//总记录数
Integer totalRowCount=this.bookMapper.getBookTypeGMVCount();
//导出EXCEL文件名称
String fileName="图书类型GMV";
//标题
String[] titiles={"图书类型","读者圈GMV","读者圈GMV占比","内容GMV","内容GMV占比","图书数量","印册量"};
//开始导入
PoiUtil.exportExcelToWebsite(response, totalRowCount, fileName, titiles, new WriteExcelDataDelegated() {
@Override
public void writeExcelData(SXSSFSheet eachSheet, Integer startRowCount, Integer endRowCount, Integer currentPage, Integer pageSize) throws Exception {
List<BookTypeGMV> bookTypeGMVList=bookMapper.getBookTypeGMV(startRowCount-1,pageSize);
if(!CollectionUtils.isEmpty(bookTypeGMVList)){
for (int i = startRowCount; i <= endRowCount; i++) {
SXSSFRow eachDataRow = eachSheet.createRow(i);
if ((i - startRowCount) < bookTypeGMVList.size()) {
BookTypeGMV bookTypeGMV = bookTypeGMVList.get(i - startRowCount);
// --------- 将每一条记录写入excel -----------------------
excelUtil.convertBean(titiles,bookTypeGMV,eachDataRow,i);
}
}
bookTypeGMVList.clear();
}
}
});
}
/**
* 产生GMV的书
* @param response
* @return
*/
@Override
public void getGMVBook(HttpServletResponse response) throws Exception{
//总记录数
Integer totalRowCount=this.bookMapper.getGMVBookCount();
//导出EXCEL文件名称
String fileName="2020年产生GMV的书(到202004)";
//标题
String[] titiles={"序号","图书ID","图书名称","图书类别","印册量","出版社","编辑ID","编辑名称","产生的GMV"};
//开始导入
PoiUtil.exportExcelToWebsite(response, totalRowCount, fileName, titiles, new WriteExcelDataDelegated() {
@Override
public void writeExcelData(SXSSFSheet eachSheet, Integer startRowCount, Integer endRowCount, Integer currentPage, Integer pageSize) throws Exception {
List<GMVBook> gmvBookList=bookMapper.getGMVBook(startRowCount-1,pageSize);
if(!CollectionUtils.isEmpty(gmvBookList)){
for (int i = startRowCount; i <= endRowCount; i++) {
SXSSFRow eachDataRow = eachSheet.createRow(i);
if ((i - startRowCount) < gmvBookList.size()) {
GMVBook gMVBook = gmvBookList.get(i - startRowCount);
// --------- 将每一条记录写入excel -----------------------
excelUtil.convertBean(titiles,gMVBook,eachDataRow,i);
}
}
gmvBookList.clear();
}
}
});
}
@Override
public void getProGMV(HttpServletResponse response) throws Exception{
//总记录数
Integer totalRowCount=this.bookMapper.getProGMVCount();
//导出EXCEL文件名称
String fileName="2020年商品类型gmv占比排行(到202004)";
//标题
String[] titiles={"序号","商品类型ID","商品类型名称","占比(%)","最低价格(元)","最高价格(元)"};
//开始导入
PoiUtil.exportExcelToWebsite(response, totalRowCount, fileName, titiles, new WriteExcelDataDelegated() {
@Override
public void writeExcelData(SXSSFSheet eachSheet, Integer startRowCount, Integer endRowCount, Integer currentPage, Integer pageSize) throws Exception {
List<ProductGMV> productGMVList=bookMapper.getProGMV(startRowCount-1,pageSize);
if(!CollectionUtils.isEmpty(productGMVList)){
for (int i = startRowCount; i <= endRowCount; i++) {
SXSSFRow eachDataRow = eachSheet.createRow(i);
if ((i - startRowCount) < productGMVList.size()) {
ProductGMV productGMV = productGMVList.get(i - startRowCount);
// --------- 将每一条记录写入excel -----------------------
excelUtil.convertBean(titiles,productGMV,eachDataRow,i);
}
}
productGMVList.clear();
}
}
});
}
@Override
public void getRcGMV(HttpServletResponse response) throws Exception{
//总记录数
Integer totalRowCount=this.bookMapper.getRcGMVCount();
//导出EXCEL文件名称
String fileName="2020年产生GMV的书(到202004)-包括读者圈和内容GMV明细表";
//标题
String[] titiles={"序号","图书ID","图书名称","图书类别","出版社","编辑ID","编辑名称","读者圈GMV","读者圈GMV占比","读者圈GMV/印册量","内容GMV","内容GMV占比","内容GMV/印册量","印册量","产生的GMV","产生的GMV/印册量"};
//开始导入
PoiUtil.exportExcelToWebsite(response, totalRowCount, fileName, titiles, new WriteExcelDataDelegated() {
@Override
public void writeExcelData(SXSSFSheet eachSheet, Integer startRowCount, Integer endRowCount, Integer currentPage, Integer pageSize) throws Exception {
List<ReaderContentGMV> readerContentGMVList=bookMapper.getRcGMV(startRowCount-1,pageSize);
if(!CollectionUtils.isEmpty(readerContentGMVList)){
for (int i = startRowCount; i <= endRowCount; i++) {
SXSSFRow eachDataRow = eachSheet.createRow(i);
if ((i - startRowCount) < readerContentGMVList.size()) {
ReaderContentGMV readerContentGMV = readerContentGMVList.get(i - startRowCount);
// --------- 将每一条记录写入excel -----------------------
excelUtil.convertBean(titiles,readerContentGMV,eachDataRow,i);
}
}
readerContentGMVList.clear();
}
}
});
}
@Override
public void getOrderDetail(HttpServletResponse response) throws Exception{
//总记录数
Integer totalRowCount=this.bookMapper.getOrderDetailCount();
logger.info("订单总数:" + totalRowCount+" "+DateUtil.formatDate(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS));
//导出EXCEL文件名称
String fileName="订单详情表";
//标题
String[] titiles={"id","order_num","openid","pro_name","pro_type_id","adviser_id","agent_id","price","count","wx_pay_num","pay_time","submit_time","book_id","pro_id","id_fund","data_source","main_adviser_id","specification_id","pay_time_m"};
//开始导入
PoiUtil.exportExcelToWebsite(response, totalRowCount, fileName, titiles, new WriteExcelDataDelegated() {
@Override
public void writeExcelData(SXSSFSheet eachSheet, Integer startRowCount, Integer endRowCount, Integer currentPage, Integer pageSize) throws Exception {
List<Order> orderList=bookMapper.getOrderDetail(startRowCount-1,pageSize);
logger.info("每次查询的数量:" + orderList.size()+" "+DateUtil.formatDate(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS));
if(!CollectionUtils.isEmpty(orderList)){
for (int i = startRowCount; i <= endRowCount; i++) {
SXSSFRow eachDataRow = eachSheet.createRow(i);
if ((i - startRowCount) < orderList.size()) {
Order order = orderList.get(i - startRowCount);
// --------- 将每一条记录写入excel -----------------------
excelUtil.convertBean(titiles,order,eachDataRow,i);
}
}
orderList.clear();
}
}
});
}
}
package com.feng.su.util;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 日期工具类
*/
public class DateUtil {
public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
/**
* 将日期转换为字符串
*
* @param date DATE日期
* @param format 转换格式
* @return 字符串日期
*/
public static String formatDate(Date date, String format) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.format(date);
}
}
package com.feng.su.util;
import org.apache.poi.xssf.streaming.SXSSFCell;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@Component
public class ExcelUtil <T>{
/**
* 将bean属性封装到每一行
* @param headers 表头
* @param t
* @param row 当前行对象
* @param rowNumber 当前行数
* @throws Exception
*/
public void convertBean(String[]headers, T t, SXSSFRow row,Integer rowNumber)throws Exception{
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(rowNumber);
}
if (textValue != null) {
XSSFRichTextString richString = new XSSFRichTextString(textValue);
cell.setCellValue(richString);
}
}
}
}
package com.feng.su.util;
import java.util.List;
/**
* 用于分页的工具类
* @param <T>
*/
public class Pager<T> {
// 当前页
private Long currentNo;
// 单页显示数据条数
private Long pageSize;
// 总的数据条数
private Long totalRecord;
// 总页数
private Long totalPage;
// 开始索引
private Long startIndex;
// 分页显示
private Long start;
private Long end;
// 数据集合
private List<T> dataList;
/**
*
* @param currentNo
* 当前页
* @param pageSize
* 单页显示数据条数
* @param totalRecord
* 总的数据条数
*/
public Pager(Long currentNo, Long pageSize, Long totalRecord)
{
this.currentNo = currentNo;
this.pageSize = pageSize;
this.totalRecord = totalRecord;
// 获取总页数
if (totalRecord % pageSize == 0)
{
this.totalPage = totalRecord / pageSize;
} else
{
this.totalPage = totalRecord / pageSize + 1;
}
this.startIndex = (currentNo - 1) * pageSize;
this.start = 1L;
this.end = 5L;
if (totalPage <= 5)
{
this.end = this.totalPage;
} else
{
this.start = currentNo - 2;
this.end = currentNo + 2;
if (start < 0)
{
start = 1L;
end = 5L;
}
if (end > this.totalPage)
{
this.end = totalPage;
this.start = end - 5;
}
}
}
}
package com.feng.su.util;
import com.feng.su.constant.ExcelConstant;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
/**
* POI工具类
*/
public class PoiUtil {
private final static Logger logger = LoggerFactory.getLogger(PoiUtil.class);
/**
* 初始化EXCEL(sheet个数和标题)
*
* @param totalRowCount 总记录数
* @param titles 标题集合
* @return XSSFWorkbook对象
*/
public static SXSSFWorkbook initExcel(Integer totalRowCount, String[] titles) {
// 在内存当中保持 100 行 , 超过的数据放到硬盘中在内存当中保持 100 行 , 超过的数据放到硬盘中
SXSSFWorkbook wb = new SXSSFWorkbook(100);
Integer sheetCount = ((totalRowCount % ExcelConstant.PER_SHEET_ROW_COUNT == 0) ?
(totalRowCount / ExcelConstant.PER_SHEET_ROW_COUNT) : (totalRowCount / ExcelConstant.PER_SHEET_ROW_COUNT + 1));
// 根据总记录数创建sheet并分配标题
for (int i = 0; i < sheetCount; i++) {
SXSSFSheet sheet = wb.createSheet("sheet" + (i + 1));
SXSSFRow headRow = sheet.createRow(0);
for (int j = 0; j < titles.length; j++) {
SXSSFCell headRowCell = headRow.createCell(j);
headRowCell.setCellValue(titles[j]);
}
}
return wb;
}
/**
* 下载EXCEL到本地指定的文件夹
*
* @param wb EXCEL对象SXSSFWorkbook
* @param exportPath 导出路径
*/
public static void downLoadExcelToLocalPath(SXSSFWorkbook wb, String exportPath) {
FileOutputStream fops = null;
try {
fops = new FileOutputStream(exportPath);
wb.write(fops);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != wb) {
try {
wb.dispose();
} catch (Exception e) {
e.printStackTrace();
}
}
if (null != fops) {
try {
fops.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* 下载EXCEL到浏览器
*
* @param wb EXCEL对象XSSFWorkbook
* @param response
* @param fileName 文件名称
* @throws IOException
*/
public static void downLoadExcelToWebsite(SXSSFWorkbook wb, HttpServletResponse response, String fileName) throws IOException {
response.setHeader("Content-disposition", "attachment; filename="
+ new String((fileName + ".xlsx").getBytes("utf-8"), "ISO8859-1"));//设置下载的文件名
OutputStream outputStream = null;
try {
outputStream = response.getOutputStream();
wb.write(outputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != wb) {
try {
wb.dispose();
} catch (Exception e) {
e.printStackTrace();
}
}
if (null != outputStream) {
try {
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* 导出Excel到本地指定路径
*
* @param totalRowCount 总记录数
* @param titles 标题
* @param exportPath 导出路径
* @param writeExcelDataDelegated 向EXCEL写数据/处理格式的委托类 自行实现
* @throws Exception
*/
public static final void exportExcelToLocalPath(Integer totalRowCount, String[] titles, String exportPath, WriteExcelDataDelegated writeExcelDataDelegated) throws Exception {
logger.info("开始导出:" + DateUtil.formatDate(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS));
// 初始化EXCEL
SXSSFWorkbook wb = PoiUtil.initExcel(totalRowCount, titles);
// 调用委托类分批写数据
int sheetCount = wb.getNumberOfSheets();
for (int i = 0; i < sheetCount; i++) {
SXSSFSheet eachSheet = wb.getSheetAt(i);
for (int j = 1; j <= ExcelConstant.PER_SHEET_WRITE_COUNT; j++) {
int currentPage = i * ExcelConstant.PER_SHEET_WRITE_COUNT + j;
int pageSize = ExcelConstant.PER_WRITE_ROW_COUNT;
int startRowCount = (j - 1) * ExcelConstant.PER_WRITE_ROW_COUNT + 1;
int endRowCount = startRowCount + pageSize - 1;
writeExcelDataDelegated.writeExcelData(eachSheet, startRowCount, endRowCount, currentPage, pageSize);
}
}
// 下载EXCEL
PoiUtil.downLoadExcelToLocalPath(wb, exportPath);
logger.info("导出完成:" + DateUtil.formatDate(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS));
}
/**
* 导出Excel到浏览器
*
* @param response
* @param totalRowCount 总记录数
* @param fileName 文件名称
* @param titles 标题
* @param writeExcelDataDelegated 向EXCEL写数据/处理格式的委托类 自行实现
* @throws Exception
*/
public static final void exportExcelToWebsite(HttpServletResponse response, Integer totalRowCount, String fileName, String[] titles, WriteExcelDataDelegated writeExcelDataDelegated) throws Exception {
logger.info("开始导出:" + DateUtil.formatDate(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS));
// 初始化EXCEL
SXSSFWorkbook wb = PoiUtil.initExcel(totalRowCount, titles);
// 调用委托类分批写数据
int sheetCount = wb.getNumberOfSheets();
for (int i = 0; i < sheetCount; i++) {
SXSSFSheet eachSheet = wb.getSheetAt(i);
for (int j = 1; j <= ExcelConstant.PER_SHEET_WRITE_COUNT; j++) {
int currentPage = i * ExcelConstant.PER_SHEET_WRITE_COUNT + j;
int pageSize = ExcelConstant.PER_WRITE_ROW_COUNT;
int startRowCount = (j - 1) * ExcelConstant.PER_WRITE_ROW_COUNT+1;
int endRowCount = startRowCount + pageSize - 1;
if(totalRowCount-(i*ExcelConstant.PER_SHEET_ROW_COUNT+ExcelConstant.PER_WRITE_ROW_COUNT*(j-1))<ExcelConstant.PER_WRITE_ROW_COUNT){
pageSize=totalRowCount-i*ExcelConstant.PER_SHEET_ROW_COUNT+ExcelConstant.PER_WRITE_ROW_COUNT*(j-1);
endRowCount=startRowCount+pageSize-1;
writeExcelDataDelegated.writeExcelData(eachSheet, startRowCount, endRowCount, currentPage, pageSize);
break;
}
writeExcelDataDelegated.writeExcelData(eachSheet, startRowCount, endRowCount, currentPage, pageSize);
}
}
// 下载EXCEL
PoiUtil.downLoadExcelToWebsite(wb, response, fileName);
logger.info("导出完成:" + DateUtil.formatDate(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS));
}
}
package com.feng.su.util;
import org.apache.poi.xssf.streaming.SXSSFSheet;
/**
* EXCEL写数据委托类
*/
public interface WriteExcelDataDelegated {
/**
* EXCEL写数据委托类 针对不同的情况自行实现
*
* @param eachSheet 指定SHEET
* @param startRowCount 开始行
* @param endRowCount 结束行
* @param currentPage 分批查询开始页
* @param pageSize 分批查询数据量
* @throws Exception
*/
public abstract void writeExcelData(SXSSFSheet eachSheet, Integer startRowCount, Integer endRowCount, Integer currentPage, Integer pageSize) throws Exception;
}
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
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
<?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 limit #{startIndex},#{pageSize}
</select>
<!--做书的数量-->
<select id="getBookCount" resultType="java.lang.Integer">
SELECT count(1)
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'
</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="getOrderByYearCount" resultType="java.lang.Integer">
select count(1) from (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) t
</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="getBalanceCount" resultType="java.lang.Integer">
SELECT
count(1) 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="getBookTypeGMVCount" resultType="java.lang.Integer">
select
count(1)
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="getGMVBookCount" resultType="java.lang.Integer">
select count(1) from (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) t;
</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="getProGMVCount" resultType="java.lang.Integer">
SELECT count(1) FROM (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) t;
</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>
<select id="getRcGMVCount" resultType="java.lang.Integer">
SELECT
COUNT (1)
from (
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) t;
</select>
<!-- 查询订单-->
<select id="getOrderDetail" resultType="com.feng.su.entity.Order">
select * from orderform_item_202005 where id>=(select id from orderform_item_202005 order by id limit #{startIndex},1) limit #{pageSize}
</select>
<select id="getOrderDetailCount" resultType="java.lang.Integer">
select count(1) from orderform_item_202005
</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