diff --git a/src/main/java/com/budwk/app/base/event/role/RoleEventMsg.java b/src/main/java/com/budwk/app/base/event/role/RoleEventMsg.java index c1e5213f..82ebbe35 100644 --- a/src/main/java/com/budwk/app/base/event/role/RoleEventMsg.java +++ b/src/main/java/com/budwk/app/base/event/role/RoleEventMsg.java @@ -56,6 +56,7 @@ public class RoleEventMsg { public RoleEventMsg(String unitId, String roleCode, Integer operationType){ this.unitId = unitId; + this.roleCode = roleCode; this.operationType = operationType; } diff --git a/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionAdminByArgsAssignmentHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionAdminByArgsAssignmentHandler.java new file mode 100644 index 00000000..b5477261 --- /dev/null +++ b/src/main/java/com/budwk/app/flow/handler/FlowSchoolUnionAdminByArgsAssignmentHandler.java @@ -0,0 +1,52 @@ +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; + +/** + * @version 1.0 + * @Author FKY + * @name:FlowSchoolUnionAdminByArgsAssignmentHandler + * @Date 2025/9/29 17:00 + * @注释 + */ +public class FlowSchoolUnionAdminByArgsAssignmentHandler implements AssignmentHandler { + + @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_ADMIN.name()); + sql.setCallback(Sqls.callback.strList()); + dao.execute(sql); + return sql.getList(String.class); + } + + + @Override + public String getMessage() { + return "获取校工会管理员"; + } + + @Override + public int getOrder() { + return AssignmentHandler.super.getOrder(); + } +} diff --git a/src/main/java/com/budwk/app/flow/handler/FlowUnionGroupLeadersByArgsAssignmentHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowUnionGroupLeadersByArgsAssignmentHandler.java new file mode 100644 index 00000000..d423ca99 --- /dev/null +++ b/src/main/java/com/budwk/app/flow/handler/FlowUnionGroupLeadersByArgsAssignmentHandler.java @@ -0,0 +1,51 @@ +package com.budwk.app.flow.handler; + +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.flow.constant.FlowConst; +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 com.budwk.app.sys.models.Sys_role; +import com.budwk.app.sys.models.Sys_union_group; +import com.budwk.app.sys.models.Sys_user_role; +import com.budwk.app.sys.services.SysRoleService; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.util.cri.Static; +import org.nutz.lang.Lang; + +import java.util.List; + +/** + * @version 1.0 + * @Author zzr + * @name:FlowUnionGroupLeadersByArgsAssignmentHandler + * @Date 2025/9/28 16:35 + * @注释 获取工会小组长 + */ +public class FlowUnionGroupLeadersByArgsAssignmentHandler implements AssignmentHandler { + + + @Override + public List assign(TaskModel model, Execution execution) { + Dao dao = ServiceContext.find(Dao.class); + String unitId = StrUtil.blankToDefault(execution.getArgs().getStr(FlowConst.INITIATOR_UNIT_ID), SecurityUtil.getUnitId()); + String unionId = StrUtil.blankToDefault(execution.getArgs().getStr(FlowConst.INITIATOR_UNIT_UNION_ID), SecurityUtil.getUnionId()); + Sys_union_group group = dao.fetch(Sys_union_group.class, Cnd.where(Sys_union_group::getUnionId, "=", unionId) + .and(new Static(" JSON_CONTAINS(unitIds, '\"%s\"')".formatted(unitId)))); + return Lang.isNotEmpty(group) ? group.getLeaders() : null; + } + + @Override + public String getMessage() { + return "当前登录用户的工会小组长"; + } + + @Override + public int getOrder() { + return AssignmentHandler.super.getOrder(); + } +} diff --git a/src/main/java/com/budwk/app/sys/controller/SysDataUserPullController.java b/src/main/java/com/budwk/app/sys/controller/SysDataUserPullController.java index 7b4880df..e4b33148 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysDataUserPullController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysDataUserPullController.java @@ -12,6 +12,8 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; @@ -40,6 +42,7 @@ public class SysDataUserPullController { @ApiOperation("分页数据") @Ok("json:{locked:'password|idCard|mobile'}") public Result pageData(@Valid SysDataUserPullPageForm pageForm) { + Sql sql = Sqls.create("select us.*,su.`name` AS unit_name from sys_user_source us left join sys_unit su ON su.id = us.unitId $condition"); Cnd cnd = Cnd.NEW(); cnd.andEX(Sys_user_source::getPullTime, "=", pageForm.getPullTime()); cnd.and(Cnd.likeEX(Sys_user_source::getUsername, pageForm.getUserName())); @@ -53,7 +56,8 @@ public class SysDataUserPullController { cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); } cnd.desc(Sys_user_source::getPullTime); - Pagination pagination = sysUserPullService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd); + sql.setCondition(cnd); + Pagination pagination = sysUserPullService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return Result.success(pagination); } diff --git a/src/main/java/com/budwk/app/sys/controller/SysUnionController.java b/src/main/java/com/budwk/app/sys/controller/SysUnionController.java index 58039b32..1578bb5d 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysUnionController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysUnionController.java @@ -334,7 +334,16 @@ public class SysUnionController { if (Lang.isEmpty(role)) { throw new BaseException("无法找到{}对应编码的角色", roleCode); } - sysRoleService.clear("sys_user_role", Cnd.where("roleId", "=", role.getId()).and("userId", "=", userId).and("unionId", "=", unionId)); + Cnd cnd = Cnd.NEW(); + cnd.and("roleId", "=", role.getId()); + if (StrUtil.isNotBlank(userId)) { + cnd.and("userId", "=", userId); + } else { + cnd.and("userId", "is", null); + } + cnd.and("unionId", "=", unionId); + + sysRoleService.clear("sys_user_role", cnd); sysRoleService.clearCache(); sysUserService.clearCache(); return Result.success(); diff --git a/src/main/java/com/budwk/app/sys/controller/SysUnionGroupController.java b/src/main/java/com/budwk/app/sys/controller/SysUnionGroupController.java index 6f268ef5..304467db 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysUnionGroupController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysUnionGroupController.java @@ -5,12 +5,16 @@ import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; import com.budwk.app.sys.models.Sys_union_group; +import com.budwk.app.sys.models.Sys_unit; import com.budwk.app.sys.services.SysUnionGroupService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; @@ -84,4 +88,31 @@ public class SysUnionGroupController { } + @At + @SaCheckPermission("sys.manager.union") + @ApiOperation("获取组成单位") + public Result getUnits(String unionId, String groupId){ + Sql sql = Sqls.create(""" + SELECT + j.unitId + FROM + sys_union_group, + JSON_TABLE (unitIds, '$[*]' COLUMNS (unitId VARCHAR (50) PATH '$')) AS j + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("unionId", "=", unionId); + cnd.andEX("id", "!=", groupId); + sql.setCondition(cnd); + + sql.setCallback(Sqls.callback.strList()); + dao.execute(sql); + List list = sql.getList(String.class); + + List unitList = dao.query(Sys_unit.class, + Cnd.where("unionId", "=", unionId) + .and("unitTypeCode", "=", "1") + .andEX("id", "not in", list)); + return Result.success(unitList); + } } diff --git a/src/main/java/com/budwk/app/sys/listener/SysUserChangeListener.java b/src/main/java/com/budwk/app/sys/listener/SysUserChangeListener.java new file mode 100644 index 00000000..21d9c9aa --- /dev/null +++ b/src/main/java/com/budwk/app/sys/listener/SysUserChangeListener.java @@ -0,0 +1,60 @@ +package com.budwk.app.sys.listener; + +import cn.hutool.core.util.ObjectUtil; +import com.budwk.app.base.event.user.UserChangeEventListener; +import com.budwk.app.base.event.user.UserChangeMsg; +import com.budwk.app.sys.models.Sys_user_role; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; + +/** + * @version 1.0 + * @Author zzr + * @name:SysUserChangeListener + * @Date 2025/8/13 15:24 + * @注释 有关系统人员的广播监听 + */ +@IocBean +public class SysUserChangeListener implements UserChangeEventListener { + + @Inject + private Dao dao; + + @Override + @Aop(TransAop.READ_COMMITTED) + public void receive(UserChangeMsg message) { + if (ObjectUtil.equals(message.getOperationType(), UserChangeMsg.UNIT_CHANGE_OPERATION)) { + // 单位变动,删除原单位的角色 + dao.clear(Sys_user_role.class, Cnd.where("userId", "in", message.getUserIds()).and("unitId", "=", message.getSourceUnitId())); + + // 判断这两个单位是不是在一个工会,如果不是,删除原来工会的所有角色 + Sql sql = Sqls.create(""" + SELECT + (SELECT unionId FROM sys_unit WHERE id = @sourceUnitId) AS sourceUnionId, + (SELECT unionId FROM sys_unit WHERE id = @targetUnitId) AS targetUnionId, + CASE + WHEN (SELECT unionId FROM sys_unit WHERE id = @sourceUnitId) IS NULL + AND (SELECT unionId FROM sys_unit WHERE id = @targetUnitId) IS NULL THEN true + WHEN (SELECT unionId FROM sys_unit WHERE id = @sourceUnitId) = + (SELECT unionId FROM sys_unit WHERE id = @targetUnitId) THEN true + ELSE false + END AS result + """).setParam("sourceUnitId", message.getSourceUnitId()).setParam("targetUnitId", message.getTargetUnitId()); + sql.setCallback(Sqls.callback.map()); + dao.execute(sql); + NutMap result = (NutMap) sql.getResult(); + + if (!result.getBoolean("result")) { + dao.clear(Sys_user_role.class, Cnd.where("userId", "in", message.getUserIds()).and("unionId", "=", result.getString("sourceUnionId"))); + } + + } + } +} diff --git a/src/main/java/com/budwk/app/sys/models/Sys_union_group.java b/src/main/java/com/budwk/app/sys/models/Sys_union_group.java index fa8997d0..5303c0b5 100644 --- a/src/main/java/com/budwk/app/sys/models/Sys_union_group.java +++ b/src/main/java/com/budwk/app/sys/models/Sys_union_group.java @@ -6,6 +6,8 @@ import lombok.EqualsAndHashCode; import org.nutz.dao.entity.annotation.*; import org.nutz.dao.interceptor.annotation.PrevInsert; +import java.util.List; + @Data @EqualsAndHashCode(callSuper = true) @Table("sys_union_group") @@ -23,6 +25,11 @@ public class Sys_union_group extends BaseModel { @ColDefine(type = ColType.VARCHAR, width = 32) private String unionId; + @Column + @Comment("绑定单位Id集合") + @ColDefine(type = ColType.MYSQL_JSON) + private List unitIds; + @Comment("名称") @Column @ColDefine(type = ColType.VARCHAR, width = 100) @@ -36,7 +43,6 @@ public class Sys_union_group extends BaseModel { @Comment("小组长") @Column @ColDefine(type = ColType.VARCHAR, width = 32) - private String leader; - + private List leaders; } diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java index e5f4c871..e54f7e6d 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java @@ -9,6 +9,8 @@ import cn.hutool.http.HtmlUtil; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.event.role.RoleEventMsg; import com.budwk.app.base.event.role.RoleEventPublisher; +import com.budwk.app.base.event.user.UserChangeMsg; +import com.budwk.app.base.event.user.UserChangePublisher; import com.budwk.app.base.utils.PwdUtil; import com.budwk.app.sys.annotation.DataCenterColumn; import com.budwk.app.sys.models.*; @@ -60,6 +62,9 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService @Inject private ThreadPoolTaskExecutor executorService; + + private static Map unitIdNameMap; + /** * 字段映射类,用于缓存反射结果 */ @@ -150,6 +155,10 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService Sys_role publicRole = sysRoleService.getByCode(RoleConstant.PUBLIC); Sys_role memberRole = sysRoleService.getByCode(RoleConstant.MEMBER); + // 获取单位信息,后续判断单位变更 + List unitList = dao.query(Sys_unit.class, Cnd.where("unitTypeCode", "=", "1")); + unitIdNameMap = unitList.stream().collect(Collectors.toMap(Sys_unit::getId, Sys_unit::getName)); + // 查询数据源 Cnd cnd = Cnd.where(Sys_user_source::getPullTime, "=", updateParam.getPullTime()); @@ -443,9 +452,13 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService NutMap change = NutMap.NEW(); change.put("fieldName", "单位"); change.put("field", "unitId"); - change.put("sourceValue", user.getUnitId()); - change.put("newValue", source.getUnitId()); + change.put("sourceValue", unitIdNameMap.get(user.getUnitId())); + change.put("newValue", unitIdNameMap.get(user.getUnitId())); changeList.add(change); + + // 单位异动发送订阅消息,清空原单位的所有角色 + UserChangePublisher.broadcast(new UserChangeMsg(List.of(user.getId()), + UserChangeMsg.UNIT_CHANGE_OPERATION, user.getUnitId(), source.getUnitId())); } // 如果没有任何变更,返回null diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserIncrUpdateServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserIncrUpdateServiceImpl.java index 1ca646a4..78b34691 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserIncrUpdateServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserIncrUpdateServiceImpl.java @@ -6,12 +6,15 @@ import cn.hutool.core.thread.AsyncUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.base.event.role.RoleEventMsg; +import com.budwk.app.base.event.role.RoleEventPublisher; import com.budwk.app.base.utils.ConditionGroupUtil; import com.budwk.app.base.utils.PwdUtil; import com.budwk.app.sys.models.*; import com.budwk.app.sys.param.SysDataUserUpdateParam; import com.budwk.app.sys.services.SysDataUserUpdateService; import com.budwk.app.sys.services.SysRoleService; +import com.budwk.app.zhgh.democratic.proposal.models.ProposalConfig; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; @@ -143,6 +146,12 @@ public class SysDataUserIncrUpdateServiceImpl implements SysDataUserUpdateServic // 计算设置为会员的人数 long memberCount = sysUsers.stream().filter(Sys_user::getMember).count(); + // 6.1 更新提案的校领导角色,发送订阅 + ProposalConfig config = dao.fetch(ProposalConfig.class, Cnd.where("delFlag", "=", false).desc("updatedAt")); + for (String unitId : config.getSchoolLeaderUnitIds()) { + RoleEventPublisher.broadcast(new RoleEventMsg(unitId, RoleConstant.PROPOSAL_BRANCH_SCHOOL_LEADER.name(), RoleEventMsg.RENEW_ROLE)); + } + return StrUtil.format("增量更新成功,本次更新新入职老师{}人,新增单位{}个,设置为会员{}人。", sysUsers.size(), insertUnits.size(), memberCount); } } diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysUnionGroupServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysUnionGroupServiceImpl.java index 82284c6b..b5331d64 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysUnionGroupServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysUnionGroupServiceImpl.java @@ -47,7 +47,7 @@ public class SysUnionGroupServiceImpl extends BaseServiceImpl i throw new BaseException("小组编码已存在"); } dao().insert(group); - grantRole(group.getId(), group.getLeader()); + grantRole(group.getId(), group.getLeaders()); } @Override @@ -59,7 +59,7 @@ public class SysUnionGroupServiceImpl extends BaseServiceImpl i throw new BaseException("小组编码已存在"); } dao().updateIgnoreNull(group); - grantRole(group.getId(), group.getLeader()); + grantRole(group.getId(), group.getLeaders()); } @Override @@ -88,20 +88,46 @@ public class SysUnionGroupServiceImpl extends BaseServiceImpl i public Pagination pageData(PageForm pageForm, String unionId) { Sql sql = Sqls.create(""" SELECT - t1.*, - t2.username AS leaderUserName, - t2.mobile AS leaderMobile + t1.id, + t1.`code`, + t1.unionId, + t1.`name`, + t1.leaders, + t1.unitIds, + u_agg.unitInfos, + l_agg.leaderInfos FROM sys_union_group t1 - LEFT JOIN sys_user t2 ON t2.id = t1.leader + LEFT JOIN ( + SELECT + tg.id, + GROUP_CONCAT(u.NAME ORDER BY u.id) AS unitInfos + FROM + sys_union_group tg + JOIN JSON_TABLE (tg.unitIds, '$[*]' COLUMNS (unitId VARCHAR (50) PATH '$')) ju + JOIN sys_unit u ON u.id = ju.unitId + GROUP BY + tg.id + ) u_agg ON u_agg.id = t1.id + LEFT JOIN ( + SELECT + tg.id, + GROUP_CONCAT(CONCAT(u1.username, '(', u1.loginname, ')') ORDER BY u1.username) AS leaderInfos + FROM + sys_union_group tg + JOIN JSON_TABLE (tg.leaders, '$[*]' COLUMNS (userId VARCHAR (50) PATH '$')) jl + JOIN sys_user u1 ON u1.id = jl.userId + GROUP BY + tg.id + ) l_agg ON l_agg.id = t1.id $condition """); Cnd cnd = Cnd.NEW(); cnd.and("t1.unionId", "=", unionId); if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { - cnd.where().andLike("t1.name", pageForm.getSearchKeyword()); + cnd.where().andLike("t1.`name`", pageForm.getSearchKeyword()); } - cnd.asc("t1.code"); + cnd.asc("t1.`code`"); sql.setCondition(cnd); Pagination pagination = listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return pagination; @@ -124,16 +150,19 @@ public class SysUnionGroupServiceImpl extends BaseServiceImpl i * @param groupId 小组id * @param groupLeader 组长id */ - private void grantRole(String groupId, String groupLeader) { + private void grantRole(String groupId, List groupLeader) { // 小组长权限 Sys_role unionGroupRole = sysRoleService.getByCode(RoleConstant.BRANCH_UNION_GROUP_LEADER.name()); deleteUserRole(groupId, unionGroupRole.getId()); - Sys_user_role userRole = new Sys_user_role(); - userRole.setRoleId(unionGroupRole.getId()); - userRole.setUnionGroupId(groupId); - userRole.setUserId(groupLeader); - dao().insert(userRole); + List roleList = groupLeader.stream().map(v -> { + Sys_user_role userRole = new Sys_user_role(); + userRole.setRoleId(unionGroupRole.getId()); + userRole.setUnionGroupId(groupId); + userRole.setUserId(v); + return userRole; + }).toList(); + dao().insert(roleList); sysUserService.clearCache(); sysRoleService.clearCache(); diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java index f0ec7d19..d3a84a91 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java @@ -18,6 +18,7 @@ import com.budwk.app.sys.models.*; import com.budwk.app.sys.services.SysMenuService; import com.budwk.app.sys.services.SysRoleService; import com.budwk.app.sys.services.SysUserService; +import com.budwk.app.sys.views.View_user; import com.budwk.app.web.commons.base.Globals; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Chain; @@ -388,7 +389,17 @@ public class SysUserServiceImpl extends BaseServiceImpl implements Sys StpUtil.login(user.getId()); StpUtil.checkLogin(); - StpUtil.getSession(true).set("loginname", Strings.sNull(user.getLoginname())).set("username", Strings.sNull(user.getUsername())).set("unitId", Strings.sNull(user.getUnitId())).set("unitPath", Strings.sNull(user.getUnitPath())).set("unionId", ObjectUtil.isEmpty(user.getUnion()) ? "" : user.getUnion().getId()); + // 查询一下视图,存储一些sys_user表中没有的字段 + View_user viewUser = dao().fetch(View_user.class, Cnd.where("id", "=", user.getId())); + StpUtil.getSession(true) + .set("loginname", Strings.sNull(user.getLoginname())) + .set("username", Strings.sNull(user.getUsername())) + .set("unitId", Strings.sNull(user.getUnitId())) + .set("unitPath", Strings.sNull(user.getUnitPath())) + .set("unionId", ObjectUtil.isEmpty(user.getUnion()) ? "" : user.getUnion().getId()) + .set("unionGroupId", Strings.sNull(viewUser.getUnionGroupId())) + .set("clubIds", Strings.sNull(viewUser.getClubIds())); + Sys_log sysLog = new Sys_log(); sysLog.setType("info"); sysLog.setTag("用户登陆"); diff --git a/src/main/java/com/budwk/app/sys/views/View_user.java b/src/main/java/com/budwk/app/sys/views/View_user.java index 81d6d0b8..0326a7b2 100644 --- a/src/main/java/com/budwk/app/sys/views/View_user.java +++ b/src/main/java/com/budwk/app/sys/views/View_user.java @@ -199,4 +199,12 @@ public class View_user { @Column private String expectedLeaveSchoolDate; + @Column + private String unionGroupId; + + @Column + private String unionGroupName; + + @Column + private String clubIds; } diff --git a/src/main/java/com/budwk/app/web/commons/auth/utils/SecurityUtil.java b/src/main/java/com/budwk/app/web/commons/auth/utils/SecurityUtil.java index e2267f7a..3c82cce2 100644 --- a/src/main/java/com/budwk/app/web/commons/auth/utils/SecurityUtil.java +++ b/src/main/java/com/budwk/app/web/commons/auth/utils/SecurityUtil.java @@ -4,30 +4,68 @@ import cn.dev33.satoken.session.SaSession; import cn.dev33.satoken.stp.StpUtil; import org.nutz.lang.Strings; +import java.util.Arrays; +import java.util.List; + /** * @author wizzer@qq.com */ public class SecurityUtil { + + /** + * 获取当前用户ID + */ public static String getUserId() { return Strings.sNull(StpUtil.getLoginId("")); } + /** + * 获取当前用户登录名 + */ public static String getUserLoginname() { return Strings.sNull(getSession().get("loginname")); } + /** + * 获取当前用户姓名 + */ public static String getUserUsername() { return Strings.sNull(getSession().get("username")); } + /** + * 获取当前用户单位ID + */ public static String getUnitId() { return Strings.sNull(getSession().get("unitId")); } + /** + * 获取当前用户工会ID + */ public static String getUnionId() { return Strings.sNull(getSession().get("unionId")); } + + /** + * 获取当前用户工会小组ID + */ + public static String getUnionGroupId() { + return Strings.sNull(getSession().get("unionGroupId")); + } + + /** + * 获取当前用户协会ID + */ + public static List getClubIds() { + String clubIds = getSession().get("clubIds").toString(); + return Arrays.stream(clubIds.split(",")).toList(); + } + + /** + * 获取当前用户Session + */ public static SaSession getSession() { return StpUtil.getSession(true); } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionApprovalController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionApprovalController.java index c7eae14d..c27ef162 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionApprovalController.java @@ -146,17 +146,6 @@ public class MemberApplyBranchUnionApprovalController { Pagination pagination = memberApplyRecordService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return Result.success(pagination); } - - - @At - @ApiOperation("分工会审核撤回") - @Aop(TransAop.READ_COMMITTED) - @SaCheckPermission("member.apply.branchUnionApproval") - @SLog(tag = "会员管理-入会申请-分工会撤回", msg = "分工会入会审核撤回") - public Result revoke(@Valid String taskId) { - bpmService.revokeTask(taskId); - return Result.success(); - } } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyCommonController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyCommonController.java index af2fc065..6b47fd7e 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyCommonController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyCommonController.java @@ -39,15 +39,17 @@ public class MemberApplyCommonController { return Result.success(user); } - // 分会主席只能查看本分会用户或未分配分会的用户 - if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()) && (user.getUnionId().equals(SecurityUtil.getUnionId()) || StrUtil.isBlank(user.getUnionId()))) { + // 分会主席只能查看本分会用户或未分配分会的用户 分工会操作员同主席权限一致 + if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_CHAIRMAN.name(), RoleConstant.BRANCH_UNION_OPERATOR.name()) && (user.getUnionId().equals(SecurityUtil.getUnionId()) || StrUtil.isBlank(user.getUnionId()))) { user.setIdCard(DesensitizedUtil.idCardNum(user.getIdCard(), 3, 4)); user.setMobile(DesensitizedUtil.mobilePhone(user.getMobile())); return Result.success(user); } - // 分工会操作员同主席权限一致 - if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_OPERATOR.name()) && (user.getUnionId().equals(SecurityUtil.getUnionId()) || StrUtil.isBlank(user.getUnionId()))) { + // 工会小组组长可以看小组里面的用户 + if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_GROUP_LEADER.name()) + && StrUtil.isAllNotBlank(user.getUnionGroupId(), SecurityUtil.getUnionGroupId()) + && user.getUnionGroupId().equals(SecurityUtil.getUnionGroupId())) { user.setIdCard(DesensitizedUtil.idCardNum(user.getIdCard(), 3, 4)); user.setMobile(DesensitizedUtil.mobilePhone(user.getMobile())); return Result.success(user); diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyController.java index 5acd85bc..54b0b67b 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyController.java @@ -12,6 +12,7 @@ import com.budwk.app.flow.entity.ProcessInstance; import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; import com.budwk.app.flow.service.FlowCommonService; +import com.budwk.app.sys.models.Sys_union_group; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.sys.views.View_user; import com.budwk.app.web.commons.auth.utils.SecurityUtil; @@ -28,6 +29,7 @@ import org.nutz.dao.util.cri.Static; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; @@ -91,6 +93,11 @@ public class MemberApplyController { args.set("origin", "OTHER"); memberApplyRecord.setOrigin("OTHER"); } + // 再去判断有没有工会小组 + Sys_union_group group = dao.fetch(Sys_union_group.class, Cnd.where(Sys_union_group::getUnionId, "=", SecurityUtil.getUnionId()) + .and(new Static("JSON_CONTAINS(unitIds, '\"%s\"')".formatted(SecurityUtil.getUnitId())))); + args.set("type", Lang.isEmpty(group) ? "branch" : "group"); + dao.insertOrUpdate(memberApplyRecord); args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); @@ -121,6 +128,10 @@ public class MemberApplyController { dict.set("origin", "OTHER"); memberApplyRecord.setOrigin("OTHER"); } + // 再去判断有没有工会小组 + Sys_union_group group = dao.fetch(Sys_union_group.class, Cnd.where(Sys_union_group::getUnionId, "=", SecurityUtil.getUnionId()) + .and(new Static("JSON_CONTAINS(unitIds, '\"%s\"')".formatted(SecurityUtil.getUnitId())))); + dict.set("type", Lang.isEmpty(group) ? "branch" : "group"); dao.insertOrUpdate(memberApplyRecord); diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionApprovalController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionApprovalController.java index 3b2edffa..eb5377c3 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionApprovalController.java @@ -144,37 +144,6 @@ public class MemberApplySchoolUnionApprovalController { return Result.success(pagination); } - - @At - @Aop(TransAop.READ_COMMITTED) - @ApiOperation("会员入会校工会审核") - @SaCheckPermission("member.apply.schoolUnionApproval") - @SLog(tag = "会员管理-会员入会申请-校工会审核", msg = "会员入会审核(校工会)") - public Result approval(@Param("approval") @Valid BpmTaskApprovalParam approvalParam) { - Map variables = BeanUtil.beanToMap(approvalParam); - - if (approvalParam.getBpmTaskApprovalTypeEnum().equals(BpmTaskApprovalTypeEnum.PASS)) { - // 审核通过了,要去改基础数据 - MemberApplyRecord record = memberCommonService.dao().fetch(MemberApplyRecord.class, Cnd.where("id", "=", approvalParam.getProcessInstanceBusinessId())); - Sys_user sysUser = new Sys_user(); - BeanUtil.copyProperties(record, sysUser); - sysUser.setId(record.getUserId()); - dao.updateIgnoreNull(sysUser); - } - bpmService.completeTask(approvalParam.getProcessInstanceTaskId(), approvalParam.getBpmTaskApprovalTypeEnum(), variables, null); - return Result.success(); - } - - - @At - @ApiOperation("校工会审核撤回") - @Aop(TransAop.READ_COMMITTED) - @SaCheckPermission("member.apply.schoolUnionApproval") - @SLog(tag = "会员管理-入会申请-校工会撤回", msg = "校工会入会审核撤回") - public Result revoke(@Valid String taskId) { - bpmService.revokeTask(taskId); - return Result.success(); - } } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyUnionGroupApprovalController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyUnionGroupApprovalController.java new file mode 100644 index 00000000..80570208 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyUnionGroupApprovalController.java @@ -0,0 +1,114 @@ +package com.budwk.app.zhgh.staffmanage.member.controller.apply; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.bpm.service.BpmService; +import com.budwk.app.flow.enums.ProcessTaskStateEnum; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.web.controllers.open.commons.service.CommonService; +import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberApplyPageForm; +import com.budwk.app.zhgh.staffmanage.member.service.MemberCommonService; +import io.swagger.annotations.ApiOperation; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import java.util.List; + +/** + * 会员入会申请分工会审核 + * @author fky + */ +@IocBean +@Ok("json:full") +@ApiOperation("会员入会申请工会小组审核") +@At("/platform/member/apply/unionGroupApproval") +public class MemberApplyUnionGroupApprovalController { + + @Inject + private BpmService bpmService; + @Inject + private CommonService commonService; + @Inject + private MemberCommonService memberCommonService; + + @At("") + @Ok("beetl:/platform/zhgh/staffmanage/member/apply/uniongroupapproval/index.html") + @SaCheckPermission("member.apply.unionGroupApproval") + public void index() {} + + + @At + @ApiOperation("会员入会申请工会小组审核列表") + @SaCheckPermission("member.apply.unionGroupApproval") + public Result pageData(MemberApplyPageForm pageForm) { + Sql sql = Sqls.create(""" + SELECT + info.id, + info.userName, + info.loginName, + info.unitName, + info.unionName, + info.userState, + info.preparedBy, + info.personType, + info.applyDateTime, + info.sign, + ins.id AS instanceId, + ins.businessNo, + ins.state instanceState, + ins.variable instanceVariable, + ins.processDefineId instanceProcessDefineId, + t.id taskId, + t.taskName AS taskKey, + t.displayName taskName, + t.taskType, + t.performType taskPerformType, + t.taskState, + t.finishTime, + t.taskParentId, + t.variable taskVariable, + IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName, + IF(rt.id IS NOT NULL, 1, 0) AS canRevoke + FROM + wf_process_task t + LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId + LEFT JOIN member_apply_record info ON info.id = ins.businessNo + LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id + LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10 + LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10 + $condition + """); + Cnd cnd = Cnd.NEW(); + MemberApplyPageForm.buildSearch(cnd, pageForm); + + cnd.and("t.taskName", "=", "95688013-9dcb-43f1-ae54-c83ea2d2ddb1"); + + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); + + if (pageForm.getAudit()) { + cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); + } else { + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); + } + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("t.createdAt"); + cnd.desc("info.applyDateTime"); + } else { + cnd.orderBy("info." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + cnd.groupBy("t.id"); + sql.setCondition(cnd); + Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberBranchUnionAuditController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberBranchUnionAuditController.java index 55576258..6cac5131 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberBranchUnionAuditController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberBranchUnionAuditController.java @@ -1,52 +1,27 @@ package com.budwk.app.zhgh.staffmanage.member.controller.change; import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.dev33.satoken.annotation.SaMode; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.budwk.app.base.annotation.SLog; -import com.budwk.app.base.constant.BpmProcessConstant; -import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.result.Result; import com.budwk.app.base.utils.PageUtil; -import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum; -import com.budwk.app.bpm.models.BpmProcessInstance; -import com.budwk.app.bpm.models.BpmProcessTask; -import com.budwk.app.bpm.param.BpmTaskApprovalParam; -import com.budwk.app.bpm.service.BpmService; -import com.budwk.app.bpm.vo.BpmTaskApprovalRecordVo; import com.budwk.app.flow.enums.ProcessTaskStateEnum; -import com.budwk.app.sys.models.Sys_user_history; import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.budwk.app.web.controllers.open.commons.service.CommonService; -import com.budwk.app.zhgh.staffmanage.member.models.MemberApplyRecord; import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberChangePageForm; -import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm; -import com.budwk.app.zhgh.staffmanage.member.service.MemberBranchUnionManageService; import com.budwk.app.zhgh.staffmanage.member.service.MemberCommonService; import io.swagger.annotations.ApiModelProperty; -import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; -import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.Lang; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; -import javax.validation.Valid; -import java.util.ArrayList; import java.util.List; -import java.util.Map; /** * @version 1.0 @@ -64,21 +39,16 @@ public class MemberBranchUnionAuditController { @Inject private Dao dao; @Inject - private CommonService commonService; - @Inject private MemberCommonService memberCommonService; - @Inject - private MemberBranchUnionManageService memberBranchUnionManageService; - @At("") - @Ok("beetl:/platform/zhgh/staffmanage/member/change/branchUnionAudit/index.html") + @Ok("beetl:/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html") @SaCheckPermission("member.change.branchUnion.audit") public void index() { } @At - @Ok("beetl:/platform/zhgh/staffmanage/member/change/branchUnionAudit/form.html") + @Ok("beetl:/platform/zhgh/staffmanage/member/change/branchunionaudit/form.html") @SaCheckPermission("member.change.branchUnion.audit") public void form() { } @@ -129,7 +99,7 @@ public class MemberBranchUnionAuditController { Cnd cnd = Cnd.NEW(); pageForm.buildSearch(cnd, "info."); - cnd.and("t.taskName", "=", "8ca3bcf0-7b86-4ef2-b19f-b76a1707e2da"); + cnd.and("t.taskName", "=", "64805be3-b325-4c25-a516-d0c4e4a87509"); cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); if (pageForm.getAudit()) { diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeApplyController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeApplyController.java index e02bb3fa..038e4c84 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeApplyController.java @@ -13,6 +13,7 @@ import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; import com.budwk.app.flow.service.FlowCommonService; import com.budwk.app.sys.models.Sys_union; +import com.budwk.app.sys.models.Sys_union_group; import com.budwk.app.sys.models.Sys_unit; import com.budwk.app.sys.views.View_user; import com.budwk.app.web.commons.auth.utils.SecurityUtil; @@ -26,6 +27,7 @@ import lombok.extern.slf4j.Slf4j; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.dao.util.cri.Static; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; @@ -92,7 +94,11 @@ public class MemberChangeApplyController { // 开启流程实例 Dict args = Dict.create(); - args.set("origin", "person"); + // 判断有没有工会小组 + Sys_union_group group = dao.fetch(Sys_union_group.class, Cnd.where(Sys_union_group::getUnionId, "=", SecurityUtil.getUnionId()) + .and(new Static("JSON_CONTAINS(unitIds, '\"%s\"')".formatted(SecurityUtil.getUnitId())))); + args.set("submit", Lang.isEmpty(group) ? "singleBranch" : "singleHaveGroup"); + args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); args.set(FlowConst.FORM_DATA, memberChangeRecord); ProcessInstance instance = flowEngine.startProcessInstanceByKey("HYBG", memberChangeRecord.getId(), SecurityUtil.getUserId(), args); @@ -117,7 +123,10 @@ public class MemberChangeApplyController { dao.insertOrUpdate(memberChangeRecord); Dict dict = Dict.create(); - dict.set("origin", "personType"); + // 判断有没有工会小组 + Sys_union_group group = dao.fetch(Sys_union_group.class, Cnd.where(Sys_union_group::getUnionId, "=", SecurityUtil.getUnionId()) + .and(new Static("JSON_CONTAINS(unitIds, '\"%s\"')".formatted(SecurityUtil.getUnitId())))); + dict.set("submit", Lang.isEmpty(group) ? "singleBranch" : "singleHaveGroup"); dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId); dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode()); flowCommonService.executeTask(dict); @@ -125,7 +134,6 @@ public class MemberChangeApplyController { } - @At @ApiModelProperty("根据id查询变更记录") @SaCheckPermission("member.change.apply") @@ -139,7 +147,7 @@ public class MemberChangeApplyController { * @return */ @At - @SaCheckPermission(value = {"member.change.branchUnion.audit","member.change.schoolUnion.audit"}, mode = SaMode.OR) + @SaCheckPermission(value = {"member.change.branchUnion.audit","member.change.schoolUnion.audit", "member.change.unionGroup.audit"}, mode = SaMode.OR) public Result getUserByIdForMemberChange(String userId){ View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", userId)); NutMap nutMap = Lang.obj2nutmap(user); diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java index 8fa0fb31..365f1634 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java @@ -22,6 +22,7 @@ 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.ProcessSubmitTypeEnum; +import com.budwk.app.sys.models.Sys_config; 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; @@ -101,9 +102,12 @@ public class MemberChangeManageController { } boolean schoolRoleBool = AuthUtil.hasRoleOr(RoleConstant.SCHOOL_UNION_CHAIRMAN.name(), RoleConstant.SCHOOL_UNION_MEMBER_ADMIN.name(), RoleConstant.SYSADMIN.name()); boolean branchRoleBool = AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_CHAIRMAN.name(), RoleConstant.BRANCH_UNION_OPERATOR.name()); + boolean groupRoleBool = AuthUtil.hasRole(RoleConstant.BRANCH_UNION_GROUP_LEADER.name()); // 变更类型 - MemberChangeOrigin changeOrigin = schoolRoleBool ? MemberChangeOrigin.SCHOOL_UNION : branchRoleBool ? MemberChangeOrigin.BRANCH_UNION : null; + MemberChangeOrigin changeOrigin = schoolRoleBool ? MemberChangeOrigin.SCHOOL_UNION : + branchRoleBool ? MemberChangeOrigin.BRANCH_UNION : + groupRoleBool ? MemberChangeOrigin.UNION_GROUP : null; if (changeOrigin == null) { throw new BaseException("没有权限,或未设置工会小组"); @@ -114,10 +118,23 @@ public class MemberChangeManageController { // 开启流程实例 Dict args = Dict.create(); + args.set("submit", "admin"); + if (schoolRoleBool) { - args.set("origin", "schoolUnion"); + args.set("adminSubmit", "schoolUnion"); + } else if (branchRoleBool) { + args.set("adminSubmit", "branchUnion"); } else { - args.set("origin", "branchUnion"); + args.set("adminSubmit", "unionGroup"); + // 还要设置工会小组是否需要审核的参数 + Sys_config config = dao.fetch(Sys_config.class, Cnd.where(Sys_config::getConfigKey, "=", "UnionGroupIsNeedBranchAudit")); + if ("true".equals(config.getConfigValue())) { + // 需要,流转到分工会审核 + args.set("groupAuditNext", "branchAudit"); + } else { + // 不需要,流转到校工会审核 + args.set("groupAuditNext", "schoolAudit"); + } } args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); args.set(FlowConst.FORM_DATA, record); diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberSchoolUnionAuditController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberSchoolUnionAuditController.java index 015b515e..029eb5cd 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberSchoolUnionAuditController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberSchoolUnionAuditController.java @@ -71,13 +71,13 @@ public class MemberSchoolUnionAuditController { private MemberSchoolUnionManageService memberSchoolUnionManageService; @At("") - @Ok("beetl:/platform/zhgh/staffmanage/member/change/schoolUnionAudit/index.html") + @Ok("beetl:/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html") @SaCheckPermission("member.change.schoolUnion.audit") public void index() { } @At - @Ok("beetl:/platform/zhgh/staffmanage/member/change/schoolUnionAudit/form.html") + @Ok("beetl:/platform/zhgh/staffmanage/member/change/schoolunionaudit/form.html") @SaCheckPermission("member.change.schoolUnion.audit") public void form() { } @@ -127,7 +127,7 @@ public class MemberSchoolUnionAuditController { Cnd cnd = Cnd.NEW(); pageForm.buildSearch(cnd, "info."); - cnd.and("t.taskName", "=", "f18d8726-75bc-43a9-87a8-2dd73341bdce"); + cnd.and("t.taskName", "=", "55f85ecd-7aab-4ba9-a8ec-f256839947f0"); cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); if (pageForm.getAudit()) { @@ -147,82 +147,4 @@ public class MemberSchoolUnionAuditController { return Result.success().addData(pagination); } - - @At - @RepeatSubmit - @Aop(TransAop.READ_COMMITTED) - @SaCheckPermission("member.change.schoolUnion.audit") - @SLog(tag = "会员管理-校工会管理", type = "memberSchoolUnionAudit", msg = "校工会会员审核") - public Result approval(@Param("approval") @Valid BpmTaskApprovalParam approvalParam) { - Map variables = BeanUtil.beanToMap(approvalParam); - if (approvalParam.getBpmTaskApprovalTypeEnum().equals(BpmTaskApprovalTypeEnum.PASS)) { - MemberChangeRecord record = memberCommonService.dao().fetch(MemberChangeRecord.class, Cnd.where("id", "=", approvalParam.getProcessInstanceBusinessId())); - if (StrUtil.isNotEmpty(approvalParam.getApprovalRemark())) { - memberCommonService.dao().update(MemberChangeRecord.class, Chain.make("remark", approvalParam.getApprovalRemark()), Cnd.where("id", "=", record.getId())); - } - memberCommonService.compareChangeInfoAndUpdateMember(record); - } - bpmService.completeTask(approvalParam.getProcessInstanceTaskId(), approvalParam.getBpmTaskApprovalTypeEnum(), variables, null); - return Result.success(); - } - - - @At - @Aop(TransAop.READ_COMMITTED) - @SaCheckPermission("member.change.schoolUnion.audit") - @SLog(type = "memberChange", tag = "会员变更", msg = "校工会批量审核") - public Object doBatchApproval(@Param("data") String[] ids){ - if (ids.length == 0) { - return Result.error("未获取到选择数据"); - } - - for (String id : ids) { - BpmProcessInstance committeeInstance = dao.fetch(BpmProcessInstance.class, Cnd.where("processInstanceBusinessId", "=", id)); - BpmProcessTask committeeTask = dao.fetch(BpmProcessTask.class, Cnd.where(BpmProcessTask::getProcessInstanceId, "=", committeeInstance.getId()) - .desc(BpmProcessTask::getCreatedAt)); - - BpmTaskApprovalParam committeeParam = new BpmTaskApprovalParam(); - committeeParam.setProcessInstanceId(committeeInstance.getId()); - committeeParam.setProcessInstanceBusinessId(id); - committeeParam.setProcessInstanceTaskId(committeeTask.getId()); - committeeParam.setBpmTaskApprovalType(BpmTaskApprovalTypeEnum.PASS.name()); - committeeParam.setBpmTaskApprovalTypeEnum(BpmTaskApprovalTypeEnum.PASS); - committeeParam.setApprovalOpinion("校工会审核通过"); - - memberCommonService.compareChangeInfoAndUpdateMember(committeeParam.getProcessInstanceBusinessId()); - bpmService.completeTask(committeeParam.getProcessInstanceTaskId(), committeeParam.getBpmTaskApprovalTypeEnum(), null, null); - } - - return Result.success(); - } - - - - - @At - @ApiOperation("校工会审核撤回") - @Aop(TransAop.READ_COMMITTED) - @SaCheckPermission("member.change.schoolUnion.audit") - @SLog(tag = "会员管理-校工会管理", type = "memberSchoolUnionAudit", msg = "校工会审核撤回") - public Result revoke(@Valid String taskId) { - bpmService.revokeTask(taskId); - - // 审核通过的撤回,要将数据也改变回去 - BpmProcessTask oldTask = dao.fetch(BpmProcessTask.class, taskId); - BpmProcessInstance fetch = dao.fetch(BpmProcessInstance.class, oldTask.getProcessInstanceId()); - String businessId = fetch.getProcessInstanceBusinessId(); - - // 先查询历史记录,然后再把历史记录赋值给现在数据库存储的记录 - Sys_user_history history = dao.fetch(Sys_user_history.class, Cnd.where(Sys_user_history::getRecordId, "=", businessId)); - Sys_user info = dao.fetch(Sys_user.class, Cnd.where(Sys_user::getLoginname, "=", history.getLoginname())); - - String userId = info.getId(); - BeanUtil.copyProperties(history, info); - info.setId(userId); - dao.update(info); - dao.delete(history); - - return Result.success(); - } - } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberUnionGroupAuditController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberUnionGroupAuditController.java new file mode 100644 index 00000000..b9066a7b --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberUnionGroupAuditController.java @@ -0,0 +1,117 @@ +package com.budwk.app.zhgh.staffmanage.member.controller.change; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.flow.enums.ProcessTaskStateEnum; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.web.controllers.open.commons.service.CommonService; +import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberChangePageForm; +import com.budwk.app.zhgh.staffmanage.member.service.MemberCommonService; +import io.swagger.annotations.ApiModelProperty; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import java.util.List; + +/** + * @version 1.0 + * @Author FKY + * @name:MemberUnionGroupAuditController + * @Date 2025/9/29 11:12 + * @注释 会员变更,工会小组审核 + */ +@Slf4j +@IocBean +@Ok("json") +@At("/platform/member/change/unionGroup/audit") +public class MemberUnionGroupAuditController { + + @Inject + private Dao dao; + @Inject + private CommonService commonService; + @Inject + private MemberCommonService memberCommonService; + + @At("") + @Ok("beetl:/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html") + @SaCheckPermission("member.change.unionGroup.audit") + public void index() { + } + + @At + @ApiModelProperty("会员变更申请,工会小组审核列表") + @SaCheckPermission("member.change.unionGroup.audit") + public Result pageData(MemberChangePageForm pageForm) { + Sql sql = Sqls.create(""" + SELECT + info.id, + info.sex, + info.userName, + info.loginName, + info.unitName, + info.unionName, + info.userState, + info.preparedBy, + info.personType, + info.changeTypes, + info.applyDateTime, + ins.id AS instanceId, + ins.businessNo, + ins.state instanceState, + ins.variable instanceVariable, + ins.processDefineId instanceProcessDefineId, + t.id taskId, + t.taskName AS taskKey, + t.displayName taskName, + t.taskType, + t.performType taskPerformType, + t.taskState, + t.finishTime, + t.taskParentId, + t.variable taskVariable, + IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName, + IF(rt.id IS NOT NULL, 1, 0) AS canRevoke + FROM + wf_process_task t + LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId + LEFT JOIN member_change_record info ON info.id = ins.businessNo + LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id + LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10 + LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10 + $condition + """); + Cnd cnd = Cnd.NEW(); + pageForm.buildSearch(cnd, "info."); + + cnd.and("t.taskName", "=", "cbe2a530-b806-467d-88ac-5defb058d403"); + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); + + if (pageForm.getAudit()) { + cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); + } else { + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); + } + + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("info.applyDateTime"); + } else { + cnd.orderBy("info." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + cnd.groupBy("t.id"); + sql.setCondition(cnd); + Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success().addData(pagination); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/check/MemberCheckTaskSchoolController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/check/MemberCheckTaskSchoolController.java new file mode 100644 index 00000000..a37a496d --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/check/MemberCheckTaskSchoolController.java @@ -0,0 +1,43 @@ +package com.budwk.app.zhgh.staffmanage.member.controller.check; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberCheckPageForm; +import com.budwk.app.zhgh.staffmanage.member.service.MemberCheckTaskService; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +/** + * @version 1.0 + * @Author zzr + * @name:MemberCheckTaskSchoolController + * @Date 2025/9/26 15:31 + * @注释 校工会核对 + */ +@Slf4j +@IocBean +@Ok("json") +@At("/platform/member/checkTask/school") +public class MemberCheckTaskSchoolController { + + @Inject + private Dao dao; + @Inject + private MemberCheckTaskService memberCheckTaskService; + + @At("") + @Ok("beetl:/platform/zhgh/staffmanage/member/check/school/index.html") + @SaCheckPermission("member.checkTask.school") + public void index() {} + + @At + @SaCheckPermission("member.checkTask.school") + public Result pageData(MemberCheckPageForm pageForm) { + + return Result.success(); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/interceptor/MemberApplyUnionGroupApprovalInterceptor.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/interceptor/MemberApplyUnionGroupApprovalInterceptor.java new file mode 100644 index 00000000..7b3b5799 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/interceptor/MemberApplyUnionGroupApprovalInterceptor.java @@ -0,0 +1,33 @@ +package com.budwk.app.zhgh.staffmanage.member.interceptor; + +import com.budwk.app.flow.engine.FlowInterceptor; +import com.budwk.app.flow.engine.core.Execution; +import com.budwk.app.flow.engine.core.ServiceContext; +import com.budwk.app.sys.models.Sys_config; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; + +/** + * @version 1.0 + * @Author FKY + * @name:MemberApplyUnionGroupApprovalInterceptor + * @Date 2025/9/29 11:32 + * @注释 + */ +public class MemberApplyUnionGroupApprovalInterceptor implements FlowInterceptor { + + @Override + public void intercept(Execution execution) { + Dao dao = ServiceContext.find(Dao.class); + // 是否需要分工会审核 + Sys_config config = dao.fetch(Sys_config.class, Cnd.where(Sys_config::getConfigKey, "=", "UnionGroupIsNeedBranchAudit")); + if ("true".equals(config.getConfigValue())) { + // 需要,流转到分工会审核 + execution.getArgs().set("groupAuditNext", "branchAudit"); + } else { + // 不需要,流转到校工会审核 + execution.getArgs().set("groupAuditNext", "schoolAudit"); + } + + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/interceptor/MemberChangeUnionGroupApprovalInterceptor.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/interceptor/MemberChangeUnionGroupApprovalInterceptor.java new file mode 100644 index 00000000..cbeb014e --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/interceptor/MemberChangeUnionGroupApprovalInterceptor.java @@ -0,0 +1,33 @@ +package com.budwk.app.zhgh.staffmanage.member.interceptor; + +import com.budwk.app.flow.engine.FlowInterceptor; +import com.budwk.app.flow.engine.core.Execution; +import com.budwk.app.flow.engine.core.ServiceContext; +import com.budwk.app.sys.models.Sys_config; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; + +/** + * @version 1.0 + * @Author FKY + * @name:MemberChangeUnionGroupApprovalInterceptor + * @Date 2025/9/29 11:32 + * @注释 + */ +public class MemberChangeUnionGroupApprovalInterceptor implements FlowInterceptor { + + @Override + public void intercept(Execution execution) { + Dao dao = ServiceContext.find(Dao.class); + // 是否需要分工会审核 + Sys_config config = dao.fetch(Sys_config.class, Cnd.where(Sys_config::getConfigKey, "=", "UnionGroupIsNeedBranchAudit")); + if ("true".equals(config.getConfigValue())) { + // 需要,流转到分工会审核 + execution.getArgs().set("groupAuditNext", "branchAudit"); + } else { + // 不需要,流转到校工会审核 + execution.getArgs().set("groupAuditNext", "schoolAudit"); + } + + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java index 8f061be1..7f1dd505 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java @@ -66,8 +66,10 @@ public class MemberManagePageForm extends PageForm { if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_CHAIRMAN.name(), RoleConstant.BRANCH_UNION_OPERATOR.name())) { cnd.and("u.unionId", "=", SecurityUtil.getUnionId()); + } else if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_GROUP_LEADER.name())) { + cnd.and("u.unionGroupId", "=", SecurityUtil.getUnionGroupId()); } else { - cnd.and("record.userId", "=", SecurityUtil.getUserId()); + cnd.and("u.id", "=", SecurityUtil.getUserId()); } } else { cnd.andEX("u.unionId", "=", pageForm.getUnionId()); 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 5aae4459..012a8231 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 @@ -405,7 +405,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()); diff --git a/src/main/resources/views/platform/sys/data/user/update.html b/src/main/resources/views/platform/sys/data/user/update.html index 9e82af0c..c5f13e57 100644 --- a/src/main/resources/views/platform/sys/data/user/update.html +++ b/src/main/resources/views/platform/sys/data/user/update.html @@ -87,6 +87,11 @@ layout("/layouts/platform.html"){ + + + @@ -127,6 +132,8 @@ layout("/layouts/platform.html"){ + diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchUnionAudit/form.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/form.html similarity index 100% rename from src/main/resources/views/platform/zhgh/staffmanage/member/change/branchUnionAudit/form.html rename to src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/form.html diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchUnionAudit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html similarity index 95% rename from src/main/resources/views/platform/zhgh/staffmanage/member/change/branchUnionAudit/index.html rename to src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html index 698d5817..4128e945 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchUnionAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html @@ -95,6 +95,7 @@ layout("/layouts/platform.html"){ { prop: "sex", label: "性别", sortable: true }, { prop: "userState", label: "在职状态", sortable: true }, { prop: "personType", label: "教职工类别", sortable: true }, + { prop: 'preparedBy', label: '编制类别', sortable: true }, { prop: "unionName", label: "所属工会", sortable: true }, { prop: "unitName", label: "所属单位", sortable: true }, { prop: "changeTypes", label: "变更类型", sortable: true, width: 200 }, @@ -138,6 +139,7 @@ layout("/layouts/platform.html"){ cancelButtonText: "取消", type: "warning" }).then(() => { + const loading = createLoading() this.$axios.post("/flow/common/executeTask", { data: JSON.stringify({ ...this.formData, @@ -149,6 +151,8 @@ layout("/layouts/platform.html"){ this.$message.success(res.msg) this.doSearch() } + }).finally(() => { + loading.close() }) }) }, @@ -159,11 +163,14 @@ layout("/layouts/platform.html"){ cancelButtonText: "取消", type: "info" }).then(() => { + const loading = createLoading() this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => { if (res.code === 0) { this.$message.success(res.msg) this.doSearch() } + }).finally(() => { + loading.close() }) }) }, @@ -176,6 +183,7 @@ layout("/layouts/platform.html"){ }, getChangeTypes(changeTypes) { const changeTypesList = JSON.parse(changeTypes) + if (!changeTypesList) return null if (changeTypesList) { if (!changeTypesList || changeTypesList.length === 0 || !this.changeTypeData || this.changeTypeData.length === 0) return null return changeTypesList diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html index 64295c75..35c6cd8d 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html @@ -34,6 +34,10 @@ layout("/layouts/platform.html"){ + + + - + @@ -135,7 +139,7 @@ layout("/layouts/platform.html"){ + v-if="$auth.hasRoleOr(['SYSADMIN','SCHOOL_UNION_ADMIN','BRANCH_UNION_CHAIRMAN','BRANCH_UNION_CHAIRMAN','BRANCH_UNION_GROUP_LEADER'])"> 变更 @@ -215,8 +219,9 @@ layout("/layouts/platform.html"){ {prop: 'username', label: '姓名', sortable: true}, {prop: 'sex', label: '性别', sortable: true, width: '100px'}, {prop: 'birthday', label: '出生年月', sortable: true}, - {prop: 'personType', label: '教职工类别', sortable: true}, - {prop: 'userState', label: '在职状态', sortable: true}, + {prop: 'userState', label: '在职状态', sortable: true}, + {prop: 'personType', label: '教职工类别', sortable: true}, + {prop: 'preparedBy', label: '编制类别', sortable: true}, {prop: 'unionName', label: '所属工会', sortable: true}, {prop: 'unitName', label: '所属单位', sortable: true}, ], diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/mine/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/mine/index.html index 9f34f132..df808eef 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/mine/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/mine/index.html @@ -69,6 +69,7 @@ layout("/layouts/platform.html"){ { prop: "sex", label: "性别", sortable: true }, { prop: "userState", label: "在职状态", sortable: true }, { prop: "personType", label: "教职工类别", sortable: true }, + { prop: "preparedBy", label: "编制类别", sortable: true }, { prop: "unionName", label: "所属工会", sortable: true }, { prop: "unitName", label: "所属单位", sortable: true }, { prop: "changeTypes", label: "变更类型", sortable: true, width: 200 }, @@ -98,11 +99,14 @@ layout("/layouts/platform.html"){ cancelButtonText: "取消", type: "warning" }).then(() => { + const loading = createLoading() this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => { if (res.code === 0) { this.$message.success(res.msg) this.pageData() } + }).finally(() => { + loading.close() }) }) }, @@ -113,11 +117,14 @@ layout("/layouts/platform.html"){ cancelButtonText: "取消", type: "warning" }).then(() => { + const loading = createLoading() this.$axios.post("/platform/member/change/mine/onDelete", {id}).then((res) => { if (res.code === 0) { this.$message.success(res.msg) this.pageData() } + }).finally(() => { + loading.close() }) }) }, diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolUnionAudit/form.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/form.html similarity index 100% rename from src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolUnionAudit/form.html rename to src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/form.html diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolUnionAudit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html similarity index 96% rename from src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolUnionAudit/index.html rename to src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html index f82793c9..20ee2174 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolUnionAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html @@ -97,6 +97,7 @@ layout("/layouts/platform.html"){ { prop: "sex", label: "性别", sortable: true }, { prop: "userState", label: "在职状态", sortable: true }, { prop: "personType", label: "教职工类别", sortable: true }, + { prop: 'preparedBy', label: '编制类别', sortable: true }, { prop: "unionName", label: "所属工会", sortable: true }, { prop: "unitName", label: "所属单位", sortable: true }, { prop: "changeTypes", label: "变更类型", sortable: true, width: 200 }, @@ -140,6 +141,7 @@ layout("/layouts/platform.html"){ cancelButtonText: "取消", type: "warning" }).then(() => { + const loading = createLoading() this.$axios.post("/flow/common/executeTask", { data: JSON.stringify({ ...this.formData, @@ -151,6 +153,8 @@ layout("/layouts/platform.html"){ this.$message.success(res.msg) this.doSearch() } + }).finally(() => { + loading.close() }) }) }, @@ -161,11 +165,14 @@ layout("/layouts/platform.html"){ cancelButtonText: "取消", type: "info" }).then(() => { + const loading = createLoading() this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => { if (res.code === 0) { this.$message.success(res.msg) this.doSearch() } + }).finally(() => { + loading.close() }) }) }, @@ -178,6 +185,7 @@ layout("/layouts/platform.html"){ }, getChangeTypes(changeTypes) { const changeTypesList = JSON.parse(changeTypes) + if (!changeTypesList) return null if (changeTypesList) { if (!changeTypesList || changeTypesList.length === 0 || !this.changeTypeData || this.changeTypeData.length === 0) return null return changeTypesList diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/submit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/submit/index.html index 75639f25..378d0b37 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/submit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/submit/index.html @@ -142,32 +142,12 @@ layout("/layouts/platform.html"){ :disabled="allowFields('personType')" style="width: 100%"> - - - + + + + + @@ -390,11 +370,14 @@ layout("/layouts/platform.html"){ cancelButtonText: "取消", type: "warning" }).then(() => { + const loading = createLoading() this.$axios.post('/platform/member/change/apply/save', {data: JSON.stringify(this.formData)}).then(res => { if (res.code === 0) { this.$message.success("保存成功") commonUtil.pjaxPush('/platform/member/change/mine') } + }).finally(() => { + loading.close() }) }) }, @@ -406,6 +389,7 @@ layout("/layouts/platform.html"){ cancelButtonText: "取消", type: "warning" }).then(() => { + const loading = createLoading() this.$axios.post('/platform/member/change/apply/submit', { data: JSON.stringify(this.formData) }).then(res => { @@ -413,6 +397,8 @@ layout("/layouts/platform.html"){ this.$message.success("提交成功") commonUtil.pjaxPush('/platform/member/change/mine') } + }).finally(() => { + loading.close() }) }) }, @@ -423,6 +409,7 @@ layout("/layouts/platform.html"){ cancelButtonText: "取消", type: "warning" }).then(() => { + const loading = createLoading() this.$axios.post('/platform/member/change/apply/submitAgain', { data: JSON.stringify(this.formData), taskId: GetQueryString("taskId") @@ -431,6 +418,8 @@ layout("/layouts/platform.html"){ this.$message.success("提交成功") commonUtil.pjaxPush('/platform/member/change/mine') } + }).finally(() => { + loading.close() }) }) }, @@ -508,14 +497,14 @@ layout("/layouts/platform.html"){ families, personalData } = this.user - + this.$set(this.formData, "userId", id) this.$set(this.formData, "username", username) this.$set(this.formData, "loginname", loginname) this.$set(this.formData, "birthday", birthday) this.$set(this.formData, "sex", sex) - this.$set(this.formData, "member", member === 1) - this.$set(this.formData, "welfareMember", welfareMember === 1) + this.$set(this.formData, "member", member) + this.$set(this.formData, "welfareMember", welfareMember) this.$set(this.formData, "idCard", idCard) this.$set(this.formData, "nation", nation) this.$set(this.formData, "political", political) diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html new file mode 100644 index 00000000..0b8b5dd1 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html @@ -0,0 +1,206 @@ + + +
+ + + + + + + + + 已审核 + 未审核 + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/check/school/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/check/school/index.html new file mode 100644 index 00000000..629443f6 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/check/school/index.html @@ -0,0 +1,28 @@ + +
+ + + +
+ + + diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/check/task/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/check/task/index.html new file mode 100644 index 00000000..ad995112 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/check/task/index.html @@ -0,0 +1,26 @@ + +
+ +
+ + + diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/check/union/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/check/union/index.html new file mode 100644 index 00000000..ad995112 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/check/union/index.html @@ -0,0 +1,26 @@ + +
+ +
+ + + diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js b/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js index 27f16eaa..98edb763 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js @@ -31,8 +31,8 @@ @@ -40,10 +40,10 @@