diff --git a/src/main/java/com/budwk/app/base/constant/RoleConstant.java b/src/main/java/com/budwk/app/base/constant/RoleConstant.java index a982733..669492c 100644 --- a/src/main/java/com/budwk/app/base/constant/RoleConstant.java +++ b/src/main/java/com/budwk/app/base/constant/RoleConstant.java @@ -19,6 +19,9 @@ RoleConstant { SCHOOL_UNION_ADMIN("校工会管理员"), SCHOOL_UNION_CHAIRMAN("校工会主席"), SCHOOL_UNION_VICE_CHAIRMAN("校工会副主席"), + SCHOOL_UNION_TREASURE("校工会财务委员"), + SCHOOL_UNION_CASHIER("校工会出纳"), + SCHOOL_UNION_ACCOUNTANT("校工会会计"), SCHOOL_UNION_WELFARE_ADMIN("校工会福利管理员"), SCHOOL_UNION_MEMBER_ADMIN("校工会会员管理员"), SCHOOL_UNION_TC_ADMIN("校工会教代会管理员"), diff --git a/src/main/java/com/budwk/app/flow/handler/FlowAssignUserHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowAssignUserHandler.java index 0223aa5..94d0468 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowAssignUserHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowAssignUserHandler.java @@ -29,6 +29,6 @@ public class FlowAssignUserHandler implements AssignmentHandler { @Override public int getOrder() { - return AssignmentHandler.super.getOrder(); + return 100; } } diff --git a/src/main/java/com/budwk/app/flow/handler/FlowClubPresidentByArgsAssignmentHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowClubPresidentByArgsAssignmentHandler.java index 67b3983..b2b7a93 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowClubPresidentByArgsAssignmentHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowClubPresidentByArgsAssignmentHandler.java @@ -50,6 +50,6 @@ public class FlowClubPresidentByArgsAssignmentHandler implements AssignmentHandl @Override public int getOrder() { - return AssignmentHandler.super.getOrder(); + return 510; } } diff --git a/src/main/java/com/budwk/app/flow/handler/FlowFghzxAssignmentHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowFghzxAssignmentHandler.java index 6c789c8..2bde1ee 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowFghzxAssignmentHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowFghzxAssignmentHandler.java @@ -42,7 +42,7 @@ public class FlowFghzxAssignmentHandler implements AssignmentHandler { @Override public int getOrder() { - return 10; + return 400; } } diff --git a/src/main/java/com/budwk/app/flow/handler/FlowGeneralDelegationByArgsAssignmentHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowGeneralDelegationByArgsAssignmentHandler.java index 6765673..001d2fd 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowGeneralDelegationByArgsAssignmentHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowGeneralDelegationByArgsAssignmentHandler.java @@ -62,6 +62,6 @@ public class FlowGeneralDelegationByArgsAssignmentHandler implements AssignmentH @Override public int getOrder() { - return AssignmentHandler.super.getOrder(); + return 210; } } diff --git a/src/main/java/com/budwk/app/flow/handler/FlowQualificationReviewGroupByArgsAssignmentHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowQualificationReviewGroupByArgsAssignmentHandler.java index 7fe6c08..ff1c5f6 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowQualificationReviewGroupByArgsAssignmentHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowQualificationReviewGroupByArgsAssignmentHandler.java @@ -56,6 +56,6 @@ public class FlowQualificationReviewGroupByArgsAssignmentHandler implements Assi @Override public int getOrder() { - return AssignmentHandler.super.getOrder(); + return 200; } } diff --git a/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionAdminByArgsAssignmentHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionAdminByArgsAssignmentHandler.java index b547726..465c901 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionAdminByArgsAssignmentHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionAdminByArgsAssignmentHandler.java @@ -47,6 +47,6 @@ public class FlowSchoolUnionAdminByArgsAssignmentHandler implements AssignmentHa @Override public int getOrder() { - return AssignmentHandler.super.getOrder(); + return 300; } } diff --git a/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionTreasureHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionTreasureHandler.java new file mode 100644 index 0000000..61f15b8 --- /dev/null +++ b/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionTreasureHandler.java @@ -0,0 +1,64 @@ +package com.budwk.app.flow.handler; + +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.flow.engine.AssignmentHandler; +import com.budwk.app.flow.engine.core.Execution; +import com.budwk.app.flow.engine.core.ServiceContext; +import com.budwk.app.flow.engine.model.TaskModel; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; + +import java.util.List; + +/** + * 获取校工会财务委员角色下的用户,供流程设计器配置任务参与者。 + */ +public class FlowSchoolUnionTreasureHandler implements AssignmentHandler { + + /** + * 根据校工会财务委员角色查询流程任务参与者。 + * + * @param model 流程任务模型 + * @param execution 当前流程执行对象 + * @return 校工会财务委员的用户 ID 列表 + */ + @Override + public List assign(TaskModel model, Execution execution) { + Dao dao = ServiceContext.find(Dao.class); + Sql sql = Sqls.create(""" + SELECT + userRole.userId + FROM + `sys_user_role` userRole + LEFT JOIN sys_role role ON role.id = userRole.roleId + WHERE + role.`code` = @roleCode + GROUP BY + userRole.userId + """).setParam("roleCode", RoleConstant.SCHOOL_UNION_TREASURE.name()); + sql.setCallback(Sqls.callback.strList()); + dao.execute(sql); + return sql.getList(String.class); + } + + /** + * 返回流程设计器参与者处理类下拉框的显示名称。 + * + * @return 下拉框显示名称 + */ + @Override + public String getMessage() { + return "获取校工会财务委员"; + } + + /** + * 使用参与者处理类的默认排序值。 + * + * @return 默认排序值 + */ + @Override + public int getOrder() { + return 330; + } +} diff --git a/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionViceChairmanHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionViceChairmanHandler.java index 41dfa8f..18bd007 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionViceChairmanHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionViceChairmanHandler.java @@ -45,6 +45,6 @@ public class FlowSchoolUnionViceChairmanHandler implements AssignmentHandler { @Override public int getOrder() { - return AssignmentHandler.super.getOrder(); + return 320; } } diff --git a/src/main/java/com/budwk/app/flow/handler/FlowUnionGroupLeadersByArgsAssignmentHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowUnionGroupLeadersByArgsAssignmentHandler.java index d423ca9..0604507 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowUnionGroupLeadersByArgsAssignmentHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowUnionGroupLeadersByArgsAssignmentHandler.java @@ -46,6 +46,6 @@ public class FlowUnionGroupLeadersByArgsAssignmentHandler implements AssignmentH @Override public int getOrder() { - return AssignmentHandler.super.getOrder(); + return 410; } } diff --git a/src/main/java/com/budwk/app/flow/handler/FlowUnitPartySecretaryHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowUnitPartySecretaryHandler.java index 9b71421..2af3f5b 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowUnitPartySecretaryHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowUnitPartySecretaryHandler.java @@ -64,6 +64,6 @@ public class FlowUnitPartySecretaryHandler implements AssignmentHandler { @Override public int getOrder() { - return AssignmentHandler.super.getOrder(); + return 220; } } diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/register/ClubRegistApplyController.java b/src/main/java/com/budwk/app/zhgh/club/controller/register/ClubRegistApplyController.java index f2b68d7..cf30153 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/register/ClubRegistApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/register/ClubRegistApplyController.java @@ -34,7 +34,10 @@ import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; import java.util.List; /** @@ -187,4 +190,20 @@ public class ClubRegistApplyController { String s = String.format("%02d", count + 1); return Result.success().addData(Convert.toStr(DateUtil.thisYear()) + s); } + + @At + @Ok("void") + @ApiOperation("下载协会申请成立报告模板") + @SaCheckPermission("club.register.apply") + public void downloadTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException { + sysClubService.downloadApplyTemplate(request, response); + } + + @At + @Ok("void") + @ApiOperation("下载协会章程草案模板") + @SaCheckPermission("club.register.apply") + public void downloadRulesTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException { + sysClubService.downloadRulesTemplate(request, response); + } } diff --git a/src/main/java/com/budwk/app/zhgh/club/service/SysClubService.java b/src/main/java/com/budwk/app/zhgh/club/service/SysClubService.java index de5a65d..fa7d090 100644 --- a/src/main/java/com/budwk/app/zhgh/club/service/SysClubService.java +++ b/src/main/java/com/budwk/app/zhgh/club/service/SysClubService.java @@ -12,7 +12,10 @@ import io.swagger.models.auth.In; import org.nutz.dao.Cnd; import org.nutz.lang.util.NutMap; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; import java.util.List; /** @@ -35,6 +38,24 @@ public interface SysClubService extends BaseService { SysClub doEdit(SysClub club, List deleteIds, List managePerson); + /** + * 下载协会申请成立报告模板。 + * + * @param request HTTP 请求,用于复用系统文件下载处理 + * @param response HTTP 响应,用于输出模板文件 + * @throws IOException 模板文件读取或输出失败 + */ + void downloadApplyTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException; + + /** + * 下载协会章程草案模板。 + * + * @param request HTTP 请求,用于复用系统文件下载处理 + * @param response HTTP 响应,用于输出模板文件 + * @throws IOException 模板文件读取或输出失败 + */ + void downloadRulesTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException; + Pagination minePageData(@Valid ClubUserPageForm pageForm); Pagination schoolLeaderAuditPageData(@Valid ClubUserPageForm pageForm); diff --git a/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubServiceImpl.java b/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubServiceImpl.java index e6ca750..b1f1043 100644 --- a/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.constant.BpmProcessConstant; 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.param.PageForm; import com.budwk.app.base.service.impl.BaseServiceImpl; @@ -18,6 +19,8 @@ import com.budwk.app.flow.enums.ProcessInstanceStateEnum; import com.budwk.app.flow.enums.ProcessTaskStateEnum; import com.budwk.app.sys.models.Sys_user; import com.budwk.app.sys.models.Sys_user_role; +import com.budwk.app.sys.models.Sys_office_template; +import com.budwk.app.sys.services.SysFileService; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.web.controllers.open.commons.service.CommonService; @@ -38,6 +41,9 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.util.NutMap; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -61,6 +67,8 @@ public class SysClubServiceImpl extends BaseServiceImpl implements SysC private CommonService commonService; @Inject private BpmService bpmService; + @Inject + private SysFileService sysFileService; @Override public Pagination getAllClubWithPage(PageForm pageForm, Cnd cnd) { @@ -108,6 +116,44 @@ public class SysClubServiceImpl extends BaseServiceImpl implements SysC return clubRegisterVo; } + @Override + public void downloadApplyTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException { + downloadClubTemplate("club_apply", "协会申请成立报告模板", request, response); + } + + @Override + public void downloadRulesTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException { + downloadClubTemplate("club_rules", "协会章程草案模板", request, response); + } + + /** + * 按固定模板代码下载协会模板,模板代码仅由服务内部指定,避免下载其他业务模板。 + */ + private void downloadClubTemplate(String templateCode, String templateName, + HttpServletRequest request, HttpServletResponse response) throws IOException { + Sys_office_template officeTemplate = dao().fetch(Sys_office_template.class, + Cnd.where(Sys_office_template::getTemplateCode, "=", templateCode)); + if (ObjectUtil.isNull(officeTemplate) || StrUtil.isBlank(officeTemplate.getTemplatePath())) { + throw new BaseException("{}不存在", templateName); + } + + // 模板路径由系统文件上传接口生成,从查询参数中提取文件 ID 后复用统一下载逻辑。 + String templatePath = officeTemplate.getTemplatePath(); + int idStartIndex = templatePath.indexOf("id="); + if (idStartIndex < 0) { + throw new BaseException("{}路径无效", templateName); + } + String fileId = templatePath.substring(idStartIndex + 3); + int nextParamIndex = fileId.indexOf('&'); + if (nextParamIndex >= 0) { + fileId = fileId.substring(0, nextParamIndex); + } + if (StrUtil.isBlank(fileId)) { + throw new BaseException("{}文件无效", templateName); + } + sysFileService.download(fileId, request, response); + } + @Override public List getMyManageClub() { diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceMineController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceMineController.java index 08eeef6..f96a841 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceMineController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceMineController.java @@ -247,7 +247,7 @@ public class CondolenceMineController { docData.put("fgh", approval); }); - doneTaskVos.stream().filter(task -> "校工会会计审核".equals(task.getDisplayName())) + doneTaskVos.stream().filter(task -> "校工会财务审核".equals(task.getDisplayName())) .max(Comparator.comparing(ProcessTaskVO::getCreatedAt)) .ifPresent(v -> { Dict taskFormData = v.getTaskFormData(); diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceSchoolPrincipalApprovalController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceSchoolPrincipalApprovalController.java index a7f182e..dd54d6e 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceSchoolPrincipalApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceSchoolPrincipalApprovalController.java @@ -33,7 +33,7 @@ import java.util.List; */ @IocBean @At("/platform/condolence/schoolPrincipalApproval") -@Api("职工慰问校工会会计审核") +@Api("职工慰问校工会财务审核") @Ok("json:full") public class CondolenceSchoolPrincipalApprovalController { diff --git a/src/main/resources/views/platform/zhgh/club/register/apply/clubRegisterForm.js b/src/main/resources/views/platform/zhgh/club/register/apply/clubRegisterForm.js index 6725aee..6fff093 100644 --- a/src/main/resources/views/platform/zhgh/club/register/apply/clubRegisterForm.js +++ b/src/main/resources/views/platform/zhgh/club/register/apply/clubRegisterForm.js @@ -1,3 +1,9 @@ +// 新建协会申请时使用的“协会介绍及宗旨”默认内容。 +const CLUB_DEFAULT_INTRODUCE = '

扬州工业职业技术学院教职工       社团是学校教职工根据共同的兴趣、爱好,以自愿参加、自愿组织、自我管理为原则成立的,具有固定章程的非盈利性校内群众性团体。

' + + '

社团必须坚持以习近平新时代中国特色社会主义思想为指导,坚持正确的政治方向,遵循社会主义核心价值观,不断增强政治性、先进性、群众性。严格遵守国家法律法规和学校各项规章制度。

' + + '

社团以建设文明校园、繁荣校园文化为宗旨,团结和引导广大教职工积极开展各种健康的文化、体育活动,丰富教职工业余生活,促进广大教职工思想道德素质、文化艺术素质和身体素质的协调发展。

' + + '

校工会负责社团的审批和管理,社团接受校工会的指导、管理和监督。

' + const CLUB_FORM_TEMPLATE = { template: `
@@ -90,26 +96,32 @@ const CLUB_FORM_TEMPLATE = { - +
+ + 下载模板 +
- +
+ + 下载模板 +
@@ -156,14 +168,17 @@ const CLUB_FORM_TEMPLATE = { return { formData: { clubName: "", - clubType: "" + clubType: "", + introduce: CLUB_DEFAULT_INTRODUCE }, formRules: { clubName: [{ required: true, message: "请填写协会名称", trigger: ["blur", "change"] }], clubCode: [{ required: false, message: "请填写协会编码", trigger: ["blur", "change"] }], clubType: [{ required: true, message: "请选择协会类型", trigger: ["blur", "change"] }], concatPerson: [{ required: true, message: "请选择协会联系人", trigger: ["blur", "change"] }], - foundTime: [{ required: true, message: "请选择成立时间", trigger: ["blur", "change"] }] + foundTime: [{ required: true, message: "请选择成立时间", trigger: ["blur", "change"] }], + establishReport: [{ required: true, message: "请上传申请成立报告", trigger: ["blur", "change"] }], + rulesFile: [{ required: true, message: "请上传章程草案", trigger: ["blur", "change"] }] // establishReport: [{ required: true, message: "请上传申请成立报告", trigger: ["blur", "change"] }] //rulesFile: [{ required: true, message: "请上传章程草案", trigger: ["blur", "change"] }], //manageFile: [{ required: true, message: "请上传经费来源及管理办法", trigger: ["blur", "change"] }], @@ -173,6 +188,14 @@ const CLUB_FORM_TEMPLATE = { }, computed: {}, methods: { + // 下载已上传的协会申请成立报告模板。 + downloadApplyTemplate() { + window.open("/platform/club/register/clubRegisterApply/downloadTemplate") + }, + // 下载已上传的协会章程草案模板。 + downloadRulesTemplate() { + window.open("/platform/club/register/clubRegisterApply/downloadRulesTemplate") + }, /*concatPersonChange(id) { const user = this.$refs.userSelectRef.options.find((user) => user.id === id) this.$set(this.formData, "concatPersonUnitName", user.unitName) diff --git a/src/main/resources/views/platform/zhgh/club/register/apply/index.html b/src/main/resources/views/platform/zhgh/club/register/apply/index.html index 9e9f101..251e726 100644 --- a/src/main/resources/views/platform/zhgh/club/register/apply/index.html +++ b/src/main/resources/views/platform/zhgh/club/register/apply/index.html @@ -64,7 +64,7 @@ layout("/layouts/platform.html"){ nextStep() { let valid = true this.$refs.clubFormRef.$refs.form.validateField( - ["clubName", "establishReport", "rulesFile", "manageFile", "yearPlanFile"], + ["clubName", "establishReport", "rulesFile"], (errMsg) => { if (!errMsg) { valid = false diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/condolence/type/basicForm.js b/src/main/resources/views/platform/zhgh/staffbenefit/condolence/type/basicForm.js index dad3941..21cf064 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/condolence/type/basicForm.js +++ b/src/main/resources/views/platform/zhgh/staffbenefit/condolence/type/basicForm.js @@ -20,7 +20,6 @@ const basicForm = { 慰问金 (A) - 提货券 (B) 慰问品 (C) diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/condolence/type/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/condolence/type/index.html index 9f93486..c854f52 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/condolence/type/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/condolence/type/index.html @@ -86,6 +86,7 @@ layout("/layouts/platform.html"){ {prop: 'money', label: '金额'}, {prop: 'way', label: '慰问方式'}, {prop: 'isUploadFile', label: '是否上传附件'}, + {prop: 'uploadFileDesc', label: '附件说明'}, {prop: 'enable', label: '是否启用'}, ], } diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/apply/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/apply/index.html index db65285..e096288 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/apply/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/apply/index.html @@ -367,7 +367,7 @@ layout("/layouts/platform_h5.html"){ - +