校工会文化活动-报名统计:新增导出签字表(excel按所属会来分Sheet页)
This commit is contained in:
+78
@@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
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.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
@@ -16,6 +17,7 @@ import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||
import com.budwk.app.base.utils.DynamicFormFieldParserUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.sys.models.Sys_union;
|
||||
import com.budwk.app.web.commons.base.Globals;
|
||||
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
|
||||
import com.budwk.app.zhgh.activity.culture.service.ActivityCultureApplyUserService;
|
||||
@@ -24,6 +26,7 @@ import com.budwk.app.zhgh.club.service.SysClubService;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
@@ -248,6 +251,74 @@ public class ActivityCultureUserStatisticsController {
|
||||
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission(value = {"activity.culture.userStatistics.school", "activity.culture.userStatistics.branch", "activity.culture.userStatistics.club"}, mode = SaMode.OR)
|
||||
@Ok("void")
|
||||
@ApiOperation("导出签字表")
|
||||
public void doExportSignSheet(String id, HttpServletResponse response) {
|
||||
try {
|
||||
ActivityTissue tissue = dao.fetch(ActivityTissue.class, id);
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
atp.userName,
|
||||
IFNULL(un.name, atp.unionName) unionName,
|
||||
IFNULL(un.id, atp.unionId) unionId,
|
||||
un.unionCode
|
||||
FROM
|
||||
`activity_tissue_person` atp
|
||||
LEFT JOIN sys_union un ON un.id = atp.unionId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("atp.tissueId", "=", id);
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
cnd.and("atp.unionId", "=", SecurityUtil.getUnionId());
|
||||
}
|
||||
cnd.asc("un.unionCode");
|
||||
cnd.asc("atp.userName");
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> list = activityCultureApplyUserService.listMap(sql);
|
||||
|
||||
List<ExcelExportEntity> entityList = new ArrayList<>();
|
||||
ExcelExportEntity indexEntity = new ExcelExportEntity("序号", "indexNo", 10);
|
||||
indexEntity.setType(10);
|
||||
entityList.add(indexEntity);
|
||||
entityList.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entityList.add(new ExcelExportEntity("所属工会", "unionName", 30));
|
||||
entityList.add(new ExcelExportEntity("签字", "sign", 30));
|
||||
|
||||
Workbook workbook = new XSSFWorkbook();
|
||||
int sheetIndex = 1;
|
||||
for (Sys_union union : dao.query(Sys_union.class, Cnd.NEW().asc(Sys_union::getUnionCode))) {
|
||||
List<NutMap> unionUserList = list.stream()
|
||||
.filter(row -> StrUtil.equals(row.getString("unionId"), union.getId()))
|
||||
.collect(Collectors.toList());
|
||||
if (unionUserList.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
for (int i = 0; i < unionUserList.size(); i++) {
|
||||
unionUserList.get(i).put("indexNo", i + 1);
|
||||
}
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
exportParams.setTitle(tissue.getName() + "签字表");
|
||||
exportParams.setSheetName(formatSheetName(union.getName(), sheetIndex));
|
||||
new ExcelExportService().createSheetForMap(workbook, exportParams, entityList, unionUserList);
|
||||
sheetIndex++;
|
||||
}
|
||||
if (sheetIndex == 1) {
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
exportParams.setTitle(tissue.getName() + "签字表");
|
||||
exportParams.setSheetName("签字表");
|
||||
new ExcelExportService().createSheetForMap(workbook, exportParams, entityList, new ArrayList<>());
|
||||
}
|
||||
CommonDownloadUtil.download(tissue.getName() + "签字表.xlsx", workbook, response);
|
||||
} catch (Exception e) {
|
||||
log.error("文化活动签字表导出失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission(value = {"activity.culture.userStatistics.school", "activity.culture.userStatistics.branch", "activity.culture.userStatistics.club"}, mode = SaMode.OR)
|
||||
@Ok("json:full")
|
||||
@@ -279,5 +350,12 @@ public class ActivityCultureUserStatisticsController {
|
||||
}
|
||||
}
|
||||
|
||||
private String formatSheetName(String sheetName, int index) {
|
||||
String name = StrUtil.blankToDefault(sheetName, "分工会" + index).replaceAll("[\\\\/:*?\\[\\]]", "");
|
||||
if (StrUtil.isBlank(name)) {
|
||||
name = "分工会" + index;
|
||||
}
|
||||
return StrUtil.sub(name, 0, 31);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -57,6 +57,8 @@ const ACTIVITY_CULTURE_USER_STATISTICS = {
|
||||
<table-tool label="人员列表">
|
||||
<el-button @click="doExport" icon="el-icon-s-promotion" type="primary" size="mini">导出
|
||||
</el-button>
|
||||
<el-button v-if="activity_type===40001" @click="doExportSignSheet" icon="el-icon-edit-outline" type="primary" size="mini">导出签字表
|
||||
</el-button>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" row-key="id"
|
||||
@@ -150,6 +152,14 @@ const ACTIVITY_CULTURE_USER_STATISTICS = {
|
||||
unionId: unionId
|
||||
})
|
||||
},
|
||||
async doExportSignSheet() {
|
||||
if (!this.pageForm.activityId) {
|
||||
return
|
||||
}
|
||||
this.$downLoad("/platform/activity/culture/userStatistics/doExportSignSheet", {
|
||||
id: this.pageForm.activityId
|
||||
})
|
||||
},
|
||||
pageData() {
|
||||
if (!this.pageForm.activityId) {
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user