This commit is contained in:
Paidax
2024-07-26 10:26:18 +08:00
parent a82c0f6f1a
commit fc673e5e4e
7 changed files with 532 additions and 419 deletions
@@ -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<NutMap> list = simpleService.listMap(sql);
return list;
}
@At
@@ -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<SysUnionGroup> unionGroups = dao.query(SysUnionGroup.class, Cnd.NEW());
List<Sys_union> 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<MemberCheckUnionTask> unionTasks = unionGroups.stream().map(v -> {
List<MemberCheckUnionTask> 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);
}
@@ -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;