From 303725da5093979c541664c35783998635177323 Mon Sep 17 00:00:00 2001 From: = <=> Date: Tue, 25 Aug 2026 17:02:40 +0800 Subject: [PATCH] commit --- .../controller/SysSignatureController.java | 4 +- .../TeacherCongressDelegationController.java | 60 +++++++++- .../controller/CondolenceApplyController.java | 12 ++ .../pageform/MemberStatisticsPageForm.java | 3 + .../impl/MemberStatisticsServiceImpl.java | 48 +++++--- .../plugins/sysSignature/h5Index.vue | 12 +- .../plugins/sysUserSelect/index.vue | 12 +- .../views/layouts/v4/baseLayout.html | 94 +++++++++++++++- .../teachercongress/delegation/headForm.js | 33 ++++-- .../staffbenefit/condolence/apply/index.html | 13 ++- .../staffmanage/member/info/board/index.html | 106 ++++++++++++++++-- .../statistics/comprehensive/index.html | 16 ++- .../staffbenefit/condolence/apply/index.html | 13 ++- 13 files changed, 372 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/budwk/app/sys/controller/SysSignatureController.java b/src/main/java/com/budwk/app/sys/controller/SysSignatureController.java index adbcab67..6fa39525 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysSignatureController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysSignatureController.java @@ -131,7 +131,9 @@ public class SysSignatureController { @Aop(TransAop.READ_COMMITTED) public Result update(@Param("file") TempFile tempFile) { String url = sysFileService.uploadReturnUrl(SysFileEngineTypeEnum.MINIO.getValue(), tempFile); - Sys_user_signature sysUserSignature = dao.fetch(Sys_user_signature.class); + // 按当前用户查询签字记录,避免更新时误取到其他用户的签字数据。 + Sys_user_signature sysUserSignature = dao.fetch(Sys_user_signature.class, + Cnd.where(Sys_user_signature::getUserId, "=", SecurityUtil.getUserId())); if (ObjectUtil.isNull(sysUserSignature)) { sysUserSignature = new Sys_user_signature(); } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java index fe7a8ba2..1c2d60e8 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java @@ -82,9 +82,9 @@ public class TeacherCongressDelegationController { SELECT tcd.*, tcs.fullName as sessionName, - GROUP_CONCAT(u.username,u.loginname) as delegationHead, - GROUP_CONCAT(u2.username,u2.loginname) as viceDelegationHead, - GROUP_CONCAT(u3.username,u3.loginname) as delegationContact + GROUP_CONCAT(DISTINCT CONCAT_WS('', u.username, u.loginname)) as delegationHead, + GROUP_CONCAT(DISTINCT CONCAT_WS('', u2.username, u2.loginname)) as viceDelegationHead, + GROUP_CONCAT(DISTINCT CONCAT_WS('', u3.username, u3.loginname)) as delegationContact FROM teacher_congress_delegation tcd LEFT JOIN teacher_congress_session tcs ON tcs.id = tcd.sessionId @@ -308,6 +308,37 @@ public class TeacherCongressDelegationController { throw new BaseException("参数错误"); } + // 副团长允许多人,需要返回完整候选人列表;团长和联络人仍保持单人返回结构。 + if (type.equals(RoleConstant.TEACHER_CONGRESS_VICE_DELEGATION_HEAD.name())) { + List userRoles = dao.query(Sys_user_role.class, + Cnd.where(Sys_user_role::getTcSessionId, "=", sessionId) + .and(Sys_user_role::getTcDelegationId, "=", delegationId) + .and(Sys_user_role::getRoleId, "=", role.getId())); + List userIds = userRoles.stream().map(Sys_user_role::getUserId).filter(StrUtil::isNotBlank).toList(); + if (userIds.isEmpty()) { + return Result.success().addData(List.of()); + } + Sql sql = Sqls.create(""" + SELECT + u.id as userId, + u.loginname as loginName, + u.username as userName, + u.mobile, + n.name as unitName + FROM + sys_user u + LEFT JOIN sys_unit n on n.id = u.unitId + WHERE + u.id IN (@userIds) + """); + sql.setParam("userIds", userIds); + sql.setCallback(Sqls.callback.maps()); + dao.execute(sql); + @SuppressWarnings("unchecked") + List users = (List) sql.getResult(); + return Result.success().addData(users); + } + Record record = dao.fetch("sys_user_role", Cnd.where("tcSessionId", "=", sessionId).and("tcDelegationId", "=", delegationId).and("roleId", "=", role.getId())); String userId = Optional.ofNullable(record).map(r -> r.getString("userId")).orElse(null); @@ -337,14 +368,16 @@ public class TeacherCongressDelegationController { * @param delegationId 代表团ID * @param sessionId 届次ID * @param userId 团长id - * @param viceUserId 副团长id + * @param viceUserIds 逗号分隔的副团长id列表 + * @param viceUserIdArray 表单数组编码的副团长id列表 + * @param viceUserId 兼容旧版页面提交的单个副团长id * @param contactUserId 联络人 * @return */ @At @SaCheckPermission("tc.delegation") @Aop(TransAop.READ_COMMITTED) - public Result insertHead(@Valid String delegationId, @Valid String sessionId, @Valid String userId, @Valid String viceUserId, String contactUserId) { + public Result insertHead(@Valid String delegationId, @Valid String sessionId, @Valid String userId, @Param("viceUserIds") String viceUserIds, @Param("viceUserIds[]") String[] viceUserIdArray, @Param("viceUserId") String viceUserId, String contactUserId) { // 团长 Sys_role role = sysRoleService.getByCode(RoleConstant.TEACHER_CONGRESS_DELEGATION_HEAD); dao.clear(Sys_user_role.class, Cnd.where(Sys_user_role::getTcDelegationId, "=", delegationId).and(Sys_user_role::getTcSessionId, "=", sessionId).and(Sys_user_role::getRoleId, "=", role.getId())); @@ -353,7 +386,22 @@ public class TeacherCongressDelegationController { // 副团长 Sys_role role2 = sysRoleService.getByCode(RoleConstant.TEACHER_CONGRESS_VICE_DELEGATION_HEAD); dao.clear(Sys_user_role.class, Cnd.where(Sys_user_role::getTcDelegationId, "=", delegationId).and(Sys_user_role::getTcSessionId, "=", sessionId).and(Sys_user_role::getRoleId, "=", role2.getId())); - dao.insert("sys_user_role", Chain.make("userId", viceUserId).add("roleId", role2.getId()).add("tcDelegationId", delegationId).add("tcSessionId", sessionId)); + List selectedViceUserIds = CollUtil.newArrayList(); + if (StrUtil.isNotBlank(viceUserIds)) { + selectedViceUserIds.addAll(Arrays.stream(viceUserIds.split(",")).filter(StrUtil::isNotBlank).distinct().toList()); + } + if (viceUserIdArray != null) { + selectedViceUserIds.addAll(Arrays.stream(viceUserIdArray).filter(StrUtil::isNotBlank).distinct().toList()); + } + // 旧版页面只提交 viceUserId,兼容该参数可避免升级后保存时清空已有选择。 + if (selectedViceUserIds.isEmpty() && StrUtil.isNotBlank(viceUserId)) { + selectedViceUserIds.add(viceUserId); + } + for (String selectedViceUserId : selectedViceUserIds.stream().distinct().toList()) { + if (StrUtil.isNotBlank(selectedViceUserId)) { + dao.insert("sys_user_role", Chain.make("userId", selectedViceUserId).add("roleId", role2.getId()).add("tcDelegationId", delegationId).add("tcSessionId", sessionId)); + } + } // 联络人 Sys_role role3 = sysRoleService.getByCode(RoleConstant.TEACHER_CONGRESS_DELEGATION_CONTACT); diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceApplyController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceApplyController.java index 03889f07..eecae746 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceApplyController.java @@ -95,6 +95,12 @@ public class CondolenceApplyController { Dict args = Dict.create(); args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); args.set(FlowConst.FORM_DATA, condolence); + // 根据提交人的校工会角色设置流程分支变量,供 ZGWW 流程表达式判断是否直达校工会审核。 + boolean directToSchoolUnionAudit = AuthUtil.hasRoleOr( + RoleConstant.SCHOOL_UNION_CHAIRMAN.name(), + RoleConstant.SCHOOL_UNION_VICE_CHAIRMAN.name(), + RoleConstant.SCHOOL_UNION_ADMIN.name()); + args.set("tf_source", directToSchoolUnionAudit ? "SCHOOL_UNION" : "PERSONAL"); ProcessInstance instance = flowEngine.startProcessInstanceByKey("ZGWW", condolence.getId(), SecurityUtil.getUserId(), args); // 自动完成第一个申请任务 @@ -116,6 +122,12 @@ public class CondolenceApplyController { Dict dict = Dict.create(); dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId); dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode()); + // 重新提交时同步设置分支变量,避免角色符合条件时仍按普通申请路径流转。 + boolean directToSchoolUnionAudit = AuthUtil.hasRoleOr( + RoleConstant.SCHOOL_UNION_CHAIRMAN.name(), + RoleConstant.SCHOOL_UNION_VICE_CHAIRMAN.name(), + RoleConstant.SCHOOL_UNION_ADMIN.name()); + dict.set("tf_source", directToSchoolUnionAudit ? "SCHOOL_UNION" : "PERSONAL"); flowCommonService.executeTask(dict); return Result.success(); } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java index f78660f3..dfd477d0 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java @@ -25,6 +25,9 @@ public class MemberStatisticsPageForm extends PageForm { private String searchType; + @ApiModelProperty("是否缴费会员") + private Boolean memberFeePaid; + private String startDate; private String endDate; diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java index c68c3c1d..6252d487 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java @@ -156,6 +156,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple FROM $table $hisUser + LEFT JOIN sys_user su ON su.id = u.id LEFT JOIN sys_user_role sur ON sur.userid = u.id $condition """); @@ -173,6 +174,10 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple if (StrUtil.isNotBlank(pageForm.getIsUnion())) { cnd.and("u.unionId", "true".equals(pageForm.getIsUnion()) ? "is not" : "is", null); } + // 缴费会员由会员分组管理维护,空值按未缴费处理。 + if (pageForm.getMemberFeePaid() != null) { + cnd.and("IFNULL(su.memberFeePaid, 0)", "=", pageForm.getMemberFeePaid() ? 1 : 0); + } if (StrUtil.isNotBlank(pageForm.getSearchType()) && !"all".equals(pageForm.getSearchType())) { if ("member".equals(pageForm.getSearchType())) { @@ -209,17 +214,18 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple @Override public List getUnionAnalysisData(String queryId, Integer currentYear) { + // 会员统计口径统一为会员分组管理中标记为已缴费的人员。 Sql sql = Sqls.create(""" SELECT gh.id, gh.unionCode, gh.`name` as unionName, - ( SELECT count( 1 ) FROM member_history his LEFT JOIN vw_user u on u.id = his.userId WHERE his.`year` = @lastYear AND u.unionId = gh.id ) AS lastYearMemberNum, - ( SELECT count( 1 ) FROM member_apply_record WHERE changeUnionId is not null AND unionId = gh.id AND unionId != changeUnionId AND YEAR ( applyDateTime ) = @currentYear ) AS memberUnitChangeNumIn, - ( SELECT count( 1 ) FROM member_apply_record WHERE changeUnionId is not null AND changeUnionId = gh.id AND unionId != changeUnionId AND YEAR ( applyDateTime ) = @currentYear ) AS memberUnitChangeNumOut, - ( SELECT count( 1 ) FROM sys_user_history his LEFT JOIN `vw_user` u ON u.loginname = his.loginname WHERE JSON_CONTAINS(his.changeTypes, '["NEW", "RESTORE"]', '$') AND u.unionId = gh.id AND YEAR ( his.changeTime ) = @currentYear ) AS newResetMemberNum, - ( SELECT count( 1 ) FROM sys_user_history his LEFT JOIN `vw_user` u ON u.loginname = his.loginname WHERE JSON_CONTAINS(his.changeTypes, '["WITHDRAWAL"]', '$') AND u.unionId = gh.id AND YEAR ( his.changeTime ) = @currentYear ) AS reduceOtherNum, - ( SELECT count( 1 ) FROM $table where member = 1 and unionId = gh.id) as currentYearMemberNum + ( SELECT count( 1 ) FROM member_history his LEFT JOIN vw_user u on u.id = his.userId INNER JOIN sys_user su ON su.id = his.userId AND su.memberFeePaid = 1 WHERE his.`year` = @lastYear AND u.unionId = gh.id ) AS lastYearMemberNum, + ( SELECT count( 1 ) FROM member_apply_record mar INNER JOIN sys_user su ON su.id = mar.userId AND su.memberFeePaid = 1 WHERE mar.changeUnionId is not null AND mar.unionId = gh.id AND mar.unionId != mar.changeUnionId AND YEAR ( mar.applyDateTime ) = @currentYear ) AS memberUnitChangeNumIn, + ( SELECT count( 1 ) FROM member_apply_record mar INNER JOIN sys_user su ON su.id = mar.userId AND su.memberFeePaid = 1 WHERE mar.changeUnionId is not null AND mar.changeUnionId = gh.id AND mar.unionId != mar.changeUnionId AND YEAR ( mar.applyDateTime ) = @currentYear ) AS memberUnitChangeNumOut, + ( SELECT count( 1 ) FROM sys_user_history his LEFT JOIN `vw_user` u ON u.loginname = his.loginname INNER JOIN sys_user su ON su.id = u.id AND su.memberFeePaid = 1 WHERE JSON_CONTAINS(his.changeTypes, '["NEW", "RESTORE"]', '$') AND u.unionId = gh.id AND YEAR ( his.changeTime ) = @currentYear ) AS newResetMemberNum, + ( SELECT count( 1 ) FROM sys_user_history his LEFT JOIN `vw_user` u ON u.loginname = his.loginname INNER JOIN sys_user su ON su.id = u.id AND su.memberFeePaid = 1 WHERE JSON_CONTAINS(his.changeTypes, '["WITHDRAWAL"]', '$') AND u.unionId = gh.id AND YEAR ( his.changeTime ) = @currentYear ) AS reduceOtherNum, + ( SELECT count( 1 ) FROM $table u INNER JOIN sys_user su ON su.id = $memberUserId AND su.memberFeePaid = 1 WHERE u.member = 1 AND u.unionId = gh.id) as currentYearMemberNum FROM sys_union gh $condition @@ -227,6 +233,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple sql.setParam("lastYear", currentYear - 1); sql.setParam("currentYear", currentYear); sql.setVar("table", ((Integer) DateUtil.thisYear()).equals(currentYear) ? "`vw_user`" : "member_history"); + sql.setVar("memberUserId", new Static(((Integer) DateUtil.thisYear()).equals(currentYear) ? "u.id" : "u.userId")); Cnd cnd = Cnd.NEW(); if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { cnd.and("gh.id", "=", SecurityUtil.getUnionId()); @@ -247,17 +254,18 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple @Override public List getUnitAnalysisData(String queryId, Integer currentYear) { + // 会员统计口径统一为会员分组管理中标记为已缴费的人员。 Sql sql = Sqls.create(""" SELECT dw.id, dw.unitcode as unitCode, dw.`name` as unitName, - ( SELECT count( 1 ) FROM member_history WHERE `year` = @lastYear AND unitId = dw.id ) AS lastYearMemberNum, - ( SELECT count( 1 ) FROM member_apply_record WHERE changeUnitId is not null AND unitId = dw.id AND unitId != changeUnitId AND YEAR ( applyDateTime ) = @currentYear ) AS memberUnitChangeNumIn, - ( SELECT count( 1 ) FROM member_apply_record WHERE changeUnitId is not null AND changeUnitId = dw.id AND unitId != changeUnitId AND YEAR ( applyDateTime ) = @currentYear ) AS memberUnitChangeNumOut, - ( SELECT count( 1 ) FROM sys_user_history his LEFT JOIN vw_user u ON u.loginname = his.loginname WHERE JSON_CONTAINS(his.changeTypes, '["NEW", "RESTORE"]', '$') AND u.unitId = dw.id AND YEAR ( his.changeTime ) = @currentYear ) AS newResetMemberNum, - ( SELECT count( 1 ) FROM sys_user_history his LEFT JOIN vw_user u ON u.loginname = his.loginname WHERE JSON_CONTAINS(his.changeTypes, '["WITHDRAWAL"]', '$') AND u.unitId = dw.id AND YEAR ( his.changeTime ) = @currentYear ) AS reduceOtherNum, - ( SELECT count( 1 ) from vw_user where member = 1 and unitId = dw.id) as currentYearMemberNum + ( SELECT count( 1 ) FROM member_history his INNER JOIN sys_user su ON su.id = his.userId AND su.memberFeePaid = 1 WHERE his.`year` = @lastYear AND his.unitId = dw.id ) AS lastYearMemberNum, + ( SELECT count( 1 ) FROM member_apply_record mar INNER JOIN sys_user su ON su.id = mar.userId AND su.memberFeePaid = 1 WHERE mar.changeUnitId is not null AND mar.unitId = dw.id AND mar.unitId != mar.changeUnitId AND YEAR ( mar.applyDateTime ) = @currentYear ) AS memberUnitChangeNumIn, + ( SELECT count( 1 ) FROM member_apply_record mar INNER JOIN sys_user su ON su.id = mar.userId AND su.memberFeePaid = 1 WHERE mar.changeUnitId is not null AND mar.changeUnitId = dw.id AND mar.unitId != mar.changeUnitId AND YEAR ( mar.applyDateTime ) = @currentYear ) AS memberUnitChangeNumOut, + ( SELECT count( 1 ) FROM sys_user_history his LEFT JOIN vw_user u ON u.loginname = his.loginname INNER JOIN sys_user su ON su.id = u.id AND su.memberFeePaid = 1 WHERE JSON_CONTAINS(his.changeTypes, '["NEW", "RESTORE"]', '$') AND u.unitId = dw.id AND YEAR ( his.changeTime ) = @currentYear ) AS newResetMemberNum, + ( SELECT count( 1 ) FROM sys_user_history his LEFT JOIN vw_user u ON u.loginname = his.loginname INNER JOIN sys_user su ON su.id = u.id AND su.memberFeePaid = 1 WHERE JSON_CONTAINS(his.changeTypes, '["WITHDRAWAL"]', '$') AND u.unitId = dw.id AND YEAR ( his.changeTime ) = @currentYear ) AS reduceOtherNum, + ( SELECT count( 1 ) FROM vw_user u INNER JOIN sys_user su ON su.id = u.id AND su.memberFeePaid = 1 WHERE u.member = 1 AND u.unitId = dw.id) as currentYearMemberNum FROM sys_unit dw $condition @@ -310,6 +318,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple @Override public List getUnionStatisticsData(String unionId, Integer currentYear) { + // 会员统计口径统一为会员分组管理中标记为已缴费的人员。 Sql sql = Sqls.create(""" SELECT un.id, @@ -320,11 +329,12 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple SUM(CASE WHEN TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) >= 51 AND TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) <= 55 $personCnd $yearCnd THEN 1 ELSE 0 END) AS smallFiftyFive, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) > 55 $personCnd $yearCnd THEN 1 ELSE 0 END) AS smallFiftyFive2, COUNT(*) AS totalNumber, - SUM(CASE WHEN sex = '男' $personCnd $yearCnd THEN 1 ELSE 0 END) AS maleMember, - SUM(CASE WHEN sex = '女' $personCnd $yearCnd THEN 1 ELSE 0 END) AS femaleMember + SUM(CASE WHEN u.sex = '男' $personCnd $yearCnd THEN 1 ELSE 0 END) AS maleMember, + SUM(CASE WHEN u.sex = '女' $personCnd $yearCnd THEN 1 ELSE 0 END) AS femaleMember FROM sys_union un JOIN $table u ON u.unionId = un.id AND u.member = 1 + JOIN sys_user su ON su.id = $memberUserId AND su.memberFeePaid = 1 $condition """); Cnd cnd = Cnd.NEW(); @@ -335,9 +345,11 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple } if (DateUtil.thisYear() == currentYear) { sql.setVar("table", new Static("vw_user")); + sql.setVar("memberUserId", new Static("u.id")); // sql.setVar("abbr", new Static("u")); } else { sql.setVar("table", new Static("member_history")); + sql.setVar("memberUserId", new Static("u.userId")); sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear))); // sql.setVar("abbr", new Static("his")); } @@ -349,6 +361,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple @Override public List getUnitStatisticsData(String unitId, Integer currentYear) { + // 会员统计口径统一为会员分组管理中标记为已缴费的人员。 Sql sql = Sqls.create(""" SELECT un.id, @@ -359,11 +372,12 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple SUM(CASE WHEN TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) >= 51 AND TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) <= 55 $personCnd $yearCnd THEN 1 ELSE 0 END) AS smallFiftyFive, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) > 55 $personCnd $yearCnd THEN 1 ELSE 0 END) AS smallFiftyFive2, COUNT(*) AS totalNumber, - SUM(CASE WHEN sex = '男' $personCnd $yearCnd THEN 1 ELSE 0 END) AS maleMember, - SUM(CASE WHEN sex = '女' $personCnd $yearCnd THEN 1 ELSE 0 END) AS femaleMember + SUM(CASE WHEN u.sex = '男' $personCnd $yearCnd THEN 1 ELSE 0 END) AS maleMember, + SUM(CASE WHEN u.sex = '女' $personCnd $yearCnd THEN 1 ELSE 0 END) AS femaleMember FROM sys_unit un JOIN $table u ON u.unitId = un.id AND u.member = 1 + JOIN sys_user su ON su.id = $memberUserId AND su.memberFeePaid = 1 $condition """); Cnd cnd = Cnd.NEW(); @@ -374,8 +388,10 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple } if (DateUtil.thisYear() == currentYear) { sql.setVar("table", new Static("vw_user")); + sql.setVar("memberUserId", new Static("u.id")); } else { sql.setVar("table", new Static("member_history")); + sql.setVar("memberUserId", new Static("u.userId")); sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear))); } cnd.and("un.unitLevel", "=", 2); diff --git a/src/main/resources/static/components/plugins/sysSignature/h5Index.vue b/src/main/resources/static/components/plugins/sysSignature/h5Index.vue index fa667b97..b00c1b5e 100644 --- a/src/main/resources/static/components/plugins/sysSignature/h5Index.vue +++ b/src/main/resources/static/components/plugins/sysSignature/h5Index.vue @@ -40,6 +40,14 @@ module.exports = { } }, methods: { + // 打开手机端签字组件前,先读取当前用户已经保存的签字。 + async init() { + const { code, data } = await this.$axios.post("/platform/signature/get") + if (code === 0) { + this.$set(this, "signatureContent", data && data.signature) + this.$emit("input", this.signatureContent) + } + }, openSignature() { this.showSignaturePanel = true }, @@ -86,7 +94,9 @@ module.exports = { return new File([blob], filename, { type: contentType }) } }, - created() {} + created() { + this.init() + } } diff --git a/src/main/resources/static/components/plugins/sysUserSelect/index.vue b/src/main/resources/static/components/plugins/sysUserSelect/index.vue index f04ca49e..d82539ad 100644 --- a/src/main/resources/static/components/plugins/sysUserSelect/index.vue +++ b/src/main/resources/static/components/plugins/sysUserSelect/index.vue @@ -1,5 +1,5 @@