feat: 困难帮扶优化
This commit is contained in:
@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.budwk.app.base.exception.BaseException;
|
import com.budwk.app.base.exception.BaseException;
|
||||||
import com.budwk.app.sys.models.Sys_file;
|
import com.budwk.app.sys.models.Sys_file;
|
||||||
import com.budwk.app.sys.models.Sys_office_template;
|
import com.budwk.app.sys.models.Sys_office_template;
|
||||||
|
import com.budwk.app.sys.services.SysFileService;
|
||||||
import com.budwk.app.sys.utils.SysFileMinIoUtil;
|
import com.budwk.app.sys.utils.SysFileMinIoUtil;
|
||||||
import com.deepoove.poi.XWPFTemplate;
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
import com.deepoove.poi.config.Configure;
|
import com.deepoove.poi.config.Configure;
|
||||||
@@ -22,6 +23,7 @@ import java.io.ByteArrayInputStream;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
@@ -39,6 +41,9 @@ public class SysOfficeTemplateUtil {
|
|||||||
@Inject
|
@Inject
|
||||||
private Dao dao;
|
private Dao dao;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private SysFileService sysFileService;
|
||||||
|
|
||||||
public String getTemplateFileName(String templateCode) {
|
public String getTemplateFileName(String templateCode) {
|
||||||
Sys_office_template officeTemplate = dao.fetch(Sys_office_template.class, Cnd.where(Sys_office_template::getTemplateCode, "=", templateCode));
|
Sys_office_template officeTemplate = dao.fetch(Sys_office_template.class, Cnd.where(Sys_office_template::getTemplateCode, "=", templateCode));
|
||||||
if (ObjectUtil.isNull(officeTemplate)) {
|
if (ObjectUtil.isNull(officeTemplate)) {
|
||||||
@@ -70,7 +75,16 @@ public class SysOfficeTemplateUtil {
|
|||||||
if (ObjectUtil.isEmpty(sysFile)) {
|
if (ObjectUtil.isEmpty(sysFile)) {
|
||||||
throw new BaseException("模板文件不存在");
|
throw new BaseException("模板文件不存在");
|
||||||
}
|
}
|
||||||
byte[] fileBytes = SysFileMinIoUtil.getFileBytes(sysFile.getBucket(), sysFile.getStoragePath());
|
byte[] fileBytes;
|
||||||
|
try {
|
||||||
|
fileBytes = sysFileService.download(id);
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("模板文件读取失败,templateCode={},fileId={}", templateCode, id, e);
|
||||||
|
throw new BaseException("模板 {} 的文件读取失败:{}", templateCode, e.getMessage());
|
||||||
|
}
|
||||||
|
if (fileBytes == null || fileBytes.length == 0) {
|
||||||
|
throw new BaseException("模板 {} 的文件为空或读取失败,文件名:{}", templateCode, sysFile.getName());
|
||||||
|
}
|
||||||
return new ByteArrayInputStream(fileBytes);
|
return new ByteArrayInputStream(fileBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+56
-26
@@ -2,7 +2,6 @@ package com.budwk.app.zhgh.staffbenefit.difficulthelp.controller;
|
|||||||
|
|
||||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
|
|
||||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||||
@@ -327,11 +326,33 @@ public class DifficultHelpReadingController {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@Ok("void")
|
@Ok("void")
|
||||||
|
@SaCheckPermission("difficultHelp.reading")
|
||||||
|
public void exportReadingApply(String id, DifficultHelpPageParam pageParam, HttpServletResponse response, Boolean print) throws Exception {
|
||||||
|
Cnd cnd = Cnd.where("id", "=", id);
|
||||||
|
pageParam.buildReadingSearch(cnd, "");
|
||||||
|
if (difficultHelpCommonService.count(cnd) == 0) {
|
||||||
|
throw new RuntimeException("该记录不在当前可查看的范围内,无法导出");
|
||||||
|
}
|
||||||
|
doExportApply(id, response, print);
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@Ok("void")
|
||||||
|
@SaCheckLogin
|
||||||
public void doExportApply(String id, HttpServletResponse response, Boolean print) throws Exception {
|
public void doExportApply(String id, HttpServletResponse response, Boolean print) throws Exception {
|
||||||
DifficultHelpInfo difficultHelp = difficultHelpCommonService.fetch(id);
|
DifficultHelpInfo difficultHelp = difficultHelpCommonService.fetch(id);
|
||||||
if (difficultHelp == null) {
|
if (difficultHelp == null) {
|
||||||
throw new RuntimeException("该条记录不存在");
|
throw new RuntimeException("该条记录不存在");
|
||||||
}
|
}
|
||||||
|
boolean ownApply = AuthUtil.hasPermission("difficultHelp.mine")
|
||||||
|
&& SecurityUtil.getUserId().equals(difficultHelp.getCreatedBy());
|
||||||
|
if (!ownApply) {
|
||||||
|
Cnd cnd = Cnd.where("id", "=", id);
|
||||||
|
new DifficultHelpPageParam().buildReadingSearch(cnd, "");
|
||||||
|
if (!AuthUtil.hasPermission("difficultHelp.reading") || difficultHelpCommonService.count(cnd) == 0) {
|
||||||
|
throw new RuntimeException("该记录不在当前可查看的范围内,无法导出");
|
||||||
|
}
|
||||||
|
}
|
||||||
HashMap<String, Object> docData = new HashMap<>();
|
HashMap<String, Object> docData = new HashMap<>();
|
||||||
|
|
||||||
docData.put("unionName", difficultHelp.getUnitName());
|
docData.put("unionName", difficultHelp.getUnitName());
|
||||||
@@ -493,6 +514,7 @@ public class DifficultHelpReadingController {
|
|||||||
info.subsidyStandards,
|
info.subsidyStandards,
|
||||||
info.bankOfDeposit,
|
info.bankOfDeposit,
|
||||||
info.bankCardNum,
|
info.bankCardNum,
|
||||||
|
info.money,
|
||||||
info.applyCount
|
info.applyCount
|
||||||
FROM
|
FROM
|
||||||
difficult_help_info info
|
difficult_help_info info
|
||||||
@@ -504,12 +526,40 @@ public class DifficultHelpReadingController {
|
|||||||
cnd.groupBy("info.id");
|
cnd.groupBy("info.id");
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
List<NutMap> list = difficultHelpCommonService.listMap(sql);
|
List<NutMap> list = difficultHelpCommonService.listMap(sql);
|
||||||
Sys_user user = sysUserService.fetch(SecurityUtil.getUserId());
|
|
||||||
|
|
||||||
for (int i = 0; i < list.size(); i++) {
|
for (int i = 0; i < list.size(); i++) {
|
||||||
list.get(i).put("index", (i + 1));
|
list.get(i).put("index", (i + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String fileName = "困难慰问汇总表_" + DateUtil.format(new Date(), "yyyyMMdd");
|
||||||
|
if ("xlsx".equals(flag)) {
|
||||||
|
String[][] columns = {
|
||||||
|
{"序号", "index"}, {"姓名", "userName"}, {"工号", "loginName"},
|
||||||
|
{"性别", "sex"}, {"身份证号", "idCard"}, {"年龄", "age"},
|
||||||
|
{"职务", "position"}, {"职称", "officialCapacity"}, {"所属单位", "unitName"},
|
||||||
|
{"手机号码", "mobile"}, {"生活致困原因", "reason"}, {"级别", "level"},
|
||||||
|
{"家庭年总收入", "homeIncome"}, {"家庭人数", "homeNumber"},
|
||||||
|
{"困难类型", "subsidyStandards"}, {"开户行", "bankOfDeposit"},
|
||||||
|
{"银行卡号", "bankCardNum"}, {"实际金额(元)", "money"}, {"申请次数", "applyCount"}
|
||||||
|
};
|
||||||
|
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||||
|
for (String[] column : columns) {
|
||||||
|
entities.add(new ExcelExportEntity(column[0], column[1], 20));
|
||||||
|
}
|
||||||
|
ExportParams exportParams = new ExportParams();
|
||||||
|
exportParams.setType(ExcelType.XSSF);
|
||||||
|
exportParams.setTitle("困难帮扶汇总表");
|
||||||
|
exportParams.setSheetName("汇总数据");
|
||||||
|
try (Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, list)) {
|
||||||
|
CommonDownloadUtil.download(fileName + ".xlsx", workbook, response);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("导出Excel汇总表失败", e);
|
||||||
|
throw new RuntimeException("导出Excel汇总表失败:" + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sys_user user = sysUserService.fetch(SecurityUtil.getUserId());
|
||||||
result.put("schoolName", "中国地址大学(武汉)");
|
result.put("schoolName", "中国地址大学(武汉)");
|
||||||
result.put("year", DateUtil.format(new Date(), "yyyy"));
|
result.put("year", DateUtil.format(new Date(), "yyyy"));
|
||||||
result.put("applyTime", DateUtil.format(new Date(), "yyyy年MM月dd日"));
|
result.put("applyTime", DateUtil.format(new Date(), "yyyy年MM月dd日"));
|
||||||
@@ -517,32 +567,12 @@ public class DifficultHelpReadingController {
|
|||||||
result.put("mobile", user.getMobile());
|
result.put("mobile", user.getMobile());
|
||||||
result.put("da", list);
|
result.put("da", list);
|
||||||
|
|
||||||
String resource;
|
String resource = "difficulty_summary";
|
||||||
if ("xlsx".equals(flag)) {
|
if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||||
resource = "difficulty_summary_xlsx";
|
resource = "difficulty_summary_school";
|
||||||
if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
|
||||||
resource = "difficulty_summary_school_xlsx";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
resource = "difficulty_summary";
|
|
||||||
if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
|
||||||
resource = "difficulty_summary_school";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String fileName = "困难慰问汇总表_" + DateUtil.format(new Date(), "yyyyMMdd");
|
if ("docx".equals(flag)) {
|
||||||
|
|
||||||
if ("xlsx".equals(flag)) {
|
|
||||||
try {
|
|
||||||
InputStream is = sysOfficeTemplateUtil.getTemplate(resource);
|
|
||||||
TemplateExportParams exportParams = new TemplateExportParams(is, null);
|
|
||||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, result);
|
|
||||||
CommonDownloadUtil.download(fileName + ".xlsx", workbook, response);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("导出Excel汇总表失败", e);
|
|
||||||
throw new RuntimeException("导出Excel汇总表失败:" + e.getMessage());
|
|
||||||
}
|
|
||||||
} else if ("docx".equals(flag)) {
|
|
||||||
try (InputStream input = sysOfficeTemplateUtil.getTemplate(resource)) {
|
try (InputStream input = sysOfficeTemplateUtil.getTemplate(resource)) {
|
||||||
Configure config = Configure.builder()
|
Configure config = Configure.builder()
|
||||||
.bind("da", new LoopRowTableRenderPolicy())
|
.bind("da", new LoopRowTableRenderPolicy())
|
||||||
|
|||||||
+1
-5
@@ -129,11 +129,7 @@ public class DifficultHelpCommonServiceImpl extends BaseServiceImpl<DifficultHel
|
|||||||
|
|
||||||
// 2. 查询符合条件的 DifficultHelpInfo 记录
|
// 2. 查询符合条件的 DifficultHelpInfo 记录
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
pageForm.applyReadingScope(cnd, "");
|
pageForm.buildReadingSearch(cnd, "");
|
||||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
|
||||||
cnd.and(Cnd.exps("loginName", "LIKE", "%" + pageForm.getSearchKeyword() + "%")
|
|
||||||
.or("userName", "LIKE", "%" + pageForm.getSearchKeyword() + "%"));
|
|
||||||
}
|
|
||||||
List<DifficultHelpInfo> infoList = dao().query(DifficultHelpInfo.class, cnd);
|
List<DifficultHelpInfo> infoList = dao().query(DifficultHelpInfo.class, cnd);
|
||||||
|
|
||||||
// 3. 构建用户缴费索引 (userId -> year -> money)
|
// 3. 构建用户缴费索引 (userId -> year -> money)
|
||||||
|
|||||||
+4
@@ -9,6 +9,7 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||||
|
import org.nutz.dao.util.cri.Static;
|
||||||
import org.nutz.lang.Lang;
|
import org.nutz.lang.Lang;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -35,6 +36,9 @@ public class DifficultHelpPageParam extends PageForm {
|
|||||||
public void buildReadingSearch(Cnd cnd, String prefix) {
|
public void buildReadingSearch(Cnd cnd, String prefix) {
|
||||||
buildSearch(cnd, prefix, false);
|
buildSearch(cnd, prefix, false);
|
||||||
applyReadingScope(cnd, prefix);
|
applyReadingScope(cnd, prefix);
|
||||||
|
String recordPrefix = StrUtil.isBlank(prefix) ? "difficult_help_info." : prefix;
|
||||||
|
cnd.and(new Static("EXISTS (SELECT 1 FROM wf_process_instance reading_instance WHERE reading_instance.businessNo = "
|
||||||
|
+ recordPrefix + "id AND reading_instance.state = 20)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void applyReadingScope(Cnd cnd, String prefix) {
|
public void applyReadingScope(Cnd cnd, String prefix) {
|
||||||
|
|||||||
+3
-3
@@ -45,8 +45,8 @@ layout("/layouts/platform.html"){
|
|||||||
<el-button type="primary" size="small" @click="importMoney">导入实际金额</el-button>
|
<el-button type="primary" size="small" @click="importMoney">导入实际金额</el-button>
|
||||||
<el-button @click="exportYearPayRecord" size="small" icon="el-icon-download" type="primary">导出补助金额</el-button>
|
<el-button @click="exportYearPayRecord" size="small" icon="el-icon-download" type="primary">导出补助金额</el-button>
|
||||||
<el-button @click="exportAllApply" size="small" type="primary">导出申请表(压缩包)</el-button>
|
<el-button @click="exportAllApply" size="small" type="primary">导出申请表(压缩包)</el-button>
|
||||||
<el-button @click="exportSummaryXlsx" size="small" type="primary">导出汇总表(excel)</el-button>
|
<el-button @click="exportSummaryXlsx" size="small" type="primary">导出汇总表(Excel)</el-button>
|
||||||
<el-button @click="exportSummaryDocx" size="small" type="primary">导出汇总表(word)</el-button>
|
<!-- <el-button @click="exportSummaryDocx" size="small" type="primary">导出汇总表(Word)</el-button> -->
|
||||||
</table-tool>
|
</table-tool>
|
||||||
|
|
||||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||||
@@ -195,7 +195,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.$downLoad('/platform/difficultHelp/reading/exportSummary', params)
|
this.$downLoad('/platform/difficultHelp/reading/exportSummary', params)
|
||||||
},
|
},
|
||||||
doExportApply(row) {
|
doExportApply(row) {
|
||||||
this.$downLoad('/platform/difficultHelp/reading/doExportApply?id=' + row.id + '&print=false')
|
this.$downLoad('/platform/difficultHelp/reading/exportReadingApply', {...this.pageForm, id: row.id, print: false})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
|
|||||||
Reference in New Issue
Block a user