活动导出
This commit is contained in:
+125
-62
@@ -5,6 +5,7 @@ import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.afterturn.easypoi.excel.export.ExcelExportService;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.config.Configure;
|
||||
@@ -13,12 +14,12 @@ import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.base.utils.DateUtil;
|
||||
import io.v.nutz.base.utils.OfficeTemplateUtil;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.utils.ViTool;
|
||||
import io.v.nutz.sys.models.Sys_union;
|
||||
import io.v.nutz.sys.models.Sys_unit;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.services.SysUnionService;
|
||||
import io.v.nutz.web.commons.base.Globals;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.activity.models.*;
|
||||
import io.v.nutz.zhgh.activity.services.ActivityPlanService;
|
||||
@@ -28,8 +29,8 @@ import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.Static;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
@@ -46,6 +47,7 @@ import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -69,28 +71,22 @@ public class ActivityCommonController {
|
||||
/*@Inject
|
||||
private HdTypeService hdTypeService;*/
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private SysUnionService sysUnionService;
|
||||
|
||||
@Inject
|
||||
private ActivitySchoolService activitySchoolService;
|
||||
|
||||
@Inject
|
||||
private ActivityPlanService activityPlanService;
|
||||
|
||||
@Inject
|
||||
private ActivitySchoolApplyService activitySchoolApplyService;
|
||||
|
||||
@Inject("ActivityEvent")
|
||||
private ViService<ActivityEvent> activityEventService;
|
||||
|
||||
@Inject("ActivitySchoolTeam")
|
||||
private ViService<ActivitySchoolTeam> activitySchoolTeamViService;
|
||||
|
||||
@Inject("ActivitySchoolEvent")
|
||||
private ViService<ActivitySchoolEvent> activitySchoolEventService;
|
||||
|
||||
|
||||
@Inject
|
||||
private OfficeTemplateUtil officeTemplateUtil;
|
||||
|
||||
@@ -281,7 +277,7 @@ public class ActivityCommonController {
|
||||
|
||||
|
||||
@At
|
||||
public void exportXlsx(String id, String unionId, HttpServletResponse response) throws IOException {
|
||||
public void exportXlsx(String id, String unionId,Boolean isUnion, HttpServletResponse response) throws IOException {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
app.username,
|
||||
@@ -305,13 +301,13 @@ public class ActivityCommonController {
|
||||
LEFT JOIN activity_event ev ON ev.id = app.eventId
|
||||
LEFT JOIN activity_school sc ON sc.id=app.activityId
|
||||
WHERE
|
||||
activityId = @id
|
||||
activityId = @id
|
||||
and app.status=2
|
||||
$cnd
|
||||
ORDER BY
|
||||
u.unioncode ASC,
|
||||
app.applyUser DESC,
|
||||
ev.allName DESC,
|
||||
u.unionname DESC,
|
||||
app.`team` asc
|
||||
""").setParam("id", id);
|
||||
|
||||
@@ -343,19 +339,26 @@ public class ActivityCommonController {
|
||||
// exportEntities.add(new ExcelExportEntity("身份", "sf", 20));
|
||||
exportEntities.add(new ExcelExportEntity("报名人", "applyUserName", 20));
|
||||
|
||||
Map<String, List<NutMap>> listMap = list.stream().collect(Collectors.groupingBy(v -> v.getString("unionname")));
|
||||
Workbook workbook = new XSSFWorkbook();
|
||||
listMap.forEach((k, v) -> {
|
||||
ExcelExportService service = new ExcelExportService();
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setTitle(k);
|
||||
exportParams.setSheetName(k);
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
service.createSheetForMap(workbook, exportParams, exportEntities, v);
|
||||
});
|
||||
|
||||
if (isUnion != null && isUnion) {
|
||||
Map<String, List<NutMap>> listMap = list.stream().collect(Collectors.groupingBy(v -> v.getString("unionname")));
|
||||
ViTool.excelResponse(response, activityName + "报名表.xlsx");
|
||||
Workbook finalWorkbook = workbook;
|
||||
listMap.forEach((k, v) -> {
|
||||
ExcelExportService service = new ExcelExportService();
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setTitle(k);
|
||||
exportParams.setSheetName(k);
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
service.createSheetForMap(finalWorkbook, exportParams, exportEntities, v);
|
||||
});
|
||||
} else {
|
||||
ViTool.excelResponse(response, activityName + "报名表(总表).xlsx");
|
||||
workbook = ExcelExportUtil.exportExcel(new ExportParams(), exportEntities, list);
|
||||
}
|
||||
|
||||
try {
|
||||
ViTool.excelResponse(response, activityName + "报名表.xlsx");
|
||||
ServletOutputStream outputStream = response.getOutputStream();
|
||||
workbook.write(outputStream);
|
||||
outputStream.close();
|
||||
@@ -403,55 +406,115 @@ public class ActivityCommonController {
|
||||
public void export(String id, String unionId, HttpServletResponse response) {
|
||||
try {
|
||||
ActivitySchool activity = activitySchoolService.fetch(id);
|
||||
String fileName = Globals.MyConfig.getString("GxName") + activity.getName() + "报名表";
|
||||
String fileName = activity.getName() + "报名表";
|
||||
response.addHeader("Content-Type", "application/octet-stream");
|
||||
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".zip");
|
||||
|
||||
Sql queryAllSql = Sqls.create("""
|
||||
SELECT
|
||||
act.*,
|
||||
ae.allName
|
||||
FROM
|
||||
activity_school_apply act
|
||||
LEFT JOIN activity_event ae ON act.eventId = ae.id
|
||||
WHERE
|
||||
act.activityId = @actId
|
||||
ORDER BY act.eventId ASC
|
||||
""").setParam("actId", id);
|
||||
List<NutMap> resultList = activitySchoolApplyService.listMap(queryAllSql);
|
||||
|
||||
List<ActivitySchoolApply> schoolApplies = BeanUtil.copyToList(resultList, ActivitySchoolApply.class);
|
||||
|
||||
|
||||
List<ActivityBasicUnion> basicUnions = activitySchoolService.dao().query(ActivityBasicUnion.class, Cnd.NEW().asc("unioncode"));
|
||||
|
||||
if (Lang.isEmpty(schoolApplies)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ZipOutputStream zipOutputStream = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
|
||||
for (ActivityBasicUnion union : basicUnions) {
|
||||
NutMap map = new NutMap();
|
||||
map.setv("unionName", union.getUnionname());
|
||||
if (!"6132df49148c43b1a8829c108ad0fcbf".equals(id)) {
|
||||
NutMap map = new NutMap();
|
||||
map.setv("unionName", union.getUnionname());
|
||||
List<ActivitySchoolApply> ydhUserList = schoolApplies.stream().filter(v -> v.getIdentity().contains("1")).collect(Collectors.toList());
|
||||
ActivitySchoolApply jlUser = schoolApplies.stream().filter(v -> v.getIdentity().contains("2")).findFirst().orElse(null);
|
||||
ActivitySchoolApply ldUser = schoolApplies.stream().filter(v -> v.getIdentity().contains("3")).findFirst().orElse(null);
|
||||
ydhUserList.forEach(y -> y.setSf("队员"));
|
||||
for (int i = 0; i < ydhUserList.size(); i++) {
|
||||
ydhUserList.get(i).setSf("队员");
|
||||
ydhUserList.get(i).setIndex(i + 1);
|
||||
}
|
||||
map.setv("headName", fileName);
|
||||
if (Lang.isNotEmpty(ldUser)) {
|
||||
map.setv("ldUserName", ldUser.getUsername());
|
||||
map.setv("ldMobile", ldUser.getMobile());
|
||||
}
|
||||
if (Lang.isNotEmpty(jlUser)) {
|
||||
map.setv("jlUserName", jlUser.getUsername());
|
||||
}
|
||||
|
||||
List<ActivitySchoolApply> schoolApplies = activitySchoolApplyService.query(Cnd.where("activityId", "=", id));
|
||||
map.setv("ydhUser", ydhUserList);
|
||||
|
||||
List<ActivitySchoolApply> ydhUserList = schoolApplies.stream().filter(v -> v.getIdentity().contains("1")).collect(Collectors.toList());
|
||||
ActivitySchoolApply jlUser = schoolApplies.stream().filter(v -> v.getIdentity().contains("2")).findFirst().orElse(null);
|
||||
ActivitySchoolApply ldUser = schoolApplies.stream().filter(v -> v.getIdentity().contains("3")).findFirst().orElse(null);
|
||||
ydhUserList.stream().forEach(y -> y.setSf("队员"));
|
||||
for (int i = 0; i < ydhUserList.size(); i++) {
|
||||
ydhUserList.get(i).setSf("队员");
|
||||
ydhUserList.get(i).setIndex(i + 1);
|
||||
map.setv("applyDate", DateUtil.getDate());
|
||||
|
||||
String twoFileName = union.getUnionname() + "比赛报名表.docx";
|
||||
zipOutputStream.putNextEntry(new ZipEntry(twoFileName));
|
||||
|
||||
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
|
||||
Configure config = Configure.newBuilder().bind("ydhUser", policy).build();
|
||||
/* if (activity.getApplyType() == 1) {
|
||||
templateUrl = officeTemplateUtil.getPath("activity_list1");
|
||||
} else if (activity.getApplyType() == 2) {
|
||||
templateUrl = officeTemplateUtil.getPath("activity_list");
|
||||
}officeTemplateUtil.getPath("activity_user");
|
||||
*/
|
||||
String officeTemplateUtilPath = officeTemplateUtil.getPath("activity_user");
|
||||
XWPFTemplate.compile(officeTemplateUtilPath, config).render(map).write(zipOutputStream);
|
||||
zipOutputStream.closeEntry();
|
||||
} else {
|
||||
List<ActivitySchoolApply> unionApply = schoolApplies.stream().filter(v -> v.getUnionId().equals(union.getId())).collect(Collectors.toList());
|
||||
|
||||
if (Lang.isEmpty(unionApply)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
NutMap result = NutMap.NEW();
|
||||
// 获取主席
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.username,
|
||||
u.mobile
|
||||
FROM
|
||||
sys_user_role sur
|
||||
LEFT JOIN sys_user u ON sur.userId = u.id
|
||||
WHERE
|
||||
sur.roleId = @roleId AND sur.unionId = @unionId
|
||||
""").setParam("roleId", Roles.GH01).setParam("unionId", union.getId());
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap userMap = (NutMap) sql.getResult();
|
||||
|
||||
// 设置序号
|
||||
for (int i = 0; i < unionApply.size(); i++) {
|
||||
unionApply.get(i).setIndex(i + 1);
|
||||
unionApply.get(i).setSf(unionApply.get(i).getAllName().substring(0, 2));
|
||||
}
|
||||
|
||||
result.put("activityName", cn.hutool.core.date.DateUtil.year(cn.hutool.core.date.DateUtil.parseDate(activity.getApplyStartTime())) + "年" + activity.getName());
|
||||
result.put("unionName", union.getUnionname());
|
||||
result.put("fzr", userMap.getString("username"));
|
||||
result.put("mobile", userMap.getString("mobile"));
|
||||
result.put("list", unionApply);
|
||||
|
||||
zipOutputStream.putNextEntry(new ZipEntry(union.getUnionname() + "报名表.docx"));
|
||||
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("docTemplate/activity/activity_jsz.docx");
|
||||
|
||||
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
|
||||
Configure config = Configure.newBuilder().bind("list", policy).build();
|
||||
XWPFTemplate.compile(inputStream, config).render(result, zipOutputStream);
|
||||
zipOutputStream.closeEntry();
|
||||
}
|
||||
map.setv("headName", fileName);
|
||||
if (Lang.isNotEmpty(ldUser)) {
|
||||
map.setv("ldUserName", ldUser.getUsername());
|
||||
map.setv("ldMobile", ldUser.getMobile());
|
||||
}
|
||||
if (Lang.isNotEmpty(jlUser)) {
|
||||
map.setv("jlUserName", jlUser.getUsername());
|
||||
}
|
||||
|
||||
map.setv("ydhUser", ydhUserList);
|
||||
|
||||
map.setv("applyDate", DateUtil.getDate());
|
||||
|
||||
String twoFileName = union.getUnionname() + "比赛报名表.docx";
|
||||
zipOutputStream.putNextEntry(new ZipEntry(twoFileName));
|
||||
|
||||
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
|
||||
Configure config = Configure.newBuilder().bind("ydhUser", policy).build();
|
||||
/* if (activity.getApplyType() == 1) {
|
||||
templateUrl = officeTemplateUtil.getPath("activity_list1");
|
||||
} else if (activity.getApplyType() == 2) {
|
||||
templateUrl = officeTemplateUtil.getPath("activity_list");
|
||||
}officeTemplateUtil.getPath("activity_user");
|
||||
*/
|
||||
String officeTemplateUtilPath = officeTemplateUtil.getPath("activity_user");
|
||||
assert officeTemplateUtilPath != null;
|
||||
XWPFTemplate.compile(officeTemplateUtilPath, config).render(map).write(zipOutputStream);
|
||||
zipOutputStream.closeEntry();
|
||||
}
|
||||
zipOutputStream.flush();
|
||||
zipOutputStream.close();
|
||||
|
||||
Reference in New Issue
Block a user