From ea9aa6a1b991e2b8f6327bcb0796aeeae6eb6a87 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Mon, 24 Nov 2025 08:46:29 +0800 Subject: [PATCH] commit --- .../budwk/app/base/constant/RoleConstant.java | 1 + .../flow/handler/FlowAssignUserHandler.java | 35 ++ .../flow/handler/FlowUnitManagerHandler.java | 51 ++ ...TeacherCongressDelegatePushController.java | 125 +--- ...gressDelegatePushDwFzrAuditController.java | 146 +++++ ...ngressDelegatePushDwSjAuditController.java | 161 +++++ ...erCongressDelegatePushWriteController.java | 24 + ...CongressDelegatePushZgAuditController.java | 2 +- .../TeacherCongressDelegatePushService.java | 4 +- ...eacherCongressDelegatePushServiceImpl.java | 128 +++- .../views/platform/sys/unit/index.html | 1 - .../delegate/push/auditInfo.js | 110 ++++ .../delegate/push/dwFzrAudit.html | 252 ++++++++ .../delegate/push/dwSjAudit.html | 278 +++++++++ .../teachercongress/delegate/push/index.html | 396 +++++++------ .../delegate/push/push-progress.js | 97 +-- .../teachercongress/delegate/push/write.js | 559 ++++++++++-------- .../delegate/push/zcAudit.html | 257 ++++---- .../proposal/transact/write/index.html | 29 +- 19 files changed, 1894 insertions(+), 762 deletions(-) create mode 100644 src/main/java/com/budwk/app/flow/handler/FlowAssignUserHandler.java create mode 100644 src/main/java/com/budwk/app/flow/handler/FlowUnitManagerHandler.java create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushDwFzrAuditController.java create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushDwSjAuditController.java create mode 100644 src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/auditInfo.js create mode 100644 src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwFzrAudit.html create mode 100644 src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.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 ec51f0f..33c8016 100644 --- a/src/main/java/com/budwk/app/base/constant/RoleConstant.java +++ b/src/main/java/com/budwk/app/base/constant/RoleConstant.java @@ -46,6 +46,7 @@ RoleConstant { BRANCH_UNION_TIAOJIE_WY("分工会调解委员"), UNIT_PARTY_SECRETARY("单位党委书记"), + UNIT_MANAGER("单位负责人"), TEACHER_CONGRESS_DELEGATE_FORMAL("教代会正式代表"), TEACHER_CONGRESS_DELEGATE_ATTENDANCE("教代会列席代表"), diff --git a/src/main/java/com/budwk/app/flow/handler/FlowAssignUserHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowAssignUserHandler.java new file mode 100644 index 0000000..54d83bf --- /dev/null +++ b/src/main/java/com/budwk/app/flow/handler/FlowAssignUserHandler.java @@ -0,0 +1,35 @@ +package com.budwk.app.flow.handler; + +import com.budwk.app.flow.engine.AssignmentHandler; +import com.budwk.app.flow.engine.core.Execution; +import com.budwk.app.flow.engine.model.TaskModel; +import com.budwk.app.sys.models.Sys_user; +import org.nutz.lang.Lang; + +import java.util.List; + +/** + * @author zhf + * @date 2025/11/22 16:06 + * @description 指定用户 + */ +public class FlowAssignUserHandler implements AssignmentHandler { + @Override + public List assign(TaskModel model, Execution execution) { + String userId = execution.getArgs().getStr("userId"); + if (Lang.isEmpty(userId)){ + throw new RuntimeException("流程参数错误!"); + } + return List.of(userId); + } + + @Override + public String getMessage() { + return "指定下一个流程人(根据args中的userId))"; + } + + @Override + public int getOrder() { + return AssignmentHandler.super.getOrder(); + } +} diff --git a/src/main/java/com/budwk/app/flow/handler/FlowUnitManagerHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowUnitManagerHandler.java new file mode 100644 index 0000000..635f630 --- /dev/null +++ b/src/main/java/com/budwk/app/flow/handler/FlowUnitManagerHandler.java @@ -0,0 +1,51 @@ +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 com.budwk.app.sys.models.Sys_role; +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.lang.Lang; + +import java.util.List; + +/** + * @author zhf + * @date 2025/11/22 15:56 + * @description 单位负责人 + */ +public class FlowUnitManagerHandler implements AssignmentHandler { + @Override + public List assign(TaskModel model, Execution execution) { + String unitId = SecurityUtil.getUnitId(); + + SysRoleService sysRoleService = ServiceContext.find(SysRoleService.class); + Sys_role role = sysRoleService.getByCode(RoleConstant.UNIT_MANAGER); + + List roles = ServiceContext.find(Dao.class).query( + Sys_user_role.class, + Cnd.where(Sys_user_role::getRoleId, "=", role.getId()) + .and(Sys_user_role::getUnitId, "=", unitId) + ); + + if (Lang.isEmpty(roles)) { + throw new RuntimeException("当前登录用户所在单位未设置单位负责人,请联系校工会进行设置。"); + } + return roles.stream().map(Sys_user_role::getUserId).toList(); + } + + @Override + public String getMessage() { + return "获取当前登录用户所在单位负责人"; + } + + public int getOrder() { + return AssignmentHandler.super.getOrder(); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushController.java index a106760..80c5be8 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushController.java @@ -5,6 +5,7 @@ import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Dict; @@ -296,119 +297,20 @@ public class TeacherCongressDelegatePushController { @ApiOperation("提交到资格审查") @SaCheckPermission("tc.delegate.push") @SLog(tag = "代表管理-代表推选", msg = "提交到资格审查") - public Result batchSubmit(@Param("ids") @Valid String[] ids, String sessionId) { - - - Teacher_congress_quota_allocation allocation = dao.fetch(Teacher_congress_quota_allocation.class, - Cnd.where(Teacher_congress_quota_allocation::getSessionId, "=", sessionId) - .and(Teacher_congress_quota_allocation::getUnionId, "=", SecurityUtil.getUnionId())); - - - if (allocation == null) { - return Result.error("请先设置名额分配"); + public Result batchSubmit(String sessionId) { + String str = teacherCongressDelegatePushService.batchSubmitWhere(sessionId, "JG"); + if (StrUtil.isNotBlank(str)) { + return Result.error(str); } - if (allocation.getAllocationNum() == 0) { - return Result.error("请先设置名额分配"); - } - - Sql sql = Sqls.create(""" - SELECT - info.*, - 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 - FROM - teacher_congress_delegate_push info - LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id - LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id - AND t.taskState = 10 - LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id - $condition - """); - Cnd cnd = Cnd.NEW(); - cnd.andEX("info.sessionId", "=", sessionId); - cnd.andEX("info.unionId", "=", SecurityUtil.getUnionId()); - SqlExpressionGroup group = new SqlExpressionGroup(); - group.or("t.taskName", "!=", "53ff0c2a-ba93-45e9-a9fd-db51cdab3080"); - group.or("t.taskName", "is", null); - cnd.and(group); - cnd.and("ins.state", "!=", ProcessInstanceStateEnum.REJECT.getCode()); - cnd.groupBy("info.id"); - sql.setCondition(cnd); - List writeList = baseService.listMap(sql); - - - // 已上报总人数 - int total = writeList.size(); - // 已上报女代表人数 - int female = (int) writeList.stream().filter(v -> List.of("女", "女性").contains(v.getString("sex"))).count(); - // 已上报高级职称人数 - int seniorTeacher = (int) writeList.stream().filter(v -> v.getBoolean("seniorTeacher")).count(); - //已上报中级职称及以下代表数 - int intermediateBelow = (int) writeList.stream().filter(v -> v.getBoolean("intermediateBelow")).count(); - //已上报干部代表数 - int cadre = (int) writeList.stream().filter(v -> v.getBoolean("cadre")).count(); - //已上报工人代表数 - int worker = (int) writeList.stream().filter(v -> v.getBoolean("worker")).count(); - // 已上报专任教师人数 - int ordinaryTeacher = (int) writeList.stream().filter(v -> v.getBoolean("ordinaryTeacher")).count(); - // 已上报45岁以下代表 - int under45 = (int) writeList.stream().filter(v -> Convert.toInt(v.getInt("age"), 0) <= 45).count(); - - StringBuffer tips = new StringBuffer(); - - if (total > allocation.getAllocationNum()) { - tips.append("上报总人数超出分配名额!"); - } - if (total < allocation.getAllocationNum()) { - tips.append("上报总人数不满足分配名额!"); - } - - if (seniorTeacher < allocation.getSeniorTeaNum()) { - tips.append("高级职称专任教师数不满足分配名额数!"); - } - if (intermediateBelow < allocation.getIntermediateBelowNum()) { - tips.append("中级职称及以下代表数不满足分配名额数!"); - } - - if (cadre < allocation.getCadreNum()) { - tips.append("干部代表数不满足分配名额数!"); - } - - if (worker < allocation.getWorkerNum()) { - tips.append("工人代表数不满足分配名额数!"); - } - if (female < allocation.getFemaleNum()) { - tips.append("女教师代表数不满足分配名额数!"); - } - - if (under45 < allocation.getLess45Num()) { - tips.append("45岁以下教师代表数不满足分配名额数!"); - } - - if (StrUtil.isNotBlank(tips)) { - return Result.error(tips.toString()); - } - teacherCongressDelegatePushService.batchSubmit(ids, sessionId); + teacherCongressDelegatePushService.batchSubmit("JG", sessionId); return Result.success(); } @At @ApiOperation("本单位代表上报情况") - @SaCheckPermission("tc.delegate.push") - public Result selfUnionPushMetric(String sessionId, String unionId) { + @SaCheckPermission(value = {"tc.delegate.push", "tc.delegate.push.dwSjAudit"}, mode = SaMode.OR) + public Result selfUnionPushMetric(String sessionId, String unionId,String submitType) { if (StrUtil.isBlank(unionId)) { unionId = SecurityUtil.getUnionId(); } @@ -432,8 +334,12 @@ public class TeacherCongressDelegatePushController { """); Cnd cnd = Cnd.NEW(); SqlExpressionGroup group = new SqlExpressionGroup(); - group.or("t.taskName", "=", "0cacd1e7-7bb2-47dd-818b-6a73062e0c62"); - group.or("t.taskName", "=", "900217e4-4332-4a21-90dd-363b8be17801"); + if (submitType.equals("JG")){ + group.or("t.taskName", "=", "tcDelegatePushDwSjTj"); + }else{ + group.or("t.taskName", "=", "tcDelegatePushUnion"); + } + group.or("t.taskName", "=", "tcDelegatePushZg"); group.or("t.taskName", "is", null); cnd.and(group); cnd.and("ins.state", "!=", ProcessInstanceStateEnum.REJECT.getCode()); @@ -559,7 +465,7 @@ public class TeacherCongressDelegatePushController { @Param(value = "isFormalOrAttendance") String isFormalOrAttendance, HttpServletResponse response) { Sql sql; - if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())){ + if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { sql = getSql(pageForm, sessionId, unionId, isFormalOrAttendance); } else { sql = getSql(pageForm, sessionId, SecurityUtil.getUnionId(), isFormalOrAttendance); @@ -672,5 +578,4 @@ public class TeacherCongressDelegatePushController { } - } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushDwFzrAuditController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushDwFzrAuditController.java new file mode 100644 index 0000000..9f2a800 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushDwFzrAuditController.java @@ -0,0 +1,146 @@ +package com.budwk.app.zhgh.democratic.teachercongress.delegate.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.constant.RoleConstant; +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.base.service.BaseService; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.base.utils.SysOfficeTemplateUtil; +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.enums.ProcessTaskStateEnum; +import com.budwk.app.flow.service.FlowCommonService; +import com.budwk.app.sys.views.View_user; +import com.budwk.app.web.commons.auth.utils.AuthUtil; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.TeacherCongressDelegatePush; +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.dao.util.cri.SqlExpressionGroup; +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; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import java.util.List; + +/** + * @author zhf + * @date 2025/11/21 17:05 + * @description 单位负责人审核 + */ +@IocBean +@At("/platform/teacherCongress/delegate/push/dwFzrAudit") +@Ok("json:full") +@Slf4j +@Api(value = "/platform/teacherCongress/delegate/push/dwFzrAudit", tags = "单位负责人审核") +public class TeacherCongressDelegatePushDwFzrAuditController { + + + @Inject + private Dao dao; + + @Inject + private BaseService baseService; + + @Inject + private FlowCommonService flowCommonService; + + @Inject + private FlowEngine flowEngine; + + @At("") + @Ok("beetl:/platform/zhgh/democratic/teachercongress/delegate/push/dwFzrAudit.html") + @SaCheckPermission("tc.delegate.push.dwFzrAudit") + public void index() { + } + + + @At + @ApiOperation("分页查询") + @SaCheckPermission("tc.delegate.push.dwFzrAudit") + public Result pageData(PageForm pageForm, + @Param(value = "sessionId") String sessionId, + @Param(value = "unionId") String unionId, + @Param(value = "approval") Boolean approval, + @Param(value = "isFormalOrAttendance") String isFormalOrAttendance) { + + Sql sql = Sqls.create(""" + SELECT + info.*, + 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 teacher_congress_delegate_push 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(); + cnd.and("t.taskName", "=", "tcDelegatePushDwFzr"); + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name())) { + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); + } + if (!"全部".equals(isFormalOrAttendance)) { + cnd.and("info.representativeType", "=", isFormalOrAttendance); + } + cnd.andEX("info.sessionId", "=", sessionId); + cnd.andEX("info.unionId", "=", unionId); + if (approval) { + 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.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup group = new SqlExpressionGroup(); + group.orLike("info.userName", pageForm.getSearchKeyword()); + group.orLike("info.loginName", pageForm.getSearchKeyword()); + cnd.and(group); + } + + cnd.groupBy("t.id"); + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("t.createdAt"); + } else { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + sql.setCondition(cnd); + Pagination pageVO = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pageVO); + } + + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushDwSjAuditController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushDwSjAuditController.java new file mode 100644 index 0000000..f27104d --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushDwSjAuditController.java @@ -0,0 +1,161 @@ +package com.budwk.app.zhgh.democratic.teachercongress.delegate.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.constant.RoleConstant; +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.base.service.BaseService; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.flow.constant.FlowConst; +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.flow.enums.ProcessTaskStateEnum; +import com.budwk.app.flow.service.FlowCommonService; +import com.budwk.app.web.commons.auth.utils.AuthUtil; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.democratic.teachercongress.delegate.service.TeacherCongressDelegatePushService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; +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 java.util.List; + +/** + * @author zhf + * @date 2025/11/22 11:07 + * @description 党委书记审核 + */ +@IocBean +@At("/platform/teacherCongress/delegate/push/dwSjAudit") +@Ok("json:full") +@Slf4j +@Api(value = "/platform/teacherCongress/delegate/push/dwSjAudit", tags = "党委书记审核") +public class TeacherCongressDelegatePushDwSjAuditController { + + + @Inject + private Dao dao; + + @Inject + private BaseService baseService; + + @Inject + private FlowCommonService flowCommonService; + + @Inject + private FlowEngine flowEngine; + + @Inject + private TeacherCongressDelegatePushService teacherCongressDelegatePushService; + + @At("") + @Ok("beetl:/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html") + @SaCheckPermission("tc.delegate.push.dwSjAudit") + public void index() { + } + + + @At + @ApiOperation("分页查询") + @SaCheckPermission("tc.delegate.push.dwSjAudit") + public Result pageData(PageForm pageForm, + @Param(value = "sessionId") String sessionId, + @Param(value = "unionId") String unionId, + @Param(value = "approval") Boolean approval, + @Param(value = "isFormalOrAttendance") String isFormalOrAttendance) { + + Sql sql = Sqls.create(""" + SELECT + info.*, + 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 teacher_congress_delegate_push 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(); + cnd.and("t.taskName", "=", "tcDelegatePushDwSj"); + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name())) { + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); + } + if (!"全部".equals(isFormalOrAttendance)) { + cnd.and("info.representativeType", "=", isFormalOrAttendance); + } + cnd.andEX("info.sessionId", "=", sessionId); + cnd.andEX("info.unionId", "=", unionId); + if (approval) { + 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.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup group = new SqlExpressionGroup(); + group.orLike("info.userName", pageForm.getSearchKeyword()); + group.orLike("info.loginName", pageForm.getSearchKeyword()); + cnd.and(group); + } + + cnd.groupBy("t.id"); + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("t.createdAt"); + } else { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + sql.setCondition(cnd); + Pagination pageVO = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pageVO); + } + + @At + @ApiOperation("党委书记提交") + @SaCheckPermission("tc.delegate.push.dwSjAudit") + public Result batchSubmit(String sessionId) { + + String str = teacherCongressDelegatePushService.batchSubmitWhere(sessionId, "XY"); + if (StrUtil.isNotBlank(str)) { + return Result.error(str); + } + teacherCongressDelegatePushService.batchSubmit("XY", sessionId); + + return null; + } + + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushWriteController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushWriteController.java index 198fff1..76a79e4 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushWriteController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushWriteController.java @@ -10,20 +10,24 @@ import com.budwk.app.base.service.BaseService; import com.budwk.app.flow.constant.FlowConst; import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; import com.budwk.app.flow.service.FlowCommonService; +import com.budwk.app.sys.views.View_user; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.TeacherCongressDelegatePush; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +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; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import java.util.List; import java.util.Map; /** @@ -112,6 +116,7 @@ public class TeacherCongressDelegatePushWriteController { @At @ApiOperation("代表信息填写提交") @SaCheckLogin + @Aop(TransAop.READ_COMMITTED) public Result submit(TeacherCongressDelegatePush teacherCongressDelegatePush,String taskId){ dao.updateIgnoreNull(teacherCongressDelegatePush); @@ -119,9 +124,28 @@ public class TeacherCongressDelegatePushWriteController { dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId); dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.AGREE.getCode()); dict.set(FlowConst.EXT_ENABLE_OPERATOR,true); + View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", teacherCongressDelegatePush.getUserId())); + if (List.of("563dcfc5033d4631bc7f6482b2d427b9","9b2650eec5114a18a0d2a09803800a39").contains(user.getUnionId())){ + dict.set("tf_type","JG"); + }else{ + dict.set("tf_type","XY"); + } flowCommonService.executeTask(dict); return Result.success(); } + @At + @ApiOperation("代表信息填写的信息") + @SaCheckLogin + @Aop(TransAop.READ_COMMITTED) + public Result finOne(String id){ + TeacherCongressDelegatePush delegatePush = baseService.dao().fetch(TeacherCongressDelegatePush.class, Cnd.where("id", "=", id)); + return Result.success(delegatePush); + } + + + + + } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushZgAuditController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushZgAuditController.java index abfa608..46e846c 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushZgAuditController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushZgAuditController.java @@ -201,7 +201,7 @@ public class TeacherCongressDelegatePushZgAuditController { $condition """); Cnd cnd = Cnd.NEW(); - cnd.and("t.taskName", "=", "900217e4-4332-4a21-90dd-363b8be17801"); + cnd.and("t.taskName", "=", "tcDelegatePushZg"); // cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); if (!"全部".equals(isFormalOrAttendance)) { cnd.and("info.representativeType", "=", isFormalOrAttendance); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/service/TeacherCongressDelegatePushService.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/service/TeacherCongressDelegatePushService.java index ea70292..08f8de1 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/service/TeacherCongressDelegatePushService.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/service/TeacherCongressDelegatePushService.java @@ -5,6 +5,8 @@ import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.TeacherCong public interface TeacherCongressDelegatePushService extends BaseService { - void batchSubmit(String[] ids, String sessionId); + void batchSubmit(String submitType, String sessionId); + + String batchSubmitWhere(String sessionId,String submitType); } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/service/TeacherCongressDelegatePushServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/service/TeacherCongressDelegatePushServiceImpl.java index aee23e0..5836779 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/service/TeacherCongressDelegatePushServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/service/TeacherCongressDelegatePushServiceImpl.java @@ -1,15 +1,22 @@ package com.budwk.app.zhgh.democratic.teachercongress.delegate.service; +import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.result.Result; import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.flow.constant.FlowConst; +import com.budwk.app.flow.enums.ProcessInstanceStateEnum; import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; import com.budwk.app.flow.service.FlowCommonService; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.TeacherCongressDelegatePush; +import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_quota_allocation; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.util.NutMap; @@ -31,7 +38,7 @@ public class TeacherCongressDelegatePushServiceImpl extends BaseServiceImpl delegatePushList = listMap(sql); @@ -71,4 +82,115 @@ public class TeacherCongressDelegatePushServiceImpl extends BaseServiceImpl writeList = listMap(sql); + + + // 已上报总人数 + int total = writeList.size(); + // 已上报女代表人数 + int female = (int) writeList.stream().filter(v -> List.of("女", "女性").contains(v.getString("sex"))).count(); + // 已上报高级职称人数 + int seniorTeacher = (int) writeList.stream().filter(v -> v.getBoolean("seniorTeacher")).count(); + //已上报中级职称及以下代表数 + int intermediateBelow = (int) writeList.stream().filter(v -> v.getBoolean("intermediateBelow")).count(); + //已上报干部代表数 + int cadre = (int) writeList.stream().filter(v -> v.getBoolean("cadre")).count(); + //已上报工人代表数 + int worker = (int) writeList.stream().filter(v -> v.getBoolean("worker")).count(); + // 已上报专任教师人数 + int ordinaryTeacher = (int) writeList.stream().filter(v -> v.getBoolean("ordinaryTeacher")).count(); + // 已上报45岁以下代表 + int under45 = (int) writeList.stream().filter(v -> Convert.toInt(v.getInt("age"), 0) <= 45).count(); + + StringBuffer tips = new StringBuffer(); + + if (total > allocation.getAllocationNum()) { + tips.append("上报总人数超出分配名额!"); + } + if (total < allocation.getAllocationNum()) { + tips.append("上报总人数不满足分配名额!"); + } + + if (seniorTeacher < allocation.getSeniorTeaNum()) { + tips.append("高级职称专任教师数不满足分配名额数!"); + } + if (intermediateBelow < allocation.getIntermediateBelowNum()) { + tips.append("中级职称及以下代表数不满足分配名额数!"); + } + + if (cadre < allocation.getCadreNum()) { + tips.append("干部代表数不满足分配名额数!"); + } + + if (worker < allocation.getWorkerNum()) { + tips.append("工人代表数不满足分配名额数!"); + } + if (female < allocation.getFemaleNum()) { + tips.append("女教师代表数不满足分配名额数!"); + } + + if (under45 < allocation.getLess45Num()) { + tips.append("45岁以下教师代表数不满足分配名额数!"); + } + + if (StrUtil.isNotBlank(tips)) { + return tips.toString(); + } + return null; + } } diff --git a/src/main/resources/views/platform/sys/unit/index.html b/src/main/resources/views/platform/sys/unit/index.html index 23db11e..b1bc6e4 100644 --- a/src/main/resources/views/platform/sys/unit/index.html +++ b/src/main/resources/views/platform/sys/unit/index.html @@ -17,7 +17,6 @@ layout("/layouts/platform.html"){ label: 'name' }" node-key="id" - default-expand-all @node-click="treeNodeClick" :filter-node-method="filterNode" highlight-current diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/auditInfo.js b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/auditInfo.js new file mode 100644 index 0000000..add1e4c --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/auditInfo.js @@ -0,0 +1,110 @@ +const auditInfo = { + template: /*language=HTML*/ ` +
+
+
+ 基础信息 + 点击查看流程图 +
+ + {{ viewData.userName }} + {{viewData.loginName }} + {{viewData.sex }} + {{$moment(viewData.birthday).format("YYYY-MM-DD") }} + + {{viewData.mobile }} + {{viewData.nation }} + {{viewData.political }} + {{viewData.unionName }} + {{viewData.unitName }} + {{viewData.education }} + {{viewData.position }} + {{viewData.professionalTitle }} + {{viewData.seniorTeacher?'是':'否' }} + + {{viewData.intermediateBelow?'是':'否' }} + + {{viewData.cadre?'是':'否' }} + {{viewData.worker?'是':'否' }} + {{viewData.schoolLeader?'是':'否' }} + {{viewData.middleLevelLeader?'是':'否' }} + + +
{{viewData.resume}}
+
+ +
{{viewData.performance}}
+
+
+
+ + + + + +
+ + `, + dicts: ["PROCESS_TASK_SUBMIT_TYPE"], + data() { + return { + visible: false, + userData: [], + viewData: {}, + row: null, + doneTasks: [], + loading: true, + search: "", + tableKey: "", + activeName: "1" + } + }, + methods: { + findOne() { + this.$axios.post("/platform/teacherCongress/delegate/push/write/finOne", {id: this.row.id}).then(resp => { + if (resp.code === 0) { + this.viewData = resp.data + } + }) + }, + // 打开 + onOpen(row) { + this.row = row; + this.visible = true; + this.findOne(); + this.getDoneTasks(); + }, + // 获取已办任务审批记录 + getDoneTasks() { + this.$axios.post("/flow/common/doneTasks", {bizId: this.row.id}).then((res) => { + if (res.code === 0) { + this.doneTasks = res.data + } + }) + }, + // 查看流程图 + openChart() { + this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId, this.row.instanceId) + } + } +} diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwFzrAudit.html b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwFzrAudit.html new file mode 100644 index 0000000..fdfbabc --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwFzrAudit.html @@ -0,0 +1,252 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + 已审核 + 未审核 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html new file mode 100644 index 0000000..5e03e47 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html @@ -0,0 +1,278 @@ + +
+ + + + + + + + + + + + + + + + + + + + + 正式代表提交上报 + + + + + + + + 已审核 + 未审核 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/index.html b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/index.html index 1b224cd..320e29f 100644 --- a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/index.html @@ -2,196 +2,204 @@ layout("/layouts/platform.html"){ #-->
- - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - 导出 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -