From 3b00ae10728fab33c07d4ea646b6b693065ab6b0 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Tue, 17 Mar 2026 16:04:52 +0800 Subject: [PATCH] commit --- .../budwk/app/base/constant/RoleConstant.java | 1 + .../app/flow/service/FlowCommonService.java | 54 +- .../app/flow/service/ProcessTaskService.java | 9 + .../service/impl/ProcessTaskServiceImpl.java | 10 + ...eCommitteeDelegationTwoPushController.java | 35 +- .../ExecutiveCommitteeMemberController.java | 2 +- .../ExecutiveCommitteePushController.java | 173 ++---- .../ExecutiveCommitteeMemberServiceImpl.java | 7 +- ...ProposalCommitteeFilingUnitController.java | 232 ++++--- .../ProposalPersonnelOfficeController.java | 121 ---- .../proposalPersonnelOfficeAdminHandler.java | 46 ++ .../delegationTwoPush/index.html | 25 +- .../delegationTwoPush/twoPushFormalDialog.js | 24 +- .../executiveCommitteeMember/index.html | 6 +- .../preparatoryGroupPush/index.html | 23 +- .../preparatoryGroupPush/pushFormalDialog.js | 2 +- .../zhgh/democratic/proposal/common/info.js | 3 +- .../transact/committeeFiling/index.html | 4 +- .../transact/committeeFilingUnit/index.html | 580 ++++++++---------- .../transact/personnelOffice/index.html | 210 ------- .../transact/personnelOffice/index.html | 190 ------ 21 files changed, 665 insertions(+), 1092 deletions(-) delete mode 100644 src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalPersonnelOfficeController.java create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/proposalPersonnelOfficeAdminHandler.java delete mode 100644 src/main/resources/views/platform/zhgh/democratic/proposal/transact/personnelOffice/index.html delete mode 100644 src/main/resources/views/platform/zhghh5/democratic/proposal/transact/personnelOffice/index.html diff --git a/src/main/java/com/budwk/app/base/constant/RoleConstant.java b/src/main/java/com/budwk/app/base/constant/RoleConstant.java index 2a10d21c..a7d0a250 100644 --- a/src/main/java/com/budwk/app/base/constant/RoleConstant.java +++ b/src/main/java/com/budwk/app/base/constant/RoleConstant.java @@ -66,6 +66,7 @@ RoleConstant { PROPOSAL_BRANCH_SCHOOL_LEADER("提案分管校领导"), PROPOSAL_UNIT_LEADER("提案承办单位领导"), PROPOSAL_UNIT_PROXY("提案承办单位代理答复人"), + PROPOSAL_PERSONNEL_OFFICE_ADMIN("提案人事处管理员"), WORKER_CONGRESS_DELEGATE_FORMAL("工代会正式代表"), WORKER_CONGRESS_DELEGATE_ATTENDANCE("工代会列席代表"), diff --git a/src/main/java/com/budwk/app/flow/service/FlowCommonService.java b/src/main/java/com/budwk/app/flow/service/FlowCommonService.java index 6ba1f693..31f866bb 100644 --- a/src/main/java/com/budwk/app/flow/service/FlowCommonService.java +++ b/src/main/java/com/budwk/app/flow/service/FlowCommonService.java @@ -2,18 +2,32 @@ package com.budwk.app.flow.service; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; +import com.budwk.app.base.result.Result; import com.budwk.app.flow.constant.FlowConst; import com.budwk.app.flow.engine.FlowEngine; -import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; +import com.budwk.app.flow.engine.event.ProcessEvent; +import com.budwk.app.flow.engine.event.ProcessPublisher; +import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.entity.ProcessTask; +import com.budwk.app.flow.enums.*; import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import java.util.List; + @IocBean public class FlowCommonService { @Inject private FlowEngine flowEngine; + @Inject + private Dao dao; /** * 执行任务 @@ -65,4 +79,42 @@ public class FlowCommonService { } } + + + @Aop(TransAop.READ_COMMITTED) + public Result revokeTask(Long taskId) { + // 自己任务 + ProcessTask selfTask = dao.fetch(ProcessTask.class, taskId); + selfTask.setTaskState(ProcessTaskStateEnum.DOING.getCode()); + + // 撤销任务 + List taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getTaskParentId, "=", taskId)); + for (ProcessTask task : taskList) { + task.setTaskState(ProcessTaskStateEnum.WITHDRAW.getCode()); + dao.update(task); + } + // 会签并行任务 撤销后续任务 + if (selfTask.getPerformType().equals(ProcessTaskPerformTypeEnum.COUNTERSIGN.getCode())) { + List doingTasks = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.DOING.getCode()) + .and(ProcessTask::getProcessInstanceId, "=", selfTask.getProcessInstanceId())); + for (ProcessTask doingTask : doingTasks) { + doingTask.setTaskState(ProcessTaskStateEnum.WITHDRAW.getCode()); + dao.update(doingTask); + } + } + + // 激活 + dao.update(selfTask); + + // 流程激活 + dao.update(ProcessInstance.class, Chain.make("state", ProcessInstanceStateEnum.DOING.getCode()),Cnd.where(ProcessInstance::getId, "=", selfTask.getProcessInstanceId())); + + // 发送任务撤回事件 确保上面执行成功 + for (ProcessTask task : taskList) { + ProcessPublisher.notify(ProcessEvent.builder().eventType(ProcessEventTypeEnum.PROCESS_TASK_REVOKE).sourceId(task.getId()).build()); + } + + return Result.success(); + } + } diff --git a/src/main/java/com/budwk/app/flow/service/ProcessTaskService.java b/src/main/java/com/budwk/app/flow/service/ProcessTaskService.java index 44b298a9..3f51ce85 100644 --- a/src/main/java/com/budwk/app/flow/service/ProcessTaskService.java +++ b/src/main/java/com/budwk/app/flow/service/ProcessTaskService.java @@ -211,4 +211,13 @@ public interface ProcessTaskService extends BaseService { */ List getDoingTaskByBizIdTaskName(List bizIds, String taskName); + /** + * 获取已结束的任务 + * + * @param bizIds 业务ID + * @param taskName 任务名称 + * @return + */ + List getDoneTaskByBizIdTaskName(List bizIds, String taskName); + } diff --git a/src/main/java/com/budwk/app/flow/service/impl/ProcessTaskServiceImpl.java b/src/main/java/com/budwk/app/flow/service/impl/ProcessTaskServiceImpl.java index 95f14c74..0398eb5b 100644 --- a/src/main/java/com/budwk/app/flow/service/impl/ProcessTaskServiceImpl.java +++ b/src/main/java/com/budwk/app/flow/service/impl/ProcessTaskServiceImpl.java @@ -490,6 +490,16 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl impleme } + @Override + public List getDoneTaskByBizIdTaskName(List bizIds, String taskName) { + List instances = dao().query(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", bizIds)); + List instanceIds = instances.stream().map(ProcessInstance::getId).toList(); + List tasks = dao().query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "in", instanceIds) + .and(ProcessTask::getTaskName, "=", taskName) + .and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())); + return tasks; + } + @Override public List getDoingTaskByBizIdTaskName(List bizIds, String taskName) { List instances = dao().query(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", bizIds)); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeDelegationTwoPushController.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeDelegationTwoPushController.java index eb096aba..7cc99cc1 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeDelegationTwoPushController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeDelegationTwoPushController.java @@ -36,7 +36,7 @@ import java.util.stream.Collectors; /** * @author zhf * @date 2025/6/23 15:25 - * @description 分工会二次推选 + * @description 候选人录入 */ @At("/platform/executiveCommittee/delegationTwoPush") @Ok("json:full") @@ -62,7 +62,8 @@ public class ExecutiveCommitteeDelegationTwoPushController { public Result pageData(PageForm pageForm, String teacherMeetId, String delegationId, - String unionId) { + String unionId, + String roleCode) { Sql sql = Sqls.create(""" SELECT t1.*, @@ -86,9 +87,9 @@ public class ExecutiveCommitteeDelegationTwoPushController { $condition """); Cnd cnd = Cnd.NEW(); - cnd.andEX("t1.pushUserId", "=", SecurityUtil.getUserId()); cnd.andEX("t1.teacherMeetId", "=", teacherMeetId); cnd.andEX("t2.delegationId", "=", delegationId); + cnd.andEX("t1.roleCode", "=", roleCode); if (StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()) || StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { @@ -109,9 +110,9 @@ public class ExecutiveCommitteeDelegationTwoPushController { @At @SaCheckPermission("executiveCommittee.delegationTwoPush") - @SLog(type = "执委会推选-分工会二次推选", tag = "查询可以二次推选的名单", param = true, result = true) + @SLog(type = "执委会推选-候选人录入", tag = "查询可以二次推选的名单", param = true, result = true) public Result getDelegationUser(String teacherMeetId) { - if (!(StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || + /* if (!(StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()) || StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()))) { return Result.error("没有权限,只有分工会主席才能推选"); @@ -126,10 +127,9 @@ public class ExecutiveCommitteeDelegationTwoPushController { } if (config.getSecondEndTime().getTime() < System.currentTimeMillis()) { return Result.error("二次预选已结束"); - } + }*/ List userValue = dao.query(ExecutiveCommitteeTwoPush.class, - Cnd.where("teacherMeetId", "=", teacherMeetId) - .and("pushUserId", "=", SecurityUtil.getUserId())); + Cnd.where("teacherMeetId", "=", teacherMeetId)); List userIds = userValue.stream().map(v -> v.getUserId()).collect(Collectors.toList()); @@ -151,20 +151,20 @@ public class ExecutiveCommitteeDelegationTwoPushController { Cnd cnd = Cnd.NEW(); cnd.andEX("t1.teacherMeetId", "=", teacherMeetId); cnd.andEX("t1.userId", "not in", userIds); - cnd.andEX("t1.userId", "!=", SecurityUtil.getUserId()); sql.setCondition(cnd); List userData = baseService.listMap(sql); - return Result.success(Map.of("userData", userData, "userValue", userValue, "committeeQuotaCount", config.getCommitteeQuotaCount())); + return Result.success(Map.of("userData", userData, "userValue", userValue, "committeeQuotaCount",0)); } @At @SaCheckPermission("executiveCommittee.delegationTwoPush") @ApiOperation("推选委员") - @SLog(tag = "执委会推选-分工会二次推选", msg = "推选委员") + @SLog(tag = "执委会推选-候选人录入", msg = "推选委员") public Result addOnePush(@Param("userValue") String[] userValue, - String teacherMeetId) { + String teacherMeetId, + String roleCode) { try { - if (!(StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || + /* if (!(StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()) || StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()))) { return Result.error("没有权限,只有分工会主席才能推选"); @@ -187,7 +187,7 @@ public class ExecutiveCommitteeDelegationTwoPushController { if (dbCount + userValue.length > config.getCommitteeQuotaCount()) { return Result.error("推选人数限制" + config.getCommitteeQuotaCount() + "人"); } - +*/ List dbList = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", teacherMeetId) .andEX(Teacher_congress_delegate::getUserId, "in", userValue)); @@ -206,6 +206,7 @@ public class ExecutiveCommitteeDelegationTwoPushController { twoPush.setPushUserName(SecurityUtil.getUserUsername()); twoPush.setPushLoginName(SecurityUtil.getUserLoginname()); twoPush.setTeacherMeetId(teacherMeetId); + twoPush.setRoleCode(roleCode); list.add(twoPush); } dao.insert(list); @@ -219,16 +220,16 @@ public class ExecutiveCommitteeDelegationTwoPushController { @At @ApiOperation("删除推选人员") @SaCheckPermission("executiveCommittee.delegationTwoPush") - @SLog(tag = "执委会推选-分工会二次推选", msg = "删除推选人员") + @SLog(tag = "执委会推选-候选人录入", msg = "删除推选人员") public Result doDelete(@Valid String id, @Valid String teacherMeetId) { ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, Cnd.where("teacherMeetId", "=", teacherMeetId)); if (ObjectUtil.isEmpty(config)) { return Result.error("请先配置基础信息"); } - if (config.getSecondEndTime().getTime() < System.currentTimeMillis()) { + /* if (config.getSecondEndTime().getTime() < System.currentTimeMillis()) { return Result.error("二次预选已结束不能删除!"); - } + }*/ int num = dao.clear(ExecutiveCommitteeTwoPush.class, Cnd.where("id", "=", id)); return num >= 0 ? Result.success() : Result.error(); } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeMemberController.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeMemberController.java index 12b4a8a3..6daa2bc1 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeMemberController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeMemberController.java @@ -113,7 +113,7 @@ public class ExecutiveCommitteeMemberController { entityList.add(new ExcelExportEntity("联系方式", "mobile", 20)); entityList.add(new ExcelExportEntity("所属单位", "unitName", 20)); entityList.add(new ExcelExportEntity("所属代表团", "delegationName", 20)); - entityList.add(new ExcelExportEntity("票数", "pushCount", 20)); + entityList.add(new ExcelExportEntity("委员类别", "addTypeName", 20)); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("委员会预选名单.xlsx", "UTF-8")); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java index 73a754ae..594c45e8 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java @@ -1,21 +1,22 @@ package com.budwk.app.zhgh.democratic.executiveCommittee.controller; import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.hutool.core.date.DateUtil; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.pinyin.PinyinUtil; import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; import com.budwk.app.base.service.BaseService; import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.budwk.app.zhgh.democratic.executiveCommittee.models.ExecutiveCommitteeConfig; -import com.budwk.app.zhgh.democratic.executiveCommittee.models.ExecutiveCommitteeOnePush; +import com.budwk.app.zhgh.democratic.executiveCommittee.models.ExecutiveCommitteeTwoPush; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; @@ -29,10 +30,8 @@ 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; -import java.util.stream.Collectors; /** * @author zhf @@ -43,7 +42,7 @@ import java.util.stream.Collectors; @At("/platform/executiveCommittee/preparatoryGroupPush") @Ok("json:full") @Slf4j -@Api(tags = "执委会推选-筹备组推选") +@Api(tags = "执委会推选-正式委员录入") public class ExecutiveCommitteePushController { @Inject @@ -63,38 +62,49 @@ public class ExecutiveCommitteePushController { public Result pageData(PageForm pageForm, String teacherMeetId, String delegationId, - String unionId) { + String unionId, + String roleCode) { Sql sql = Sqls.create(""" - SELECT + SELECT t1.*, - t2.name AS unitName, - t3.name unionName, - t4.sex, + t2.loginName, + t2.userName, + t3.name AS unitName, + t4.name unionName, + t5.sex, TIMESTAMPDIFF( YEAR, - t4.birthday, + t5.birthday, CURDATE()) AS age, - t5.name AS delegationName + t6.name AS delegationName FROM - `executive_committee_one_push` t1 - LEFT JOIN sys_unit t2 ON t1.unitId = t2.id - LEFT JOIN `sys_union` t3 ON t3.id = t2.unionid - LEFT JOIN `vw_user` t4 ON t4.id = t1.userId - LEFT JOIN teacher_congress_delegation t5 ON t5.id = t1.delegationId + `executive_committee_two_push` t1 + LEFT JOIN executive_committee_one_push t2 on t2.userId=t1.userId and t2.teacherMeetId=t1.teacherMeetId + LEFT JOIN sys_unit t3 ON t2.unitId = t3.id + LEFT JOIN `sys_union` t4 ON t4.id = t3.unionid + LEFT JOIN `vw_user` t5 ON t5.id = t1.userId + LEFT JOIN teacher_congress_delegation t6 ON t6.id = t2.delegationId $condition """); Cnd cnd = Cnd.NEW(); cnd.andEX("t1.teacherMeetId", "=", teacherMeetId); - cnd.andEX("t1.delegationId", "=", delegationId); - cnd.andEX("t3.id", "=", unionId); - cnd.andEX("t1.addType", "=", 2); + cnd.andEX("t2.delegationId", "=", delegationId); + cnd.andEX("t1.roleCode", "=", roleCode); + cnd.andEX("t1.isFormal", "=", true); + if (StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || + StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()) || + StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { + cnd.andEX("t4.id", "=", unionId); + } else { + cnd.andEX("t4.id", "=", SecurityUtil.getUnionId()); + } if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { SqlExpressionGroup group = new SqlExpressionGroup(); - group.orLike("t1.userName", pageForm.getSearchKeyword()); - group.orLike("t1.loginName", pageForm.getSearchKeyword()); + group.orLike("t2.userName", pageForm.getSearchKeyword()); + group.orLike("t2.loginName", pageForm.getSearchKeyword()); cnd.and(group); } - cnd.asc("t5.code").asc("t1.firstLetter"); + cnd.asc("t6.code").asc("t2.firstLetter"); sql.setCondition(cnd); return Result.success(baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql)); } @@ -104,93 +114,53 @@ public class ExecutiveCommitteePushController { @SaCheckPermission("executiveCommittee.preparatoryGroupPush") @ApiOperation("查询可以推选委员和已经推选的人员") public Result getDelegationUser(String teacherMeetId) { - List userValue = dao.query(ExecutiveCommitteeOnePush.class, - Cnd.where("teacherMeetId", "=", teacherMeetId) - .and("addType", "=", 2)); - List onePushList = dao.query(ExecutiveCommitteeOnePush.class, Cnd.NEW()); - List userIds = onePushList.stream().map(ExecutiveCommitteeOnePush::getUserId).collect(Collectors.toList()); - ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, - Cnd.where("teacherMeetId", "=", teacherMeetId)); - Cnd cnd = Cnd.NEW(); - cnd.andEX("db.sessionId", "=", teacherMeetId); - cnd.andEX("db.userId", "not in", userIds); - cnd.andEX("db.userId", "!=", SecurityUtil.getUserId()); + List twoPushList = dao.query(ExecutiveCommitteeTwoPush.class, + Cnd.where("teacherMeetId", "=", teacherMeetId).and(ExecutiveCommitteeTwoPush::getRoleCode, "is not", null)); + + List userValue = twoPushList.stream().filter(ExecutiveCommitteeTwoPush::getIsFormal).toList(); + List userIds = userValue.stream().map(ExecutiveCommitteeTwoPush::getUserId).toList(); Sql sql = Sqls.create(""" - SELECT - db.*, - u.professionalTitle, - u.professionalLevel, - TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) AS age + SELECT + t2.id userId, + t2.username userName, + t2.loginname loginName, + t2.unitName, + t2.sex, + t2.professionalTitle, + t2.professionalLevel, + t1.roleCode, + TIMESTAMPDIFF( + YEAR, + t2.birthday, + CURDATE()) age FROM - teacher_congress_delegate db - LEFT JOIN `vw_user` u ON db.userId = u.id + executive_committee_two_push t1 + LEFT JOIN `vw_user` t2 ON t1.userId = t2.id $condition """); + Cnd cnd = Cnd.NEW(); + cnd.andEX("t1.teacherMeetId", "=", teacherMeetId); + cnd.andEX("t1.userId", "not in", userIds); sql.setCondition(cnd); List userData = baseService.listMap(sql); - return Result.success(Map.of("userData", userData, "userValue", userValue,"prepareGroupQuotaCount",config.getPrepareGroupQuotaCount())); + return Result.success(Map.of("userData", userData, "userValue", userValue)); } @At @SaCheckPermission("executiveCommittee.preparatoryGroupPush") - @SLog(tag = "执委会推选-筹备组推选", msg = "推选委员") + @SLog(tag = "执委会推选-正式委员录入", msg = "推选委员") public Result addOnePush(@Param("userValue") String[] userValue, String teacherMeetId) { try { - - ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, - Cnd.where("teacherMeetId", "=", teacherMeetId)); - /* if (ObjectUtil.isEmpty(config)) { - return Result.error("请先配置基础信息"); + if (ObjectUtil.isEmpty(userValue)) { + return Result.error("请选择要录入的委员!"); } - if (config.getFirstStartTime().getTime() > System.currentTimeMillis()) { - return Result.error("请等待一次预选开始时间"); + if (ObjectUtil.isEmpty(teacherMeetId)) { + return Result.error("请选择教代会!"); } - if (config.getFirstEndTime().getTime() < System.currentTimeMillis()) { - return Result.error("一次预选已结束"); - }*/ - - int dbCount = dao.count(ExecutiveCommitteeOnePush.class, - Cnd.where("teacherMeetId", "=", teacherMeetId) - .and("addType", "=", 2)); - if (dbCount + userValue.length > config.getPrepareGroupQuotaCount()) { - return Result.error("推选人数限制" + config.getPrepareGroupQuotaCount() + "人"); - } - - Sql sql = Sqls.create(""" - SELECT - t1.* - FROM - teacher_congress_delegate t1 - $condition - """); - Cnd cnd = Cnd.NEW(); - cnd.and("t1.sessionId", "=", teacherMeetId); - cnd.andEX("t1.userId", "in", userValue); - sql.setCondition(cnd); - List dbList = baseService.listMap(sql); - - List list = new ArrayList<>(); - for (String id : userValue) { - NutMap jdhDb = dbList.stream().filter(v -> v.getString("userId").equals(id)).findFirst().orElse(null); - if (ObjectUtil.isEmpty(jdhDb)) { - return Result.error("请选择正确的代表!"); - } - ExecutiveCommitteeOnePush onePush = new ExecutiveCommitteeOnePush(); - onePush.setPushDate(DateUtil.date()); - onePush.setUserId(jdhDb.getString("userId")); - onePush.setUserName(jdhDb.getString("userName")); - onePush.setLoginName(jdhDb.getString("loginName")); - onePush.setDelegationId(jdhDb.getString("delegationId")); - onePush.setUnionId(jdhDb.getString("unionId")); - onePush.setUnitId(jdhDb.getString("unitId")); - onePush.setTeacherMeetId(teacherMeetId); - String firstLetter = String.valueOf(getFirstLetter(jdhDb.getString("userName"))); - onePush.setFirstLetter(firstLetter); - onePush.setAddType(2); - list.add(onePush); - } - dao.insert(list); + List twoPushList = dao.query(ExecutiveCommitteeTwoPush.class, Cnd.where(ExecutiveCommitteeTwoPush::getTeacherMeetId, "=", teacherMeetId).and(ExecutiveCommitteeTwoPush::getUserId, "in", userValue)); + List ids = twoPushList.stream().map(ExecutiveCommitteeTwoPush::getId).toList(); + dao.update(ExecutiveCommitteeTwoPush.class, Chain.make("isFormal", true), Cnd.where("id", "in", ids)); return Result.success("添加成功!"); } catch (Exception e) { e.printStackTrace(); @@ -202,16 +172,9 @@ public class ExecutiveCommitteePushController { @SaCheckPermission("executiveCommittee.preparatoryGroupPush") @SLog(tag = "执委会推选-筹备组推选", msg = "删除推选的人") public Result doDelete(@Valid String id, @Valid String teacherMeetId) { - ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, - Cnd.where("teacherMeetId", "=", teacherMeetId)); - if (ObjectUtil.isEmpty(config)) { - return Result.error("请先配置基础信息"); - } - int num = dao.clear(ExecutiveCommitteeOnePush.class, Cnd.where("id", "=", id)); - return num >= 0 ? Result.success() : Result.error(); + dao.update(ExecutiveCommitteeTwoPush.class, Chain.make("isFormal", false), Cnd.where("id", "=", id)); + return Result.success("删除成功!"); } - - public static char getFirstLetter(String str) { if (str == null || str.isEmpty()) { throw new IllegalArgumentException("字符串不能为空"); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/service/impl/ExecutiveCommitteeMemberServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/service/impl/ExecutiveCommitteeMemberServiceImpl.java index 1989e861..3c8abafd 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/service/impl/ExecutiveCommitteeMemberServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/service/impl/ExecutiveCommitteeMemberServiceImpl.java @@ -37,7 +37,12 @@ public class ExecutiveCommitteeMemberServiceImpl extends BaseServiceImpl impleme YEAR, u.birthday, CURDATE()) AS age, - ( SELECT count( 1 ) FROM executive_committee_two_push tp WHERE tp.userId = op.userId ) as pushCount + ( SELECT count( 1 ) FROM executive_committee_two_push tp WHERE tp.userId = op.userId ) as pushCount, + CASE op.addType + WHEN 1 THEN '执委会委员' + WHEN 3 THEN '工会委员会委员' + ELSE '未知' + END AS addTypeName FROM executive_committee_one_push op LEFT JOIN sys_unit it ON op.unitId = it.id diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java index 6fb61a6a..283360e7 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java @@ -1,23 +1,26 @@ package com.budwk.app.zhgh.democratic.proposal.controller.transact; +import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.json.JSONObject; -import com.budwk.app.base.annotation.SLog; 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.service.BaseService; -import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum; -import com.budwk.app.bpm.models.BpmProcessTask; -import com.budwk.app.bpm.service.BpmService; +import com.budwk.app.flow.constant.FlowConst; +import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.entity.ProcessTask; +import com.budwk.app.flow.entity.ProcessTaskActor; +import com.budwk.app.flow.enums.ProcessTaskStateEnum; +import com.budwk.app.flow.service.FlowCommonService; +import com.budwk.app.flow.service.ProcessTaskService; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.budwk.app.zhgh.democratic.proposal.controller.vo.ProposalInfoPageVO; -import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake; -import com.budwk.app.zhgh.democratic.proposal.param.ProposalCommitteeFilingUnitApprovalParam; +import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo; import com.budwk.app.zhgh.democratic.proposal.param.ProposalSearchParam; import com.budwk.app.zhgh.democratic.proposal.service.ProposalCommitteeFilingUnitService; +import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -25,10 +28,10 @@ import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; -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.json.Json; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; @@ -46,10 +49,15 @@ public class ProposalCommitteeFilingUnitController { @Inject private BaseService baseService; @Inject - private BpmService bpmService; - @Inject private ProposalCommitteeFilingUnitService proposalCommitteeFilingUnitService; + @Inject + private ProposalCommonService proposalCommonService; + @Inject + private FlowCommonService flowCommonService; + @Inject + private ProcessTaskService processTaskService; + @At("") @Ok("beetl:/platform/zhgh/democratic/proposal/transact/committeeFilingUnit/index.html") @SaCheckPermission("proposal.committeeFilingUnit") @@ -64,123 +72,143 @@ public class ProposalCommitteeFilingUnitController { SELECT info.*, type.name AS typeName, - tcs.fullName AS sessionName, - tcd.`name` AS delegationName, - inst.id processInstanceId, - inst.processInstanceNodeId, - inst.processInstanceNodeName, - inst.processInstanceTaskIds, - inst.processInstanceStatus, - task.id processInstanceTaskId, - task.taskStatus processInstanceTaskStatus, - COUNT(p.consolidationIds) > 0 AS isConsolidation, - EXISTS ( - SELECT 1 - FROM bpm_process_task next_task - WHERE next_task.prevTaskId = task.id - AND next_task.taskStatus = 'COMPLETE' - ) AS nextTaskIsComplete + IF(mer.proposalId IS NOT NULL, 1, 0) AS merge, + tcs.fullName AS sessionName, + tcd.`name` AS delegationName, + 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 OR (ins.state = 20 AND info.caseFilingResult = 'NOT'), 1, 0) AS canRevoke FROM - bpm_process_task task - INNER JOIN bpm_process_node_define nd ON nd.id = task.processTaskNodeId - INNER JOIN bpm_process_instance inst ON inst.id = task.processInstanceId - INNER JOIN proposal_info info ON info.id = inst.processInstanceBusinessId - LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id)) + wf_process_task t + LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId + 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 + LEFT JOIN proposal_info info ON info.id = ins.businessNo LEFT JOIN proposal_type type on type.id = info.typeId - LEFT JOIN teacher_congress_session tcs ON tcs.id = info.sessionId - LEFT JOIN teacher_congress_delegation tcd ON tcd.id = info.delegationId - LEFT JOIN bpm_process_task nt ON nt.prevTaskId = task.id AND nt.taskStatus = 'COMPLETE' + LEFT JOIN proposal_merge mer ON mer.proposalId = info.id + LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId + LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId $condition """); Cnd cnd = Cnd.NEW(); + cnd.and("t.taskName", "=", "committeeFilingUnit"); if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) { - cnd.and(new Static("JSON_CONTAINS( task.assignments, '\"%s\"' )".formatted(SecurityUtil.getUserLoginname()))); + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); } - cnd.and("nd.nodeCode", "=", 70); if (approval) { - cnd.and("task.taskStatus", "=", BpmProcessTaskStatusEnum.COMPLETE); + cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); } else { - cnd.and("task.taskStatus", "=", BpmProcessTaskStatusEnum.ACTIVE); + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); } ProposalSearchParam.buildSearch(cnd, pageForm); - cnd.and(new Static(""" - NOT EXISTS( - SELECT 1 - FROM bpm_process_task t2 - WHERE t2.processInstanceId = task.processInstanceId - AND t2.processTaskNodeCode = task.processTaskNodeCode - AND t2.createdOn > task.createdOn - ) - """)); - cnd.groupBy("info.id"); - cnd.groupBy("task.id"); + cnd.groupBy("t.id"); + cnd.desc("t.createdAt"); sql.setCondition(cnd); - Pagination pagination = baseService.listPageVO(pageForm, sql, ProposalInfoPageVO.class); + Pagination pagination = proposalCommitteeFilingUnitService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return Result.success(pagination); } @At @SaCheckPermission("proposal.committeeFilingUnit") + @ApiOperation("执行任务") @Aop(TransAop.READ_COMMITTED) - @SLog(tag = "委员会确认承办单位", msg = "委员会确认承办单位") - @ApiOperation("委员会确认承办单位") - public Result approval(@Valid @Param("approval") ProposalCommitteeFilingUnitApprovalParam approvalParam) { - proposalCommitteeFilingUnitService.approval(approvalParam); - return Result.success(); - } + public Result executeTask(@Param("data") String data) { + Dict args = Json.fromJson(Dict.class, data); + String proposalId = args.getStr("proposalId"); - @At - @SaCheckPermission("proposal.committeeFilingUnit") - @Aop(TransAop.READ_COMMITTED) - @SLog(tag = "委员会确认承办单位", msg = "委员会确认承办单位撤回") - public Result revoke(@Valid String taskId) { - proposalCommitteeFilingUnitService.revoke(taskId); - return Result.success(); - } + // 查询是否提案 - @At - @SaCheckPermission("proposal.committeeFilingUnit") - @ApiOperation("查询立案的结果及承办单位") - public Result committeeFiling(@Valid String processInstanceId, @Valid String processInstanceTaskId) { - JSONObject newJson = new JSONObject(); - - BpmProcessTask caseUnitTask = proposalCommitteeFilingUnitService.dao().fetch(BpmProcessTask.class, - Cnd.where(BpmProcessTask::getId, "=", processInstanceTaskId) - .and(BpmProcessTask::getProcessInstanceId, "=", processInstanceId) - .and(BpmProcessTask::getProcessTaskNodeCode, "=", 70) - .and(BpmProcessTask::getDelFlag, "=", 0) - ); - if (ObjectUtil.isNotNull(caseUnitTask) && ObjectUtil.isNotEmpty(caseUnitTask.getExtVariable())) { - JSONObject jsonObject = caseUnitTask.getExtVariable(); - newJson.set("caseFilingResult", jsonObject.get("caseFilingResult")); - newJson.set("hostUnitId", jsonObject.get("hostUnitId")); - newJson.set("helpUnitIds", jsonObject.getBeanList("helpUnitIds", String.class)); - newJson.set("approvalOpinion", jsonObject.get("approvalOpinion")); - newJson.set("consolidationIds", jsonObject.getBeanList("consolidationIds", String.class)); - return Result.success(newJson); + // 单条审核 + List mergeProposalIds = proposalCommonService.mergeProposal(proposalId); + if (ObjectUtil.isEmpty(mergeProposalIds)) { + flowCommonService.executeTask(args); + return Result.success(); } - BpmProcessTask caseTask = proposalCommitteeFilingUnitService.dao().fetch(BpmProcessTask.class, - Cnd.where(BpmProcessTask::getProcessInstanceId, "=", processInstanceId) - .and(BpmProcessTask::getDelFlag, "=", 0) - .and(BpmProcessTask::getProcessTaskNodeCode, "=", 60) - .desc(BpmProcessTask::getCreatedOn) - ); - JSONObject jsonObject = caseTask.getExtVariable(); - newJson.set("caseFilingResult", jsonObject.get("caseFilingResult")); - newJson.set("hostUnitId", jsonObject.get("hostUnitId")); - newJson.set("helpUnitIds", jsonObject.getBeanList("helpUnitIds", String.class)); - newJson.set("approvalOpinion", jsonObject.get("approvalOpinion")); - newJson.set("consolidationIds", jsonObject.getBeanList("consolidationIds", String.class)); - return Result.success(newJson); + // 并案审核 + ProcessTask thisTask = baseService.dao().fetch(ProcessTask.class, args.getLong(FlowConst.PROCESS_TASK_ID_KEY)); + List mergeTasks = processTaskService.getDoingTaskByBizIdTaskName(mergeProposalIds, thisTask.getTaskName()); + for (ProcessTask mergeTask : mergeTasks) { + Dict cloneArgs = args.clone(); + cloneArgs.put(FlowConst.PROCESS_TASK_ID_KEY, mergeTask.getId()); + flowCommonService.executeTask(cloneArgs); + } + + ProposalInfo info = proposalCommonService.fetch(proposalId); + info.setCaseFilingResult(args.getStr("caseFilingResult")); + return Result.success(); } + + @At + @SaCheckLogin + @Aop(TransAop.READ_COMMITTED) + @ApiOperation("撤销任务") + public Result revokeTask(@Param("taskId") Long taskId,@Param("proposalId")String proposalId) { + // 单条审核 + List mergeProposalIds = proposalCommonService.mergeProposal(proposalId); + if (ObjectUtil.isEmpty(mergeProposalIds)) { + flowCommonService.revokeTask(taskId); + return Result.success(); + } + // 并案审核 + ProcessTask thisTask = baseService.dao().fetch(ProcessTask.class, taskId); + List mergeTasks = processTaskService.getDoneTaskByBizIdTaskName(mergeProposalIds, thisTask.getTaskName()); + for (ProcessTask mergeTask : mergeTasks) { + flowCommonService.revokeTask(mergeTask.getId()); + } + return Result.success(); + } + + @At @SaCheckPermission("proposal.committeeFilingUnit") - @ApiOperation("查询承办单位") - public Result listUnderTake() { - List list = baseService.dao().query(ProposalUndertake.class, Cnd.NEW().asc(ProposalUndertake::getCode)); - return Result.success(list); + public Result doUpData(){ + List tasks = baseService.dao().query(ProcessTask.class, Cnd.where("taskName", "=", "personnelOffice")); + List list = tasks.stream().map(ProcessTask::getId).toList(); + + List actorList = baseService.dao().query(ProcessTaskActor.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "in", list)); + + List instanceList = baseService.dao().query(ProcessInstance.class, Cnd.where(ProcessInstance::getProcessDefineId, "=", 396)); + + for (ProcessTask task : tasks) { + task.setTaskName("committee"); + task.setDisplayName("提案委员会立案"); + task.setFormKey("/platform/proposal/committee"); + task.setH5FormKey(""); + } + + for (ProcessTaskActor actor : actorList) { + actor.setActorId("1fb89886bf4c43dcb48409c83d3363c3"); + actor.setActorAccount("018054"); + actor.setActorName("赵丽霞"); + actor.setActorUnitName("工会"); + actor.setActorUnitId("0011"); + } + + for (ProcessInstance instance : instanceList) { + instance.setProcessDefineId(400L); + } + + baseService.update(tasks); + baseService.update(actorList); + baseService.update(instanceList); + + return Result.success(); } } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalPersonnelOfficeController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalPersonnelOfficeController.java deleted file mode 100644 index cf3dc382..00000000 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalPersonnelOfficeController.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.budwk.app.zhgh.democratic.proposal.controller.transact; - -import cn.dev33.satoken.annotation.SaCheckPermission; -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.service.BaseService; -import com.budwk.app.bpm.service.BpmService; -import com.budwk.app.flow.enums.ProcessTaskStateEnum; -import com.budwk.app.web.commons.auth.utils.AuthUtil; -import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.budwk.app.zhgh.democratic.proposal.param.ProposalSearchParam; -import com.budwk.app.zhgh.democratic.proposal.service.ProposalDelegationService; -import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -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; -import org.nutz.mvc.annotation.Ok; - -import javax.validation.Valid; -import java.util.List; - -/** - * @author zhf - * @date 2026/3/12 09:36 - * @description 人事处审核 - */ -@IocBean -@At("/platform/proposal/personnelOffice") -@Slf4j -@Ok("json:full") -@Api(tags = "提案-办理-人事处审核") -public class ProposalPersonnelOfficeController { - - @Inject - private BaseService baseService; - @Inject - private ProposalCommonService proposalCommonService; - @Inject - private ProposalDelegationService proposalDelegationService; - @Inject - private BpmService bpmService; - - @At("") - @Ok("beetl:/platform/zhgh/democratic/proposal/transact/personnelOffice/index.html") - @SaCheckPermission("proposal.personnelOffice") - public void index() { - } - - @At("/h5") - @Ok("beetl:/platform/zhghh5/democratic/proposal/transact/personnelOffice/index.html") - @SaCheckPermission("h5.proposal.personnelOffice") - public void h5Index() { - } - - - @At - @SaCheckPermission("proposal.personnelOffice") - @ApiOperation("分页列表") - public Result pageData(@Valid ProposalSearchParam pageForm, boolean approval) { - Sql sql = Sqls.create(""" - SELECT - info.*, - type.name AS typeName, - tcs.fullName AS sessionName, - tcd.`name` AS delegationName, - 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 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 - LEFT JOIN proposal_info info ON info.id = ins.businessNo - LEFT JOIN proposal_type type on type.id = info.typeId - LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId - LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId - $condition - """); - Cnd cnd = Cnd.NEW(); - cnd.and("t.taskName", "=", "personnelOffice"); - - if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())){ - cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); - } - - if (approval) { - cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); - } else { - cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); - } - ProposalSearchParam.buildSearch(cnd, pageForm); - cnd.groupBy("t.id"); - cnd.desc("t.createdAt"); - sql.setCondition(cnd); - Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(),pageForm.getPageSize(), sql); - return Result.success(pagination); - } - -} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/proposalPersonnelOfficeAdminHandler.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/proposalPersonnelOfficeAdminHandler.java new file mode 100644 index 00000000..9bd01c40 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/proposalPersonnelOfficeAdminHandler.java @@ -0,0 +1,46 @@ +package com.budwk.app.zhgh.democratic.proposal.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 com.budwk.app.sys.models.Sys_role; +import com.budwk.app.sys.models.Sys_user_role; +import com.budwk.app.sys.services.SysRoleService; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.lang.Lang; + +import java.util.List; + +/** + * @author zhf + * @date 2026/3/16 13:54 + * @description 提案人事处管理员 + */ +public class proposalPersonnelOfficeAdminHandler implements AssignmentHandler { + @Override + public List assign(TaskModel model, Execution execution) { + SysRoleService sysRoleService = ServiceContext.find(SysRoleService.class); + Sys_role role = sysRoleService.getByCode(RoleConstant.PROPOSAL_PERSONNEL_OFFICE_ADMIN); + + List roles = ServiceContext.find(Dao.class).query( + Sys_user_role.class, + Cnd.where(Sys_user_role::getRoleId, "=", role.getId())); + if (Lang.isEmpty(roles)) { + throw new RuntimeException("当前登录用户所在单位未设置单位党委书记,请联系校工会进行设置。"); + } + return roles.stream().map(Sys_user_role::getUserId).toList(); + } + + @Override + public String getMessage() { + return "获取当前提案人事处管理员"; + } + + @Override + public int getOrder() { + return AssignmentHandler.super.getOrder(); + } +} diff --git a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html index d588813b..0a6cd5db 100644 --- a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html @@ -27,7 +27,7 @@ layout("/layouts/platform.html"){ > - + + + + + + + + @@ -50,7 +63,7 @@ layout("/layouts/platform.html"){ size="small" type="primary" @click="$refs.onePushFormalRef.onOpen(pageForm.teacherMeetId)" - >委员推选 + >候选人录入 @@ -59,6 +72,7 @@ layout("/layouts/platform.html"){ :data="tableData" row-key="id" @sort-change="pageOrder" + v-loading="tableLoading" > + + +