This commit is contained in:
Paidax
2024-08-02 18:15:19 +08:00
parent efdedc3405
commit aa444a21ae
5 changed files with 101 additions and 7 deletions
@@ -1,15 +1,25 @@
package io.v.nutz.wakershome.controller.review;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import io.v.nutz.annontation.ViReturn;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.modules.models.PageForm;
import io.v.nutz.util.ShiroUtil;
import io.v.nutz.wakershome.model.review.CommentBz;
import io.v.nutz.wakershome.model.review.CommentNr;
import io.v.nutz.wakershome.model.review.CommentPeo;
import io.v.nutz.wakershome.model.review.CommentZb;
import io.v.nutz.wakershome.service.review.CommentPeoService;
import io.v.nutz.wakershome.service.review.CommentZbService;
import io.v.nutz.web.commons.base.Globals;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.ddr.poi.html.HtmlRenderPolicy;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
@@ -21,6 +31,13 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @ClassName statisticsController
* @Description TODO
@@ -92,7 +109,6 @@ public class StatisticsZpController {
Sql sql = Sqls.create("""
SELECT
peo.*,
u.username userName,
u.loginname loginName,
unitname unitName
FROM
@@ -142,4 +158,58 @@ public class StatisticsZpController {
}
@At
@Ok("void")
public void doDownLoad(String zbId, String unionId, HttpServletResponse response) {
CommentPeo peo = commentZbService.dao().fetch(CommentPeo.class, Cnd.where("unionId", "=", unionId).and("zbId", "=", zbId));
NutMap map = commentPeoService.getBzById(peo.getId());
//最后的导出表
NutMap resultMap = NutMap.NEW();
List<NutMap> list = new ArrayList<>();
resultMap.put("schoolName", Globals.schoolName);
CommentZb khzb = map.getAs("zbxx", CommentZb.class);
List<CommentNr> nrs = khzb.getNrs();
nrs.forEach(v -> {
NutMap nutMap = NutMap.NEW();
List<CommentBz> bzs = v.getBzs();
String nr = bzs.stream().sorted(Comparator.comparing(CommentBz::getContentNumber)).map(item -> {
return item.getContentNumber() + "." + item.getInspection() + "(" + item.getScore() + "分)";
}).collect(Collectors.joining("<br/>"));
int jf = bzs.stream().mapToInt(item -> Integer.parseInt(item.getScore())).sum();
int zpf = bzs.stream().mapToInt(item -> Integer.parseInt(item.getResultScore())).sum();
CommentBz commentBz = bzs.stream().findFirst().orElse(new CommentBz());
nutMap.put("xh", Convert.numberToChinese(Double.parseDouble(v.getContentNumber()), false));
nutMap.put("zb", v.getContent());
nutMap.put("nr", nr);
nutMap.put("jf", jf);
nutMap.put("zpf", zpf);
nutMap.put("bz", commentBz.getOptions());
list.add(nutMap);
});
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
htmlRenderPolicy.getConfig().setShowDefaultTableBorderInTableCell(true);
Configure config = Configure.newBuilder().bind("list", policy)
.bind("list.nr", htmlRenderPolicy).build();
resultMap.put("list", list);
String fileName = Globals.schoolName + "“模范教工小家”评分标准";
try {
response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1") + "\".docx");
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/WakesHome.docx");
XWPFTemplate.compile(inputStream, config).render(resultMap, response.getOutputStream());
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -12,6 +12,7 @@ import io.v.nutz.base.utils.Vi;
import io.v.nutz.dao.CndPlus;
import io.v.nutz.modules.models.PageForm;
import io.v.nutz.sys.models.Sys_union;
import io.v.nutz.sys.models.User;
import io.v.nutz.wakershome.model.review.CommentBz;
import io.v.nutz.wakershome.model.review.CommentPeo;
import io.v.nutz.wakershome.model.review.CommentResult;
@@ -148,7 +149,7 @@ public class MWakesHomeReviewController {
@Aop(TransAop.READ_COMMITTED)
public Object doSubmit(WakesHomeVo wakesHomeVo) {
try {
System.out.println(wakesHomeVo);
User user = baseService.dao().fetch(User.class, Cnd.where("id", "=", ShiroUtil.getUser()));
CommentPeo peo = new CommentPeo();
if (Strings.isNotBlank(wakesHomeVo.getEvaluatedPersonId())) {
peo.setEvaluatedPersonId(wakesHomeVo.getEvaluatedPersonId());
@@ -159,7 +160,10 @@ public class MWakesHomeReviewController {
peo.setZbId(wakesHomeVo.getId());
peo.setReviewTime(DateUtil.now());
peo.setFiles(wakesHomeVo.getFiles());
peo.setUserId((String) ShiroUtil.getPrincipalProperty("id"));
peo.setUserId(user.getId());
peo.setUserName(user.getUsername());
peo.setUnionId(user.getUnionid());
peo.setUnionName(user.getUnionname());
if (Strings.isNotBlank(wakesHomeVo.getPresidentOpinions())) {
peo.setPresidentOpinions(wakesHomeVo.getPresidentOpinions());
}
@@ -18,12 +18,25 @@ public class CommentPeo {
@Prev(els = {@EL("uuid()")})
private String id;
@Column
@Comment("测评人")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userId;
@Column
@Comment("测评人姓名")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String userName;
@Column
@Comment("测评人工会id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unionId;
@Column
@Comment("测评人工会名称")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String unionName;
@Column
@Comment("被测评人id")