From 936de72c71ad688eca9a1cb156d578c9b243f872 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Sat, 20 Dec 2025 16:54:10 +0800 Subject: [PATCH 1/4] commit --- .../flow/handler/FlowAssignUserHandler.java | 34 ++ .../FlowUnitPartySecretaryHandler.java | 26 +- ...acherCongressDelegateManageController.java | 42 ++ ...TeacherCongressDelegatePushController.java | 105 ++++- ...ngressDelegatePushDwSjAuditController.java | 162 +++++++ ...erCongressDelegatePushWriteController.java | 13 + ...CongressDelegatePushZgAuditController.java | 115 ++++- ...rCongressDelegateTransitionController.java | 135 +++--- .../models/TeacherCongressDelegatePush.java | 6 + .../TeacherCongressDelegatePushService.java | 5 + ...eacherCongressDelegatePushServiceImpl.java | 197 +++++++- ...cherCongressQuotaAllocationController.java | 4 +- .../Teacher_congress_quota_allocation.java | 6 +- .../delegate/manage/index.html | 19 +- .../delegate/push/auditInfo.js | 113 +++++ .../delegate/push/dwSjAudit.html | 295 ++++++++++++ .../teachercongress/delegate/push/index.html | 445 +++++++++--------- .../delegate/push/push-formal-dialog.js | 21 +- .../delegate/push/push-progress.js | 149 ++++-- .../teachercongress/delegate/push/write.js | 369 ++++++++------- .../delegate/push/zcAudit.html | 95 +++- .../prepare/quotaAllocation/index.html | 11 +- .../quotaAllocation/manualAllocationDialog.js | 69 ++- 23 files changed, 1869 insertions(+), 567 deletions(-) create mode 100644 src/main/java/com/budwk/app/flow/handler/FlowAssignUserHandler.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/dwSjAudit.html 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..0223aa5 --- /dev/null +++ b/src/main/java/com/budwk/app/flow/handler/FlowAssignUserHandler.java @@ -0,0 +1,34 @@ +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 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/FlowUnitPartySecretaryHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowUnitPartySecretaryHandler.java index 940f808..9b71421 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowUnitPartySecretaryHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowUnitPartySecretaryHandler.java @@ -6,8 +6,10 @@ 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_unit; import com.budwk.app.sys.models.Sys_user_role; import com.budwk.app.sys.services.SysRoleService; +import com.budwk.app.sys.views.View_user; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; @@ -31,11 +33,23 @@ public class FlowUnitPartySecretaryHandler implements AssignmentHandler { SysRoleService sysRoleService = ServiceContext.find(SysRoleService.class); Sys_role role = sysRoleService.getByCode(RoleConstant.UNIT_PARTY_SECRETARY); - 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) - ); + View_user user = ServiceContext.find(Dao.class).fetch(View_user.class, Cnd.where(View_user::getId, "=", SecurityUtil.getUserId())); + List roles; + if(user.getUnionName().contains("行政")){ + List unitList = ServiceContext.find(Dao.class).query(Sys_unit.class, Cnd.where(Sys_unit::getUnionId, "=", user.getUnionId())); + List unitIds = unitList.stream().map(Sys_unit::getId).toList(); + roles = ServiceContext.find(Dao.class).query( + Sys_user_role.class, + Cnd.where(Sys_user_role::getRoleId, "=", role.getId()) + .and(Sys_user_role::getUnitId, "in", unitIds) + ); + }else{ + 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("当前登录用户所在单位未设置单位党委书记,请联系校工会进行设置。"); @@ -45,7 +59,7 @@ public class FlowUnitPartySecretaryHandler implements AssignmentHandler { @Override public String getMessage() { - return "获取当前登录用户所在单位党委书记"; + return "获取当前登录用户所在单位党委书记,若是行政就找出行政分下的党委书记。因为行政只有一个党委书记"; } @Override diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegateManageController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegateManageController.java index b846de9..1b8ac93 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegateManageController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegateManageController.java @@ -25,6 +25,7 @@ import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_con import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.*; import com.budwk.app.zhgh.democratic.teachercongress.delegate.service.TeacherCongressDelegateService; import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation; +import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation_union; import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation_unit; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -479,4 +480,45 @@ public class TeacherCongressDelegateManageController { } + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("tc.delegate.manage") + public Result doAllocateDelegation(String sessionId) { + List delegateList = dao.query(Teacher_congress_delegate.class, + Cnd.where(Teacher_congress_delegate::getSessionId, "=", sessionId) + .and(Teacher_congress_delegate::getDelegationId, "is", null)); + + for (Teacher_congress_delegate delegate : delegateList) { + Teacher_congress_delegation_unit delegation_unit = dao.fetch(Teacher_congress_delegation_unit.class, + Cnd.where(Teacher_congress_delegation_unit::getUnitId, "=", delegate.getUnitId()) + .and(Teacher_congress_delegation_union::getSessionId, "=", sessionId)); + if (ObjectUtil.isNotEmpty(delegation_unit)) { + delegate.setDelegationId(delegation_unit.getDelegationId()); + dao.update(delegate); + Sys_user_role userRole = new Sys_user_role(); + userRole.setTcDelegationId(delegation_unit.getDelegationId()); + userRole.setUserId(delegate.getUserId()); + userRole.setTcSessionId(delegate.getSessionId()); + Sys_role sys_role = dao.fetch(Sys_role.class, Cnd.where(Sys_role::getCode, "=", RoleConstant.TEACHER_CONGRESS_DELEGATE_FORMAL.name())); + + if (sys_role.getId().equals(delegate.getRoleId())) { + delegate.setRoleId(sys_role.getId()); + userRole.setRoleId(sys_role.getId()); + } + + Sys_role sys_role2 = dao.fetch(Sys_role.class, Cnd.where(Sys_role::getCode, "=", RoleConstant.TEACHER_CONGRESS_DELEGATE_ATTENDANCE.name())); + if (sys_role2.getId().equals(delegate.getRoleId())) { + delegate.setRoleId(sys_role2.getId()); + userRole.setRoleId(sys_role2.getId()); + } + userRole.setTcDelegationId(delegate.getDelegationId()); + dao.insert(userRole); + } + sysUserService.clearCache(); + } + return Result.success(); + } + + + } 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 e40b01a..ccabccd 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 @@ -1,6 +1,7 @@ package com.budwk.app.zhgh.democratic.teachercongress.delegate.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; @@ -16,8 +17,8 @@ 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.ProcessInstanceStateEnum; import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; -import com.budwk.app.flow.enums.ProcessTaskStateEnum; 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; @@ -124,9 +125,15 @@ public class TeacherCongressDelegatePushController { cnd.and(group); } cnd.desc("info.createdAt"); - if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) { - cnd.and("info.createdBy", "=", SecurityUtil.getUserId()); + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { + if (AuthUtil.hasRole(RoleConstant.UNIT_PARTY_SECRETARY.name())){ + cnd.andEX("info.unionId", "=", SecurityUtil.getUnionId()); + }else{ + cnd.and("info.createdBy", "=", SecurityUtil.getUserId()); + } + } + cnd.groupBy("info.id"); sql.setCondition(cnd); Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return Result.success(pagination); @@ -172,7 +179,7 @@ public class TeacherCongressDelegatePushController { """); sql.setParam("sessionId", sessionId); Cnd cnd = Cnd.NEW(); - cnd.and("u.member", "=", 1); +// cnd.and("u.member", "=", 1); cnd.and("u.username", "is not", null); cnd.andEX("u.id", "not in", userIds); cnd.and("tcd.userId", "is", null); @@ -326,7 +333,9 @@ public class TeacherCongressDelegatePushController { // 已上报专任教师人数 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(); +// int under45 = (int) writeList.stream().filter(v -> Convert.toInt(v.getInt("age"), 0) <= 45).count(); + //已上报聘用制人员 + int employ = (int) writeList.stream().filter(v -> v.getBoolean("employ")).count(); StringBuffer tips = new StringBuffer(); @@ -352,8 +361,12 @@ public class TeacherCongressDelegatePushController { tips.append("女教师代表数不满足分配名额数!"); } - if (under45 < allocation.getLess45Num()) { - tips.append("45岁以下教师代表数不满足分配名额数!"); +// if (under45 < allocation.getLess45Num()) { +// tips.append("45岁以下教师代表数不满足分配名额数!"); +// } + + if (employ < allocation.getEmployNum()) { + tips.append("聘用制代表数不满足分配名额数!"); } if (StrUtil.isNotBlank(tips)) { @@ -366,11 +379,14 @@ public class TeacherCongressDelegatePushController { @At @ApiOperation("本单位代表上报情况") - @SaCheckPermission("tc.delegate.push") + @SaCheckPermission(value = {"tc.delegate.push","tc.delegate.push.dwSjAudit"}, mode = SaMode.OR) public Result selfUnionPushMetric(String sessionId, String unionId) { if (StrUtil.isBlank(unionId)) { unionId = SecurityUtil.getUnionId(); } + if (SecurityUtil.getUserLoginname().equals("004474")) { + unionId = "39de17920d6948f08b8175d4b87b5cec"; + } Teacher_congress_quota_allocation allocation = dao.fetch(Teacher_congress_quota_allocation.class, Cnd.where(Teacher_congress_quota_allocation::getSessionId, "=", sessionId) @@ -378,14 +394,37 @@ public class TeacherCongressDelegatePushController { if (allocation == null) { return Result.success(); } - Sql sql = Sqls.create(""" + SELECT + info.* + 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 + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.andEX("info.unionId", "=", unionId); + SqlExpressionGroup group = new SqlExpressionGroup(); + group.or("t.taskName", "=", "0cacd1e7-7bb2-47dd-818b-6a73062e0c62"); + group.or("t.taskName", "=", "c9227a2f-7b73-4549-b1f7-aa4779b31378"); + group.or("t.taskName", "=", "900217e4-4332-4a21-90dd-363b8be17801"); + group.or("t.taskName", "is", null); + cnd.and(group); + cnd.and("ins.state", "!=", ProcessInstanceStateEnum.REJECT.getCode()); + cnd.andEX("info.sessionId", "=", sessionId); + cnd.andEX("info.schoolLeader", "!=", 1); + cnd.andEX("info.representativeType", "=", "正式代表"); + sql.setCondition(cnd); + List writeList = baseService.listMap(sql); + /* Sql sql = Sqls.create(""" SELECT info.*, ins.id AS instanceId, ins.businessNo, ins.state instanceState, - ins.variable instanceVariale, + ins.variable instanceVariable, ins.processDefineId instanceProcessDefineId, t.id taskId, t.taskName AS taskKey, @@ -395,23 +434,27 @@ public class TeacherCongressDelegatePushController { t.taskState, t.finishTime, t.taskParentId, - t.variable taskVariale, - IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke, - (SELECT MAX(id) FROM wf_process_task WHERE processInstanceId = ins.id AND taskName = 'startTask' AND taskState IN (10, 20)) AS startTaskId + t.variable taskVariable, + IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName, + IF(rt.id IS NOT NULL, 1, 0) AS canRevoke 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 + 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", "=", "0cacd1e7-7bb2-47dd-818b-6a73062e0c62"); + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); cnd.andEX("info.sessionId", "=", sessionId); cnd.andEX("info.unionId", "=", unionId); cnd.andEX("info.representativeType", "=", "正式代表"); - cnd.and("ins.state", "=", ProcessTaskStateEnum.FINISHED.getCode()); + cnd.groupBy("t.id"); sql.setCondition(cnd); - List writeList = baseService.listMap(sql); + List writeList = baseService.listMap(sql);*/ // 上报总人数 @@ -436,6 +479,8 @@ public class TeacherCongressDelegatePushController { long schoolLeader = writeList.stream().filter(v -> v.getBoolean("schoolLeader")).count(); // 中层领导数 long middleLevelLeader = writeList.stream().filter(v -> v.getBoolean("middleLevelLeader")).count(); + // 聘用制 + int employ = (int) writeList.stream().filter(v -> v.getBoolean("employ")).count(); HashMap hashMap = new HashMap<>(); @@ -478,7 +523,7 @@ public class TeacherCongressDelegatePushController { workerMap.put("current", worker); workerMap.put("target", allocation.getWorkerNum()); workerMap.put("progress", allocation.getWorkerNum() != 0 ? (double) worker / allocation.getWorkerNum() : 0.0); - workerMap.put("remaining", allocation.getWorkerNum() - cadre); + workerMap.put("remaining", allocation.getWorkerNum() - worker); hashMap.put("worker", workerMap); HashMap ordinaryTeaMap = new HashMap<>(); @@ -488,12 +533,20 @@ public class TeacherCongressDelegatePushController { ordinaryTeaMap.put("remaining", allocation.getOrdinaryTeaNum() - ordinaryTeacher); hashMap.put("ordinaryTeacher", ordinaryTeaMap); - HashMap under45Map = new HashMap<>(); - under45Map.put("current", under45); - under45Map.put("target", allocation.getLess45Num()); - under45Map.put("progress", allocation.getLess45Num() != 0 ? (double) under45 / allocation.getLess45Num() : 0.0); - under45Map.put("remaining", allocation.getLess45Num() - under45); - hashMap.put("under45", under45Map); +// HashMap under45Map = new HashMap<>(); +// under45Map.put("current", under45); +// under45Map.put("target", allocation.getLess45Num()); +// under45Map.put("progress", allocation.getLess45Num() != 0 ? (double) under45 / allocation.getLess45Num() : 0.0); +// under45Map.put("remaining", allocation.getLess45Num() - under45); +// hashMap.put("under45", under45Map); + + // 聘用制 + HashMap employMap = new HashMap<>(); + employMap.put("current", employ); + employMap.put("target", allocation.getEmployNum()); + employMap.put("progress", allocation.getEmployNum() != 0 ? (double) employ / allocation.getEmployNum() : 0.0); + employMap.put("remaining", allocation.getEmployNum() - employ); + hashMap.put("employ", employMap); /* HashMap ethnicMinorityMap = new HashMap<>(); ethnicMinorityMap.put("current", (int) ethnicMinority); 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..7fb6741 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegatePushDwSjAuditController.java @@ -0,0 +1,162 @@ +package com.budwk.app.zhgh.democratic.teachercongress.delegate.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +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.engine.FlowEngine; +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.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/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", "=", "0cacd1e7-7bb2-47dd-818b-6a73062e0c62"); + 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("党委书记提交") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("tc.delegate.push.dwSjAudit") + public Result batchSubmit(String sessionId) { + String unionId = SecurityUtil.getUnionId(); + if (SecurityUtil.getUserLoginname().equals("004474")) { + unionId = "39de17920d6948f08b8175d4b87b5cec"; + } + + String str = teacherCongressDelegatePushService.batchSubmitWhere(sessionId, unionId); + if (StrUtil.isNotBlank(str)) { + return Result.error(str); + } + teacherCongressDelegatePushService.batchSubmit(unionId, sessionId); + + return Result.success(); + } + + +} 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..db8b907 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 @@ -14,10 +14,12 @@ 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; @@ -124,4 +126,15 @@ public class TeacherCongressDelegatePushWriteController { } + + @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 5e09f44..e0de9c6 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 @@ -6,8 +6,8 @@ import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.lang.Dict; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; @@ -19,16 +19,16 @@ import com.budwk.app.base.utils.PageUtil; import com.budwk.app.flow.enums.ProcessTaskStateEnum; import com.budwk.app.flow.service.FlowCommonService; import com.budwk.app.sys.models.Sys_role; +import com.budwk.app.sys.models.Sys_user; import com.budwk.app.sys.models.Sys_user_role; import com.budwk.app.sys.views.View_user; import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.TeacherCongressDelegatePush; import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate; -import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation_union; -import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation_unit; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Workbook; import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; @@ -46,6 +46,9 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; /** * @author zhf @@ -228,16 +231,16 @@ public class TeacherCongressDelegatePushZgAuditController { delegate.setSessionId(delegatePush.getSessionId()); - Teacher_congress_delegation_unit delegation_unit = baseService.dao().fetch(Teacher_congress_delegation_unit.class, + /*Teacher_congress_delegation_unit delegation_unit = baseService.dao().fetch(Teacher_congress_delegation_unit.class, Cnd.where(Teacher_congress_delegation_unit::getUnitId, "=", user.getUnitId()) .and(Teacher_congress_delegation_union::getSessionId, "=", delegatePush.getSessionId())); if (ObjectUtil.isNotEmpty(delegation_unit)) { - delegate.setDelegationId(delegation_unit.getId()); - userRole.setTcDelegationId(delegation_unit.getId()); + delegate.setDelegationId(delegation_unit.getDelegationId()); + userRole.setTcDelegationId(delegation_unit.getDelegationId()); } else { return Result.error(user.getUnitName() + "没有设置到代表团,请先在代表团管理里设置。"); - } + }*/ if ("正式代表".equals(delegatePush.getRepresentativeType())) { Sys_role sys_role = baseService.dao().fetch(Sys_role.class, Cnd.where(Sys_role::getCode, "=", RoleConstant.TEACHER_CONGRESS_DELEGATE_FORMAL.name())); delegate.setRoleId(sys_role.getId()); @@ -246,14 +249,19 @@ public class TeacherCongressDelegatePushZgAuditController { if ("列席代表".equals(delegatePush.getRepresentativeType())) { Sys_role sys_role = baseService.dao().fetch(Sys_role.class, Cnd.where(Sys_role::getCode, "=", RoleConstant.TEACHER_CONGRESS_DELEGATE_ATTENDANCE.name())); delegate.setRoleId(sys_role.getId()); - delegate.setRoleId(sys_role.getId()); userRole.setRoleId(sys_role.getId()); } userRole.setUserId(user.getId()); userRole.setTcSessionId(delegatePush.getSessionId()); baseService.dao().insert(delegate); - baseService.dao().insert(userRole); +// baseService.dao().insert(userRole); + // 去改改用户表的手机号 + baseService.dao().update( + Sys_user.class, + Chain.make("mobile", delegatePush.getMobile()), + Cnd.where(Sys_user::getId, "=", user.getId()) + ); } Dict args = Json.fromJson(Dict.class, param); flowCommonService.executeTask(args); @@ -261,4 +269,93 @@ public class TeacherCongressDelegatePushZgAuditController { } + + @At + @ApiOperation("批量审查") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("tc.delegate.push.zcAudit") + @SLog(tag = "代表管理-代表资格批量审查", msg = "批量审查") + public Result submitBatch(@Param("data") String param) { + List list = JSONUtil.parseArray(param).toList(NutMap.class); + + // 审核的 id 列表 Map + Map dataMap = list.stream().collect(Collectors.toMap(v -> v.getString("id"), v -> v)); + Set idKeySet = dataMap.keySet(); + + List pushList = baseService.dao().query( + TeacherCongressDelegatePush.class, + Cnd.where(TeacherCongressDelegatePush::getId, "in", idKeySet) + ); + + List userIdList = pushList.stream().map(TeacherCongressDelegatePush::getUserId).toList(); + + Map userMap = baseService.dao().query(View_user.class, Cnd.where("id", "in", userIdList)) + .stream().collect(Collectors.toMap(View_user::getId, v -> v)); + + // 去循环审核数据 + for (TeacherCongressDelegatePush delegatePush : pushList) { + View_user user = userMap.get(delegatePush.getUserId()); + + if (delegatePush.getIsJdh()) { + Teacher_congress_delegate delegate = new Teacher_congress_delegate(); + Sys_user_role userRole = new Sys_user_role(); + + delegate.setUserId(user.getId()); + delegate.setLoginName(user.getLoginname()); + delegate.setUserName(user.getUsername()); + delegate.setSex(user.getSex()); + delegate.setAge(delegatePush.getAge()); + delegate.setMobile(user.getMobile()); + delegate.setUnitId(user.getUnitId()); + delegate.setUnitName(user.getUnitName()); + delegate.setUnionId(user.getUnionId()); + delegate.setUnionName(user.getUnionName()); + + delegate.setSessionId(delegatePush.getSessionId()); + + /*Teacher_congress_delegation_unit delegation_unit = baseService.dao().fetch(Teacher_congress_delegation_unit.class, + Cnd.where(Teacher_congress_delegation_unit::getUnitId, "=", user.getUnitId()) + .and(Teacher_congress_delegation_union::getSessionId, "=", delegatePush.getSessionId())); + + if (ObjectUtil.isNotEmpty(delegation_unit)) { + delegate.setDelegationId(delegation_unit.getDelegationId()); + userRole.setTcDelegationId(delegation_unit.getDelegationId()); + } else { + return Result.error(user.getUnitName() + "没有设置到代表团,请先在代表团管理里设置。"); + }*/ + if ("正式代表".equals(delegatePush.getRepresentativeType())) { + Sys_role sys_role = baseService.dao().fetch(Sys_role.class, Cnd.where(Sys_role::getCode, "=", RoleConstant.TEACHER_CONGRESS_DELEGATE_FORMAL.name())); + delegate.setRoleId(sys_role.getId()); + userRole.setRoleId(sys_role.getId()); + } + if ("列席代表".equals(delegatePush.getRepresentativeType())) { + Sys_role sys_role = baseService.dao().fetch(Sys_role.class, Cnd.where(Sys_role::getCode, "=", RoleConstant.TEACHER_CONGRESS_DELEGATE_ATTENDANCE.name())); + delegate.setRoleId(sys_role.getId()); + userRole.setRoleId(sys_role.getId()); + } + userRole.setUserId(user.getId()); + userRole.setTcSessionId(delegatePush.getSessionId()); + + baseService.dao().insert(delegate); + + // 去改改用户表的手机号 + baseService.dao().update( + Sys_user.class, + Chain.make("mobile", delegatePush.getMobile()), + Cnd.where(Sys_user::getId, "=", user.getId()) + ); + + NutMap nutMap = dataMap.get(delegatePush.getId()); + + Dict args = Dict.create(); + args.set("processTaskId", nutMap.getString("processTaskId")); + args.set("taskName", nutMap.getString("taskName")); + args.set("submitType", nutMap.getString("submitType")); + flowCommonService.executeTask(args); + } + } + + return Result.success(); + } + } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegateTransitionController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegateTransitionController.java index 380a6d1..06ac2b3 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegateTransitionController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/controller/TeacherCongressDelegateTransitionController.java @@ -13,6 +13,7 @@ import com.deepoove.poi.config.Configure; import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy; 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.ioc.loader.annotation.Inject; @@ -29,6 +30,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +@Slf4j @IocBean @At("/platform/zhgh/democratic/teacherCongress/delegate/transition") @Api(tags = "教代会代表换届变动信息") @@ -50,72 +52,77 @@ public class TeacherCongressDelegateTransitionController { @At @SaCheckPermission("tc.delegate.transition") public Result pageData(String sessionId) { - // 当前届次 - Teacher_congress_session session = dao.fetch(Teacher_congress_session.class, sessionId); - // 上一届次 - Teacher_congress_session lastSession = dao.fetch(Teacher_congress_session.class, Cnd.where(Teacher_congress_session::getStartDate, "<", session.getStartDate()).desc(Teacher_congress_session::getStartDate)); - // 当前届次代表团 - List delegations = dao.query(Teacher_congress_delegation.class, Cnd.where(Teacher_congress_delegation::getSessionId, "=", sessionId).asc(Teacher_congress_delegation::getCode)); + try { + // 当前届次 + Teacher_congress_session session = dao.fetch(Teacher_congress_session.class, sessionId); + // 上一届次 + Teacher_congress_session lastSession = dao.fetch(Teacher_congress_session.class, Cnd.where(Teacher_congress_session::getStartDate, "<", session.getStartDate()).desc(Teacher_congress_session::getStartDate)); + // 当前届次代表团 + List delegations = dao.query(Teacher_congress_delegation.class, Cnd.where(Teacher_congress_delegation::getSessionId, "=", sessionId).asc(Teacher_congress_delegation::getCode)); - // 当前届次代表 - List delegates = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", sessionId)); - dao.fetchLinks(delegates, "delegation"); - // 上一届次代表 - List lastDelegates; - if (lastSession != null) { - lastDelegates = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", lastSession.getId())); - dao.fetchLinks(lastDelegates, "delegation"); - } else { - lastDelegates = new ArrayList<>(); + // 当前届次代表 + List delegates = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", sessionId)); + dao.fetchLinks(delegates, "delegation"); + // 上一届次代表 + List lastDelegates; + if (lastSession != null) { + lastDelegates = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", lastSession.getId())); + dao.fetchLinks(lastDelegates, "delegation"); + } else { + lastDelegates = new ArrayList<>(); + } + + // 代表数据 + List delegateFull = delegates.stream().map(delegate -> { + NutMap delegateMap = NutMap.NEW(); + delegateMap.put("userId", delegate.getUserId()); + delegateMap.put("userName", delegate.getUserName()); + + // 本届次代表团信息 + delegateMap.put("delegationId", delegate.getDelegationId()); + delegateMap.put("delegationName", delegate.getDelegation().getName()); + delegateMap.put("delegationCode", delegate.getDelegation().getCode()); + + // 上一届次代表团信息 + lastDelegates.stream().filter(lastDelegate -> lastDelegate.getUserId().equals(delegate.getUserId())).findFirst().ifPresentOrElse(lastDelegate -> { + delegateMap.put("lastDelegationId", lastDelegate.getDelegationId()); + delegateMap.put("lastDelegationName", lastDelegate.getDelegation().getName()); + delegateMap.put("lastDelegationCode", lastDelegate.getDelegation().getCode()); + }, () -> { + delegateMap.put("lastDelegationId", ""); + delegateMap.put("lastDelegationName", ""); + delegateMap.put("lastDelegationCode", ""); + }); + + return delegateMap; + }).toList(); + + + List list = delegations.stream().map(delegation -> { + NutMap map = NutMap.NEW(); + map.put("id", delegation.getId()); + map.put("name", delegation.getName()); + map.put("code", delegation.getCode()); + // 上一届次人数 + map.put("lastCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode())).count()); + // 增补代表数 (上一届次不是代表 但是本届次是代表) + map.put("addCount", delegateFull.stream().filter(delegate -> StrUtil.isBlank(delegate.getString("lastDelegationCode")) && delegate.getString("delegationCode").equals(delegation.getCode())).count()); + // 转入代表数 (上一届次是代表 但是在别的代表团) + map.put("transferCount", delegateFull.stream().filter(delegate -> StrUtil.isNotBlank(delegate.getString("lastDelegationCode")) && !delegate.getString("lastDelegationCode").equals(delegation.getCode()) && delegate.getString("delegationCode").equals(delegation.getCode())).count()); + // 转出代表数 (上一届次在本团 本届次转出去了) + map.put("transferOutCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode()) && StrUtil.isNotBlank(delegate.getString("delegationCode")) && !delegate.getString("delegationCode").equals(delegation.getCode())).count()); + // 减少代表数 (上一届次是代表 本届次不是代表) + map.put("reduceCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode()) && StrUtil.isBlank(delegate.getString("delegationCode"))).count()); + // 当前代表数 + map.put("currentCount", delegateFull.stream().filter(delegate -> delegate.getString("delegationCode").equals(delegation.getCode())).count()); + return map; + }).toList(); + + return Result.success(list); + } catch (Exception e) { + log.error(e.getMessage()); + return Result.success(); } - - // 代表数据 - List delegateFull = delegates.stream().map(delegate -> { - NutMap delegateMap = NutMap.NEW(); - delegateMap.put("userId", delegate.getUserId()); - delegateMap.put("userName", delegate.getUserName()); - - // 本届次代表团信息 - delegateMap.put("delegationId", delegate.getDelegationId()); - delegateMap.put("delegationName", delegate.getDelegation().getName()); - delegateMap.put("delegationCode", delegate.getDelegation().getCode()); - - // 上一届次代表团信息 - lastDelegates.stream().filter(lastDelegate -> lastDelegate.getUserId().equals(delegate.getUserId())).findFirst().ifPresentOrElse(lastDelegate -> { - delegateMap.put("lastDelegationId", lastDelegate.getDelegationId()); - delegateMap.put("lastDelegationName", lastDelegate.getDelegation().getName()); - delegateMap.put("lastDelegationCode", lastDelegate.getDelegation().getCode()); - }, () -> { - delegateMap.put("lastDelegationId", ""); - delegateMap.put("lastDelegationName", ""); - delegateMap.put("lastDelegationCode", ""); - }); - - return delegateMap; - }).toList(); - - - List list = delegations.stream().map(delegation -> { - NutMap map = NutMap.NEW(); - map.put("id", delegation.getId()); - map.put("name", delegation.getName()); - map.put("code", delegation.getCode()); - // 上一届次人数 - map.put("lastCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode())).count()); - // 增补代表数 (上一届次不是代表 但是本届次是代表) - map.put("addCount", delegateFull.stream().filter(delegate -> StrUtil.isBlank(delegate.getString("lastDelegationCode")) && delegate.getString("delegationCode").equals(delegation.getCode())).count()); - // 转入代表数 (上一届次是代表 但是在别的代表团) - map.put("transferCount", delegateFull.stream().filter(delegate -> StrUtil.isNotBlank(delegate.getString("lastDelegationCode")) && !delegate.getString("lastDelegationCode").equals(delegation.getCode()) && delegate.getString("delegationCode").equals(delegation.getCode())).count()); - // 转出代表数 (上一届次在本团 本届次转出去了) - map.put("transferOutCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode()) && StrUtil.isNotBlank(delegate.getString("delegationCode")) && !delegate.getString("delegationCode").equals(delegation.getCode())).count()); - // 减少代表数 (上一届次是代表 本届次不是代表) - map.put("reduceCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode()) && StrUtil.isBlank(delegate.getString("delegationCode"))).count()); - // 当前代表数 - map.put("currentCount", delegateFull.stream().filter(delegate -> delegate.getString("delegationCode").equals(delegation.getCode())).count()); - return map; - }).toList(); - - return Result.success(list); } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/models/TeacherCongressDelegatePush.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/models/TeacherCongressDelegatePush.java index 7343b00..94e1478 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/models/TeacherCongressDelegatePush.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/models/TeacherCongressDelegatePush.java @@ -135,6 +135,12 @@ public class TeacherCongressDelegatePush extends BaseModel { @Default("0") private Boolean middleLevelLeader; + @Column + @Comment("是否聘用制") + @ColDefine(type = ColType.BOOLEAN) + @Default("0") + private Boolean employ; + @Column @Comment("年龄") @ColDefine(type = ColType.INT) 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..55e5de9 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 @@ -7,4 +7,9 @@ public interface TeacherCongressDelegatePushService extends BaseService writeList = listMap(sql); + + if (!delegatePushList.isEmpty() && writeList.isEmpty()) { + return "您已提交无需再提交!"; + } + + + // 已上报总人数 + 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(); + // 聘用值代表 + int employ = (int) writeList.stream().filter(v -> v.getBoolean("employ")).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 (employ < allocation.getEmployNum()) { + tips.append("聘用制代表数不满足分配名额数!"); + } + + + if (StrUtil.isNotBlank(tips)) { + return tips.toString(); + } + return null; + } } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/controller/TeacherCongressQuotaAllocationController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/controller/TeacherCongressQuotaAllocationController.java index a022def..18fe2b7 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/controller/TeacherCongressQuotaAllocationController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/controller/TeacherCongressQuotaAllocationController.java @@ -63,6 +63,7 @@ public class TeacherCongressQuotaAllocationController { tcqa.workerNum, tcqa.femaleNum, tcqa.less45Num, + tcqa.employNum, COALESCE(u_count, 0) AS memberCount, COALESCE(db_count, 0) AS dbCount FROM @@ -102,7 +103,8 @@ public class TeacherCongressQuotaAllocationController { t2.cadreNum, t2.workerNum, t2.femaleNum, - t2.less45Num + t2.less45Num, + t2.employNum FROM `sys_union` un LEFT JOIN (SELECT unionId, COUNT(id) AS u_count FROM vw_user WHERE member = 1 GROUP BY unionId) u ON u.unionId = un.id diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/models/Teacher_congress_quota_allocation.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/models/Teacher_congress_quota_allocation.java index cce548e..59c0865 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/models/Teacher_congress_quota_allocation.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/models/Teacher_congress_quota_allocation.java @@ -89,6 +89,10 @@ public class Teacher_congress_quota_allocation extends BaseModel { @Default("0") private Integer less45Num; - + @Column + @Comment("聘用制代表数") + @ColDefine(type = ColType.INT, width = 4) + @Default("0") + private Integer employNum; } diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/manage/index.html b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/manage/index.html index 4aaffec..92a7506 100644 --- a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/manage/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/manage/index.html @@ -38,6 +38,9 @@ layout("/layouts/platform.html"){ + + 根据单位分配代表团 + 导入代表 新增代表 - + + + 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 5877310..42344ba 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,193 +2,211 @@ layout("/layouts/platform.html"){ #-->
- - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - + + + - - - 正式代表预选 - - 列席代表预选 - - + + + 正式代表预选 + + 列席代表预选 + + - 正式代表提交上报 - - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -