|
|
@ -2,14 +2,18 @@ package com.tduck.cloud.api.web.controller; |
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
import cn.hutool.core.convert.Convert; |
|
|
import cn.hutool.core.convert.Convert; |
|
|
|
|
|
import cn.hutool.core.io.IoUtil; |
|
|
import cn.hutool.core.map.MapUtil; |
|
|
import cn.hutool.core.map.MapUtil; |
|
|
import cn.hutool.core.thread.ThreadUtil; |
|
|
import cn.hutool.core.thread.ThreadUtil; |
|
|
import cn.hutool.core.util.IdUtil; |
|
|
import cn.hutool.core.util.IdUtil; |
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
import cn.hutool.core.util.StrUtil; |
|
|
import cn.hutool.core.util.StrUtil; |
|
|
import cn.hutool.json.JSONUtil; |
|
|
import cn.hutool.json.JSONUtil; |
|
|
|
|
|
import cn.hutool.poi.excel.ExcelUtil; |
|
|
|
|
|
import cn.hutool.poi.excel.ExcelWriter; |
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
import com.google.common.collect.Sets; |
|
|
import com.google.common.collect.Sets; |
|
|
import com.tduck.cloud.api.annotation.Login; |
|
|
import com.tduck.cloud.api.annotation.Login; |
|
|
import com.tduck.cloud.api.annotation.NoRepeatSubmit; |
|
|
import com.tduck.cloud.api.annotation.NoRepeatSubmit; |
|
|
@ -31,6 +35,7 @@ import com.tduck.cloud.project.request.QueryProjectResultRequest; |
|
|
import com.tduck.cloud.project.request.SortProjectItemRequest; |
|
|
import com.tduck.cloud.project.request.SortProjectItemRequest; |
|
|
import com.tduck.cloud.project.service.*; |
|
|
import com.tduck.cloud.project.service.*; |
|
|
import com.tduck.cloud.project.util.SortUtils; |
|
|
import com.tduck.cloud.project.util.SortUtils; |
|
|
|
|
|
import com.tduck.cloud.project.vo.ExportProjectResultVO; |
|
|
import com.tduck.cloud.project.vo.OperateProjectItemVO; |
|
|
import com.tduck.cloud.project.vo.OperateProjectItemVO; |
|
|
import com.tduck.cloud.project.vo.UserProjectDetailVO; |
|
|
import com.tduck.cloud.project.vo.UserProjectDetailVO; |
|
|
import com.tduck.cloud.project.vo.UserProjectThemeVo; |
|
|
import com.tduck.cloud.project.vo.UserProjectThemeVo; |
|
|
@ -46,8 +51,11 @@ import me.chanjar.weixin.mp.api.WxMpService; |
|
|
import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket; |
|
|
import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket; |
|
|
import org.springframework.web.bind.annotation.*; |
|
|
import org.springframework.web.bind.annotation.*; |
|
|
|
|
|
|
|
|
|
|
|
import javax.servlet.ServletOutputStream; |
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
import javax.validation.constraints.NotBlank; |
|
|
import javax.validation.constraints.NotBlank; |
|
|
|
|
|
import java.io.IOException; |
|
|
import java.sql.Struct; |
|
|
import java.sql.Struct; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
import java.util.Map; |
|
|
import java.util.Map; |
|
|
@ -97,6 +105,7 @@ public class UserProjectResultController { |
|
|
*/ |
|
|
*/ |
|
|
@PostMapping("/create") |
|
|
@PostMapping("/create") |
|
|
@NoRepeatSubmit |
|
|
@NoRepeatSubmit |
|
|
|
|
|
@Login |
|
|
public Result createProjectResult(@RequestBody UserProjectResultEntity entity, HttpServletRequest request) { |
|
|
public Result createProjectResult(@RequestBody UserProjectResultEntity entity, HttpServletRequest request) { |
|
|
Result<UserProjectSettingEntity> userProjectSettingStatus = userProjectSettingService.getUserProjectSettingStatus(entity.getProjectKey(), HttpUtils.getIpAddr(request)); |
|
|
Result<UserProjectSettingEntity> userProjectSettingStatus = userProjectSettingService.getUserProjectSettingStatus(entity.getProjectKey(), HttpUtils.getIpAddr(request)); |
|
|
if (StrUtil.isNotBlank(userProjectSettingStatus.getMsg())) { |
|
|
if (StrUtil.isNotBlank(userProjectSettingStatus.getMsg())) { |
|
|
@ -112,6 +121,36 @@ public class UserProjectResultController { |
|
|
return Result.success(); |
|
|
return Result.success(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 填写结果excel导出 |
|
|
|
|
|
* |
|
|
|
|
|
* @param request |
|
|
|
|
|
* @return |
|
|
|
|
|
*/ |
|
|
|
|
|
@GetMapping("/export") |
|
|
|
|
|
public void exportProjectResult(QueryProjectResultRequest request, HttpServletResponse response) throws IOException { |
|
|
|
|
|
ExportProjectResultVO exportProjectResultVO = projectResultService.exportProjectResult(request); |
|
|
|
|
|
// 通过工具类创建writer,默认创建xls格式
|
|
|
|
|
|
ExcelWriter writer = ExcelUtil.getWriter(); |
|
|
|
|
|
//自定义标题别名
|
|
|
|
|
|
exportProjectResultVO.getTitleList().forEach(item -> { |
|
|
|
|
|
writer.addHeaderAlias(item.getFieldKey(), item.getTitle()); |
|
|
|
|
|
}); |
|
|
|
|
|
// 一次性写出内容,使用默认样式,强制输出标题
|
|
|
|
|
|
writer.write(exportProjectResultVO.getResultList(), true); |
|
|
|
|
|
//out为OutputStream,需要写出到的目标流
|
|
|
|
|
|
//response为HttpServletResponse对象
|
|
|
|
|
|
response.setContentType("application/vnd.ms-excel;charset=utf-8"); |
|
|
|
|
|
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
|
|
|
|
|
|
response.setHeader("Content-Disposition", "attachment;filename=test.xls"); |
|
|
|
|
|
ServletOutputStream out = response.getOutputStream(); |
|
|
|
|
|
writer.flush(out, true); |
|
|
|
|
|
// 关闭writer,释放内存
|
|
|
|
|
|
writer.close(); |
|
|
|
|
|
//此处记得关闭输出Servlet流
|
|
|
|
|
|
IoUtil.close(out); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 结果分页 |
|
|
* 结果分页 |
|
|
@ -120,6 +159,7 @@ public class UserProjectResultController { |
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
@GetMapping("/page") |
|
|
@GetMapping("/page") |
|
|
|
|
|
@Login |
|
|
public Result queryProjectResults(QueryProjectResultRequest request) { |
|
|
public Result queryProjectResults(QueryProjectResultRequest request) { |
|
|
return Result.success(projectResultService.listByQueryConditions(request)); |
|
|
return Result.success(projectResultService.listByQueryConditions(request)); |
|
|
} |
|
|
} |
|
|
|