fixed 排序

master
zhangjinli 3 years ago
parent c7c9b731aa
commit bd22db52f2

@ -66,7 +66,7 @@ public class CompanyQnAnswererController {
if (null != companyErr) {
return Result.err(companyErr);
}
return Result.success(answererMapper.answererPageList(PageUtil.SetPage(params.getPageNum(), params.getPageSize()), new QueryWrapper<Answerer>().eq("qn_id", params.getQnId())));
return Result.success(answererMapper.answererPageList(PageUtil.SetPage(params.getPageNum(), params.getPageSize()), new QueryWrapper<Answerer>().eq("qn_id", params.getQnId()).orderByDesc("id")));
}
@Data

@ -23,16 +23,22 @@ import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@ -62,7 +68,7 @@ public class CompanyQnController {
private int pageSize;
@Schema(title = "名称")
private String title;
@Schema(title = "状态",description = "0=未投放 1 =投放中 2=已结束")
@Schema(title = "状态", description = "0=未投放 1 =投放中 2=已结束")
private Integer status;
@Schema(title = "更新时间起")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ -112,7 +118,7 @@ public class CompanyQnController {
}
@Data
public static class ResultCompanyQnDetail{
public static class ResultCompanyQnDetail {
private CompanyQn baseInfo;
private List titleList;
}
@ -132,10 +138,10 @@ public class CompanyQnController {
Result<List<CompanyQnTitleController.ResultQnTitleList>> listResult = companyQnTitleService.qnTitleList(qnId);
ResultCompanyQnDetail result = new ResultCompanyQnDetail();
result.setBaseInfo(companyQn);
if(listResult.isSuccess()){
if (listResult.isSuccess()) {
result.setTitleList(listResult.getData());
}
return Result.success(result);
return Result.success(result);
}
@Data
@ -233,12 +239,19 @@ public class CompanyQnController {
if (null == qn || qn.getCompanyId() != params.getUserInfo().getId()) {
return Result.err("无效操作");
}
if(CompanyQn.CompanyQnStatusNotRelease != qn.getStatus()){
if (CompanyQn.CompanyQnStatusNotRelease != qn.getStatus()) {
return Result.err("不在待发布状态");
}
return companyQnService.release(qn);
}
@Operation(summary = "全量发送邮件")
@PostMapping("/groupSendMail")
@Token(requireUser = 1, level = {2})
public Result groupSendMail(@Validated @RequestBody ParamsQnOpr params) {
return companyQnService.groupSendMail(params.getQnId());
}
@Operation(summary = "停止问卷")
@PostMapping("/end")
@Token(requireUser = 1, level = {2})
@ -320,4 +333,11 @@ public class CompanyQnController {
return companyQnAnswerService.partnerChoiceResult(params.getQnId());
}
@Operation(summary = "答题人互评结果导出Excel")
@PostMapping("/resultExportExcel")
@Token(requireUser = 1, level = {2})
public void resultExportExcel(HttpServletResponse response, @Validated @RequestBody paramsPartnerChoiceResult params) {
companyQnAnswerService.resultExportExcel(response, params.getQnId());
}
}

@ -62,6 +62,7 @@ public class CompanyQnTitleController {
public static class ResultQnTitleList {
private Integer id;
private Integer qnId;
private Integer titleId;
private String title;
private Integer kind;
private String kindName;
@ -113,16 +114,16 @@ public class CompanyQnTitleController {
private String[] options;
}
@Operation(summary = "新增")
@PostMapping("/add")
@Token(requireUser = 1, level = {2})
public Result<CompanyQn> add(@Validated @RequestBody paramsQnTitleGroupAdd params) {
String companyErr = companyQnService.validCompany(params.getQnId(),params.getUserInfo().getId());
if(null != companyErr){
return Result.err(companyErr);
}
return companyQnTitleService.qnTitleAdd(params);
}
// @Operation(summary = "新增")
// @PostMapping("/add")
// @Token(requireUser = 1, level = {2})
// public Result<CompanyQn> add(@Validated @RequestBody paramsQnTitleGroupAdd params) {
// String companyErr = companyQnService.validCompany(params.getQnId(),params.getUserInfo().getId());
// if(null != companyErr){
// return Result.err(companyErr);
// }
// return companyQnTitleService.qnTitleAdd(params);
// }
@Data
public static class paramsQnTitleAddModel {
@ -130,9 +131,7 @@ public class CompanyQnTitleController {
@NotNull(message = "问卷id不能为空")
private Integer qnId;
@Schema(title = "题型库id")
private Integer[] BaseTitleIds;
@Schema(title = "题型库id")
private Integer[] QnTitleIds;
private Integer[] titleIds;
@JsonIgnore(value = false)
private Company userInfo;
}
@ -161,12 +160,12 @@ public class CompanyQnTitleController {
private Company userInfo;
}
@Operation(summary = "修改")
@PostMapping("/upd")
@Token(requireUser = 1, level = {2})
public Result<CompanyQn> upd(@Validated @RequestBody paramsQnTitleUpd params) {
return companyQnTitleService.qnTitleUpd(params);
}
// @Operation(summary = "修改")
// @PostMapping("/upd")
// @Token(requireUser = 1, level = {2})
// public Result<CompanyQn> upd(@Validated @RequestBody paramsQnTitleUpd params) {
// return companyQnTitleService.qnTitleUpd(params);
// }
@Data
public static class paramsQnTitleDel {

@ -19,6 +19,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
@ -26,10 +27,13 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.List;
@ -110,4 +114,11 @@ public class ManageCompanyQnController {
return companyQnAnswerService.partnerChoiceResult(params.getQnId());
}
@Operation(summary = "答题人互评结果导出Excel")
@PostMapping("/resultExportExcel")
@Token(requireUser = 1, level = {1})
public void resultExportExcel(HttpServletResponse response, @Validated @RequestBody CompanyQnController.paramsPartnerChoiceResult params) {
companyQnAnswerService.resultExportExcel(response,params.getQnId());
}
}

@ -24,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
@ -80,6 +81,8 @@ public class QnTitleController {
private Integer groupId;
@Schema(title = "分类名称")
private String groupName;
@Schema(title = "标签")
private String tag;
@Schema(title = "状态")
private int status;
@Schema(title = "选项")
@ -103,10 +106,13 @@ public class QnTitleController {
public static class paramsTitleAdd {
@Schema(title = "标题")
@NotNull(message = "标题不能为空")
@NotEmpty(message = "标题不能为空")
private String title;
@Schema(title = "分类")
@NotNull(message = "分类不能为空")
private Integer groupId;
@Schema(title = "标签")
private String tag;
@Schema(title = "题型")
@NotNull(message = "题型不能为空")
@Min(value = 1, message = "类型范围为1 2 3")
@ -132,6 +138,8 @@ public class QnTitleController {
private String title;
@Schema(title = "分类")
private Integer groupId;
@Schema(title = "标签")
private String tag;
@Schema(title = "题型")
@Min(value = 1, message = "类型范围为1 2 3")
@Max(value = 3, message = "类型范围为1 2 3")

@ -55,8 +55,8 @@ public interface CompanyQnMapper extends BaseMapper<CompanyQn> {
"t2.name as companyName \n" +
"from company_qn t1 \n" +
"LEFT JOIN company t2 on t1.company_id=t2.id \n" +
"${ew.customSqlSegment}" +
"GROUP BY id")
"${ew.customSqlSegment} " +
"GROUP BY id ORDER BY id DESC")
IPage<MapperResultCompanyQn> companyQnList(IPage page, @Param("ew") Wrapper<CompanyQn> qw);
@Data
@ -82,6 +82,6 @@ public interface CompanyQnMapper extends BaseMapper<CompanyQn> {
"LEFT JOIN company_qn_answer t3 on t3.answerer_id = t2.answerer_id\n" +
"LEFT JOIN company_qn_title t4 on t1.id = t4.qn_id \n" +
"WHERE t1.status != 0 and t2.answerer_id = #{answererId} " +
"GROUP BY t1.id")
"ORDER BY t1.id DESC GROUP BY t1.id")
IPage<MapperResultAnswererQnList> qnList(IPage page,int answererId);
}

@ -27,6 +27,7 @@ public interface QnTitleMapper extends BaseMapper<QnTitle> {
private Integer kind;
private Integer gpId;
private String groupName;
private String tag;
private int status;
private String options;
private String statusName;

@ -35,6 +35,11 @@ public class CompanyQnTitle extends Model {
*/
private Integer qnId;
/**
* id
*/
private Integer titleId;
/**
*
*/
@ -50,6 +55,11 @@ public class CompanyQnTitle extends Model {
*/
private Integer groupId;
/**
*
*/
private String tag;
/**
*
*/

@ -54,6 +54,11 @@ public class QnTitle extends Model {
*/
private Integer groupId;
/**
*
*/
private String tag;
/**
*
*/

@ -4,10 +4,13 @@ import com.zh.lingnuo.controller.answerer.CompanyQnAnswerController;
import com.zh.lingnuo.model.CompanyQnAnswer;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zh.lingnuo.utils.result.Result;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.HttpServletResponse;
/**
* <p>
*
*
* </p>
*
* @author zh
@ -16,17 +19,20 @@ import com.zh.lingnuo.utils.result.Result;
public interface ICompanyQnAnswerService extends IService<CompanyQnAnswer> {
// 问卷列表
Result qnList(CompanyQnAnswerController.paramsAnswererQnList params,int answererId);
Result qnList(CompanyQnAnswerController.paramsAnswererQnList params, int answererId);
// 答题结果
Result all(int qnId,int answererId);
Result all(int qnId, int answererId);
// 全部被评人
Result allQnTowards(int qnId,int answererId);
Result allQnTowards(int qnId, int answererId);
// 答题
Result add(CompanyQnAnswerController.paramsCompanyQnAnswerAdd params);
// 答题人互评详情
Result partnerChoiceResult(int qnId);
// 答题人互评结果导出Excel
void resultExportExcel(HttpServletResponse response,int qnId);
}

@ -32,6 +32,9 @@ public interface ICompanyQnService extends IService<CompanyQn> {
// 发布
Result release(CompanyQn qn);
// 全量发送邮件
Result groupSendMail(int qnId);
// 停止问卷
Result end(int qnId);

@ -20,18 +20,22 @@ import com.zh.lingnuo.service.ICompanyQnAnswererService;
import com.zh.lingnuo.service.ICompanyQnService;
import com.zh.lingnuo.service.ICompanyQnTitleService;
import com.zh.lingnuo.utils.Common;
import com.zh.lingnuo.utils.ExcelExport;
import com.zh.lingnuo.utils.PageUtil;
import com.zh.lingnuo.utils.result.Result;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* <p>
@ -59,15 +63,15 @@ public class CompanyQnAnswerServiceImpl extends ServiceImpl<CompanyQnAnswerMappe
private CompanyQnAnswererMapper companyQnAnswererMapper;
// 问卷列表
public Result qnList(CompanyQnAnswerController.paramsAnswererQnList params,int answererId){
IPage<CompanyQnMapper.MapperResultAnswererQnList> qnList = companyQnMapper.qnList(PageUtil.SetPage(params.getPageNum(), params.getPageSize()),answererId);
public Result qnList(CompanyQnAnswerController.paramsAnswererQnList params, int answererId) {
IPage<CompanyQnMapper.MapperResultAnswererQnList> qnList = companyQnMapper.qnList(PageUtil.SetPage(params.getPageNum(), params.getPageSize()), answererId);
return Result.success(qnList);
}
// 答题结果
public Result all(int qnId,int answererId) {
public Result all(int qnId, int answererId) {
List<CompanyQnAnswerMapper.MapperResultAnswerAll> list = companyQnAnswerMapper.answerList(new QueryWrapper<CompanyQnAnswer>()
.eq("t1.qn_id",qnId).eq("t1.answerer_id",answererId));
.eq("t1.qn_id", qnId).eq("t1.answerer_id", answererId));
List<ResultAnswerAll> result = new ArrayList();
HashMap<Integer, HashMap<String, List<Integer>>> t = new HashMap();
for (CompanyQnAnswerMapper.MapperResultAnswerAll i : list) {
@ -77,7 +81,7 @@ public class CompanyQnAnswerServiceImpl extends ServiceImpl<CompanyQnAnswerMappe
ResultAnswerAll r = new ResultAnswerAll();
BeanUtils.copyProperties(i, r);
Integer kind = i.getTitleKind();
if(null !=kind ) {
if (null != kind) {
r.setTitleKindName(CompanyQnTitle.getKindName(kind));
if (kind == CompanyQnTitle.CompanyQnTitleKindPartnerChoice) {
r.setAnswerOpt(null);
@ -87,7 +91,7 @@ public class CompanyQnAnswerServiceImpl extends ServiceImpl<CompanyQnAnswerMappe
result.add(r);
}
Integer id = i.getQnTowardsId();
if (null != i.getTitleKind()&&i.getTitleKind() == CompanyQnTitle.CompanyQnTitleKindPartnerChoice && Common.higherZero(id)) {
if (null != i.getTitleKind() && i.getTitleKind() == CompanyQnTitle.CompanyQnTitleKindPartnerChoice && Common.higherZero(id)) {
HashMap<String, List<Integer>> l = t.get(titleId);
if (null == l.get(i.getAnswerOpt())) {
l.put(i.getAnswerOpt(), new ArrayList<Integer>());
@ -102,7 +106,7 @@ public class CompanyQnAnswerServiceImpl extends ServiceImpl<CompanyQnAnswerMappe
}
// 全部被评人
public Result allQnTowards(int qnId,int answererId) {
public Result allQnTowards(int qnId, int answererId) {
List<CompanyQnAnswererMapper.MapperResultQnAnswererAll> list = companyQnAnswererMapper.qnAnswererList(new QueryWrapper<CompanyQnAnswerer>().eq("t1.qn_id", qnId).ne("t1.answerer_id", answererId));
List<CompanyQnAnswerController.ResultQnTowards> resList = new ArrayList<>();
@ -126,7 +130,7 @@ public class CompanyQnAnswerServiceImpl extends ServiceImpl<CompanyQnAnswerMappe
}
int qnId = companyQnTitle.getQnId();
CompanyQn qn = companyQnService.getById(qnId);
if(null == qn){
if (null == qn) {
return Result.err("未知问卷");
}
if (CompanyQn.CompanyQnStatusRelease != qn.getStatus()) {
@ -205,28 +209,85 @@ public class CompanyQnAnswerServiceImpl extends ServiceImpl<CompanyQnAnswerMappe
//答题人互评详情
public Result partnerChoiceResult(int qnId) {
Boolean isSecret = false;
CompanyQn qn = companyQnService.getById(qnId);
if (null == qn) {
return Result.err("未知问卷");
}
if (1 == qn.getIsSecret()) {
isSecret = true;
}
return Result.success(partnerChoiceResultData(qnId, isSecret));
}
// 答题人互评结果导出Excel
public void resultExportExcel(HttpServletResponse response, int qnId) {
CompanyQn qn = companyQnService.getById(qnId);
if (null == qn) {
return;
}
List<CompanyQnTitle> qnTitleList = companyQnTitleService.list(new QueryWrapper<CompanyQnTitle>()
.eq("qn_id", qnId)
.eq("kind", CompanyQnTitle.CompanyQnTitleKindPartnerChoice));
Map qnTitleMap = new LinkedHashMap<>();
for (CompanyQnTitle qnTitle : qnTitleList) {
qnTitleMap.put(qnTitle.getTitle(), qnTitle.getTitle());
}
List<Map> resultList = new ArrayList<>();
List<CompanyQnController.ResultPartnerChoice> list = partnerChoiceResultData(qnId, false);
for (CompanyQnController.ResultPartnerChoice resultPartnerChoice : list) {
Map map = new LinkedHashMap();
map.put("SourceId", resultPartnerChoice.getAnswererName());
map.put("TargetId", resultPartnerChoice.getQnTowardsName());
for (CompanyQnController.ResultAnswerPartnerChoice resultAnswerPartnerChoice : resultPartnerChoice.getAnswerPartnerChoice()) {
map.put(resultAnswerPartnerChoice.getTitleName(), resultAnswerPartnerChoice.getAnswerOpt());
}
resultList.add(map);
}
XSSFWorkbook wb = ExcelExport.createExcel(resultList, null);
try {
String day = LocalDateTime.now().format(DateTimeFormatter.ofPattern("YYYY-MM-dd"));
String fileName = URLEncoder.encode(qn.getTitle(), "UTF8");
response.setContentType("application/vnd.ms-excel;chartset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + "-" + day + ".xls");
ServletOutputStream out = response.getOutputStream();
wb.write(out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//答题人互评详情数据
public List partnerChoiceResultData(int qnId, boolean isSecret) {
QueryWrapper<CompanyQnAnswer> qw = new QueryWrapper<>();
List<CompanyQnAnswerMapper.MapperResultPartnerChoice> list = companyQnAnswerMapper.partnerChoiceResult(qnId);
List<CompanyQnController.ResultPartnerChoice> result = new ArrayList();
HashMap<Integer,HashMap<Integer,List<CompanyQnController.ResultAnswerPartnerChoice>>> t = new HashMap();
HashMap<Integer, HashMap<Integer, List<CompanyQnController.ResultAnswerPartnerChoice>>> t = new HashMap();
for (CompanyQnAnswerMapper.MapperResultPartnerChoice i : list) {
int asId = i.getAnswererId();
int qnTowardsId = i.getQnTowardsId();
if(null == t.get(asId)){
t.put(asId,new HashMap<Integer,List<CompanyQnController.ResultAnswerPartnerChoice>>());
if (null == t.get(asId)) {
t.put(asId, new HashMap<Integer, List<CompanyQnController.ResultAnswerPartnerChoice>>());
}
if(null == t.get(asId).get(qnTowardsId)){
if (null == t.get(asId).get(qnTowardsId)) {
t.get(asId).put(qnTowardsId, new ArrayList<>());
CompanyQnController.ResultPartnerChoice r = new CompanyQnController.ResultPartnerChoice();
BeanUtils.copyProperties(i, r);
if (isSecret) {
r.setAnswererName(String.valueOf(asId));
r.setQnTowardsName(String.valueOf(qnTowardsId));
}
result.add(r);
}
t.get(asId).get(qnTowardsId).add(new CompanyQnController.ResultAnswerPartnerChoice()
.setTitleId(i.getTitleId()).setTitleName(i.getTitle()).setAnswerOpt(i.getAnswerOpt()).setAnswerCont(i.getAnswerCont()));
}
for (CompanyQnController.ResultPartnerChoice item : result) {
item.setAnswerPartnerChoice(t.get(item.getAnswererId()).get(item.getQnTowardsId()));
}
return Result.success(result);
for (CompanyQnController.ResultPartnerChoice item : result) {
item.setAnswerPartnerChoice(t.get(item.getAnswererId()).get(item.getQnTowardsId()));
}
return result;
}
}

@ -62,6 +62,9 @@ public class CompanyQnAnswererServiceImpl extends ServiceImpl<CompanyQnAnswererM
for (ExcelAnswerData r : result) {
Answerer v = new Answerer();
BeanUtils.copyProperties(r, v);
if(null == v.getMail()|| null == v.getName() || null == v.getTel() || null == v.getDepartment()|| null == v.getWorkAge()){
continue;
}
String salt = Common.getRandomString(6, "");
String tel = (String) Common.ObjectFieldValue(r, "tel");
String password = Common.md5(salt + Common.md5(tel + salt));
@ -69,9 +72,12 @@ public class CompanyQnAnswererServiceImpl extends ServiceImpl<CompanyQnAnswererM
answererService.saveOrUpdate(v,new UpdateWrapper<Answerer>().eq("mail",v.getMail()));
mailList.add(v.getMail());
}
List<CompanyQnAnswerer> aList = new ArrayList();
if(mailList.size() == 0){
return Result.success(aList);
}
List<Answerer> mail = answererService.list(new QueryWrapper<Answerer>().in("mail", mailList));
List<Integer> answererIdList = companyQnAnswererMapper.answererIdList(qnId);
List<CompanyQnAnswerer> aList = new ArrayList();
for (Answerer answerer : mail) {
if(!answererIdList.contains(answerer.getId())) {
aList.add(new CompanyQnAnswerer().setQnId(qnId).setAnswererId(answerer.getId()));

@ -109,37 +109,44 @@ public class CompanyQnServiceImpl extends ServiceImpl<CompanyQnMapper, CompanyQn
// 发布
public Result release(CompanyQn qn) {
int qnId = qn.getId();
String isSecret = CompanyQn.getIsSecretDesc(qn.getIsSecret());
super.update(new UpdateWrapper<CompanyQn>().eq("id", qnId).eq("status", CompanyQn.CompanyQnStatusNotRelease).set("status", CompanyQn.CompanyQnStatusRelease));
// 发送邮件
List<String> mailList = new ArrayList();
List<String> illegalMailList = new ArrayList();
List<Answerer> answerers = answererMapper.answererList(qnId);
if(answerers.size()==0){
return Result.err("答题人为空");
}
System.out.println("发送邮件开始");
for (Answerer answerer : answerers) {
String mail = answerer.getMail();
if (null != mail) {
String subject = "问卷填写通知";
String content = "请您用提供的账号密码登录该平台,并回答相应问题。\n"
+"问卷地址:"+webUrl+"\n"
+"账号:"+answerer.getMail()+"\n"
+"密码:"+answerer.getTel()+"\n"
+"注意:本次调研采用【"+isSecret+"】形式。在最后的群体报告中,您的个人信息均会隐去。您的个人报告只有您自己能看到。";
if (!mailServiceImpl.sendMail(mail, subject, content)) {
illegalMailList.add(answerer.getName());
}
}
}
String msg = "发布成功";
if (illegalMailList.size() > 0) {
msg = msg + "," + illegalMailList.toString() + "邮箱错误";
}
return Result.success("", msg + "!");
super.update(new UpdateWrapper<CompanyQn>().eq("id", qnId).eq("status", CompanyQn.CompanyQnStatusNotRelease).set("status", CompanyQn.CompanyQnStatusRelease));
return Result.success("发布成功");
}
// 全量发送邮件
public Result groupSendMail(int qnId){
CompanyQn qn = super.getById(qnId);
String isSecret = CompanyQn.getIsSecretDesc(qn.getIsSecret());
List<Answerer> answerers = answererMapper.answererList(qn.getId());
List<String> mailList = new ArrayList();
List<String> illegalMailList = new ArrayList();
System.out.println("发送邮件开始");
for (Answerer answerer : answerers) {
String mail = answerer.getMail();
if (null != mail) {
String subject = "问卷填写通知";
String content = "请您用提供的账号密码登录该平台,并回答相应问题。\n"
+"问卷地址:"+webUrl+"\n"
+"账号:"+answerer.getMail()+"\n"
+"密码:"+answerer.getTel()+"\n"
+"注意:本次调研采用【"+isSecret+"】形式。在最后的群体报告中,您的个人信息均会隐去。您的个人报告只有您自己能看到。";
if (!mailServiceImpl.sendMail(mail, subject, content)) {
illegalMailList.add(answerer.getName());
}
}
}
String msg = "发布成功";
if (illegalMailList.size() > 0) {
msg = msg + "," + illegalMailList.toString() + "邮箱错误";
}
return Result.success("", msg + "!");
}
// 停止问卷
public Result end(int qnId) {
if (!super.update(new UpdateWrapper<CompanyQn>().eq("id", qnId).eq("status", CompanyQn.CompanyQnStatusRelease).set("status", CompanyQn.CompanyQnStatusEnd))) {

@ -23,7 +23,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -44,7 +46,7 @@ public class CompanyQnTitleServiceImpl extends ServiceImpl<CompanyQnTitleMapper,
// 列表
public Result<List<ResultQnTitleList>> qnTitleList(int qnId) {
QueryWrapper<CompanyQnTitle> qw = new QueryWrapper<>();
qw.eq("qn_id", qnId);
qw.eq("qn_id", qnId).orderByDesc("id");
List<CompanyQnTitle> list = super.list(qw);
List <ResultQnTitleList> result = new ArrayList<>();
for (CompanyQnTitle r : list) {
@ -96,36 +98,31 @@ public class CompanyQnTitleServiceImpl extends ServiceImpl<CompanyQnTitleMapper,
// 添入题库题目
public Result qnTitleAddModel(CompanyQnTitleController.paramsQnTitleAddModel params) {
for (int titleId : params.getBaseTitleIds()) {
QnTitle qnTitle = qnTitleService.getById(titleId);
if (null == qnTitle) {
return Result.err("未知题型");
}
CompanyQnTitle companyQnTitle = new CompanyQnTitle()
.setQnId(params.getQnId())
.setTitle(qnTitle.getTitle())
.setKind(qnTitle.getKind())
.setGroupId(CompanyQnTitle.ManageQnTitleBase)
.setOptions(qnTitle.getOptions());
if (!super.save(companyQnTitle)) {
return Result.err("保存出错");
}
Integer qnId = params.getQnId();
List<CompanyQnTitle> cList = super.list(new QueryWrapper<CompanyQnTitle>().select("title_id").eq("qn_id", qnId));
HashSet<Integer> idList = new HashSet<>();
ArrayList<CompanyQnTitle> list = new ArrayList<>();
for (CompanyQnTitle i : cList) {
idList.add(i.getTitleId());
}
for (int titleId : params.getQnTitleIds()) {
for (int titleId : params.getTitleIds()) {
if(idList.contains(titleId)){
continue;
}
QnTitle qnTitle = qnTitleService.getById(titleId);
if (null == qnTitle) {
return Result.err("未知题型");
}
CompanyQnTitle companyQnTitle = new CompanyQnTitle()
.setQnId(params.getQnId())
.setTitleId(qnTitle.getId())
.setTitle(qnTitle.getTitle())
.setKind(qnTitle.getKind())
.setGroupId(CompanyQnTitle.ManageQnTitleNotBase)
.setGroupId(qnTitle.getGroupId()==1?CompanyQnTitle.ManageQnTitleBase:CompanyQnTitle.ManageQnTitleNotBase)
.setOptions(qnTitle.getOptions());
if (!super.save(companyQnTitle)) {
return Result.err("保存出错");
}
list.add(companyQnTitle);
}
super.saveBatch(list);
return Result.success("");
}

@ -41,7 +41,8 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
.ge(null != params.getCreateTimeStart(), "created_at", params.getCreateTimeStart())
.le(null != params.getCreateTimeEnd(), "created_at", params.getCreateTimeEnd())
.ge(null != params.getUpdateTimeStart(), "updated_at", params.getUpdateTimeStart())
.le(null != params.getUpdateTimeEnd(), "updated_at", params.getUpdateTimeEnd());
.le(null != params.getUpdateTimeEnd(), "updated_at", params.getUpdateTimeEnd())
.orderByDesc("id");
IPage page = super.page(PageUtil.SetPage(params.getPageNum(), params.getPageSize()), qw);
page.convert(r -> {
resultCompany v = new resultCompany();

@ -30,7 +30,8 @@ public class QnGroupServiceImpl extends ServiceImpl<QnGroupMapper, QnGroup> impl
// 列表
public Result<List<QnGroup>> groupList(QnGroupController.paramsGroupList params){
QueryWrapper<QnGroup> qw = new QueryWrapper<QnGroup>()
.like(StringUtils.isNotBlank(params.getTitle()), "t1.title", params.getTitle());
.like(StringUtils.isNotBlank(params.getTitle()), "t1.title", params.getTitle())
.orderByDesc("t1.id");
return Result.success(qnGroupMapper.all(qw));
}

@ -46,8 +46,8 @@ public class QnTitleServiceImpl extends ServiceImpl<QnTitleMapper, QnTitle> impl
.ge(null != params.getCreateTimeStart(), "t1.created_at", params.getCreateTimeStart())
.le(null != params.getCreateTimeEnd(), "t1.created_at", params.getCreateTimeEnd())
.ge(null != params.getUpdateTimeStart(), "t1.updated_at", params.getUpdateTimeStart())
.le(null != params.getUpdateTimeEnd(), "t1.updated_at", params.getUpdateTimeEnd());
.le(null != params.getUpdateTimeEnd(), "t1.updated_at", params.getUpdateTimeEnd())
.orderByDesc("t1.id");
{
String groupWhere = "select id from qn_group where";
if (StringUtils.isNotBlank(params.getGroupTitle())) {
@ -60,6 +60,7 @@ public class QnTitleServiceImpl extends ServiceImpl<QnTitleMapper, QnTitle> impl
qw.inSql("group_id", groupWhere);
}
}
IPage page = qnTitleMapper.list(PageUtil.SetPage(params.getPageNum(), params.getPageSize()), qw);
page.convert(r -> {
QnTitleController.resultTitleList v = new QnTitleController.resultTitleList();
@ -81,6 +82,7 @@ public class QnTitleServiceImpl extends ServiceImpl<QnTitleMapper, QnTitle> impl
QnTitle qnTitle = new QnTitle()
.setTitle(params.getTitle())
.setGroupId(params.getGroupId())
.setTag(params.getTag())
.setKind(params.getKind())
.setStatus(1);
{
@ -96,7 +98,7 @@ public class QnTitleServiceImpl extends ServiceImpl<QnTitleMapper, QnTitle> impl
if (!super.save(qnTitle)) {
return Result.err("添加出错");
}
return Result.success();
return Result.success("");
}
// 修改
@ -120,6 +122,7 @@ public class QnTitleServiceImpl extends ServiceImpl<QnTitleMapper, QnTitle> impl
}
if (!super.update(new QnTitle(), qw
.set(StringUtils.isNotBlank(params.getTitle()), "title", params.getTitle())
.set(StringUtils.isNotBlank(params.getTag()),"tag",params.getTag())
.set(Common.higherZero(params.getKind()), "kind", params.getKind()))) {
return Result.err("操作失败");
}

@ -5,6 +5,8 @@ import org.springframework.util.DigestUtils;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class Common {
@ -31,7 +33,7 @@ public class Common {
return i.compareTo(0) == 1 ? true : false;
}
public static Object ObjectFieldValue(Object obj,String fieldName){
public static Object ObjectFieldValue(Object obj, String fieldName) {
Class<?> resultClz = obj.getClass();
Field[] fieldInfo = resultClz.getDeclaredFields();
for (Field field : fieldInfo) {
@ -46,6 +48,7 @@ public class Common {
}
return null;
}
public static Object changObjectValue(Object obj, String fieldName, Object value) {
Class<?> resultClz = obj.getClass();
Field[] fieldInfo = resultClz.getDeclaredFields(); //获取class里的所有字段 父类字段获取不到 注:如果出现加密解密失败 请先查看idno是否在父类中
@ -61,6 +64,20 @@ public class Common {
return obj;
}
public static Map<String, Object> objectToMap(Object obj) throws Exception {
Map<String, Object> map = new HashMap<>();
if (obj == null) {
return null;
}
Field[] fields = obj.getClass().getDeclaredFields();//获取类的各个属性值
for (Field field : fields) {
String fieldName = field.getName();//获取类的属性名称
String value = field.get(obj) != null ? field.get(obj).toString() : "";
map.put(fieldName, value);
}
return map;
}
public static Boolean isContain(int[] arr, int v) {
if (arr == null || arr.length == 0) {
return false;

@ -1,35 +1,72 @@
package com.zh.lingnuo.utils;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import org.apache.poi.ss.formula.functions.T;
import org.apache.poi.ss.usermodel.Workbook;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import org.apache.poi.xssf.usermodel.*;
import java.util.*;
/**
* List<Map<String,Object>> Excel
*/
public class ExcelExport {
public static void exportExcel(Collection<?> listData, Class<?> pojoClass, String headTitle, String sheetName, HttpServletResponse response) {
ExportParams params = new ExportParams(headTitle, sheetName);
params.setHeight((short) 8);
params.setStyle(ExcelExportMyStylerImpl.class);
try {
Workbook workbook = ExcelExportUtil.exportExcel(params, pojoClass, listData);
String fileName = headTitle + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
fileName = URLEncoder.encode(fileName, "UTF8");
response.setContentType("application/vnd.ms-excel;chartset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="+fileName + ".xls");
ServletOutputStream out=response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
/**
* src:
* @param src
* @return
*/
public static XSSFWorkbook createExcel(List<Map> list, String src) {
// 定义一个新的工作簿
XSSFWorkbook wb = new XSSFWorkbook();
// 创建一个Sheet页
XSSFSheet sheet = wb.createSheet("Sheet1");
//设置行高
sheet.setDefaultRowHeight((short) (2 * 256));
//设置列宽
sheet.setColumnWidth(0, 4000);
sheet.setColumnWidth(1, 4000);
sheet.setColumnWidth(2, 4000);
XSSFFont font = wb.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 16);
//获得表格第一行
XSSFRow row = sheet.createRow(0);
//根据需要给第一行每一列设置标题
int rowCellIndex = 0;
XSSFCell cell = row.createCell(rowCellIndex);
Set<Object> keys = list.get(0).keySet();
Object[] keysArray = keys.toArray();
for (Object key : keys) {
cell = row.createCell(rowCellIndex);
cell.setCellValue( key.toString());
rowCellIndex++;
}
XSSFRow rows;
XSSFCell cells;
//循环拿到的数据给所有行每一列设置对应的值
for (int i = 0; i < list.size(); i++) {
// 在这个sheet页里创建一行
rows = sheet.createRow(i + 1);
// 该行创建一个单元格,在该单元格里设置值
rowCellIndex = 0;
for (Object s : keysArray) {
cells = rows.createCell(rowCellIndex);
cells.setCellValue(list.get(i).get(s).toString());
rowCellIndex++;
}
}
// try {
// File file = new File(src);
// FileOutputStream fileOutputStream = new FileOutputStream(file);
// wb.write(fileOutputStream);
// wb.close();
// fileOutputStream.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
return wb;
}
}
}

@ -1,84 +0,0 @@
package com.zh.lingnuo.utils;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import cn.afterturn.easypoi.excel.export.styler.AbstractExcelExportStyler;
import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
/**
* @ClassName: ExcelExportMyStylerImpl
* @Description:
* @Author: sunt
* @Date: 2019/8/29 21:39
* @Version 1.0
**/
public class ExcelExportMyStylerImpl extends AbstractExcelExportStyler implements IExcelExportStyler {
public ExcelExportMyStylerImpl(Workbook workbook) {
super.createStyles(workbook);
}
@Override
public CellStyle getTitleStyle(short color) {
CellStyle titleStyle = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);// 加粗
titleStyle.setFont(font);
titleStyle.setAlignment(HorizontalAlignment.CENTER);// 居中
titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
titleStyle.setFillForegroundColor(IndexedColors.AQUA.index);// 设置颜色
titleStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
titleStyle.setBorderRight(BorderStyle.THIN);
titleStyle.setWrapText(true);
return titleStyle;
}
@SuppressWarnings("deprecation")
@Override
public CellStyle stringSeptailStyle(Workbook workbook, boolean isWarp) {
CellStyle style = workbook.createCellStyle();
// style.setAlignment(CellStyle.ALIGN_CENTER);
// style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
style.setDataFormat(STRING_FORMAT);
if (isWarp) {
style.setWrapText(true);
}
return style;
}
@Override
public CellStyle getHeaderStyle(short color) {
CellStyle titleStyle = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);// 加粗
font.setColor(IndexedColors.RED.index);
font.setFontHeightInPoints((short) 11);
titleStyle.setFont(font);
titleStyle.setAlignment(HorizontalAlignment.CENTER);// 居中
titleStyle.setFillForegroundColor(IndexedColors.WHITE.index);// 设置颜色
titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
titleStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
titleStyle.setBorderRight(BorderStyle.THIN);
titleStyle.setWrapText(true);
return titleStyle;
}
@SuppressWarnings("deprecation")
@Override
public CellStyle stringNoneStyle(Workbook workbook, boolean isWarp) {
CellStyle style = workbook.createCellStyle();
// style.setAlignment(CellStyle.ALIGN_CENTER);
// style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
style.setDataFormat(STRING_FORMAT);
if (isWarp) {
style.setWrapText(true);
}
return style;
}
}

@ -228,6 +228,7 @@ public class ExcelRead {
//判断成员变量的类型
Field field = texcel.getClass().getDeclaredField((String) map.getValue());
String object = field.getGenericType().getTypeName();
System.out.println(object.toString());
if (object.endsWith("String")) {
//执行set方法
method.invoke(texcel, celldata);
@ -243,7 +244,12 @@ public class ExcelRead {
method.invoke(texcel, middata);
}
if (object.endsWith("Integer")) {
Integer middata = Integer.parseInt(celldata);
Integer middata = null;
try {
middata = Integer.parseInt(celldata);
} catch (NumberFormatException e) {
}
//执行set方法
method.invoke(texcel, middata);
}

@ -82,9 +82,9 @@ web:
webUrl: http://questionnaire.linac.net
apiPath: com.zh.lingnuo.controller
# mac图片地址
uploadPath: /Users/apple/Pictures
# uploadPath: /Users/apple/Pictures
# 线上图片上传位置
# uploadPath: /static/sws/upload/
uploadPath: /static/sws/upload/
# 图片压缩尺寸界限(200*1024)
picSizeLimit: 204800
# cdn: http://cdn.sws010.com

Loading…
Cancel
Save