修改培训班结构
This commit is contained in:
@@ -20,10 +20,27 @@ public class TrainingToUser {
|
|||||||
|
|
||||||
private Integer trainingId;
|
private Integer trainingId;
|
||||||
|
|
||||||
private String orderSn;
|
|
||||||
|
|
||||||
private String identity;
|
private String identity;
|
||||||
|
|
||||||
|
//报名渠道 master、order
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
//金额
|
||||||
|
private BigDecimal fee;
|
||||||
|
|
||||||
|
//抵扣积分
|
||||||
|
private BigDecimal jf;
|
||||||
|
|
||||||
|
//支付方式微信、支付宝、天医币、银行、海外、赠送
|
||||||
|
private String payType;
|
||||||
|
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
//海外金额
|
||||||
|
private BigDecimal abroadFee;
|
||||||
|
|
||||||
|
private String orderSn;
|
||||||
|
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
@TableLogic
|
@TableLogic
|
||||||
@@ -31,11 +48,5 @@ public class TrainingToUser {
|
|||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private MyUserEntity user;
|
private MyUserEntity user;
|
||||||
@TableField(exist = false)
|
|
||||||
private String payMethod;
|
|
||||||
@TableField(exist = false)
|
|
||||||
private String realMoney;
|
|
||||||
@TableField(exist = false)
|
|
||||||
private String jfDeduction;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,12 +121,11 @@ public class TrainingClassServiceImpl extends ServiceImpl<TrainingClassDao, Trai
|
|||||||
trainingToUser.setTrainingId(buyOrder.getTrainingClassId());
|
trainingToUser.setTrainingId(buyOrder.getTrainingClassId());
|
||||||
trainingToUser.setUserId(buyOrder.getUserId());
|
trainingToUser.setUserId(buyOrder.getUserId());
|
||||||
trainingToUser.setOrderSn(buyOrder.getOrderSn());
|
trainingToUser.setOrderSn(buyOrder.getOrderSn());
|
||||||
String identity = buyOrder.getTrainingClassIdentity();
|
trainingToUser.setIdentity(buyOrder.getTrainingClassIdentity());
|
||||||
if (buyOrder.getTrainingClassIdentity()==null||"".equals(identity)){
|
trainingToUser.setType("订单");
|
||||||
Map<String,Object> info = getFinalPriceByUser(buyOrder.getTrainingClassId(),buyOrder.getUserId());
|
trainingToUser.setFee(buyOrder.getRealMoney());
|
||||||
identity = info.get("identity").toString()+":"+info.get("fee").toString();
|
trainingToUser.setJf(buyOrder.getRealMoney());
|
||||||
}
|
trainingToUser.setPayType("1".equals(buyOrder.getPaymentMethod())?"微信":("2".equals(buyOrder.getPaymentMethod())?"支付宝":"天医币"));
|
||||||
trainingToUser.setIdentity(identity);
|
|
||||||
trainingToUserService.save(trainingToUser);
|
trainingToUserService.save(trainingToUser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.peanut.modules.master.controller;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||||
import com.peanut.common.utils.DateUtils;
|
|
||||||
import com.peanut.common.utils.R;
|
import com.peanut.common.utils.R;
|
||||||
import com.peanut.modules.common.entity.*;
|
import com.peanut.modules.common.entity.*;
|
||||||
import com.peanut.modules.common.service.BuyOrderService;
|
import com.peanut.modules.common.service.BuyOrderService;
|
||||||
@@ -13,8 +12,8 @@ import com.peanut.modules.common.service.TrainingToUserService;
|
|||||||
import com.peanut.modules.master.service.VipBuyConfigService;
|
import com.peanut.modules.master.service.VipBuyConfigService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.util.CellRangeAddress;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@@ -115,21 +114,14 @@ public class TrainingClassController {
|
|||||||
wrapper.eq(TrainingToUser::getTrainingId,params.get("trainingId"));
|
wrapper.eq(TrainingToUser::getTrainingId,params.get("trainingId"));
|
||||||
wrapper.like(StringUtils.isNotEmpty(params.get("tel").toString()),MyUserEntity::getTel,params.get("tel"));
|
wrapper.like(StringUtils.isNotEmpty(params.get("tel").toString()),MyUserEntity::getTel,params.get("tel"));
|
||||||
if ("2".equals(params.get("createTimeSort").toString())){
|
if ("2".equals(params.get("createTimeSort").toString())){
|
||||||
wrapper.orderByAsc(TrainingToUser::getCreateTime);
|
|
||||||
}else {
|
|
||||||
wrapper.orderByDesc(TrainingToUser::getCreateTime);
|
wrapper.orderByDesc(TrainingToUser::getCreateTime);
|
||||||
|
}else {
|
||||||
|
wrapper.orderByAsc(TrainingToUser::getCreateTime);
|
||||||
}
|
}
|
||||||
Page<TrainingToUser> trainingClassUserList = trainingToUserService.page(new Page<>(
|
Page<TrainingToUser> trainingClassUserList = trainingToUserService.page(new Page<>(
|
||||||
Long.parseLong(params.get("current").toString()), Long.parseLong(params.get("limit").toString())),wrapper);
|
Long.parseLong(params.get("current").toString()), Long.parseLong(params.get("limit").toString())),wrapper);
|
||||||
for (TrainingToUser toUser:trainingClassUserList.getRecords()){
|
for (TrainingToUser toUser:trainingClassUserList.getRecords()){
|
||||||
toUser.setUser(userService.getById(toUser.getUserId()));
|
toUser.setUser(userService.getById(toUser.getUserId()));
|
||||||
if (StringUtils.isNotEmpty(toUser.getOrderSn())){
|
|
||||||
BuyOrder buyOrder = buyOrderService.getOne(new LambdaQueryWrapper<BuyOrder>()
|
|
||||||
.eq(BuyOrder::getOrderSn,toUser.getOrderSn()));
|
|
||||||
toUser.setPayMethod("1".equals(buyOrder.getPaymentMethod())?"微信":("2".equals(buyOrder.getPaymentMethod())?"支付宝":"虚拟币"));
|
|
||||||
toUser.setRealMoney(buyOrder.getRealMoney().toString());
|
|
||||||
toUser.setJfDeduction(buyOrder.getJfDeduction().toString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return R.ok().put("trainingClassUserList",trainingClassUserList);
|
return R.ok().put("trainingClassUserList",trainingClassUserList);
|
||||||
}
|
}
|
||||||
@@ -137,68 +129,151 @@ public class TrainingClassController {
|
|||||||
//导出培训班用户
|
//导出培训班用户
|
||||||
@RequestMapping("/exportTrainingClassUser")
|
@RequestMapping("/exportTrainingClassUser")
|
||||||
public void exportTrainingClassUser(HttpServletResponse response,@RequestBody Map<String,Object> params) {
|
public void exportTrainingClassUser(HttpServletResponse response,@RequestBody Map<String,Object> params) {
|
||||||
params.put("current",1);
|
XSSFWorkbook wb = new XSSFWorkbook();
|
||||||
params.put("limit",10000);
|
Sheet sheet = wb.createSheet("trainingClassUser");
|
||||||
R r = trainingClassUserList(params);
|
int i=0;
|
||||||
if ("0".equals(r.get("code").toString())){
|
//培训班标题
|
||||||
Page<TrainingToUser> trainingClassUserList = (Page<TrainingToUser>) r.get("trainingClassUserList");
|
Row titleRow = sheet.createRow(i);
|
||||||
XSSFWorkbook wb = new XSSFWorkbook();
|
String className = trainingClassService.getById(params.get("trainingId").toString()).getTitle();
|
||||||
Sheet sheet = wb.createSheet("trainingClassUser");
|
Cell cell0 = titleRow.createCell(0);
|
||||||
Row titleRow = sheet.createRow(0);
|
cell0.setCellValue(className);
|
||||||
titleRow.createCell(0).setCellValue("序号");
|
sheet.addMergedRegion(new CellRangeAddress(i, i, 0, 12));//合并单元格
|
||||||
titleRow.createCell(1).setCellValue("报名时间");
|
CellStyle cellStyle = wb.createCellStyle();
|
||||||
titleRow.createCell(2).setCellValue("订单编号");
|
cellStyle.setAlignment(HorizontalAlignment.CENTER);// 水平居中
|
||||||
titleRow.createCell(3).setCellValue("培训姓名");
|
cell0.setCellStyle(cellStyle);
|
||||||
titleRow.createCell(4).setCellValue("联系方式");
|
//空一行
|
||||||
titleRow.createCell(5).setCellValue("用户邮箱");
|
sheet.createRow(++i);
|
||||||
titleRow.createCell(6).setCellValue("用户身份");
|
//统计学员类型人数金额
|
||||||
titleRow.createCell(7).setCellValue("费用");
|
List<Map<String,Object>> list = trainingToUserService.listMaps(new MPJLambdaWrapper<TrainingToUser>()
|
||||||
titleRow.createCell(8).setCellValue("支付方式");
|
.select("""
|
||||||
titleRow.createCell(9).setCellValue("积分抵扣");
|
identity 身份,count(1) 人数,SUM(IF(pay_type='海外',abroad_fee,fee)) 总金额,
|
||||||
//序号,默认为1
|
SUM(case when pay_type = '微信' then fee else 0 end) 微信,
|
||||||
int cell = 1;
|
SUM(case when pay_type = '支付宝' then fee else 0 end) 支付宝,
|
||||||
//遍历
|
SUM(case when pay_type = '天医币' then fee else 0 end) 天医币,
|
||||||
for (TrainingToUser toUser : trainingClassUserList.getRecords()) {
|
SUM(jf) 积分,
|
||||||
Row row = sheet.createRow(cell);
|
SUM(case when pay_type = '银行' then abroad_fee else 0 end) 银行,
|
||||||
row.createCell(0).setCellValue(cell);
|
SUM(case when pay_type = '海外' then abroad_fee else 0 end) 海外
|
||||||
row.createCell(1).setCellValue(DateUtils.format(toUser.getCreateTime(),"yyyy-MM-dd HH:mm:ss"));
|
""")
|
||||||
row.createCell(2).setCellValue(toUser.getOrderSn());
|
.eq(TrainingToUser::getTrainingId,params.get("trainingId"))
|
||||||
row.createCell(3).setCellValue(toUser.getUser().getName());
|
.groupBy(TrainingToUser::getIdentity));
|
||||||
row.createCell(4).setCellValue(toUser.getUser().getTel());
|
titleRow = sheet.createRow(++i);
|
||||||
row.createCell(5).setCellValue(toUser.getUser().getEmail());
|
titleRow.createCell(2).setCellValue("人员身份");
|
||||||
String identity = "";
|
titleRow.createCell(3).setCellValue("人数");
|
||||||
String fee = "";
|
titleRow.createCell(4).setCellValue("总金额");
|
||||||
if (toUser.getIdentity().contains(":")){
|
titleRow.createCell(5).setCellValue("微信");
|
||||||
identity = toUser.getIdentity().split(":")[0];
|
titleRow.createCell(6).setCellValue("支付宝");
|
||||||
fee = toUser.getIdentity().split(":")[1];
|
titleRow.createCell(7).setCellValue("天医币");
|
||||||
}
|
titleRow.createCell(8).setCellValue("银行");
|
||||||
row.createCell(6).setCellValue(identity);
|
titleRow.createCell(9).setCellValue("海外");
|
||||||
row.createCell(7).setCellValue(fee);
|
titleRow.createCell(10).setCellValue("积分抵扣");
|
||||||
row.createCell(8).setCellValue(toUser.getPayMethod()+":"+toUser.getRealMoney());
|
for (Map<String,Object> map:list){
|
||||||
row.createCell(9).setCellValue(toUser.getJfDeduction());
|
titleRow = sheet.createRow(++i);
|
||||||
//序号自增
|
titleRow.createCell(2).setCellValue(map.get("身份").toString());
|
||||||
cell++;
|
titleRow.createCell(3).setCellValue(map.get("人数").toString());
|
||||||
}
|
titleRow.createCell(4).setCellValue(map.get("总金额").toString());
|
||||||
String fileName = "培训班用户.xlsx";
|
titleRow.createCell(5).setCellValue(map.get("微信").toString());
|
||||||
OutputStream outputStream =null;
|
titleRow.createCell(6).setCellValue(map.get("支付宝").toString());
|
||||||
|
titleRow.createCell(7).setCellValue(map.get("天医币").toString());
|
||||||
|
titleRow.createCell(8).setCellValue(map.get("银行").toString());
|
||||||
|
titleRow.createCell(9).setCellValue(map.get("海外").toString());
|
||||||
|
titleRow.createCell(10).setCellValue(map.get("积分").toString());
|
||||||
|
}
|
||||||
|
//合计
|
||||||
|
Map<String,Object> map = trainingToUserService.getMap(new MPJLambdaWrapper<TrainingToUser>()
|
||||||
|
.select("""
|
||||||
|
count(1) 人数,SUM(IF(pay_type='海外',abroad_fee,fee)) 总金额,
|
||||||
|
SUM(case when pay_type = '微信' then fee else 0 end) 微信,
|
||||||
|
SUM(case when pay_type = '支付宝' then fee else 0 end) 支付宝,
|
||||||
|
SUM(case when pay_type = '天医币' then fee else 0 end) 天医币,
|
||||||
|
SUM(jf) 积分,
|
||||||
|
SUM(case when pay_type = '银行' then fee else 0 end) 银行,
|
||||||
|
SUM(case when pay_type = '海外' then abroad_fee else 0 end) 海外,
|
||||||
|
SUM(case when pay_type = '赠送' then fee else 0 end) 赠送
|
||||||
|
""")
|
||||||
|
.eq(TrainingToUser::getTrainingId,params.get("trainingId")));
|
||||||
|
titleRow = sheet.createRow(++i);
|
||||||
|
titleRow.createCell(2).setCellValue("合计");
|
||||||
|
titleRow.createCell(3).setCellValue(map.get("人数").toString());
|
||||||
|
titleRow.createCell(4).setCellValue(map.get("总金额").toString());
|
||||||
|
titleRow.createCell(5).setCellValue(map.get("微信").toString());
|
||||||
|
titleRow.createCell(6).setCellValue(map.get("支付宝").toString());
|
||||||
|
titleRow.createCell(7).setCellValue(map.get("天医币").toString());
|
||||||
|
titleRow.createCell(8).setCellValue(map.get("银行").toString());
|
||||||
|
titleRow.createCell(9).setCellValue(map.get("海外").toString());
|
||||||
|
titleRow.createCell(10).setCellValue(map.get("赠送").toString());
|
||||||
|
titleRow.createCell(11).setCellValue(map.get("积分").toString());
|
||||||
|
//空一行
|
||||||
|
sheet.createRow(++i);
|
||||||
|
//人员明细
|
||||||
|
titleRow = sheet.createRow(++i);
|
||||||
|
titleRow.createCell(0).setCellValue("序号");
|
||||||
|
titleRow.createCell(1).setCellValue("报名时间");
|
||||||
|
titleRow.createCell(2).setCellValue("订单编号");
|
||||||
|
titleRow.createCell(3).setCellValue("培训姓名");
|
||||||
|
titleRow.createCell(4).setCellValue("联系方式");
|
||||||
|
titleRow.createCell(5).setCellValue("用户邮箱");
|
||||||
|
titleRow.createCell(6).setCellValue("用户身份");
|
||||||
|
titleRow.createCell(7).setCellValue("总金额");
|
||||||
|
titleRow.createCell(8).setCellValue("微信");
|
||||||
|
titleRow.createCell(9).setCellValue("支付宝");
|
||||||
|
titleRow.createCell(10).setCellValue("天医币");
|
||||||
|
titleRow.createCell(11).setCellValue("银行");
|
||||||
|
titleRow.createCell(12).setCellValue("海外");
|
||||||
|
titleRow.createCell(13).setCellValue("赠送");;
|
||||||
|
titleRow.createCell(14).setCellValue("积分");;
|
||||||
|
titleRow.createCell(15).setCellValue("备注");
|
||||||
|
List<Map<String,Object>> trainingToUserList = trainingToUserService.listMaps(new MPJLambdaWrapper<TrainingToUser>()
|
||||||
|
.leftJoin(MyUserEntity.class,MyUserEntity::getId,TrainingToUser::getUserId)
|
||||||
|
.select("""
|
||||||
|
t.create_time,t.order_sn,t1.name,t1.tel,t1.email,t.identity,t.fee+t.abroad_fee+t.jf total,
|
||||||
|
IF(pay_type='微信',t.fee,0) 微信,
|
||||||
|
IF(pay_type='支付宝',t.fee,0) 支付宝,
|
||||||
|
IF(pay_type='天医币',t.fee,0) 天医币,
|
||||||
|
IF(pay_type='银行',t.fee,0) 银行,
|
||||||
|
IF(pay_type='海外',t.fee,0) 海外,
|
||||||
|
IF(pay_type='赠送',t.fee,0) 赠送,t.jf,t.remark
|
||||||
|
""")
|
||||||
|
.eq(TrainingToUser::getTrainingId,params.get("trainingId"))
|
||||||
|
.orderByAsc(TrainingToUser::getCreateTime));
|
||||||
|
int no = 1;
|
||||||
|
for (Map<String,Object> toUser : trainingToUserList) {
|
||||||
|
Row row = sheet.createRow(++i);
|
||||||
|
row.createCell(0).setCellValue(no++);
|
||||||
|
row.createCell(1).setCellValue(toUser.get("create_time").toString());
|
||||||
|
row.createCell(2).setCellValue(toUser.get("order_sn").toString());
|
||||||
|
row.createCell(3).setCellValue(toUser.get("name").toString());
|
||||||
|
row.createCell(4).setCellValue(toUser.get("tel").toString());
|
||||||
|
row.createCell(5).setCellValue(toUser.get("email").toString());
|
||||||
|
row.createCell(6).setCellValue(toUser.get("identity").toString());
|
||||||
|
row.createCell(7).setCellValue(toUser.get("total").toString());
|
||||||
|
row.createCell(8).setCellValue(toUser.get("微信").toString());
|
||||||
|
row.createCell(9).setCellValue(toUser.get("支付宝").toString());
|
||||||
|
row.createCell(10).setCellValue(toUser.get("天医币").toString());
|
||||||
|
row.createCell(11).setCellValue(toUser.get("银行").toString());
|
||||||
|
row.createCell(12).setCellValue(toUser.get("海外").toString());
|
||||||
|
row.createCell(13).setCellValue(toUser.get("赠送").toString());
|
||||||
|
row.createCell(14).setCellValue(toUser.get("jf").toString());
|
||||||
|
row.createCell(15).setCellValue(toUser.get("remark").toString());
|
||||||
|
}
|
||||||
|
String fileName = className+"用户明细.xlsx";
|
||||||
|
OutputStream outputStream =null;
|
||||||
|
try {
|
||||||
|
//文件名编码格式
|
||||||
|
fileName = URLEncoder.encode(fileName,"UTF-8");
|
||||||
|
//设置ContentType请求信息格式
|
||||||
|
response.setContentType("application/vnd.ms-excel");
|
||||||
|
//设置标头
|
||||||
|
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
|
||||||
|
outputStream = response.getOutputStream();
|
||||||
|
wb.write(outputStream);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}finally {
|
||||||
try {
|
try {
|
||||||
//文件名编码格式
|
outputStream.flush();
|
||||||
fileName = URLEncoder.encode(fileName,"UTF-8");
|
outputStream.close();
|
||||||
//设置ContentType请求信息格式
|
|
||||||
response.setContentType("application/vnd.ms-excel");
|
|
||||||
//设置标头
|
|
||||||
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
|
|
||||||
outputStream = response.getOutputStream();
|
|
||||||
wb.write(outputStream);
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}finally {
|
|
||||||
try {
|
|
||||||
outputStream.flush();
|
|
||||||
outputStream.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -212,7 +287,7 @@ public class TrainingClassController {
|
|||||||
if (list.size()>0){
|
if (list.size()>0){
|
||||||
return R.error("已存在");
|
return R.error("已存在");
|
||||||
}
|
}
|
||||||
trainingToUser.setPayMethod("管理员添加");
|
trainingToUser.setType("管理员");
|
||||||
trainingToUserService.save(trainingToUser);
|
trainingToUserService.save(trainingToUser);
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user