zhangjinli 3 years ago
parent e2b0a9f72f
commit bfc0837ca5

@ -23,6 +23,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import org.apache.poi.ss.formula.functions.T;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@ -344,10 +345,10 @@ public class TaskController {
private Integer status;
@Schema(title = "月份区间")
private Integer month;
@Schema(title = "开始时间(yyyy-MM-dd HH:mm:ss)",description = "如果传入month以月份区间为条件")
@Schema(title = "开始时间(yyyy-MM-dd HH:mm:ss)", description = "如果传入month以月份区间为条件")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime beginTime;
@Schema(title = "结束时间(yyyy-MM-dd HH:mm:ss)",description = "如果传入month以月份区间为条件")
@Schema(title = "结束时间(yyyy-MM-dd HH:mm:ss)", description = "如果传入month以月份区间为条件")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
@Schema(title = "tagId数组")
@ -368,9 +369,9 @@ public class TaskController {
}
if (null != param.getMonth()) {
qw.between("t1.creatAt", LocalDateTime.now().minusMonths(param.getMonth()), LocalDateTime.now());
}else{
qw.ge(param.getBeginTime()!=null,"t1.creatAt",param.getBeginTime());
qw.le(param.getEndTime()!=null,"t1.creatAt",param.getEndTime());
} else {
qw.ge(param.getBeginTime() != null, "t1.creatAt", param.getBeginTime());
qw.le(param.getEndTime() != null, "t1.creatAt", param.getEndTime());
}
if (null != param.getKeyword()) {
qw.like("t1.title", param.getKeyword());
@ -447,20 +448,23 @@ public class TaskController {
return Result.success(taskEffect);
}
@Operation(summary = "导出excel",description = "任务成员传播效果")
@Operation(summary = "导出excel", description = "任务成员传播效果")
@GetMapping("/excel")
// @AdminTokenValid
public void excel(HttpServletResponse response,@RequestParam int taskId) throws IOException {
//这是表头
String[] arr = {"名称","年龄"};
QueryWrapper<Task> qw = new QueryWrapper<>();
qw.eq("t2.id", taskId).groupBy("t1.userId");
@AdminTokenValid
public void excel(HttpServletResponse response, @Validated @RequestBody DetTaskParam param) throws IOException {
//这是表头及格式
String[][] array ={
{"任务名称", "员工姓名","部门","播放数","点赞数","收藏数","评论数","转发数","推荐数","传播值"},
{"taskTitle", "userName","departmentName","playNumSum","commendNumSum","collectionNumSum","commentNumSum","reSendNumSum","recommendNumSum","effectResultSum"},
{"String", "String","String","int","int","int","int","int","int","int"}
};
QueryWrapper<Task> qw = new QueryWrapper<>();
qw.eq("t2.id", param.getId()).groupBy("t1.userId");
List<Map> l = taskService.taskEffectData(qw);
Workbook wb = ExcelUtil.writeToExcelByList(arr, l);
Workbook wb = ExcelUtil.writeToExcelByList(array, l);
OutputStream output = response.getOutputStream();
String fileName = "接入详情.xlsx";
String fileName = "任务传播数据.xlsx";
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
@ -506,4 +510,36 @@ public class TaskController {
}
return Result.success(iPage);
}
@Operation(summary = "导出用户线索excel", description = "用户线索")
@GetMapping("/cnExcel")
// @AdminTokenValid
public void cnExcel(HttpServletResponse response,@RequestBody CNListParam param) throws IOException {
//这是表头及格式
String[][] array ={
{"姓名", "手机号","地区","关注车型","备注","关联任务","提交人","部门"},
{"customerName", "tel","area","brandList","remarks","taskTitle","provideName","departmentName"},
{"String", "String","String","String","String","String","String","String","String","String"}
};
QueryWrapper<CustomerActionNote> qw = new QueryWrapper<>();
qw.like(param.getName() != null, "t1.customerName", param.getName());
qw.like(param.getTel() != null, "t1.tel", param.getTel());
qw.like(param.getBrand() != null, "t1.brandList", param.getBrand());
qw.like(param.getProviderName() != null, "t2.name", param.getProviderName());
qw.eq(param.getDepartmentId() != null, "t4.departmentId", param.getDepartmentId());
IPage<Map> iPage = customerActionNoteService.pageList(MybatisPlusUtil.SetNumPage(1,10000), null, qw);
List<Map> records = iPage.getRecords();
Workbook wb = ExcelUtil.writeToExcelByList(array, records);
OutputStream output = response.getOutputStream();
String fileName = "用户线索.xlsx";
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ";" + "filename*=utf-8''" + fileName);
wb.write(output);
output.close();
}
}

@ -3,11 +3,15 @@ package com.zh.project0512.controller.manage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zh.project0512.annotation.AdminCheckAuthorityAnnotation;
import com.zh.project0512.annotation.AdminTokenValid;
import com.zh.project0512.model.User;
import com.zh.project0512.model.UserAccount;
import com.zh.project0512.service.IUserAccountService;
import com.zh.project0512.service.IUserService;
import com.zh.project0512.utils.CustomUtil;
import com.zh.project0512.utils.ExcelUtil;
import com.zh.project0512.utils.MybatisPlusUtil;
import com.zh.project0512.utils.result.HttpStatusEnum;
import com.zh.project0512.utils.result.Result;
@ -15,14 +19,23 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -36,7 +49,8 @@ import java.time.LocalDateTime;
@RestController
@RequestMapping("/manage/userAccount")
public class UserAccountController {
@Value("${web.cdn}")
private String cdn;
@Autowired
private IUserAccountService userAccountService;
@ -49,7 +63,7 @@ public class UserAccountController {
private int pageSize;
@Schema(title = "用户名")
private String name;
@Schema(title = "账号状态",description = "0审核中1审核通过2审核拒绝")
@Schema(title = "账号状态", description = "0审核中1审核通过2审核拒绝")
private Integer status;
@Schema(title = "部门id")
private Integer departmentId;
@ -60,11 +74,51 @@ public class UserAccountController {
@AdminTokenValid
public Result list(@Validated @RequestBody ListUAParam param) {
QueryWrapper<UserAccount> qw = new QueryWrapper<>();
qw.eq(param.getStatus() != null,"t1.status", param.getStatus());
qw.eq(param.getName() != null,"t2.name", param.getName());
qw.eq(param.getDepartmentId() != null,"t3.departmentId", param.getDepartmentId());
qw.orderByDesc("updateAt","creatAt");
return Result.success(userAccountService.listAll(MybatisPlusUtil.SetNumPage(param.getPageNum(), param.getPageSize()),qw));
qw.eq(param.getStatus() != null, "t1.status", param.getStatus());
qw.eq(param.getName() != null, "t2.name", param.getName());
qw.eq(param.getDepartmentId() != null, "t3.departmentId", param.getDepartmentId());
qw.orderByDesc("updateAt", "creatAt");
return Result.success(userAccountService.listAll(MybatisPlusUtil.SetNumPage(param.getPageNum(), param.getPageSize()), qw));
}
@Operation(summary = "导出excel", description = "关联账号列表导出")
@GetMapping("/excel")
@AdminTokenValid
public void excel(HttpServletResponse response, @Validated @RequestBody ListUAParam param) throws IOException {
//这是表头及格式
String[][] array = {
{"申请人", "部门", "第三方平台", "昵称", "手机号", "截图"},
{"userName", "departmentName", "platform", "name", "tel", "validImg"},
{"String", "String", "String", "String", "String", "String"}
};
QueryWrapper<UserAccount> qw = new QueryWrapper<>();
qw.eq(param.getStatus() != null, "t1.status", param.getStatus());
qw.eq(param.getName() != null, "t2.name", param.getName());
qw.eq(param.getDepartmentId() != null, "t3.departmentId", param.getDepartmentId());
qw.orderByDesc("updateAt", "creatAt");
IPage iPage = userAccountService.listAll(MybatisPlusUtil.SetNumPage(1, 10000), qw);
List<Map> records = iPage.getRecords();
for (Map m : records) {
if (m.get("validImg") != null) {
m.replace("validImg", cdn + m.get("validImg"));
}
//平台1抖音2快手3朋友圈4视频号
Integer platform = (Integer) m.get("platform");
if (platform != null) {
m.replace("platform",platform ==1?"抖音":(platform ==2?"快手":(platform ==3?"朋友圈":platform ==4?"朋友圈":null)) );
}
}
Workbook wb = ExcelUtil.writeToExcelByList(array, iPage.getRecords());
OutputStream output = response.getOutputStream();
String fileName = "用户账号导出.xlsx";
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ";" + "filename*=utf-8''" + fileName);
wb.write(output);
output.close();
}
@Data
@ -76,7 +130,7 @@ public class UserAccountController {
@NotNull(message = "状态不能为空")
@Min(value = 1, message = "1审核通过2审核拒绝")
@Max(value = 3, message = "1审核通过2审核拒绝")
@Schema(title = "状态",description = "1审核通过2审核拒绝")
@Schema(title = "状态", description = "1审核通过2审核拒绝")
private Integer status;
@Schema(title = "拒绝原因")
private String reason;
@ -88,15 +142,15 @@ public class UserAccountController {
@AdminCheckAuthorityAnnotation(jurisdictionId = "14")
public Result valid(@Validated @RequestBody PassUAParam param) {
UserAccount ua = userAccountService.getById(param.getId());
if(ua ==null){
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION,"未找到指定账号");
if (ua == null) {
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION, "未找到指定账号");
}
if(ua.getStatus() != 0){
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION,"账号状态不在审核中");
if (ua.getStatus() != 0) {
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION, "账号状态不在审核中");
}
UpdateWrapper<UserAccount> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", param.getId()).set("status",param.getStatus()).set("updateAt",LocalDateTime.now());
updateWrapper.set("reason",param.getStatus()==2?param.getReason():"");
updateWrapper.eq("id", param.getId()).set("status", param.getStatus()).set("updateAt", LocalDateTime.now());
updateWrapper.set("reason", param.getStatus() == 2 ? param.getReason() : "");
userAccountService.update(updateWrapper);
return Result.success("修改完成");
}

@ -4,14 +4,17 @@ package com.zh.project0512.controller.manage;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zh.project0512.annotation.AdminTokenValid;
import com.zh.project0512.model.QywxDepartmentGroup;
import com.zh.project0512.model.QywxDepartmentGroupLink;
import com.zh.project0512.model.Task;
import com.zh.project0512.model.User;
import com.zh.project0512.service.IQywxDepartmentGroupLinkService;
import com.zh.project0512.service.IQywxDepartmentGroupService;
import com.zh.project0512.service.IQywxDepartmentService;
import com.zh.project0512.service.IUserService;
import com.zh.project0512.utils.ExcelUtil;
import com.zh.project0512.utils.HttpUtil;
import com.zh.project0512.utils.MybatisPlusUtil;
import com.zh.project0512.utils.result.Result;
@ -19,14 +22,21 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -79,6 +89,36 @@ public class UserController {
return Result.success(userService.pageList(MybatisPlusUtil.SetNumPage(param.getPageNum(),param.getPageSize()),qw));
}
@Operation(summary = "导出excel", description = "成员导出")
@GetMapping("/excel")
@AdminTokenValid
public void excel(HttpServletResponse response, @Validated @RequestBody UParam param) throws IOException {
//这是表头及格式
String[][] array ={
{"员工","部门","上级部门","手机号","创建时间","上次登录"},
{"name", "main_departmentName","sub_departmentName","tel","creatAt","lastLoginAt"},
{"String", "String","String","String","LocalDateTime","LocalDateTime"}
};
QueryWrapper<User> qw = new QueryWrapper<>();
qw
.and(param.getDepartment() !=null,q -> q.like( "t2.name",param.getDepartment())
.or(o -> o.like( "t3.name",param.getDepartment())))
.like(param.getName() !=null, "t1.name",param.getName());
IPage<Map> iPage = userService.pageList(MybatisPlusUtil.SetNumPage(1, 10000), qw);
Workbook wb = ExcelUtil.writeToExcelByList(array, iPage.getRecords());
OutputStream output = response.getOutputStream();
String fileName = "成员导出.xlsx";
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ";" + "filename*=utf-8''" + fileName);
wb.write(output);
output.close();
}
@Operation(summary = "部门列表")
@PostMapping("/department")
@AdminTokenValid

@ -24,6 +24,6 @@ public interface RewardRuleMapper extends BaseMapper<RewardRule> {
"</foreach> \n"+
"</script>")
void addGroup(int id,RewardRule[] arr);
@Select("select t.limitNum,t.reward from rewardRule as t where templateId = #{id}")
@Select("select t.limitNum,t.reward from rewardRule as t where templateId = #{id} ORDER BY limitNum ")
List<Map> listByTemplateId(int id);
}

@ -7,6 +7,7 @@ import com.zh.project0512.model.Reference;
import com.zh.project0512.model.Task;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.*;
import org.apache.poi.ss.formula.functions.T;
import java.util.List;
import java.util.Map;

@ -18,7 +18,7 @@ import java.util.Map;
/**
* <p>
* Mapper
* Mapper
* </p>
*
* @author zh
@ -29,8 +29,10 @@ public interface VideoMapper extends BaseMapper<Video> {
" set video.status = 1 \n" +
"WHERE video.status = 0")
void updStatusWhenTaskEnd(String now);
@Update("update video INNER JOIN task on task.id = video.taskId and taskId = #{taskId} set video.status = 1 WHERE video.status = 0 ")
void updStatusByTaskId(int taskId,LocalDateTime endTime);
void updStatusByTaskId(int taskId, LocalDateTime endTime);
@Select("SELECT t1.*,t2.name as providerName,t3.name as departmentName,t4.title as taskTitle\n" +
" from video as t1\n" +
"LEFT JOIN user as t2 on t2.id = t1.userId\n" +
@ -39,6 +41,7 @@ public interface VideoMapper extends BaseMapper<Video> {
"${ew.customSqlSegment} " +
"ORDER BY updateAt DESC,creatAt DESC")
IPage<Map> pageList(IPage iPage, @Param("ew") Wrapper<Video> queryWrapper);
@Select("SELECT sum(t1.playNum) as playNumSum,\n" +
"sum(t1.commendNum) as commendNumSum ,\n" +
"sum(t1.collectionNum) as collectionNumSum ,\n" +
@ -49,4 +52,14 @@ public interface VideoMapper extends BaseMapper<Video> {
" inner join user on user.openid = #{openid} and user.id = t1.userId\n" +
"where t1.status = 2")
JSONObject record(String openid);
// 任务下视频影响值统计
@Select("SELECT t2.title as taskTitle,t3.name as userName,SUM(IFNULL(t1.effectResult,0)) as effectResultSum \n" +
"from video as t1\n" +
"INNER JOIN task as t2 on t1.taskId = t2.id\n" +
"INNER JOIN user as t3 on t1.userId = t3.id\n" +
"WHERE taskId = #{taskId}\n" +
"GROUP BY t1.userId \n" +
"ORDER BY effectResultSum DESC")
List<Map> videoEffectResult(int taskId);
}

@ -113,4 +113,18 @@ public class Video extends Model {
@TableField("updateAt")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateAt;
/**
* :01
*/
@TableField("isSettled")
private Integer isSettled;
/**
*
*/
@TableField("settledAt")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime settledAt;
}

@ -7,6 +7,7 @@ import com.zh.project0512.model.Reference;
import com.zh.project0512.model.Task;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;
import org.apache.poi.ss.formula.functions.T;
import java.util.List;
import java.util.Map;

@ -9,6 +9,7 @@ import com.zh.project0512.mapper.TaskMapper;
import com.zh.project0512.service.ITaskService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.ibatis.annotations.Param;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@ -3,14 +3,17 @@ package com.zh.project0512.utils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class ExcelUtil {
public static Workbook writeToExcelByList(String[] array, List<Map> list) {
public static Workbook writeToExcelByList(String[][] array, List<Map> list) {
//创建工作薄
Workbook wb = new XSSFWorkbook();
//标题和页码
@ -30,22 +33,18 @@ public class ExcelUtil {
sheet.autoSizeColumn(0);
// 在sheet中添加标题行// 行数从0开始
Row row = sheet.createRow((int) 0);
// for (int i = 0; i < array.length; i++) {
// Cell cell = row.createCell(i);
// cell.setCellValue(array[i]);
// cell.setCellStyle(titleStyle);
// }
int titleIndex = 0;
for (Object key : list.get(0).keySet()) {
Cell cell = row.createCell(titleIndex);
cell.setCellValue((String) key);
String[] titleArray = array[0];
for (int i = 0; i < titleArray.length; i++) {
Cell cell = row.createCell(i);
cell.setCellValue(titleArray[i]);
cell.setCellStyle(titleStyle);
titleIndex += 1;
}
// 数据样式 因为标题和数据样式不同 需要分开设置 不然会覆盖
CellStyle dataStyle = wb.createCellStyle();
// 设置居中样式,水平居中
dataStyle.setAlignment(HorizontalAlignment.CENTER);
String[] valueArray = array[1];
String[] formatArray = array[2];
//数据从序号1开始
try {
int index = 1;
@ -54,20 +53,16 @@ public class ExcelUtil {
row = sheet.createRow(index);
index++;
Map data = value;
int cellIndex = 0;
for (Object key : data.keySet()) {
Cell cell = row.createCell(cellIndex);
Object v = data.get(key);
// 为当前列赋值
System.out.println(v instanceof java.lang.Integer);
if (v instanceof java.lang.Integer){
cell.setCellValue((Integer) v);
}else {
cell.setCellValue(v.toString());
for (int i = 0; i < valueArray.length; i++) {
Cell cell = row.createCell(i);
if (formatArray[i] == "String") {
cell.setCellValue((String) value.get(valueArray[i]));
} else if (formatArray[i] == "LocalDateTime") {
cell.setCellValue(value.get(valueArray[i])==null?null:value.get(valueArray[i]).toString());
} else if (formatArray[i] == "int") {
cell.setCellValue(Integer.parseInt(String.valueOf(value.get(valueArray[i]))));
}
//设置数据的样式
cell.setCellStyle(dataStyle);
cellIndex += 1;
}
// for (int j = 0; j < data.size(); j++) {
// Cell cell = row.createCell(j);

Loading…
Cancel
Save