diff --git a/src/main/java/io/v/nutz/wakershome/controller/review/StatisticsZpController.java b/src/main/java/io/v/nutz/wakershome/controller/review/StatisticsZpController.java index b306e00..1f19667 100644 --- a/src/main/java/io/v/nutz/wakershome/controller/review/StatisticsZpController.java +++ b/src/main/java/io/v/nutz/wakershome/controller/review/StatisticsZpController.java @@ -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 list = new ArrayList<>(); + resultMap.put("schoolName", Globals.schoolName); + + CommentZb khzb = map.getAs("zbxx", CommentZb.class); + List nrs = khzb.getNrs(); + + nrs.forEach(v -> { + NutMap nutMap = NutMap.NEW(); + List bzs = v.getBzs(); + String nr = bzs.stream().sorted(Comparator.comparing(CommentBz::getContentNumber)).map(item -> { + return item.getContentNumber() + "." + item.getInspection() + "(" + item.getScore() + "分)"; + }).collect(Collectors.joining("
")); + + 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(); + } + } + } diff --git a/src/main/java/io/v/nutz/wakershome/mobile/MWakesHomeReviewController.java b/src/main/java/io/v/nutz/wakershome/mobile/MWakesHomeReviewController.java index dd45242..5a1874a 100644 --- a/src/main/java/io/v/nutz/wakershome/mobile/MWakesHomeReviewController.java +++ b/src/main/java/io/v/nutz/wakershome/mobile/MWakesHomeReviewController.java @@ -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()); } diff --git a/src/main/java/io/v/nutz/wakershome/model/review/CommentPeo.java b/src/main/java/io/v/nutz/wakershome/model/review/CommentPeo.java index ac2f084..41bd52c 100644 --- a/src/main/java/io/v/nutz/wakershome/model/review/CommentPeo.java +++ b/src/main/java/io/v/nutz/wakershome/model/review/CommentPeo.java @@ -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") diff --git a/src/main/resources/docTemplate/WakesHome.docx b/src/main/resources/docTemplate/WakesHome.docx new file mode 100644 index 0000000..42c097f Binary files /dev/null and b/src/main/resources/docTemplate/WakesHome.docx differ diff --git a/src/main/resources/views/platform/wakeshome/review/statistics.html b/src/main/resources/views/platform/wakeshome/review/statistics.html index 17fb720..7b020e2 100644 --- a/src/main/resources/views/platform/wakeshome/review/statistics.html +++ b/src/main/resources/views/platform/wakeshome/review/statistics.html @@ -83,7 +83,7 @@ layout("/layouts/platform.html"){ fixed="right"> @@ -246,6 +246,9 @@ layout("/layouts/platform.html"){ 'wakes-home-review': httpVueLoader('/components/wakeshome/review/ReviewResult.vue?v=' + moment(new Date()).unix()), }, methods: { + doDownLoad(row){ + window.open(loc() + '/doDownLoad?zbId=' + this.pageForm.zbId + '&unionId=' + row.id) + }, async getReviewResultNum(row) { const res = await $.post(loc() + "/getReviewResultNum", { zbId: this.userPageForm.zbId, @@ -254,8 +257,6 @@ layout("/layouts/platform.html"){ this.reviewResultData = res.data }, async openUserView(row) { - // const res = await $.post(loc() + "/getBzById", {peoId: row.id}) - // this.zpxx = res.data this.userDrawer = true this.$nextTick(() => { this.$refs.wakesHomeReview.findOne(row.id) @@ -309,6 +310,12 @@ layout("/layouts/platform.html"){ this.doSearch() }, }, + computed: { + canDownload() { + const data = this.zbList.find(v=> v.id === this.pageForm.zbId) + return data.commentTarget===3 && data.unionIds + } + }, async created() { await this.getZbList() this.unions = await getUnions(null)