会员
This commit is contained in:
@@ -47,57 +47,57 @@ public class MsgApi {
|
||||
|
||||
|
||||
/**
|
||||
* @param channels 推送渠道 (INNER:站内消息; SMS:短信; Mail:邮件; WeChat:微信; DingTalk:钉钉;同时推送多个渠道用英文逗号分隔 )
|
||||
* @param loginNameStr 字符串,多个工号用英文逗号分隔 ","
|
||||
* @param mtype 消息类型; 0: 图文 1: 文字 2: 外链
|
||||
* @param title 标题
|
||||
* @param content 内容
|
||||
* @param imageUrl 图片URL
|
||||
* @param channels 推送渠道 (INNER:站内消息; SMS:短信; Mail:邮件; WeChat:微信; DingTalk:钉钉;同时推送多个渠道用英文逗号分隔 )
|
||||
* @param loginNameStr 字符串,多个工号用英文逗号分隔 ","
|
||||
* @param mtype 消息类型; 0: 图文 1: 文字 2: 外链
|
||||
* @param title 标题
|
||||
* @param content 内容
|
||||
* @param imageUrl 图片URL
|
||||
* @author zhf
|
||||
* @description
|
||||
*/
|
||||
public void sendMsg(List<String> channels, String loginNameStr, Integer mtype, String title, String content, String imageUrl,String link) {
|
||||
try {
|
||||
if (!Globals.MyConfig.getBoolean("SendMsg")) {
|
||||
log.info("发送失败,消息暂未开启!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (Globals.isEnv(Env.dev)) {
|
||||
log.info("开发模式不允许发送短信!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(title)||StrUtil.isBlank(content) ||Lang.isEmpty(channels) || Lang.isEmpty(loginNameStr)) {
|
||||
log.info("发送失败,缺少需要参数请检查!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
|
||||
return;
|
||||
}
|
||||
|
||||
String msgToken = getMsgToken();
|
||||
NutMap map = new NutMap();
|
||||
map.put("channel", String.join(",", channels));
|
||||
//推送范围(1:普通模式;2:全体教师;3:全体学生;4:全体人员)
|
||||
map.put("objScope", 1);
|
||||
map.put("objIds", loginNameStr);
|
||||
map.put("mtype", mtype);
|
||||
map.put("sendStatus", 1);
|
||||
map.put("title", title);
|
||||
map.put("content", content);
|
||||
map.put("imageUrl", imageUrl);
|
||||
map.put("link", link);
|
||||
|
||||
HttpRequest request = HttpUtil.createPost(MSG_API)
|
||||
.header("token", msgToken)
|
||||
.body(Json.toJson(map));
|
||||
JSONObject jsonObject = JSON.parseObject(request.execute().body());
|
||||
int status = jsonObject.getInteger("code");
|
||||
|
||||
if (status == 200) {
|
||||
log.info("发送成功>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
|
||||
} else {
|
||||
log.info("发送失败>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
|
||||
throw new RuntimeException("Message sending failed with status code: " + status + ", Message: " + jsonObject.getString("message"));
|
||||
}
|
||||
// if (!Globals.MyConfig.getBoolean("SendMsg")) {
|
||||
// log.info("发送失败,消息暂未开启!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if (Globals.isEnv(Env.dev)) {
|
||||
// log.info("开发模式不允许发送短信!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if (StrUtil.isBlank(title)||StrUtil.isBlank(content) ||Lang.isEmpty(channels) || Lang.isEmpty(loginNameStr)) {
|
||||
// log.info("发送失败,缺少需要参数请检查!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// String msgToken = getMsgToken();
|
||||
// NutMap map = new NutMap();
|
||||
// map.put("channel", String.join(",", channels));
|
||||
// //推送范围(1:普通模式;2:全体教师;3:全体学生;4:全体人员)
|
||||
// map.put("objScope", 1);
|
||||
// map.put("objIds", loginNameStr);
|
||||
// map.put("mtype", mtype);
|
||||
// map.put("sendStatus", 1);
|
||||
// map.put("title", title);
|
||||
// map.put("content", content);
|
||||
// map.put("imageUrl", imageUrl);
|
||||
// map.put("link", link);
|
||||
//
|
||||
// HttpRequest request = HttpUtil.createPost(MSG_API)
|
||||
// .header("token", msgToken)
|
||||
// .body(Json.toJson(map));
|
||||
// JSONObject jsonObject = JSON.parseObject(request.execute().body());
|
||||
// int status = jsonObject.getInteger("code");
|
||||
//
|
||||
// if (status == 200) {
|
||||
// log.info("发送成功>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
|
||||
// } else {
|
||||
// log.info("发送失败>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
|
||||
// throw new RuntimeException("Message sending failed with status code: " + status + ", Message: " + jsonObject.getString("message"));
|
||||
// }
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -63,4 +63,8 @@ public class Sys_dict extends BaseModel implements Serializable {
|
||||
@Comment("有子节点")
|
||||
private boolean hasChildren;
|
||||
|
||||
@Column
|
||||
@Comment("特殊备注")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String remark;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
package io.v.nutz.sys.models;
|
||||
|
||||
import cn.afterturn.easypoi.excel.annotation.Excel;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import io.v.nutz.base.model.BaseModel;
|
||||
import io.v.nutz.zhgh.member.MemberMode;
|
||||
import io.v.nutz.zhgh.member.WelfareMemberMode;
|
||||
import io.v.nutz.zhgh.member.constant.MemberOrigin;
|
||||
import io.v.nutz.zhgh.member.constant.MemberStatus;
|
||||
import io.v.nutz.zhgh.staffmanage.member.MemberMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.WelfareMemberMode;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -282,7 +281,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
private Date welfareMemberJoinTime;
|
||||
|
||||
/**
|
||||
* @see MemberOrigin
|
||||
* @see
|
||||
*/
|
||||
@Column
|
||||
@Comment("会员来源(1 个人申请 2 补录 3 批量设置 4 其他)")
|
||||
@@ -290,7 +289,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
private Integer memberOrigin;
|
||||
|
||||
/**
|
||||
* @see MemberStatus
|
||||
* @see
|
||||
*/
|
||||
@Column
|
||||
@Comment("会员状态")
|
||||
@@ -378,22 +377,13 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
private String vita;
|
||||
|
||||
/**
|
||||
* 成员
|
||||
* 家庭成员
|
||||
*
|
||||
* @see Family
|
||||
*/
|
||||
@Column
|
||||
@Comment("家庭成员")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<Family> family;
|
||||
|
||||
@Data
|
||||
public static class Family implements Serializable {
|
||||
private String relation;
|
||||
private String name;
|
||||
private String unit;
|
||||
private String remark;
|
||||
}
|
||||
private List<JSONObject> families;
|
||||
|
||||
/**
|
||||
* end
|
||||
|
||||
+35
-32
@@ -85,41 +85,44 @@ public class UserPartUpServiceImpl extends ViServiceImpl<UserPartUp> implements
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void renewUserState() {
|
||||
//在职状态
|
||||
Sql userStateSql = Sqls.create("select userState from `user` where userState is not null and userState !='' group by userState");
|
||||
List<String> userStates = sysDictService.listMap(userStateSql).stream().map(v -> v.getString("userState")).collect(Collectors.toList());
|
||||
List<Sys_dict> userStateList = sysDictService.getSubListByCode("UserState");
|
||||
|
||||
//dict中的在职状态,在user表中没有,这一部分删除
|
||||
List<Sys_dict> deleteUserState = userStateList.stream().filter(v -> !userStates.contains(v.getName())).collect(Collectors.toList());
|
||||
List<String> deleteUserStateIds = deleteUserState.stream().map(Sys_dict::getId).collect(Collectors.toList());
|
||||
|
||||
if (Lang.isNotEmpty(deleteUserStateIds)) {
|
||||
sysDictService.delete(deleteUserStateIds);
|
||||
}
|
||||
|
||||
//获取删除dict后的在职状态
|
||||
List<Sys_dict> deleteRenewUserStateList = sysDictService.getSubListByCode("UserState");
|
||||
Sys_dict userState = deleteRenewUserStateList.stream().findFirst().orElse(null);
|
||||
assert userState != null;
|
||||
//获取在职状态名
|
||||
List<String> dictNameList = deleteRenewUserStateList.stream().map(Sys_dict::getName).collect(Collectors.toList());
|
||||
//如果user表中有在职状态, 删除userState后的dict表中没有,就需要新增
|
||||
List<String> insertUserStateList = userStates.stream().filter(v -> !dictNameList.contains(v)).collect(Collectors.toList());
|
||||
|
||||
insertUserStateList = insertUserStateList.stream().distinct().collect(Collectors.toList());
|
||||
if (Lang.isNotEmpty(insertUserStateList)) {
|
||||
for (String item : insertUserStateList) {
|
||||
Sys_dict dict = new Sys_dict();
|
||||
dict.setCode(item);
|
||||
dict.setName(item);
|
||||
sysDictService.save(dict, userState.getParentId());
|
||||
}
|
||||
}
|
||||
// Sql userStateSql = Sqls.create("select userState from `user` where userState is not null and userState !='' group by userState");
|
||||
// List<String> userStates = sysDictService.listMap(userStateSql).stream().map(v -> v.getString("userState")).collect(Collectors.toList());
|
||||
// List<Sys_dict> userStateList = sysDictService.getSubListByCode("UserState");
|
||||
//
|
||||
// //dict中的在职状态,在user表中没有,这一部分删除
|
||||
// List<Sys_dict> deleteUserState = userStateList.stream().filter(v -> !userStates.contains(v.getName())).collect(Collectors.toList());
|
||||
// List<String> deleteUserStateIds = deleteUserState.stream().map(Sys_dict::getId).collect(Collectors.toList());
|
||||
//
|
||||
// if (Lang.isNotEmpty(deleteUserStateIds)) {
|
||||
// sysDictService.delete(deleteUserStateIds);
|
||||
// }
|
||||
//
|
||||
// //获取删除dict后的在职状态
|
||||
// List<Sys_dict> deleteRenewUserStateList = sysDictService.getSubListByCode("UserState");
|
||||
// Sys_dict userState = deleteRenewUserStateList.stream().findFirst().orElse(null);
|
||||
// assert userState != null;
|
||||
// //获取在职状态名
|
||||
// List<String> dictNameList = deleteRenewUserStateList.stream().map(Sys_dict::getName).collect(Collectors.toList());
|
||||
// //如果user表中有在职状态, 删除userState后的dict表中没有,就需要新增
|
||||
// List<String> insertUserStateList = userStates.stream().filter(v -> !dictNameList.contains(v)).collect(Collectors.toList());
|
||||
//
|
||||
// insertUserStateList = insertUserStateList.stream().distinct().collect(Collectors.toList());
|
||||
// if (Lang.isNotEmpty(insertUserStateList)) {
|
||||
// for (String item : insertUserStateList) {
|
||||
// Sys_dict dict = new Sys_dict();
|
||||
// dict.setCode(item);
|
||||
// dict.setName(item);
|
||||
// sysDictService.save(dict, userState.getParentId());
|
||||
// }
|
||||
// }
|
||||
|
||||
//人员类型
|
||||
Sql personTypeSql = Sqls.create("select personType from `user` where personType is not null and personType !='' group by personType");
|
||||
List<String> personTypes = sysDictService.listMap(personTypeSql).stream().map(v -> v.getString("personType")).collect(Collectors.toList());
|
||||
List<Sys_dict> personTypeList = sysDictService.getSubListByCode("UserType");
|
||||
List<Sys_dict> personTypeList = sysDictService.getSubListByCode("PERSON_TYPE");
|
||||
if (Lang.isEmpty(personTypeList)) {
|
||||
return;
|
||||
}
|
||||
|
||||
//dict中的personType,在user表中没有,这一部分删除
|
||||
List<Sys_dict> deletePersonType = personTypeList.stream().filter(v -> !personTypes.contains(v.getName())).collect(Collectors.toList());
|
||||
@@ -130,7 +133,7 @@ public class UserPartUpServiceImpl extends ViServiceImpl<UserPartUp> implements
|
||||
}
|
||||
|
||||
//获取删除dict后的personType
|
||||
List<Sys_dict> deleteRenewPersonTypeList = sysDictService.getSubListByCode("UserType");
|
||||
List<Sys_dict> deleteRenewPersonTypeList = sysDictService.getSubListByCode("PERSON_TYPE");
|
||||
Sys_dict personType = deleteRenewPersonTypeList.stream().findFirst().orElse(null);
|
||||
assert personType != null;
|
||||
//获取personType
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package io.v.nutz.zhgh.data.handle;
|
||||
|
||||
import io.v.nutz.base.annontation.SelectEnum;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.UserMode;
|
||||
import lombok.Getter;
|
||||
import org.apache.shiro.crypto.hash.Sha256Hash;
|
||||
import org.apache.shiro.util.ByteSource;
|
||||
|
||||
@@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -37,26 +38,21 @@ public class UserHistory extends Sys_user {
|
||||
|
||||
@Column
|
||||
@Comment("更新时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
private Date changeTime;
|
||||
|
||||
/**
|
||||
* @see UserChangeType
|
||||
*/
|
||||
@Column
|
||||
@Comment("变更类型")
|
||||
private int changeType;
|
||||
|
||||
@Column
|
||||
@Comment("变更类型(多种)")
|
||||
private List<Integer> changeTypes;
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> changeTypes;
|
||||
|
||||
@Column
|
||||
@Comment("变更来源")
|
||||
private Integer changeOrigin;
|
||||
|
||||
@Column
|
||||
@Comment("变更人")
|
||||
private String changeOperator;
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String changeOrigin;
|
||||
|
||||
@Column
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
@@ -65,10 +61,16 @@ public class UserHistory extends Sys_user {
|
||||
|
||||
@Column
|
||||
@Comment("会员变更表记录id")
|
||||
private String memberChangeRecordId;
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String recordId;
|
||||
|
||||
@Column
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@Comment("上一次历史记录id")
|
||||
private String lastHistoryId;
|
||||
@Comment("详细变更记录,用于查询、列表展示")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<NutMap> changeInfos;
|
||||
|
||||
@Column
|
||||
@Comment("详细变更记录,文本类型,可用于导出")
|
||||
@ColDefine(type = ColType.TEXT)
|
||||
private String changeInfosStr;
|
||||
}
|
||||
|
||||
@@ -1,20 +1,27 @@
|
||||
package io.v.nutz.zhgh.data.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HtmlUtil;
|
||||
import io.v.nutz.base.utils.ManyAddOrRenewUtil;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.sys.models.Sys_dict;
|
||||
import io.v.nutz.sys.models.Sys_user_role;
|
||||
import io.v.nutz.sys.services.SysDictService;
|
||||
import io.v.nutz.sys.services.SysUserRoleService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.activity.models.ActivityUserScope;
|
||||
import io.v.nutz.zhgh.data.constant.SourceData;
|
||||
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
||||
import io.v.nutz.zhgh.data.model.UserHistory;
|
||||
import io.v.nutz.zhgh.data.model.UserSource;
|
||||
import io.v.nutz.zhgh.data.service.HistoryUserService;
|
||||
import io.v.nutz.zhgh.data.service.SourceUserService;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.data.vo.SourceUserCommonVo;
|
||||
import io.v.nutz.zhgh.staffmanage.member.UserMode;
|
||||
import io.v.nutz.base.service.AsyncService;
|
||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
@@ -22,7 +29,11 @@ import io.v.nutz.sys.services.SysRoleService;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.web.commons.controller.userpartupdate.models.UserPartUp;
|
||||
import io.v.nutz.web.commons.controller.userpartupdate.service.UserPatUpService;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeConfig;
|
||||
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Cnd;
|
||||
@@ -47,6 +58,7 @@ import java.util.concurrent.*;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -60,8 +72,6 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
||||
super(dao);
|
||||
}
|
||||
|
||||
// 是会员的人员类型
|
||||
private final List<String> MEMBER_PERSON_TYPE = List.of("事业编制(员额)", "事业编制", "校聘编外", "同工同酬", "学校编制", "博士后(统招)");
|
||||
|
||||
@Inject
|
||||
private AsyncService asyncService;
|
||||
@@ -74,8 +84,12 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
||||
@Inject
|
||||
private SysRoleService sysRoleService;
|
||||
@Inject
|
||||
private SysDictService sysDictService;
|
||||
@Inject
|
||||
private SysUserRoleService sysUserRoleService;
|
||||
@Inject
|
||||
private MemberCommonService memberCommonService;
|
||||
@Inject
|
||||
private ManyAddOrRenewUtil manyAddOrRenewUtil;
|
||||
|
||||
@Override
|
||||
@@ -94,13 +108,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void updateSysUser(String pullTime, String sourceType, String[] columnNames, String isUpSet, String partGroupId, boolean isInvert) {
|
||||
try {
|
||||
List<Sys_user> users = sysUserService.query(Cnd.where("loginname", "is not", null));
|
||||
Map<String, Sys_user> userMap = users.stream().collect(Collectors.toMap(sys_user -> sys_user.getLoginname().toLowerCase(), sys_user -> sys_user));
|
||||
|
||||
List<UserSource> sources = new ArrayList<>();
|
||||
|
||||
List<UserHistory> histories = new CopyOnWriteArrayList<>();
|
||||
|
||||
Map<String, String> userPartMap = new HashMap<>();
|
||||
if (Strings.isNotBlank(partGroupId)) {
|
||||
//如果为true,更新组别之外人员
|
||||
@@ -117,6 +125,10 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
||||
sources = query(Cnd.where("pullTime", "=", pullTime).groupBy("loginname"));
|
||||
}
|
||||
|
||||
// 查询所有用户,判断是否需要更新
|
||||
List<Sys_user> users = sysUserService.query(Cnd.where("loginname", "is not", null));
|
||||
Map<String, Sys_user> userMap = users.stream().collect(Collectors.toMap(Sys_user::getLoginname, user -> user));
|
||||
|
||||
AtomicReference<Dao> filterColumnDao = new AtomicReference<>(dao());
|
||||
|
||||
// 全部更新时,要修改的用户表
|
||||
@@ -125,10 +137,35 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
||||
List<Sys_user> needInitUserList = new CopyOnWriteArrayList<>();
|
||||
// 添加角色的用户
|
||||
List<Sys_user_role> userRoles = new CopyOnWriteArrayList<>();
|
||||
|
||||
// 人员更新配置的对象
|
||||
SourceChangeConfig changeConfig = dao().fetch(SourceChangeConfig.class, Cnd.NEW());
|
||||
|
||||
boolean isAuto = "automatic".equals(changeConfig.getSourceChangeType());
|
||||
|
||||
// 存储人员变更记录的表
|
||||
List<UserHistory> histories = new CopyOnWriteArrayList<>();
|
||||
// 如果是手动更新暂时存储到SourceChangeMiddleTable表
|
||||
List<SourceChangeMiddleTable> middleTables = new CopyOnWriteArrayList<>();
|
||||
|
||||
// 获取人员变更字段,用于存储记录
|
||||
List<Sys_dict> dictList = sysDictService.getSubListByCode("ALLOW_CHANGE_FIELDS");
|
||||
Set<String> allowChangeFieldNames = dictList.stream().map(Sys_dict::getCode).collect(Collectors.toSet());
|
||||
allowChangeFieldNames.add("member");
|
||||
allowChangeFieldNames.add("welfareMember");
|
||||
Map<String, String> dictMap = dictList.stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName));
|
||||
dictMap.put("member", "会员状态");
|
||||
dictMap.put("welfareMember", "福利会员状态");
|
||||
|
||||
// 添加会员角色
|
||||
List<String> addMemberUserIds = new CopyOnWriteArrayList<>();
|
||||
// 移除会员角色
|
||||
List<String> deleteMemberUserIds = new CopyOnWriteArrayList<>();
|
||||
// 添加福利会员角色的用户id
|
||||
List<String> addWelfareMemberUserIds = new CopyOnWriteArrayList<>();
|
||||
// 移除福利会员角色的用户id
|
||||
List<String> deleteWelfareMemberUserIds = new CopyOnWriteArrayList<>();
|
||||
|
||||
|
||||
// 创建一个固定大小的线程池 可以根据服务器性能调整线程池大小
|
||||
int numberOfThreads = Runtime.getRuntime().availableProcessors() * 2;
|
||||
@@ -148,30 +185,20 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
||||
source.setWelfareMember(null);
|
||||
Sys_user user = userMap.get(source.getLoginname().toLowerCase());
|
||||
|
||||
if (isAuto) {
|
||||
checkMemberOrWelfareMember(changeConfig, source, user, addMemberUserIds, deleteMemberUserIds,
|
||||
addWelfareMemberUserIds, deleteWelfareMemberUserIds);
|
||||
} else {
|
||||
if (user != null) {
|
||||
source.setMember(user.getMember());
|
||||
source.setWelfareMember(user.getWelfareMember());
|
||||
}
|
||||
}
|
||||
|
||||
Sys_user u = new Sys_user();
|
||||
BeanUtils.copyProperties(source, u);
|
||||
switch (sourceType) {
|
||||
case "all" -> {
|
||||
if (StrUtil.isNotBlank(source.getPersonType())
|
||||
&& MEMBER_PERSON_TYPE.contains(source.getPersonType())
|
||||
&& "在职".equals(source.getUserState())) {
|
||||
source.setMember(1);
|
||||
source.setWelfareMember(1);
|
||||
// 符合条件的这类人员 人员性质设为会员
|
||||
if (user != null && user.getMember() != 1) {
|
||||
addMemberUserIds.add(user.getId());
|
||||
}
|
||||
if (user == null) {
|
||||
addMemberUserIds.add(source.getId());
|
||||
}
|
||||
} else {
|
||||
source.setMember(0);
|
||||
source.setWelfareMember(0);
|
||||
// 不符合条件的这类人员 人员性质设为教职工
|
||||
if (user != null && user.getMember() == 1) {
|
||||
deleteMemberUserIds.add(user.getId());
|
||||
}
|
||||
}
|
||||
// 复制属性到一个新的user对象
|
||||
u.setId(user == null ? source.getId() : user.getId());
|
||||
if (user != null) {
|
||||
@@ -194,17 +221,24 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
||||
}
|
||||
}
|
||||
|
||||
List<UserChangeType> changeTypes = getChangeTypes(source, user, sourceType);
|
||||
if (changeTypes.contains(UserChangeType.NEW)) {
|
||||
user = UserMode.initUser(u);
|
||||
needInitUserList.add(user);
|
||||
Sys_user_role userRole = new Sys_user_role();
|
||||
userRole.setUserId(user.getId());
|
||||
userRole.setRoleId(Roles.PUBLIC);
|
||||
userRoles.add(userRole);
|
||||
histories.add(createUserHistory(user, changeTypes));
|
||||
} else if (changeTypes.size() > 0) {
|
||||
histories.add(createUserHistory(user, changeTypes));
|
||||
if (isAuto) {
|
||||
UserHistory history = createHistory(source, user, dictMap, allowChangeFieldNames);
|
||||
if (Lang.isEmpty(history)) {
|
||||
continue;
|
||||
}
|
||||
histories.add(history);
|
||||
if (history.getChangeTypes().contains(MemberChangeType.NEW.getType())) {
|
||||
needInitUserList.add(u);
|
||||
}
|
||||
} else {
|
||||
SourceChangeMiddleTable table = createSourceChangeMiddleTable(source, user, dictMap, allowChangeFieldNames);
|
||||
if (Lang.isEmpty(table)) {
|
||||
continue;
|
||||
}
|
||||
middleTables.add(table);
|
||||
if (table.getChangeTypes().contains(MemberChangeType.NEW.getType())) {
|
||||
needInitUserList.add(u);
|
||||
}
|
||||
}
|
||||
}
|
||||
}, Executors.newFixedThreadPool(numberOfThreads));
|
||||
@@ -221,41 +255,37 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
||||
sysUserRoleService.insert(userRoles);
|
||||
}
|
||||
|
||||
if ("all".equals(sourceType)) {
|
||||
// 添加会员角色
|
||||
if (Lang.isNotEmpty(addMemberUserIds)) {
|
||||
String memberRoleId = Roles.MEMBER;
|
||||
List<Sys_user_role> list = addMemberUserIds.stream().map(v -> {
|
||||
Sys_user_role userRole = new Sys_user_role();
|
||||
userRole.setUserId(v);
|
||||
userRole.setRoleId(memberRoleId);
|
||||
return userRole;
|
||||
}).toList();
|
||||
manyAddOrRenewUtil.asyncExecuteInsert(list, 200);
|
||||
}
|
||||
// 不是定义的personType的人员,去除会员角色
|
||||
if (Lang.isNotEmpty(deleteMemberUserIds)) {
|
||||
dao().clear(Sys_user_role.class, Cnd.where("userId", "in", deleteMemberUserIds).and("roleId", "=", Roles.MEMBER));
|
||||
}
|
||||
}
|
||||
// 添加会员
|
||||
addMemberUser(addMemberUserIds, changeConfig.getIsJoinMemberActivityScope());
|
||||
// 删除会员
|
||||
deleteMemberUser(deleteMemberUserIds, changeConfig.getIsDeleteMemberActivityScope());
|
||||
|
||||
// Collection<String[]> updateColumns = SourceData.USER_FIELD_RELATION.values();
|
||||
// 加入进行中的福利项目,暂时没写
|
||||
|
||||
if ("part".equals(sourceType)) {
|
||||
massUpdatesAsync(needDoUpdateList, true, filterColumnDao);
|
||||
} else {
|
||||
massUpdatesAsync(needDoUpdateList, false, null);
|
||||
}
|
||||
|
||||
// 历史记录表插入数据
|
||||
historyUserService.dao().fastInsert(histories);
|
||||
// 人员状态及在职状态更新
|
||||
userPatUpService.renewUserState();
|
||||
// 修改不在人事库的人员,删除角色
|
||||
if ("automatic".equals(changeConfig.getSourceChangeType())) {
|
||||
// 自动更新,修改数据表,存储历史记录
|
||||
if ("part".equals(sourceType)) {
|
||||
massUpdatesAsync(needDoUpdateList, true, filterColumnDao);
|
||||
} else {
|
||||
massUpdatesAsync(needDoUpdateList, false, null);
|
||||
}
|
||||
|
||||
manyAddOrRenewUtil.asyncExecuteFastInsert(histories, 200);
|
||||
// 人员状态及在职状态更新
|
||||
// 在职状态关乎变更类型,建议自己手动更新,不要使用自动更新功能,硬要使用,请点进 renewUserState 打开注释
|
||||
userPatUpService.renewUserState();
|
||||
|
||||
// 修改不在人事库的人员,删除角色
|
||||
// userPatUpService.deleteNotInSourceUser(true);
|
||||
//清除缓存
|
||||
// sysUserService.clearCache();
|
||||
// sysRoleService.clearCache();
|
||||
//清除缓存
|
||||
sysUserService.clearCache();
|
||||
sysRoleService.clearCache();
|
||||
|
||||
} else {
|
||||
manyAddOrRenewUtil.asyncExecuteFastInsert(middleTables, 200);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e.getMessage());
|
||||
@@ -263,6 +293,315 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 判断自动更新的会员和福利会员
|
||||
* @param config 人员更新的配置
|
||||
* @param source
|
||||
* @param user
|
||||
* @param addMemberUserIds
|
||||
* @param deleteMemberUserIds
|
||||
* @param addWelfareMemberUserIds
|
||||
* @param deleteWelfareMemberUserIds
|
||||
*/
|
||||
private void checkMemberOrWelfareMember(SourceChangeConfig config, UserSource source, Sys_user user,
|
||||
List<String> addMemberUserIds, List<String> deleteMemberUserIds,
|
||||
List<String> addWelfareMemberUserIds, List<String> deleteWelfareMemberUserIds){
|
||||
if (config == null || config.getMemberSiftList() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
config.getMemberSiftList().forEach(memberSift -> {
|
||||
String siftName = memberSift.getSiftName();
|
||||
Object siftValue = memberSift.getSiftValue();
|
||||
boolean shouldAdd = false;
|
||||
boolean shouldRemove = false;
|
||||
|
||||
switch (siftName) {
|
||||
case "userState":
|
||||
if (siftValue instanceof List<?> && source != null && source.getUserState() != null) {
|
||||
List<String> userStateList = (List<String>) siftValue;
|
||||
shouldAdd = userStateList.contains(source.getUserState());
|
||||
shouldRemove = !shouldAdd && user != null && user.getMember() == 1;
|
||||
}
|
||||
break;
|
||||
case "personType":
|
||||
if (siftValue instanceof List<?> && source != null && source.getPersonType() != null) {
|
||||
List<String> personTypeList = (List<String>) siftValue;
|
||||
shouldAdd = personTypeList.contains(source.getPersonType());
|
||||
shouldRemove = !shouldAdd && user != null && user.getMember() == 1;
|
||||
}
|
||||
break;
|
||||
case "loginNameStart":
|
||||
if (siftValue instanceof String && source != null && source.getLoginname() != null) {
|
||||
String loginNameStart = (String) siftValue;
|
||||
shouldAdd = source.getLoginname().startsWith(loginNameStart);
|
||||
shouldRemove = !shouldAdd && user != null && user.getMember() == 1;
|
||||
}
|
||||
break;
|
||||
case "loginNameEnd":
|
||||
if (siftValue instanceof String && source != null && source.getLoginname() != null) {
|
||||
String loginNameEnd = (String) siftValue;
|
||||
shouldAdd = source.getLoginname().endsWith(loginNameEnd);
|
||||
shouldRemove = !shouldAdd && user != null && user.getMember() == 1;
|
||||
}
|
||||
break;
|
||||
case "userQuery":
|
||||
if (siftValue instanceof List<?> && user != null) {
|
||||
List<String> userIds = (List<String>) siftValue;
|
||||
shouldAdd = userIds.contains(user.getId()) && user.getMember() != 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (shouldAdd) {
|
||||
if (user == null) {
|
||||
addMemberUserIds.add(source.getId());
|
||||
} else if (user.getMember() != 1) {
|
||||
addMemberUserIds.add(user.getId());
|
||||
}
|
||||
source.setMember(1);
|
||||
} else if (shouldRemove) {
|
||||
deleteMemberUserIds.add(user.getId());
|
||||
source.setMember(0);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
config.getWelfareMemberSiftList().forEach(welfareMember -> {
|
||||
String siftName = welfareMember.getSiftName();
|
||||
Object siftValue = welfareMember.getSiftValue();
|
||||
boolean shouldAdd = false;
|
||||
boolean shouldRemove = false;
|
||||
|
||||
switch (siftName) {
|
||||
case "member":
|
||||
if ((user != null && addMemberUserIds.contains(user.getId())) || addMemberUserIds.contains(source.getId())) {
|
||||
shouldAdd = true;
|
||||
} else {
|
||||
shouldRemove = true;
|
||||
}
|
||||
break;
|
||||
case "userState":
|
||||
if (siftValue instanceof List<?> && source != null && source.getUserState() != null) {
|
||||
List<String> userStateList = (List<String>) siftValue;
|
||||
shouldAdd = userStateList.contains(source.getUserState());
|
||||
shouldRemove = !shouldAdd && user != null && user.getMember() == 1;
|
||||
}
|
||||
break;
|
||||
case "personType":
|
||||
if (siftValue instanceof List<?> && source != null && source.getPersonType() != null) {
|
||||
List<String> personTypeList = (List<String>) siftValue;
|
||||
shouldAdd = personTypeList.contains(source.getPersonType());
|
||||
shouldRemove = !shouldAdd && user != null && user.getMember() == 1;
|
||||
}
|
||||
break;
|
||||
case "loginNameStart":
|
||||
if (siftValue instanceof String && source != null && source.getLoginname() != null) {
|
||||
String loginNameStart = (String) siftValue;
|
||||
shouldAdd = source.getLoginname().startsWith(loginNameStart);
|
||||
shouldRemove = !shouldAdd && user != null && user.getMember() == 1;
|
||||
}
|
||||
break;
|
||||
case "loginNameEnd":
|
||||
if (siftValue instanceof String && source != null && source.getLoginname() != null) {
|
||||
String loginNameEnd = (String) siftValue;
|
||||
shouldAdd = source.getLoginname().endsWith(loginNameEnd);
|
||||
shouldRemove = !shouldAdd && user != null && user.getMember() == 1;
|
||||
}
|
||||
break;
|
||||
case "userQuery":
|
||||
if (siftValue instanceof List<?> && user != null) {
|
||||
List<String> userIds = (List<String>) siftValue;
|
||||
shouldAdd = userIds.contains(user.getId()) && user.getMember() != 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (shouldAdd) {
|
||||
if (user == null) {
|
||||
addWelfareMemberUserIds.add(source.getId());
|
||||
} else if (user.getMember() != 1) {
|
||||
addWelfareMemberUserIds.add(user.getId());
|
||||
}
|
||||
source.setWelfareMember(1);
|
||||
} else if (shouldRemove) {
|
||||
deleteWelfareMemberUserIds.add(user.getId());
|
||||
source.setWelfareMember(0);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用于人工操作,不自动更新,不改变数据库数据
|
||||
* 待人工手动调整后,变更数据库
|
||||
* @param source
|
||||
* @param user
|
||||
* @param dictMap
|
||||
* @param allowChangeFieldNames
|
||||
* @return 人工操作记录表
|
||||
*/
|
||||
private SourceChangeMiddleTable createSourceChangeMiddleTable(UserSource source, Sys_user user, Map<String, String> dictMap, Set<String> allowChangeFieldNames) {
|
||||
List<String> changeTypes = new ArrayList<>();
|
||||
// 手动变更,记录新的数据,并记录变更内容
|
||||
SourceChangeMiddleTable table = new SourceChangeMiddleTable();
|
||||
BeanUtil.copyProperties(source, table);
|
||||
table.setId(R.UU32());
|
||||
table.setChangeTime(DateUtil.date());
|
||||
table.setChangeOrigin(MemberChangeOrigin.SYSTEM.name());
|
||||
// 新入职教职工
|
||||
if (user == null) {
|
||||
changeTypes.add(MemberChangeType.NEW.getType());
|
||||
table.setChangeTypes(changeTypes);
|
||||
return table;
|
||||
}
|
||||
|
||||
// 获取变更记录
|
||||
// 新数据
|
||||
NutMap newMap = Lang.obj2nutmap(source);
|
||||
// 原数据
|
||||
NutMap sourceMap = Lang.obj2nutmap(user);
|
||||
// 变更记录
|
||||
List<NutMap> changeList = new ArrayList<>();
|
||||
for (String fieldName : allowChangeFieldNames) {
|
||||
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
||||
}
|
||||
if (Lang.isEmpty(changeList)) {
|
||||
return null;
|
||||
}
|
||||
String changeInfos = changeList.stream().map(v -> {
|
||||
return "(变更字段:" + v.getString("fieldName") + ",变更前:" + HtmlUtil.cleanHtmlTag(v.getString("sourceValue")) + ",变更后:" + HtmlUtil.cleanHtmlTag(v.getString("newValue")) + ")";
|
||||
}).collect(Collectors.joining(";"));
|
||||
|
||||
// 比较变更数据
|
||||
commonCompareChange(source, user, changeTypes);
|
||||
|
||||
table.setChangeTypes(changeTypes);
|
||||
table.setChangeInfos(changeList);
|
||||
table.setChangeInfosStr(changeInfos);
|
||||
table.setIsOperate(false);
|
||||
return table;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 自动更新,创建历史记录
|
||||
* 会直接改变数据库
|
||||
* @param source
|
||||
* @param user
|
||||
* @param dictMap
|
||||
* @param allowChangeFieldNames
|
||||
* @return 历史记录表
|
||||
*/
|
||||
private UserHistory createHistory(UserSource source, Sys_user user, Map<String, String> dictMap, Set<String> allowChangeFieldNames) {
|
||||
List<String> changeTypes = new ArrayList<>();
|
||||
UserHistory history = new UserHistory();
|
||||
BeanUtil.copyProperties(user, history);
|
||||
history.setId(R.UU32());
|
||||
history.setChangeTime(DateUtil.date());
|
||||
history.setChangeOrigin(MemberChangeOrigin.SYSTEM.name());
|
||||
if (user == null) {
|
||||
changeTypes.add(MemberChangeType.NEW.getType());
|
||||
history.setChangeTypes(changeTypes);
|
||||
return history;
|
||||
}
|
||||
// 获取变更记录
|
||||
NutMap newMap = Lang.obj2nutmap(source);
|
||||
NutMap sourceMap = Lang.obj2nutmap(user);
|
||||
List<NutMap> changeList = new ArrayList<>();
|
||||
for (String fieldName : allowChangeFieldNames) {
|
||||
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
||||
}
|
||||
if (Lang.isEmpty(changeList)) {
|
||||
return null;
|
||||
}
|
||||
String changeInfos = changeList.stream().map(v -> {
|
||||
return "(变更字段:" + v.getString("fieldName") + ",变更前:" + HtmlUtil.cleanHtmlTag(v.getString("sourceValue")) + ",变更后:" + HtmlUtil.cleanHtmlTag(v.getString("newValue")) + ")";
|
||||
}).collect(Collectors.joining(";"));
|
||||
// 比较变更数据
|
||||
commonCompareChange(source, user, changeTypes);
|
||||
|
||||
history.setChangeTypes(changeTypes);
|
||||
history.setChangeInfos(changeList);
|
||||
history.setChangeInfosStr(changeInfos);
|
||||
return history;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 比较变更类型公共方法
|
||||
* @param source
|
||||
* @param user
|
||||
* @param changeTypes
|
||||
*/
|
||||
private void commonCompareChange(UserSource source, Sys_user user, List<String> changeTypes){
|
||||
changeTypes.add(MemberChangeType.BASIC_CHANGE.getType());
|
||||
|
||||
if (!ObjectUtil.equals(user.getUserState(), source.getUserState())) {
|
||||
List<MemberChangeType> list = Arrays.stream(MemberChangeType.values())
|
||||
.filter(v -> v.getChangeTypeName().equals(source.getUserState())).toList();
|
||||
if (Lang.isNotEmpty(list)) {
|
||||
changeTypes.add(list.get(0).getType());
|
||||
}
|
||||
}
|
||||
|
||||
if (!ObjectUtil.equals(user.getMember(), source.getMember())){
|
||||
if (source.getMember() == 1) {
|
||||
changeTypes.add(MemberChangeType.RESTORE.getType());
|
||||
} else {
|
||||
changeTypes.add(MemberChangeType.WITHDRAWAL.getType());
|
||||
}
|
||||
}
|
||||
|
||||
if (!ObjectUtil.equals(user.getUnitid(), source.getUnitid())) {
|
||||
changeTypes.add(MemberChangeType.UNIT_CHANGE.getType());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 添加会员
|
||||
* @param addMemberUserIds
|
||||
* @param isJoinMemberActivityScope
|
||||
*/
|
||||
private void addMemberUser(List<String> addMemberUserIds, Boolean isJoinMemberActivityScope) {
|
||||
if (Lang.isNotEmpty(addMemberUserIds)) {
|
||||
List<Sys_user_role> roleList = addMemberUserIds.stream().distinct().map(v -> {
|
||||
Sys_user_role role = new Sys_user_role();
|
||||
role.setUserId(v);
|
||||
role.setRoleId(Roles.MEMBER);
|
||||
return role;
|
||||
}).toList();
|
||||
manyAddOrRenewUtil.asyncExecuteInsert(roleList, 200);
|
||||
|
||||
if (isJoinMemberActivityScope) {
|
||||
List<ActivityUserScope> scopeList = addMemberUserIds.stream().distinct().map(v -> {
|
||||
ActivityUserScope scope = new ActivityUserScope();
|
||||
scope.setGroupId(1);
|
||||
scope.setGroupName("工会会员");
|
||||
scope.setUserId(v);
|
||||
return scope;
|
||||
}).toList();
|
||||
manyAddOrRenewUtil.asyncExecuteInsert(scopeList, 200);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除会员
|
||||
* @param deleteMemberUserIds
|
||||
* @param isDeleteMemberActivityScope
|
||||
*/
|
||||
private void deleteMemberUser(List<String> deleteMemberUserIds, Boolean isDeleteMemberActivityScope){
|
||||
if (Lang.isNotEmpty(deleteMemberUserIds)) {
|
||||
dao().clear(Sys_user_role.class, Cnd.where("userId", "in", deleteMemberUserIds).and("roleId", "=", Roles.MEMBER));
|
||||
if (isDeleteMemberActivityScope) {
|
||||
dao().clear(ActivityUserScope.class, Cnd.where("userId", "in", deleteMemberUserIds).and("groupId", "=", 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void dailyScheduledUpdates() {
|
||||
@@ -276,68 +615,6 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
||||
dao().clear(UserSource.class, Cnd.where("DATE(pullTime)", "<", formatAgoWeekDate));
|
||||
}
|
||||
|
||||
private List<UserChangeType> getChangeTypes(Sys_user source, Sys_user user, String sourceType) {
|
||||
List<UserChangeType> userChangeTypes = new ArrayList<>();
|
||||
if (user == null) {
|
||||
userChangeTypes.add(UserChangeType.NEW);
|
||||
return userChangeTypes;
|
||||
} else {
|
||||
if ("add".equals(sourceType)) {
|
||||
return userChangeTypes;
|
||||
}
|
||||
if (!StringUtils.isEmpty(source.getUnitid()) && !source.getUnitid().equals(user.getUnitid())) {
|
||||
userChangeTypes.add(UserChangeType.UNIT_CHANGE);
|
||||
}
|
||||
if (!StringUtils.isEmpty(user.getUserState()) && StrUtil.isNotEmpty(source.getUserState()) && !source.getUserState().equals(user.getUserState())) {
|
||||
for (UserChangeType value : UserChangeType.values()) {
|
||||
if (value.getDescription().equals(source.getUserState())) {
|
||||
userChangeTypes.add(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<String> columns = List.of("nation", "birthday", "personType", "political", "schoolTime", "jobTitle", "education", "academicDegree", "position", "leaveSchoolDate", "retireDate");
|
||||
for (String column : columns) {
|
||||
NutMap userSourceMap = Lang.obj2nutmap(source);
|
||||
NutMap userMap = Lang.obj2nutmap(user);
|
||||
String sourceValue = userSourceMap.getString(column, "");
|
||||
String value = userMap.getString(column, "");
|
||||
if (!sourceValue.equals(value) && StrUtil.isNotBlank(sourceValue)) {
|
||||
userChangeTypes.add(UserChangeType.BASIC_CHANGE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return userChangeTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成一条用户历史记录
|
||||
*
|
||||
* @param user
|
||||
* @param changeTypes
|
||||
* @return
|
||||
*/
|
||||
private UserHistory createUserHistory(Sys_user user, List<UserChangeType> changeTypes) {
|
||||
//除仅更新新增人员外的方式都需要往历史记录表插数据
|
||||
UserHistory history = new UserHistory();
|
||||
history.setId(R.UU32());
|
||||
BeanUtils.copyProperties(user, history);
|
||||
history.setChangeTime(new Date());
|
||||
history.setChangeTypes(changeTypes.stream().map(UserChangeType::getCode).collect(Collectors.toList()));
|
||||
history.setChangeOperator(StrUtil.blankToDefault((String) ShiroUtil.getPrincipalProperty("username"), "系统"));
|
||||
history.setChangeOrigin(MemberChangeOrigin.SYSTEM.getCode());
|
||||
history.setChangeReason("数据自动更新");
|
||||
|
||||
//找出上一次更新的记录
|
||||
Sql lastHistorySql = Sqls.fetchString("select id from user_history where loginname = @loginname order by changeTime");
|
||||
lastHistorySql.setParam("loginname",user.getLoginname());
|
||||
dao().execute(lastHistorySql);
|
||||
String lastHistoryId = lastHistorySql.getString();
|
||||
history.setLastHistoryId(lastHistoryId);
|
||||
return history;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 数据大批量更新
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package io.v.nutz.zhgh.data.vo;
|
||||
|
||||
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeConfig;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:SourceUserCommonVo
|
||||
* @Date 2025/2/18 16:50
|
||||
* @注释
|
||||
*/
|
||||
@Data
|
||||
public class SourceUserCommonVo {
|
||||
|
||||
// 添加会员角色
|
||||
private List<String> addMemberUserIds = new CopyOnWriteArrayList<>();
|
||||
|
||||
// 移除会员角色
|
||||
private List<String> deleteMemberUserIds = new CopyOnWriteArrayList<>();
|
||||
|
||||
// 添加会员分组的用户id
|
||||
private List<String> addMemberGroupUserIds = new CopyOnWriteArrayList<>();
|
||||
|
||||
// 移除会员分组的用户id
|
||||
private List<String> deleteMemberGroupUserIds = new CopyOnWriteArrayList<>();
|
||||
|
||||
// 添加福利会员角色的用户id
|
||||
private List<String> addWelfareMemberUserIds = new CopyOnWriteArrayList<>();
|
||||
|
||||
// 移除福利会员角色的用户id
|
||||
private List<String> deleteWelfareMemberUserIds = new CopyOnWriteArrayList<>();
|
||||
|
||||
private SourceChangeConfig config;
|
||||
}
|
||||
@@ -17,7 +17,6 @@ import io.v.nutz.base.utils.OfficeTemplateUtil;
|
||||
import io.v.nutz.base.utils.PageUtil;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.utils.ViTool;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.models.Sys_user_role;
|
||||
import io.v.nutz.zhgh.jdh.model.db.Jdh_db;
|
||||
import io.v.nutz.zhgh.jdh.model.db.TeacherMeetDelegate;
|
||||
@@ -28,7 +27,6 @@ import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.zhgh.jdh.model.zzjg.Jdh_dbt;
|
||||
import io.v.nutz.zhgh.jdh.model.zzjg.Jdh_dbt_zcdw;
|
||||
import io.v.nutz.zhgh.jdh.vo.TeacherDelegateExcelImportVo;
|
||||
import io.v.nutz.zhgh.thirtyteach.template.ThirtyTeachTemp;
|
||||
import io.v.nutz.zhgh.workersCongress.model.workersCongressSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
@@ -59,7 +57,6 @@ import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.constant;
|
||||
|
||||
/**
|
||||
* 会员申请状态
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
public interface MemberApplyState {
|
||||
/**
|
||||
* 待分工会审核
|
||||
*/
|
||||
int UNION = 10;
|
||||
|
||||
/**
|
||||
* 分工会审核不通过
|
||||
*/
|
||||
int UNION_FAIL = 15;
|
||||
|
||||
/**
|
||||
* 待校工会审核
|
||||
*/
|
||||
int SCHOOL_UNION = 20;
|
||||
|
||||
/**
|
||||
* 校工会审核不通过
|
||||
*/
|
||||
int SCHOOL_UNION_FAIL = 25;
|
||||
|
||||
/**
|
||||
* 正式会员
|
||||
*/
|
||||
int NORMAL_MEMBER = 30;
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.constant;
|
||||
|
||||
/**
|
||||
* 会员变更申请状态
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
public interface MemberChangeApplyState {
|
||||
/**
|
||||
* 待分工会审核
|
||||
*/
|
||||
int UNION = 50;
|
||||
|
||||
/**
|
||||
* 分工会审核不通过
|
||||
*/
|
||||
int UNION_FAIL = 55;
|
||||
|
||||
/**
|
||||
* 待校工会审核
|
||||
*/
|
||||
int SCHOOL_UNION = 60;
|
||||
|
||||
/**
|
||||
* 校工会审核不通过
|
||||
*/
|
||||
int SCHOOL_UNION_FAIL = 65;
|
||||
|
||||
/**
|
||||
* 变更成功
|
||||
*/
|
||||
int SUCCESS = 70;
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.constant;
|
||||
|
||||
import io.v.nutz.base.annontation.SelectEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 会员变更来源
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
@Getter
|
||||
@SelectEnum
|
||||
@AllArgsConstructor
|
||||
public enum MemberChangeOrigin {
|
||||
PERSONAL(1, "个人"),
|
||||
UNION(2, "分工会"),
|
||||
UNION_GROUP(3, "工会小组"),
|
||||
SCHOOL(4, "校工会"),
|
||||
OTHER(5, "其他"),
|
||||
RETIREMENT_CHANGE(6, "退休(系统变更)"),
|
||||
SYSTEM(7, "系统数据更新");
|
||||
|
||||
private int code;
|
||||
private String description;
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.constant;
|
||||
|
||||
import io.v.nutz.base.annontation.SelectEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 会员变更记录模式
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
@Getter
|
||||
@SelectEnum
|
||||
@AllArgsConstructor
|
||||
public enum MemberChangeRecordMode {
|
||||
MEMBER(1, "会员"), WELFARE_MEMBER(2, "福利会员");
|
||||
|
||||
private int code;
|
||||
private String description;
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.constant;
|
||||
|
||||
import io.v.nutz.base.annontation.SelectEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 会员来源
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
@Getter
|
||||
@SelectEnum
|
||||
@AllArgsConstructor
|
||||
public enum MemberOrigin {
|
||||
APPLY(1, "个人申请"), MAKE(2, "补录"), BATCH(3, "批量设置"), OTHER(4, "其他");
|
||||
|
||||
private int code;
|
||||
private String description;
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.constant;
|
||||
|
||||
import io.v.nutz.base.annontation.SelectEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author Aaron
|
||||
*/
|
||||
|
||||
@Getter
|
||||
@SelectEnum
|
||||
@AllArgsConstructor
|
||||
public enum MemberStatus {
|
||||
|
||||
//会员状态
|
||||
NORMAL(1, "入会"),
|
||||
TURN_IN(2, "转入"),
|
||||
TURN_OUT(3, "转出"),
|
||||
KEEP(4, "保留"),
|
||||
WITHDRAWAL(5, "退会"),
|
||||
RESTORE(6, "恢复"),
|
||||
EXPELLED(7, "除名");
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private final int code;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private final String description;
|
||||
|
||||
public String getDescByCode(int code) {
|
||||
switch (code) {
|
||||
case 1:
|
||||
return NORMAL.getDescription();
|
||||
case 2:
|
||||
return TURN_IN.getDescription();
|
||||
case 3:
|
||||
return TURN_OUT.getDescription();
|
||||
case 4:
|
||||
return KEEP.getDescription();
|
||||
case 5:
|
||||
return WITHDRAWAL.getDescription();
|
||||
case 6:
|
||||
return RESTORE.getDescription();
|
||||
case 7:
|
||||
return EXPELLED.getDescription();
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,173 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.controller.apply;
|
||||
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.dao.CndPlus;
|
||||
import io.v.nutz.base.lang.Enum;
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.constant.MemberApplyState;
|
||||
import io.v.nutz.zhgh.member.handle.MemberApplyAuditHandle;
|
||||
import io.v.nutz.zhgh.member.model.MemberApplyRecord;
|
||||
import org.apache.shiro.authz.annotation.Logical;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
@At("/platform/member/apply/audit")
|
||||
@Ok("json:full")
|
||||
@IocBean
|
||||
public class MemberApplyAuditController {
|
||||
|
||||
@At("/union")
|
||||
@Ok("beetl:/platform/member/apply/audit/Union.html")
|
||||
@RequiresPermissions("member.apply.audit.union")
|
||||
public void union() {
|
||||
}
|
||||
|
||||
@At("/school")
|
||||
@Ok("beetl:/platform/member/apply/audit/School.html")
|
||||
@RequiresPermissions("member.apply.audit.school")
|
||||
public void school() {
|
||||
}
|
||||
|
||||
@Inject("MemberApplyRecord")
|
||||
private ViService<MemberApplyRecord> memberApplyRecordViService;
|
||||
|
||||
@Inject
|
||||
private Vi vi;
|
||||
|
||||
/**
|
||||
* @param pageForm 分页查询对象
|
||||
* @param source 来源 1 分工会 2 校工会
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions(value = {"member.apply.audit.union", "member.apply.audit.school"}, logical = Logical.OR)
|
||||
public Object pageData(PageForm pageForm,
|
||||
@Param(value = "unionId", required = false) String unionId,
|
||||
@Param(value = "unitId", required = false) String unitId,
|
||||
@Param(value = "threeUnitId", required = false) String threeUnitId,
|
||||
@Param(value = "unionGroupId", required = false) String unionGroupId,
|
||||
@Param(value = "source", required = false) Integer source,
|
||||
@Param(value = "date", required = false) String[] date,
|
||||
@Param(value = "memberStatus", required = false) Integer memberStatus,
|
||||
@Param(value = "audit", required = false) Integer audit) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
mar.*,
|
||||
LEFT ( mar.applyTime, 10 ) applyDate,
|
||||
u.username,
|
||||
u.loginname,
|
||||
u.unitname,
|
||||
u.unionname,
|
||||
u.sex,
|
||||
u.mobile,
|
||||
u.unitcode,
|
||||
u.unioncode,
|
||||
u.unionGroupName,
|
||||
u.threeUnitName,
|
||||
state.stateName,
|
||||
state.stateColor,
|
||||
IF(mar.stateId = @auditState,TRUE,FALSE) audit
|
||||
FROM
|
||||
member_apply_record mar
|
||||
LEFT JOIN audit_state state ON mar.stateId = state.stateId
|
||||
LEFT JOIN `user` u ON mar.userId = u.id $condition
|
||||
""");
|
||||
CndPlus cnd = CndPlus.create();
|
||||
pageForm.defaultSortAsc("mar.stateId");
|
||||
cnd.and(pageForm);
|
||||
cnd.andEX("u.memberStatus", "=", memberStatus);
|
||||
|
||||
/* if (audit == 1 && !ShiroUtil.hasAnyRoles("sysadmin")) {
|
||||
cnd.and("mar.unionId", "=", vi.getUnionId());
|
||||
*//*cnd.and("mar.userId", "=", ShiroUtil.getUserId());*//*
|
||||
} else if (audit == 2) {
|
||||
cnd.and("mar.stateId", "=", source == 1 ? MemberApplyState.UNION : MemberApplyState.SCHOOL_UNION);
|
||||
}*/
|
||||
|
||||
|
||||
if (date != null && date.length == 2) {
|
||||
cnd.and("date(mar.applyTime)", ">=", date[0]);
|
||||
cnd.and("date(mar.applyTime)", "<=", date[1]);
|
||||
}
|
||||
|
||||
cnd.andEX("u.unionid", "=", unionId);
|
||||
cnd.andEX("u.unitid", "=", unitId);
|
||||
cnd.andEX("u.threeUnitId", "=", threeUnitId);
|
||||
cnd.andEX("u.unionGroupId", "=", unionGroupId);
|
||||
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin") && source == 1) {
|
||||
cnd.and("mar.unionId", "=", vi.getUnionId());
|
||||
}
|
||||
|
||||
|
||||
if (audit == 0) {
|
||||
if (source == 1) {
|
||||
|
||||
} else if (source == 2) {
|
||||
cnd.and("mar.stateId", "!=", MemberApplyState.UNION);
|
||||
cnd.and("mar.stateId", "!=", MemberApplyState.UNION_FAIL);
|
||||
}
|
||||
} else if (audit == 1) {
|
||||
if (source == 1) {
|
||||
cnd.and("mar.stateId", ">", MemberApplyState.UNION);
|
||||
} else if (source == 2) {
|
||||
cnd.and("mar.stateId", ">", MemberApplyState.SCHOOL_UNION);
|
||||
}
|
||||
} else if (audit == 2) {
|
||||
if (source == 1) {
|
||||
cnd.and("mar.stateId", "=", MemberApplyState.UNION);
|
||||
} else if (source == 2) {
|
||||
cnd.and("mar.stateId", "=", MemberApplyState.SCHOOL_UNION);
|
||||
}
|
||||
}
|
||||
|
||||
if (source == 1) {
|
||||
sql.setParam("auditState", MemberApplyState.UNION);
|
||||
} else {
|
||||
sql.setParam("auditState", MemberApplyState.SCHOOL_UNION);
|
||||
}
|
||||
|
||||
/* if (audit != 0) {
|
||||
if (source == 1) {
|
||||
|
||||
cnd.and("mar.stateId", audit == 1 ? ">" : "=", MemberApplyState.UNION);
|
||||
sql.setParam("auditState", MemberApplyState.UNION);
|
||||
} else if (source == 2) {
|
||||
cnd.and("mar.stateId", audit == 1 ? ">" : "=", MemberApplyState.SCHOOL_UNION);
|
||||
sql.setParam("auditState", MemberApplyState.SCHOOL_UNION);
|
||||
}
|
||||
} else {
|
||||
if (source == 1) {
|
||||
cnd.and("mar.stateId", "<", MemberApplyState.SCHOOL_UNION);
|
||||
} else if (source == 2) {
|
||||
cnd.and("mar.stateId", ">=", MemberApplyState.SCHOOL_UNION);
|
||||
}
|
||||
}*/
|
||||
sql.setCondition(cnd);
|
||||
|
||||
return memberApplyRecordViService.list(pageForm, sql);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions(value = {"member.apply.audit.union", "member.apply.audit.school"}, logical = Logical.OR)
|
||||
public Object doAudit(String recordId, Audit audit) {
|
||||
MemberApplyRecord record = memberApplyRecordViService.fetch(recordId);
|
||||
MemberApplyAuditHandle applyHandle = Enum.instance(MemberApplyAuditHandle.class, record.getStateId());
|
||||
applyHandle.next(record, audit);
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,272 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.controller.apply;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.config.Configure;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.base.utils.OfficeTemplateUtil;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.base.utils.ViTool;
|
||||
import io.v.nutz.sys.models.Sys_signature;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.services.SysSignatureService;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.web.commons.base.Globals;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.constant.MemberApplyState;
|
||||
import io.v.nutz.zhgh.member.handle.MemberApplyAuditHandle;
|
||||
import io.v.nutz.zhgh.member.model.MemberApplyRecord;
|
||||
import io.v.nutz.zhgh.member.model.MemberCheckSelfTask;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.ddr.poi.html.HtmlRenderPolicy;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
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 org.nutz.trans.Trans;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@At("/platform/member/apply/submit")
|
||||
@Ok("json:full")
|
||||
@IocBean
|
||||
public class MemberApplyController {
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/member/apply/index.html")
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@Inject("MemberApplyRecord")
|
||||
private ViService<MemberApplyRecord> memberApplyRecordViService;
|
||||
|
||||
@Inject
|
||||
private Vi vi;
|
||||
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
|
||||
@Inject
|
||||
private SysSignatureService sysSignatureService;
|
||||
|
||||
@Inject
|
||||
private OfficeTemplateUtil officeTemplateUtil;
|
||||
|
||||
/**
|
||||
* 获取信息
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
public Object unionInfo() {
|
||||
Sql userSql = Sqls.create("""
|
||||
SELECT
|
||||
u.id,
|
||||
u.username,
|
||||
u.loginname,
|
||||
u.member,
|
||||
u.unitid,
|
||||
u.nation,
|
||||
u.marriage,
|
||||
un.id unionid,
|
||||
un.unioncode,
|
||||
un.unionname,
|
||||
un.telephone,
|
||||
idType,
|
||||
idcard,
|
||||
family,
|
||||
education,
|
||||
academicDegree,
|
||||
political,
|
||||
position,
|
||||
homeAddress,
|
||||
registeredResidence,
|
||||
sex,
|
||||
specialSkill,
|
||||
vita,
|
||||
mobile
|
||||
FROM
|
||||
sys_user u
|
||||
LEFT JOIN sys_unit unit ON u.unitid = unit.id
|
||||
LEFT JOIN sys_union un ON unit.unionid = un.id
|
||||
WHERE
|
||||
u.id = @id
|
||||
""").setParam("id", ShiroUtil.getPrincipalProperty("id"));
|
||||
NutMap user = memberApplyRecordViService.fetch(userSql);
|
||||
|
||||
if (Strings.isNotBlank(user.getString("unionid"))) {
|
||||
Sql managerSql = Sqls.create("""
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT u.username ) manager
|
||||
FROM
|
||||
sys_user u
|
||||
LEFT JOIN sys_user_role sur ON u.id = sur.userId
|
||||
WHERE sur.roleId = @roleId and sur.unionid = @unionId
|
||||
""").setParam("roleId", Roles.UNION_MANGER).setParam("unionId", user.getString("unionid"));
|
||||
user.setv("manager", memberApplyRecordViService.fetch(managerSql).getString("manager"));
|
||||
|
||||
|
||||
Sql marSql = Sqls.create("""
|
||||
SELECT
|
||||
mar.*,
|
||||
u.username,
|
||||
u.loginname,
|
||||
un.unionname,
|
||||
state.stateName,
|
||||
state.stateColor
|
||||
FROM
|
||||
member_apply_record mar
|
||||
LEFT JOIN audit_state state ON mar.stateId = state.stateId
|
||||
LEFT JOIN sys_union un ON mar.unionId = un.id
|
||||
LEFT JOIN sys_user u ON mar.userId = u.id
|
||||
WHERE
|
||||
mar.userId = @userId
|
||||
ORDER BY
|
||||
mar.applyTime desc
|
||||
""").setParam("userId", ShiroUtil.getPrincipalProperty("id"));
|
||||
List<NutMap> records = memberApplyRecordViService.listMap(marSql);
|
||||
if (records.size() > 0) {
|
||||
NutMap record = records.get(0);
|
||||
user.setv("record", record);
|
||||
|
||||
if (record.getInt("stateId") == MemberApplyState.UNION_FAIL || record.getInt("stateId") == MemberApplyState.SCHOOL_UNION_FAIL) {
|
||||
user.setv("reApply", true);
|
||||
} else if (record.getInt("stateId") == MemberApplyState.NORMAL_MEMBER && !user.getBoolean("member")) {
|
||||
user.setv("apply", true);
|
||||
}
|
||||
} else if (!user.getBoolean("member")) {
|
||||
user.setv("apply", true);
|
||||
}
|
||||
user.setv("records", records);
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交申请
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
public Object doApply(Integer memberStates) {
|
||||
return MemberApplyAuditHandle.CREATE.next(new MemberApplyRecord().setMemberStates(memberStates), null);
|
||||
}
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
public Object doEdit(Sys_user sys_user, @Param(value = "taskId", required = false) String taskId) {
|
||||
Trans.exec(() -> {
|
||||
if (StrUtil.isNotBlank(taskId)) {
|
||||
sysUserService.dao().update(MemberCheckSelfTask.class,
|
||||
Chain.make("isFinish", true),
|
||||
Cnd.where("taskId", "=", taskId).and("userId", "=", ShiroUtil.getUserId()));
|
||||
}
|
||||
sysUserService.updateIgnoreNull(sys_user);
|
||||
sysUserService.deleteCache(sys_user.getId());
|
||||
});
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@Ok("void")
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
public void exportApply(@Param(value = "userId", required = false) String userId, HttpServletResponse response) {
|
||||
try (ServletOutputStream os = response.getOutputStream()) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.username,
|
||||
u.sex,
|
||||
u.nation,
|
||||
u.education,
|
||||
concat(u.username, '、', u.jobTitle) as workUnit,
|
||||
u.marriage,
|
||||
u.academicDegree,
|
||||
u.political,
|
||||
u.idcard,
|
||||
u.mobile,
|
||||
u.registeredResidence,
|
||||
u.homeAddress,
|
||||
u.vita,
|
||||
u.specialSkill,
|
||||
u.family,
|
||||
mar.signId,
|
||||
mar.applyTime
|
||||
FROM
|
||||
sys_user u
|
||||
left join member_apply_record mar on mar.userId = u.id
|
||||
WHERE u.id = @id
|
||||
""").setParam("id", Strings.isNotBlank(userId) ? userId : ShiroUtil.getUserId());
|
||||
NutMap userMap = memberApplyRecordViService.fetch(sql);
|
||||
|
||||
MemberApplyRecord applyRecord = memberApplyRecordViService.fetch(Cnd.where("userId", "=", Strings.isNotBlank(userId) ? userId : ShiroUtil.getUserId()).desc("applyTime"));
|
||||
//and("stateId", "=", 30)
|
||||
memberApplyRecordViService.fetchLinks(applyRecord, null);
|
||||
|
||||
if (Strings.isNotBlank(userMap.getString("signId"))) {
|
||||
Sys_signature signature = sysSignatureService.fetch(userMap.getString("signId"));
|
||||
userMap.setv("userSign", signature != null ? Vi.getImg(signature.getData()) : null);
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(applyRecord) && applyRecord.getUnionAudit() != null) {
|
||||
userMap.put("unionOpinion", applyRecord.getUnionAudit().getAuditOpinion());
|
||||
userMap.put("unionUserName", applyRecord.getUnionAudit().getUsername());
|
||||
if (StrUtil.isNotBlank(applyRecord.getUnionAudit().getAuditSign())) {
|
||||
// userMap.put("unionUserSign", ViTool.poiBase64Image7030(applyRecord.getUnionAudit().getAuditSign()));
|
||||
userMap.put("unionUserSign", Vi.getImg(applyRecord.getUnionAudit().getAuditSign()));
|
||||
}
|
||||
userMap.put("unionDate", DateUtil.format(applyRecord.getUnionAudit().getAuditTime(), "yyyy年MM月dd日"));
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(applyRecord) && applyRecord.getSchoolAudit() != null) {
|
||||
userMap.put("schoolOpinion", applyRecord.getSchoolAudit().getAuditOpinion());
|
||||
if (StrUtil.isNotBlank(applyRecord.getSchoolAudit().getAuditSign())) {
|
||||
// userMap.put("schoolSign", ViTool.poiBase64Image7030(applyRecord.getSchoolAudit().getAuditSign()));
|
||||
userMap.put("schoolSign", Vi.getImg(applyRecord.getSchoolAudit().getAuditSign()));
|
||||
}
|
||||
userMap.put("schoolDate", DateUtil.format(applyRecord.getSchoolAudit().getAuditTime(), "yyyy年MM月dd日"));
|
||||
}
|
||||
|
||||
Date applyTime = applyRecord.getApplyTime();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(applyTime);
|
||||
|
||||
userMap.put("year", DateUtil.year(userMap.getTime("applyTime")));
|
||||
userMap.put("month", DateUtil.month(userMap.getTime("applyTime")) + 1);
|
||||
userMap.put("day", DateUtil.dayOfMonth(userMap.getTime("applyTime")));
|
||||
userMap.put("schoolName", Globals.MyConfig.getString("GxName"));
|
||||
|
||||
ViTool.excelResponse(response, userMap.getString("username") + "-工会入会申请表.docx");
|
||||
HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
|
||||
Configure configure = Configure.builder().bind("vita", htmlRenderPolicy).build();
|
||||
|
||||
XWPFTemplate.compile(officeTemplateUtil.getPath("memberApply"), configure).render(userMap).writeAndClose(os);
|
||||
System.out.println(Json.toJson(userMap));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
-170
@@ -1,170 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.controller.change;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.dao.CndPlus;
|
||||
import io.v.nutz.base.lang.Enum;
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import io.v.nutz.zhgh.member.handle.MemberChangeAuditHandle;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import org.apache.shiro.authz.annotation.Logical;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
@At("/platform/member/change/audit")
|
||||
@Ok("json:full")
|
||||
@IocBean
|
||||
public class MemberChangeApplyAuditController {
|
||||
|
||||
@At("/union")
|
||||
@Ok("beetl:/platform/member/change/audit/Union.html")
|
||||
@RequiresPermissions("member.change.audit.union")
|
||||
public void union() {
|
||||
}
|
||||
|
||||
@At("/school")
|
||||
@Ok("beetl:/platform/member/change/audit/School.html")
|
||||
@RequiresPermissions("member.change.audit.school")
|
||||
public void school() {
|
||||
}
|
||||
|
||||
@Inject("MemberChangeRecord")
|
||||
private ViService<MemberChangeRecord> recordViService;
|
||||
|
||||
@Inject
|
||||
private Vi vi;
|
||||
|
||||
/**
|
||||
* @param pageForm 分页查询对象
|
||||
* @param source 来源 1 分工会 2 校工会
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions(value = {"member.change.audit.union", "member.change.audit.school"}, logical = Logical.OR)
|
||||
public Object pageData(PageForm pageForm,
|
||||
@Param(value = "unionId", required = false) String unionId,
|
||||
@Param(value = "unitId", required = false) String unitId,
|
||||
@Param(value = "threeUnitId", required = false) String threeUnitId,
|
||||
@Param(value = "unionGroupId", required = false) String unionGroupId,
|
||||
@Param(value = "source", required = false) Integer source,
|
||||
@Param(value = "date", required = false) String[] date,
|
||||
@Param(value = "type", required = false) Integer type,
|
||||
@Param(value = "memberStatus", required = false) Integer memberStatus,
|
||||
@Param(value = "audit", required = false) Integer audit) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
mcr.*,
|
||||
LEFT ( mcr.applyTime, 10 ) applyDate,
|
||||
u.username,
|
||||
u.loginname,
|
||||
u.unitname,
|
||||
u.unionname,
|
||||
u.mobile AS MMobile,
|
||||
u.unitcode,
|
||||
u.unioncode,
|
||||
u.unionGroupName,
|
||||
u.threeUnitName,
|
||||
state.stateName,
|
||||
state.stateColor,
|
||||
originUnit.unitcode originUnitCode,
|
||||
originUnit.`name` originUnitName,
|
||||
originUnion.unioncode originUnionCode,
|
||||
originUnion.unionname originUnionName,
|
||||
currentUnit.unitcode currentUnitCode,
|
||||
currentUnit.`name` currentUnitName,
|
||||
currentUnion.unioncode currentUnionCode,
|
||||
currentUnion.unionname currentUnionName,
|
||||
IF(mcr.stateId = @auditState,TRUE,FALSE) audit
|
||||
FROM
|
||||
member_change_record mcr
|
||||
LEFT JOIN `user` u ON mcr.userId = u.id
|
||||
LEFT JOIN audit_state state ON mcr.stateId = state.stateId
|
||||
LEFT JOIN sys_unit originUnit ON mcr.originUnitId = originUnit.id
|
||||
LEFT JOIN sys_union originUnion ON mcr.originUnionId = originUnion.id
|
||||
LEFT JOIN sys_unit currentUnit ON mcr.currentUnitId = currentUnit.id
|
||||
LEFT JOIN sys_union currentUnion ON mcr.currentUnionId = currentUnion.id
|
||||
$condition
|
||||
""");
|
||||
CndPlus cnd = CndPlus.create();
|
||||
pageForm.defaultSortAsc("mcr.stateId");
|
||||
cnd.and(pageForm);
|
||||
|
||||
cnd.and("mcr.recordMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
|
||||
if (date != null && date.length == 2) {
|
||||
cnd.and("date(mcr.applyTime)", ">=", date[0]);
|
||||
cnd.and("date(mcr.applyTime)", "<=", date[1]);
|
||||
}
|
||||
/*if (audit == 1) {
|
||||
cnd.and("mcr.userId", "=", ShiroUtil.getUserId());
|
||||
} else if (audit == 2) {
|
||||
cnd.and("mcr.stateId", "=", source == 1 ? MemberChangeApplyState.UNION : MemberChangeApplyState.SCHOOL_UNION);
|
||||
}*/
|
||||
|
||||
cnd.andEX("u.unionid", "=", unionId);
|
||||
cnd.andEX("u.unitid", "=", unitId);
|
||||
cnd.andEX("u.threeUnitId", "=", threeUnitId);
|
||||
cnd.andEX("u.unionGroupId", "=", unionGroupId);
|
||||
|
||||
cnd.andEX("mcr.type", "=", type);
|
||||
cnd.andEX("u.memberStatus", "=", memberStatus);
|
||||
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin") && source == 1) {
|
||||
cnd.and("mcr.originUnionId", "=", Vi.getUnionId());
|
||||
}
|
||||
|
||||
if (audit != 0) {
|
||||
if (source == 1) {
|
||||
cnd.and("mcr.stateId", audit == 1 ? ">" : "=", MemberChangeApplyState.UNION);
|
||||
sql.setParam("auditState", MemberChangeApplyState.UNION);
|
||||
} else if (source == 2) {
|
||||
cnd.and("mcr.stateId", audit == 1 ? ">" : "=", MemberChangeApplyState.SCHOOL_UNION);
|
||||
sql.setParam("auditState", MemberChangeApplyState.SCHOOL_UNION);
|
||||
}
|
||||
} else {
|
||||
if (source == 1) {
|
||||
} else if (source == 2) {
|
||||
cnd.and("mcr.stateId", ">=", MemberChangeApplyState.SCHOOL_UNION);
|
||||
}
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
|
||||
return recordViService.list(pageForm, sql);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions(value = {"member.change.audit.union", "member.change.audit.school"}, logical = Logical.OR)
|
||||
public Object doAudit(String recordId,
|
||||
Audit audit,
|
||||
@Param(value = "currentUnitId", required = false) String currentUnitId,
|
||||
@Param(value = "currentUnionId", required = false) String currentUnionId,
|
||||
@Param(value = "currentThreeUnitId", required = false) String currentThreeUnitId) {
|
||||
MemberChangeRecord record = recordViService.fetch(recordId);
|
||||
if (StrUtil.isAllNotBlank(currentUnitId, currentUnionId)) {
|
||||
record.setCurrentUnitId(currentUnitId);
|
||||
record.setCurrentUnionId(currentUnionId);
|
||||
record.setCurrentThreeUnitId(currentThreeUnitId);
|
||||
recordViService.update(record);
|
||||
}
|
||||
|
||||
MemberChangeAuditHandle applyHandle = Enum.instance(MemberChangeAuditHandle.class, record.getStateId());
|
||||
applyHandle.next(record, audit);
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
-123
@@ -1,123 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.controller.change;
|
||||
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import io.v.nutz.zhgh.member.handle.MemberChangeAuditHandle;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
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.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@At("/platform/member/change/apply")
|
||||
@Ok("json:full")
|
||||
@IocBean
|
||||
public class MemberChangeApplyController {
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/member/change/Apply.html")
|
||||
@RequiresPermissions("member.change.apply")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@Inject("MemberChangeRecord")
|
||||
private ViService<MemberChangeRecord> changeRecordViService;
|
||||
|
||||
@Inject
|
||||
private Vi vi;
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
|
||||
/**
|
||||
* 获取信息
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.change.apply")
|
||||
public Object unionInfo() {
|
||||
|
||||
Sql userSql = Sqls.create("""
|
||||
SELECT
|
||||
u.id,
|
||||
u.username,
|
||||
u.loginname,
|
||||
u.member,
|
||||
un.id unionid,
|
||||
un.unioncode,
|
||||
un.unionname,
|
||||
un.telephone
|
||||
FROM
|
||||
sys_user u
|
||||
LEFT JOIN sys_unit unit ON u.unitid = unit.id
|
||||
LEFT JOIN sys_union un ON unit.unionid = un.id
|
||||
WHERE
|
||||
u.id = @id
|
||||
""").setParam("id", ShiroUtil.getPrincipalProperty("id"));
|
||||
NutMap user = changeRecordViService.fetch(userSql);
|
||||
|
||||
if (Strings.isNotBlank(user.getString("unionid"))) {
|
||||
Sql managerSql = Sqls.create("""
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT u.username ) manager
|
||||
FROM
|
||||
sys_user u
|
||||
LEFT JOIN sys_user_role sur ON u.id = sur.userId
|
||||
WHERE sur.roleId = @roleId and sur.unionid = @unionId
|
||||
""").setParam("roleId", Roles.UNION_MANGER).setParam("unionId", user.getString("unionid"));
|
||||
user.setv("manager", changeRecordViService.fetch(managerSql).getString("manager"));
|
||||
|
||||
List<NutMap> records = memberService.memberChangeRecords(ShiroUtil.getPrincipalProperty("id").toString());
|
||||
if (records.size() > 0) {
|
||||
NutMap record = records.get(0);
|
||||
user.setv("record", record);
|
||||
|
||||
if (record.getInt("stateId") == MemberChangeApplyState.UNION_FAIL || record.getInt("stateId") == MemberChangeApplyState.SCHOOL_UNION_FAIL) {
|
||||
user.setv("reApply", true);
|
||||
} else if (record.getInt("stateId") == MemberChangeApplyState.SUCCESS && user.getBoolean("member")) {
|
||||
user.setv("apply", true);
|
||||
}
|
||||
} else {
|
||||
if (user.getBoolean("member")) {
|
||||
user.setv("apply", true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
user.setv("records", records);
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交申请
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.change.apply")
|
||||
public Object doApply(MemberChangeRecord record) {
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setApplyOrigin(MemberChangeOrigin.PERSONAL.getCode());
|
||||
return MemberChangeAuditHandle.CREATE.next(record, null);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,181 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.handle;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.base.service.AuditService;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||
import io.v.nutz.base.utils.MsgApi;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.base.utils.ViResource;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
||||
import io.v.nutz.zhgh.data.model.UserHistory;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.member.constant.MemberApplyState;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.member.constant.MemberOrigin;
|
||||
import io.v.nutz.zhgh.member.model.MemberApplyRecord;
|
||||
import lombok.Getter;
|
||||
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;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.random.R;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员申请审核
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
@Getter
|
||||
public enum MemberApplyAuditHandle {
|
||||
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*/
|
||||
CREATE(null) {
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public MemberApplyRecord next(MemberApplyRecord record, Audit audit) {
|
||||
record.setUserId(ShiroUtil.getPrincipalProperty("id").toString());
|
||||
record.setStateId(MemberApplyState.UNION);
|
||||
record.setUnionId(Vi.getUnionId());
|
||||
record.setApplyTime(new Date());
|
||||
MemberApplyRecord insert = memberApplyRecordViService.insert(record);
|
||||
Sys_user user = sysUserService.fetch(record.getUserId());
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
su.loginname
|
||||
FROM
|
||||
sys_user_role sur
|
||||
LEFT JOIN sys_user su ON su.id = sur.userId
|
||||
WHERE
|
||||
sur.roleId = @roleId
|
||||
AND sur.unionid = @unionId
|
||||
""").setParam("roleId", Roles.UNION_MANGER).setParam("unionId", record.getUnionId());
|
||||
|
||||
List<NutMap> mapList = sysUserService.listMap(sql);
|
||||
MemberApplyToDoHandler.START_PROCESS.exec(record,null);
|
||||
MemberApplyToDoHandler.CREATE_UNION_TASK.exec(record,NutMap.NEW().addv("unionLeader",mapList));
|
||||
|
||||
UserHistory history = new UserHistory();
|
||||
BeanUtils.copyProperties(user, history);
|
||||
history.setId(R.UU32());
|
||||
history.setChangeTime(new Date());
|
||||
history.setChangeTypes(List.of(UserChangeType.RESTORE.getCode()));
|
||||
history.setChangeOperator(StrUtil.blankToDefault((String) ShiroUtil.getPrincipalProperty("username"), "系统"));
|
||||
history.setChangeOrigin(MemberChangeOrigin.PERSONAL.getCode());
|
||||
history.setChangeReason("个人申请");
|
||||
history.setMemberChangeRecordId(record.getId());
|
||||
|
||||
/* mapList.forEach(v -> {
|
||||
String content = user.getUsername() + "提交了会员申请待您审核,请前往智慧工会进行审核!";
|
||||
// sendMsg.pushWeChatMsg("会员系统", content, v.getString("loginname"));
|
||||
|
||||
});*/
|
||||
return insert;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 分工会审核
|
||||
*/
|
||||
AUDIT_UNION(MemberApplyState.UNION) {
|
||||
@Override
|
||||
public MemberApplyRecord next(MemberApplyRecord record, Audit audit) {
|
||||
|
||||
record.setStateId(audit.getAuditPass() ? MemberApplyState.SCHOOL_UNION : MemberApplyState.UNION_FAIL);
|
||||
record.setUnionAuditId(auditService.insert(audit).getId());
|
||||
memberApplyRecordViService.update(record);
|
||||
Sys_user user = sysUserService.fetch(record.getUserId());
|
||||
|
||||
|
||||
MemberApplyToDoHandler.COMPLETE_UNION_TASK.exec(record,NutMap.NEW().addv("nodeName",audit.getAuditPass() ? "基层工会通过" : "基层工会拒绝"));
|
||||
|
||||
// if (audit.getAuditPass()) {
|
||||
//
|
||||
// Sql sql = Sqls.create("""
|
||||
// SELECT
|
||||
// su.loginname
|
||||
// FROM
|
||||
// sys_user_role sur
|
||||
// LEFT JOIN sys_user su ON su.id = sur.userId
|
||||
// WHERE
|
||||
// sur.roleId = @roleId
|
||||
// """).setParam("roleId", Roles.H03);
|
||||
//
|
||||
// List<NutMap> mapList = sysUserService.listMap(sql);
|
||||
//
|
||||
// MemberApplyToDoHandler.CREATE_SCHOOL_TASK.exec(record,NutMap.NEW().addv("schoolLeader",mapList));
|
||||
//
|
||||
///* mapList.forEach(v -> {
|
||||
//// sendMsg.pushWeChatMsg("会员系统", user.getUsername() + "提交了会员申请待您审核,请前往智慧工会进行审核!", v.getString("loginname"));
|
||||
// });*/
|
||||
// } else {
|
||||
//// sendMsg.pushWeChatMsg("会员系统", "院级工会拒绝了您的会员申请", user.getLoginname());
|
||||
// MemberApplyToDoHandler.REFUSE_UNION_TASK.exec(record,NutMap.NEW().addv("nodeName","基层工会拒绝"));
|
||||
// }
|
||||
|
||||
|
||||
return record;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 校工会审核
|
||||
*/
|
||||
AUDIT_SCHOOL(MemberApplyState.SCHOOL_UNION) {
|
||||
@Override
|
||||
public MemberApplyRecord next(MemberApplyRecord record, Audit audit) {
|
||||
|
||||
memberApplyRecordViService.transactional(() -> {
|
||||
record.setStateId(audit.getAuditPass() ? MemberApplyState.NORMAL_MEMBER : MemberApplyState.SCHOOL_UNION_FAIL);
|
||||
record.setSchoolAuditId(auditService.insert(audit).getId());
|
||||
memberApplyRecordViService.update(record);
|
||||
Sys_user user = sysUserService.fetch(record.getUserId());
|
||||
|
||||
MemberApplyToDoHandler.COMPLETE_SCHOOL_TASK.exec(record,NutMap.NEW().addv("nodeName",audit.getAuditPass() ? "审核通过" : "校工会拒绝"));
|
||||
if (audit.getAuditPass()) {
|
||||
sysUserService.update(Chain.make("memberOrigin", MemberOrigin.APPLY.getCode()).add("memberStatus", record.getMemberStates()), Cnd.where("id", "=", record.getUserId()));
|
||||
UserMode.addMemberRole(record.getUserId());
|
||||
MemberApplyToDoHandler.COMPLETE_PROCESS.exec(record,null);
|
||||
// sendMsg.pushWeChatMsg("会员系统", "校工会同意了您的会员申请", user.getLoginname());
|
||||
} else {
|
||||
MemberApplyToDoHandler.REFUSE_UNION_TASK.exec(record,NutMap.NEW().addv("nodeName","校工会拒绝"));
|
||||
// sendMsg.pushWeChatMsg("会员系统", "校工会拒绝了您的会员申请", user.getLoginname());
|
||||
}
|
||||
});
|
||||
|
||||
sysUserService.deleteCache(record.getUserId());
|
||||
|
||||
return record;
|
||||
}
|
||||
};
|
||||
|
||||
private Integer state;
|
||||
|
||||
MemberApplyAuditHandle(Integer state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public ViService<MemberApplyRecord> memberApplyRecordViService = ViResource.ioc.get(ViServiceImpl.class, "MemberApplyRecord");
|
||||
public AuditService auditService = ViResource.ioc.getByType(AuditService.class);
|
||||
public SysUserService sysUserService = ViResource.ioc.getByType(SysUserService.class);
|
||||
public MsgApi sendMsg = ViResource.ioc.getByType(MsgApi.class);
|
||||
|
||||
public abstract MemberApplyRecord next(MemberApplyRecord record, Audit audit);
|
||||
|
||||
}
|
||||
@@ -1,170 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.handle;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.lang.Enum;
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.base.service.AuditService;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.base.utils.ViResource;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
||||
import io.v.nutz.zhgh.data.model.UserHistory;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import lombok.Getter;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员变更审核Handle
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/27
|
||||
* @since 1.0
|
||||
*/
|
||||
@Getter
|
||||
public enum MemberChangeAuditHandle {
|
||||
/**
|
||||
* 创建
|
||||
*/
|
||||
CREATE(null) {
|
||||
@Override
|
||||
public MemberChangeRecord next(MemberChangeRecord record, Audit audit) {
|
||||
record.setApplyTime(new Date());
|
||||
|
||||
if (record.getApplyOrigin() == MemberChangeOrigin.PERSONAL.getCode()) {
|
||||
record.setUserId(ShiroUtil.getPrincipalProperty("id").toString());
|
||||
record.setOriginUnitId(ShiroUtil.getPrincipalProperty("unitid").toString());
|
||||
record.setOriginUnionId(Vi.getUnionId());
|
||||
record.setStateId(MemberChangeApplyState.UNION);
|
||||
} else if (record.getApplyOrigin() == MemberChangeOrigin.UNION.getCode()) {
|
||||
record.setStateId(MemberChangeApplyState.SCHOOL_UNION);
|
||||
} else if (record.getApplyOrigin() == MemberChangeOrigin.SCHOOL.getCode()) {
|
||||
record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
}
|
||||
MemberChangeRecord changeRecord = recordViService.insert(record);
|
||||
|
||||
UserHistory history = new UserHistory();
|
||||
Sys_user user = recordViService.dao().fetch(Sys_user.class, record.getUserId());
|
||||
BeanUtils.copyProperties(user, history);
|
||||
history.setChangeTime(DateUtil.date());
|
||||
history.setChangeType(record.getType());
|
||||
history.setChangeTypes(List.of(record.getType()));
|
||||
history.setChangeOrigin(record.getApplyOrigin());
|
||||
history.setChangeOperator((String) ShiroUtil.getPrincipalProperty("username"));
|
||||
history.setChangeReason(record.getRemark());
|
||||
history.setMemberChangeRecordId(record.getId());
|
||||
recordViService.insert(history);
|
||||
|
||||
MemberChangeToDoHandler.START_PROCESS.exec(changeRecord,null);
|
||||
MemberChangeToDoHandler.CREATE_UNION_TASK.exec(changeRecord, NutMap.NEW().addv("nodeName","基层工会审核"));
|
||||
return changeRecord;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 分工会审核
|
||||
*/
|
||||
UNION(MemberChangeApplyState.UNION) {
|
||||
@Override
|
||||
public MemberChangeRecord next(MemberChangeRecord record, Audit audit) {
|
||||
|
||||
record.setStateId(audit.getAuditPass() ? MemberChangeApplyState.SCHOOL_UNION : MemberChangeApplyState.UNION_FAIL);
|
||||
record.setUnionAuditId(auditService.insert(audit).getId());
|
||||
recordViService.update(record);
|
||||
|
||||
MemberChangeToDoHandler.COMPLETE_UNION_TASK.exec(record,NutMap.NEW().addv("nodeName",audit.getAuditPass() ? "基层工会通过" : "基层工会拒绝"));
|
||||
if (audit.getAuditPass()){
|
||||
|
||||
if (auditService.dao().count(UserHistory.class, Cnd.where("memberChangeRecordId", "=", record.getId())) == 0) {
|
||||
UserHistory history = new UserHistory();
|
||||
Sys_user user = recordViService.dao().fetch(Sys_user.class, record.getUserId());
|
||||
BeanUtils.copyProperties(user, history);
|
||||
history.setChangeTime(DateUtil.date());
|
||||
history.setChangeType(record.getType());
|
||||
history.setChangeTypes(List.of(record.getType()));
|
||||
history.setChangeOrigin(record.getApplyOrigin());
|
||||
history.setChangeOperator((String) ShiroUtil.getPrincipalProperty("username"));
|
||||
history.setChangeReason(record.getRemark());
|
||||
history.setMemberChangeRecordId(record.getId());
|
||||
recordViService.insert(history);
|
||||
}
|
||||
|
||||
MemberChangeToDoHandler.CREATE_SCHOOL_TASK.exec(record,null);
|
||||
} else {
|
||||
MemberChangeToDoHandler.REFUSE_UNION_TASK.exec(record,NutMap.NEW().addv("nodeName","分工会拒绝"));
|
||||
}
|
||||
return record;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 校工会审核
|
||||
*/
|
||||
SCHOOL(MemberChangeApplyState.SCHOOL_UNION) {
|
||||
@Override
|
||||
public MemberChangeRecord next(MemberChangeRecord record, Audit audit) {
|
||||
recordViService.transactional(() -> {
|
||||
|
||||
record.setStateId(audit.getAuditPass() ? MemberChangeApplyState.SUCCESS : MemberChangeApplyState.SCHOOL_UNION_FAIL);
|
||||
record.setSchoolAuditId(auditService.insert(audit).getId());
|
||||
|
||||
if (record.getStateId() == MemberChangeApplyState.SUCCESS) {
|
||||
|
||||
if (auditService.dao().count(UserHistory.class, Cnd.where("memberChangeRecordId", "=", record.getId())) == 0) {
|
||||
UserHistory history = new UserHistory();
|
||||
Sys_user user = recordViService.dao().fetch(Sys_user.class, record.getUserId());
|
||||
BeanUtils.copyProperties(user, history);
|
||||
history.setChangeTime(DateUtil.date());
|
||||
history.setChangeType(record.getType());
|
||||
history.setChangeTypes(List.of(record.getType()));
|
||||
history.setChangeOrigin(record.getApplyOrigin());
|
||||
history.setChangeOperator((String) ShiroUtil.getPrincipalProperty("username"));
|
||||
history.setChangeReason(record.getRemark());
|
||||
history.setMemberChangeRecordId(record.getId());
|
||||
recordViService.insert(history);
|
||||
}
|
||||
|
||||
MemberChangeHandle handle = Enum.instance(MemberChangeHandle.class, record.getType());
|
||||
handle.change(record);
|
||||
|
||||
if (StrUtil.isNotBlank(record.getCurrentThreeUnitId()) && !record.getCurrentThreeUnitId().equals(record.getOriginThreeUnitId())) {
|
||||
MemberChangeHandle unitChangeHandle = Enum.instance(MemberChangeHandle.class, UserChangeType.UNIT_CHANGE.getCode());
|
||||
unitChangeHandle.change(record);
|
||||
}
|
||||
|
||||
}
|
||||
recordViService.update(record);
|
||||
});
|
||||
|
||||
MemberChangeToDoHandler.COMPLETE_SCHOOL_TASK.exec(record,NutMap.NEW().addv("nodeName",audit.getAuditPass() ? "审核通过" : "校工会拒绝"));
|
||||
|
||||
if (audit.getAuditPass()) {
|
||||
MemberChangeToDoHandler.COMPLETE_PROCESS.exec(record,null);
|
||||
} else {
|
||||
MemberChangeToDoHandler.REFUSE_UNION_TASK.exec(record,NutMap.NEW().addv("nodeName","校工会拒绝"));
|
||||
}
|
||||
|
||||
return record;
|
||||
}
|
||||
};
|
||||
|
||||
private Integer state;
|
||||
|
||||
MemberChangeAuditHandle(Integer state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public AuditService auditService = ViResource.ioc.getByType(AuditService.class);
|
||||
public ViService<MemberChangeRecord> recordViService = ViResource.ioc.getByType(ViServiceImpl.class);
|
||||
|
||||
public abstract MemberChangeRecord next(MemberChangeRecord record, Audit audit);
|
||||
|
||||
}
|
||||
@@ -1,227 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.handle;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||
import io.v.nutz.base.utils.ViResource;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.services.SysRoleService;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
||||
import io.v.nutz.zhgh.data.model.UserHistory;
|
||||
import io.v.nutz.zhgh.member.MemberMode;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.member.WelfareMemberMode;
|
||||
import io.v.nutz.zhgh.member.constant.MemberStatus;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import lombok.Getter;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.lang.Strings;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员变更Handle
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/27
|
||||
* @see UserChangeType
|
||||
* @since 1.0
|
||||
*/
|
||||
@Getter
|
||||
public enum MemberChangeHandle {
|
||||
|
||||
|
||||
//会员变更Handle
|
||||
UNIT_CHANGE(UserChangeType.UNIT_CHANGE.getCode()) {
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.UNIT_CHANGE);
|
||||
sysUserService.update(Chain.make("unitid", record.getCurrentUnitId())
|
||||
.add("unionid", record.getCurrentUnionId())
|
||||
.add("threeUnitId", record.getCurrentThreeUnitId()), Cnd.where("id", "=", record.getUserId()));
|
||||
sysUserService.clearCache();
|
||||
sysRoleService.clearCache();
|
||||
}
|
||||
},
|
||||
NEW(UserChangeType.NEW.getCode()) {
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.NEW);
|
||||
if (null != record.getUpdateMember() && record.getUpdateMember()){
|
||||
sysUserService.update(Chain.make("schoolTime", DateUtil.today()),Cnd.where("id","=",record.getUserId()));
|
||||
}
|
||||
updateMemberAndWelfareMember(record);
|
||||
sysUserService.clearCache();
|
||||
sysRoleService.clearCache();
|
||||
}
|
||||
},
|
||||
RESIGN(UserChangeType.RESIGN.getCode()) {
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.RESIGN);
|
||||
UserMode.removeMemberRole(record.getUserId());
|
||||
updateMemberAndWelfareMember(record);
|
||||
// updateMemberStatus(MemberStatus.TURN_OUT, record.getUserId());
|
||||
updateUserStateAndPersonType(record);
|
||||
}
|
||||
},
|
||||
/*DIE(UserChangeType.DIE.getCode()) {
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.DIE);
|
||||
UserMode.removeMemberRole(record.getUserId());
|
||||
updateWelfareMember(record);
|
||||
updateMemberStatus(MemberStatus.WITHDRAWAL, record.getUserId());
|
||||
updateUserStateAndPersonType(record);
|
||||
}
|
||||
},*/
|
||||
RETIREMENT(UserChangeType.RETIREMENT.getCode()) {
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.RETIREMENT);
|
||||
UserMode.removeMemberRole(record.getUserId());
|
||||
updateMemberAndWelfareMember(record);
|
||||
// updateMemberStatus(MemberStatus.KEEP, record.getUserId());
|
||||
updateUserStateAndPersonType(record);
|
||||
}
|
||||
},
|
||||
/*EXPELLED(UserChangeType.EXPELLED.getCode()) {
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.EXPELLED);
|
||||
UserMode.removeMemberRole(record.getUserId());
|
||||
updateWelfareMember(record);
|
||||
updateMemberStatus(MemberStatus.EXPELLED, record.getUserId());
|
||||
updateUserStateAndPersonType(record);
|
||||
}
|
||||
},*/
|
||||
RESTORE(UserChangeType.RESTORE.getCode()) {
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.RESTORE);
|
||||
UserMode.addMemberRole(record.getUserId());
|
||||
updateMemberStatus(MemberStatus.RESTORE, record.getUserId());
|
||||
updateMemberAndWelfareMember(record);
|
||||
sysUserService.update(Chain.make("preparedBy", "会员"), Cnd.where("id", "=", record.getUserId()));
|
||||
}
|
||||
},
|
||||
WITHDRAWAL(UserChangeType.WITHDRAWAL.getCode()) {
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.WITHDRAWAL);
|
||||
UserMode.removeMemberRole(record.getUserId());
|
||||
updateMemberAndWelfareMember(record);
|
||||
updateMemberStatus(MemberStatus.WITHDRAWAL, record.getUserId());
|
||||
updateUserStateAndPersonType(record);
|
||||
sysUserService.update(Chain.make("preparedBy", "教职工"), Cnd.where("id", "=", record.getUserId()));
|
||||
}
|
||||
},
|
||||
CARD_CHANGE(UserChangeType.CARD_CHANGE.getCode()){
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.CARD_CHANGE);
|
||||
if (Strings.isNotBlank(record.getChangeIdCard())) {
|
||||
sysUserService.update(Chain.make("idcard", record.getChangeIdCard()), Cnd.where("id", "=", record.getUserId()));
|
||||
}
|
||||
}
|
||||
},
|
||||
MOBILE_CHANGE(UserChangeType.MOBILE_CHANGE.getCode()){
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.MOBILE_CHANGE);
|
||||
if (Strings.isNotBlank(record.getChangeMobile())) {
|
||||
sysUserService.update(Chain.make("mobile", record.getChangeMobile()), Cnd.where("id", "=", record.getUserId()));
|
||||
}
|
||||
}
|
||||
};
|
||||
/*EDUCATION_CHANGE(UserChangeType.EDUCATION_CHANGE.getCode()){
|
||||
@Override
|
||||
public void change(MemberChangeRecord record) {
|
||||
archive(record.getUserId(), UserChangeType.EDUCATION_CHANGE);
|
||||
if (Strings.isNotBlank(record.getEducation())) {
|
||||
sysUserService.update(Chain.make("education", record.getEducation()), Cnd.where("id", "=", record.getUserId()));
|
||||
}
|
||||
}
|
||||
};*/
|
||||
|
||||
/**
|
||||
* 存档
|
||||
*
|
||||
* @param userId
|
||||
* @param changeType
|
||||
*/
|
||||
private static void archive(String userId, UserChangeType changeType) {
|
||||
Sys_user user = sysUserService.fetch(userId);
|
||||
UserHistory history = new UserHistory();
|
||||
BeanUtil.copyProperties(user,history);
|
||||
history.setChangeTime(DateUtil.date());
|
||||
history.setChangeType(changeType.getCode());
|
||||
history.setChangeTypes(List.of(changeType.getCode()));
|
||||
sysUserService.insert(history);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新福利会员
|
||||
*
|
||||
* @param record 变更记录
|
||||
*/
|
||||
public static void updateMemberAndWelfareMember(MemberChangeRecord record) {
|
||||
if (null != record.getUpdateWelfareMember()) {
|
||||
sysUserService.update(Chain.make("welfareMember", record.getUpdateWelfareMember() ? WelfareMemberMode.NORMAL.getCode() : WelfareMemberMode.NONE.getCode()), Cnd.where("id", "=", record.getUserId()));
|
||||
}
|
||||
if (null != record.getUpdateMember()){
|
||||
sysUserService.update(Chain.make("member", record.getUpdateMember() ? MemberMode.NORMAL.getCode() : MemberMode.NONE.getCode()), Cnd.where("id", "=", record.getUserId()));
|
||||
}
|
||||
if (null != record.getUpdateMember() && record.getUpdateMember()) {
|
||||
UserMode.addMemberRole(record.getUserId());
|
||||
} else {
|
||||
UserMode.removeMemberRole(record.getUserId());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新会员状态
|
||||
*
|
||||
* @param status 会员状态
|
||||
* @param userId 用户id
|
||||
*/
|
||||
public static void updateMemberStatus(MemberStatus status, String userId) {
|
||||
sysUserService.update(Chain.make("memberStatus", status.getCode()), Cnd.where("id", "=", userId));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 在职状态和人员类别变更
|
||||
* zzr 2024-03-10 新增在职状态及人员类别的变更
|
||||
* @param record 变更记录
|
||||
*/
|
||||
public static void updateUserStateAndPersonType(MemberChangeRecord record){
|
||||
Chain chain = Chain.make("eCard",null);
|
||||
if (Strings.isNotBlank(record.getChangeUserState())) {
|
||||
chain.add("userState", record.getChangeUserState());
|
||||
} else if (Strings.isNotBlank(record.getChangePersonType())) {
|
||||
chain.add("personType", record.getChangePersonType());
|
||||
}
|
||||
sysUserService.update(chain,Cnd.where("id","=",record.getUserId()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 变更类型
|
||||
*/
|
||||
private int changeType;
|
||||
|
||||
public static SysUserService sysUserService = ViResource.ioc.getByType(SysUserService.class);
|
||||
public static SysRoleService sysRoleService = ViResource.ioc.getByType(SysRoleService.class);
|
||||
public static ViService<MemberChangeRecord> recordViService = ViResource.ioc.getByType(ViServiceImpl.class);
|
||||
|
||||
MemberChangeHandle(int changeType) {
|
||||
this.changeType = changeType;
|
||||
}
|
||||
|
||||
public abstract void change(MemberChangeRecord record);
|
||||
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.model;
|
||||
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.base.model.AuditState;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 会员申请记录
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Table("member_apply_record")
|
||||
public class MemberApplyRecord {
|
||||
@Column
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
@Comment("工会id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String unionId;
|
||||
|
||||
@Column
|
||||
@Comment("用户id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String userId;
|
||||
|
||||
@Column
|
||||
@Comment("状态id")
|
||||
@ColDefine(type = ColType.INT, width = 8)
|
||||
private Integer stateId;
|
||||
|
||||
@Column
|
||||
@Comment("申请时间")
|
||||
private Date applyTime;
|
||||
|
||||
/**
|
||||
* @see io.v.nutz.zhgh.member.constant.MemberStatus
|
||||
*/
|
||||
@Column
|
||||
@Comment("加入方式")
|
||||
@ColDefine(type = ColType.INT, width = 2)
|
||||
private Integer memberStates;
|
||||
|
||||
@Column
|
||||
@Comment("分工会审核记录id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
public String unionAuditId;
|
||||
|
||||
@Column
|
||||
@Comment("校工会审核记录id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
public String schoolAuditId;
|
||||
|
||||
@One(field = "unionAuditId")
|
||||
public Audit unionAudit;
|
||||
|
||||
@One(field = "schoolAuditId")
|
||||
public Audit schoolAudit;
|
||||
|
||||
@One(field = "stateId")
|
||||
private AuditState auditState;
|
||||
|
||||
}
|
||||
@@ -1,184 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.model;
|
||||
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.base.model.AuditState;
|
||||
import io.v.nutz.sys.models.Sys_union;
|
||||
import io.v.nutz.sys.models.Sys_unit;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 会员变更记录
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Table("member_change_record")
|
||||
public class MemberChangeRecord {
|
||||
@Column
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* @see io.v.nutz.zhgh.member.handle.MemberChangeHandle
|
||||
*/
|
||||
@Column
|
||||
@Comment("变更类型")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private int type;
|
||||
|
||||
@Column
|
||||
@Comment("用户id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String userId;
|
||||
|
||||
@Column
|
||||
@Comment("原单位id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String originUnitId;
|
||||
|
||||
@Column
|
||||
@Comment("原工会id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String originUnionId;
|
||||
|
||||
@Column
|
||||
@Comment("原三级单位id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String originThreeUnitId;
|
||||
|
||||
@Column
|
||||
@Comment("现单位id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String currentUnitId;
|
||||
|
||||
@Column
|
||||
@Comment("现三级单位id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String currentThreeUnitId;
|
||||
|
||||
@Column
|
||||
@Comment("现工会id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String currentUnionId;
|
||||
|
||||
@Column
|
||||
@Comment("备注")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 500)
|
||||
private String remark;
|
||||
|
||||
@Column
|
||||
@Comment("申请时间")
|
||||
private Date applyTime;
|
||||
|
||||
/**
|
||||
* @see MemberChangeOrigin
|
||||
*/
|
||||
@Column
|
||||
@Comment("申请来源")
|
||||
@ColDefine(type = ColType.INT, width = 8)
|
||||
private Integer applyOrigin;
|
||||
|
||||
/**
|
||||
* @see MemberChangeRecordMode
|
||||
*/
|
||||
@Column
|
||||
@Comment("记录模式")
|
||||
@ColDefine(type = ColType.INT, width = 8)
|
||||
private Integer recordMode;
|
||||
|
||||
@Column
|
||||
@Comment("状态id")
|
||||
@ColDefine(type = ColType.INT, width = 8)
|
||||
private Integer stateId;
|
||||
|
||||
@Column
|
||||
@Comment("分工会审核记录id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String unionAuditId;
|
||||
|
||||
@Column
|
||||
@Comment("校工会审核记录id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String schoolAuditId;
|
||||
|
||||
@Column
|
||||
@Comment("福利会员(true:增加福利会员 false:取消福利会员);针对新入职")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean updateWelfareMember;
|
||||
|
||||
@Column
|
||||
@Comment("是否更新会员")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean updateMember;
|
||||
|
||||
@Column
|
||||
@Comment("身份证号异动")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
private String changeIdCard;
|
||||
|
||||
@Column
|
||||
@Comment("手机号异动")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
private String changeMobile;
|
||||
|
||||
@Column
|
||||
@Comment("学历异动")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
private String changeEducation;
|
||||
|
||||
@Column
|
||||
@Comment("在职状态")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||
private String changeUserState;
|
||||
|
||||
@Column
|
||||
@Comment("人员类别")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||
private String changePersonType;
|
||||
|
||||
@Column
|
||||
@Comment("任务id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String taskId;
|
||||
|
||||
@One(field = "unionAuditId")
|
||||
private Audit unionAudit;
|
||||
|
||||
@One(field = "schoolAuditId")
|
||||
private Audit schoolAudit;
|
||||
|
||||
@One(field = "stateId")
|
||||
private AuditState auditState;
|
||||
|
||||
@One(field = "originUnitId")
|
||||
private Sys_unit originUnit;
|
||||
|
||||
@One(field = "originThreeUnitId")
|
||||
private Sys_unit originThreeUnit;
|
||||
|
||||
@One(field = "originUnionId")
|
||||
private Sys_union originUnion;
|
||||
|
||||
@One(field = "currentUnitId")
|
||||
private Sys_unit currentUnit;
|
||||
|
||||
@One(field = "currentThreeUnitId")
|
||||
private Sys_unit currentThreeUnit;
|
||||
|
||||
@One(field = "currentUnionId")
|
||||
private Sys_union currentUnion;
|
||||
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.service;
|
||||
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.dao.CndPlus;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Todo
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
public interface MemberService extends ViService<Sys_user> {
|
||||
|
||||
/**
|
||||
* 会员变更记录
|
||||
*
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<NutMap> memberChangeRecords(String userId);
|
||||
|
||||
|
||||
/**
|
||||
* 会员变更记录
|
||||
*
|
||||
* @param cnd
|
||||
* @return
|
||||
*/
|
||||
Pagination memberChangeRecords(PageForm pageForm, CndPlus cnd);
|
||||
|
||||
/**
|
||||
* 某会员历史变更记录
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<NutMap> memberHistoryRecordsByUserId(String userId);
|
||||
}
|
||||
@@ -1,118 +0,0 @@
|
||||
package io.v.nutz.zhgh.member.service.impl;
|
||||
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.dao.CndPlus;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
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.loader.annotation.IocBean;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.plugins.wkcache.annotation.CacheDefaults;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @author 1V
|
||||
*/
|
||||
@IocBean(args = {"refer:dao"})
|
||||
@CacheDefaults(cacheName = "member")
|
||||
public class MemberServiceImpl extends ViServiceImpl<Sys_user> implements MemberService {
|
||||
public MemberServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
private final String MEMBER_CHANGE_RECORDS = """
|
||||
SELECT
|
||||
mcr.*,
|
||||
LEFT ( mcr.applyTime, 10 ) applyDate,
|
||||
u.username,
|
||||
u.loginname,
|
||||
u.unitname,
|
||||
u.unitcode,
|
||||
u.unionname,
|
||||
u.unioncode,
|
||||
u.threeUnitName,
|
||||
u.unionGroupName,
|
||||
state.stateName,
|
||||
state.stateColor,
|
||||
originUnit.unitcode originUnitCode,
|
||||
originUnit.`name` originUnitName,
|
||||
originUnion.unioncode originUnionCode,
|
||||
originUnion.unionname originUnionName,
|
||||
currentUnit.unitcode currentUnitCode,
|
||||
currentUnit.`name` currentUnitName,
|
||||
currentUnion.unioncode currentUnionCode,
|
||||
currentUnion.unionname currentUnionName,
|
||||
originThreeUnit.`name` originThreeUnitName,
|
||||
currentThreeUnit.`name` currentThreeUnitName
|
||||
FROM
|
||||
member_change_record mcr
|
||||
LEFT JOIN `user` u ON mcr.userId = u.id
|
||||
LEFT JOIN audit_state state ON mcr.stateId = state.stateId
|
||||
LEFT JOIN sys_unit originUnit ON mcr.originUnitId = originUnit.id
|
||||
LEFT JOIN sys_union originUnion ON mcr.originUnionId = originUnion.id
|
||||
LEFT JOIN sys_unit currentUnit ON mcr.currentUnitId = currentUnit.id
|
||||
LEFT JOIN sys_union currentUnion ON mcr.currentUnionId = currentUnion.id
|
||||
LEFT JOIN sys_unit originThreeUnit ON mcr.originThreeUnitId = originThreeUnit.id
|
||||
LEFT JOIN sys_unit currentThreeUnit ON mcr.currentThreeUnitId = currentThreeUnit.id
|
||||
$condition
|
||||
""";
|
||||
|
||||
@Override
|
||||
public List<NutMap> memberChangeRecords(String userId) {
|
||||
Sql sql = Sqls.create(MEMBER_CHANGE_RECORDS);
|
||||
sql.setCondition(Cnd.where("mcr.userId", "=", userId).desc("mcr.applyTime"));
|
||||
return listMap(sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination memberChangeRecords(PageForm pageForm, CndPlus cnd) {
|
||||
Sql sql = Sqls.create(MEMBER_CHANGE_RECORDS).setCondition(cnd);
|
||||
return list(pageForm, sql);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<NutMap> memberHistoryRecordsByUserId(String userId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
his.id,
|
||||
his.changeTime,
|
||||
his.loginname,
|
||||
his.username,
|
||||
his.mobile,
|
||||
his.birthday,
|
||||
his.userState,
|
||||
his.personType,
|
||||
his.sex,
|
||||
his.changeTypes,
|
||||
his.changeOrigin,
|
||||
his.changeOperator,
|
||||
his.memberChangeRecordId,
|
||||
his.changeReason,
|
||||
his.lastHistoryId,
|
||||
u.unitname,
|
||||
u.unionname,
|
||||
mcr.stateId,
|
||||
state.stateName,
|
||||
state.stateColor
|
||||
FROM
|
||||
`user_history` his
|
||||
LEFT JOIN member_change_record mcr ON mcr.id = his.memberChangeRecordId
|
||||
LEFT JOIN audit_state state ON mcr.stateId = state.stateId
|
||||
LEFT JOIN `user` u ON u.loginname = his.loginname
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("u.id", "=", userId);
|
||||
cnd.desc("his.changeTime");
|
||||
sql.setCondition(cnd);
|
||||
return listMap(sql);
|
||||
}
|
||||
}
|
||||
@@ -1,112 +0,0 @@
|
||||
package io.v.nutz.zhgh.mobile.member;
|
||||
|
||||
import cn.wizzer.framework.base.service.BaseService;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.base.dao.CndPlus;
|
||||
import io.v.nutz.zhgh.member.constant.MemberApplyState;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
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.Lang;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2021/9/26 9:24
|
||||
* @description
|
||||
*/
|
||||
@IocBean
|
||||
@At("/mobile/member/audit")
|
||||
@Ok("json:full")
|
||||
public class MemberAuditUnionController {
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/mobile/member/audit_list.html")
|
||||
public void indext() {
|
||||
}
|
||||
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
public Object pageData(int pageNumber, int pageSize, boolean isAudit, Integer year) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
mar.*,
|
||||
st.stateName,
|
||||
st.stateColor,
|
||||
u.unionname,
|
||||
u.username,
|
||||
u.loginname,
|
||||
u.personType
|
||||
FROM
|
||||
`member_apply_record` mar
|
||||
LEFT JOIN audit_state st ON st.stateId = mar.stateId
|
||||
LEFT JOIN `user` u ON u.id = mar.userId
|
||||
$condition
|
||||
""");
|
||||
|
||||
CndPlus cnd = CndPlus.create();
|
||||
cnd.and("mar.memberStates", "=", 1);
|
||||
|
||||
if (ShiroUtil.hasAnyRoles("sysadmin")) {
|
||||
cnd.and("mar.stateId", "in", isAudit ? Lang.array(MemberApplyState.UNION_FAIL, MemberApplyState.SCHOOL_UNION_FAIL, MemberApplyState.NORMAL_MEMBER) : Lang.array(MemberApplyState.UNION, MemberApplyState.SCHOOL_UNION));
|
||||
} else {
|
||||
if (ShiroUtil.hasAnyRoles("A06,wyh02") && ShiroUtil.hasAnyRoles("H04")) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.or("mar.stateId", isAudit ? ">" : "=", MemberApplyState.SCHOOL_UNION);
|
||||
seg.or(CndPlus.exps("mar.unionId", "=", Vi.getUnionId()).and("mar.stateId", isAudit ? ">" : "=", MemberApplyState.UNION));
|
||||
cnd.and(seg);
|
||||
} else if (ShiroUtil.hasAnyRoles("A06,wyh02")) {
|
||||
cnd.and("mar.stateId", isAudit ? ">" : "=", MemberApplyState.SCHOOL_UNION);
|
||||
} else if (ShiroUtil.hasAnyRoles("H04")) {
|
||||
cnd.and("mar.unionId", "=", Vi.getUnionId());
|
||||
cnd.and("mar.stateId", isAudit ? ">" : "=", MemberApplyState.UNION);
|
||||
}
|
||||
|
||||
|
||||
/*if (ShiroUtil.hasAnyRoles("A06,wyh02")) {
|
||||
cnd.and("mar.stateId", isAudit ? ">" : "=", MemberApplyState.SCHOOL_UNION);
|
||||
} else if (ShiroUtil.hasAnyRoles("H04")) {
|
||||
cnd.and("mar.unionId", "=", Vi.getUnionId());
|
||||
cnd.and("mar.stateId", isAudit ? ">" : "=", MemberApplyState.UNION);
|
||||
}*/
|
||||
}
|
||||
|
||||
/* if (!ShiroUtil.hasAnyRoles("sysadmin")) {
|
||||
if (ShiroUtil.hasAnyRoles("A06,wyh02")) {
|
||||
cnd.and("mar.stateId", isAudit ? ">" : "=", MemberApplyState.SCHOOL_UNION);
|
||||
}
|
||||
}*/
|
||||
|
||||
cnd.andEx("YEAR(mar.applyTime)", "=", year);
|
||||
|
||||
cnd.asc("mar.stateId");
|
||||
cnd.desc("mar.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
return baseService.listPageMap(pageNumber, pageSize, sql);
|
||||
}
|
||||
|
||||
|
||||
@At("/findOne")
|
||||
@Ok("re")
|
||||
public String findOne(Integer stateId) {
|
||||
if (stateId == MemberApplyState.UNION && ShiroUtil.hasAnyRoles("H04,A06,sysadmin")) {
|
||||
return "beetl:/mobile/member/union_Audit.html";
|
||||
} else if (stateId == MemberApplyState.SCHOOL_UNION && ShiroUtil.hasAnyRoles("A06,sysadmin")) {
|
||||
return "beetl:/mobile/member/school_Audit.html";
|
||||
} /*else if (stateId == MemberApplyState.NORMAL_MEMBER || stateId == MemberApplyState.UNION_FAIL || stateId == MemberApplyState.SCHOOL_UNION_FAIL) {
|
||||
return "beetl:/mobile/member/detail.html";
|
||||
}*/
|
||||
return "beetl:/mobile/member/detail.html";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
package io.v.nutz.zhgh.mobile.member;
|
||||
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName MemberChangeAuditController
|
||||
* @Description TODO
|
||||
* @Author zhf
|
||||
* @Date 2023/8/1 9:21
|
||||
*/
|
||||
@IocBean
|
||||
@At("/mobile/member/change/audit")
|
||||
@Ok("json:full")
|
||||
public class MemberChangeAuditController {
|
||||
|
||||
@At("/union")
|
||||
@Ok("beetl:/mobile/member/union_audit_change_list.html")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At("/school")
|
||||
@Ok("beetl:/mobile/member/school_audit_change_list.html")
|
||||
public void index2() {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package io.v.nutz.zhgh.mobile.member;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.service.BaseService;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
@@ -27,7 +27,7 @@ import java.util.List;
|
||||
public class MemberMobileController {
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import io.v.nutz.base.utils.MsgApi;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.web.commons.base.Globals;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.UserMode;
|
||||
import io.v.nutz.zhgh.mobile.selfApplyUser.models.SelfApplyUser;
|
||||
import io.v.nutz.zhgh.shopping.models.ShoppingType;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
|
||||
-9
@@ -3,24 +3,15 @@ package io.v.nutz.zhgh.mutualInsurance.zhejiang.controller;
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import io.v.nutz.base.page.Pagination;
|
||||
import io.v.nutz.base.result.Result;
|
||||
import io.v.nutz.base.utils.PageUtil;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.base.utils.ViTool;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.MemberMode;
|
||||
import io.v.nutz.zhgh.mutualInsurance.zhejiang.param.ZheJiangMutualInsuranceUserPageForm;
|
||||
import io.v.nutz.zhgh.mutualInsurance.zhejiang.service.ZheJiangMutualInsuranceUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
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;
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ import io.v.nutz.base.utils.PageUtil;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.MemberMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.MemberMode;
|
||||
import io.v.nutz.zhgh.mutualInsurance.zhejiang.model.ZheJiangMutualInsuranceUserInfo;
|
||||
import io.v.nutz.zhgh.mutualInsurance.zhejiang.param.ZheJiangMutualInsuranceUserPageForm;
|
||||
import io.v.nutz.zhgh.mutualInsurance.zhejiang.service.ZheJiangMutualInsuranceUserService;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member;
|
||||
package io.v.nutz.zhgh.staffmanage.member;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
+3
-5
@@ -1,12 +1,10 @@
|
||||
package io.v.nutz.zhgh.member;
|
||||
package io.v.nutz.zhgh.staffmanage.member;
|
||||
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.utils.ViResource;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.models.Sys_user_role;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.zhgh.member.constant.MemberOrigin;
|
||||
import io.v.nutz.zhgh.member.constant.MemberStatus;
|
||||
import org.apache.shiro.crypto.hash.Sha256Hash;
|
||||
import org.apache.shiro.util.ByteSource;
|
||||
import org.nutz.dao.Chain;
|
||||
@@ -174,7 +172,7 @@ public interface UserMode {
|
||||
static void addMemberRole(String userid) {
|
||||
SysUserService sysUserService = ioc.getByType(SysUserService.class);
|
||||
|
||||
sysUserService.update(Chain.make("member", MemberMode.NORMAL.getCode()).add("memberJoinTime", new Date()).add("memberStatus", MemberStatus.NORMAL.getCode()), Cnd.where("id", "=", userid));
|
||||
sysUserService.update(Chain.make("member", MemberMode.NORMAL.getCode()).add("memberJoinTime", new Date()), Cnd.where("id", "=", userid));
|
||||
|
||||
addRoleAndFlush(userid, Roles.MEMBER);
|
||||
|
||||
@@ -189,7 +187,7 @@ public interface UserMode {
|
||||
static void addMemberRole(String[] userids) {
|
||||
SysUserService sysUserService = ioc.getByType(SysUserService.class);
|
||||
|
||||
sysUserService.update(Chain.make("member", MemberMode.NORMAL.getCode()).add("memberJoinTime", new Date()).add("memberStatus", MemberStatus.NORMAL.getCode()).add("memberOrigin", MemberOrigin.BATCH.getCode()), Cnd.where("id", "in", userids));
|
||||
sysUserService.update(Chain.make("member", MemberMode.NORMAL.getCode()).add("memberJoinTime", new Date()), Cnd.where("id", "in", userids));
|
||||
|
||||
addRoleAndFlush(userids, Roles.MEMBER);
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member;
|
||||
package io.v.nutz.zhgh.staffmanage.member;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@@ -0,0 +1,33 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.constant;
|
||||
|
||||
import io.v.nutz.base.annontation.SelectEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 会员变更来源
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
@Getter
|
||||
@SelectEnum
|
||||
@AllArgsConstructor
|
||||
public enum MemberChangeOrigin {
|
||||
|
||||
PERSONAL("个人申请变更"),
|
||||
BRANCH_UNION("分工会变更"),
|
||||
BRANCH_UNION_VERIFICATION("分工会名单事项核对"),
|
||||
UNION_GROUP("工会小组变更"),
|
||||
SCHOOL_UNION("校工会变更"),
|
||||
SCHOOL_UNION_VERIFICATION("校工会名单事项核对"),
|
||||
SYSTEM("系统数据更新"),
|
||||
HAND_MOVEMENT("手动数据更新"),
|
||||
OTHER("其他方式变更");
|
||||
|
||||
/**
|
||||
* 避免和枚举类的name冲突
|
||||
*/
|
||||
public final String changeOriginName;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.constant;
|
||||
|
||||
import io.v.nutz.base.annontation.SelectEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberChangeType
|
||||
* @Date 2025/1/20 18:57
|
||||
* @注释
|
||||
*/
|
||||
@Getter
|
||||
@SelectEnum
|
||||
@AllArgsConstructor
|
||||
public enum MemberChangeType {
|
||||
|
||||
//变更类型
|
||||
NEW("NEW","新入职"),
|
||||
RESTORE("RESTORE","入会"),
|
||||
WITHDRAWAL("WITHDRAWAL","退会"),
|
||||
WORK("WORK","在职"),
|
||||
LEAVE_SCHOOL("LEAVE_SCHOOL","离校"),
|
||||
RETIRE("RETIRE","退休"),
|
||||
RESIGN("RESIGN","辞职"),
|
||||
OUT("OUT","调出"),
|
||||
LEAVE_OFFICE("LEAVE_OFFICE","离职"),
|
||||
OTHER("OTHER","其他"),
|
||||
UNIT_CHANGE("UNIT_CHANGE","单位异动"),
|
||||
UNION_CHANGE("UNION_CHANGE","工会关系异动"),
|
||||
BASIC_CHANGE("BASIC_CHANGE","基本信息异动");
|
||||
|
||||
private final String type;
|
||||
private final String changeTypeName;
|
||||
}
|
||||
+24
-24
@@ -1,14 +1,14 @@
|
||||
package io.v.nutz.zhgh.member.controller;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller;
|
||||
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.models.Sys_menu;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.constant.MemberApplyState;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberApplyState;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
|
||||
@RequiresAuthentication
|
||||
public class MemberAgendaController {
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject
|
||||
private Vi vi;
|
||||
@@ -66,17 +66,17 @@ public class MemberAgendaController {
|
||||
""");
|
||||
|
||||
int marUnionNum = 0;
|
||||
Cnd marUnionCnd = Cnd.where("mar.stateId", "=", MemberApplyState.UNION);
|
||||
// Cnd marUnionCnd = Cnd.where("mar.stateId", "=", MemberApplyState.UNION);
|
||||
if (!anyRoles) {
|
||||
marUnionCnd.and("u.unionid", "=", Vi.getUnionId());
|
||||
// marUnionCnd.and("u.unionid", "=", Vi.getUnionId());
|
||||
}
|
||||
marSql.setCondition(marUnionCnd);
|
||||
// marSql.setCondition(marUnionCnd);
|
||||
marUnionNum = memberService.count(marSql);
|
||||
list.add(new NutMap().addv("title", title).addv("iconClass", vi.getIconByPath("/platform/member/apply/audit/union")).addv("label", "待院级工会入会审核").addv("number", marUnionNum).addv("url", "/platform/member/apply/audit/union"));
|
||||
|
||||
int marSchoolNum = 0;
|
||||
Cnd marSchoolCnd = Cnd.where("mar.stateId", "=", MemberApplyState.SCHOOL_UNION);
|
||||
marSql.setCondition(marSchoolCnd);
|
||||
// Cnd marSchoolCnd = Cnd.where("mar.stateId", "=", MemberApplyState.SCHOOL_UNION);
|
||||
// marSql.setCondition(marSchoolCnd);
|
||||
marSchoolNum = memberService.count(marSql);
|
||||
list.add(new NutMap().addv("title", title).addv("iconClass", vi.getIconByPath("/platform/member/apply/audit/school")).addv("label", "待校工会入会审核").addv("number", marSchoolNum).addv("url", "/platform/member/apply/audit/school"));
|
||||
|
||||
@@ -92,19 +92,19 @@ public class MemberAgendaController {
|
||||
""");
|
||||
|
||||
int mcrUnionNum = 0;
|
||||
Cnd mcrUnionCnd = Cnd.where("mcr.stateId", "=", MemberChangeApplyState.UNION).and("recordMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
if (!anyRoles) {
|
||||
mcrUnionCnd.and("u.unionid", "=", Vi.getUnionId());
|
||||
}
|
||||
mcrSql.setCondition(mcrUnionCnd);
|
||||
mcrUnionNum = memberService.count(mcrSql);
|
||||
list.add(new NutMap().addv("title", title).addv("iconClass", vi.getIconByPath("/platform/member/apply/audit/union")).addv("label", "待院级工会变更审核").addv("number", mcrUnionNum).addv("url", "/platform/member/change/audit/union"));
|
||||
|
||||
int mcrSchoolNum = 0;
|
||||
Cnd mcrSchoolCnd = Cnd.where("mcr.stateId", "=", MemberChangeApplyState.SCHOOL_UNION).and("recordMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
mcrSql.setCondition(mcrSchoolCnd);
|
||||
mcrSchoolNum = memberService.count(mcrSql);
|
||||
list.add(new NutMap().addv("title", title).addv("iconClass", vi.getIconByPath("/platform/member/apply/audit/school")).addv("label", "待校工会变更审核").addv("number", mcrSchoolNum).addv("url", "/platform/member/change/audit/school"));
|
||||
// Cnd mcrUnionCnd = Cnd.where("mcr.stateId", "=", MemberChangeApplyState.UNION).and("recordMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
// if (!anyRoles) {
|
||||
// mcrUnionCnd.and("u.unionid", "=", Vi.getUnionId());
|
||||
// }
|
||||
// mcrSql.setCondition(mcrUnionCnd);
|
||||
// mcrUnionNum = memberService.count(mcrSql);
|
||||
// list.add(new NutMap().addv("title", title).addv("iconClass", vi.getIconByPath("/platform/member/apply/audit/union")).addv("label", "待院级工会变更审核").addv("number", mcrUnionNum).addv("url", "/platform/member/change/audit/union"));
|
||||
//
|
||||
// int mcrSchoolNum = 0;
|
||||
// Cnd mcrSchoolCnd = Cnd.where("mcr.stateId", "=", MemberChangeApplyState.SCHOOL_UNION).and("recordMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
// mcrSql.setCondition(mcrSchoolCnd);
|
||||
// mcrSchoolNum = memberService.count(mcrSql);
|
||||
// list.add(new NutMap().addv("title", title).addv("iconClass", vi.getIconByPath("/platform/member/apply/audit/school")).addv("label", "待校工会变更审核").addv("number", mcrSchoolNum).addv("url", "/platform/member/change/audit/school"));
|
||||
|
||||
|
||||
Sys_user user = (Sys_user) ShiroUtil.getPrincipal();
|
||||
+83
-56
@@ -1,18 +1,20 @@
|
||||
package io.v.nutz.zhgh.member.controller;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.models.Sys_unit;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.data.model.UserHistory;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.member.model.MemberApplyRecord;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.UserMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberApplyRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
@@ -40,7 +42,7 @@ import java.util.stream.Collectors;
|
||||
public class MemberCommonController {
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
@@ -57,6 +59,31 @@ public class MemberCommonController {
|
||||
@Inject("MemberChangeRecord")
|
||||
private ViService<MemberChangeRecord> changeRecordViService;
|
||||
|
||||
|
||||
@At
|
||||
@RequiresAuthentication
|
||||
public Object fetchMemberUserById(String userId){
|
||||
if (StrUtil.isBlank(userId)) {
|
||||
return Result.error("未获取到参数,无法查询");
|
||||
}
|
||||
// 根据权限判断是否可以查询用户信息
|
||||
User user = dao.fetch(User.class, Cnd.where("id", "=", userId));
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin, SchoolUnionAdmin, SchoolUnionMemberAdmin")) {
|
||||
if (ShiroUtil.hasAnyRoles("H04, branchUnionMemberAdmin")) {
|
||||
if (!Vi.getUnionId().equals(user.getUnionid())) {
|
||||
return Result.error("您没有权限!");
|
||||
}
|
||||
} else {
|
||||
if (user.getId().equals(ShiroUtil.getUserId())){
|
||||
return Result.error("您没有权限!");
|
||||
}
|
||||
}
|
||||
}
|
||||
return Result.success().addData(user);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
*
|
||||
@@ -206,59 +233,59 @@ public class MemberCommonController {
|
||||
NutMap sysUserMap = (NutMap) Daos.query(dao, Sqls.create("select * from sys_user where loginname=@loginname").setParam("loginname", userHistory.getLoginname()).toString(), Sqls.callback.map());
|
||||
NutMap userHisMap = Lang.obj2nutmap(userHistory);
|
||||
|
||||
if (StrUtil.isNotBlank(userHistory.getMemberChangeRecordId())) {
|
||||
if (StrUtil.isNotBlank(userHistory.getRecordId())) {
|
||||
//从变更来的 特殊 需要审核
|
||||
MemberChangeRecord changeRecord = dao.fetch(MemberChangeRecord.class, userHistory.getMemberChangeRecordId());
|
||||
String originUnitId = StrUtil.blankToDefault(changeRecord.getOriginUnitId(), "");
|
||||
String currentUnitId = StrUtil.blankToDefault(changeRecord.getCurrentUnitId(), "");
|
||||
|
||||
if (!originUnitId.equals(currentUnitId) && StrUtil.isNotBlank(currentUnitId)) {
|
||||
compareData.add(NutMap.NEW()
|
||||
.addv("columnName", "单位")
|
||||
.addv("newValue", unitMap.get(currentUnitId))
|
||||
.addv("oldValue", unitMap.get(originUnitId))
|
||||
);
|
||||
}
|
||||
|
||||
String userState = StrUtil.blankToDefault(changeRecord.getChangeUserState(), "");
|
||||
if (StrUtil.isNotBlank(userState) && !userState.equals(sysUserMap.getString("userState", ""))) {
|
||||
compareData.add(NutMap.NEW()
|
||||
.addv("columnName", "在职状态")
|
||||
.addv("newValue", userState)
|
||||
.addv("oldValue", sysUserMap.getString("userState"))
|
||||
);
|
||||
}
|
||||
|
||||
String personType = StrUtil.blankToDefault(changeRecord.getChangePersonType(), "");
|
||||
if (StrUtil.isNotBlank(personType) && !personType.equals(sysUserMap.getString("personType", ""))) {
|
||||
compareData.add(NutMap.NEW()
|
||||
.addv("columnName", "人员类型")
|
||||
.addv("newValue", personType)
|
||||
.addv("oldValue", sysUserMap.getString("personType"))
|
||||
);
|
||||
}
|
||||
|
||||
//在职,退休,离职可能会发生会员和福利会员的变化
|
||||
if(changeRecord.getUpdateMember()!=null && changeRecord.getUpdateMember()){
|
||||
//说明要改变会员状态
|
||||
compareData.add(NutMap.NEW()
|
||||
.addv("columnName", "会员资格")
|
||||
.addv("newValue", "否")
|
||||
.addv("oldValue", "是")
|
||||
);
|
||||
}
|
||||
|
||||
if(changeRecord.getUpdateWelfareMember()!=null && changeRecord.getUpdateWelfareMember()){
|
||||
//说明要改变福利会员状态
|
||||
compareData.add(NutMap.NEW()
|
||||
.addv("columnName", "福利会员资格")
|
||||
.addv("newValue", "否")
|
||||
.addv("oldValue", "是")
|
||||
);
|
||||
}
|
||||
// MemberChangeRecord changeRecord = dao.fetch(MemberChangeRecord.class, userHistory.getRecordId());
|
||||
// String originUnitId = StrUtil.blankToDefault(changeRecord.getOriginUnitId(), "");
|
||||
// String currentUnitId = StrUtil.blankToDefault(changeRecord.getCurrentUnitId(), "");
|
||||
//
|
||||
// if (!originUnitId.equals(currentUnitId) && StrUtil.isNotBlank(currentUnitId)) {
|
||||
// compareData.add(NutMap.NEW()
|
||||
// .addv("columnName", "单位")
|
||||
// .addv("newValue", unitMap.get(currentUnitId))
|
||||
// .addv("oldValue", unitMap.get(originUnitId))
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// String userState = StrUtil.blankToDefault(changeRecord.getChangeUserState(), "");
|
||||
// if (StrUtil.isNotBlank(userState) && !userState.equals(sysUserMap.getString("userState", ""))) {
|
||||
// compareData.add(NutMap.NEW()
|
||||
// .addv("columnName", "在职状态")
|
||||
// .addv("newValue", userState)
|
||||
// .addv("oldValue", sysUserMap.getString("userState"))
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// String personType = StrUtil.blankToDefault(changeRecord.getChangePersonType(), "");
|
||||
// if (StrUtil.isNotBlank(personType) && !personType.equals(sysUserMap.getString("personType", ""))) {
|
||||
// compareData.add(NutMap.NEW()
|
||||
// .addv("columnName", "人员类型")
|
||||
// .addv("newValue", personType)
|
||||
// .addv("oldValue", sysUserMap.getString("personType"))
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// //在职,退休,离职可能会发生会员和福利会员的变化
|
||||
// if(changeRecord.getUpdateMember()!=null && changeRecord.getUpdateMember()){
|
||||
// //说明要改变会员状态
|
||||
// compareData.add(NutMap.NEW()
|
||||
// .addv("columnName", "会员资格")
|
||||
// .addv("newValue", "否")
|
||||
// .addv("oldValue", "是")
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// if(changeRecord.getUpdateWelfareMember()!=null && changeRecord.getUpdateWelfareMember()){
|
||||
// //说明要改变福利会员状态
|
||||
// compareData.add(NutMap.NEW()
|
||||
// .addv("columnName", "福利会员资格")
|
||||
// .addv("newValue", "否")
|
||||
// .addv("oldValue", "是")
|
||||
// );
|
||||
// }
|
||||
|
||||
//需要包含分工会、校工会审核信息
|
||||
String memberChangeRecordId = userHistory.getMemberChangeRecordId();
|
||||
String memberChangeRecordId = userHistory.getRecordId();
|
||||
MemberChangeRecord memberChangeRecord = dao.fetch(MemberChangeRecord.class, memberChangeRecordId);
|
||||
dao.fetchLinks(memberChangeRecord,"auditState|unionAudit|schoolAudit");
|
||||
|
||||
+6
-6
@@ -1,12 +1,12 @@
|
||||
package io.v.nutz.zhgh.member.controller;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.service.BaseService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import io.v.nutz.zhgh.member.model.MemberCheckSelfTask;
|
||||
import io.v.nutz.zhgh.member.model.MemberCheckTask;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberCheckSelfTask;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberCheckTask;
|
||||
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
@@ -41,8 +41,8 @@ public class MemberSelfAgentController {
|
||||
List<MemberCheckTask> checkTasks = baseService.dao().query(MemberCheckTask.class, Cnd.where("startTime", "<", DateUtil.date())
|
||||
.and("endTime", ">", DateUtil.date())
|
||||
.and("createTaskMode", "=", 2)
|
||||
.and("year", "=", DateUtil.thisYear())
|
||||
.and("taskMode", "=", MemberChangeRecordMode.MEMBER.getCode()));
|
||||
.and("year", "=", DateUtil.thisYear()));
|
||||
// .and("taskMode", "=", MemberChangeRecordMode.MEMBER.getCode()));
|
||||
|
||||
final String title = "【会员系统】";
|
||||
List<NutMap> list = new ArrayList<>();
|
||||
+166
@@ -0,0 +1,166 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.apply;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.models.Sys_union;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.sys.services.SysLocalProcessService;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.staffmanage.member.handle.MemberApplyToDoHandler;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberApplyRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.param.pageForm.MemberApplyPageForm;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.model.SpecialStaff;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.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 org.nutz.mvc.annotation.Param;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberApplyBranchUnionAuditController
|
||||
* @Date 2025/2/12 8:38
|
||||
* @注释
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/member/apply/branchUnion/audit")
|
||||
public class MemberApplyBranchUnionAuditController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private MemberCommonService memberCommonService;
|
||||
@Inject
|
||||
private SysLocalProcessService localProcessService;
|
||||
|
||||
@At("/")
|
||||
@Ok("beetl:/platform/member/apply/branchUnionAudit/index.html")
|
||||
@RequiresPermissions("member.apply.branchUnion.audit")
|
||||
public void index() {}
|
||||
|
||||
|
||||
@At
|
||||
@RequiresPermissions("member.apply.branchUnion.audit")
|
||||
public Object pageData(MemberApplyPageForm pageForm){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
record.*,
|
||||
state.stateName,
|
||||
su.unionname AS allocationUnionName
|
||||
FROM
|
||||
member_apply_record record
|
||||
LEFT JOIN audit_state state ON state.stateId = record.applyStateId
|
||||
LEFT JOIN sys_union su ON su.id = record.allocationUnionId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
pageForm.buildSearch(cnd, "record.");
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin, A06, SchoolUnionMemberAdmin")) {
|
||||
cnd.and("record.allocationUnionId", "=", Vi.getUnionId());
|
||||
}
|
||||
if (pageForm.getAudit()) {
|
||||
cnd.and("record.applyStateId", ">", 50);
|
||||
} else {
|
||||
cnd.and("record.applyStateId", "=", 50);
|
||||
}
|
||||
cnd.desc("record.applyDateTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success().addData(pagination);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.apply.branchUnion.audit")
|
||||
@SLog(type = "memberApply", tag = "会员入会申请", msg = "分工会审核")
|
||||
public Object approval(@Param("audit") Audit audit, String id){
|
||||
audit.setAuditor(ShiroUtil.getUserId());
|
||||
audit.setLoginname(ShiroUtil.getPlatformLoginname());
|
||||
audit.setUsername(ShiroUtil.getPlatformUsername());
|
||||
audit.setAuditTime(DateUtil.date());
|
||||
audit = dao.insert(audit);
|
||||
|
||||
MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id);
|
||||
if (audit.getAuditType() == 2) {
|
||||
// 退回修改
|
||||
record.setApplyStateId(60);
|
||||
} else if (audit.getAuditType() == 1) {
|
||||
// 通过
|
||||
record.setApplyStateId(80);
|
||||
} else {
|
||||
// 拒绝
|
||||
record.setApplyStateId(70);
|
||||
}
|
||||
|
||||
record.setBranchUnionAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(record);
|
||||
|
||||
if (audit.getAuditType() == 2) {
|
||||
MemberApplyToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(record, null);
|
||||
} else if (audit.getAuditType() == 1) {
|
||||
MemberApplyToDoHandler.COMPLETE_PROCESS.exec(record, null);
|
||||
// 判断是否改变了工会关系
|
||||
User user = dao.fetch(User.class, Cnd.where("id", "=", record.getUserId()));
|
||||
if (!ObjectUtil.equals(user.getUnionid(), record.getAllocationUnionId())) {
|
||||
Sys_union union = dao.fetch(Sys_union.class, Cnd.where("id", "=", record.getAllocationUnionId()));
|
||||
SpecialStaff staff = new SpecialStaff();
|
||||
staff.setUserId(record.getUserId());
|
||||
staff.setPersonnelRelationUnitId(user.getUnitid());
|
||||
staff.setPersonnelRelationUnitName(user.getUnitname());
|
||||
staff.setUnionRelationUnionId(union.getId());
|
||||
staff.setUnionRelationUnionName(union.getUnionname());
|
||||
staff.setIsManyUnit(false);
|
||||
staff.setSpecialStaffType("HMC_RELATION");
|
||||
dao.insert(staff);
|
||||
}
|
||||
|
||||
Sys_user sysUser = new Sys_user();
|
||||
BeanUtil.copyProperties(record, sysUser);
|
||||
sysUser.setId(user.getId());
|
||||
dao.updateIgnoreNull(sysUser);
|
||||
} else {
|
||||
MemberApplyToDoHandler.REFUSE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "分工会审核拒绝"));
|
||||
}
|
||||
MemberApplyToDoHandler.COMPLETE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "分工会审核完成"));
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.apply.branchUnion.audit")
|
||||
@SLog(type = "memberApply", tag = "会员入会申请", msg = "分工会撤回")
|
||||
public Object doRevoke(String id){
|
||||
MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id);
|
||||
dao.update(MemberApplyRecord.class, Chain.make("applyStateId", 20)
|
||||
.add("branchUnionAuditId", null), Cnd.where("id", "=", id));
|
||||
dao.clear(Audit.class, Cnd.where("id", "=", record.getBranchUnionAuditId()));
|
||||
// 待办撤回
|
||||
localProcessService.revokeTask("MEMBER_APPLY@" + id, "分工会审核");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.apply;
|
||||
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.utils.MsgApi;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType;
|
||||
import io.v.nutz.zhgh.staffmanage.member.handle.MemberApplyToDoHandler;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberApplyRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberApplyController
|
||||
* @Date 2025/1/20 19:01
|
||||
* @注释 会员申请
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/member/apply/submit")
|
||||
public class MemberApplyController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private MsgApi msgApi;
|
||||
@Inject
|
||||
private MemberCommonService commonService;
|
||||
|
||||
@At("/")
|
||||
@Ok("beetl:/platform/member/apply/submit/index.html")
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/member/apply/submit/index.html")
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
public void h5() {
|
||||
}
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
public Object findOne(String id, Boolean isEdit){
|
||||
if (isEdit) {
|
||||
return dao.fetch(MemberApplyRecord.class, id);
|
||||
}
|
||||
return dao.fetch(User.class, Cnd.where("id", "=", id));
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
public Object findApplyById(String id){
|
||||
return Result.success().addData(dao.fetch(MemberApplyRecord.class, id));
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
@SLog(tag = "会员入会申请", msg = "保存申请")
|
||||
public Object doSave(MemberApplyRecord record){
|
||||
record.setMember(true);
|
||||
record.setUserId(ShiroUtil.getUserId());
|
||||
// 变更来源 个人
|
||||
record.setChangeOrigin(MemberChangeOrigin.PERSONAL.name());
|
||||
// 变更类型 入会
|
||||
record.setChangeType(MemberChangeType.RESTORE.name());
|
||||
record.setChangeTypes(List.of(MemberChangeType.RESTORE.name()));
|
||||
// 待提交
|
||||
record.setApplyStateId(10);
|
||||
dao.insertOrUpdate(record);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.apply.submit")
|
||||
@SLog(tag = "会员入会申请", msg = "提交申请")
|
||||
public Object doSubmit(MemberApplyRecord record){
|
||||
record.setMember(true);
|
||||
record.setUserId(ShiroUtil.getUserId());
|
||||
record.setChangeOrigin(MemberChangeOrigin.PERSONAL.name());
|
||||
record.setChangeType(MemberChangeType.RESTORE.name());
|
||||
record.setChangeTypes(List.of(MemberChangeType.RESTORE.name()));
|
||||
// 待校工会审核
|
||||
record.setApplyStateId(20);
|
||||
dao.insertOrUpdate(record);
|
||||
|
||||
// 审核流程开始
|
||||
MemberApplyToDoHandler.START_PROCESS.exec(record, null);
|
||||
MemberApplyToDoHandler.CREATE_SCHOOL_TASK.exec(record, null);
|
||||
|
||||
List<String> schoolLoginNameList = commonService.getSchoolOrBranchUnionMemberAdminLoginNames("school", null);
|
||||
String schoolLoginNameListStr = schoolLoginNameList.stream().distinct().collect(Collectors.joining(","));
|
||||
|
||||
String content = "%s老师正申请加入工会,请您点击此条消息或前往智慧工会进行审核";
|
||||
msgApi.sendMsg(List.of("DingTalk"), schoolLoginNameListStr, 2, "协会入会邀请", content, "", "");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+143
@@ -0,0 +1,143 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.apply;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.services.SysLocalProcessService;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberApplyRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.param.pageForm.MemberApplyPageForm;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.zhgh.zgfw.model.difficult.Zgfw_knbf;
|
||||
import org.apache.shiro.authz.annotation.Logical;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.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;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberApplyMineController
|
||||
* @Date 2025/2/12 8:39
|
||||
* @注释 会员入会 我的申请
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/member/apply/mine")
|
||||
public class MemberApplyMineController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private MemberCommonService memberCommonService;
|
||||
@Inject
|
||||
private SysLocalProcessService sysLocalProcessService;
|
||||
|
||||
@At("/")
|
||||
@Ok("beetl:/platform/member/apply/mine/index.html")
|
||||
@RequiresPermissions("member.apply.mine")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@RequiresPermissions("member.apply.mine")
|
||||
public Object pageData(MemberApplyPageForm pageForm){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
record.*,
|
||||
state.stateName
|
||||
FROM
|
||||
member_apply_record record
|
||||
LEFT JOIN audit_state state ON state.stateId = record.applyStateId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
pageForm.buildSearch(cnd, "record.");
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin")) {
|
||||
if (ShiroUtil.hasAnyRoles("H04,branchUnionMemberAdmin")) {
|
||||
cnd.and("record.unionId", "=", Vi.getUnionId());
|
||||
} else {
|
||||
cnd.and("record.userId", "=", ShiroUtil.getUserId());
|
||||
}
|
||||
}
|
||||
cnd.desc("record.applyDateTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success().addData(pagination);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.apply.mine")
|
||||
@SLog(tag = "会员入会申请", msg = "撤回申请")
|
||||
public Object doRevoke(String id){
|
||||
dao.update(MemberApplyRecord.class, Chain.make("applyStateId", 10), Cnd.where("id", "=", id));
|
||||
sysLocalProcessService.revokeTask("MEMBER_APPLY@" + id,"待提交申请");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.apply.mine")
|
||||
@SLog(tag = "会员入会申请", msg = "删除申请")
|
||||
public Object doDelete(String id){
|
||||
dao.clear(MemberApplyRecord.class, Cnd.where("id", "=", id));
|
||||
sysLocalProcessService.deleteProcessInstance("MEMBER_APPLY@" + id);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions(value = {"member.apply.mine", "member.apply.branchUnion.audit", "member.apply.schoolUnion.audit"}, logical = Logical.OR)
|
||||
public Object findMemberApplyRecord(String id){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
record.*,
|
||||
u.unionname AS userUnionName,
|
||||
u.unitname AS userUnitName,
|
||||
state.stateName,
|
||||
su.unionname AS allocationUnionName
|
||||
FROM
|
||||
member_apply_record record
|
||||
LEFT JOIN audit_state state ON state.stateId = record.applyStateId
|
||||
LEFT JOIN `user` u ON u.id = record.userId
|
||||
LEFT JOIN sys_union su ON su.id = record.allocationUnionId
|
||||
WHERE
|
||||
record.id = @id
|
||||
""").setParam("id", id);
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap nutMap = (NutMap) sql.getResult();
|
||||
|
||||
if (StrUtil.isNotBlank(nutMap.getString("schoolUnionAuditId"))) {
|
||||
Audit audit = dao.fetch(Audit.class, Cnd.where("id", "=", nutMap.getString("schoolUnionAuditId")));
|
||||
nutMap.addv("schoolAudit", audit);
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(nutMap.getString("branchUnionAuditId"))) {
|
||||
Audit audit = dao.fetch(Audit.class, Cnd.where("id", "=", nutMap.getString("branchUnionAuditId")));
|
||||
nutMap.addv("branchAudit", audit);
|
||||
}
|
||||
return nutMap;
|
||||
}
|
||||
}
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.apply;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.sys.services.SysLocalProcessService;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.staffmanage.member.handle.MemberApplyToDoHandler;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberApplyRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.param.pageForm.MemberApplyPageForm;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.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 org.nutz.mvc.annotation.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberApplySchoolUnionAuditController
|
||||
* @Date 2025/2/12 8:38
|
||||
* @注释 会员入会申请,校工会审核
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/member/apply/schoolUnion/audit")
|
||||
public class MemberApplySchoolUnionAuditController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private MemberCommonService memberCommonService;
|
||||
@Inject
|
||||
private SysLocalProcessService localProcessService;
|
||||
|
||||
@At("/")
|
||||
@Ok("beetl:/platform/member/apply/schoolUnionAudit/index.html")
|
||||
@RequiresPermissions("member.apply.schoolUnion.audit")
|
||||
public void index() {}
|
||||
|
||||
|
||||
@At
|
||||
@RequiresPermissions("member.apply.schoolUnion.audit")
|
||||
public Object pageData(MemberApplyPageForm pageForm){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
record.*,
|
||||
state.stateName,
|
||||
su.unionname AS allocationUnionName
|
||||
FROM
|
||||
member_apply_record record
|
||||
LEFT JOIN audit_state state ON state.stateId = record.applyStateId
|
||||
LEFT JOIN sys_union su ON su.id = record.allocationUnionId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
pageForm.buildSearch(cnd, "record.");
|
||||
if (pageForm.getAudit()) {
|
||||
cnd.and("record.applyStateId", ">", 20);
|
||||
} else {
|
||||
cnd.and("record.applyStateId", "=", 20);
|
||||
}
|
||||
cnd.desc("record.applyDateTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success().addData(pagination);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.apply.schoolUnion.audit")
|
||||
@SLog(type = "memberApply", tag = "会员入会申请", msg = "校工会审核")
|
||||
public Object approval(@Param("audit") Audit audit, String id, String unionId){
|
||||
audit.setAuditor(ShiroUtil.getUserId());
|
||||
audit.setLoginname(ShiroUtil.getPlatformLoginname());
|
||||
audit.setUsername(ShiroUtil.getPlatformUsername());
|
||||
audit.setAuditTime(DateUtil.date());
|
||||
audit = dao.insert(audit);
|
||||
|
||||
MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id);
|
||||
if (audit.getAuditType() == 2) {
|
||||
// 退回修改
|
||||
record.setApplyStateId(30);
|
||||
} else if (audit.getAuditType() == 1) {
|
||||
// 通过
|
||||
record.setApplyStateId(50);
|
||||
} else {
|
||||
// 拒绝
|
||||
record.setApplyStateId(40);
|
||||
}
|
||||
|
||||
record.setAllocationUnionId(unionId);
|
||||
record.setSchoolUnionAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(record);
|
||||
|
||||
if (audit.getAuditType() == 2) {
|
||||
MemberApplyToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(record, null);
|
||||
String content = "%s老师您好,您的入会申请被校工会退回,您可根据退回原因修改后再次提交,如有疑问请及时联系校工会".formatted(record.getUsername());
|
||||
} else if (audit.getAuditType() == 1) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.loginname,
|
||||
u.username
|
||||
FROM
|
||||
`sys_user_role` userRole
|
||||
LEFT JOIN sys_role role ON role.id = userRole.roleId
|
||||
LEFT JOIN `user` u ON u.id = userRole.userId
|
||||
WHERE
|
||||
role.`code` = 'BranchUnionMemberAdmin' and u.unionid = @unionId
|
||||
group by u.loginname
|
||||
""").setParam("unionId", unionId);
|
||||
List<NutMap> list = memberCommonService.listMap(sql);
|
||||
|
||||
List<String> unionLeaderLoginNames = list.stream().map(v -> v.getString("loginname")).toList();
|
||||
MemberApplyToDoHandler.CREATE_UNION_TASK.exec(record, NutMap.NEW().addv("unionLeaderLoginNames", unionLeaderLoginNames));
|
||||
|
||||
for (NutMap map : list) {
|
||||
String content = "%s老师您好,%s老师的入会申请校工会已通过,现将工会关系划入本工会,请您点击此消息或前往智慧工会进行接收"
|
||||
.formatted(map.getString("username"), record.getUsername());
|
||||
}
|
||||
} else {
|
||||
MemberApplyToDoHandler.REFUSE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "校工会审核拒绝"));
|
||||
String content = "%s老师您好,您的入会申请被校工会拒绝,如有疑问请及时联系校工会".formatted(record.getUsername());
|
||||
}
|
||||
MemberApplyToDoHandler.COMPLETE_SCHOOL_TASK.exec(record, NutMap.NEW().addv("nodeName", "校工会审核完成"));
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.apply.schoolUnion.audit")
|
||||
@SLog(type = "memberApply", tag = "会员入会申请", msg = "校工会撤回")
|
||||
public Object doRevoke(String id){
|
||||
MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id);
|
||||
dao.update(MemberApplyRecord.class, Chain.make("applyStateId", 20)
|
||||
.add("schoolUnionAuditId", null), Cnd.where("id", "=", id));
|
||||
dao.clear(Audit.class, Cnd.where("id", "=", record.getSchoolUnionAuditId()));
|
||||
// 待办撤回
|
||||
localProcessService.revokeTask("MEMBER_APPLY@" + id, "校工会审核");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.change;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.models.Sys_union;
|
||||
import io.v.nutz.sys.models.Sys_unit;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType;
|
||||
import io.v.nutz.zhgh.staffmanage.member.handle.MemberChangeToDoHandler;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.Logical;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
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.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@IocBean
|
||||
@Slf4j
|
||||
@Ok("json:full")
|
||||
@At("/platform/member/change/apply")
|
||||
public class MemberChangeApplyController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/member/change/submit/index.html")
|
||||
@RequiresPermissions("member.change.apply")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@Inject
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.change.apply")
|
||||
public Object findChangeById(String id){
|
||||
return dao.fetch(MemberChangeRecord.class, id);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@RequiresPermissions("member.change.apply")
|
||||
@SLog(tag = "会员变更申请", msg = "保存我的申请")
|
||||
public Object doSave(MemberChangeRecord record){
|
||||
// 检验是否有变更
|
||||
if (Lang.isEmpty(record)) {
|
||||
return Result.error("未获取到异动数据");
|
||||
}
|
||||
List<NutMap> changeInfos = memberService.getChangeInfos(record);
|
||||
if (Lang.isEmpty(changeInfos)) {
|
||||
return Result.error("未校验到变更数据,请确认数据是否存在变更");
|
||||
}
|
||||
|
||||
try {
|
||||
User user = dao.fetch(User.class, Cnd.where("id", "=", record.getUserId()));
|
||||
// 比较有哪些变更类型
|
||||
List<String> changeTypes = memberService.compareChangeType(record, user);
|
||||
|
||||
record.setChangeTypes(changeTypes);
|
||||
record.setUserId(ShiroUtil.getUserId());
|
||||
// 变更来源 个人
|
||||
record.setChangeOrigin(MemberChangeOrigin.PERSONAL.name());
|
||||
// 待提交
|
||||
record.setApplyStateId(10010);
|
||||
dao.insertOrUpdate(record);
|
||||
return Result.success();
|
||||
} catch (Exception e) {
|
||||
return Result.error("保存失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@RequiresPermissions("member.change.apply")
|
||||
@SLog(tag = "会员变更申请", msg = "提交我的申请")
|
||||
public Object doSubmit(MemberChangeRecord record){
|
||||
// 检验是否有变更
|
||||
if (Lang.isEmpty(record)) {
|
||||
return Result.error("未获取到异动数据");
|
||||
}
|
||||
List<NutMap> changeInfos = memberService.getChangeInfos(record);
|
||||
if (Lang.isEmpty(changeInfos)) {
|
||||
return Result.error("未校验到变更数据,请确认数据是否存在变更");
|
||||
}
|
||||
|
||||
try {
|
||||
User user = dao.fetch(User.class, Cnd.where("id", "=", record.getUserId()));
|
||||
// 比较有哪些变更类型
|
||||
List<String> changeTypes = memberService.compareChangeType(record, user);
|
||||
record.setChangeTypes(changeTypes);
|
||||
record.setUserId(ShiroUtil.getUserId());
|
||||
// 变更来源 个人
|
||||
record.setChangeOrigin(MemberChangeOrigin.PERSONAL.name());
|
||||
// 待分工会审核
|
||||
record.setApplyStateId(10020);
|
||||
dao.insertOrUpdate(record);
|
||||
|
||||
MemberChangeToDoHandler.START_PROCESS.exec(record, null);
|
||||
MemberChangeToDoHandler.CREATE_UNION_TASK.exec(record, null);
|
||||
|
||||
return Result.success();
|
||||
} catch (Exception e) {
|
||||
log.error("提交失败", e);
|
||||
return Result.error("提交失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions(value = {"member.change.branchUnion.audit","member.change.schoolUnion.audit"}, logical = Logical.OR)
|
||||
public Object getUserByIdForMemberChange(String userId){
|
||||
User user = dao.fetch(User.class, Cnd.where("id", "=", userId));
|
||||
NutMap nutMap = Lang.obj2nutmap(user);
|
||||
if (StrUtil.isNotBlank(user.getUnionid())) {
|
||||
Sys_union union = dao.fetch(Sys_union.class, Cnd.where("id", "=", user.getUnionid()));
|
||||
nutMap.put("union", union);
|
||||
}
|
||||
if (StrUtil.isNotBlank(user.getUnitid())) {
|
||||
Sys_unit unit = dao.fetch(Sys_unit.class, Cnd.where("id", "=", user.getUnitid()));
|
||||
nutMap.put("unit", unit);
|
||||
}
|
||||
return nutMap;
|
||||
}
|
||||
}
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.change;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.sys.services.SysLocalProcessService;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.staffmanage.member.handle.MemberChangeToDoHandler;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.param.pageForm.MemberChangePageForm;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.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 org.nutz.mvc.annotation.Param;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberChangeBranchUnionAuditController
|
||||
* @Date 2025/2/14 14:13
|
||||
* @注释
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/member/change/branchUnion/audit")
|
||||
public class MemberChangeBranchUnionAuditController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private MemberCommonService memberCommonService;
|
||||
@Inject
|
||||
private SysLocalProcessService localProcessService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/member/change/branchUnionAudit/index.html")
|
||||
@RequiresPermissions("member.change.branchUnion.audit")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@RequiresPermissions("member.change.branchUnion.audit")
|
||||
public Object pageData(MemberChangePageForm pageForm){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
record.*,
|
||||
state.stateName
|
||||
FROM
|
||||
member_change_record record
|
||||
LEFT JOIN audit_state state ON state.stateId = record.applyStateId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
pageForm.buildSearch(cnd, "record.");
|
||||
if (pageForm.getAudit()) {
|
||||
cnd.and("record.applyStateId", ">", 10020);
|
||||
} else {
|
||||
cnd.and("record.applyStateId", "=", 10020);
|
||||
}
|
||||
cnd.desc("record.applyDateTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success().addData(pagination);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.change.branchUnion.audit")
|
||||
@SLog(type = "memberChange", tag = "会员变更", msg = "分工会审核")
|
||||
public Object approval(@Param("audit") Audit audit, String id){
|
||||
audit.setAuditor(ShiroUtil.getUserId());
|
||||
audit.setLoginname(ShiroUtil.getPlatformLoginname());
|
||||
audit.setUsername(ShiroUtil.getPlatformUsername());
|
||||
audit.setAuditTime(DateUtil.date());
|
||||
audit = dao.insert(audit);
|
||||
|
||||
MemberChangeRecord record = dao.fetch(MemberChangeRecord.class, id);
|
||||
if (audit.getAuditType() == 2) {
|
||||
// 退回修改
|
||||
record.setApplyStateId(10030);
|
||||
} else if (audit.getAuditType() == 1) {
|
||||
// 通过
|
||||
record.setApplyStateId(10050);
|
||||
} else {
|
||||
// 拒绝
|
||||
record.setApplyStateId(10040);
|
||||
}
|
||||
|
||||
record.setBranchUnionAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(record);
|
||||
|
||||
MemberChangeToDoHandler.COMPLETE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "分工会审核完成"));
|
||||
if (audit.getAuditType() == 2) {
|
||||
MemberChangeToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(record, NutMap.NEW().addv("nodeName", "分工会退回"));
|
||||
} else if (audit.getAuditType() == 1) {
|
||||
MemberChangeToDoHandler.CREATE_SCHOOL_TASK.exec(record, null);
|
||||
} else {
|
||||
MemberChangeToDoHandler.REFUSE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "分工会审核拒绝"));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.change.branchUnion.audit")
|
||||
@SLog(type = "memberChange", tag = "会员变更", msg = "分工会撤回")
|
||||
public Object doRevoke(String id){
|
||||
MemberChangeRecord record = dao.fetch(MemberChangeRecord.class, id);
|
||||
dao.update(MemberChangeRecord.class, Chain.make("applyStateId", 10020)
|
||||
.add("branchUnionAuditId", null), Cnd.where("id", "=", id));
|
||||
dao.clear(Audit.class, Cnd.where("id", "=", record.getBranchUnionAuditId()));
|
||||
// 待办撤回
|
||||
localProcessService.revokeTask("MEMBER_CHANGE@" + id, "分工会审核");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+155
-132
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.change;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.change;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
||||
@@ -6,6 +6,7 @@ import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import com.google.common.base.Joiner;
|
||||
@@ -25,15 +26,15 @@ import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
||||
import io.v.nutz.zhgh.member.MemberMode;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.member.WelfareMemberMode;
|
||||
import io.v.nutz.zhgh.member.constant.*;
|
||||
import io.v.nutz.zhgh.member.handle.MemberChangeAuditHandle;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.member.template.MemberTemp;
|
||||
import io.v.nutz.zhgh.member.utils.MemberUtils;
|
||||
import io.v.nutz.zhgh.staffmanage.member.MemberMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.UserMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.WelfareMemberMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.staffmanage.member.handle.MemberChangeToDoHandler;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.template.MemberTemp;
|
||||
import io.v.nutz.zhgh.staffmanage.member.utils.MemberUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
@@ -72,13 +73,13 @@ import java.util.stream.Collectors;
|
||||
public class MemberChangeManageController {
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/member/change/Manage.html")
|
||||
@Ok("beetl:/platform/member/change/manage/index.html")
|
||||
@RequiresPermissions("member.change.mange")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject
|
||||
private AuditService auditService;
|
||||
@@ -111,8 +112,7 @@ public class MemberChangeManageController {
|
||||
@Param(value = "userState", required = false) String userState,
|
||||
@Param(value = "preparedBy", required = false) String preparedBy,
|
||||
@Param(value = "changeDate", required = false) String changeDate,
|
||||
@Param(value = "changeType", required = false) String changeType,
|
||||
@Param(value = "changeTypes", required = false) Integer[] changeTypes,
|
||||
@Param(value = "changeTypes", required = false) String[] changeTypes,
|
||||
@Param(value = "changed", required = false) Integer changed,
|
||||
@Param(value = "myUnionGroupUser", required = false) Integer myUnionGroupUser,
|
||||
@Param(value = "isMember", required = false) Integer isMember) {
|
||||
@@ -126,31 +126,17 @@ public class MemberChangeManageController {
|
||||
IF( his.id IS NULL, FALSE, TRUE ) hasHis,
|
||||
state.stateId,
|
||||
state.stateName,
|
||||
state.stateColor,
|
||||
IF( mcr.userId IS NULL OR mcr.stateId = @success, TRUE, FALSE ) apply,
|
||||
IF( mcr.stateId IN ( $failStates ), TRUE, FALSE ) reApply
|
||||
state.stateColor
|
||||
FROM
|
||||
`user` u
|
||||
LEFT JOIN user_history_latest his ON his.loginname = u.loginname
|
||||
LEFT JOIN member_change_record_latest mcr on mcr.userId = u.id
|
||||
LEFT JOIN audit_state state ON mcr.stateId = state.stateId
|
||||
LEFT JOIN user_history his ON his.loginname = u.loginname
|
||||
LEFT JOIN member_change_record mcr on mcr.userId = u.id
|
||||
LEFT JOIN audit_state state ON mcr.applyStateId = state.stateId
|
||||
$condition
|
||||
""")
|
||||
.setParam("recordMode", MemberChangeRecordMode.MEMBER.getCode())
|
||||
.setParam("changeUnitAuditing", MemberChangeApplyState.SCHOOL_UNION)
|
||||
.setParam("changeUnitError", MemberChangeApplyState.SCHOOL_UNION_FAIL)
|
||||
.setParam("success", MemberChangeApplyState.SUCCESS)
|
||||
.setVar("failStates", Joiner.on(",").join(List.of(MemberChangeApplyState.UNION_FAIL, MemberChangeApplyState.SCHOOL_UNION_FAIL)));
|
||||
""");
|
||||
|
||||
CndPlus cnd = CndPlus.create();
|
||||
|
||||
SqlExpressionGroup group = new SqlExpressionGroup();
|
||||
/* group.or("his.changeType", "=", 2).or("u.member", "=", MemberMode.NORMAL.getCode());
|
||||
cnd.and(group);*/
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("u.member", "=", isMember);
|
||||
|
||||
cnd.and(pageForm);
|
||||
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin,H03,A06")) {
|
||||
if (ShiroUtil.hasRole("H04")) {
|
||||
cnd.and("u.unionId", "=", Vi.getUnionId());
|
||||
@@ -180,35 +166,41 @@ public class MemberChangeManageController {
|
||||
cnd.andEX("u.userState", "=", userState);
|
||||
cnd.andEX("u.preparedBy", "=", preparedBy);
|
||||
|
||||
if (StrUtil.isAllNotBlank(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.or(pageForm.getSearchName(), "like", "%" + pageForm.getSearchKeyword() + "%");
|
||||
seg.or(pageForm.getSearchName(), "like", "%" + pageForm.getSearchKeyword() + "%");
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(changeDateBefore) && StrUtil.isNotBlank(changeDateEnd)) {
|
||||
cnd.and(new Static(String.format("Date(his.changeTime) >= '%s' and Date(his.changeTime) <= '%s'", changeDateBefore, changeDateEnd)));
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(pageForm.getPageOrderName()) && Strings.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy((List.of("changeTime", "changeType", "changeTypes").contains(pageForm.getPageOrderName()) ? "his." : "u.") + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||
} else {
|
||||
cnd.desc("his.changeTime");
|
||||
}
|
||||
|
||||
|
||||
if (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)));
|
||||
for (String type : changeTypes) {
|
||||
seg.or(new Static("JSON_CONTAINS(his.changeTypes, JSON_QUOTE('%s'), '$')".formatted(type)));
|
||||
}
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
// cnd.andEX("Date(his.changeTime)", "=", changeDate);
|
||||
// cnd.andEX("his.changeType", "=", changeType);
|
||||
|
||||
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 if (changed == 2){
|
||||
cnd.desc("his.changeType");
|
||||
cnd.desc("his.changeTime");
|
||||
} else {
|
||||
cnd.and(new Static("his.changeType is null"));
|
||||
cnd.and(new Static("his.changeTypes is null"));
|
||||
}
|
||||
}
|
||||
cnd.groupBy("u.id");
|
||||
sql.setCondition(cnd);
|
||||
return memberService.list(pageForm, sql);
|
||||
}
|
||||
@@ -243,12 +235,12 @@ public class MemberChangeManageController {
|
||||
LEFT JOIN member_change_record_latest mcr on mcr.userId = u.id
|
||||
LEFT JOIN audit_state state ON mcr.stateId = state.stateId
|
||||
$condition
|
||||
""")
|
||||
.setParam("recordMode", MemberChangeRecordMode.MEMBER.getCode())
|
||||
.setParam("changeUnitAuditing", MemberChangeApplyState.SCHOOL_UNION)
|
||||
.setParam("changeUnitError", MemberChangeApplyState.SCHOOL_UNION_FAIL)
|
||||
.setParam("success", MemberChangeApplyState.SUCCESS)
|
||||
.setVar("failStates", Joiner.on(",").join(List.of(MemberChangeApplyState.UNION_FAIL, MemberChangeApplyState.SCHOOL_UNION_FAIL)));
|
||||
""");
|
||||
// .setParam("recordMode", MemberChangeRecordMode.MEMBER.getCode())
|
||||
// .setParam("changeUnitAuditing", MemberChangeApplyState.SCHOOL_UNION)
|
||||
// .setParam("changeUnitError", MemberChangeApplyState.SCHOOL_UNION_FAIL)
|
||||
// .setParam("success", MemberChangeApplyState.SUCCESS)
|
||||
// .setVar("failStates", Joiner.on(",").join(List.of(MemberChangeApplyState.UNION_FAIL, MemberChangeApplyState.SCHOOL_UNION_FAIL)));
|
||||
CndPlus cnd = CndPlus.create();
|
||||
cnd.andEX("u.member", "=", isMember);
|
||||
cnd.and(pageForm);
|
||||
@@ -283,57 +275,71 @@ public class MemberChangeManageController {
|
||||
}
|
||||
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.change.mange")
|
||||
public Object change(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(Sys_config::getConfigValue).orElse("false").equals("true");
|
||||
@SLog(tag = "会员高级管理-会员变更", msg = "分工会/校工会会员管理员提交变更")
|
||||
public Object doSubmitChange(MemberChangeRecord record) {
|
||||
// 检验是否有变更
|
||||
if (Lang.isEmpty(record)) {
|
||||
return Result.error("未获取到异动数据");
|
||||
}
|
||||
List<NutMap> changeInfos = memberService.getChangeInfos(record);
|
||||
if (Lang.isEmpty(changeInfos)) {
|
||||
return Result.error("未校验到变更数据,请确认数据是否存在变更");
|
||||
}
|
||||
|
||||
if (unionGroupEnable && memberChangeRecord.getCurrentThreeUnitId().equals(memberChangeRecord.getOriginThreeUnitId())) {
|
||||
return Result.error("请选择不同的单位!");
|
||||
} else if (!unionGroupEnable && memberChangeRecord.getCurrentUnitId().equals(memberChangeRecord.getOriginUnitId())) {
|
||||
return Result.error("请选择不同的单位!");
|
||||
try {
|
||||
// 变更就表明,当前审核人审核通过
|
||||
Audit audit = new Audit();
|
||||
audit.setAuditor(ShiroUtil.getUserId());
|
||||
audit.setLoginname(ShiroUtil.getPlatformLoginname());
|
||||
audit.setUsername(ShiroUtil.getPlatformUsername());
|
||||
audit.setAuditOpinion("通过");
|
||||
audit.setAuditTime(DateUtil.date());
|
||||
dao.insert(audit);
|
||||
|
||||
User user = dao.fetch(User.class, Cnd.where("id", "=", record.getUserId()));
|
||||
// 比较有哪些变更类型
|
||||
List<String> changeTypes = memberService.compareChangeType(record, user);
|
||||
record.setChangeTypes(changeTypes);
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin, SchoolUnionMemberAdmin")) {
|
||||
// 分工会变更,分工会审核通过,转为校工会审核
|
||||
record.setChangeOrigin(MemberChangeOrigin.BRANCH_UNION.name());
|
||||
record.setApplyStateId(10050);
|
||||
record.setBranchUnionAuditId(audit.getId());
|
||||
dao.insert(record);
|
||||
|
||||
// 创建流程任务
|
||||
MemberChangeToDoHandler.START_PROCESS.exec(record, null);
|
||||
MemberChangeToDoHandler.CREATE_UNION_TASK.exec(record, null);
|
||||
MemberChangeToDoHandler.COMPLETE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "分工会审核完成"));
|
||||
MemberChangeToDoHandler.CREATE_SCHOOL_TASK.exec(record, null);
|
||||
} else {
|
||||
// 校工会变更,变更直接完成
|
||||
record.setChangeOrigin(MemberChangeOrigin.SCHOOL_UNION.name());
|
||||
record.setApplyStateId(10080);
|
||||
record.setBranchUnionAuditId(audit.getId());
|
||||
record.setSchoolUnionAuditId(audit.getId());
|
||||
dao.insert(record);
|
||||
|
||||
// 创建流程任务
|
||||
MemberChangeToDoHandler.START_PROCESS.exec(record, null);
|
||||
MemberChangeToDoHandler.CREATE_UNION_TASK.exec(record, null);
|
||||
MemberChangeToDoHandler.COMPLETE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "分工会审核完成"));
|
||||
MemberChangeToDoHandler.CREATE_SCHOOL_TASK.exec(record, null);
|
||||
MemberChangeToDoHandler.COMPLETE_SCHOOL_TASK.exec(record, NutMap.NEW().addv("nodeName", "校工会审核完成"));
|
||||
MemberChangeToDoHandler.COMPLETE_PROCESS.exec(record, null);
|
||||
memberService.compareChangeInfoAndUpdateMember(record.getId());
|
||||
}
|
||||
return Result.success("操作成功");
|
||||
} catch (Exception e) {
|
||||
log.error("分工会/校工会会员管理员提交变更:", e);
|
||||
return Result.error("操作失败");
|
||||
}
|
||||
if (!Objects.equals(memberChangeRecord.getType(), UserChangeType.UNIT_CHANGE.getCode())) {
|
||||
memberChangeRecord.setCurrentUnitId(null);
|
||||
memberChangeRecord.setCurrentUnionId(null);
|
||||
}
|
||||
|
||||
Audit audit = new Audit();
|
||||
audit.setAuditPass(true);
|
||||
|
||||
memberChangeRecord.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
if (ShiroUtil.hasRole("sysadmin")) {
|
||||
memberChangeRecord.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
memberChangeRecord = MemberChangeAuditHandle.CREATE.next(memberChangeRecord, null);
|
||||
MemberChangeAuditHandle.SCHOOL.next(memberChangeRecord, audit);
|
||||
} else {
|
||||
if (ShiroUtil.hasAnyRoles("gh01, H04")) {
|
||||
memberChangeRecord.setApplyOrigin(MemberChangeOrigin.UNION.getCode());
|
||||
} else if (ShiroUtil.hasRole("ghxzzz")){
|
||||
memberChangeRecord.setApplyOrigin(MemberChangeOrigin.UNION_GROUP.getCode());
|
||||
}
|
||||
memberChangeRecord = MemberChangeAuditHandle.CREATE.next(memberChangeRecord, null);
|
||||
MemberChangeAuditHandle.UNION.next(memberChangeRecord, audit);
|
||||
}
|
||||
return Result.success();
|
||||
|
||||
// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
// if (ShiroUtil.hasAnyRoles("sysadmin,A06,H03")) {
|
||||
// record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
// record = MemberChangeAuditHandle.CREATE.next(record, null);
|
||||
// MemberChangeAuditHandle.SCHOOL.next(record, new Audit().setAuditPass(true));
|
||||
// } else {
|
||||
// record.setApplyOrigin(MemberChangeOrigin.UNION.getCode());
|
||||
// record = MemberChangeAuditHandle.CREATE.next(record, null);
|
||||
// MemberChangeAuditHandle.UNION.next(record, new Audit().setAuditPass(true));
|
||||
// }
|
||||
// return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Inject
|
||||
private SysUserService userService;
|
||||
|
||||
@@ -396,9 +402,9 @@ public class MemberChangeManageController {
|
||||
cnd.and(new SqlExpressionGroup().andLike(memberSearchName, memberSearchKeyWord));
|
||||
}
|
||||
List<Integer> status = new ArrayList<>();
|
||||
status.add(MemberStatus.NORMAL.getCode());
|
||||
status.add(MemberStatus.TURN_IN.getCode());
|
||||
status.add(MemberStatus.RESTORE.getCode());
|
||||
// status.add(MemberStatus.NORMAL.getCode());
|
||||
// status.add(MemberStatus.TURN_IN.getCode());
|
||||
// status.add(MemberStatus.RESTORE.getCode());
|
||||
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin,A06,H03")) {
|
||||
cnd.and("unionid", "=", Vi.getUnionId());
|
||||
@@ -440,22 +446,22 @@ public class MemberChangeManageController {
|
||||
memberService.update("sys_user", updateUnitChain, Cnd.where("id", "in", userId));
|
||||
|
||||
for (String uid : userId) {
|
||||
MemberChangeRecord record = new MemberChangeRecord();
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setType(UserChangeType.UNIT_CHANGE.getCode());
|
||||
record.setUserId(uid);
|
||||
record.setApplyTime(new Date());
|
||||
record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
|
||||
Audit audit = new Audit();
|
||||
audit.setAuditPass(true);
|
||||
audit.setAuditOpinion(MemberOrigin.BATCH.getDescription());
|
||||
String id = auditService.insert(audit).getId();
|
||||
|
||||
record.setSchoolAuditId(id);
|
||||
memberService.insert(record);
|
||||
// MemberChangeRecord record = new MemberChangeRecord();
|
||||
//// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
// record.setType(UserChangeType.UNIT_CHANGE.getCode());
|
||||
// record.setUserId(uid);
|
||||
// record.setApplyTime(new Date());
|
||||
//// record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
//// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
//// record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
//
|
||||
// Audit audit = new Audit();
|
||||
// audit.setAuditPass(true);
|
||||
//// audit.setAuditOpinion(MemberOrigin.BATCH.getDescription());
|
||||
// String id = auditService.insert(audit).getId();
|
||||
//
|
||||
// record.setSchoolAuditId(id);
|
||||
// memberService.insert(record);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -521,24 +527,24 @@ public class MemberChangeManageController {
|
||||
audit.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString());
|
||||
memberService.insert(audit);
|
||||
for (String userId : userIds) {
|
||||
User user = memberService.dao().fetch(User.class, Cnd.where("id", "=", userId));
|
||||
MemberChangeRecord changeRecord = new MemberChangeRecord();
|
||||
changeRecord.setType(UserChangeType.NEW.getCode());
|
||||
changeRecord.setApplyOrigin(ShiroUtil.hasRole("H04") ? MemberChangeOrigin.UNION.getCode() : MemberChangeOrigin.UNION_GROUP.getCode());
|
||||
changeRecord.setStateId(MemberChangeApplyState.SCHOOL_UNION);
|
||||
changeRecord.setUpdateWelfareMember(true);
|
||||
changeRecord.setUserId(userId);
|
||||
changeRecord.setApplyTime(new Date());
|
||||
changeRecord.setOriginUnitId(user.getUnitid());
|
||||
changeRecord.setOriginUnionId(user.getUnionid());
|
||||
changeRecord.setOriginThreeUnitId(user.getThreeUnitId());
|
||||
changeRecord.setCurrentUnionId(user.getUnionid());
|
||||
changeRecord.setCurrentUnitId(unitId);
|
||||
changeRecord.setCurrentThreeUnitId(threeUnitId);
|
||||
changeRecord.setUnionAuditId(audit.getId());
|
||||
changeRecord.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
changeRecord.setTaskId(taskId);
|
||||
maps.add(changeRecord);
|
||||
// User user = memberService.dao().fetch(User.class, Cnd.where("id", "=", userId));
|
||||
// MemberChangeRecord changeRecord = new MemberChangeRecord();
|
||||
// changeRecord.setType(UserChangeType.NEW.getCode());
|
||||
//// changeRecord.setApplyOrigin(ShiroUtil.hasRole("H04") ? MemberChangeOrigin.UNION.getCode() : MemberChangeOrigin.UNION_GROUP.getCode());
|
||||
//// changeRecord.setStateId(MemberChangeApplyState.SCHOOL_UNION);
|
||||
// changeRecord.setUpdateWelfareMember(true);
|
||||
// changeRecord.setUserId(userId);
|
||||
// changeRecord.setApplyTime(new Date());
|
||||
// changeRecord.setOriginUnitId(user.getUnitid());
|
||||
// changeRecord.setOriginUnionId(user.getUnionid());
|
||||
// changeRecord.setOriginThreeUnitId(user.getThreeUnitId());
|
||||
// changeRecord.setCurrentUnionId(user.getUnionid());
|
||||
// changeRecord.setCurrentUnitId(unitId);
|
||||
// changeRecord.setCurrentThreeUnitId(threeUnitId);
|
||||
// changeRecord.setUnionAuditId(audit.getId());
|
||||
//// changeRecord.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
// changeRecord.setTaskId(taskId);
|
||||
// maps.add(changeRecord);
|
||||
}
|
||||
memberService.insert(maps);
|
||||
return null;
|
||||
@@ -581,6 +587,7 @@ public class MemberChangeManageController {
|
||||
|
||||
@At
|
||||
@Ok("void")
|
||||
@RequiresPermissions("member.change.mange")
|
||||
public void downloadImport(HttpServletResponse response) {
|
||||
try {
|
||||
ViTool.excelResponse(response, "会员导入模版.xlsx");
|
||||
@@ -609,8 +616,9 @@ public class MemberChangeManageController {
|
||||
private final ReentrantLock lock = new ReentrantLock(true);
|
||||
|
||||
@At
|
||||
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.change.mange")
|
||||
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
|
||||
@SLog(type = "会员管理系统", tag = "信息维护-会员高级管理", msg = "导入会员", param = true, result = true)
|
||||
public Object doImport(TempFile file) {
|
||||
try {
|
||||
@@ -721,4 +729,19 @@ public class MemberChangeManageController {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.change.mange")
|
||||
public Object getAllChangeMemberInfo(String userId){
|
||||
List<NutMap> mapList = memberService.getAllChangeInfo(userId);
|
||||
if (Lang.isEmpty(mapList)) {
|
||||
return Result.error("未获取到异动数据");
|
||||
}
|
||||
|
||||
User user = dao.fetch(User.class, Cnd.where("id", "=", userId));
|
||||
NutMap map = Lang.obj2nutmap(user);
|
||||
map.put("user",user);
|
||||
map.put("allChangeInfo", mapList);
|
||||
return map;
|
||||
}
|
||||
}
|
||||
+149
@@ -0,0 +1,149 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.change;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.services.SysLocalProcessService;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberApplyRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.param.pageForm.MemberChangePageForm;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.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;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberChangeMineController
|
||||
* @Date 2025/2/14 11:13
|
||||
* @注释
|
||||
*/
|
||||
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/member/change/mine")
|
||||
public class MemberChangeMineController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private MemberCommonService memberCommonService;
|
||||
@Inject
|
||||
private SysLocalProcessService sysLocalProcessService;
|
||||
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/member/change/mine/index.html")
|
||||
@RequiresPermissions("member.change.mine")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@RequiresPermissions("member.change.mine")
|
||||
public Object pageData(MemberChangePageForm pageForm){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
record.*,
|
||||
state.stateName
|
||||
FROM
|
||||
member_change_record record
|
||||
LEFT JOIN audit_state state ON state.stateId = record.applyStateId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
pageForm.buildSearch(cnd, "record.");
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,SchoolUnionMemberAdmin")) {
|
||||
if (ShiroUtil.hasAnyRoles("H04,branchUnionMemberAdmin")) {
|
||||
cnd.and("record.unionId", "=", Vi.getUnionId());
|
||||
} else {
|
||||
cnd.and("record.userId", "=", ShiroUtil.getUserId());
|
||||
}
|
||||
}
|
||||
cnd.desc("record.applyDateTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success().addData(pagination);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.change.mine")
|
||||
@SLog(tag = "会员入会申请", msg = "撤回申请")
|
||||
public Object doRevoke(String id){
|
||||
dao.update(MemberChangeRecord.class, Chain.make("applyStateId", 10), Cnd.where("id", "=", id));
|
||||
sysLocalProcessService.revokeTask("MEMBER_CHANGE@" + id,"待提交申请");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.change.mine")
|
||||
@SLog(tag = "会员入会申请", msg = "删除申请")
|
||||
public Object doDelete(String id){
|
||||
dao.clear(MemberChangeRecord.class, Cnd.where("id", "=", id));
|
||||
sysLocalProcessService.deleteProcessInstance("MEMBER_CHANGE@" + id);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.change.mine")
|
||||
public Object findMemberChangeRecord(String id){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.*,
|
||||
record.id AS recordId,
|
||||
record.applyDateTime,
|
||||
record.branchUnionAuditId,
|
||||
record.schoolUnionAuditId,
|
||||
state.stateName
|
||||
FROM
|
||||
member_change_record record
|
||||
LEFT JOIN audit_state state ON state.stateId = record.applyStateId
|
||||
LEFT JOIN `user` u ON u.id = record.userId
|
||||
WHERE
|
||||
record.id = @id
|
||||
""").setParam("id", id);
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap nutMap = (NutMap) sql.getResult();
|
||||
|
||||
List<NutMap> changeInfos = memberCommonService.getChangeInfos(nutMap.getString("recordId"));
|
||||
nutMap.put("changeInfos", changeInfos);
|
||||
|
||||
if (StrUtil.isNotBlank(nutMap.getString("schoolUnionAuditId"))) {
|
||||
Audit audit = dao.fetch(Audit.class, Cnd.where("id", "=", nutMap.getString("schoolUnionAuditId")));
|
||||
nutMap.addv("schoolAudit", audit);
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(nutMap.getString("branchUnionAuditId"))) {
|
||||
Audit audit = dao.fetch(Audit.class, Cnd.where("id", "=", nutMap.getString("branchUnionAuditId")));
|
||||
nutMap.addv("branchAudit", audit);
|
||||
}
|
||||
return nutMap;
|
||||
}
|
||||
}
|
||||
+18
-16
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.change;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.change;
|
||||
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
@@ -8,13 +8,15 @@ import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.dao.util.cri.Static;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
@@ -35,13 +37,13 @@ import java.util.List;
|
||||
public class MemberChangeRecordsController {
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/member/change/Records.html")
|
||||
@Ok("beetl:/platform/member/change/record/index.html")
|
||||
@RequiresPermissions("member.change.records")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject("MemberChangeRecord")
|
||||
private ViService<MemberChangeRecord> recordViService;
|
||||
@@ -59,10 +61,10 @@ public class MemberChangeRecordsController {
|
||||
@Param(value = "unionGroupId", required = false) String unionGroupId,
|
||||
@Param(value = "threeUnitId", required = false) String threeUnitId,
|
||||
@Param(value = "userType", required = false) String userType,
|
||||
@Param(value = "changeType", required = false) Integer changeType,
|
||||
@Param(value = "applyOrigin", required = false) Integer applyOrigin) {
|
||||
@Param(value = "changeTypes", required = false) String[] changeTypes,
|
||||
@Param(value = "applyOrigin", required = false) String applyOrigin) {
|
||||
CndPlus cnd = CndPlus.create();
|
||||
pageForm.defaultSortDesc("mcr.applyTime");
|
||||
pageForm.defaultSortDesc("mcr.applyDateTime");
|
||||
cnd.and(pageForm);
|
||||
//查询是否记录模式来自对会员还是福利会员
|
||||
//cnd.and("mcr.recordMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
@@ -71,9 +73,15 @@ public class MemberChangeRecordsController {
|
||||
cnd.andEX("u.threeUnitId", "=", threeUnitId);
|
||||
cnd.andEX("u.unionGroupId", "=", unionGroupId);
|
||||
cnd.andEX("u.personType", "=", userType);
|
||||
cnd.andEX("mcr.type", "=", changeType);
|
||||
cnd.andEX("mcr.applyOrigin", "=", applyOrigin);
|
||||
cnd.andEX("mcr.changeOrigin", "=", applyOrigin);
|
||||
|
||||
if (Lang.isNotEmpty(changeTypes)) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
for (String type : changeTypes) {
|
||||
seg.or(new Static("JSON_CONTAINS(his.changeTypes, JSON_QUOTE('%s'), '$')".formatted(type)));
|
||||
}
|
||||
cnd.and(seg);
|
||||
}
|
||||
if (!ShiroUtil.hasAnyRoles("sysadmin,H03,A06")) {
|
||||
if (ShiroUtil.hasRole("H04")) {
|
||||
cnd.and("u.unionId", "=", Vi.getUnionId());
|
||||
@@ -87,12 +95,6 @@ public class MemberChangeRecordsController {
|
||||
}
|
||||
|
||||
Pagination pagination = memberService.memberChangeRecords(pageForm, cnd);
|
||||
List<NutMap> list = pagination.getList();
|
||||
list.forEach(v -> {
|
||||
v.setv("unionAudit", auditViService.fetch(Cnd.where("id", "=", v.getString("unionAuditId"))));
|
||||
v.setv("schoolAudit", auditViService.fetch(Cnd.where("id", "=", v.getString("schoolAuditId"))));
|
||||
});
|
||||
|
||||
return pagination;
|
||||
}
|
||||
|
||||
+137
@@ -0,0 +1,137 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.change;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.model.Audit;
|
||||
import io.v.nutz.sys.services.SysLocalProcessService;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.staffmanage.member.handle.MemberChangeToDoHandler;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.param.pageForm.MemberChangePageForm;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.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 org.nutz.mvc.annotation.Param;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberChangeSchoolUnionAuditController
|
||||
* @Date 2025/2/14 14:13
|
||||
* @注释
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/member/change/schoolUnion/audit")
|
||||
public class MemberChangeSchoolUnionAuditController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private MemberCommonService memberCommonService;
|
||||
@Inject
|
||||
private SysLocalProcessService localProcessService;
|
||||
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/member/change/schoolUnionAudit/index.html")
|
||||
@RequiresPermissions("member.change.schoolUnion.audit")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@RequiresPermissions("member.change.schoolUnion.audit")
|
||||
public Object pageData(MemberChangePageForm pageForm){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
record.*,
|
||||
state.stateName
|
||||
FROM
|
||||
member_change_record record
|
||||
LEFT JOIN audit_state state ON state.stateId = record.applyStateId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
pageForm.buildSearch(cnd, "record.");
|
||||
if (pageForm.getAudit()) {
|
||||
cnd.and("record.applyStateId", ">", 10050);
|
||||
} else {
|
||||
cnd.and("record.applyStateId", "=", 10050);
|
||||
}
|
||||
cnd.desc("record.applyDateTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success().addData(pagination);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.change.schoolUnion.audit")
|
||||
@SLog(type = "memberChange", tag = "会员变更", msg = "校工会审核")
|
||||
public Object approval(@Param("audit") Audit audit, String id){
|
||||
audit.setAuditor(ShiroUtil.getUserId());
|
||||
audit.setLoginname(ShiroUtil.getPlatformLoginname());
|
||||
audit.setUsername(ShiroUtil.getPlatformUsername());
|
||||
audit.setAuditTime(DateUtil.date());
|
||||
audit = dao.insert(audit);
|
||||
|
||||
MemberChangeRecord record = dao.fetch(MemberChangeRecord.class, id);
|
||||
if (audit.getAuditType() == 2) {
|
||||
// 退回修改
|
||||
record.setApplyStateId(10060);
|
||||
} else if (audit.getAuditType() == 1) {
|
||||
// 通过
|
||||
record.setApplyStateId(10080);
|
||||
} else {
|
||||
// 拒绝
|
||||
record.setApplyStateId(10070);
|
||||
}
|
||||
|
||||
record.setSchoolUnionAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(record);
|
||||
|
||||
MemberChangeToDoHandler.COMPLETE_SCHOOL_TASK.exec(record, NutMap.NEW().addv("nodeName", "校工会审核完成"));
|
||||
if (audit.getAuditType() == 2) {
|
||||
MemberChangeToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(record, NutMap.NEW().addv("nodeName", "校工会退回"));
|
||||
} else if (audit.getAuditType() == 1) {
|
||||
MemberChangeToDoHandler.COMPLETE_PROCESS.exec(record, null);
|
||||
memberCommonService.compareChangeInfoAndUpdateMember(record.getId());
|
||||
} else {
|
||||
MemberChangeToDoHandler.REFUSE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "校工会审核拒绝"));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@RequiresPermissions("member.change.schoolUnion.audit")
|
||||
@SLog(type = "memberChange", tag = "会员变更", msg = "校工会撤回")
|
||||
public Object doRevoke(String id){
|
||||
MemberChangeRecord record = dao.fetch(MemberChangeRecord.class, id);
|
||||
dao.update(MemberChangeRecord.class, Chain.make("applyStateId", 10050)
|
||||
.add("schoolUnionAuditId", null), Cnd.where("id", "=", id));
|
||||
dao.clear(Audit.class, Cnd.where("id", "=", record.getSchoolUnionAuditId()));
|
||||
// 待办撤回
|
||||
localProcessService.revokeTask("MEMBER_CHANGE@" + id, "校工会审核");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.check;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.check;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
@@ -8,7 +8,7 @@ import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.base.utils.ViTool;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.service.MemberCheckPersonalService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCheckPersonalService;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
+6
-21
@@ -1,12 +1,12 @@
|
||||
package io.v.nutz.zhgh.member.controller.check;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.check;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.SimpleService;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
@@ -69,7 +69,7 @@ public class MemberCheckSchoolController {
|
||||
LEFT JOIN sys_union gh ON gh.id = mcut.unionId
|
||||
$condition
|
||||
""");
|
||||
sql.setParam("stateId", MemberChangeApplyState.SCHOOL_UNION);
|
||||
// sql.setParam("stateId", MemberChangeApplyState.SCHOOL_UNION);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("gh.id", "=", unionId);
|
||||
cnd.and("mcut.taskId", "=", taskId);
|
||||
@@ -79,22 +79,7 @@ public class MemberCheckSchoolController {
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> map = simpleService.listMap(sql);
|
||||
List<MemberChangeRecord> changeRecords = simpleService.dao().query(MemberChangeRecord.class,
|
||||
Cnd.where("stateId", "=", MemberChangeApplyState.SCHOOL_UNION)
|
||||
.and("taskId", "=", taskId));
|
||||
map.forEach(v -> {
|
||||
//该工会有多少个人需要审核
|
||||
//找出原工会和现工会不等于空的
|
||||
/*//找出的值为单位变更
|
||||
int size = changeRecords.stream().filter(c ->
|
||||
StrUtil.isNotEmpty(c.getCurrentUnionId()) &&
|
||||
StrUtil.isNotEmpty(c.getOriginUnionId()) &&
|
||||
c.getCurrentUnionId().equals(v.getString("id"))).collect(Collectors.toList()).size();*/
|
||||
//找出除了单位变更的其他会员
|
||||
int size2 = changeRecords.stream().filter(c ->
|
||||
StrUtil.isNotEmpty(c.getOriginUnionId()) &&
|
||||
c.getOriginUnionId().equals(v.getString("id"))).collect(Collectors.toList()).size();
|
||||
v.setv("notCheckNum", size2);
|
||||
});
|
||||
Cnd.where("taskId", "=", taskId));
|
||||
return map;
|
||||
}
|
||||
|
||||
@@ -133,7 +118,7 @@ public class MemberCheckSchoolController {
|
||||
""");
|
||||
sql.setParam("taskId", taskId);
|
||||
sql.setParam("unionId", unionId);
|
||||
sql.setParam("stateId", MemberChangeApplyState.SCHOOL_UNION);
|
||||
// sql.setParam("stateId", MemberChangeApplyState.SCHOOL_UNION);
|
||||
List<NutMap> list = simpleService.listMap(sql);
|
||||
return list;
|
||||
|
||||
+11
-11
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.check;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.check;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
@@ -6,11 +6,11 @@ import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.SimpleService;
|
||||
import io.v.nutz.sys.models.Sys_union;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.member.model.MemberCheckSelfTask;
|
||||
import io.v.nutz.zhgh.member.model.MemberCheckTask;
|
||||
import io.v.nutz.zhgh.member.model.MemberCheckUnionTask;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberCheckSelfTask;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberCheckTask;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberCheckUnionTask;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
@@ -59,7 +59,7 @@ public class MemberCheckTaskController {
|
||||
select * from member_check_task $condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("taskMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
// cnd.and("taskMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
cnd.andEX("year", "=", year);
|
||||
sql.setCondition(cnd);
|
||||
return simpleService.list(pageForm, sql);
|
||||
@@ -74,7 +74,7 @@ public class MemberCheckTaskController {
|
||||
List<Sys_union> sysUnions = dao.query(Sys_union.class, null);
|
||||
Trans.exec(() -> {
|
||||
task.setYear(calendar.get(Calendar.YEAR));
|
||||
task.setTaskMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
// task.setTaskMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
dao.insert(task);
|
||||
if (task.getCreateTaskMode() == 1) {
|
||||
List<MemberCheckUnionTask> unionTasks = sysUnions.stream().map(v -> {
|
||||
@@ -120,7 +120,7 @@ public class MemberCheckTaskController {
|
||||
}
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(task.getStartTime());
|
||||
task.setTaskMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
// task.setTaskMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
task.setYear(calendar.get(Calendar.YEAR));
|
||||
dao.updateIgnoreNull(task);
|
||||
|
||||
@@ -149,7 +149,7 @@ public class MemberCheckTaskController {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("year", "=", year);
|
||||
cnd.and("createTaskMode", "=", 1);
|
||||
cnd.and("taskMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
// cnd.and("taskMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
cnd.desc("year");
|
||||
return dao.query(MemberCheckTask.class, cnd);
|
||||
}
|
||||
@@ -160,7 +160,7 @@ public class MemberCheckTaskController {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("year", "=", year);
|
||||
cnd.andEX("createTaskMode", "=", 2);
|
||||
cnd.and("taskMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
// cnd.and("taskMode", "=", MemberChangeRecordMode.MEMBER.getCode());
|
||||
return dao.query(MemberCheckTask.class, cnd);
|
||||
}
|
||||
|
||||
+12
-59
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.check;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.check;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
@@ -11,12 +11,13 @@ import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.models.Sys_config;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
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;
|
||||
import io.v.nutz.zhgh.member.handle.MemberChangeAuditHandle;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.member.model.MemberCheckUnionTask;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
//import io.v.nutz.zhgh.staffmanage.member.handle.MemberChangeAuditHandle;
|
||||
//import io.v.nutz.zhgh.staffmanage.member.handle.MemberChangeAuditHandle;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberCheckUnionTask;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
@@ -178,8 +179,8 @@ public class MemberCheckUnionController {
|
||||
|
||||
|
||||
sql.setCondition(cnd);
|
||||
sql.setParam("success", MemberChangeApplyState.SUCCESS);
|
||||
sql.setVar("failStates", Joiner.on(",").join(List.of(MemberChangeApplyState.UNION_FAIL, MemberChangeApplyState.SCHOOL_UNION_FAIL)));
|
||||
// sql.setParam("success", MemberChangeApplyState.SUCCESS);
|
||||
// sql.setVar("failStates", Joiner.on(",").join(List.of(MemberChangeApplyState.UNION_FAIL, MemberChangeApplyState.SCHOOL_UNION_FAIL)));
|
||||
return simpleService.list(pageForm, sql);
|
||||
}
|
||||
|
||||
@@ -264,8 +265,8 @@ public class MemberCheckUnionController {
|
||||
}
|
||||
|
||||
sql.setCondition(cnd);
|
||||
sql.setParam("success", MemberChangeApplyState.SUCCESS);
|
||||
sql.setVar("failStates", Joiner.on(",").join(List.of(MemberChangeApplyState.UNION_FAIL, MemberChangeApplyState.SCHOOL_UNION_FAIL)));
|
||||
// sql.setParam("success", MemberChangeApplyState.SUCCESS);
|
||||
// sql.setVar("failStates", Joiner.on(",").join(List.of(MemberChangeApplyState.UNION_FAIL, MemberChangeApplyState.SCHOOL_UNION_FAIL)));
|
||||
return simpleService.fetch(sql);
|
||||
}
|
||||
|
||||
@@ -288,54 +289,6 @@ public class MemberCheckUnionController {
|
||||
@ViReturn
|
||||
@RequiresPermissions("member.check.union")
|
||||
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(memberChangeRecord.getRemark());
|
||||
|
||||
MemberChangeAuditHandle.UNION.next(memberChangeRecord, audit);
|
||||
return null;
|
||||
}
|
||||
|
||||
+26
-26
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.info;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.info;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
@@ -14,14 +14,14 @@ import io.v.nutz.base.utils.ViTool;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
||||
import io.v.nutz.zhgh.member.MemberMode;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import io.v.nutz.zhgh.member.constant.MemberOrigin;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.MemberMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.UserMode;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberOrigin;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
@@ -60,7 +60,7 @@ public class MemberBatchMakeController {
|
||||
}
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
@@ -148,22 +148,22 @@ public class MemberBatchMakeController {
|
||||
Trans.exec(() -> {
|
||||
UserMode.addMemberRole(userIds);
|
||||
for (String v : userIds) {
|
||||
MemberChangeRecord record = new MemberChangeRecord();
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setType(UserChangeType.RESTORE.getCode());
|
||||
record.setUserId(v);
|
||||
record.setApplyTime(new Date());
|
||||
record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
|
||||
Audit audit = new Audit();
|
||||
audit.setAuditPass(true);
|
||||
audit.setAuditOpinion(MemberOrigin.BATCH.getDescription());
|
||||
String id = auditService.insert(audit).getId();
|
||||
|
||||
record.setSchoolAuditId(id);
|
||||
sysUserService.insert(record);
|
||||
// MemberChangeRecord record = new MemberChangeRecord();
|
||||
//// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
// record.setType(UserChangeType.RESTORE.getCode());
|
||||
// record.setUserId(v);
|
||||
// record.setApplyTime(new Date());
|
||||
//// record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());/////////
|
||||
//// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
//// record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
//
|
||||
// Audit audit = new Audit();
|
||||
// audit.setAuditPass(true);
|
||||
//// audit.setAuditOpinion(MemberOrigin.BATCH.getDescription());
|
||||
// String id = auditService.insert(audit).getId();
|
||||
//
|
||||
// record.setSchoolAuditId(id);
|
||||
// sysUserService.insert(record);
|
||||
}
|
||||
});
|
||||
|
||||
+30
-30
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.info;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.info;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
@@ -9,15 +9,15 @@ import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
||||
import io.v.nutz.zhgh.member.MemberMode;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.member.WelfareMemberMode;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
import io.v.nutz.zhgh.member.constant.MemberOrigin;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.MemberMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.UserMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.WelfareMemberMode;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeApplyState;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberChangeRecordMode;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberOrigin;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
@@ -52,7 +52,7 @@ public class MemberDataManageController {
|
||||
}
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@@ -207,7 +207,7 @@ public class MemberDataManageController {
|
||||
|
||||
//如果是先清空再追加
|
||||
if (confirm) {
|
||||
dao.update(Sys_user.class, Chain.make("member", MemberMode.NONE.getCode()).add("memberOrigin", MemberOrigin.BATCH.getCode()), Cnd.NEW());
|
||||
// dao.update(Sys_user.class, Chain.make("member", MemberMode.NONE.getCode()).add("memberOrigin", MemberOrigin.BATCH.getCode()), Cnd.NEW());
|
||||
}
|
||||
|
||||
Sql sql = Sqls.create("SELECT id from `user` $condition");
|
||||
@@ -266,18 +266,18 @@ public class MemberDataManageController {
|
||||
UserMode.addMemberRole(userIds);
|
||||
Audit audit = new Audit();
|
||||
audit.setAuditPass(true);
|
||||
audit.setAuditOpinion("数据管理工具" + MemberOrigin.BATCH.getDescription());
|
||||
// audit.setAuditOpinion("数据管理工具" + MemberOrigin.BATCH.getDescription());
|
||||
dao.insert(audit);
|
||||
List<MemberChangeRecord> insertMemberChangeRecords = Arrays.stream(userIds).map(v -> {
|
||||
MemberChangeRecord record = new MemberChangeRecord();
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setType(UserChangeType.RESTORE.getCode());
|
||||
record.setUserId(v);
|
||||
record.setApplyTime(new Date());
|
||||
record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
record.setSchoolAuditId(audit.getId());
|
||||
//// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
// record.setType(UserChangeType.RESTORE.getCode());
|
||||
// record.setUserId(v);
|
||||
// record.setApplyTime(new Date());
|
||||
//// record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
//// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
//// record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
// record.setSchoolAuditId(audit.getId());
|
||||
return record;
|
||||
}).collect(Collectors.toList());
|
||||
dao.insert(insertMemberChangeRecords);
|
||||
@@ -389,18 +389,18 @@ public class MemberDataManageController {
|
||||
|
||||
Audit audit = new Audit();
|
||||
audit.setAuditPass(true);
|
||||
audit.setAuditOpinion("数据管理工具" + MemberOrigin.BATCH.getDescription());
|
||||
// audit.setAuditOpinion("数据管理工具" + MemberOrigin.BATCH.getDescription());
|
||||
dao.insert(audit);
|
||||
List<MemberChangeRecord> insertMemberChangeRecords = Arrays.stream(userIds).map(v -> {
|
||||
MemberChangeRecord record = new MemberChangeRecord();
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setType(UserChangeType.RESTORE.getCode());
|
||||
record.setUserId(v);
|
||||
record.setApplyTime(new Date());
|
||||
record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
record.setSchoolAuditId(audit.getId());
|
||||
//// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
// record.setType(UserChangeType.RESTORE.getCode());
|
||||
// record.setUserId(v);
|
||||
// record.setApplyTime(new Date());
|
||||
//// record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
//// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
//// record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
// record.setSchoolAuditId(audit.getId());
|
||||
return record;
|
||||
}).collect(Collectors.toList());
|
||||
dao.insert(insertMemberChangeRecords);
|
||||
+7
-7
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.info;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.info;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
@@ -14,11 +14,11 @@ import io.v.nutz.base.utils.ViTool;
|
||||
import io.v.nutz.sys.services.SysRoleService;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.MemberMode;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.member.model.MemberHistory;
|
||||
import io.v.nutz.zhgh.member.service.MemberHistoryService;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.MemberMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.UserMode;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberHistory;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberHistoryService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
@@ -60,7 +60,7 @@ public class MemberGroupInfoController {
|
||||
}
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
+24
-23
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.info;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.info;
|
||||
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.dao.CndPlus;
|
||||
@@ -10,10 +10,11 @@ import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
||||
import io.v.nutz.zhgh.data.model.UserHistory;
|
||||
import io.v.nutz.zhgh.data.service.HistoryUserService;
|
||||
import io.v.nutz.zhgh.member.UserMode;
|
||||
import io.v.nutz.zhgh.member.constant.*;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.UserMode;
|
||||
//import io.v.nutz.zhgh.member.constant.*;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
@@ -50,7 +51,7 @@ public class MemberMakeController {
|
||||
}
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
@@ -100,7 +101,7 @@ public class MemberMakeController {
|
||||
""");
|
||||
|
||||
CndPlus cnd = CndPlus.create();
|
||||
cnd.and("memberOrigin", "=", MemberOrigin.MAKE.getCode());
|
||||
// cnd.and("memberOrigin", "=", MemberOrigin.MAKE.getCode());
|
||||
|
||||
cnd.andEX("unionid", "=", unionId);
|
||||
cnd.andEX("unitid", "=", unitId);
|
||||
@@ -111,9 +112,9 @@ public class MemberMakeController {
|
||||
cnd.andEX("campusName", "=", campus);
|
||||
|
||||
List<Integer> status = new ArrayList<>();
|
||||
status.add(MemberStatus.NORMAL.getCode());
|
||||
status.add(MemberStatus.TURN_IN.getCode());
|
||||
status.add(MemberStatus.RESTORE.getCode());
|
||||
// status.add(MemberStatus.NORMAL.getCode());
|
||||
// status.add(MemberStatus.TURN_IN.getCode());
|
||||
// status.add(MemberStatus.RESTORE.getCode());
|
||||
|
||||
if (memberStatus == null || status.contains(memberStatus)) {
|
||||
cnd.andEX("member", "=", 1);
|
||||
@@ -148,7 +149,7 @@ public class MemberMakeController {
|
||||
@RequiresPermissions("member.info.make")
|
||||
public Object joinMemberFamily(Sys_user sys_user) {
|
||||
memberService.transactional(() -> {
|
||||
sysUserService.update(Chain.make("memberOrigin", MemberOrigin.MAKE.getCode()), Cnd.where("id", "=", sys_user.getId()));
|
||||
// sysUserService.update(Chain.make("memberOrigin", MemberOrigin.MAKE.getCode()), Cnd.where("id", "=", sys_user.getId()));
|
||||
UserMode.addMemberRole(sys_user.getId());
|
||||
|
||||
|
||||
@@ -157,26 +158,26 @@ public class MemberMakeController {
|
||||
UserHistory userHistory = new UserHistory();
|
||||
BeanUtils.copyProperties(new_user, userHistory);
|
||||
userHistory.setChangeTime(new Date());
|
||||
userHistory.setChangeType(UserChangeType.NEW.getCode());
|
||||
// userHistory.setChangeType(UserChangeType.NEW.getCode());
|
||||
historyUserService.insert(userHistory);
|
||||
|
||||
//添加到会员变更表
|
||||
MemberChangeRecord record = new MemberChangeRecord();
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setType(UserChangeType.NEW.getCode());
|
||||
record.setUserId(new_user.getId());
|
||||
record.setCurrentUnitId(sys_user.getUnitid());
|
||||
record.setCurrentUnionId(sys_user.getUnionid());
|
||||
record.setApplyTime(new Date());
|
||||
// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
// record.setType(UserChangeType.NEW.getCode());
|
||||
// record.setUserId(new_user.getId());
|
||||
// record.setCurrentUnitId(sys_user.getUnitid());
|
||||
// record.setCurrentUnionId(sys_user.getUnionid());
|
||||
// record.setApplyTime(new Date());
|
||||
if (ShiroUtil.hasAnyRoles("sysadmin,A06,H03")) {
|
||||
record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
// record.setApplyOrigin(MemberChangeOrigin.SCHOOL.getCode());
|
||||
} else if (ShiroUtil.hasAnyRoles("H04")) {
|
||||
record.setApplyOrigin(MemberChangeOrigin.UNION.getCode());
|
||||
// record.setApplyOrigin(MemberChangeOrigin.UNION.getCode());
|
||||
} else {
|
||||
record.setApplyOrigin(MemberChangeOrigin.UNION_GROUP.getCode());
|
||||
// record.setApplyOrigin(MemberChangeOrigin.UNION_GROUP.getCode());
|
||||
}
|
||||
record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
// record.setRecordMode(MemberChangeRecordMode.MEMBER.getCode());
|
||||
// record.setStateId(MemberChangeApplyState.SUCCESS);
|
||||
|
||||
historyUserService.insert(record);
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.info;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.info;
|
||||
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.inquire;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.inquire;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
@@ -7,7 +7,7 @@ import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.base.utils.ViTool;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
@@ -33,7 +33,7 @@ import java.util.stream.Collectors;
|
||||
public class MemberAnalysisController {
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/member/inquire/Analysis.html")
|
||||
+3
-3
@@ -1,8 +1,8 @@
|
||||
package io.v.nutz.zhgh.member.controller.inquire;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.inquire;
|
||||
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.utils.DateUtil;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
@@ -35,7 +35,7 @@ public class MemberDataBoardController {
|
||||
}
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
|
||||
/**
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.inquire;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.inquire;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
+8
-8
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.inquire;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.inquire;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.annotation.Excel;
|
||||
@@ -13,9 +13,9 @@ import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.constant.MemberStatus;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.member.utils.MemberUtils;
|
||||
//import io.v.nutz.zhgh.member.constant.MemberStatus;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.utils.MemberUtils;
|
||||
import lombok.Data;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
@@ -57,7 +57,7 @@ public class MemberInquireIntegrateController {
|
||||
}
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
@@ -123,9 +123,9 @@ public class MemberInquireIntegrateController {
|
||||
}
|
||||
|
||||
List<Integer> status = new ArrayList<>();
|
||||
status.add(MemberStatus.NORMAL.getCode());
|
||||
status.add(MemberStatus.TURN_IN.getCode());
|
||||
status.add(MemberStatus.RESTORE.getCode());
|
||||
// status.add(MemberStatus.NORMAL.getCode());
|
||||
// status.add(MemberStatus.TURN_IN.getCode());
|
||||
// status.add(MemberStatus.RESTORE.getCode());
|
||||
|
||||
// if (memberStatus != null && memberStatus.length > 0) {
|
||||
// cnd.andEX("memberStatus", "in", memberStatus);
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.inquire;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.inquire;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.controller.inquire;
|
||||
package io.v.nutz.zhgh.staffmanage.member.controller.inquire;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
@@ -8,7 +8,7 @@ import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.models.Sys_dict;
|
||||
import io.v.nutz.sys.services.SysDictService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Sqls;
|
||||
@@ -32,7 +32,7 @@ import java.util.stream.Collectors;
|
||||
public class MemberUserTypeController {
|
||||
|
||||
@Inject
|
||||
private MemberService memberService;
|
||||
private MemberCommonService memberService;
|
||||
|
||||
@Inject
|
||||
private SysDictService sysDictService;
|
||||
+88
-78
@@ -1,13 +1,13 @@
|
||||
package io.v.nutz.zhgh.member.handle;
|
||||
package io.v.nutz.zhgh.staffmanage.member.handle;
|
||||
|
||||
import io.v.nutz.base.utils.ViResource;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.sys.services.SysLocalProcessService;
|
||||
import io.v.nutz.sys.services.impl.SysLocalProcessServiceImpl;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.model.MemberApplyRecord;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.member.service.impl.MemberServiceImpl;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberApplyRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.impl.MemberCommonServiceImpl;
|
||||
import lombok.Getter;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
@@ -18,6 +18,14 @@ import org.nutz.lang.util.NutMap;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberApplyController
|
||||
* @Date 2025/1/20 19:01
|
||||
* @注释 会员申请流程
|
||||
*/
|
||||
|
||||
@Getter
|
||||
public enum MemberApplyToDoHandler {
|
||||
|
||||
@@ -28,54 +36,41 @@ public enum MemberApplyToDoHandler {
|
||||
@Override
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
User user = dao.fetch(User.class, Cnd.where("id", "=", record.getUserId()));
|
||||
// Sql sql = Sqls.fetchString(Sqls.create("select username from sys_user where id = @id").setParam("id", record.getUserId()).toString());
|
||||
// dao.execute(sql);
|
||||
// String username = sql.getString();
|
||||
localProcessService.startProcess(
|
||||
user.getUnionname() + "(" + user.getUsername() + ")【会员入会】申请",
|
||||
"member_apply_record@" + record.getId(),
|
||||
"【会员入会申请】" + user.getUsername(),
|
||||
"MEMBER_APPLY@" + record.getId(),
|
||||
"",
|
||||
record.getUserId(),
|
||||
"/platform/member/apply/submit",
|
||||
"/platform/member/apply/submit"
|
||||
"/platform/member/apply",
|
||||
"/platform/member/apply/h5"
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 审核拒绝
|
||||
*/
|
||||
REFUSE_UNION_TASK(){
|
||||
@Override
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
localProcessService.refuseProcess("member_apply_record@" + record.getId(),extra.getString("nodeName"));
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 审核退回,重新修改申请
|
||||
* 审核拒绝,重新修改申请
|
||||
*/
|
||||
CREATE_APPLY_RE_MODIFY_TASK() {
|
||||
@Override
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
String nodeName = extra.getString("nodeName");
|
||||
Sql sql = Sqls.fetchString(Sqls.create("select loginname from sys_user where id = @id").setParam("id", record.getUserId()).toString());
|
||||
dao.execute(sql);
|
||||
String loginname = sql.getString();
|
||||
|
||||
localProcessService.createTask(
|
||||
"member_apply_record@" + record.getId(),
|
||||
"member_apply_record_back",
|
||||
nodeName,
|
||||
"MEMBER_APPLY@" + record.getId(),
|
||||
"MEMBER_APPLY_BACK",
|
||||
"退回重新修改",
|
||||
ShiroUtil.getUserId(),
|
||||
List.of(loginname),
|
||||
"/platform/member/apply/submit",
|
||||
"/platform/member/apply/submit",
|
||||
"/platform/member/apply/submit",
|
||||
"/platform/member/apply/submit"
|
||||
"/platform/member/apply",
|
||||
"/platform/member/apply",
|
||||
"/platform/member/apply",
|
||||
"/platform/member/apply"
|
||||
);
|
||||
|
||||
localProcessService.updateProcessNodeName("member_apply_record@" + record.getId(), nodeName);
|
||||
localProcessService.updateProcessNodeName("MEMBER_APPLY@" + record.getId(), "退回重新修改");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -87,36 +82,79 @@ public enum MemberApplyToDoHandler {
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
String nodeName = extra.getString("nodeName");
|
||||
localProcessService.completeTask(
|
||||
"member_apply_record_back",
|
||||
"member_apply_record@" + record.getId(),
|
||||
"MEMBER_APPLY_BACK",
|
||||
"MEMBER_APPLY@" + record.getId(),
|
||||
ShiroUtil.getUserId(),
|
||||
nodeName
|
||||
);
|
||||
|
||||
localProcessService.updateProcessNodeName("member_apply_record@" + record.getId(), nodeName);
|
||||
localProcessService.updateProcessNodeName("MEMBER_APPLY@" + record.getId(), nodeName);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 创建校工会任务
|
||||
*/
|
||||
CREATE_SCHOOL_TASK() {
|
||||
@Override
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
// 获取校工会会员管理员
|
||||
List<String> schoolLeaderLoginNames = memberService.getSchoolOrBranchUnionMemberAdminLoginNames("school", record.getUserId());
|
||||
localProcessService.createTask(
|
||||
"MEMBER_APPLY@" + record.getId(),
|
||||
"MEMBER_APPLY_SCHOOL_AUDIT",
|
||||
"校工会审核",
|
||||
ShiroUtil.getUserId(),
|
||||
schoolLeaderLoginNames,
|
||||
"/platform/member/apply/audit/school",
|
||||
"/platform/member/apply/audit/school",
|
||||
"/platform/member/apply/audit/school",
|
||||
"/platform/member/apply/audit/school"
|
||||
);
|
||||
|
||||
localProcessService.updateProcessNodeName("MEMBER_APPLY@" + record.getId(), "校工会审核");
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 校工会完成
|
||||
*/
|
||||
COMPLETE_SCHOOL_TASK() {
|
||||
@Override
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
String nodeName = extra.getString("nodeName");
|
||||
localProcessService.completeTask(
|
||||
"MEMBER_APPLY_SCHOOL_AUDIT",
|
||||
"MEMBER_APPLY@" + record.getId(),
|
||||
ShiroUtil.getUserId(),
|
||||
nodeName
|
||||
);
|
||||
localProcessService.updateProcessNodeName("MEMBER_APPLY@" + record.getId(), nodeName);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 创建分工会任务
|
||||
*/
|
||||
CREATE_UNION_TASK() {
|
||||
@Override
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
List<NutMap> mapList = extra.getAsList("unionLeader", NutMap.class);
|
||||
List<String> unionLeader = mapList.stream().map(v -> v.getString("loginname")).collect(Collectors.toList());
|
||||
List<String> unionLeaderLoginNames = extra.getAsList("unionLeaderLoginNames", String.class);
|
||||
localProcessService.createTask(
|
||||
"member_apply_record@" + record.getId(),
|
||||
"member_apply_union_audit",
|
||||
"基层工会审核",
|
||||
"MEMBER_APPLY@" + record.getId(),
|
||||
"MEMBER_APPLY_UNION_AUDIT",
|
||||
"分工会审核",
|
||||
ShiroUtil.getUserId(),
|
||||
unionLeader,
|
||||
unionLeaderLoginNames,
|
||||
"/platform/member/apply/audit/union",
|
||||
"/platform/member/apply/audit/union",
|
||||
"/platform/member/apply/audit/union",
|
||||
"/platform/member/apply/audit/union"
|
||||
);
|
||||
localProcessService.updateProcessNodeName("member_apply_record@" + record.getId(), "基层工会审核");
|
||||
localProcessService.updateProcessNodeName("MEMBER_APPLY@" + record.getId(), "分工会审核");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -128,55 +166,26 @@ public enum MemberApplyToDoHandler {
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
String nodeName = extra.getString("nodeName");
|
||||
localProcessService.completeTask(
|
||||
"member_apply_union_audit",
|
||||
"member_apply_record@" + record.getId(),
|
||||
"MEMBER_APPLY_UNION_AUDIT",
|
||||
"MEMBER_APPLY@" + record.getId(),
|
||||
ShiroUtil.getUserId(),
|
||||
nodeName
|
||||
);
|
||||
localProcessService.updateProcessNodeName("member_apply_record@" + record.getId(), nodeName);
|
||||
localProcessService.updateProcessNodeName("MEMBER_APPLY@" + record.getId(), nodeName);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 创建校工会任务
|
||||
* 审核拒绝
|
||||
*/
|
||||
CREATE_SCHOOL_TASK() {
|
||||
REFUSE_UNION_TASK(){
|
||||
@Override
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
List<NutMap> mapList = extra.getAsList("schoolLeader", NutMap.class);
|
||||
List<String> schoolLeader = mapList.stream().map(v -> v.getString("loginname")).collect(Collectors.toList());
|
||||
localProcessService.createTask(
|
||||
"member_apply_record@" + record.getId(),
|
||||
"member_apply_school_audit",
|
||||
"校工会审核",
|
||||
ShiroUtil.getUserId(),
|
||||
schoolLeader,
|
||||
"/platform/member/apply/audit/school",
|
||||
"/platform/member/apply/audit/school",
|
||||
"/platform/member/apply/audit/school",
|
||||
"/platform/member/apply/audit/school"
|
||||
);
|
||||
|
||||
localProcessService.updateProcessNodeName("member_apply_record@" + record.getId(), "校工会审核");
|
||||
localProcessService.refuseProcess("MEMBER_APPLY@" + record.getId(),extra.getString("nodeName"));
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 校工会完成
|
||||
*/
|
||||
COMPLETE_SCHOOL_TASK() {
|
||||
@Override
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
String nodeName = extra.getString("nodeName");
|
||||
localProcessService.completeTask(
|
||||
"member_apply_school_audit",
|
||||
"member_apply_record@" + record.getId(),
|
||||
ShiroUtil.getUserId(),
|
||||
nodeName
|
||||
);
|
||||
localProcessService.updateProcessNodeName("member_apply_record@" + record.getId(), nodeName);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 流程结束
|
||||
@@ -184,7 +193,8 @@ public enum MemberApplyToDoHandler {
|
||||
COMPLETE_PROCESS() {
|
||||
@Override
|
||||
public void exec(MemberApplyRecord record, NutMap extra) {
|
||||
localProcessService.completeProcess("member_apply_record@" + record.getId());
|
||||
localProcessService.completeProcess("MEMBER_APPLY@" + record.getId());
|
||||
localProcessService.updateProcessNodeName("MEMBER_APPLY@" + record.getId(), "审核通过");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -192,6 +202,6 @@ public enum MemberApplyToDoHandler {
|
||||
public abstract void exec(MemberApplyRecord record, NutMap extra);
|
||||
|
||||
public Dao dao = ViResource.dao;
|
||||
public MemberService memberService = ViResource.ioc.get(MemberServiceImpl.class);
|
||||
public MemberCommonService memberService = ViResource.ioc.get(MemberCommonServiceImpl.class);
|
||||
public SysLocalProcessService localProcessService = ViResource.ioc.get(SysLocalProcessServiceImpl.class);
|
||||
}
|
||||
+50
-67
@@ -1,15 +1,13 @@
|
||||
package io.v.nutz.zhgh.member.handle;
|
||||
package io.v.nutz.zhgh.staffmanage.member.handle;
|
||||
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.base.utils.ViResource;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.sys.services.SysLocalProcessService;
|
||||
import io.v.nutz.sys.services.impl.SysLocalProcessServiceImpl;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.member.service.MemberService;
|
||||
import io.v.nutz.zhgh.member.service.impl.MemberServiceImpl;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.impl.MemberCommonServiceImpl;
|
||||
import lombok.Getter;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
@@ -31,12 +29,9 @@ public enum MemberChangeToDoHandler {
|
||||
@Override
|
||||
public void exec(MemberChangeRecord record, NutMap extra) {
|
||||
User user = dao.fetch(User.class, Cnd.where("id", "=", record.getUserId()));
|
||||
// Sql sql = Sqls.fetchString(Sqls.create("select username from sys_user where id = @id").setParam("id", record.getUserId()).toString());
|
||||
// dao.execute(sql);
|
||||
// String username = sql.getString();
|
||||
localProcessService.startProcess(
|
||||
user.getUnionname() + "(" + user.getUsername() + ")【会员变更】申请",
|
||||
"member_change_record@" + record.getId(),
|
||||
"【会员变更】" + user.getUsername(),
|
||||
"MEMBER_CHANGE@" + record.getId(),
|
||||
"",
|
||||
record.getUserId(),
|
||||
"/platform/member/change/apply",
|
||||
@@ -51,7 +46,7 @@ public enum MemberChangeToDoHandler {
|
||||
REFUSE_UNION_TASK(){
|
||||
@Override
|
||||
public void exec(MemberChangeRecord record, NutMap extra) {
|
||||
localProcessService.refuseProcess("member_change_record@" + record.getId(),extra.getString("nodeName"));
|
||||
localProcessService.refuseProcess("MEMBER_CHANGE@" + record.getId(),extra.getString("nodeName"));
|
||||
}
|
||||
},
|
||||
|
||||
@@ -67,8 +62,8 @@ public enum MemberChangeToDoHandler {
|
||||
String loginname = sql.getString();
|
||||
|
||||
localProcessService.createTask(
|
||||
"member_change_record@" + record.getId(),
|
||||
"member_change_record_back",
|
||||
"MEMBER_CHANGE@" + record.getId(),
|
||||
"MEMBER_CHANGE_BACK",
|
||||
nodeName,
|
||||
ShiroUtil.getUserId(),
|
||||
List.of(loginname),
|
||||
@@ -78,7 +73,7 @@ public enum MemberChangeToDoHandler {
|
||||
"/platform/member/change/apply"
|
||||
);
|
||||
|
||||
localProcessService.updateProcessNodeName("member_change_record@" + record.getId(), nodeName);
|
||||
localProcessService.updateProcessNodeName("MEMBER_CHANGE@" + record.getId(), nodeName);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -90,13 +85,13 @@ public enum MemberChangeToDoHandler {
|
||||
public void exec(MemberChangeRecord record, NutMap extra) {
|
||||
String nodeName = extra.getString("nodeName");
|
||||
localProcessService.completeTask(
|
||||
"member_change_record_back",
|
||||
"member_change_record@" + record.getId(),
|
||||
"MEMBER_CHANGE_BACK",
|
||||
"MEMBER_CHANGE@" + record.getId(),
|
||||
ShiroUtil.getUserId(),
|
||||
nodeName
|
||||
);
|
||||
|
||||
localProcessService.updateProcessNodeName("member_change_record@" + record.getId(), nodeName);
|
||||
localProcessService.updateProcessNodeName("MEMBER_CHANGE@" + record.getId(), nodeName);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -106,21 +101,20 @@ public enum MemberChangeToDoHandler {
|
||||
CREATE_UNION_TASK() {
|
||||
@Override
|
||||
public void exec(MemberChangeRecord record, NutMap extra) {
|
||||
// List<String> unionLeader = Vi.getUnionLeader(record.getUserId());
|
||||
List<String> branchLeaders = memberService.getSchoolOrBranchUnionMemberAdminLoginNames("branch", record.getUserId());
|
||||
localProcessService.createTask(
|
||||
"MEMBER_CHANGE@" + record.getId(),
|
||||
"MEMBER_CHANGE_BRANCH_UNION_AUDIT",
|
||||
"分工会审核",
|
||||
ShiroUtil.getUserId(),
|
||||
branchLeaders,
|
||||
"/platform/member/change/audit/union",
|
||||
"/platform/member/change/audit/union",
|
||||
"/platform/member/change/audit/union",
|
||||
"/platform/member/change/audit/union"
|
||||
);
|
||||
|
||||
// localProcessService.createTask(
|
||||
// "member_change_record@" + record.getId(),
|
||||
// "member_change_record_union_audit",
|
||||
// "基层工会审核",
|
||||
// ShiroUtil.getUserId(),
|
||||
// unionLeader,
|
||||
// "/platform/member/change/audit/union",
|
||||
// "/platform/member/change/audit/union",
|
||||
// "/platform/member/change/audit/union",
|
||||
// "/platform/member/change/audit/union"
|
||||
// );
|
||||
|
||||
localProcessService.updateProcessNodeName("member_change_record@" + record.getId(), "基层工会审核");
|
||||
localProcessService.updateProcessNodeName("MEMBER_CHANGE@" + record.getId(), "分工会审核");
|
||||
|
||||
}
|
||||
},
|
||||
@@ -133,13 +127,13 @@ public enum MemberChangeToDoHandler {
|
||||
public void exec(MemberChangeRecord record, NutMap extra) {
|
||||
String nodeName = extra.getString("nodeName");
|
||||
localProcessService.completeTask(
|
||||
"member_change_record_union_audit",
|
||||
"member_change_record@" + record.getId(),
|
||||
"MEMBER_CHANGE_BRANCH_UNION_AUDIT",
|
||||
"MEMBER_CHANGE@" + record.getId(),
|
||||
ShiroUtil.getUserId(),
|
||||
nodeName
|
||||
);
|
||||
|
||||
localProcessService.updateProcessNodeName("member_change_record@" + record.getId(), nodeName);
|
||||
localProcessService.updateProcessNodeName("MEMBER_CHANGE@" + record.getId(), nodeName);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -149,32 +143,20 @@ public enum MemberChangeToDoHandler {
|
||||
CREATE_SCHOOL_TASK() {
|
||||
@Override
|
||||
public void exec(MemberChangeRecord record, NutMap extra) {
|
||||
// Sql sql = Sqls.create("""
|
||||
// SELECT
|
||||
// u.loginname
|
||||
// FROM
|
||||
// sys_user_role sur
|
||||
// LEFT JOIN sys_user u ON u.id = sur.userid
|
||||
// WHERE
|
||||
// sur.roleId = @roleId
|
||||
// GROUP BY
|
||||
// sur.userId
|
||||
// """).setParam("roleId", Roles.H03);
|
||||
// List<NutMap> list = (List<NutMap>) Daos.query(dao, sql.toString(), Sqls.callback.maps());
|
||||
// List<String> schoolLeader = list.stream().map(v -> v.getString("loginname")).collect(Collectors.toList());
|
||||
// localProcessService.createTask(
|
||||
// "member_change_record@" + record.getId(),
|
||||
// "member_change_record_school_audit",
|
||||
// "校工会审核",
|
||||
// ShiroUtil.getUserId(),
|
||||
// schoolLeader,
|
||||
// "/platform/member/change/audit/school",
|
||||
// "/platform/member/change/audit/school",
|
||||
// "/platform/member/change/audit/school",
|
||||
// "/platform/member/change/audit/school"
|
||||
// );
|
||||
//
|
||||
// localProcessService.updateProcessNodeName("member_change_record@" + record.getId(), "校工会审核");
|
||||
List<String> schoolLeaders = memberService.getSchoolOrBranchUnionMemberAdminLoginNames("school", record.getUserId());
|
||||
localProcessService.createTask(
|
||||
"MEMBER_CHANGE@" + record.getId(),
|
||||
"MEMBER_CHANGE_SCHOOL_UNION_AUDIT",
|
||||
"校工会审核",
|
||||
ShiroUtil.getUserId(),
|
||||
schoolLeaders,
|
||||
"/platform/member/change/audit/school",
|
||||
"/platform/member/change/audit/school",
|
||||
"/platform/member/change/audit/school",
|
||||
"/platform/member/change/audit/school"
|
||||
);
|
||||
|
||||
localProcessService.updateProcessNodeName("MEMBER_CHANGE@" + record.getId(), "校工会审核");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -186,12 +168,12 @@ public enum MemberChangeToDoHandler {
|
||||
public void exec(MemberChangeRecord record, NutMap extra) {
|
||||
String nodeName = extra.getString("nodeName");
|
||||
localProcessService.completeTask(
|
||||
"member_change_record_school_audit",
|
||||
"member_change_record@" + record.getId(),
|
||||
"MEMBER_CHANGE_SCHOOL_UNION_AUDIT",
|
||||
"MEMBER_CHANGE@" + record.getId(),
|
||||
ShiroUtil.getUserId(),
|
||||
nodeName
|
||||
);
|
||||
localProcessService.updateProcessNodeName("member_change_record@" + record.getId(), nodeName);
|
||||
localProcessService.updateProcessNodeName("MEMBER_CHANGE@" + record.getId(), nodeName);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -201,7 +183,8 @@ public enum MemberChangeToDoHandler {
|
||||
COMPLETE_PROCESS() {
|
||||
@Override
|
||||
public void exec(MemberChangeRecord record, NutMap extra) {
|
||||
localProcessService.completeProcess("member_change_record@" + record.getId());
|
||||
localProcessService.completeProcess("MEMBER_CHANGE@" + record.getId());
|
||||
localProcessService.updateProcessNodeName("MEMBER_CHANGE@" + record.getId(), "审核通过");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -212,7 +195,7 @@ public enum MemberChangeToDoHandler {
|
||||
DELETE_PROCESS_AND_TASK() {
|
||||
@Override
|
||||
public void exec(MemberChangeRecord record, NutMap extra) {
|
||||
localProcessService.deleteProcessInstance("member_change_record@" + record.getId());
|
||||
localProcessService.deleteProcessInstance("MEMBER_CHANGE@" + record.getId());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -220,6 +203,6 @@ public enum MemberChangeToDoHandler {
|
||||
public abstract void exec(MemberChangeRecord record, NutMap extra);
|
||||
|
||||
public Dao dao = ViResource.dao;
|
||||
public MemberService memberService = ViResource.ioc.get(MemberServiceImpl.class);
|
||||
public MemberCommonService memberService = ViResource.ioc.get(MemberCommonServiceImpl.class);
|
||||
public SysLocalProcessService localProcessService = ViResource.ioc.get(SysLocalProcessServiceImpl.class);
|
||||
}
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package io.v.nutz.zhgh.member.job;
|
||||
package io.v.nutz.zhgh.staffmanage.member.job;
|
||||
|
||||
import io.v.nutz.zhgh.member.service.MemberHistoryService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberHistoryService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
@@ -0,0 +1,220 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.model;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员申请记录
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Table("member_apply_record")
|
||||
public class MemberApplyRecord {
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
@Comment("用户id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@Size(max = 32)
|
||||
private String userId;
|
||||
|
||||
@Column
|
||||
@Comment("姓名")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
@Size(max = 100)
|
||||
private String username;
|
||||
|
||||
@Column
|
||||
@Comment("工号")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
@Size(max = 100)
|
||||
private String loginname;
|
||||
|
||||
@Column
|
||||
@Comment("出生日期")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String birthday;
|
||||
|
||||
@Column
|
||||
@Comment("单位id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@Size(max = 32)
|
||||
private String unitId;
|
||||
|
||||
@Column
|
||||
@Comment("单位名称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 200)
|
||||
@Size(max = 200)
|
||||
private String unitName;
|
||||
|
||||
@Column
|
||||
@Comment("工会id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@Size(max = 32)
|
||||
private String unionId;
|
||||
|
||||
@Column
|
||||
@Comment("工会名称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String unionName;
|
||||
|
||||
@Column
|
||||
@Comment("性别")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||
@Size(max = 10)
|
||||
private String sex;
|
||||
|
||||
@Column
|
||||
@Comment("证件号码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
@Size(max = 30)
|
||||
private String idCard;
|
||||
|
||||
@Column
|
||||
@Comment("民族")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
@Size(max = 20)
|
||||
private String nation;
|
||||
|
||||
@Column
|
||||
@Comment("政治面貌")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
@Size(max = 100)
|
||||
private String political;
|
||||
|
||||
@Column
|
||||
@Comment("学历")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
@Size(max = 20)
|
||||
private String education;
|
||||
|
||||
@Column
|
||||
@Comment("学位")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String academicDegree;
|
||||
|
||||
@Column
|
||||
@Comment("党政职务")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String position;
|
||||
|
||||
@Column
|
||||
@Comment("在职状态")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String userState;
|
||||
|
||||
@Column
|
||||
@Comment("人事编制")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String preparedBy;
|
||||
|
||||
@Column
|
||||
@Comment("人员类别")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String personType;
|
||||
|
||||
@Column
|
||||
@Comment("手机号码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@Size(max = 32)
|
||||
private String mobile;
|
||||
|
||||
@Column
|
||||
@Comment("电子邮箱")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
@Size(max = 255)
|
||||
private String email;
|
||||
|
||||
@Column
|
||||
@Comment("会员状态")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default(value = "0")
|
||||
private Boolean member;
|
||||
|
||||
@Column
|
||||
@Comment("福利会员状态")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default(value = "0")
|
||||
private Boolean welfareMember;
|
||||
|
||||
@Column
|
||||
@Comment("校区")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String campus;
|
||||
|
||||
@Column
|
||||
@Comment("家庭主要成员及其工作单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<JSONObject> families;
|
||||
|
||||
@Column
|
||||
@Comment("个人简况")
|
||||
@ColDefine(type = ColType.VARCHAR, customType = "text")
|
||||
private String vita;
|
||||
|
||||
@Column
|
||||
@Comment("备注")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
private String notes;
|
||||
|
||||
@Column
|
||||
@Comment("当前状态")
|
||||
@ColDefine(type = ColType.INT)
|
||||
private Integer applyStateId;
|
||||
|
||||
@Column
|
||||
@Comment("校工会审核id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
private String schoolUnionAuditId;
|
||||
|
||||
@Column
|
||||
@Comment("分工会审核id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
private String branchUnionAuditId;
|
||||
|
||||
@Column
|
||||
@Comment("变更类型")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String changeType;
|
||||
|
||||
@Column
|
||||
@Comment("变更类型集合")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> changeTypes;
|
||||
|
||||
@Column
|
||||
@Comment("变更来源")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String changeOrigin;
|
||||
|
||||
@Column
|
||||
@Comment("申请时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
@PrevInsert(now = true)
|
||||
private Date applyDateTime;
|
||||
|
||||
@Column
|
||||
@Comment("分配的工会关系")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String allocationUnionId;
|
||||
}
|
||||
@@ -0,0 +1,238 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.model;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员变更记录
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Table("member_change_record")
|
||||
public class MemberChangeRecord {
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
@Comment("用户id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@Size(max = 32)
|
||||
private String userId;
|
||||
|
||||
@Column
|
||||
@Comment("姓名")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
@Size(max = 100)
|
||||
private String username;
|
||||
|
||||
@Column
|
||||
@Comment("工号")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
@Size(max = 100)
|
||||
private String loginname;
|
||||
|
||||
@Column
|
||||
@Comment("单位id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@Size(max = 32)
|
||||
private String unitId;
|
||||
|
||||
@Column
|
||||
@Comment("单位名称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 200)
|
||||
@Size(max = 200)
|
||||
private String unitName;
|
||||
|
||||
@Column
|
||||
@Comment("工会id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@Size(max = 32)
|
||||
private String unionId;
|
||||
|
||||
@Column
|
||||
@Comment("工会名称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String unionName;
|
||||
|
||||
@Column
|
||||
@Comment("性别")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||
@Size(max = 10)
|
||||
private String sex;
|
||||
|
||||
@Column
|
||||
@Comment("出生日期")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||
@Size(max = 10)
|
||||
private String birthday;
|
||||
|
||||
@Column
|
||||
@Comment("证件号码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
@Size(max = 30)
|
||||
private String idCard;
|
||||
|
||||
@Column
|
||||
@Comment("民族")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
@Size(max = 20)
|
||||
private String nation;
|
||||
|
||||
@Column
|
||||
@Comment("政治面貌")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
@Size(max = 100)
|
||||
private String political;
|
||||
|
||||
@Column
|
||||
@Comment("学历")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
@Size(max = 20)
|
||||
private String education;
|
||||
|
||||
@Column
|
||||
@Comment("学位")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String academicDegree;
|
||||
|
||||
@Column
|
||||
@Comment("党政职务")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String position;
|
||||
|
||||
@Column
|
||||
@Comment("在职状态")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String userState;
|
||||
|
||||
@Column
|
||||
@Comment("人事编制")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String preparedBy;
|
||||
|
||||
@Column
|
||||
@Comment("人员类别")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String personType;
|
||||
|
||||
@Column
|
||||
@Comment("手机号码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@Size(max = 32)
|
||||
private String mobile;
|
||||
|
||||
@Column
|
||||
@Comment("电子邮箱")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
@Size(max = 255)
|
||||
private String email;
|
||||
|
||||
@Column
|
||||
@Comment("会员状态")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default(value = "0")
|
||||
private Boolean member;
|
||||
|
||||
@Column
|
||||
@Comment("福利会员状态")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default(value = "0")
|
||||
private Boolean welfareMember;
|
||||
|
||||
@Column
|
||||
@Comment("校区")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String campus;
|
||||
|
||||
@Column
|
||||
@Comment("家庭主要成员及其工作单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<JSONObject> families;
|
||||
|
||||
@Column
|
||||
@Comment("个人简况")
|
||||
@ColDefine(type = ColType.VARCHAR, customType = "text")
|
||||
private String vita;
|
||||
|
||||
@Column
|
||||
@Comment("备注")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
private String notes;
|
||||
|
||||
@Column
|
||||
@Comment("当前状态")
|
||||
@ColDefine(type = ColType.INT)
|
||||
private Integer applyStateId;
|
||||
|
||||
@Column
|
||||
@Comment("校工会审核id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
private String schoolUnionAuditId;
|
||||
|
||||
@Column
|
||||
@Comment("分工会审核id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
private String branchUnionAuditId;
|
||||
|
||||
@Column
|
||||
@Comment("是否加入会员组别")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isJoinActivityMemberScope;
|
||||
|
||||
@Column
|
||||
@Comment("是否退出会员组别")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isExitActivityMemberScope;
|
||||
|
||||
@Column
|
||||
@Comment("是否加入福利项目")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isJoinWelfareProject;
|
||||
|
||||
@Column
|
||||
@Comment("福利项目id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
private String welfareProjectId;
|
||||
|
||||
@Column
|
||||
@Comment("变更类型")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String changeType;
|
||||
|
||||
@Column
|
||||
@Comment("变更类型集合")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> changeTypes;
|
||||
|
||||
@Column
|
||||
@Comment("变更来源")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String changeOrigin;
|
||||
|
||||
@Column
|
||||
@Comment("申请时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
@PrevInsert(now = true)
|
||||
private Date applyDateTime;
|
||||
|
||||
private Boolean edit;
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.model;
|
||||
package io.v.nutz.zhgh.staffmanage.member.model;
|
||||
|
||||
import cn.wizzer.framework.base.model.BaseModel;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.model;
|
||||
package io.v.nutz.zhgh.staffmanage.member.model;
|
||||
|
||||
import cn.wizzer.framework.base.model.BaseModel;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.model;
|
||||
package io.v.nutz.zhgh.staffmanage.member.model;
|
||||
|
||||
import cn.wizzer.framework.base.model.BaseModel;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.model;
|
||||
package io.v.nutz.zhgh.staffmanage.member.model;
|
||||
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import lombok.Data;
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.param.pageForm;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberApplyPageForm
|
||||
* @Date 2025/2/12 16:09
|
||||
* @注释 会员入会查询表单
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class MemberApplyPageForm extends PageForm {
|
||||
|
||||
// 是否审核
|
||||
private Boolean audit;
|
||||
|
||||
// 工会id
|
||||
private String unionId;
|
||||
|
||||
// 单位id
|
||||
private String unitId;
|
||||
|
||||
// 在职状态
|
||||
private String userState;
|
||||
|
||||
// 人员类型
|
||||
private String personType;
|
||||
|
||||
|
||||
public void buildSearch(Cnd cnd, String prefix){
|
||||
if (cnd == null) {
|
||||
cnd = Cnd.NEW();
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(this.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike(prefix + "username", this.getSearchKeyword());
|
||||
seg.orLike(prefix + "loginname", this.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
cnd.andEX(prefix + "unionId", "=", this.getUnionId());
|
||||
cnd.andEX(prefix + "unitId", "=", this.getUnitId());
|
||||
cnd.andEX(prefix + "userState", "=", this.getUserState());
|
||||
cnd.andEX(prefix + "personType", "=", this.getPersonType());
|
||||
}
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.param.pageForm;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberChangePageForm
|
||||
* @Date 2025/2/14 14:05
|
||||
* @注释
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class MemberChangePageForm extends PageForm {
|
||||
|
||||
// 是否审核
|
||||
private Boolean audit;
|
||||
|
||||
// 工会id
|
||||
private String unionId;
|
||||
|
||||
// 单位id
|
||||
private String unitId;
|
||||
|
||||
// 在职状态
|
||||
private String userState;
|
||||
|
||||
// 人员类型
|
||||
private String personType;
|
||||
|
||||
|
||||
public void buildSearch(Cnd cnd, String prefix){
|
||||
if (cnd == null) {
|
||||
cnd = Cnd.NEW();
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(this.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike(prefix + "username", this.getSearchKeyword());
|
||||
seg.orLike(prefix + "loginname", this.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
cnd.andEX(prefix + "unionId", "=", this.getUnionId());
|
||||
cnd.andEX(prefix + "unitId", "=", this.getUnitId());
|
||||
cnd.andEX(prefix + "userState", "=", this.getUserState());
|
||||
cnd.andEX(prefix + "personType", "=", this.getPersonType());
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.service;
|
||||
package io.v.nutz.zhgh.staffmanage.member.service;
|
||||
|
||||
|
||||
import io.v.nutz.base.service.ViService;
|
||||
@@ -0,0 +1,99 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.service;
|
||||
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.dao.CndPlus;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Todo
|
||||
*
|
||||
* @author: 1V
|
||||
* @date: 2021/1/25
|
||||
* @since 1.0
|
||||
*/
|
||||
public interface MemberCommonService extends ViService<Sys_user> {
|
||||
|
||||
/**
|
||||
* 会员变更记录
|
||||
*
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<NutMap> memberChangeRecords(String userId);
|
||||
|
||||
|
||||
/**
|
||||
* 会员变更记录
|
||||
*
|
||||
* @param cnd
|
||||
* @return
|
||||
*/
|
||||
Pagination memberChangeRecords(PageForm pageForm, CndPlus cnd);
|
||||
|
||||
/**
|
||||
* 某会员历史变更记录
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<NutMap> memberHistoryRecordsByUserId(String userId);
|
||||
|
||||
|
||||
/**
|
||||
* 获取校工会或分工会会员管理员的工号
|
||||
* queryType 传 school 查询校工会会员管理员工号,branch 查询分工会会员管理员工号
|
||||
* @return
|
||||
*/
|
||||
List<String> getSchoolOrBranchUnionMemberAdminLoginNames(String queryType, String userId);
|
||||
|
||||
|
||||
NutMap getDictAllowChangeFields();
|
||||
|
||||
/**
|
||||
* 获取变更详情
|
||||
* @param recordId 变更记录id
|
||||
* @return
|
||||
*/
|
||||
List<NutMap> getChangeInfos(String recordId);
|
||||
|
||||
List<NutMap> getChangeInfos(MemberChangeRecord record);
|
||||
|
||||
/**
|
||||
* 比较有哪些变更类型
|
||||
* @param record
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
List<String> compareChangeType(MemberChangeRecord record, User user);
|
||||
|
||||
/**
|
||||
* 存储比较变更信息并更新会员信息
|
||||
* @param recordId
|
||||
*/
|
||||
void compareChangeInfoAndUpdateMember(String recordId);
|
||||
|
||||
/**
|
||||
* 获取会员的变更信息
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<NutMap> getAllChangeInfo(String userId);
|
||||
|
||||
|
||||
/**
|
||||
* 比较两个对象,并记录变更的字段工具
|
||||
*
|
||||
* @param newMap 新数据
|
||||
* @param sourceMap 原数据
|
||||
* @param fieldsMap 变更字段
|
||||
* @param changeList 变更集合
|
||||
*/
|
||||
void extractChange(NutMap newMap, NutMap sourceMap, String fieldName, Map<String, String> fieldsMap, List<NutMap> changeList);
|
||||
}
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package io.v.nutz.zhgh.member.service;
|
||||
package io.v.nutz.zhgh.staffmanage.member.service;
|
||||
|
||||
import io.v.nutz.base.service.ViService;
|
||||
import io.v.nutz.zhgh.member.model.MemberHistory;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberHistory;
|
||||
|
||||
/**
|
||||
* Todo
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package io.v.nutz.zhgh.member.service.impl;
|
||||
package io.v.nutz.zhgh.staffmanage.member.service.impl;
|
||||
|
||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||
import io.v.nutz.zhgh.member.service.MemberCheckPersonalService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCheckPersonalService;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
|
||||
+442
@@ -0,0 +1,442 @@
|
||||
package io.v.nutz.zhgh.staffmanage.member.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HtmlUtil;
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.dao.CndPlus;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.sys.models.*;
|
||||
import io.v.nutz.sys.services.SysDictService;
|
||||
import io.v.nutz.sys.services.SysRoleService;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.zhgh.activity.models.ActivityUserScope;
|
||||
import io.v.nutz.zhgh.data.model.UserHistory;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberChangeRecord;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.model.SpecialStaff;
|
||||
import io.v.nutz.zhgh.welfare.model.WelfareList;
|
||||
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.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.random.R;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.plugins.wkcache.annotation.CacheDefaults;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* @author 1V
|
||||
*/
|
||||
@Slf4j
|
||||
@IocBean(args = {"refer:dao"})
|
||||
@CacheDefaults(cacheName = "member")
|
||||
public class MemberCommonServiceImpl extends ViServiceImpl<Sys_user> implements MemberCommonService {
|
||||
public MemberCommonServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Inject
|
||||
private SysDictService sysDictService;
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
@Inject
|
||||
private SysRoleService sysRoleService;
|
||||
|
||||
private final String MEMBER_CHANGE_RECORDS = """
|
||||
SELECT
|
||||
mcr.*,
|
||||
u.unitname AS userUnitName,
|
||||
u.unionname AS userUnionName,
|
||||
u.threeUnitName AS userThreeUnitName,
|
||||
u.unionGroupName AS userUnionGroupName,
|
||||
state.stateId,
|
||||
state.stateName,
|
||||
state.stateColor
|
||||
FROM
|
||||
member_change_record mcr
|
||||
LEFT JOIN `user` u ON mcr.userId = u.id
|
||||
LEFT JOIN audit_state state ON mcr.applyStateId = state.stateId
|
||||
$condition
|
||||
""";
|
||||
|
||||
@Override
|
||||
public List<NutMap> memberChangeRecords(String userId) {
|
||||
Sql sql = Sqls.create(MEMBER_CHANGE_RECORDS);
|
||||
sql.setCondition(Cnd.where("mcr.userId", "=", userId).desc("mcr.applyTime"));
|
||||
return listMap(sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination memberChangeRecords(PageForm pageForm, CndPlus cnd) {
|
||||
Sql sql = Sqls.create(MEMBER_CHANGE_RECORDS).setCondition(cnd);
|
||||
return list(pageForm, sql);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<NutMap> memberHistoryRecordsByUserId(String userId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
his.id,
|
||||
his.changeTime,
|
||||
his.loginname,
|
||||
his.username,
|
||||
his.mobile,
|
||||
his.birthday,
|
||||
his.userState,
|
||||
his.personType,
|
||||
his.sex,
|
||||
his.changeTypes,
|
||||
his.changeOrigin,
|
||||
his.changeOperator,
|
||||
his.memberChangeRecordId,
|
||||
his.changeReason,
|
||||
his.lastHistoryId,
|
||||
u.unitname,
|
||||
u.unionname,
|
||||
mcr.stateId,
|
||||
state.stateName,
|
||||
state.stateColor
|
||||
FROM
|
||||
`user_history` his
|
||||
LEFT JOIN member_change_record mcr ON mcr.id = his.memberChangeRecordId
|
||||
LEFT JOIN audit_state state ON mcr.stateId = state.stateId
|
||||
LEFT JOIN `user` u ON u.loginname = his.loginname
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("u.id", "=", userId);
|
||||
cnd.desc("his.changeTime");
|
||||
sql.setCondition(cnd);
|
||||
return listMap(sql);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<String> getSchoolOrBranchUnionMemberAdminLoginNames(String queryType, String userId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.loginname
|
||||
FROM
|
||||
`sys_user_role` userRole
|
||||
LEFT JOIN sys_role role ON role.id = userRole.roleId
|
||||
LEFT JOIN `user` u ON u.id = userRole.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if ("school".equals(queryType)) {
|
||||
cnd.and("role.`code`", "=", "SchoolUnionMemberAdmin");
|
||||
} else {
|
||||
Sql sqlUnionId = Sqls.fetchString(Sqls.create("select unionid from `user` where id = @id").setParam("id", userId).toString());
|
||||
dao().execute(sqlUnionId);
|
||||
String unionid = sql.getString();
|
||||
cnd.and("u.unionid", "=",unionid);
|
||||
cnd.and("role.`code`", "=", "BranchUnionMemberAdmin");
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
sql.setCallback(Sqls.callback.strList());
|
||||
dao().execute(sql);
|
||||
return sql.getList(String.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NutMap getDictAllowChangeFields() {
|
||||
//获取可变更字段
|
||||
List<Sys_dict> dictList = sysDictService.getSubListByCode("ALLOW_CHANGE_FIELDS");
|
||||
Set<String> allowChangeFieldNames = dictList.stream().map(Sys_dict::getCode).collect(Collectors.toSet());
|
||||
allowChangeFieldNames.add("member");
|
||||
allowChangeFieldNames.add("welfareMember");
|
||||
Map<String, String> dictMap = dictList.stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName));
|
||||
dictMap.put("member", "会员状态");
|
||||
dictMap.put("welfareMember", "福利会员状态");
|
||||
return NutMap.NEW().addv("allowChangeFieldNames", allowChangeFieldNames).addv("dictMap", dictMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取变更记录详情
|
||||
*
|
||||
* @param recordId 变更记录id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<NutMap> getChangeInfos(String recordId) {
|
||||
UserHistory history = dao().fetch(UserHistory.class, Cnd.where("recordId", "=", recordId));
|
||||
if (Lang.isNotEmpty(history)) {
|
||||
return history.getChangeInfos();
|
||||
} else {
|
||||
MemberChangeRecord record = dao().fetch(MemberChangeRecord.class, recordId);
|
||||
return getChangeInfos(record);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NutMap> getChangeInfos(MemberChangeRecord record) {
|
||||
User info = dao().fetch(User.class, Cnd.where("id", "=", record.getUserId()));
|
||||
|
||||
NutMap map = getDictAllowChangeFields();
|
||||
Set<String> allowChangeFieldNames = map.getAs("allowChangeFieldNames", Set.class);
|
||||
Map<String, String> dictMap = map.getAs("dictMap", Map.class);
|
||||
|
||||
// 新数据
|
||||
NutMap newMap = Lang.obj2nutmap(record);
|
||||
// 原数据
|
||||
NutMap sourceMap = Lang.obj2nutmap(info);
|
||||
List<NutMap> changeList = new ArrayList<>();
|
||||
|
||||
for (String fieldName : allowChangeFieldNames) {
|
||||
extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
||||
}
|
||||
return changeList;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<String> compareChangeType(MemberChangeRecord record, User user) {
|
||||
List<String> changeTypes = new ArrayList<>();
|
||||
changeTypes.add(MemberChangeType.BASIC_CHANGE.getType());
|
||||
if (!ObjectUtil.equals(user.getUserState(), record.getUserState())) {
|
||||
List<MemberChangeType> list = Arrays.stream(MemberChangeType.values())
|
||||
.filter(v -> v.getChangeTypeName().equals(record.getUserState())).toList();
|
||||
if (Lang.isNotEmpty(list)) {
|
||||
changeTypes.add(list.get(0).getType());
|
||||
}
|
||||
}
|
||||
if (!ObjectUtil.equals(user.getMember() == 1, record.getMember())){
|
||||
if (record.getMember()) {
|
||||
changeTypes.add(MemberChangeType.RESTORE.getType());
|
||||
} else {
|
||||
changeTypes.add(MemberChangeType.WITHDRAWAL.getType());
|
||||
}
|
||||
}
|
||||
if (!ObjectUtil.equals(user.getUnitid(), record.getUnitId())) {
|
||||
changeTypes.add(MemberChangeType.UNIT_CHANGE.getType());
|
||||
}
|
||||
if (!ObjectUtil.equals(user.getUnionid(), record.getUnionId())) {
|
||||
changeTypes.add(MemberChangeType.UNION_CHANGE.getType());
|
||||
}
|
||||
return changeTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void compareChangeInfoAndUpdateMember(String recordId) {
|
||||
MemberChangeRecord record = dao().fetch(MemberChangeRecord.class, recordId);
|
||||
List<NutMap> changeList = getChangeInfos(record);
|
||||
|
||||
// 如果有工会关系人员,这个user用来存储数据
|
||||
User user = dao().fetch(User.class, Cnd.where("id", "=", record.getUserId()));
|
||||
// 获取会员信息,用于存储变更记录
|
||||
Sys_user info = dao().fetch(Sys_user.class, Cnd.where("id", "=", record.getUserId()));
|
||||
String userId = info.getId();
|
||||
UserHistory history = new UserHistory();
|
||||
if (Lang.isNotEmpty(changeList)) {
|
||||
BeanUtil.copyProperties(info, history);
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(history)) {
|
||||
history.setRecordId(recordId);
|
||||
history.setChangeTime(DateUtil.date());
|
||||
history.setChangeTypes(record.getChangeTypes());
|
||||
history.setChangeOrigin(record.getChangeOrigin());
|
||||
history.setChangeInfos(changeList);
|
||||
String changeInfos = changeList.stream().map(v -> {
|
||||
return "(变更字段:" + v.getString("fieldName") + ",变更前:" + HtmlUtil.cleanHtmlTag(v.getString("sourceValue")) + ",变更后:" + HtmlUtil.cleanHtmlTag(v.getString("newValue")) + ")";
|
||||
}).collect(Collectors.joining(";"));
|
||||
history.setChangeInfosStr(changeInfos);
|
||||
|
||||
// 加入会员
|
||||
if (record.getMember()) {
|
||||
int activityCount = dao().count(ActivityUserScope.class, Cnd.where("userId", "=", userId).and("groupId", "=", 1));
|
||||
int memberCount = dao().count(Sys_user_role.class, Cnd.where("userId", "=", userId).and("roleId", "=", Roles.MEMBER));
|
||||
if (activityCount <= 0) {
|
||||
// 取消或加入会员组别
|
||||
if (record.getIsJoinActivityMemberScope() != null && record.getIsJoinActivityMemberScope()) {
|
||||
ActivityUserScope scope = new ActivityUserScope();
|
||||
scope.setUserId(userId);
|
||||
scope.setGroupId(1);
|
||||
scope.setGroupName("工会会员");
|
||||
dao().insert(scope);
|
||||
}
|
||||
}
|
||||
if (memberCount <= 0) {
|
||||
Sys_user_role userRole = new Sys_user_role();
|
||||
userRole.setUserId(userId);
|
||||
userRole.setRoleId(Roles.MEMBER);
|
||||
dao().insert(userRole);
|
||||
}
|
||||
// 杭医特有,其他学校请删除
|
||||
record.setPreparedBy("会员");
|
||||
} else {
|
||||
if (record.getIsExitActivityMemberScope() != null && record.getIsExitActivityMemberScope()) {
|
||||
dao().clear(ActivityUserScope.class, Cnd.where("userId", "=", userId).and("groupId", "=", 1));
|
||||
}
|
||||
dao().clear(Sys_user_role.class, Cnd.where("userId", "=", userId).and("roleId", "=", Roles.MEMBER));
|
||||
// 杭医特有,其他学校请删除
|
||||
record.setPreparedBy("教职工");
|
||||
}
|
||||
|
||||
// 加入福利会员 是否加入福利项目
|
||||
if (record.getWelfareMember() && record.getIsJoinWelfareProject() != null && record.getIsJoinWelfareProject()) {
|
||||
WelfareList welfareList = new WelfareList();
|
||||
welfareList.setId(R.UU32());
|
||||
welfareList.setProjectId(record.getWelfareProjectId());
|
||||
welfareList.setUserId(userId);
|
||||
welfareList.setIsReceive(false);
|
||||
welfareList.setIsAutoSelect(false);
|
||||
welfareList.setUserState(record.getUserState());
|
||||
welfareList.setPersonType(record.getPersonType());
|
||||
welfareList.setWelfareUnitId(record.getUnitId());
|
||||
dao().insert(welfareList);
|
||||
}
|
||||
|
||||
// 到此,表明审核通过,需要存储历史数据,并修改用户数据
|
||||
BeanUtil.copyProperties(record, info);
|
||||
info.setId(userId);
|
||||
info.setIdcard(record.getIdCard());
|
||||
|
||||
// 如果有单位变更,则需要记录单位关系
|
||||
if (record.getChangeTypes().contains(MemberChangeType.UNIT_CHANGE.getType())) {
|
||||
info.setUnitid(record.getUnitId());
|
||||
}
|
||||
|
||||
// 如果工会发生变更了,就是工会关系变更,记录到特殊人员表中
|
||||
if (record.getChangeTypes().contains(MemberChangeType.UNION_CHANGE.getType())) {
|
||||
Sys_union union = dao().fetch(Sys_union.class, Cnd.where("id", "=", record.getUnionId()));
|
||||
SpecialStaff staff = new SpecialStaff();
|
||||
staff.setUserId(userId);
|
||||
staff.setPersonnelRelationUnitId(user.getUnitid());
|
||||
staff.setPersonnelRelationUnitName(user.getUnitname());
|
||||
staff.setUnionRelationUnionId(union.getId());
|
||||
staff.setUnionRelationUnionName(union.getUnionname());
|
||||
staff.setIsManyUnit(false);
|
||||
staff.setSpecialStaffType("HMC_RELATION");
|
||||
dao().insert(staff);
|
||||
}
|
||||
|
||||
dao().updateIgnoreNull(info);
|
||||
dao().insert(history);
|
||||
|
||||
sysUserService.clearCache();
|
||||
sysRoleService.clearCache();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取所有变更记录
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<NutMap> getAllChangeInfo(String userId) {
|
||||
List<NutMap> resultMapList = new ArrayList<>();
|
||||
|
||||
Sql sql = Sqls.fetchString(Sqls.create("select loginname from sys_user where id = @id").setParam("id", userId).toString());
|
||||
dao().execute(sql);
|
||||
String loginName = sql.getString();
|
||||
|
||||
MemberChangeRecord record = dao().fetch(MemberChangeRecord.class, Cnd.where("userId", "=", userId).desc("applyDateTime"));
|
||||
|
||||
List<UserHistory> historyList = dao().query(UserHistory.class, Cnd.where("loginname", "=", loginName)
|
||||
.and("changeInfos", "is not", null).desc("changeTime"));
|
||||
|
||||
List<String> recordList = historyList.stream().map(UserHistory::getRecordId).toList();
|
||||
|
||||
if (Lang.isNotEmpty(record) && !recordList.contains(record.getId())) {
|
||||
NutMap map = NutMap.NEW();
|
||||
List<NutMap> changeInfos = getChangeInfos(record.getId());
|
||||
map.put("changeInfos", changeInfos);
|
||||
map.put("timestamp", DateUtil.format(record.getApplyDateTime(), "yyyy-MM-dd HH:mm:ss"));
|
||||
map.put("changeOriginName", MemberChangeOrigin.valueOf(MemberChangeOrigin.class, record.getChangeOrigin()).changeOriginName);
|
||||
resultMapList.add(map);
|
||||
}
|
||||
for (UserHistory history : historyList) {
|
||||
NutMap map = NutMap.NEW();
|
||||
List<NutMap> changeInfos = history.getChangeInfos();
|
||||
map.put("changeInfos", changeInfos);
|
||||
map.put("timestamp", DateUtil.format(history.getChangeTime(), "yyyy-MM-dd HH:mm:ss"));
|
||||
map.put("changeOriginName", MemberChangeOrigin.valueOf(MemberChangeOrigin.class, history.getChangeOrigin()).changeOriginName);
|
||||
resultMapList.add(map);
|
||||
}
|
||||
return resultMapList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 比较两个对象,并记录变更的字段工具
|
||||
*
|
||||
* @param newMap 新数据
|
||||
* @param sourceMap 原数据
|
||||
* @param fieldsMap 变更字段
|
||||
* @param changeList 变更集合
|
||||
*/
|
||||
@Override
|
||||
public void extractChange(NutMap newMap, NutMap sourceMap, String fieldName, Map<String, String> fieldsMap, List<NutMap> changeList) {
|
||||
try {
|
||||
Object currentValue = this.booleanVerification(newMap.get(fieldName));
|
||||
Object previousValue = this.booleanVerification(sourceMap.get(fieldName));
|
||||
|
||||
if (!ObjectUtil.equals(currentValue, previousValue)) {
|
||||
String name = fieldsMap.getOrDefault(fieldName, fieldName);
|
||||
if ("unitId".equals(fieldName)) {
|
||||
List<Sys_unit> unitList = dao().query(Sys_unit.class,
|
||||
Cnd.where("id", "in", List.of(previousValue, currentValue)));
|
||||
Object finalPreviousValue = previousValue;
|
||||
previousValue = unitList.stream().filter(v -> v.getId().equals(String.valueOf(finalPreviousValue)))
|
||||
.findFirst().orElse(new Sys_unit()).getName();
|
||||
Object finalCurrentValue = currentValue;
|
||||
currentValue = unitList.stream().filter(v -> v.getId().equals(String.valueOf(finalCurrentValue)))
|
||||
.findFirst().orElse(new Sys_unit()).getName();
|
||||
}
|
||||
changeList.add(NutMap.NEW()
|
||||
.setv("field", fieldName)
|
||||
.setv("fieldName", name)
|
||||
.setv("sourceValue", previousValue)
|
||||
.setv("newValue", currentValue));
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("Error while extracting and comparing changes for field: {}", fieldName, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 处理布尔值和数值类型
|
||||
*
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
private String booleanVerification(Object value) {
|
||||
// 检查是否为null或空字符串
|
||||
if (ObjectUtil.isAllEmpty(value, "")) {
|
||||
return "无数据";
|
||||
}
|
||||
// 处理布尔值
|
||||
if (value instanceof Boolean) {
|
||||
return ((Boolean) value) ? "是" : "否";
|
||||
}
|
||||
// 处理数值类型
|
||||
if (value instanceof Number && List.of(0, 1).contains((Integer) value)) {
|
||||
return ((Number) value).intValue() != 0 ? "是" : "否";
|
||||
}
|
||||
// 其他对象,返回其字符串表示
|
||||
if (value instanceof Date) {
|
||||
return DateUtil.format((Date) value, "yyyy-MM-dd");
|
||||
}
|
||||
return value.toString();
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -1,11 +1,11 @@
|
||||
package io.v.nutz.zhgh.member.service.impl;
|
||||
package io.v.nutz.zhgh.staffmanage.member.service.impl;
|
||||
|
||||
import io.v.nutz.base.service.AsyncService;
|
||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||
import io.v.nutz.sys.services.SysRoleService;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.zhgh.member.model.MemberHistory;
|
||||
import io.v.nutz.zhgh.member.service.MemberHistoryService;
|
||||
import io.v.nutz.zhgh.staffmanage.member.model.MemberHistory;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberHistoryService;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.member.template;
|
||||
package io.v.nutz.zhgh.staffmanage.member.template;
|
||||
|
||||
import cn.afterturn.easypoi.excel.annotation.Excel;
|
||||
import lombok.Data;
|
||||
+1
-42
@@ -1,12 +1,8 @@
|
||||
package io.v.nutz.zhgh.member.utils;
|
||||
package io.v.nutz.zhgh.staffmanage.member.utils;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.zhgh.activity.models.ActivityUserCnd;
|
||||
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
||||
import io.v.nutz.zhgh.member.MemberMode;
|
||||
import io.v.nutz.zhgh.member.constant.MemberStatus;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
@@ -23,43 +19,6 @@ import org.nutz.lang.Strings;
|
||||
**/
|
||||
public class MemberUtils {
|
||||
|
||||
public static void memberCorrespondence(Integer type, Sys_user user) {
|
||||
int member = MemberMode.NONE.getCode();
|
||||
int memberStatus = 0;
|
||||
|
||||
if (type == UserChangeType.UNIT_CHANGE.getCode()) {
|
||||
member = MemberMode.NORMAL.getCode();
|
||||
memberStatus = MemberStatus.TURN_IN.getCode();
|
||||
}
|
||||
if (type == UserChangeType.NEW.getCode()) {
|
||||
member = MemberMode.NORMAL.getCode();
|
||||
memberStatus = MemberStatus.NORMAL.getCode();
|
||||
}
|
||||
if (type == UserChangeType.RESIGN.getCode()) {
|
||||
member = MemberMode.NONE.getCode();
|
||||
memberStatus = MemberStatus.TURN_OUT.getCode();
|
||||
}
|
||||
if (type == UserChangeType.RETIREMENT.getCode()) {
|
||||
member = MemberMode.NONE.getCode();
|
||||
memberStatus = MemberStatus.KEEP.getCode();
|
||||
}
|
||||
// if (type == UserChangeType.EXPELLED.getCode()) {
|
||||
// member = MemberMode.NONE.getCode();
|
||||
// memberStatus = MemberStatus.EXPELLED.getCode();
|
||||
// }
|
||||
if (type == UserChangeType.RESTORE.getCode()) {
|
||||
member = MemberMode.NORMAL.getCode();
|
||||
memberStatus = MemberStatus.RESTORE.getCode();
|
||||
}
|
||||
if (type == UserChangeType.WITHDRAWAL.getCode()) {
|
||||
member = MemberMode.NONE.getCode();
|
||||
memberStatus = MemberStatus.WITHDRAWAL.getCode();
|
||||
}
|
||||
|
||||
user.setMember(member).setMemberStatus(memberStatus);
|
||||
}
|
||||
|
||||
|
||||
public static Cnd getCnd(PageForm pageForm,
|
||||
String startDate,
|
||||
String endDate,
|
||||
+3
-4
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.single.controller;
|
||||
package io.v.nutz.zhgh.staffmanage.single.controller;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
||||
@@ -10,10 +10,10 @@ import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.result.Result;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.zhgh.single.service.SingleUserService;
|
||||
import io.v.nutz.zhgh.staffmanage.single.service.SingleUserService;
|
||||
import io.v.nutz.base.utils.ViTool;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.zhgh.thirtyteach.template.ThirtyTeachTemp;
|
||||
import io.v.nutz.zhgh.staffmanage.thirtyteach.template.ThirtyTeachTemp;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
@@ -30,7 +30,6 @@ import org.nutz.mvc.annotation.Param;
|
||||
import org.nutz.mvc.upload.TempFile;
|
||||
import org.nutz.mvc.upload.UploadAdaptor;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
package io.v.nutz.zhgh.single.controller;
|
||||
package io.v.nutz.zhgh.staffmanage.single.controller;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.zhgh.single.service.SingleUserService;
|
||||
import io.v.nutz.zhgh.staffmanage.single.service.SingleUserService;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.single.service;
|
||||
package io.v.nutz.zhgh.staffmanage.single.service;
|
||||
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.service.ViService;
|
||||
+2
-2
@@ -1,11 +1,11 @@
|
||||
package io.v.nutz.zhgh.single.service.impl;
|
||||
package io.v.nutz.zhgh.staffmanage.single.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.base.dao.CndPlus;
|
||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||
import io.v.nutz.zhgh.single.service.SingleUserService;
|
||||
import io.v.nutz.zhgh.staffmanage.single.service.SingleUserService;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
package io.v.nutz.zhgh.staffmanage.sourcechange.controller;
|
||||
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeConfig;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
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;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:SourceChangeConfigController
|
||||
* @Date 2025/2/13 15:45
|
||||
* @注释 会员更新配置
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/sourcechange/config")
|
||||
public class SourceChangeConfigController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
|
||||
@At("/")
|
||||
@Ok("beetl:/platform/sourcechange/config/index.html")
|
||||
@RequiresPermissions("sourcechange.config")
|
||||
public void index() {}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("sourcechange.config")
|
||||
public Object getSourceChangeConfig(){
|
||||
SourceChangeConfig config = dao.fetch(SourceChangeConfig.class, Cnd.NEW());
|
||||
List<SourceChangeConfig.MemberSift> memberSiftList = config.getMemberSiftList();
|
||||
for (SourceChangeConfig.MemberSift sift : memberSiftList) {
|
||||
Object siftValue = sift.getSiftValue();
|
||||
System.out.println(siftValue);
|
||||
List<String> list = (List<String>) siftValue;
|
||||
System.out.println(list);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("sourcechange.config")
|
||||
public Object doAddOrModify(@Param("data") SourceChangeConfig config){
|
||||
System.out.println(config);
|
||||
dao.insertOrUpdate(config);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("sourcechange.config")
|
||||
public Object getRemoteSearchUser(String query){
|
||||
Sql sql = Sqls.create("select id,loginname,username,unitname,unionname from `user` $condition");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("loginname", query);
|
||||
seg.orLike("username", query);
|
||||
cnd.and(seg);
|
||||
sql.setCondition(cnd);
|
||||
return sysUserService.listPageMap(1, 10, sql);
|
||||
}
|
||||
}
|
||||
+153
@@ -0,0 +1,153 @@
|
||||
package io.v.nutz.zhgh.staffmanage.sourcechange.controller;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.annontation.ViReturn;
|
||||
import io.v.nutz.base.utils.PageUtil;
|
||||
import io.v.nutz.sys.models.Sys_dict;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.sys.services.SysDictService;
|
||||
import io.v.nutz.web.commons.slog.annotation.SLog;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable;
|
||||
import io.v.nutz.zhgh.staffmanage.sourcechange.param.pageform.SourceChangePageForm;
|
||||
import io.v.nutz.zhgh.staffmanage.sourcechange.service.SourceChangeManageService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
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.dao.util.cri.Static;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:SourceChangeManageController
|
||||
* @Date 2025/2/17 16:08
|
||||
* @注释 人员异动查看
|
||||
*/
|
||||
@Slf4j
|
||||
@IocBean
|
||||
@Ok("json")
|
||||
@At("/platform/sourcechange/manage")
|
||||
public class SourceChangeManageController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private MemberCommonService commonService;
|
||||
@Inject
|
||||
private SourceChangeManageService sourceChangeManageService;
|
||||
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/sourcechange/manage/index.html")
|
||||
@RequiresPermissions("sourcechange.manage")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("sourcechange.manage")
|
||||
public Object pageData(SourceChangePageForm pageForm){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
scmt.id,
|
||||
scmt.loginname,
|
||||
scmt.username,
|
||||
u.sex,
|
||||
u.unitName,
|
||||
u.unionName,
|
||||
scmt.userState,
|
||||
scmt.personType,
|
||||
scmt.preparedBy,
|
||||
scmt.changeTime,
|
||||
scmt.changeTypes,
|
||||
scmt.changeOrigin,
|
||||
scmt.isOperate,
|
||||
u.id AS userId
|
||||
FROM
|
||||
source_change_middle_table scmt
|
||||
LEFT JOIN `user` u ON scmt.loginname = u.loginname
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if(StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("username",pageForm.getSearchKeyword());
|
||||
seg.orLike("loginname",pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||
} else {
|
||||
cnd.desc("changeTime");
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(pageForm.getChangeTypes())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
for (String type : pageForm.getChangeTypes()) {
|
||||
seg.or(new Static("JSON_CONTAINS(scmt.changeTypes, JSON_QUOTE('%s'), '$')".formatted(type)));
|
||||
}
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
cnd.andEX("unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("unitId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("sex", "=", pageForm.getSex());
|
||||
cnd.andEX("personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("preparedBy", "=", pageForm.getPreparedBy());
|
||||
cnd.andEX("userState", "=", pageForm.getUserState());
|
||||
cnd.andEX("isOperate", "=", pageForm.getIsOperate());
|
||||
if (StrUtil.isAllNotBlank(pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())) {
|
||||
cnd.and(new Static(String.format("Date(changeTime) >= '%s' and Date(changeTime) <= '%s'", pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())));
|
||||
} else {
|
||||
cnd.and("Date(changeTime)", "=", DateUtil.today());
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
return commonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取比变更信息和当前人员信息
|
||||
* @param sourceChangeId
|
||||
* @return
|
||||
*/
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("sourcechange.manage")
|
||||
public Object getSourceChangeAndCurrent(String sourceChangeId){
|
||||
SourceChangeMiddleTable middleTable = dao.fetch(SourceChangeMiddleTable.class, sourceChangeId);
|
||||
User user = dao.fetch(User.class, Cnd.where("loginname", "=", middleTable.getLoginname()));
|
||||
|
||||
NutMap map = NutMap.NEW();
|
||||
map.put("middleTable", middleTable);
|
||||
map.put("userData", user);
|
||||
return map;
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ViReturn
|
||||
@RequiresPermissions("sourcechange.manage")
|
||||
@SLog(tag = "人员变更管理", msg = "手动提交变更")
|
||||
public Object doSubmit(SourceChangeMiddleTable middleTable) {
|
||||
sourceChangeManageService.doSourceChange(middleTable);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package io.v.nutz.zhgh.staffmanage.sourcechange.model;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:SourceChangeConfig
|
||||
* @Date 2025/2/12 10:48
|
||||
* @注释 更新配置
|
||||
*/
|
||||
@Data
|
||||
@Table
|
||||
public class SourceChangeConfig {
|
||||
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
@Comment("人员更新模式(自动、手动)")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String sourceChangeType;
|
||||
|
||||
// ========================================= 会员相关 start
|
||||
@Column
|
||||
@Comment("会员区分")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<MemberSift> memberSiftList;
|
||||
|
||||
@Data
|
||||
public static class MemberSift implements Serializable {
|
||||
// 筛选名称
|
||||
private String siftName;
|
||||
// 筛选值
|
||||
private Object siftValue;
|
||||
}
|
||||
|
||||
@Column
|
||||
@Comment("新进职工是否加入会员组别")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isJoinMemberActivityScope;
|
||||
|
||||
@Column
|
||||
@Comment("非会员是否剔除会员组别")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isDeleteMemberActivityScope;
|
||||
// ========================================= 会员相关 end
|
||||
|
||||
|
||||
// ========================================= 福利会员相关 start
|
||||
@Column
|
||||
@Comment("福利会员区分")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<WelfareMemberSift> welfareMemberSiftList;
|
||||
|
||||
@Data
|
||||
public static class WelfareMemberSift implements Serializable {
|
||||
// 筛选名称
|
||||
private String siftName;
|
||||
// 筛选编码
|
||||
private String siftCode;
|
||||
// 筛选值
|
||||
private Object siftValue;
|
||||
}
|
||||
|
||||
@Column
|
||||
@Comment("新进职工是否加入正在进行中的福利项目")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isJoinWelfareProject;
|
||||
// ========================================= 福利会员相关 end
|
||||
}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
package io.v.nutz.zhgh.staffmanage.sourcechange.model;
|
||||
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:SourceChangeMiddleTable
|
||||
* @Date 2025/2/17 17:24
|
||||
* @注释
|
||||
*/
|
||||
@Data
|
||||
@Table
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableIndexes({
|
||||
@Index(name = "INDEX_HISTORY_USER_LOGIN_NAME", fields = {"loginname"}, unique = false),
|
||||
@Index(name = "INDEX_HISTORY_USER_UNIT", fields = {"unitid"}, unique = false),
|
||||
@Index(name = "INDEX_HISTORY_USER_UNION", fields = {"unionid"}, unique = false),
|
||||
})
|
||||
public class SourceChangeMiddleTable extends Sys_user {
|
||||
|
||||
@Name
|
||||
@Column
|
||||
@Comment("ID")
|
||||
@PrevInsert(uu32 = true)
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String id;
|
||||
|
||||
|
||||
@Column
|
||||
@Comment("是否加入会员组别")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isJoinActivityMemberScope;
|
||||
|
||||
@Column
|
||||
@Comment("是否退出会员组别")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isExitActivityMemberScope;
|
||||
|
||||
@Column
|
||||
@Comment("是否加入福利项目")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isJoinWelfareProject;
|
||||
|
||||
@Column
|
||||
@Comment("福利项目id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
private String welfareProjectId;
|
||||
|
||||
@Column
|
||||
@Comment("更新时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
private Date changeTime;
|
||||
|
||||
/**
|
||||
* @see io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType
|
||||
*/
|
||||
@Column
|
||||
@Comment("变更类型(多种)")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> changeTypes;
|
||||
|
||||
@Column
|
||||
@Comment("变更来源")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String changeOrigin;
|
||||
|
||||
@Column
|
||||
@Comment("详细变更记录,用于查询、列表展示")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<NutMap> changeInfos;
|
||||
|
||||
@Column
|
||||
@Comment("详细变更记录,文本类型,可用于导出")
|
||||
@ColDefine(type = ColType.TEXT)
|
||||
private String changeInfosStr;
|
||||
|
||||
@Column
|
||||
@Comment("是否操作")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isOperate;
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package io.v.nutz.zhgh.staffmanage.sourcechange.param.pageform;
|
||||
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:SourceChangePageForm
|
||||
* @Date 2025/2/17 17:20
|
||||
* @注释
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class SourceChangePageForm extends PageForm {
|
||||
|
||||
// 工会id
|
||||
private String unionId;
|
||||
|
||||
// 单位id
|
||||
private String unitId;
|
||||
|
||||
// 性别
|
||||
private String sex;
|
||||
|
||||
// 人员类型
|
||||
private String personType;
|
||||
|
||||
// 杭医是人员区分,其他为人员编制
|
||||
private String preparedBy;
|
||||
|
||||
// 在职状态
|
||||
private String userState;
|
||||
|
||||
//变更状态数组
|
||||
private List<String> changeTypes;
|
||||
|
||||
// 变更开始查询时间
|
||||
private String changeDateBefore;
|
||||
|
||||
// 变更结束查询时间
|
||||
private String changeDateEnd;
|
||||
|
||||
// 是否操作
|
||||
private Boolean isOperate;
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package io.v.nutz.zhgh.staffmanage.sourcechange.service;
|
||||
|
||||
import io.v.nutz.base.service.BaseService;
|
||||
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:SourceChangeManageService
|
||||
* @Date 2025/2/19 14:54
|
||||
* @注释 :人员变更管理
|
||||
*/
|
||||
public interface SourceChangeManageService extends BaseService<SourceChangeMiddleTable> {
|
||||
|
||||
/**
|
||||
* 人工变更,做变更
|
||||
* @param middleTable
|
||||
*/
|
||||
void doSourceChange(SourceChangeMiddleTable middleTable);
|
||||
}
|
||||
+195
@@ -0,0 +1,195 @@
|
||||
package io.v.nutz.zhgh.staffmanage.sourcechange.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HtmlUtil;
|
||||
import io.v.nutz.base.service.impl.BaseServiceImpl;
|
||||
import io.v.nutz.base.utils.Roles;
|
||||
import io.v.nutz.sys.models.Sys_union;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.models.Sys_user_role;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.sys.services.SysRoleService;
|
||||
import io.v.nutz.sys.services.SysUserService;
|
||||
import io.v.nutz.zhgh.activity.models.ActivityUserScope;
|
||||
import io.v.nutz.zhgh.data.model.UserHistory;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||
import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType;
|
||||
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable;
|
||||
import io.v.nutz.zhgh.staffmanage.sourcechange.service.SourceChangeManageService;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.model.SpecialStaff;
|
||||
import io.v.nutz.zhgh.welfare.model.WelfareList;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.random.R;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:SourceChangeManageServiceImpl
|
||||
* @Date 2025/2/19 14:55
|
||||
* @注释
|
||||
*/
|
||||
@IocBean(args = {"refer:dao"})
|
||||
public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeMiddleTable> implements SourceChangeManageService {
|
||||
public SourceChangeManageServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Inject
|
||||
private MemberCommonService commonService;
|
||||
@Inject
|
||||
private SysRoleService sysRoleService;
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
|
||||
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void doSourceChange(SourceChangeMiddleTable middleTable) {
|
||||
User user = dao().fetch(User.class, Cnd.where("loginname", "=", middleTable.getLoginname()));
|
||||
|
||||
//获取可变更字段
|
||||
NutMap map = commonService.getDictAllowChangeFields();
|
||||
Set<String> allowChangeFieldNames = map.getAs("allowChangeFieldNames", Set.class);
|
||||
Map<String, String> dictMap = map.getAs("dictMap", Map.class);
|
||||
|
||||
// 新数据
|
||||
NutMap newMap = Lang.obj2nutmap(middleTable);
|
||||
// 原数据
|
||||
NutMap sourceMap = Lang.obj2nutmap(user);
|
||||
List<NutMap> changeList = new ArrayList<>();
|
||||
|
||||
for (String fieldName : allowChangeFieldNames) {
|
||||
commonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
||||
}
|
||||
|
||||
List<String> changeTypes = new ArrayList<>();
|
||||
changeTypes.add(MemberChangeType.BASIC_CHANGE.getType());
|
||||
if (!ObjectUtil.equals(user.getUserState(), middleTable.getUserState())) {
|
||||
List<MemberChangeType> list = Arrays.stream(MemberChangeType.values())
|
||||
.filter(v -> v.getChangeTypeName().equals(middleTable.getUserState())).toList();
|
||||
if (Lang.isNotEmpty(list)) {
|
||||
changeTypes.add(list.get(0).getType());
|
||||
}
|
||||
}
|
||||
if (!ObjectUtil.equals(user.getMember(), middleTable.getMember())){
|
||||
if (middleTable.getMember() == 1) {
|
||||
changeTypes.add(MemberChangeType.RESTORE.getType());
|
||||
} else {
|
||||
changeTypes.add(MemberChangeType.WITHDRAWAL.getType());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Sys_user info = dao().fetch(Sys_user.class, Cnd.where("loginname", "=", middleTable.getLoginname()));
|
||||
String userId = info.getId();
|
||||
UserHistory history = new UserHistory();
|
||||
if (Lang.isNotEmpty(changeList)) {
|
||||
BeanUtil.copyProperties(info, history);
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(history)) {
|
||||
history.setChangeTime(DateUtil.date());
|
||||
history.setChangeOrigin(MemberChangeOrigin.HAND_MOVEMENT.name());
|
||||
history.setChangeInfos(changeList);
|
||||
String changeInfos = changeList.stream().map(v -> {
|
||||
return "(变更字段:" + v.getString("fieldName") + ",变更前:" + HtmlUtil.cleanHtmlTag(v.getString("sourceValue")) + ",变更后:" + HtmlUtil.cleanHtmlTag(v.getString("newValue")) + ")";
|
||||
}).collect(Collectors.joining(";"));
|
||||
history.setChangeInfosStr(changeInfos);
|
||||
|
||||
// 加入会员
|
||||
if (middleTable.getMember() == 1) {
|
||||
int activityCount = dao().count(ActivityUserScope.class, Cnd.where("userId", "=", userId).and("groupId", "=", 1));
|
||||
int memberCount = dao().count(Sys_user_role.class, Cnd.where("userId", "=", userId).and("roleId", "=", Roles.MEMBER));
|
||||
if (activityCount <= 0) {
|
||||
// 取消或加入会员组别
|
||||
if (middleTable.getIsJoinActivityMemberScope()) {
|
||||
ActivityUserScope scope = new ActivityUserScope();
|
||||
scope.setUserId(userId);
|
||||
scope.setGroupId(1);
|
||||
scope.setGroupName("工会会员");
|
||||
dao().insert(scope);
|
||||
}
|
||||
}
|
||||
if (memberCount <= 0) {
|
||||
Sys_user_role userRole = new Sys_user_role();
|
||||
userRole.setUserId(userId);
|
||||
userRole.setRoleId(Roles.MEMBER);
|
||||
dao().insert(userRole);
|
||||
}
|
||||
// 杭医特有,其他学校请删除
|
||||
middleTable.setPreparedBy("会员");
|
||||
} else {
|
||||
if (middleTable.getIsExitActivityMemberScope()) {
|
||||
dao().clear(ActivityUserScope.class, Cnd.where("userId", "=", userId).and("groupId", "=", 1));
|
||||
}
|
||||
dao().clear(Sys_user_role.class, Cnd.where("userId", "=", userId).and("roleId", "=", Roles.MEMBER));
|
||||
// 杭医特有,其他学校请删除
|
||||
middleTable.setPreparedBy("教职工");
|
||||
}
|
||||
|
||||
// 加入福利会员 是否加入福利项目
|
||||
if (middleTable.getWelfareMember() == 1 && middleTable.getIsJoinWelfareProject()) {
|
||||
WelfareList welfareList = new WelfareList();
|
||||
welfareList.setId(R.UU32());
|
||||
welfareList.setProjectId(middleTable.getWelfareProjectId());
|
||||
welfareList.setUserId(userId);
|
||||
welfareList.setIsReceive(false);
|
||||
welfareList.setIsAutoSelect(false);
|
||||
welfareList.setUserState(middleTable.getUserState());
|
||||
welfareList.setPersonType(middleTable.getPersonType());
|
||||
welfareList.setWelfareUnitId(middleTable.getUnitid());
|
||||
dao().insert(welfareList);
|
||||
}
|
||||
|
||||
// 到此,表明审核通过,需要存储历史数据,并修改用户数据
|
||||
BeanUtil.copyProperties(middleTable, info);
|
||||
info.setId(userId);
|
||||
info.setIdcard(middleTable.getIdcard());
|
||||
|
||||
// 如果有单位变更,则需要记录单位关系
|
||||
if (!ObjectUtil.equals(user.getUnitid(), middleTable.getUnitid())) {
|
||||
changeTypes.add(MemberChangeType.UNIT_CHANGE.getType());
|
||||
info.setUnitid(middleTable.getUnitid());
|
||||
}
|
||||
|
||||
// 如果工会发生变更了,就是工会关系变更,记录到特殊人员表中
|
||||
if (!ObjectUtil.equals(user.getUnionid(), middleTable.getUnionid())) {
|
||||
changeTypes.add(MemberChangeType.UNION_CHANGE.getType());
|
||||
Sys_union union = dao().fetch(Sys_union.class, Cnd.where("id", "=", middleTable.getUnionid()));
|
||||
SpecialStaff staff = new SpecialStaff();
|
||||
staff.setUserId(userId);
|
||||
staff.setPersonnelRelationUnitId(user.getUnitid());
|
||||
staff.setPersonnelRelationUnitName(user.getUnitname());
|
||||
staff.setUnionRelationUnionId(union.getId());
|
||||
staff.setUnionRelationUnionName(union.getUnionname());
|
||||
staff.setIsManyUnit(false);
|
||||
staff.setSpecialStaffType("HMC_RELATION");
|
||||
dao().insert(staff);
|
||||
}
|
||||
|
||||
dao().updateIgnoreNull(info);
|
||||
history.setChangeTypes(changeTypes);
|
||||
dao().insert(history);
|
||||
|
||||
dao().update(SourceChangeMiddleTable.class, Chain.make("isOperate", 2), Cnd.where("id", "=", middleTable.getId()));
|
||||
|
||||
sysUserService.clearCache();
|
||||
sysRoleService.clearCache();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.specialstaff.controller;
|
||||
package io.v.nutz.zhgh.staffmanage.specialstaff.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -6,10 +6,10 @@ import io.v.nutz.base.page.Pagination;
|
||||
import io.v.nutz.base.result.Result;
|
||||
import io.v.nutz.sys.models.Sys_user;
|
||||
import io.v.nutz.sys.models.User;
|
||||
import io.v.nutz.zhgh.specialstaff.model.SpecialStaff;
|
||||
import io.v.nutz.zhgh.specialstaff.param.SpecialStaffPageForm;
|
||||
import io.v.nutz.zhgh.specialstaff.service.SpecialStaffManageService;
|
||||
import io.v.nutz.zhgh.specialstaff.vo.SpecialStaffVo;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.model.SpecialStaff;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.param.SpecialStaffPageForm;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.service.SpecialStaffManageService;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.vo.SpecialStaffVo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.specialstaff.model;
|
||||
package io.v.nutz.zhgh.staffmanage.specialstaff.model;
|
||||
|
||||
import io.v.nutz.base.model.BaseModel;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.specialstaff.param;
|
||||
package io.v.nutz.zhgh.staffmanage.specialstaff.param;
|
||||
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import lombok.Data;
|
||||
+3
-3
@@ -1,9 +1,9 @@
|
||||
package io.v.nutz.zhgh.specialstaff.service;
|
||||
package io.v.nutz.zhgh.staffmanage.specialstaff.service;
|
||||
|
||||
import io.v.nutz.base.page.Pagination;
|
||||
import io.v.nutz.base.service.BaseService;
|
||||
import io.v.nutz.zhgh.specialstaff.model.SpecialStaff;
|
||||
import io.v.nutz.zhgh.specialstaff.param.SpecialStaffPageForm;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.model.SpecialStaff;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.param.SpecialStaffPageForm;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
/**
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
package io.v.nutz.zhgh.specialstaff.service.impl;
|
||||
package io.v.nutz.zhgh.staffmanage.specialstaff.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.v.nutz.base.page.Pagination;
|
||||
@@ -6,9 +6,9 @@ import io.v.nutz.base.service.impl.BaseServiceImpl;
|
||||
import io.v.nutz.base.utils.PageUtil;
|
||||
import io.v.nutz.base.utils.Vi;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.specialstaff.model.SpecialStaff;
|
||||
import io.v.nutz.zhgh.specialstaff.param.SpecialStaffPageForm;
|
||||
import io.v.nutz.zhgh.specialstaff.service.SpecialStaffManageService;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.model.SpecialStaff;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.param.SpecialStaffPageForm;
|
||||
import io.v.nutz.zhgh.staffmanage.specialstaff.service.SpecialStaffManageService;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user