From fc673e5e4e47d72fdd86fc571f3c10efe1ed20a4 Mon Sep 17 00:00:00 2001 From: Paidax Date: Fri, 26 Jul 2024 10:26:18 +0800 Subject: [PATCH] commit --- .../check/MemberCheckSchoolController.java | 15 +- .../check/MemberCheckTaskController.java | 11 +- .../check/MemberCheckUnionController.java | 207 ++++++++-- .../views/platform/member/check/personal.html | 4 +- .../views/platform/member/check/school.html | 349 ++++++++--------- .../views/platform/member/check/task.html | 8 +- .../views/platform/member/check/union.html | 357 ++++++++---------- 7 files changed, 532 insertions(+), 419 deletions(-) diff --git a/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckSchoolController.java b/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckSchoolController.java index a77ce81..5eb92f9 100644 --- a/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckSchoolController.java +++ b/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckSchoolController.java @@ -1,6 +1,7 @@ package io.v.nutz.zhgh.member.controller.check; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.service.SimpleService; import io.v.nutz.base.utils.Roles; @@ -14,6 +15,7 @@ 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.json.Json; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; @@ -23,7 +25,7 @@ import java.util.List; import java.util.stream.Collectors; /** - * @FileName io.v.nutz.zhgh.member.controller.check.MemberCheckUnionController + * @FileName io.v.nutz.member.controller.check.MemberCheckUnionController * @Description: 校工会核对 * @Author zxc * @Date 2022/10/21:10:31 @@ -60,7 +62,7 @@ public class MemberCheckSchoolController { gh.unionname, mcut.isFinish, IF(mcut.isFinish is true,'是','否') as isFinishText, - ( SELECT COUNT( 1 ) FROM `user` WHERE welfareMember = 1 AND unionid=gh.id) memberNum, + ( SELECT COUNT( 1 ) FROM `user` WHERE member = 1 AND unionid=gh.id) memberNum, (SELECT COUNT( 1 ) FROM member_check_union_task WHERE unionid = gh.id and taskId=mcut.taskId ) unionGroupNum, (SELECT COUNT( 1 ) FROM member_check_union_task WHERE isFinish = false AND unionid = gh.id and taskId=mcut.taskId ) fouUnionGroupNum, (SELECT COUNT( 1 ) FROM member_check_union_task WHERE isFinish = true AND unionid = gh.id and taskId=mcut.taskId ) shiUnionGroupNum @@ -115,7 +117,10 @@ public class MemberCheckSchoolController { mcr.type changeType, mcr.applyTime changeTime, state.stateId, - state.stateName + state.stateName, + his.id hisId, + his.changeType, + his.changeTypes FROM member_change_record mcr LEFT JOIN `user` u ON u.id = mcr.userId @@ -131,7 +136,9 @@ public class MemberCheckSchoolController { sql.setParam("taskId", taskId); sql.setParam("unionId", unionId); sql.setParam("stateId", MemberChangeApplyState.SCHOOL_UNION); - return simpleService.listMap(sql); + List list = simpleService.listMap(sql); + return list; + } @At diff --git a/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckTaskController.java b/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckTaskController.java index ce5166a..c209fa9 100644 --- a/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckTaskController.java +++ b/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckTaskController.java @@ -3,6 +3,7 @@ package io.v.nutz.zhgh.member.controller.check; import cn.hutool.core.lang.Assert; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.service.SimpleService; +import io.v.nutz.sys.models.Sys_union; import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode; import io.v.nutz.zhgh.member.model.MemberChangeRecord; import io.v.nutz.zhgh.member.model.MemberCheckSelfTask; @@ -28,7 +29,7 @@ import java.util.List; import java.util.stream.Collectors; /** - * @FileName io.v.nutz.zhgh.member.controller.check.MemberCheckTaskController + * @FileName io.v.nutz.member.controller.check.MemberCheckTaskController * @Description: TODO * @Author zxc * @Date 2022/10/21:10:33 @@ -71,17 +72,16 @@ public class MemberCheckTaskController { public Object doAdd(MemberCheckTask task) { Calendar calendar = Calendar.getInstance(); calendar.setTime(task.getStartTime()); - List unionGroups = dao.query(SysUnionGroup.class, Cnd.NEW()); + List sysUnions = dao.query(Sys_union.class, null); Trans.exec(() -> { task.setYear(calendar.get(Calendar.YEAR)); task.setTaskMode(MemberChangeRecordMode.MEMBER.getCode()); dao.insert(task); if (task.getCreateTaskMode() == 1) { - List unionTasks = unionGroups.stream().map(v -> { + List unionTasks = sysUnions.stream().map(v -> { MemberCheckUnionTask unionTask = new MemberCheckUnionTask(); unionTask.setTaskId(task.getId()); - unionTask.setGroupUnionId(v.getId()); - unionTask.setUnionId(v.getUnionId()); + unionTask.setUnionId(v.getId()); unionTask.setIsFinish(false); return unionTask; }).collect(Collectors.toList()); @@ -151,6 +151,7 @@ public class MemberCheckTaskController { cnd.andEX("year", "=", year); cnd.and("createTaskMode", "=", 1); cnd.and("taskMode", "=", MemberChangeRecordMode.MEMBER.getCode()); + cnd.desc("year"); return dao.query(MemberCheckTask.class, cnd); } diff --git a/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckUnionController.java b/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckUnionController.java index f9cfc9f..97d0045 100644 --- a/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckUnionController.java +++ b/src/main/java/io/v/nutz/zhgh/member/controller/check/MemberCheckUnionController.java @@ -1,10 +1,13 @@ package io.v.nutz.zhgh.member.controller.check; +import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.base.Result; import com.google.common.base.Joiner; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.service.SimpleService; import io.v.nutz.base.utils.Vi; +import io.v.nutz.sys.models.Sys_config; +import io.v.nutz.zhgh.data.constant.UserChangeType; import io.v.nutz.zhgh.member.constant.MemberChangeApplyState; import io.v.nutz.zhgh.member.constant.MemberChangeOrigin; import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode; @@ -30,9 +33,11 @@ import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import java.util.List; +import java.util.Objects; +import java.util.Optional; /** - * @FileName io.v.nutz.zhgh.member.controller.check.MemberCheckUnionController + * @FileName io.v.nutz.member.controller.check.MemberCheckUnionController * @Description: 院级工会核对 * @Author zxc * @Date 2022/10/21:10:31 @@ -65,11 +70,31 @@ public class MemberCheckUnionController { @Param(value = "changed", required = false) Integer changed, @Param(value = "isMember", required = false) Integer isMember, @Param(value = "unionGroupId", required = false) String unionGroupId, - @Param(value = "threeUnitId", required = false) String threeUnitId) { + @Param(value = "threeUnitId", required = false) String threeUnitId, + @Param(value = "userStates", required = false) String[] userStates, + @Param(value = "personTypes", required = false) String[] personTypes, + @Param(value = "changeTypes", required = false) Integer[] changeTypes, + @Param(value = "changeOrigin", required = false) Integer[] changeOrigins + ) { Sql sql = Sqls.create(""" select - u.*, + u.id, + u.loginname, + u.username, + u.sex, + u.birthday, + u.personType, + u.userState, + u.unionname, + u.unitname, + u.threeUnitName, + u.unionGroupName, + u.mobile, + u.idcard, + u.member, + his.id hisId, his.changeType, + his.changeTypes, his.changeTime, state.stateId, state.stateName, @@ -83,7 +108,7 @@ public class MemberCheckUnionController { $condition """); Cnd cnd = Cnd.NEW(); - if (!ShiroUtil.hasAnyRoles("sysadmin,H03,A06")) { + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin,SchoolUnionWelfareAdmin")) { if (ShiroUtil.hasRole("H04")) { cnd.and("u.unionId", "=", Vi.getUnionId()); } else if (ShiroUtil.hasRole("ghxzzz")) { @@ -99,18 +124,56 @@ public class MemberCheckUnionController { cnd.andEX("u.unitid", "=", unitId); cnd.andEX("u.unionGroupId", "=", unionGroupId); cnd.andEX("u.threeUnitId", "=", threeUnitId); -// cnd.and("mcr.recordMode", "=", MemberChangeRecordMode.MEMBER.getCode()); cnd.and(Cnd.likeEX("u." + pageForm.getSearchName(), pageForm.getSearchKeyword())); cnd.andEX("u.member", "=", isMember); if (changed != null) { if (changed == 1) { - cnd.and(new Static("his.changeType is not null")); + cnd.and(new Static("his.changeTypes is not null")); } else { - cnd.and(new Static("his.changeType is null")); + cnd.and(new Static("his.changeTypes is null")); } } - cnd.desc("his.changeTime"); + + if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.orderBy(pageForm.getPageOrderName(), "ascending".equals(pageForm.getPageOrderBy()) ? "asc" : "desc"); + } else { + cnd.desc("changeTime"); + } + + if (org.nutz.lang.Lang.isNotEmpty(changeTypes)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (Integer type : changeTypes) { + seg.or(new Static("JSON_CONTAINS(his.changeTypes, CAST(%d AS JSON), '$')".formatted(type))); + } + cnd.and(seg); + } + + if (org.nutz.lang.Lang.isNotEmpty(userStates)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (String state : userStates) { + seg.orEquals("u.userState", state); + } + cnd.and(seg); + } + + if (org.nutz.lang.Lang.isNotEmpty(personTypes)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (String personType : personTypes) { + seg.orEquals("u.personType", personType); + } + cnd.and(seg); + } + + if (org.nutz.lang.Lang.isNotEmpty(changeOrigins)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (Integer c : changeOrigins) { + seg.orEquals("u.changeOrigin", c); + } + cnd.and(seg); + } + + sql.setCondition(cnd); sql.setParam("success", MemberChangeApplyState.SUCCESS); sql.setVar("failStates", Joiner.on(",").join(List.of(MemberChangeApplyState.UNION_FAIL, MemberChangeApplyState.SCHOOL_UNION_FAIL))); @@ -121,10 +184,17 @@ public class MemberCheckUnionController { @At @ViReturn @RequiresPermissions("member.check.union") - public Object getButtonNum(@Param(value = "unionId", required = false) String unionId, - @Param(value = "unitId", required = false) String unitId, - @Param(value = "unionGroupId", required = false) String unionGroupId, - @Param(value = "threeUnitId", required = false) String threeUnitId) { + public Object getButtonNum( + @Param(value = "isMember", required = false) Integer isMember, + @Param(value = "unionId", required = false) String unionId, + @Param(value = "unitId", required = false) String unitId, + @Param(value = "unionGroupId", required = false) String unionGroupId, + @Param(value = "threeUnitId", required = false) String threeUnitId, + @Param(value = "userStates", required = false) String[] userStates, + @Param(value = "personTypes", required = false) String[] personTypes, + @Param(value = "changeTypes", required = false) Integer[] changeTypes, + @Param(value = "changeOrigin", required = false) Integer[] changeOrigins + ) { Sql sql = Sqls.create(""" select (sum( CASE WHEN his.changeType IS NOT NULL THEN 1 ELSE 0 END )) as 'changeNum', @@ -140,7 +210,7 @@ public class MemberCheckUnionController { $condition """); Cnd cnd = Cnd.NEW(); - if (!ShiroUtil.hasAnyRoles("sysadmin,H03,A06")) { + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin,SchoolUnionWelfareAdmin")) { if (ShiroUtil.hasRole("H04")) { cnd.and("u.unionId", "=", Vi.getUnionId()); } else if (ShiroUtil.hasRole("ghxzzz")) { @@ -156,6 +226,40 @@ public class MemberCheckUnionController { cnd.andEX("u.threeUnitId", "=", threeUnitId); cnd.andEX("u.unionid", "=", unionId); cnd.andEX("u.unitid", "=", unitId); + cnd.andEX("u.member", "=", isMember); + + if (org.nutz.lang.Lang.isNotEmpty(changeTypes)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (Integer type : changeTypes) { + seg.or(new Static("JSON_CONTAINS(his.changeTypes, CAST(%d AS JSON), '$')".formatted(type))); + } + cnd.and(seg); + } + + if (org.nutz.lang.Lang.isNotEmpty(userStates)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (String state : userStates) { + seg.orEquals("u.userState", state); + } + cnd.and(seg); + } + + if (org.nutz.lang.Lang.isNotEmpty(personTypes)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (String personType : personTypes) { + seg.orEquals("u.personType", personType); + } + cnd.and(seg); + } + + if (org.nutz.lang.Lang.isNotEmpty(changeOrigins)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + for (Integer c : changeOrigins) { + seg.orEquals("u.changeOrigin", c); + } + cnd.and(seg); + } + sql.setCondition(cnd); sql.setParam("success", MemberChangeApplyState.SUCCESS); sql.setVar("failStates", Joiner.on(",").join(List.of(MemberChangeApplyState.UNION_FAIL, MemberChangeApplyState.SCHOOL_UNION_FAIL))); @@ -166,15 +270,12 @@ public class MemberCheckUnionController { @At @ViReturn @RequiresPermissions("member.check.union") - public Object submitCheck(String taskId, @Param(value = "unionGroupId", required = false) String unionGroupId) { - if (Lang.isEmpty(io.v.nutz.web.commons.utils.ShiroUtil.getUnionGroupIds())) { - return Result.error("请联系管理员,该用户角色错误"); - } + public Object submitCheck(String taskId, @Param(value = "unionid", required = false) String unionid) { Cnd cnd = Cnd.NEW(); - if (!ShiroUtil.hasAnyRoles("sysadmin,A06,H03")) { - cnd.andEX("groupUnionId", "in", io.v.nutz.web.commons.utils.ShiroUtil.getUnionGroupIds()); + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin,SchoolUnionWelfareAdmin")) { + cnd.andEX("unionid", "=", Vi.getUnionId()); } - cnd.andEX("groupUnionId", "=", unionGroupId); + cnd.andEX("unionid", "=", unionid); cnd.and("taskId", "=", taskId); dao.update(MemberCheckUnionTask.class, Chain.make("isFinish", true), cnd); return null; @@ -183,17 +284,55 @@ public class MemberCheckUnionController { @At @ViReturn @RequiresPermissions("member.check.union") - public Object doSubmitChangeUser(MemberChangeRecord record) { - record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode()); - record.setApplyOrigin(MemberChangeOrigin.UNION_GROUP.getCode()); - record = MemberChangeAuditHandle.CREATE.next(record, null); + public Object doSubmitChangeUser(MemberChangeRecord memberChangeRecord) { + if (Objects.equals(memberChangeRecord.getType(), UserChangeType.NEW.getCode())) { + return Result.error("您已经入职,可以选择恢复功能入会!"); + } + if (Objects.equals(memberChangeRecord.getType(), UserChangeType.UNIT_CHANGE.getCode())) { + boolean unionGroupEnable = Optional.ofNullable(dao.fetch(Sys_config.class, Cnd.where("configKey", "=", "isThreeUnit"))).map(v -> v.getConfigValue()).orElse("false").equals("true"); + + if (unionGroupEnable && memberChangeRecord.getCurrentThreeUnitId().equals(memberChangeRecord.getOriginThreeUnitId())) { + return Result.error("请选择不同的单位!"); + } else if (!unionGroupEnable && memberChangeRecord.getCurrentUnitId().equals(memberChangeRecord.getOriginUnitId())) { + return Result.error("请选择不同的单位!"); + } + } + if (!Objects.equals(memberChangeRecord.getType(), UserChangeType.UNIT_CHANGE.getCode())) { + memberChangeRecord.setCurrentUnitId(null); + memberChangeRecord.setCurrentUnionId(null); + } + + Sql userSql = Sqls.fetchString("select userState from sys_user where id = @userId"); + userSql.setParam("userId", memberChangeRecord.getUserId()); + dao.execute(userSql); + String userState = StrUtil.blankToDefault(userSql.getString(), ""); + + if (memberChangeRecord.getType() == UserChangeType.ON_DUTY.getCode()) { + if (userState.equals(UserChangeType.ON_DUTY.getDescription())) { + return Result.error("该用户当前的状态已经是" + UserChangeType.ON_DUTY.getDescription() + ",您无需变更!"); + } + } + if (memberChangeRecord.getType() == UserChangeType.RESIGN.getCode()) { + if (userState.equals(UserChangeType.RESIGN.getDescription())) { + return Result.error("该用户当前的状态已经是" + UserChangeType.RESIGN.getDescription() + ",您无需变更!"); + } + } + if (memberChangeRecord.getType() == UserChangeType.RETIREMENT.getCode()) { + if (userState.equals(UserChangeType.RETIREMENT.getDescription())) { + return Result.error("该用户当前的状态已经是" + UserChangeType.RETIREMENT.getDescription() + ",您无需变更!"); + } + } + + + memberChangeRecord.setRecordMode(MemberChangeRecordMode.MEMBER.getCode()); + memberChangeRecord.setApplyOrigin(MemberChangeOrigin.UNION.getCode()); + memberChangeRecord = MemberChangeAuditHandle.CREATE.next(memberChangeRecord, null); Audit audit = new Audit(); audit.setAuditPass(true); - audit.setAuditOpinion(record.getRemark()); - - MemberChangeAuditHandle.UNION.next(record, audit); + audit.setAuditOpinion(memberChangeRecord.getRemark()); + MemberChangeAuditHandle.UNION.next(memberChangeRecord, audit); return null; } @@ -202,10 +341,10 @@ public class MemberCheckUnionController { @RequiresPermissions("member.check.union") public Object getUnionTaskStatus(String taskId, @Param(value = "unionId", required = false) String unionId, @Param(value = "unionGroupId", required = false) String unionGroupId) { Cnd cnd = Cnd.NEW(); - if (!ShiroUtil.hasAnyRoles("sysadmin,A06,H03")) { - cnd.and("groupUnionId", "in", io.v.nutz.web.commons.utils.ShiroUtil.getUnionGroupIds()); + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin,SchoolUnionWelfareAdmin")) { + cnd.and("unionId", "=", Vi.getUnionId()); } - cnd.andEX("groupUnionId", "=", unionGroupId); + cnd.andEX("unionId", "=", unionId); cnd.and("taskId", "=", taskId); MemberCheckUnionTask unionTask = dao.fetch(MemberCheckUnionTask.class, cnd); return unionTask != null && unionTask.getIsFinish(); @@ -214,12 +353,12 @@ public class MemberCheckUnionController { @At @ViReturn @RequiresPermissions("member.check.union") - public Object checkAgain(String taskId, @Param(value = "unionGroupId", required = false) String unionGroupId) { + public Object checkAgain(String taskId, @Param(value = "unionId", required = false) String unionId) { Cnd cnd = Cnd.NEW(); - if (!ShiroUtil.hasAnyRoles("sysadmin,A06,H03")) { - cnd.and("groupUnionId", "in", io.v.nutz.web.commons.utils.ShiroUtil.getUnionGroupIds()); + if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin,SchoolUnionWelfareAdmin")) { + cnd.and("unionId", "in", Vi.getUnionId()); } - cnd.andEX("groupUnionId", "=", unionGroupId); + cnd.andEX("unionId", "=", unionId); cnd.and("taskId", "=", taskId); dao.update(MemberCheckUnionTask.class, Chain.make("isFinish", false), cnd); return null; diff --git a/src/main/resources/views/platform/member/check/personal.html b/src/main/resources/views/platform/member/check/personal.html index 0fc2be4..71ae4bc 100644 --- a/src/main/resources/views/platform/member/check/personal.html +++ b/src/main/resources/views/platform/member/check/personal.html @@ -59,7 +59,7 @@ layout("/layouts/platform.html"){
+ v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H03')}">
所属工会: