diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolUnionApproval/index.html
index abd28fc..b6415a1 100644
--- a/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolUnionApproval/index.html
+++ b/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolUnionApproval/index.html
@@ -70,6 +70,13 @@ layout("/layouts/platform_h5.html"){
maxlength="100"
show-word-limit
>
+
退回
From bae4b81edf256a3c4c3cb71a22d18efab6ec347b Mon Sep 17 00:00:00 2001
From: = <=>
Date: Thu, 19 Mar 2026 17:59:15 +0800
Subject: [PATCH 3/4] commit
---
.../apply/MemberApplyMineController.java | 16 +-
.../member/service/MemberCommonService.java | 7 +
.../service/impl/MemberManageServiceImpl.java | 164 ++++++++++++++++--
.../staffmanage/member/apply/mine/index.html | 7 +
.../staffmanage/member/apply/submit/form.html | 7 +-
.../member/apply/submit/index.html | 9 +-
.../apply/branchunionapproval/index.html | 5 +
.../staffmanage/member/apply/common/info.js | 17 +-
.../staffmanage/member/apply/mine/index.html | 2 +-
.../apply/schoolunionapproval/index.html | 5 +
.../member/apply/submit/index.html | 12 +-
11 files changed, 216 insertions(+), 35 deletions(-)
diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java
index 4561c62..a69276e 100644
--- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java
+++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java
@@ -27,6 +27,7 @@ import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
+import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
/**
@@ -92,6 +93,7 @@ public class MemberApplyMineController {
t.finishTime,
t.taskParentId,
t.variable taskVariable,
+ GROUP_CONCAT(DISTINCT ta.actorName, '(', ta.actorAccount, ')' ) AS auditUser,
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
(select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask' AND taskState in (10,20)) AS startTaskId
FROM
@@ -115,7 +117,7 @@ public class MemberApplyMineController {
} else {
cnd.orderBy("info." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
}
- cnd.groupBy("t.id");
+ cnd.groupBy("info.id");
sql.setCondition(cnd);
Pagination
pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success().addData(pagination);
@@ -147,4 +149,16 @@ public class MemberApplyMineController {
MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id);
return Result.success().addData(record);
}
+
+ /**
+ * 导出入会申请
+ * @param id
+ * @return
+ */
+ @At
+ @Ok("void")
+ @SaCheckPermission(value = {"member.apply.mine", "member.apply.branchUnionApproval", "member.apply.branchUnionApproval"}, mode = SaMode.OR)
+ public void exportApplyDocx(String id, HttpServletResponse response) {
+ memberCommonService.exportApplyDocx(id, response);
+ }
}
diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java
index 4b2879d..324c70e 100644
--- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java
+++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java
@@ -10,6 +10,7 @@ import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm
import org.nutz.dao.sql.Sql;
import org.nutz.lang.util.NutMap;
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@@ -115,4 +116,10 @@ public interface MemberCommonService extends BaseService {
* @param type 类型: apply or change
*/
void validateApplyOrChangeIsDoing(String userId, String type);
+
+ /**
+ * 导出入会申请
+ * @param id
+ */
+ void exportApplyDocx(String id, HttpServletResponse response);
}
diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java
index e93ca2f..fd79908 100644
--- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java
+++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java
@@ -3,6 +3,7 @@ package com.budwk.app.zhgh.staffmanage.member.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil;
@@ -10,9 +11,13 @@ import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.exception.BaseException;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.service.impl.BaseServiceImpl;
+import com.budwk.app.base.utils.CommonDownloadUtil;
+import com.budwk.app.base.utils.SysOfficeTemplateUtil;
import com.budwk.app.flow.engine.FlowEngine;
import com.budwk.app.flow.entity.ProcessInstance;
+import com.budwk.app.flow.entity.ProcessTask;
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
+import com.budwk.app.flow.vo.ProcessTaskVO;
import com.budwk.app.sys.models.*;
import com.budwk.app.sys.services.SysDictService;
import com.budwk.app.sys.services.SysRoleService;
@@ -21,6 +26,8 @@ import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope;
+import com.budwk.app.zhgh.democratic.suggestion.models.SuggestionInfo;
+import com.budwk.app.zhgh.staffbenefit.condolence.model.Condolence;
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin;
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeType;
import com.budwk.app.zhgh.staffmanage.member.models.MemberApplyRecord;
@@ -29,12 +36,10 @@ import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm
import com.budwk.app.zhgh.staffmanage.member.service.MemberCommonService;
import com.budwk.app.zhgh.staffmanage.specialstaff.model.SpecialStaff;
import com.budwk.app.zhgh.welfare.model.WelfareList;
+import com.deepoove.poi.XWPFTemplate;
import lombok.extern.slf4j.Slf4j;
import org.nutz.aop.interceptor.ioc.TransAop;
-import org.nutz.dao.Chain;
-import org.nutz.dao.Cnd;
-import org.nutz.dao.Dao;
-import org.nutz.dao.Sqls;
+import org.nutz.dao.*;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos;
import org.nutz.dao.util.cri.SqlExpressionGroup;
@@ -46,9 +51,18 @@ import org.nutz.lang.Lang;
import org.nutz.lang.random.R;
import org.nutz.lang.util.NutMap;
+import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
/**
* @version 1.0
@@ -67,6 +81,12 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
private SysRoleService sysRoleService;
@Inject
private SysUserService sysUserService;
+ @Inject
+ private Dao dao;
+ @Inject
+ private FlowEngine flowEngine;
+ @Inject
+ private SysOfficeTemplateUtil sysOfficeTemplateUtil;
public MemberManageServiceImpl(Dao dao) {
super(dao);
@@ -129,7 +149,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
$condition
""");
Cnd cnd = Cnd.NEW();
- MemberManagePageForm.buildSearch(cnd,pageForm);
+ MemberManagePageForm.buildSearch(cnd, pageForm);
sql.setCondition(cnd);
cnd.desc("his.changeTime");
cnd.groupBy("u.id");
@@ -170,7 +190,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
cnd.andEX("his.unitId", "=", pageForm.getUnitId());
cnd.andEX("his.personType", "=", pageForm.getPersonType());
cnd.andEX("his.userState", "=", pageForm.getUserState());
- if (StrUtil.isNotBlank(pageForm.getChangeType())){
+ if (StrUtil.isNotBlank(pageForm.getChangeType())) {
cnd.and(new Static("JSON_CONTAINS(his.changeTypes, JSON_ARRAY('%s'), '$')".formatted(pageForm.getChangeType())));
}
@@ -264,7 +284,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
changeTypes.add(list.get(0).name());
}
}
- if (!ObjectUtil.equals(user.getMember() == 1, record.getMember())){
+ if (!ObjectUtil.equals(user.getMember() == 1, record.getMember())) {
if (record.getMember()) {
changeTypes.add(MemberChangeType.RESTORE.name());
} else {
@@ -408,7 +428,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
}
@Override
- public List getAllChangeInfo(String userId) {
+ public List getAllChangeInfo(String userId) {
List resultMapList = new ArrayList<>();
Sql sql = Sqls.fetchString(Sqls.create("select loginname from sys_user where id = @id").setParam("id", userId).toString());
@@ -514,8 +534,9 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
/**
* 验证申请或变更是否正在进行
- * @param userId 用户id
- * @param type 类型: apply or change
+ *
+ * @param userId 用户id
+ * @param type 类型: apply or change
*/
@Override
public void validateApplyOrChangeIsDoing(String userId, String type) {
@@ -566,4 +587,127 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
}
return value.toString();
}
+
+ @Override
+ public void exportApplyDocx(String id, HttpServletResponse response) {
+ MemberApplyRecord member = dao().fetch(MemberApplyRecord.class, Cnd.where("id", "=", id));
+ if (member == null) {
+ throw new RuntimeException("会员申请记录不存在");
+ }
+
+ // 2. 获取流程实例信息 (确保流程已归档或存在)
+ Sql sql = Sqls.create("""
+ SELECT
+ info.*,
+ ins.id AS instanceId
+ FROM
+ `member_apply_record` info
+ LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
+ WHERE
+ info.id = @id
+ """).setParam("id", id);
+ sql.setCallback(Sqls.callback.map());
+ dao.execute(sql);
+ NutMap info = (NutMap) sql.getResult();
+
+ HashMap docData = new HashMap<>();
+
+ docData.put("unitName", member.getUnitName());
+ docData.put("applyDateTime", member.getApplyDateTime() != null ? DateUtil.format(member.getApplyDateTime(), "yyyy年MM月dd日") : "");
+
+ docData.put("username", member.getUsername());
+ docData.put("sex", member.getSex());
+ docData.put("birthday", StrUtil.isNotBlank(member.getBirthday()) ? DateUtil.parse(member.getBirthday()).toString("yyyy-MM-dd") : "");
+
+ docData.put("political", member.getPolitical());
+ docData.put("nation", member.getNation());
+ docData.put("education", member.getEducation());
+
+ docData.put("nativePlace", member.getNativePlace());
+ docData.put("marriage", member.getMarriage());
+ docData.put("specialty", member.getSpecialty());
+
+ docData.put("jobCategory", member.getJobCategory());
+ docData.put("idCard", member.getIdCard());
+
+ docData.put("mobile", member.getMobile());
+ docData.put("arrivalAtSchoolDate", StrUtil.isNotBlank(member.getArrivalAtSchoolDate()) ? DateUtil.parse(member.getArrivalAtSchoolDate()).toString("yyyy-MM-dd") : "");
+ docData.put("homeAddress", member.getHomeAddress());
+
+ docData.put("personalData", member.getPersonalData());
+
+ // 处理家庭成员列表 (假设模板支持循环或需要拼接字符串,这里先拼接为字符串示例,若模板支持循环需调整模板引擎配置)
+// if (member.getFamilies() != null && !member.getFamilies().isEmpty()) {
+// StringBuilder familyStr = new StringBuilder();
+// for (int i = 0; i < member.getFamilies().size(); i++) {
+// NutMap fam = (NutMap) member.getFamilies().get(i);
+// familyStr.append((i + 1)).append(". ")
+// .append("关系:").append(fam.getStr("relation")).append(", ")
+// .append("姓名:").append(fam.getStr("name")).append(", ")
+// .append("单位:").append(fam.getStr("unit")).append(", ")
+// .append("备注:").append(fam.getStr("remark")).append("\n");
+// }
+// docData.put("familiesStr", familyStr.toString());
+// } else {
+// docData.put("familiesStr", "无");
+// }
+
+
+ List doneTaskVos = new ArrayList<>();
+ Long instanceId = info.getLong("instanceId");
+ if (instanceId != null) {
+ List doneTaskList = flowEngine.processTaskService().getDoneTaskList(instanceId, null);
+ for (ProcessTask doneTask : doneTaskList) {
+ ProcessTaskVO taskVO = flowEngine.processTaskService().findById(doneTask.getId());
+ doneTaskVos.add(taskVO);
+ }
+ }
+
+ // 提取分工会审核意见
+ doneTaskVos.stream().filter(task -> "分工会审核".equals(task.getDisplayName()))
+ .max(Comparator.comparing(ProcessTaskVO::getCreatedAt))
+ .ifPresent(v -> {
+ Dict taskFormData = v.getTaskFormData();
+ HashMap approval = new HashMap<>();
+ approval.put("date", v.getFinishTime() != null ? DateUtil.format(v.getFinishTime(), "yyyy年MM月dd日") : "");
+ approval.put("user", taskFormData != null ? taskFormData.getStr("tf_userName") : "");
+ if (taskFormData != null && StrUtil.isNotBlank(taskFormData.getStr("tf_sign"))) {
+ approval.put("sign", sysOfficeTemplateUtil.createPictureRenderData(taskFormData.getStr("tf_sign")));
+ }
+ approval.put("opinion", taskFormData != null ? taskFormData.getStr("tf_opinion") : "");
+ docData.put("branchUnionApproval", approval);
+ });
+
+ // 提取校工会审核意见
+ doneTaskVos.stream().filter(task -> "校工会审核".equals(task.getDisplayName()))
+ .max(Comparator.comparing(ProcessTaskVO::getCreatedAt))
+ .ifPresent(v -> {
+ Dict taskFormData = v.getTaskFormData();
+ HashMap approval = new HashMap<>();
+ approval.put("date", v.getFinishTime() != null ? DateUtil.format(v.getFinishTime(), "yyyy年MM月dd日") : "");
+ approval.put("user", taskFormData != null ? taskFormData.getStr("tf_userName") : "");
+ if (taskFormData != null && StrUtil.isNotBlank(taskFormData.getStr("tf_sign"))) {
+ approval.put("sign", sysOfficeTemplateUtil.createPictureRenderData(taskFormData.getStr("tf_sign")));
+ }
+ approval.put("opinion", taskFormData != null ? taskFormData.getStr("tf_opinion") : "");
+ docData.put("schoolUnionApproval", approval);
+ });
+
+ String fileName = "会员入会申请表_" + member.getUsername() + "_" +
+ (member.getApplyDateTime() != null ? DateUtil.format(member.getApplyDateTime(), "yyyyMMdd") : "") +
+ ".docx";
+
+ response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+ response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));
+ try {
+ XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("member_apply_form"))
+ .render(docData)
+ .write(response.getOutputStream());
+ } catch (IOException e) {
+ log.error("导出会员入会申请表失败,ID: {}, 错误信息: {}", id, e.getMessage());
+ throw new RuntimeException("导出文件失败", e);
+ }
+ }
+
}
+
diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/mine/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/mine/index.html
index eaa84c5..43b5ffc 100644
--- a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/mine/index.html
+++ b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/mine/index.html
@@ -48,6 +48,10 @@ layout("/layouts/platform.html"){
查看
+
+ 导出申请表
+
编辑
@@ -102,6 +106,9 @@ layout("/layouts/platform.html"){
'common-query': COMMON_QUERY,
},
methods: {
+ exportApplyDocx(id) {
+ this.$downLoad("/platform/member/apply/mine/exportApplyDocx", { id })
+ },
onApply() {
commonUtil.pjaxPush('/platform/member/apply/submit')
},
diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/form.html b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/form.html
index fc19081..d2db39c 100644
--- a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/form.html
+++ b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/form.html
@@ -174,12 +174,7 @@
v-model="formData.isVoluntary">
- 我自愿申请加入学校工会,并委托学校按规定代为扣缴工会会员会费。
-
-
-
-
- 我将严格遵守工会章程,认真执行工会决议,积极参与工会活动,主动融入“学校健康幸福家”建设,为营造温暖、和谐、奋进的校园氛围贡献力量,以实际行动助力学校各项事业发展。
+ 我自愿加入中华全国总工会,遵守工会章程,执行工会决议,积极参加工会活动,为把我国建设成为富强、民主、文明的社会主义国家而努力奋斗。
diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/index.html
index 4f6ab87..025ef00 100644
--- a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/index.html
+++ b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/index.html
@@ -215,16 +215,11 @@ layout("/layouts/platform.html"){
size="medium"
style="width: 95%; color: #F56C6C; display: flex; align-items: center;"
v-model="formData.isVoluntary">
+
- 我自愿申请加入学校工会,并委托学校按规定代为扣缴工会会员会费。
-
-
-
-
- 我将严格遵守工会章程,认真执行工会决议,积极参与工会活动,主动融入“学校健康幸福家”建设,为营造温暖、和谐、奋进的校园氛围贡献力量,以实际行动助力学校各项事业发展。
+ 我自愿加入中华全国总工会,遵守工会章程,执行工会决议,积极参加工会活动,为把我国建设成为富强、民主、文明的社会主义国家而努力奋斗。
diff --git a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/branchunionapproval/index.html b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/branchunionapproval/index.html
index fd211ae..c7eaac6 100644
--- a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/branchunionapproval/index.html
+++ b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/branchunionapproval/index.html
@@ -59,6 +59,11 @@ layout("/layouts/platform_h5.html"){
maxlength="100"
show-word-limit
>
+
+
+
+
+
退回
diff --git a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/common/info.js b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/common/info.js
index c73a926..9e63508 100644
--- a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/common/info.js
+++ b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/common/info.js
@@ -13,10 +13,12 @@ const INFO = {
{{ viewData.education }}
{{ viewData.academicDegree }}
+
{{ viewData.nativePlace }}
{{ viewData.position }}
{{ viewData.unitName }}
{{ viewData.unionName }}
+
{{ viewData.jobCategory }}
{{ viewData.idCard }}
{{ viewData.mobile }}
@@ -73,6 +75,12 @@ const INFO = {
+
+
+
+
@@ -91,12 +99,17 @@ const INFO = {
{{ task.finishTime }}
-
+
+
+
+
diff --git a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/mine/index.html b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/mine/index.html
index 3adfaf5..2cd8e7f 100644
--- a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/mine/index.html
+++ b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/mine/index.html
@@ -32,7 +32,7 @@ layout("/layouts/platform_h5.html"){
{{row.unionName}}
{{row.unitName}}
{{row.applyDateTime}}
- {{row.taskName}}
+ {{row.taskName}}-{{row.auditUser}}
diff --git a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/schoolunionapproval/index.html b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/schoolunionapproval/index.html
index bc00ef3..6f90a9e 100644
--- a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/schoolunionapproval/index.html
+++ b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/schoolunionapproval/index.html
@@ -59,6 +59,11 @@ layout("/layouts/platform_h5.html"){
maxlength="100"
show-word-limit
>
+
+
+
+
+
退回
diff --git a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/submit/index.html b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/submit/index.html
index 1cdec87..d439a1f 100644
--- a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/submit/index.html
+++ b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/submit/index.html
@@ -185,6 +185,8 @@ layout("/layouts/platform_h5.html"){
placeholder="请选择婚姻状况"
@click="showMarriagePicker = true"
clickable
+ required
+ :rules="[{ required: true }]"
>
-
+
@@ -309,12 +310,7 @@ layout("/layouts/platform_h5.html"){
v-model="formData.isVoluntary" shape="square">
- 我自愿申请加入学校工会,并委托学校按规定代为扣缴工会会员会费。
-
-
-
-
- 我将严格遵守工会章程,认真执行工会决议,积极参与工会活动,主动融入“学校健康幸福家”建设,为营造温暖、和谐、奋进的校园氛围贡献力量,以实际行动助力学校各项事业发展。
+ 我自愿加入中华全国总工会,遵守工会章程,执行工会决议,积极参加工会活动,为把我国建设成为富强、民主、文明的社会主义国家而努力奋斗。
From 9c276bcfed8d7be041fe662a1de9599a2741077d Mon Sep 17 00:00:00 2001
From: = <=>
Date: Fri, 20 Mar 2026 10:58:18 +0800
Subject: [PATCH 4/4] commit
---
.../service/impl/MemberManageServiceImpl.java | 64 ++++++++++---------
1 file changed, 34 insertions(+), 30 deletions(-)
diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java
index fd79908..54304af 100644
--- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java
+++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java
@@ -37,7 +37,9 @@ import com.budwk.app.zhgh.staffmanage.member.service.MemberCommonService;
import com.budwk.app.zhgh.staffmanage.specialstaff.model.SpecialStaff;
import com.budwk.app.zhgh.welfare.model.WelfareList;
import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
import lombok.extern.slf4j.Slf4j;
+import org.ddr.poi.html.HtmlRenderPolicy;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.*;
import org.nutz.dao.sql.Sql;
@@ -82,8 +84,6 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
@Inject
private SysUserService sysUserService;
@Inject
- private Dao dao;
- @Inject
private FlowEngine flowEngine;
@Inject
private SysOfficeTemplateUtil sysOfficeTemplateUtil;
@@ -595,7 +595,6 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
throw new RuntimeException("会员申请记录不存在");
}
- // 2. 获取流程实例信息 (确保流程已归档或存在)
Sql sql = Sqls.create("""
SELECT
info.*,
@@ -607,13 +606,13 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
info.id = @id
""").setParam("id", id);
sql.setCallback(Sqls.callback.map());
- dao.execute(sql);
+ dao().execute(sql);
NutMap info = (NutMap) sql.getResult();
HashMap docData = new HashMap<>();
docData.put("unitName", member.getUnitName());
- docData.put("applyDateTime", member.getApplyDateTime() != null ? DateUtil.format(member.getApplyDateTime(), "yyyy年MM月dd日") : "");
+ docData.put("time", DateUtil.format(new Date(), "yyyy年MM月dd日"));
docData.put("username", member.getUsername());
docData.put("sex", member.getSex());
@@ -625,7 +624,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
docData.put("nativePlace", member.getNativePlace());
docData.put("marriage", member.getMarriage());
- docData.put("specialty", member.getSpecialty());
+ docData.put("specialty", StrUtil.isNotBlank(member.getSpecialty()) ? HtmlUtil.cleanHtmlTag(member.getSpecialty()) : "");
docData.put("jobCategory", member.getJobCategory());
docData.put("idCard", member.getIdCard());
@@ -634,25 +633,25 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
docData.put("arrivalAtSchoolDate", StrUtil.isNotBlank(member.getArrivalAtSchoolDate()) ? DateUtil.parse(member.getArrivalAtSchoolDate()).toString("yyyy-MM-dd") : "");
docData.put("homeAddress", member.getHomeAddress());
- docData.put("personalData", member.getPersonalData());
-
- // 处理家庭成员列表 (假设模板支持循环或需要拼接字符串,这里先拼接为字符串示例,若模板支持循环需调整模板引擎配置)
-// if (member.getFamilies() != null && !member.getFamilies().isEmpty()) {
-// StringBuilder familyStr = new StringBuilder();
-// for (int i = 0; i < member.getFamilies().size(); i++) {
-// NutMap fam = (NutMap) member.getFamilies().get(i);
-// familyStr.append((i + 1)).append(". ")
-// .append("关系:").append(fam.getStr("relation")).append(", ")
-// .append("姓名:").append(fam.getStr("name")).append(", ")
-// .append("单位:").append(fam.getStr("unit")).append(", ")
-// .append("备注:").append(fam.getStr("remark")).append("\n");
-// }
-// docData.put("familiesStr", familyStr.toString());
-// } else {
-// docData.put("familiesStr", "无");
-// }
-
+ docData.put("personalData", sysOfficeTemplateUtil.convertRichTextToDocText(member.getPersonalData()));
+ docData.put("sign", sysOfficeTemplateUtil.createPictureRenderData(member.getSign()));
+ docData.put("applyDateTime", member.getApplyDateTime() != null ? DateUtil.format(member.getApplyDateTime(), "yyyy年MM月dd日") : "");
+ // 处理家庭成员列表
+ if (member.getFamilies() != null && !member.getFamilies().isEmpty()) {
+ StringBuilder familyStr = new StringBuilder();
+ for (int i = 0; i < member.getFamilies().size(); i++) {
+ NutMap fam = NutMap.WRAP(member.getFamilies().get(i));
+ familyStr.append((i + 1)).append(". ")
+ .append("关系:").append(StrUtil.nullToDefault(fam.getString("relation"), "无")).append(", ")
+ .append("姓名:").append(StrUtil.nullToDefault(fam.getString("name"), "无")).append(", ")
+ .append("单位:").append(StrUtil.nullToDefault(fam.getString("unit"), "无")).append(", ")
+ .append("备注:").append(StrUtil.nullToDefault(fam.getString("remark"), "无")).append("\n");
+ }
+ docData.put("familiesStr", familyStr.toString());
+ } else {
+ docData.put("familiesStr", "无");
+ }
List doneTaskVos = new ArrayList<>();
Long instanceId = info.getLong("instanceId");
if (instanceId != null) {
@@ -675,7 +674,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
approval.put("sign", sysOfficeTemplateUtil.createPictureRenderData(taskFormData.getStr("tf_sign")));
}
approval.put("opinion", taskFormData != null ? taskFormData.getStr("tf_opinion") : "");
- docData.put("branchUnionApproval", approval);
+ docData.put("fgh", approval);
});
// 提取校工会审核意见
@@ -690,17 +689,22 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement
approval.put("sign", sysOfficeTemplateUtil.createPictureRenderData(taskFormData.getStr("tf_sign")));
}
approval.put("opinion", taskFormData != null ? taskFormData.getStr("tf_opinion") : "");
- docData.put("schoolUnionApproval", approval);
+ docData.put("xgh", approval);
});
- String fileName = "会员入会申请表_" + member.getUsername() + "_" +
- (member.getApplyDateTime() != null ? DateUtil.format(member.getApplyDateTime(), "yyyyMMdd") : "") +
- ".docx";
+ String fileName = "会员入会申请表_" + member.getUsername() + "_" + DateUtil.format(new Date(), "yyyyMMdd") + ".docx";
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));
+
+ HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
+ htmlRenderPolicy.getConfig().setShowDefaultTableBorderInTableCell(true);
+
+ Configure config = Configure.builder()
+ .bind("personalData", htmlRenderPolicy)
+ .build();
try {
- XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("member_apply_form"))
+ XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("member_apply_form"), config)
.render(docData)
.write(response.getOutputStream());
} catch (IOException e) {